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