From: Marcelo Tosatti <mtosatti@xxxxxxxxxx> This should work for both hugetlbfs and transparent hugepages. Signed-off-by: Andrea Arcangeli <aarcange@xxxxxxxxxx> Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Acked-by: Rik van Riel <riel@xxxxxxxxxx> --- diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c @@ -470,6 +470,15 @@ static int host_mapping_level(struct kvm page_size = kvm_host_page_size(kvm, gfn); + /* check for transparent hugepages */ + if (page_size == PAGE_SIZE) { + struct page *page = gfn_to_page(kvm, gfn); + + if (!is_error_page(page) && PageTransCompound(page)) + page_size = KVM_HPAGE_SIZE(2); + kvm_release_page_clean(page); + } + for (i = PT_PAGE_TABLE_LEVEL; i < (PT_PAGE_TABLE_LEVEL + KVM_NR_PAGE_SIZES); ++i) { if (page_size >= KVM_HPAGE_SIZE(i)) -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>