All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] KVM: PPC: E500: Support hugetlbfs
@ 2011-09-19 23:35 ` Alexander Graf
  0 siblings, 0 replies; 21+ messages in thread
From: Alexander Graf @ 2011-09-19 23:35 UTC (permalink / raw)
  To: kvm-ppc; +Cc: kvm

With hugetlbfs support emerging on e500, we should also support KVM
backing its guest memory by it.

This patch adds support for hugetlbfs into the e500 shadow mmu code.

Signed-off-by: Alexander Graf <agraf@suse.de>
---
 arch/powerpc/kvm/e500_tlb.c |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/arch/powerpc/kvm/e500_tlb.c b/arch/powerpc/kvm/e500_tlb.c
index ec17148..64f75eb 100644
--- a/arch/powerpc/kvm/e500_tlb.c
+++ b/arch/powerpc/kvm/e500_tlb.c
@@ -24,6 +24,7 @@
 #include <linux/sched.h>
 #include <linux/rwsem.h>
 #include <linux/vmalloc.h>
+#include <linux/hugetlb.h>
 #include <asm/kvm_ppc.h>
 #include <asm/kvm_e500.h>
 
@@ -673,13 +674,34 @@ static inline void kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500,
 				pfn &= ~(tsize_pages - 1);
 				break;
 			}
+		} else if (vma && hva >= vma->vm_start &&
+                           (vma->vm_flags & VM_HUGETLB)) {
+			unsigned long psize = vma_kernel_pagesize(vma);
+			int lz;
+
+			tsize = (gtlbe->mas1 & MAS1_TSIZE_MASK) >>
+				MAS1_TSIZE_SHIFT;
+
+			/*
+			 * e500 doesn't implement the lowest tsize bit,
+			 * or 1K pages.
+			 */
+			tsize = max(BOOK3E_PAGESZ_4K, tsize & ~1);
+
+			/* take the smallest page size that satisfies host and
+			   guest mapping */
+			asm (PPC_CNTLZL "%0,%1" : "=r" (lz) : "r" (psize));
+			tsize = min(21 - lz, tsize);
 		}
 
 		up_read(&current->mm->mmap_sem);
 	}
 
 	if (likely(!pfnmap)) {
+		unsigned long tsize_pages = 1 << (tsize - 2);
 		pfn = gfn_to_pfn_memslot(vcpu_e500->vcpu.kvm, slot, gfn);
+		pfn &= ~(tsize_pages - 1);
+		gvaddr &= ~((tsize_pages << PAGE_SHIFT) - 1);
 		if (is_error_pfn(pfn)) {
 			printk(KERN_ERR "Couldn't get real page for gfn %lx!\n",
 					(long)gfn);
-- 
1.6.0.2


^ permalink raw reply related	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2011-10-05 19:54 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-19 23:35 [PATCH] KVM: PPC: E500: Support hugetlbfs Alexander Graf
2011-09-19 23:35 ` Alexander Graf
2011-09-20 17:54 ` Scott Wood
2011-09-20 17:54   ` Scott Wood
2011-09-24  7:44   ` Alexander Graf
2011-09-24  7:44     ` Alexander Graf
2011-09-26 20:28     ` Scott Wood
2011-09-26 20:28       ` Scott Wood
2011-09-22  6:50 ` Liu Yu-B13201
2011-09-24  7:47   ` Alexander Graf
2011-09-24  7:47     ` Alexander Graf
2011-09-26 20:04     ` Scott Wood
2011-09-26 20:04       ` Scott Wood
2011-10-05 14:37 ` Alexander Graf
2011-10-05 14:37   ` Alexander Graf
2011-10-05 16:06   ` Scott Wood
2011-10-05 16:06     ` Scott Wood
2011-10-05 18:55     ` Alexander Graf
2011-10-05 18:55       ` Alexander Graf
2011-10-05 19:53       ` Scott Wood
2011-10-05 19:53         ` Scott Wood

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.