L'auteur développe floss, un noyau de système d'exploitation AArch64 destiné à QEMU et aux cartes Raspberry Pi. Les tests sur du matériel réel ont révélé des problèmes non détectés par l'émulation QEMU. Cet article détaille l'implémentation d'un verrouillage à rotation en utilisant les instructions de chargement exclusif (ldaxr) et de stockage exclusif (stxr) pour l'exclusion mutuelle entre les cœurs de CPU.
Le verrou utilise un mot de 32 bits où 0 signifie déverrouillé et 1 signifie verrouillé. L'instruction ldaxr inclut des sémantiques d'acquisition pour empêcher le réordonnancement de la mémoire, tandis que stlr (stockage-libération) lors du déverrouillage assure des sémantiques de libération. L'implémentation protège contre l'entrelacement de la sortie des cœurs, assurant qu'un seul noyau imprime à la fois.
Cependant, le matériel réel provoque parfois des exceptions lors des opérations de chargement exclusif que QEMU n'émule pas. L'auteur valide la correction par des tests, notant que le verrouillage à rotation de base manque d'équité et présente de mauvaises performances en raison de l'attente occupée, suggérant un travail futur sur wfe/sev pour une attente économe en énergie.
Source: Hacker News · Résumé par HeadlinesBriefing