hv: refine bitops

Rename bitmap_clr to bitmap_clear
Rename bitmap_isset to bitmap_test
Remove bitmap_setof

Signed-off-by: Li, Fei1 <fei1.li@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
Li, Fei1 2018-05-21 14:17:47 +08:00 committed by lijinxia
parent 95c289b15f
commit 57d0bf3b7c
7 changed files with 38 additions and 54 deletions

View File

@ -685,7 +685,7 @@ void cpu_dead(uint32_t logical_id)
/* Set state to show CPU is halted */
cpu_set_current_state(logical_id, CPU_STATE_HALTED);
bitmap_clr(get_cpu_id(), &pcpu_active_bitmap);
bitmap_clear(get_cpu_id(), &pcpu_active_bitmap);
/* Halt the CPU */
do {

View File

@ -98,7 +98,7 @@ inline uint64_t vcpumask2pcpumask(struct vm *vm, uint64_t vdmask)
struct vcpu *vcpu;
while ((vcpu_id = bitmap_ffs(&vdmask)) >= 0) {
bitmap_clr(vcpu_id, &vdmask);
bitmap_clear(vcpu_id, &vdmask);
vcpu = vcpu_from_vid(vm, vcpu_id);
ASSERT(vcpu, "vcpu_from_vid failed");
bitmap_set(vcpu->pcpu_id, &dmask);

View File

@ -849,7 +849,7 @@ vlapic_calcdest(struct vm *vm, uint64_t *dmask, uint32_t dest,
*dmask = 0;
amask = vm_active_cpus(vm);
while ((vcpu_id = bitmap_ffs(&amask)) >= 0) {
bitmap_clr(vcpu_id, &amask);
bitmap_clear(vcpu_id, &amask);
vlapic = vm_lapic_from_vcpu_id(vm, vcpu_id);
dfr = vlapic->apic_page->dfr;
@ -953,7 +953,7 @@ vlapic_icrlo_write_handler(struct vlapic *vlapic)
{
int i;
bool phys;
uint64_t dmask;
uint64_t dmask = 0;
uint64_t icrval;
uint32_t dest, vec, mode;
struct lapic *lapic;
@ -984,22 +984,21 @@ vlapic_icrlo_write_handler(struct vlapic *vlapic)
vlapic_calcdest(vlapic->vm, &dmask, dest, phys, false);
break;
case APIC_DEST_SELF:
bitmap_setof(vlapic->vcpu->vcpu_id, &dmask);
bitmap_set(vlapic->vcpu->vcpu_id, &dmask);
break;
case APIC_DEST_ALLISELF:
dmask = vm_active_cpus(vlapic->vm);
break;
case APIC_DEST_ALLESELF:
dmask = vm_active_cpus(vlapic->vm);
bitmap_clr(vlapic->vcpu->vcpu_id, &dmask);
bitmap_clear(vlapic->vcpu->vcpu_id, &dmask);
break;
default:
dmask = 0; /* satisfy gcc */
break;
}
while ((i = bitmap_ffs(&dmask)) >= 0) {
bitmap_clr(i, &dmask);
bitmap_clear(i, &dmask);
target_vcpu = vcpu_from_vid(vlapic->vm, i);
if (target_vcpu == NULL)
return 0;
@ -1523,7 +1522,7 @@ vlapic_deliver_intr(struct vm *vm, bool level, uint32_t dest, bool phys,
vlapic_calcdest(vm, &dmask, dest, phys, lowprio);
while ((vcpu_id = bitmap_ffs(&dmask)) >= 0) {
bitmap_clr(vcpu_id, &dmask);
bitmap_clear(vcpu_id, &dmask);
target_vcpu = vcpu_from_vid(vm, vcpu_id);
if (target_vcpu == NULL)
return;
@ -1657,7 +1656,7 @@ int
vlapic_set_local_intr(struct vm *vm, int cpu_id, int vector)
{
struct vlapic *vlapic;
uint64_t dmask;
uint64_t dmask = 0;
int error;
if (cpu_id < -1 || cpu_id >= phy_cpu_num)
@ -1666,10 +1665,10 @@ vlapic_set_local_intr(struct vm *vm, int cpu_id, int vector)
if (cpu_id == -1)
dmask = vm_active_cpus(vm);
else
bitmap_setof(cpu_id, &dmask);
bitmap_set(cpu_id, &dmask);
error = 0;
while ((cpu_id = bitmap_ffs(&dmask)) >= 0) {
bitmap_clr(cpu_id, &dmask);
bitmap_clear(cpu_id, &dmask);
vlapic = vm_lapic_from_vcpu_id(vm, cpu_id);
error = vlapic_trigger_lvt(vlapic, vector);
if (error)

View File

@ -233,7 +233,7 @@ int shutdown_vm(struct vm *vm)
if (vm->iommu_domain)
destroy_iommu_domain(vm->iommu_domain);
bitmap_clr(vm->attr.id, &vmid_bitmap);
bitmap_clear(vm->attr.id, &vmid_bitmap);
if (vm->vpic)
vpic_cleanup(vm);

View File

@ -37,7 +37,7 @@ static DEFINE_CPU_DATA(uint64_t, softirq_pending);
void disable_softirq(int cpu_id)
{
bitmap_clr(SOFTIRQ_ATOMIC, &per_cpu(softirq_pending, cpu_id));
bitmap_clear(SOFTIRQ_ATOMIC, &per_cpu(softirq_pending, cpu_id));
}
void enable_softirq(int cpu_id)
@ -96,7 +96,7 @@ void exec_softirq(void)
if ((softirq_id < 0) || (softirq_id >= SOFTIRQ_MAX))
break;
bitmap_clr(softirq_id, bitmap);
bitmap_clear(softirq_id, bitmap);
switch (softirq_id) {
case SOFTIRQ_TIMER:

View File

@ -87,7 +87,7 @@ void set_pcpu_used(int pcpu_id)
void free_pcpu(int pcpu_id)
{
bitmap_clr(pcpu_id, &pcpu_used_bitmap);
bitmap_clear(pcpu_id, &pcpu_used_bitmap);
}
void add_vcpu_to_runqueue(struct vcpu *vcpu)

View File

@ -129,51 +129,51 @@ ffsl(long mask)
static inline void
bitmap_set(int mask, unsigned long *bits)
{
/* (*bits) |= (1UL<<mask); */
__asm __volatile(BUS_LOCK "orq %1,%0"
/* (*bits) |= (1UL<<mask); */
asm volatile(BUS_LOCK "orq %1,%0"
: "+m" (*bits)
: "r" (1UL<<mask)
: "cc", "memory");
}
static inline void
bitmap_clr(int mask, unsigned long *bits)
bitmap_clear(int mask, unsigned long *bits)
{
/* (*bits) &= ~(1UL<<mask); */
__asm __volatile(BUS_LOCK "andq %1,%0"
asm volatile(BUS_LOCK "andq %1,%0"
: "+m" (*bits)
: "r" (~(1UL<<mask))
: "cc", "memory");
}
static inline int
bitmap_isset(int mask, unsigned long *bits)
static inline bool
bitmap_test(int mask, unsigned long *bits)
{
/*
* return (*bits) & (1UL<<mask);
* return !!((*bits) & (1UL<<mask));
*/
int ret;
__asm __volatile("btq %2,%1\n\tsbbl %0, %0"
: "=r" (ret), "=m" (*bits)
: "r" ((long)(mask) & 0x3f)
: "cc", "memory");
return (!!ret);
}
static inline int
bitmap_test_and_set(int mask, unsigned long *bits)
{
int ret;
__asm __volatile(BUS_LOCK "btsq %2,%1\n\tsbbl %0,%0"
asm volatile("btq %2,%1\n\tsbbl %0, %0"
: "=r" (ret), "=m" (*bits)
: "r" ((long)(mask & 0x3f))
: "cc", "memory");
return (!!ret);
}
static inline int
static inline bool
bitmap_test_and_set(int mask, unsigned long *bits)
{
int ret;
asm volatile(BUS_LOCK "btsq %2,%1\n\tsbbl %0,%0"
: "=r" (ret), "=m" (*bits)
: "r" ((long)(mask & 0x3f))
: "cc", "memory");
return (!!ret);
}
static inline bool
bitmap_test_and_clear(int mask, unsigned long *bits)
{
/*
@ -183,28 +183,13 @@ bitmap_test_and_clear(int mask, unsigned long *bits)
*/
int ret;
__asm __volatile(BUS_LOCK "btrq %2,%1\n\tsbbl %0,%0"
asm volatile(BUS_LOCK "btrq %2,%1\n\tsbbl %0,%0"
: "=r" (ret), "=m" (*bits)
: "r" ((long)(mask) & 0x3f)
: "r" ((long)(mask & 0x3f))
: "cc", "memory");
return (!!ret);
}
static inline void
bitmap_setof(int mask, unsigned long *bits)
{
/*
* *bits = 0;
* (*bits) |= (1UL<<mask);
*/
__asm __volatile(BUS_LOCK "xchgq %1,%0"
: "+m" (*bits)
: "r" ((1UL<<mask))
: "cc", "memory");
}
static inline int
bitmap_ffs(unsigned long *bits)
{