O autor tem desenvolvido o floss, um kernel de sistema operacional AArch64 destinado ao QEMU e às placas Raspberry Pi. Os testes em hardware real revelaram problemas não detectados pela emulação do QEMU. Este post detalha a implementação de um bloqueio de giro usando instruções de carga exclusiva (ldaxr) e armazenamento exclusivo (stxr) para exclusão mútua entre os núcleos da CPU.
O bloqueio usa uma palavra de 32 bits onde 0 significa desbloqueado e 1 significa bloqueado. A instrução ldaxr inclui semântica de aquisição para evitar o reordenamento de memória, enquanto stlr (armazenamento-liberação) no desbloqueio garante semântica de liberação. A implementação protege contra a intercalação de saída de núcleos, assegurando que apenas um núcleo imprima de cada vez.
No entanto, o hardware real ocasionalmente causa exceções durante as operações de carga exclusiva que o QEMU não emula. O autor valida a correção através de testes, observando que o bloqueio de giro básico carece de justiça e tem desempenho ruim devido à espera ocupada, sugerindo trabalho futuro em wfe/sev para espera eficiente em termos de energia.
Fonte: Hacker News · Resumido por HeadlinesBriefing