Rétablir le redémarrage à chaud de SpringBoard #6

Merged
Mahtan merged 1 commits from agent/redemarrage-interface into ipod_touch_2g 2026-10-01 12:15:35 +02:00
Owner

Après un respring, SpringBoard restait bloqué dans IOServiceClose : la sortie TV émulée ne produisait que deux interruptions pour toute la vie de QEMU. Chaque soumission est désormais traitée, avec masque et acquittement indépendants. Le LCD sépare également ses registres d’état et de masque.

Le reset matériel réinitialise les états LCD, MIPI, TV et tactile, ainsi que l’IRQ SPI. Le périphérique MIPI est désormais réalisé par la machine, ce qui permet réellement d’appeler son reset. Les commandes ipod-emu respring -W et ipod-emu reset -W synchronisent la NAND, attendent les nouveaux marqueurs du journal et vérifient le déverrouillage.

Validation sur des sessions séparées iPhone OS 2.2.1 (5H11a) et 2.1.1 (5F138) : trois resprings et deux resets complets par firmware, PID QEMU/relais conservés, fichier témoin persistant, HTTP local et calculatrice au premier plan. Le tactile permet 7 × 8 = 56 après les relances sur les deux versions.

Tests reproductibles ajoutés : trois régressions d’affichage sous ASan/UBSan ; neuf tests tactile/SPI passent, dont un reset au milieu d’un transfert ; cinq tests du lanceur ; trois resets QMP/QTest des vrais périphériques d’affichage, CPU arrêté et NAND en lecture seule. test-display-session.py reproduit les cycles natifs avec un firmware local. Documentation et passation mises à jour.

La session utilisateur sur VNC 5900 conserve le binaire précédemment déployé. Le correctif est prêt à être installé après merge. Aucun changement Docker Compose ni firmware distribué.

Après un `respring`, SpringBoard restait bloqué dans `IOServiceClose` : la sortie TV émulée ne produisait que deux interruptions pour toute la vie de QEMU. Chaque soumission est désormais traitée, avec masque et acquittement indépendants. Le LCD sépare également ses registres d’état et de masque. Le reset matériel réinitialise les états LCD, MIPI, TV et tactile, ainsi que l’IRQ SPI. Le périphérique MIPI est désormais réalisé par la machine, ce qui permet réellement d’appeler son reset. Les commandes `ipod-emu respring -W` et `ipod-emu reset -W` synchronisent la NAND, attendent les nouveaux marqueurs du journal et vérifient le déverrouillage. Validation sur des sessions séparées iPhone OS 2.2.1 (5H11a) et 2.1.1 (5F138) : trois resprings et deux resets complets par firmware, PID QEMU/relais conservés, fichier témoin persistant, HTTP local et calculatrice au premier plan. Le tactile permet `7 × 8 = 56` après les relances sur les deux versions. Tests reproductibles ajoutés : trois régressions d’affichage sous ASan/UBSan ; neuf tests tactile/SPI passent, dont un reset au milieu d’un transfert ; cinq tests du lanceur ; trois resets QMP/QTest des vrais périphériques d’affichage, CPU arrêté et NAND en lecture seule. `test-display-session.py` reproduit les cycles natifs avec un firmware local. Documentation et passation mises à jour. La session utilisateur sur VNC 5900 conserve le binaire précédemment déployé. Le correctif est prêt à être installé après merge. Aucun changement Docker Compose ni firmware distribué.
Mahtan added 1 commit 2026-10-01 12:13:10 +02:00
Mahtan merged commit 6cdda3bc13 into ipod_touch_2g 2026-10-01 12:15:35 +02:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Mahtan/qemu-ios#6