linux/arch
Paul Mackerras ae49dedaa9 KVM: PPC: Book3S HV: Handle non-present PTEs in page fault functions
Since cd758a9b57 "KVM: PPC: Book3S HV: Use __gfn_to_pfn_memslot in HPT
page fault handler", it's been possible in fairly rare circumstances to
load a non-present PTE in kvmppc_book3s_hv_page_fault() when running a
guest on a POWER8 host.

Because that case wasn't checked for, we could misinterpret the non-present
PTE as being a cache-inhibited PTE.  That could mismatch with the
corresponding hash PTE, which would cause the function to fail with -EFAULT
a little further down.  That would propagate up to the KVM_RUN ioctl()
generally causing the KVM userspace (usually qemu) to fall over.

This addresses the problem by catching that case and returning to the guest
instead.

For completeness, this fixes the radix page fault handler in the same
way.  For radix this didn't cause any obvious misbehaviour, because we
ended up putting the non-present PTE into the guest's partition-scoped
page tables, leading immediately to another hypervisor data/instruction
storage interrupt, which would go through the page fault path again
and fix things up.

Fixes: cd758a9b57 "KVM: PPC: Book3S HV: Use __gfn_to_pfn_memslot in HPT page fault handler"
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1820402
Reported-by: David Gibson <david@gibson.dropbear.id.au>
Tested-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2020-04-21 09:23:41 +10:00
..
alpha mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
arc mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
arm ARM: 2020-04-02 15:13:15 -07:00
arm64 ARM: 2020-04-02 15:13:15 -07:00
c6x asm-generic: make more kernel-space headers mandatory 2020-04-02 09:35:25 -07:00
csky asm-generic: make more kernel-space headers mandatory 2020-04-02 09:35:25 -07:00
h8300 asm-generic: make more kernel-space headers mandatory 2020-04-02 09:35:25 -07:00
hexagon mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
ia64 mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
m68k mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
microblaze mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
mips ARM: 2020-04-02 15:13:15 -07:00
nds32 mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
nios2 mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
openrisc mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
parisc mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
powerpc KVM: PPC: Book3S HV: Handle non-present PTEs in page fault functions 2020-04-21 09:23:41 +10:00
riscv mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
s390 KVM: s390: vsie: Fix possible race when shadowing region 3 tables 2020-04-07 13:12:38 +02:00
sh Merge branch 'akpm' (patches from Andrew) 2020-04-02 13:55:34 -07:00
sparc mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
um Merge branch 'akpm' (patches from Andrew) 2020-04-02 13:55:34 -07:00
unicore32 mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
x86 KVM: VMX: fix crash cleanup when KVM wasn't used 2020-04-07 08:35:36 -04:00
xtensa mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
.gitignore
Kconfig NOHZ full updates: 2020-03-30 18:29:05 -07:00