RE: Does earlyprintk=ttyS0 work for an AMD SNP guest on KVM?

From: Dexuan Cui
Date: Fri Feb 17 2023 - 21:54:51 EST


> From: Jeremi Piotrowski <jpiotrowski@xxxxxxxxxxxxxxxxxxx>
> Sent: Friday, February 17, 2023 4:51 AM
> To: Dexuan Cui <decui@xxxxxxxxxxxxx>
> > [...]
> > The comment before the first branch says:
> > On 4-level paging, p4d_offset(top_level_pgt, 0) is equal to 'top_level_pgt'.
> >
> > IIUC this means 'top_level_pgt' is equal to '_pgtable'? i.e. without
> > CONFIG_RANDOMIZE_BASE, pgt_data.pgt_buf_size should be 0.
> >
> > Not sure why it's not getting into the first branch for you.
>
> Sorry, I got two things confused here. The relevant part of the comment is this:
> "If we came here via startup_32(), cr3 will be _pgtable already".
>
> Booting a (non-SNP) guest via BIOS I end up in the first branch. Upstream SNP
> support requires OVMF (UEFI) so we'll always reach the kernel in 64-bit mode
> (startup_64?), and end up in the second branch.
>
> Jeremi

Here I'm running a C-bit mode SNP guest on Hyper-V via "direct-boot" (i.e.
I run Set-VMFirmware to tell Hyper-V to boot the kernel directly without
UEFI). Looks like arch/x86/boot/compressed/head_64.S: startup_32 runs
first and calls startup_64 later (?) This might explain why I'm getting into
the first branch, which I hope could be fixed by someone...