- Breakthroughs & Rétro-ingénierie :
* Diagnostic de la coupure d'alimentation instantanée (~5 secondes au boot, réinitialisation matérielle comme si le câble d'alimentation était débranché) :
1. À T ~5s du boot de macOS Tahoe, launchd démarre /usr/libexec/airportd qui reçoit l'événement IOKit matching pour IO80211Controller.
2. airportd ouvre QualcommWifi et invoque immédiatement setPOWER(iface, 1) pour initialiser la radio.
3. Dans la révision précédente, setPOWER(1) déclenchait allocDmaContext(64Ko) et loadBhiFirmware().
4. Lors de loadBhiFirmware(), l'écriture de MHICTRL_RESET et le déclenchement de la sonnette BHI (BHI_IMGTXDB) avec le bit kIOPCICommandBusMaster actif ordonnaient au contrôleur PCIe Qualcomm WCN7850 de lancer des transferts DMA Bus-Master sur des adresses physiques hôtes non traduites.
5. Sur plateforme AMD Ryzen (x86_64 avec AMD-Vi / IOMMU actif), toute tentative DMA non enregistrée ou réinitialisation PCIe à chaud déclenche immédiatement une exception matérielle MCE / PCIe AER (Advanced Error Reporting) non corrigeable, forçant la carte mère à couper brutalement l'alimentation (hard power reset).
6. Par ailleurs, l'accès fenêtré socRead32(TCSR_SOC_HW_VERSION) dans start() accédait au bus AXI interne non cadencé (0x1B00000 via 0x310c), susceptible de causer un PCIe Completion Timeout.
7. Rétro-ingénierie de /usr/libexec/airportd : confirmation que le démon crée dynamiquement les IO80211VirtualInterface et requiert que APPLE80211_IOC_SCAN_RESULT renvoie explicitement un pointeur nul lorsqu'aucun résultat n'est en cache pour éviter toute corruption mémoire.
- Modifications apportées :
* QualcommWifi/QualcommWifi.cpp :
- start() : désactivation explicite du bit Bus-Master (kIOPCICommandBusMaster) dans le registre de commande PCI (seul kIOPCICommandMemorySpace est activé), verrouillant le matériel contre tout accès DMA sauvage tant que l'IOMMU n'est pas mappé.
- start() : suppression de l'accès fenêtré non sécurisé socRead32(TCSR_SOC_HW_VERSION), conservation exclusive des lectures directes BAR0 garanties (< 0x1000 : MHI STATUS/CTRL/BHIOFF/BHIEOFF et BHI serial/version).
- setPOWER() : neutralisation complète de l'appel synchrone à loadBhiFirmware() et des allocations DMA lors des requêtes d'alimentation airportd, gestion passive et stable de fLinkActive et APPLE80211_IOC_POWER.
- handleApple80211Request() : initialisation propre du pointeur de retour de scan (*(void **)req_data = nullptr) sur APPLE80211_IOC_SCAN_RESULT.
- Validation :
* Compilation 100% sans erreur ni avertissement via ./build_wifi.sh.
* Validation des bibliothèques et symboles réussie à 100% avec kmutil libraries contre BootKernelExtensions.kc.
* Alignement strict de la vtable confirmé à 464 slots (3728 octets) sans padslot error.
* Binaire déployé dans /Volumes/EFI/EFI/OC/Kexts/QualcommWifi.kext (SHA256 identique).
* Extension réactivée dans /Volumes/EFI/EFI/OC/config.plist (Kernel.Add[14].Enabled = True).
* Bluetooth (QualcommWireless.kext) préservé intact et 100% opérationnel.