> All errors (new ones prefixed by >>): > > arch/x86/kvm/mmu/mmu.c:7570:28: error: use of undeclared identifier 'KVM_TDP_MMU' > 7570 | bool is_tdp = mmu_type == KVM_TDP_MMU; > | ^ > >> arch/x86/kvm/mmu/mmu.c:7594:25: error: no member named 'tdp_mmu_pages_lock' in 'struct kvm_arch' > 7594 | spin_lock(&kvm->arch.tdp_mmu_pages_lock); > | ~~~~~~~~~ ^ > arch/x86/kvm/mmu/mmu.c:7597:28: error: no member named 'tdp_mmu_pages_lock' in 'struct kvm_arch' > 7597 | spin_unlock(&kvm->arch.tdp_mmu_pages_lock); > | ~~~~~~~~~ ^ > arch/x86/kvm/mmu/mmu.c:7617:27: error: no member named 'tdp_mmu_pages_lock' in 'struct kvm_arch' > 7617 | spin_unlock(&kvm->arch.tdp_mmu_pages_lock); > | ~~~~~~~~~ ^ > 4 errors generated. Fixup for this below. I also realized that the variable name `is_tdp` is bad/misleading, so I've changed it to `is_tdp_mmu` as part of this fixup too. Sean/Paolo, let me know if I should just go ahead and post the fixed series, given the size of this fixup. I don't really like having to #ifdef all the places where we take tdp_mmu_pages_lock, but I couldn't find a way to avoid that. Even doing #ifndef CONFIG_X86_64 #define is_tdp_mmu false #endif didn't work. :( Anyway, here's the fixup: diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index 10ba328b664d7..7df1b4ead705b 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -7564,10 +7564,10 @@ static bool kvm_mmu_sp_dirty_logging_enabled(struct kvm *kvm, } static void kvm_recover_nx_huge_pages(struct kvm *kvm, - enum kvm_mmu_type mmu_type) + const enum kvm_mmu_type mmu_type) { unsigned long to_zap = nx_huge_pages_to_zap(kvm, mmu_type); - bool is_tdp = mmu_type == KVM_TDP_MMU; + bool is_tdp_mmu = mmu_type == KVM_TDP_MMU; struct list_head *nx_huge_pages; struct kvm_mmu_page *sp; LIST_HEAD(invalid_list); @@ -7577,7 +7577,7 @@ static void kvm_recover_nx_huge_pages(struct kvm *kvm, nx_huge_pages = &kvm->arch.possible_nx_huge_pages[mmu_type].pages; rcu_idx = srcu_read_lock(&kvm->srcu); - if (is_tdp) + if (is_tdp_mmu) read_lock(&kvm->mmu_lock); else write_lock(&kvm->mmu_lock); @@ -7590,11 +7590,15 @@ static void kvm_recover_nx_huge_pages(struct kvm *kvm, rcu_read_lock(); for ( ; to_zap; --to_zap) { - if (is_tdp) +#ifdef CONFIG_X86_64 + if (is_tdp_mmu) spin_lock(&kvm->arch.tdp_mmu_pages_lock); +#endif if (list_empty(nx_huge_pages)) { - if (is_tdp) +#ifdef CONFIG_X86_64 + if (is_tdp_mmu) spin_unlock(&kvm->arch.tdp_mmu_pages_lock); +#endif break; } @@ -7613,8 +7617,10 @@ static void kvm_recover_nx_huge_pages(struct kvm *kvm, unaccount_nx_huge_page(kvm, sp); - if (is_tdp) +#ifdef CONFIG_X86_64 + if (is_tdp_mmu) spin_unlock(&kvm->arch.tdp_mmu_pages_lock); +#endif /* * Do not attempt to recover any NX Huge Pages that are being @@ -7624,7 +7630,7 @@ static void kvm_recover_nx_huge_pages(struct kvm *kvm, * logging is disabled. */ if (!kvm_mmu_sp_dirty_logging_enabled(kvm, sp)) { - if (is_tdp) + if (is_tdp_mmu) flush |= kvm_tdp_mmu_zap_possible_nx_huge_page(kvm, sp); else kvm_mmu_prepare_zap_page(kvm, sp, &invalid_list); @@ -7637,7 +7643,7 @@ static void kvm_recover_nx_huge_pages(struct kvm *kvm, kvm_mmu_remote_flush_or_zap(kvm, &invalid_list, flush); rcu_read_unlock(); - if (is_tdp) + if (is_tdp_mmu) cond_resched_rwlock_read(&kvm->mmu_lock); else cond_resched_rwlock_write(&kvm->mmu_lock); @@ -7650,7 +7656,7 @@ static void kvm_recover_nx_huge_pages(struct kvm *kvm, rcu_read_unlock(); - if (is_tdp) + if (is_tdp_mmu) read_unlock(&kvm->mmu_lock); else write_unlock(&kvm->mmu_lock);