Messages in this thread |  | | From | Vitaly Kuznetsov <> | Subject | Re: [PATCH] KVM: Pre-allocate 1 cpumask variable per cpu for both pv tlb and pv ipis | Date | Tue, 04 Feb 2020 15:36:53 +0100 |
| |
Wanpeng Li <kernellwp@gmail.com> writes:
>> >> Honestly, I'd simplify the check in kvm_alloc_cpumask() as >> >> if (!kvm_para_available()) >> return; >> >> and allocated masks for all other cases. > > This will waste the memory if pv tlb and pv ipis are not exposed which > are the only users currently. >
My assumption is that the number of cases where we a) expose KVM b) don't expose IPIs and PV-TLB and c) care about 1 cpumask per cpu is relatively low. Ok, let's at least have a function for
if (kvm_para_has_feature(KVM_FEATURE_PV_TLB_FLUSH) && !kvm_para_has_hint(KVM_HINTS_REALTIME) && kvm_para_has_feature(KVM_FEATURE_STEAL_TIME))
as we now check it twice: in kvm_alloc_cpumask() and kvm_guest_init(), something like pv_tlb_flush_supported(). We can also do pv_ipi_supported() and probably others for consistency.
Also, probably not for this patch but it all makes me wonder why there's no per-cpu 'scratch' cpumask for the whole kernel to use. We definitely need it for hypervisor support but I also see arch/x86/kernel/apic/x2apic_cluster.c has similar needs.
-- Vitaly
|  |