Skip to content

Commit 57d0bf3

Browse files
lifeixlijinxia
authored andcommitted
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>
1 parent 95c289b commit 57d0bf3

File tree

7 files changed

+29
-45
lines changed

7 files changed

+29
-45
lines changed

hypervisor/arch/x86/cpu.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -685,7 +685,7 @@ void cpu_dead(uint32_t logical_id)
685685
/* Set state to show CPU is halted */
686686
cpu_set_current_state(logical_id, CPU_STATE_HALTED);
687687

688-
bitmap_clr(get_cpu_id(), &pcpu_active_bitmap);
688+
bitmap_clear(get_cpu_id(), &pcpu_active_bitmap);
689689

690690
/* Halt the CPU */
691691
do {

hypervisor/arch/x86/guest/guest.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ inline uint64_t vcpumask2pcpumask(struct vm *vm, uint64_t vdmask)
9898
struct vcpu *vcpu;
9999

100100
while ((vcpu_id = bitmap_ffs(&vdmask)) >= 0) {
101-
bitmap_clr(vcpu_id, &vdmask);
101+
bitmap_clear(vcpu_id, &vdmask);
102102
vcpu = vcpu_from_vid(vm, vcpu_id);
103103
ASSERT(vcpu, "vcpu_from_vid failed");
104104
bitmap_set(vcpu->pcpu_id, &dmask);

hypervisor/arch/x86/guest/vlapic.c

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -849,7 +849,7 @@ vlapic_calcdest(struct vm *vm, uint64_t *dmask, uint32_t dest,
849849
*dmask = 0;
850850
amask = vm_active_cpus(vm);
851851
while ((vcpu_id = bitmap_ffs(&amask)) >= 0) {
852-
bitmap_clr(vcpu_id, &amask);
852+
bitmap_clear(vcpu_id, &amask);
853853

854854
vlapic = vm_lapic_from_vcpu_id(vm, vcpu_id);
855855
dfr = vlapic->apic_page->dfr;
@@ -953,7 +953,7 @@ vlapic_icrlo_write_handler(struct vlapic *vlapic)
953953
{
954954
int i;
955955
bool phys;
956-
uint64_t dmask;
956+
uint64_t dmask = 0;
957957
uint64_t icrval;
958958
uint32_t dest, vec, mode;
959959
struct lapic *lapic;
@@ -984,22 +984,21 @@ vlapic_icrlo_write_handler(struct vlapic *vlapic)
984984
vlapic_calcdest(vlapic->vm, &dmask, dest, phys, false);
985985
break;
986986
case APIC_DEST_SELF:
987-
bitmap_setof(vlapic->vcpu->vcpu_id, &dmask);
987+
bitmap_set(vlapic->vcpu->vcpu_id, &dmask);
988988
break;
989989
case APIC_DEST_ALLISELF:
990990
dmask = vm_active_cpus(vlapic->vm);
991991
break;
992992
case APIC_DEST_ALLESELF:
993993
dmask = vm_active_cpus(vlapic->vm);
994-
bitmap_clr(vlapic->vcpu->vcpu_id, &dmask);
994+
bitmap_clear(vlapic->vcpu->vcpu_id, &dmask);
995995
break;
996996
default:
997-
dmask = 0; /* satisfy gcc */
998997
break;
999998
}
1000999

10011000
while ((i = bitmap_ffs(&dmask)) >= 0) {
1002-
bitmap_clr(i, &dmask);
1001+
bitmap_clear(i, &dmask);
10031002
target_vcpu = vcpu_from_vid(vlapic->vm, i);
10041003
if (target_vcpu == NULL)
10051004
return 0;
@@ -1523,7 +1522,7 @@ vlapic_deliver_intr(struct vm *vm, bool level, uint32_t dest, bool phys,
15231522
vlapic_calcdest(vm, &dmask, dest, phys, lowprio);
15241523

15251524
while ((vcpu_id = bitmap_ffs(&dmask)) >= 0) {
1526-
bitmap_clr(vcpu_id, &dmask);
1525+
bitmap_clear(vcpu_id, &dmask);
15271526
target_vcpu = vcpu_from_vid(vm, vcpu_id);
15281527
if (target_vcpu == NULL)
15291528
return;
@@ -1657,7 +1656,7 @@ int
16571656
vlapic_set_local_intr(struct vm *vm, int cpu_id, int vector)
16581657
{
16591658
struct vlapic *vlapic;
1660-
uint64_t dmask;
1659+
uint64_t dmask = 0;
16611660
int error;
16621661

16631662
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)
16661665
if (cpu_id == -1)
16671666
dmask = vm_active_cpus(vm);
16681667
else
1669-
bitmap_setof(cpu_id, &dmask);
1668+
bitmap_set(cpu_id, &dmask);
16701669
error = 0;
16711670
while ((cpu_id = bitmap_ffs(&dmask)) >= 0) {
1672-
bitmap_clr(cpu_id, &dmask);
1671+
bitmap_clear(cpu_id, &dmask);
16731672
vlapic = vm_lapic_from_vcpu_id(vm, cpu_id);
16741673
error = vlapic_trigger_lvt(vlapic, vector);
16751674
if (error)

hypervisor/arch/x86/guest/vm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ int shutdown_vm(struct vm *vm)
233233
if (vm->iommu_domain)
234234
destroy_iommu_domain(vm->iommu_domain);
235235

236-
bitmap_clr(vm->attr.id, &vmid_bitmap);
236+
bitmap_clear(vm->attr.id, &vmid_bitmap);
237237

238238
if (vm->vpic)
239239
vpic_cleanup(vm);

hypervisor/arch/x86/softirq.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ static DEFINE_CPU_DATA(uint64_t, softirq_pending);
3737

3838
void disable_softirq(int cpu_id)
3939
{
40-
bitmap_clr(SOFTIRQ_ATOMIC, &per_cpu(softirq_pending, cpu_id));
40+
bitmap_clear(SOFTIRQ_ATOMIC, &per_cpu(softirq_pending, cpu_id));
4141
}
4242

4343
void enable_softirq(int cpu_id)
@@ -96,7 +96,7 @@ void exec_softirq(void)
9696
if ((softirq_id < 0) || (softirq_id >= SOFTIRQ_MAX))
9797
break;
9898

99-
bitmap_clr(softirq_id, bitmap);
99+
bitmap_clear(softirq_id, bitmap);
100100

101101
switch (softirq_id) {
102102
case SOFTIRQ_TIMER:

hypervisor/common/schedule.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ void set_pcpu_used(int pcpu_id)
8787

8888
void free_pcpu(int pcpu_id)
8989
{
90-
bitmap_clr(pcpu_id, &pcpu_used_bitmap);
90+
bitmap_clear(pcpu_id, &pcpu_used_bitmap);
9191
}
9292

9393
void add_vcpu_to_runqueue(struct vcpu *vcpu)

hypervisor/include/lib/bits.h

Lines changed: 14 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -129,51 +129,51 @@ ffsl(long mask)
129129
static inline void
130130
bitmap_set(int mask, unsigned long *bits)
131131
{
132-
/* (*bits) |= (1UL<<mask); */
133-
__asm __volatile(BUS_LOCK "orq %1,%0"
132+
/* (*bits) |= (1UL<<mask); */
133+
asm volatile(BUS_LOCK "orq %1,%0"
134134
: "+m" (*bits)
135135
: "r" (1UL<<mask)
136136
: "cc", "memory");
137137
}
138138

139139
static inline void
140-
bitmap_clr(int mask, unsigned long *bits)
140+
bitmap_clear(int mask, unsigned long *bits)
141141
{
142142
/* (*bits) &= ~(1UL<<mask); */
143-
__asm __volatile(BUS_LOCK "andq %1,%0"
143+
asm volatile(BUS_LOCK "andq %1,%0"
144144
: "+m" (*bits)
145145
: "r" (~(1UL<<mask))
146146
: "cc", "memory");
147147
}
148148

149-
static inline int
150-
bitmap_isset(int mask, unsigned long *bits)
149+
static inline bool
150+
bitmap_test(int mask, unsigned long *bits)
151151
{
152152
/*
153-
* return (*bits) & (1UL<<mask);
153+
* return !!((*bits) & (1UL<<mask));
154154
*/
155155
int ret;
156156

157-
__asm __volatile("btq %2,%1\n\tsbbl %0, %0"
157+
asm volatile("btq %2,%1\n\tsbbl %0, %0"
158158
: "=r" (ret), "=m" (*bits)
159-
: "r" ((long)(mask) & 0x3f)
159+
: "r" ((long)(mask & 0x3f))
160160
: "cc", "memory");
161161
return (!!ret);
162162
}
163163

164-
static inline int
164+
static inline bool
165165
bitmap_test_and_set(int mask, unsigned long *bits)
166166
{
167167
int ret;
168168

169-
__asm __volatile(BUS_LOCK "btsq %2,%1\n\tsbbl %0,%0"
169+
asm volatile(BUS_LOCK "btsq %2,%1\n\tsbbl %0,%0"
170170
: "=r" (ret), "=m" (*bits)
171171
: "r" ((long)(mask & 0x3f))
172172
: "cc", "memory");
173173
return (!!ret);
174174
}
175175

176-
static inline int
176+
static inline bool
177177
bitmap_test_and_clear(int mask, unsigned long *bits)
178178
{
179179
/*
@@ -183,28 +183,13 @@ bitmap_test_and_clear(int mask, unsigned long *bits)
183183
*/
184184
int ret;
185185

186-
__asm __volatile(BUS_LOCK "btrq %2,%1\n\tsbbl %0,%0"
186+
asm volatile(BUS_LOCK "btrq %2,%1\n\tsbbl %0,%0"
187187
: "=r" (ret), "=m" (*bits)
188-
: "r" ((long)(mask) & 0x3f)
188+
: "r" ((long)(mask & 0x3f))
189189
: "cc", "memory");
190190
return (!!ret);
191191
}
192192

193-
static inline void
194-
bitmap_setof(int mask, unsigned long *bits)
195-
{
196-
/*
197-
* *bits = 0;
198-
* (*bits) |= (1UL<<mask);
199-
*/
200-
201-
__asm __volatile(BUS_LOCK "xchgq %1,%0"
202-
: "+m" (*bits)
203-
: "r" ((1UL<<mask))
204-
: "cc", "memory");
205-
206-
}
207-
208193
static inline int
209194
bitmap_ffs(unsigned long *bits)
210195
{

0 commit comments

Comments
 (0)