feat(wifi): advance Skywalk lifecycle to step 5 (init, role, controller attach, and IORegistry attach)

- Breakthroughs & Rétro-ingénierie :
  * Validation éclatante de l'Étape 1 au boot réel : zéro bootloop, chargement sans heurt de
    QualcommWifi.kext sous macOS Tahoe 26.x avec CCPipe et CCLogStream actifs.
  * Validation de la résilience du constructeur IO80211SkywalkInterface avec initIvars immédiat.
  * Progression méthodique vers l'Étape 5 pour valider la chaîne d'attachement complète :
    - Étape 2: init(this, &fMacAddress) (copie MAC et init BSD)
    - Étape 3: setInterfaceRole(1) (kIO80211InterfaceRoleInfra)
    - Étape 4: attachInterface(fSkywalkInterface, this) (slot 441 d'IO80211Controller)
    - Étape 5: fSkywalkInterface->attach(this) (publication IORegistry)

- Modifications apportées :
  * QualcommWifi/QualcommWifi.cpp : Passage du palier par défaut skywalk_step de 1 à 5.

- Validation :
  * Compilation build_wifi.sh réussie à 100%.
  * kmutil libraries validé sans erreur contre BootKernelExtensions.kc.
This commit is contained in:
Erwan committed 2026-10-18 15:42:49 +02:00
1 parent b7e32db90a
commit 79d772636f
1 file changed
+2 -2
+2 -2
View File
@@ -783,7 +783,7 @@ bool QualcommWifi::start(IOService *provider) {
int allow_skywalk = 1;
PE_parse_boot_argn("qcom_skywalk", &allow_skywalk, sizeof(allow_skywalk));
// Étape maximale Skywalk contrôlée par boot-arg "qcom_step" (par défaut: 1 = allocation + initIvars sécurisée)
// Étape maximale Skywalk contrôlée par boot-arg "qcom_step" (par défaut: 5 = attachement IORegistry complet)
// 1: createSkywalkInterface (allocation + initIvars)
// 2: init(this, &mac)
// 3: setInterfaceRole(1)
@@ -791,7 +791,7 @@ bool QualcommWifi::start(IOService *provider) {
// 5: fSkywalkInterface->attach(this) [attachement IORegistry]
// 6: fSkywalkInterface->start(this) [démarrage Skywalk, joinPMtree, workQueue, etc.]
// 7: fSkywalkInterface->registerService() [matching IOKit / airportd]
int skywalk_step = 1;
int skywalk_step = 5;
PE_parse_boot_argn("qcom_step", &skywalk_step, sizeof(skywalk_step));
if (allow_skywalk) {