lkml.org 
[lkml]   [2022]   [May]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 11/22] KVM: x86: hyper-v: replace bitmap_weight() with hweight64()
    On Tue, May 10, 2022 at 08:47:39AM -0700, Yury Norov wrote:
    > kvm_hv_flush_tlb() applies bitmap API to a u64 variable valid_bank_mask.
    > Since valid_bank_mask has a fixed size, we can use hweight64() and avoid
    > excessive bloating.

    In kvm_hv_send_ipi(), valid_bank_mask is unsigned long, not u64.

    This results in:

    arch/x86/kvm/hyperv.c: In function 'kvm_hv_send_ipi':
    include/asm-generic/bitops/const_hweight.h:21:76: error: right shift count >= width of type

    on all 32-bit builds.

    Guenter

    >
    > CC: Borislav Petkov <bp@alien8.de>
    > CC: Dave Hansen <dave.hansen@linux.intel.com>
    > CC: H. Peter Anvin <hpa@zytor.com>
    > CC: Ingo Molnar <mingo@redhat.com>
    > CC: Jim Mattson <jmattson@google.com>
    > CC: Joerg Roedel <joro@8bytes.org>
    > CC: Paolo Bonzini <pbonzini@redhat.com>
    > CC: Sean Christopherson <seanjc@google.com>
    > CC: Thomas Gleixner <tglx@linutronix.de>
    > CC: Vitaly Kuznetsov <vkuznets@redhat.com>
    > CC: Wanpeng Li <wanpengli@tencent.com>
    > CC: kvm@vger.kernel.org
    > CC: linux-kernel@vger.kernel.org
    > CC: x86@kernel.org
    > Signed-off-by: Yury Norov <yury.norov@gmail.com>
    > ---
    > arch/x86/kvm/hyperv.c | 4 ++--
    > 1 file changed, 2 insertions(+), 2 deletions(-)
    >
    > diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c
    > index 41585f0edf1e..b652b856df2b 100644
    > --- a/arch/x86/kvm/hyperv.c
    > +++ b/arch/x86/kvm/hyperv.c
    > @@ -1855,7 +1855,7 @@ static u64 kvm_hv_flush_tlb(struct kvm_vcpu *vcpu, struct kvm_hv_hcall *hc)
    > all_cpus = flush_ex.hv_vp_set.format !=
    > HV_GENERIC_SET_SPARSE_4K;
    >
    > - if (hc->var_cnt != bitmap_weight((unsigned long *)&valid_bank_mask, 64))
    > + if (hc->var_cnt != hweight64(valid_bank_mask))
    > return HV_STATUS_INVALID_HYPERCALL_INPUT;
    >
    > if (all_cpus)
    > @@ -1956,7 +1956,7 @@ static u64 kvm_hv_send_ipi(struct kvm_vcpu *vcpu, struct kvm_hv_hcall *hc)
    > valid_bank_mask = send_ipi_ex.vp_set.valid_bank_mask;
    > all_cpus = send_ipi_ex.vp_set.format == HV_GENERIC_SET_ALL;
    >
    > - if (hc->var_cnt != bitmap_weight(&valid_bank_mask, 64))
    > + if (hc->var_cnt != hweight64(valid_bank_mask))
    > return HV_STATUS_INVALID_HYPERCALL_INPUT;
    >
    > if (all_cpus)
    > --
    > 2.32.0
    >

    \
     
     \ /
      Last update: 2022-05-22 16:55    [W:4.093 / U:0.244 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site