8000 uefi: fall back to the Graviton UART when the SPCR points into memory by Martin-Lndbl · Pull Request #75 · miniosv/miniosv · GitHub
[go: up one dir, main page]

Skip to content

uefi: fall back to the Graviton UART when the SPCR points into memory - #75

Open
Martin-Lndbl wants to merge 1 commit into
masterfrom
bugfix/graviton3-spcr
Open

Martin-Lndbl wants to merge 1 commit into
masterfrom
bugfix/graviton3-spcr

Conversation

@Martin-Lndbl
Copy link
Copy Markdown
Collaborator

in favor of #64 (since my fork is going private)

Since 2026-10-14 the Graviton3 (c7g) firmware in eu-north-1 describes its console as a 16550 at 0x80000000 with byte access. That address is the end of the low RAM block in the UEFI memory map, not a device; the UART is still the 16550 at 0x90a0000 with dword registers it always was. The kernel took the table at its word and hung in the serial driver's first poll before it could print anything, so every c7g boot showed only "miniosv UEFI stub starting". Graviton4 (c8g) firmware is unaffected.

The stub now checks the SPCR address against the memory map when the ACPI OEM ID is AMAZON: an address inside, or exactly at the end of, a non-MMIO entry is memory, and the stub substitutes the known Graviton layout and says so. Other firmware is trusted as before. A diagnostic line prints the SPCR fields and the OEM ID, since this is the only trace a Graviton boot leaves when the console pick is wrong.

Verified on c7g.large: the kernel boots in 345 ms and the PMU benches run.

Claude-Session: https://claude.ai/code/session_016x6mtxvvKCfAojAVKt4ZYe

Since 2026-10-14 the Graviton3 (c7g) firmware in eu-north-1 describes its
console as a 16550 at 0x80000000 with byte access. That address is the end
of the low RAM block in the UEFI memory map, not a device; the UART is still
the 16550 at 0x90a0000 with dword registers it always was. The kernel took
the table at its word and hung in the serial driver's first poll before it
could print anything, so every c7g boot showed only "miniosv UEFI stub
starting". Graviton4 (c8g) firmware is unaffected.

The stub now checks the SPCR address against the memory map when the ACPI
OEM ID is AMAZON: an address inside, or exactly at the end of, a non-MMIO
entry is memory, and the stub substitutes the known Graviton layout and says
so. Other firmware is trusted as before. A diagnostic line prints the SPCR
fields and the OEM ID, since this is the only trace a Graviton boot leaves
when the console pick is wrong.

Verified on c7g.large: the kernel boots in 345 ms and the PMU benches run.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016x6mtxvvKCfAojAVKt4ZYe
@Martin-Lndbl Martin-Lndbl self-assigned this Nov 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

0