- Breakthroughs & Rétro-ingénierie :
* Analyse des logs de démarrage OpenCore (opencore-2026-10-16-080610.txt) : mise en évidence du rejet 'OC: Prelinked injection QualcommWifi.kext - Invalid Parameter'.
* Audit du code source d'OpenCore (OcAppleKernelLib/PrelinkedContext.c) : la fonction PrelinkedInjectKext() exécute KextFindKmodAddress() qui requiert obligatoirement la présence de la structure et du symbole Mach-O '_kmod_info' (généré via KMOD_EXPLICIT_DECL). Son absence renvoie EFI_INVALID_PARAMETER et avorte l'injection.
* Alignement sur l'architecture de QualcommWireless.kext : inclusion des stubs kmod (_start, _stop, _kmod_info) et liaison statique avec libkmod.a.
* Correction dans OpenCore config.plist : neutralisation de MinKernel ('25.0.0' -> '') pour éviter les restrictions de versionnage kernel sur macOS Tahoe.
- Modifications apportées :
* QualcommWifi/QualcommWifi_info.c : implémentation de l'interface kmod avec KMOD_EXPLICIT_DECL(com.nawrhehe.QualcommWifi, '1.1.0', _start, _stop).
* build_wifi.sh : compilation de QualcommWifi_info.c, liaison avec libkmod.a du SDK macOS, ciblage explicite macos26.0, et signature ad-hoc avec codesign.
* EFI (/Volumes/EFI/EFI/OC/) : mise à jour de QualcommWifi.kext et alignement de MinKernel dans config.plist.
- Validation :
* Build réussi avec './build_wifi.sh'.
* Validation kmutil libraries à 100% contre BootKernelExtensions.kc.
* Présence de _kmod_info validée via 'nm -g'.
* Syntaxe config.plist validée avec plutil.
### Breakthroughs & Rétro-ingénierie (macOS Tahoe 26.7.1 / IO80211Family 1200.13.1)
1. WorkQueue Invariants (Slots 395 & 397):
- Analyse de `IO80211Controller::start(provider)` et `IONetworkController::start(provider)`.
- `createWorkLoop()` appelle directement le slot 395 `createWorkQueue()` (offset 0xc58), dont la classe de base renvoie `false`.
- `getWorkLoop()` appelle le slot 397 `getWorkQueue()` (offset 0xc68), dont la classe de base renvoie `nullptr`.
- Si non surchargés, `start()` échoue immédiatement avant l'allocation du timer.
- Broadcom (`AppleBCMWLANCore`) alloue `IO80211WorkQueue::workQueue()` (`__ZN16IO80211WorkQueue9workQueueEv`).
- Implémenté dans QualcommWifi avec `fWorkQueue` dérivé de `IOWorkLoop`.
2. Prévention du Kernel Panic dans `findAndAttachToFaultReporter` (Slot 432):
- `IO80211Controller::findAndAttachToFaultReporter` appelle le slot 432 `getFaultReporterFromDriver()` (offset 0xd80).
- Si `getFaultReporterFromDriver()` renvoie `nullptr` et que `ivars->_faultReporter` (offset 0x58) est nul, le kernel déclenche `panic("\"No ivars->_faultReporter\" @IO80211Controller.cpp:2877")`.
- Création de la classe `QualcommFaultReporter` (dérivée d'`OSObject`), instanciée et renvoyée par `getFaultReporterFromDriver()`, satisfaisant l'invariant sans panique.
### Modifications apportées
- `QualcommWireless/include/IOKit/80211/IO80211WorkQueue.h`:
- Déclaration de `IO80211WorkQueue` (dérivée d'`IOWorkLoop`) avec sa méthode statique `workQueue()`.
- `QualcommWireless/include/IOKit/80211/IO80211Controller.h`:
- Inclusion de `IO80211WorkQueue.h`.
- `QualcommWifi/QualcommWifi.hpp`:
- Déclaration de `QualcommFaultReporter : public OSObject`.
- Ajout des membres `fWorkQueue` et `fFaultReporter`.
- Déclaration des overrides `createWorkQueue()`, `getWorkQueue()` et `getFaultReporterFromDriver()`.
- `QualcommWifi/QualcommWifi.cpp`:
- Implémentation de `createWorkQueue()`, `getWorkQueue()` et `getFaultReporterFromDriver()`.
- Initialisation dans `init()` et libération dans `free()`.
- Sécurisation du prologue de `QualcommWifi::start()` avant `super::start(provider)`.
- `QualcommWifi/Info.plist`:
- Déclaration propre du kext Wi-Fi PCIe (`0x110717cb`), probe score 20000, et dépendances `IO80211Family`, `IONetworkingFamily`, `IOPCIFamily`.
- `build_wifi.sh`:
- Script automatisé de compilation, assemblage firmware radio WCN7850, linkage et validation `kmutil`.
### Validation
- Compilation réussie avec `clang++` (-target x86_64-apple-macos15.0).
- Validation `kmutil libraries` réussie à 100% avec code retour 0 contre `/System/Library/KernelCollections/BootKernelExtensions.kc`.
- Aucune régression sur le Bluetooth (`QualcommWireless.kext`), testé et validé via `xcodebuild`.
Modifications:
- AGENTS.md: Enforce systematic git commit with comprehensive technical messages (breakthroughs, reverse-engineering findings, per-file changes, and build/EFI validation) followed by immediate git push to origin/main after every modification set.