8000 uefi: fall back to the Graviton UART when the SPCR points into memory by Martin-Lndbl · Pull Request #64 · 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 - #64

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

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

Conversation

@Martin-Lndbl
Copy link
Copy Markdown
Collaborator

Since a couple of days, c7g instances fail to show any console output. This is the fix claude came up with:

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.

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
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

344F
0