Skip to content

Commit

Permalink
KVM: x86: replace bitmap_weight with bitmap_empty where appropriate
Browse files Browse the repository at this point in the history
In some places kvm/hyperv.c code calls bitmap_weight() to check if any bit
of a given bitmap is set. It's better to use bitmap_empty() in that case
because bitmap_empty() stops traversing the bitmap as soon as it finds
first set bit, while bitmap_weight() counts all bits unconditionally.

Signed-off-by: Yury Norov <yury.norov@gmail.com>
Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Reviewed-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
  • Loading branch information
Yury Norov committed May 2, 2022
1 parent 64b87c1 commit fe06a0c
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions arch/x86/kvm/hyperv.c
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ static void synic_update_vector(struct kvm_vcpu_hv_synic *synic,
{
struct kvm_vcpu *vcpu = hv_synic_to_vcpu(synic);
struct kvm_hv *hv = to_kvm_hv(vcpu->kvm);
int auto_eoi_old, auto_eoi_new;
bool auto_eoi_old, auto_eoi_new;

if (vector < HV_SYNIC_FIRST_VALID_VECTOR)
return;
Expand All @@ -100,16 +100,16 @@ static void synic_update_vector(struct kvm_vcpu_hv_synic *synic,
else
__clear_bit(vector, synic->vec_bitmap);

auto_eoi_old = bitmap_weight(synic->auto_eoi_bitmap, 256);
auto_eoi_old = !bitmap_empty(synic->auto_eoi_bitmap, 256);

if (synic_has_vector_auto_eoi(synic, vector))
__set_bit(vector, synic->auto_eoi_bitmap);
else
__clear_bit(vector, synic->auto_eoi_bitmap);

auto_eoi_new = bitmap_weight(synic->auto_eoi_bitmap, 256);
auto_eoi_new = !bitmap_empty(synic->auto_eoi_bitmap, 256);

if (!!auto_eoi_old == !!auto_eoi_new)
if (auto_eoi_old == auto_eoi_new)
return;

if (!enable_apicv)
Expand Down

0 comments on commit fe06a0c

Please sign in to comment.