Files
QualcommWireless/QualcommWifi/Info.plist
T
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

60 lines
1.7 KiB
Plaintext

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>QualcommWifi</string>
<key>CFBundleIdentifier</key>
<string>com.nawrhehe.QualcommWifi</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>QualcommWifi</string>
<key>CFBundlePackageType</key>
<string>KEXT</string>
<key>CFBundleShortVersionString</key>
<string>1.1.0</string>
<key>CFBundleVersion</key>
<string>1.1.0</string>
<key>IOKitPersonalities</key>
<dict>
<key>QualcommWifi_PCIe</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.nawrhehe.QualcommWifi</string>
<key>IOClass</key>
<string>QualcommWifi</string>
<key>IOMatchCategory</key>
<string>IODefaultMatchCategory</string>
<key>IOPCIPrimaryMatch</key>
<string>0x110717cb</string>
<key>IOProbeScore</key>
<integer>20000</integer>
<key>IOProviderClass</key>
<string>IOPCIDevice</string>
</dict>
</dict>
<key>OSBundleLibraries</key>
<dict>
<key>com.apple.iokit.IO80211Family</key>
<string>1.5.0</string>
<key>com.apple.iokit.IONetworkingFamily</key>
<string>1.5.0</string>
<key>com.apple.iokit.IOPCIFamily</key>
<string>1.0.0</string>
<key>com.apple.kpi.bsd</key>
<string>16.7</string>
<key>com.apple.kpi.iokit</key>
<string>16.7</string>
<key>com.apple.kpi.libkern</key>
<string>16.7</string>
<key>com.apple.kpi.mach</key>
<string>16.7</string>
</dict>
<key>OSBundleRequired</key>
<string>Root</string>
</dict>
</plist>