Files
QualcommWireless/QualcommWifi
Erwan 815c7ecaca fix(wifi): resolve crash causes via IO80211Controller reverse-engineering
### Breakthroughs & Rétro-ingénierie
- Analyse du désassemblage de IO80211Controller::start dans BootKernelExtensions.kc :
  1. IO80211Controller::start() invoque directement le slot 399 (getWorkQueue) et le passe immédiatement à IO80211PostOffice::allocWithParams et IO80211TimerSource::allocWithParams.
  2. Si getWorkQueue renvoie NULL, le noyau déréférence un pointeur nul ou saute vers une branche d'échec critique.
  3. L'invocation préalable de createWorkQueue() avant super::start(provider) garantit que IO80211WorkQueue est immédiatement disponible et valide.
- Suppression du piège d'écriture NVRAM (SetVariable en early boot) :
  Sur chipset AMD AM4/AM5, l'appel à AppleEFINVRAM::setProperty lors de l'initialisation de kext déclenche un appel RT->SetVariable en SMM. Sans mapping d'adresses virtuelles 1:1 pour le contrôleur SPI sous firmware AMD AGESA, cela provoque un Machine Check instantané réinitialisant la carte mère sans panic log.
- Sécurisation de l'alimentation PCIe :
  Suppression de enablePCIPowerManagement(kPCIPMCSPowerStateD0) susceptible d'entrer en conflit avec ACPI D-states sur les ports racines PCIe AMD.
- Normalisation OSBundleRequired :
  Passage de 'Network-Root' à 'Root' dans Info.plist (identique à QualcommWireless.kext).

### Modifications apportées
- QualcommWifi/QualcommWifi.cpp :
  - Suppression des écritures NVRAM dans logNvramStage, conservation de IOLog console directe.
  - Inscription de createWorkQueue() avant l'appel à super::start(provider) dans start().
  - Retrait du changement manuel d'état D0 via enablePCIPowerManagement.
- QualcommWifi/Info.plist :
  - Remplacement de OSBundleRequired par Root.

### Validation
- Compilation réussie avec clang 17 et SDK macOS Tahoe 26.x.
- Validation 100% kmutil libraries contre BootKernelExtensions.kc.
2026-10-16 19:20:13 +02:00
..