Re: [PATCH 1/12] KVM: X86: Fix when shadow_root_level=5 && guest root_level<4

From: Lai Jiangshan
Date: Fri Dec 10 2021 - 04:34:44 EST




On 2021/12/9 09:16, Sean Christopherson wrote:
On Wed, Nov 24, 2021, Lai Jiangshan wrote:
From: Lai Jiangshan <laijs@xxxxxxxxxxxxxxxxx>

If the is an L1 with nNPT in 32bit, the shadow walk starts with
pae_root.

Fixes: a717a780fc4e ("KVM: x86/mmu: Support shadowing NPT when 5-level paging is enabled in host)

Have you actually run with 5-level nNPT? I don't have access to hardware, at least
not that I know of :-)

The code is just obvious incorrect for shadow_root_level=5 && guest root_level<4.


I'm staring at kvm_mmu_sync_roots() and don't see how it can possibly work for
5-level nNPT with a 4-level NPT guest.


It doesn't use pml5_root for 5-level nNPT with a 4-level NPT guest, so
kvm_mmu_sync_roots() can work in a silence way with an "unexpected" root shadow
page. It has problems for 5-level nNPT with a 4-level NPT guest.

See:
https://lore.kernel.org/lkml/20211210092508.7185-1-jiangshanlai@xxxxxxxxx/

especially patch4.

Your this reply motivated me to complete the changelog of a patchset and send
it, thanks!

Although the patchset is immature, it would be better than losing it.