* [PATCH 0/2] Fix the allocation of pv cpu mask @ 2020-09-14 9:11 lihaiwei.kernel 2020-09-14 9:11 ` [PATCH 1/2] KVM: Fix the build error lihaiwei.kernel 2020-09-14 9:11 ` [PATCH 2/2] KVM: Check if __pv_cpu_mask was allocated instead of assigning ops too late lihaiwei.kernel 0 siblings, 2 replies; 6+ messages in thread From: lihaiwei.kernel @ 2020-09-14 9:11 UTC (permalink / raw) To: linux-kernel, kvm, x86 Cc: pbonzini, sean.j.christopherson, vkuznets, wanpengli, jmattson, joro, tglx, mingo, bp, hpa, lihaiwei From: Haiwei Li <lihaiwei@tencent.com> Hi, There is a old version patch of 'KVM: Check the allocation of pv cpu mask' in upstream. The v2 and what is discussed is in url: https://lore.kernel.org/kvm/87o8mlooki.fsf@vitty.brq.redhat.com/ In this patch, i fix the build error and make changes as suggested. Haiwei Li (2): KVM: Fix the build error KVM: Check if __pv_cpu_mask was allocated instead of assigning ops too late arch/x86/kernel/kvm.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) -- 2.18.4 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] KVM: Fix the build error 2020-09-14 9:11 [PATCH 0/2] Fix the allocation of pv cpu mask lihaiwei.kernel @ 2020-09-14 9:11 ` lihaiwei.kernel 2020-09-20 13:09 ` Paolo Bonzini 2020-09-14 9:11 ` [PATCH 2/2] KVM: Check if __pv_cpu_mask was allocated instead of assigning ops too late lihaiwei.kernel 1 sibling, 1 reply; 6+ messages in thread From: lihaiwei.kernel @ 2020-09-14 9:11 UTC (permalink / raw) To: linux-kernel, kvm, x86 Cc: pbonzini, sean.j.christopherson, vkuznets, wanpengli, jmattson, joro, tglx, mingo, bp, hpa, lihaiwei, kernel test robot From: Haiwei Li <lihaiwei@tencent.com> When CONFIG_SMP is not set, an build error occurs with message "error: use of undeclared identifier 'kvm_send_ipi_mask_allbutself'" Fixes: 0f990222108d ("KVM: Check the allocation of pv cpu mask", 2020-09-01) Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Haiwei Li <lihaiwei@tencent.com> --- arch/x86/kernel/kvm.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c index 1b51b727b140..7e8be0421720 100644 --- a/arch/x86/kernel/kvm.c +++ b/arch/x86/kernel/kvm.c @@ -797,7 +797,9 @@ static __init int kvm_alloc_cpumask(void) } } +#if defined(CONFIG_SMP) apic->send_IPI_mask_allbutself = kvm_send_ipi_mask_allbutself; +#endif pv_ops.mmu.flush_tlb_others = kvm_flush_tlb_others; return 0; -- 2.18.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] KVM: Fix the build error 2020-09-14 9:11 ` [PATCH 1/2] KVM: Fix the build error lihaiwei.kernel @ 2020-09-20 13:09 ` Paolo Bonzini 2020-09-21 0:23 ` Haiwei Li 2020-09-23 5:02 ` Haiwei Li 0 siblings, 2 replies; 6+ messages in thread From: Paolo Bonzini @ 2020-09-20 13:09 UTC (permalink / raw) To: lihaiwei.kernel, linux-kernel, kvm, x86 Cc: sean.j.christopherson, vkuznets, wanpengli, jmattson, joro, tglx, mingo, bp, hpa, lihaiwei, kernel test robot On 14/09/20 11:11, lihaiwei.kernel@gmail.com wrote: > From: Haiwei Li <lihaiwei@tencent.com> > > When CONFIG_SMP is not set, an build error occurs with message "error: > use of undeclared identifier 'kvm_send_ipi_mask_allbutself'" > > Fixes: 0f990222108d ("KVM: Check the allocation of pv cpu mask", 2020-09-01) > Reported-by: kernel test robot <lkp@intel.com> > Signed-off-by: Haiwei Li <lihaiwei@tencent.com> > --- > arch/x86/kernel/kvm.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c > index 1b51b727b140..7e8be0421720 100644 > --- a/arch/x86/kernel/kvm.c > +++ b/arch/x86/kernel/kvm.c > @@ -797,7 +797,9 @@ static __init int kvm_alloc_cpumask(void) > } > } > > +#if defined(CONFIG_SMP) > apic->send_IPI_mask_allbutself = kvm_send_ipi_mask_allbutself; > +#endif > pv_ops.mmu.flush_tlb_others = kvm_flush_tlb_others; > return 0; > > If CONFIG_SMP is not set you don't need kvm_alloc_cpumask or pv_ops.mmu.flush_tlb_others at all. Can you squash these two into the original patch and re-submit for 5.10? Paolo ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] KVM: Fix the build error 2020-09-20 13:09 ` Paolo Bonzini @ 2020-09-21 0:23 ` Haiwei Li 2020-09-23 5:02 ` Haiwei Li 1 sibling, 0 replies; 6+ messages in thread From: Haiwei Li @ 2020-09-21 0:23 UTC (permalink / raw) To: Paolo Bonzini, linux-kernel, kvm, x86 Cc: sean.j.christopherson, vkuznets, wanpengli, jmattson, joro, tglx, mingo, bp, hpa, lihaiwei, kernel test robot On 20/9/20 21:09, Paolo Bonzini wrote: > On 14/09/20 11:11, lihaiwei.kernel@gmail.com wrote: >> From: Haiwei Li <lihaiwei@tencent.com> >> >> When CONFIG_SMP is not set, an build error occurs with message "error: >> use of undeclared identifier 'kvm_send_ipi_mask_allbutself'" >> >> Fixes: 0f990222108d ("KVM: Check the allocation of pv cpu mask", 2020-09-01) >> Reported-by: kernel test robot <lkp@intel.com> >> Signed-off-by: Haiwei Li <lihaiwei@tencent.com> >> --- >> arch/x86/kernel/kvm.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c >> index 1b51b727b140..7e8be0421720 100644 >> --- a/arch/x86/kernel/kvm.c >> +++ b/arch/x86/kernel/kvm.c >> @@ -797,7 +797,9 @@ static __init int kvm_alloc_cpumask(void) >> } >> } >> >> +#if defined(CONFIG_SMP) >> apic->send_IPI_mask_allbutself = kvm_send_ipi_mask_allbutself; >> +#endif >> pv_ops.mmu.flush_tlb_others = kvm_flush_tlb_others; >> return 0; >> >> > > If CONFIG_SMP is not set you don't need kvm_alloc_cpumask or > pv_ops.mmu.flush_tlb_others at all. Can you squash these two into the > original patch and re-submit for 5.10? I will, thanks. Haiwei Li ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] KVM: Fix the build error 2020-09-20 13:09 ` Paolo Bonzini 2020-09-21 0:23 ` Haiwei Li @ 2020-09-23 5:02 ` Haiwei Li 1 sibling, 0 replies; 6+ messages in thread From: Haiwei Li @ 2020-09-23 5:02 UTC (permalink / raw) To: Paolo Bonzini, linux-kernel, kvm, x86 Cc: sean.j.christopherson, vkuznets, wanpengli, jmattson, joro, tglx, mingo, bp, hpa, lihaiwei, kernel test robot On 20/9/20 21:09, Paolo Bonzini wrote: > On 14/09/20 11:11, lihaiwei.kernel@gmail.com wrote: >> From: Haiwei Li <lihaiwei@tencent.com> >> >> When CONFIG_SMP is not set, an build error occurs with message "error: >> use of undeclared identifier 'kvm_send_ipi_mask_allbutself'" >> >> Fixes: 0f990222108d ("KVM: Check the allocation of pv cpu mask", 2020-09-01) >> Reported-by: kernel test robot <lkp@intel.com> >> Signed-off-by: Haiwei Li <lihaiwei@tencent.com> >> --- >> arch/x86/kernel/kvm.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c >> index 1b51b727b140..7e8be0421720 100644 >> --- a/arch/x86/kernel/kvm.c >> +++ b/arch/x86/kernel/kvm.c >> @@ -797,7 +797,9 @@ static __init int kvm_alloc_cpumask(void) >> } >> } >> >> +#if defined(CONFIG_SMP) >> apic->send_IPI_mask_allbutself = kvm_send_ipi_mask_allbutself; >> +#endif >> pv_ops.mmu.flush_tlb_others = kvm_flush_tlb_others; >> return 0; >> >> > > If CONFIG_SMP is not set you don't need kvm_alloc_cpumask or > pv_ops.mmu.flush_tlb_others at all. Can you squash these two into the > original patch and re-submit for 5.10? Hi, Paolo I'm a little confused. Function kvm_flush_tlb_others doesn't seem to be related to CONFIG_SMP. And my patch like: --- arch/x86/kernel/kvm.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c index 9663ba31347c..1e5da6db519c 100644 --- a/arch/x86/kernel/kvm.c +++ b/arch/x86/kernel/kvm.c @@ -553,7 +553,6 @@ static void kvm_send_ipi_mask_allbutself(const struct cpumask *mask, int vector) static void kvm_setup_pv_ipi(void) { apic->send_IPI_mask = kvm_send_ipi_mask; - apic->send_IPI_mask_allbutself = kvm_send_ipi_mask_allbutself; pr_info("setup PV IPIs\n"); } @@ -619,6 +618,11 @@ static void kvm_flush_tlb_others(const struct cpumask *cpumask, struct kvm_steal_time *src; struct cpumask *flushmask = this_cpu_cpumask_var_ptr(__pv_cpu_mask); + if (unlikely(!flushmask)) { + native_flush_tlb_others(cpumask, info); + return; + } + cpumask_copy(flushmask, cpumask); /* * We have to call flush only on online vCPUs. And @@ -765,6 +769,14 @@ static __init int activate_jump_labels(void) } arch_initcall(activate_jump_labels); +static void kvm_free_cpumask(void) +{ + unsigned int cpu; + + for_each_possible_cpu(cpu) + free_cpumask_var(per_cpu(__pv_cpu_mask, cpu)); +} + static __init int kvm_alloc_cpumask(void) { int cpu; @@ -783,11 +795,20 @@ static __init int kvm_alloc_cpumask(void) if (alloc) for_each_possible_cpu(cpu) { - zalloc_cpumask_var_node(per_cpu_ptr(&__pv_cpu_mask, cpu), - GFP_KERNEL, cpu_to_node(cpu)); + if (!zalloc_cpumask_var_node( + per_cpu_ptr(&__pv_cpu_mask, cpu), + GFP_KERNEL, cpu_to_node(cpu))) + goto zalloc_cpumask_fail; } +#if defined(CONFIG_SMP) + apic->send_IPI_mask_allbutself = kvm_send_ipi_mask_allbutself; +#endif return 0; + +zalloc_cpumask_fail: + kvm_free_cpumask(); + return -ENOMEM; } arch_initcall(kvm_alloc_cpumask); -- 2.18.4 Do you have any suggestion? Thanks. Haiwei ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] KVM: Check if __pv_cpu_mask was allocated instead of assigning ops too late 2020-09-14 9:11 [PATCH 0/2] Fix the allocation of pv cpu mask lihaiwei.kernel 2020-09-14 9:11 ` [PATCH 1/2] KVM: Fix the build error lihaiwei.kernel @ 2020-09-14 9:11 ` lihaiwei.kernel 1 sibling, 0 replies; 6+ messages in thread From: lihaiwei.kernel @ 2020-09-14 9:11 UTC (permalink / raw) To: linux-kernel, kvm, x86 Cc: pbonzini, sean.j.christopherson, vkuznets, wanpengli, jmattson, joro, tglx, mingo, bp, hpa, lihaiwei From: Haiwei Li <lihaiwei@tencent.com> Without this patch, kvm_flush_tlb_others is not called. We can always check if __pv_cpu_mask was allocated and revert back to the architectural path if not. Suggested-by: Vitaly Kuznetsov <vkuznets@redhat.com> Signed-off-by: Haiwei Li <lihaiwei@tencent.com> --- arch/x86/kernel/kvm.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c index 7e8be0421720..3c6c516d9828 100644 --- a/arch/x86/kernel/kvm.c +++ b/arch/x86/kernel/kvm.c @@ -553,7 +553,6 @@ static void kvm_send_ipi_mask_allbutself(const struct cpumask *mask, int vector) static void kvm_setup_pv_ipi(void) { apic->send_IPI_mask = kvm_send_ipi_mask; - apic->send_IPI_mask_allbutself = kvm_send_ipi_mask_allbutself; pr_info("setup PV IPIs\n"); } @@ -619,6 +618,11 @@ static void kvm_flush_tlb_others(const struct cpumask *cpumask, struct kvm_steal_time *src; struct cpumask *flushmask = this_cpu_cpumask_var_ptr(__pv_cpu_mask); + if (unlikely(!flushmask)) { + native_flush_tlb_others(cpumask, info); + return; + } + cpumask_copy(flushmask, cpumask); /* * We have to call flush only on online vCPUs. And @@ -652,6 +656,7 @@ static void __init kvm_guest_init(void) } if (pv_tlb_flush_supported()) { + pv_ops.mmu.flush_tlb_others = kvm_flush_tlb_others; pv_ops.mmu.tlb_remove_table = tlb_remove_table; pr_info("KVM setup pv remote TLB flush\n"); } @@ -800,7 +805,6 @@ static __init int kvm_alloc_cpumask(void) #if defined(CONFIG_SMP) apic->send_IPI_mask_allbutself = kvm_send_ipi_mask_allbutself; #endif - pv_ops.mmu.flush_tlb_others = kvm_flush_tlb_others; return 0; zalloc_cpumask_fail: -- 2.18.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-09-23 5:02 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-09-14 9:11 [PATCH 0/2] Fix the allocation of pv cpu mask lihaiwei.kernel 2020-09-14 9:11 ` [PATCH 1/2] KVM: Fix the build error lihaiwei.kernel 2020-09-20 13:09 ` Paolo Bonzini 2020-09-21 0:23 ` Haiwei Li 2020-09-23 5:02 ` Haiwei Li 2020-09-14 9:11 ` [PATCH 2/2] KVM: Check if __pv_cpu_mask was allocated instead of assigning ops too late lihaiwei.kernel
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.