Linux KVM/arm64 development list
 help / color / mirror / Atom feed
From: Punit Agrawal <punit.agrawal@arm.com>
To: kvmarm@lists.cs.columbia.edu
Cc: Punit Agrawal <punit.agrawal@arm.com>,
	marc.zyngier@arm.com, will.deacon@arm.com,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	Christoffer Dall <christoffer.dall@arm.com>,
	Suzuki Poulose <suzuki.poulose@arm.com>,
	stable@vger.kernel.org
Subject: [PATCH v7 1/9] KVM: arm/arm64: Ensure only THP is candidate for adjustment
Date: Mon, 24 Sep 2018 18:45:44 +0100	[thread overview]
Message-ID: <20180924174552.8387-2-punit.agrawal@arm.com> (raw)
In-Reply-To: <20180924174552.8387-1-punit.agrawal@arm.com>

PageTransCompoundMap() returns true for hugetlbfs and THP
hugepages. This behaviour incorrectly leads to stage 2 faults for
unsupported hugepage sizes (e.g., 64K hugepage with 4K pages) to be
treated as THP faults.

Tighten the check to filter out hugetlbfs pages. This also leads to
consistently mapping all unsupported hugepage sizes as PTE level
entries at stage 2.

Signed-off-by: Punit Agrawal <punit.agrawal@arm.com>
Cc: Christoffer Dall <christoffer.dall@arm.com>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Cc: Suzuki Poulose <suzuki.poulose@arm.com>
Cc: stable@vger.kernel.org # v4.13+
---
 virt/kvm/arm/mmu.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/virt/kvm/arm/mmu.c b/virt/kvm/arm/mmu.c
index 7e477b3cae5b..c23a1b323aad 100644
--- a/virt/kvm/arm/mmu.c
+++ b/virt/kvm/arm/mmu.c
@@ -1231,8 +1231,14 @@ static bool transparent_hugepage_adjust(kvm_pfn_t *pfnp, phys_addr_t *ipap)
 {
 	kvm_pfn_t pfn = *pfnp;
 	gfn_t gfn = *ipap >> PAGE_SHIFT;
+	struct page *page = pfn_to_page(pfn);
 
-	if (PageTransCompoundMap(pfn_to_page(pfn))) {
+	/*
+	 * PageTransCompoungMap() returns true for THP and
+	 * hugetlbfs. Make sure the adjustment is done only for THP
+	 * pages.
+	 */
+	if (!PageHuge(page) && PageTransCompoundMap(page)) {
 		unsigned long mask;
 		/*
 		 * The address we faulted on is backed by a transparent huge
-- 
2.18.0

  reply	other threads:[~2018-09-24 17:45 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-24 17:45 [PATCH v7 0/9] KVM: Support PUD hugepages at stage 2 Punit Agrawal
2018-09-24 17:45 ` Punit Agrawal [this message]
2018-09-24 20:54   ` [PATCH v7 1/9] KVM: arm/arm64: Ensure only THP is candidate for adjustment Suzuki K Poulose
2018-09-24 17:45 ` [PATCH v7 2/9] KVM: arm/arm64: Share common code in user_mem_abort() Punit Agrawal
2018-09-24 17:45 ` [PATCH v7 3/9] KVM: arm/arm64: Re-factor setting the Stage 2 entry to exec on fault Punit Agrawal
2018-09-24 17:45 ` [PATCH v7 4/9] KVM: arm/arm64: Introduce helpers to manipulate page table entries Punit Agrawal
2018-09-24 17:45 ` [PATCH v7 5/9] KVM: arm64: Support dirty page tracking for PUD hugepages Punit Agrawal
2018-09-24 17:45 ` [PATCH v7 6/9] KVM: arm64: Support PUD hugepage in stage2_is_exec() Punit Agrawal
2018-09-24 17:45 ` [PATCH v7 7/9] KVM: arm64: Support handling access faults for PUD hugepages Punit Agrawal
2018-09-24 17:45 ` [PATCH v7 8/9] KVM: arm64: Update age handlers to support " Punit Agrawal
2018-09-24 17:45 ` [PATCH v7 9/9] KVM: arm64: Add support for creating PUD hugepages at stage 2 Punit Agrawal
2018-09-24 21:21   ` Suzuki K Poulose
2018-09-25  9:21     ` Punit Agrawal
2018-09-25 14:37   ` [PATCH v7.1 " Punit Agrawal
2018-10-01 14:00     ` Punit Agrawal

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=20180924174552.8387-2-punit.agrawal@arm.com \
    --to=punit.agrawal@arm.com \
    --cc=christoffer.dall@arm.com \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=stable@vger.kernel.org \
    --cc=suzuki.poulose@arm.com \
    --cc=will.deacon@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