From a5f0bd8fcb5d70a2c6680574368406512da60322 Mon Sep 17 00:00:00 2001 From: lixianglai Date: Mon, 24 Apr 2023 20:52:22 +0800 Subject: [PATCH] LoongArch: kvm: fix bug of kvm's hugepage LoongArch inclusion category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I736F2 -------------------------------- The physical machine panics because KVM huge pages are not enabled, When the virtual machine boots using huge pages. Signed-off-by: lixianglai Change-Id: I36463d85e5ce77dbe8a604e6fe9151b582fec576 --- arch/loongarch/kvm/mmu.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/arch/loongarch/kvm/mmu.c b/arch/loongarch/kvm/mmu.c index ba9fa7895d25..4e4c1ddabb5d 100644 --- a/arch/loongarch/kvm/mmu.c +++ b/arch/loongarch/kvm/mmu.c @@ -13,6 +13,10 @@ #include #include "kvm_compat.h" +#if defined(CONFIG_HUGETLB_PAGE) || defined(CONFIG_TRANSPARENT_HUGEPAGE) +#define KVM_HUGE_TLB_SUPPORT +#endif + /* * KVM_MMU_CACHE_MIN_PAGES is the number of GPA page table translation levels * for which pages need to be cached. @@ -34,7 +38,7 @@ static int kvm_tlb_flush_gpa(struct kvm_vcpu *vcpu, unsigned long gpa) static inline int kvm_pmd_huge(pmd_t pmd) { -#ifdef CONFIG_LOONGARCH_HUGE_TLB_SUPPORT +#ifdef KVM_HUGE_TLB_SUPPORT return (pmd_val(pmd) & _PAGE_HUGE) != 0; #else return 0; @@ -43,7 +47,7 @@ static inline int kvm_pmd_huge(pmd_t pmd) static inline int kvm_pud_huge(pud_t pud) { -#ifdef CONFIG_LOONGARCH_HUGE_TLB_SUPPORT +#ifdef KVM_HUGE_TLB_SUPPORT return (pud_val(pud) & _PAGE_HUGE) != 0; #else return 0; @@ -52,7 +56,7 @@ static inline int kvm_pud_huge(pud_t pud) static inline pmd_t kvm_pmd_mkhuge(pmd_t pmd) { -#ifdef CONFIG_LOONGARCH_HUGE_TLB_SUPPORT +#ifdef KVM_HUGE_TLB_SUPPORT #ifdef CONFIG_TRANSPARENT_HUGEPAGE return pmd_mkhuge(pmd); #else @@ -68,7 +72,7 @@ static inline pmd_t kvm_pmd_mkhuge(pmd_t pmd) static inline pmd_t kvm_pmd_mkclean(pmd_t pmd) { -#ifdef CONFIG_LOONGARCH_HUGE_TLB_SUPPORT +#ifdef KVM_HUGE_TLB_SUPPORT #ifdef CONFIG_TRANSPARENT_HUGEPAGE return pmd_mkclean(pmd); #else @@ -84,7 +88,7 @@ static inline pmd_t kvm_pmd_mkclean(pmd_t pmd) static inline pmd_t kvm_pmd_mkold(pmd_t pmd) { -#ifdef CONFIG_LOONGARCH_HUGE_TLB_SUPPORT +#ifdef KVM_HUGE_TLB_SUPPORT #ifdef CONFIG_TRANSPARENT_HUGEPAGE return pmd_mkold(pmd); #else -- Gitee