linux_dsm_epyc7002/arch/arm64/kvm
Alexandru Elisei 7b75cd5128 KVM: arm64: Update page shift if stage 2 block mapping not supported
Commit 196f878a7a (" KVM: arm/arm64: Signal SIGBUS when stage2 discovers
hwpoison memory") modifies user_mem_abort() to send a SIGBUS signal when
the fault IPA maps to a hwpoisoned page. Commit 1559b7583f ("KVM:
arm/arm64: Re-check VMA on detecting a poisoned page") changed
kvm_send_hwpoison_signal() to use the page shift instead of the VMA because
at that point the code had already released the mmap lock, which means
userspace could have modified the VMA.

If userspace uses hugetlbfs for the VM memory, user_mem_abort() tries to
map the guest fault IPA using block mappings in stage 2. That is not always
possible, if, for example, userspace uses dirty page logging for the VM.
Update the page shift appropriately in those cases when we downgrade the
stage 2 entry from a block mapping to a page.

Fixes: 1559b7583f ("KVM: arm/arm64: Re-check VMA on detecting a poisoned page")
Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Reviewed-by: Gavin Shan <gshan@redhat.com>
Link: https://lore.kernel.org/r/20200901133357.52640-2-alexandru.elisei@arm.com
2020-09-04 10:53:48 +01:00
..
hyp KVM/arm64 updates for Linux 5.9: 2020-08-09 12:58:23 -04:00
vgic KVM/arm64 updates for Linux 5.9: 2020-08-09 12:58:23 -04:00
aarch32.c KVM: arm64: Synchronize sysreg state on injecting an AArch32 exception 2020-06-10 16:04:08 +01:00
arch_timer.c KVM: arm64: timers: Move timer registers to the sys_regs file 2020-07-07 09:28:38 +01:00
arm.c arm64/x86: KVM: Introduce steal-time cap 2020-08-21 14:05:19 +01:00
debug.c KVM: arm64: Write arch.mdcr_el2 changes since last vcpu_load on VHE 2020-01-22 18:38:04 +00:00
fpsimd.c KVM: arm64: Make struct kvm_regs userspace-only 2020-07-07 09:28:38 +01:00
guest.c KVM: arm64: Move SPSR_EL1 to the system register array 2020-07-07 09:28:38 +01:00
handle_exit.c KVM/arm64 updates for Linux 5.9: 2020-08-09 12:58:23 -04:00
hyp.S arm64: kvm: Annotate assembly using modern annoations 2020-03-09 17:35:29 +00:00
hypercalls.c KVM: arm64: Move virt/kvm/arm to arch/arm64 2020-05-16 15:03:59 +01:00
inject_fault.c KVM: arm64: Move ELR_EL1 to the system register array 2020-07-07 09:28:38 +01:00
irq.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
Kconfig KVM: arm64: Substitute RANDOMIZE_BASE for HARDEN_EL2_VECTORS 2020-07-28 10:41:11 +01:00
Makefile Merge branch 'kvm-arm64/target-table-no-more' into kvmarm-master/next-WIP 2020-07-28 16:10:32 +01:00
mmio.c KVM/arm64 updates for Linux 5.9: 2020-08-09 12:58:23 -04:00
mmu.c KVM: arm64: Update page shift if stage 2 block mapping not supported 2020-09-04 10:53:48 +01:00
perf.c KVM: arm64: Move virt/kvm/arm to arch/arm64 2020-05-16 15:03:59 +01:00
pmu-emul.c KVM: arm64: Move virt/kvm/arm to arch/arm64 2020-05-16 15:03:59 +01:00
pmu.c KVM: arm64: PMU: Fix per-CPU access in preemptible context 2020-07-06 11:47:02 +01:00
psci.c KVM: Fix spelling in code comments 2020-05-16 15:05:01 +01:00
pvtime.c arm64/x86: KVM: Introduce steal-time cap 2020-08-21 14:05:19 +01:00
regmap.c KVM: arm64: Move SPSR_EL1 to the system register array 2020-07-07 09:28:38 +01:00
reset.c KVM/arm64 updates for Linux 5.9: 2020-08-09 12:58:23 -04:00
sys_regs.c KVM/arm64 updates for Linux 5.9: 2020-08-09 12:58:23 -04:00
sys_regs.h KVM: arm64: Remove the target table 2020-07-05 18:20:45 +01:00
trace_arm.h KVM: arm64: Fix address truncation in traces 2020-09-04 10:53:48 +01:00
trace_handle_exit.h KVM: arm64: Fix address truncation in traces 2020-09-04 10:53:48 +01:00
trace.h KVM: arm64: Move virt/kvm/arm to arch/arm64 2020-05-16 15:03:59 +01:00
va_layout.c KVM: arm64: Make nVHE ASLR conditional on RANDOMIZE_BASE 2020-07-28 10:41:11 +01:00
vgic-sys-reg-v3.c KVM: arm64: Move virt/kvm/arm to arch/arm64 2020-05-16 15:03:59 +01:00