ANDROID: KVM: arm64: Don't force pte mappings in [n]VHE guest stage-2
Commit d096d354 ("ANDROID: KVM: arm64: Have different callbacks for PTE manipulation") accidentally forces the use of pte-level mappings for the guest stage-2 page-table when not using pKVM. This confuses user_mem_abort() when the guest takes a permission fault trying to execute from a huge page. Since the fault is reported at the pte-level, we end up handling it as a translation fault by calling kvm_pgtable_stage2_map() which dutifully returns -EAGAIN when it finds the RW PTE. Consequently, the guest appears to hang randomly during boot. Fix the issue by inverting stage2_force_pte_cb() so that the host is in complete control of the mapping granularity of the guest when pKVM is not being used. Cc: Fuad Tabba <tabba@google.com> Cc: Mostafa Saleh <smostafa@google.com> Fixes: d096d354 ("ANDROID: KVM: arm64: Have different callbacks for PTE manipulation") Signed-off-by:Will Deacon <willdeacon@google.com> Bug: 222044487 Change-Id: Ideab281ae6d1d5c0fd29fba03ad8ed1cae521a1e
Loading
Please sign in to comment