linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Andrew Jones <drjones@redhat.com>, Gavin Shan <gshan@redhat.com>,
	kvm@vger.kernel.org, kernel-team@android.com,
	Steven Price <steven.price@arm.com>,
	Eric Auger <eric.auger@redhat.com>,
	Alexandru Elisei <alexandru.elisei@arm.com>,
	kvmarm@lists.cs.columbia.edu,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH 9/9] KVM: arm64: Update page shift if stage 2 block mapping not supported
Date: Fri,  4 Sep 2020 11:45:30 +0100	[thread overview]
Message-ID: <20200904104530.1082676-10-maz@kernel.org> (raw)
In-Reply-To: <20200904104530.1082676-1-maz@kernel.org>

From: Alexandru Elisei <alexandru.elisei@arm.com>

Commit 196f878a7ac2e (" 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 1559b7583ff6 ("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: 1559b7583ff6 ("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
---
 arch/arm64/kvm/mmu.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c
index 16b8660ddbcc..f58d657a898d 100644
--- a/arch/arm64/kvm/mmu.c
+++ b/arch/arm64/kvm/mmu.c
@@ -1871,6 +1871,7 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
 	    !fault_supports_stage2_huge_mapping(memslot, hva, vma_pagesize)) {
 		force_pte = true;
 		vma_pagesize = PAGE_SIZE;
+		vma_shift = PAGE_SHIFT;
 	}
 
 	/*
-- 
2.27.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2020-09-04 10:50 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-04 10:45 [GIT PULL] KVM/arm64 fixes for 5.9 Marc Zyngier
2020-09-04 10:45 ` [PATCH 1/9] KVM: arm64: pvtime: steal-time is only supported when configured Marc Zyngier
2020-09-04 10:45 ` [PATCH 2/9] KVM: arm64: pvtime: Fix potential loss of stolen time Marc Zyngier
2020-09-04 10:45 ` [PATCH 3/9] KVM: arm64: Drop type input from kvm_put_guest Marc Zyngier
2020-09-04 10:45 ` [PATCH 4/9] KVM: arm64: pvtime: Fix stolen time accounting across migration Marc Zyngier
2020-09-04 10:45 ` [PATCH 5/9] KVM: Documentation: Minor fixups Marc Zyngier
2020-09-04 10:45 ` [PATCH 6/9] arm64/x86: KVM: Introduce steal-time cap Marc Zyngier
2020-09-04 10:45 ` [PATCH 7/9] KVM: arm64: Do not try to map PUDs when they are folded into PMD Marc Zyngier
2020-09-09  3:23   ` Punit Agrawal
2020-09-04 10:45 ` [PATCH 8/9] KVM: arm64: Fix address truncation in traces Marc Zyngier
2020-09-04 10:45 ` Marc Zyngier [this message]
2020-09-09 15:20 ` [GIT PULL] KVM/arm64 fixes for 5.9 Paolo Bonzini
2020-09-09 17:15   ` Marc Zyngier
2020-09-09 17:20     ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200904104530.1082676-10-maz@kernel.org \
    --to=maz@kernel.org \
    --cc=alexandru.elisei@arm.com \
    --cc=drjones@redhat.com \
    --cc=eric.auger@redhat.com \
    --cc=gshan@redhat.com \
    --cc=kernel-team@android.com \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=pbonzini@redhat.com \
    --cc=steven.price@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).