Skip to content

Commit a97593e

Browse files
wuxyintellijinxia
authored andcommitted
HV:treewide:Update return type of function ffs64 and ffz64
To reduce type conversion in HV: Update return type of function ffs64 and ffz64 as uint16; For ffs64, when the input is zero, INVALID_BIT_INDEX is returned; Update temporary variable type and return value check of caller when it call ffs64 or ffz64; Note: In the allocate_mem, there is no return value checking for calling ffz64, this will be updated latter. V1-->V2: INVALID_BIT_INDEX instead of INVALID_NUMBER Coding style fixing; INVALID_CPU_ID instead of INVALID_PCPU_ID or INVALID_VCPU_ID; "%hu" is used to print vcpu id (uint16_t); Add "U/UL" for constant value as needed. V2-->V3: ffs64 return INVALID_BIT_INDEX directly when the input value is zero; Remove excess "%hu" updates. V3-->V4: Clean up the comments of ffs64; Add "U" for constant value as needed. Signed-off-by: Xiangyang Wu <xiangyang.wu@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
1 parent db01efa commit a97593e

File tree

14 files changed

+68
-57
lines changed

14 files changed

+68
-57
lines changed

hypervisor/arch/x86/guest/guest.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,11 @@ inline struct vcpu *get_primary_vcpu(struct vm *vm)
7575

7676
inline uint64_t vcpumask2pcpumask(struct vm *vm, uint64_t vdmask)
7777
{
78-
int vcpu_id;
78+
uint16_t vcpu_id;
7979
uint64_t dmask = 0;
8080
struct vcpu *vcpu;
8181

82-
while ((vcpu_id = ffs64(vdmask)) >= 0) {
82+
while ((vcpu_id = ffs64(vdmask)) != INVALID_BIT_INDEX) {
8383
bitmap_clear(vcpu_id, &vdmask);
8484
vcpu = vcpu_from_vid(vm, vcpu_id);
8585
ASSERT(vcpu != NULL, "vcpu_from_vid failed");

hypervisor/arch/x86/guest/vlapic.c

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -880,7 +880,7 @@ vlapic_calcdest(struct vm *vm, uint64_t *dmask, uint32_t dest,
880880
uint32_t dfr, ldr, ldest, cluster;
881881
uint32_t mda_flat_ldest, mda_cluster_ldest, mda_ldest, mda_cluster_id;
882882
uint64_t amask;
883-
int vcpu_id;
883+
uint16_t vcpu_id;
884884

885885
if (dest == 0xff) {
886886
/*
@@ -918,7 +918,7 @@ vlapic_calcdest(struct vm *vm, uint64_t *dmask, uint32_t dest,
918918
*/
919919
*dmask = 0;
920920
amask = vm_active_cpus(vm);
921-
while ((vcpu_id = ffs64(amask)) >= 0) {
921+
while ((vcpu_id = ffs64(amask)) != INVALID_BIT_INDEX) {
922922
bitmap_clear(vcpu_id, &amask);
923923

924924
vlapic = vm_lapic_from_vcpu_id(vm, vcpu_id);
@@ -1021,7 +1021,7 @@ vlapic_get_cr8(struct vlapic *vlapic)
10211021
static int
10221022
vlapic_icrlo_write_handler(struct vlapic *vlapic)
10231023
{
1024-
int i;
1024+
uint16_t vcpu_id;
10251025
bool phys;
10261026
uint64_t dmask = 0;
10271027
uint64_t icrval;
@@ -1071,29 +1071,29 @@ vlapic_icrlo_write_handler(struct vlapic *vlapic)
10711071
break;
10721072
}
10731073

1074-
while ((i = ffs64(dmask)) >= 0) {
1075-
bitmap_clear(i, &dmask);
1076-
target_vcpu = vcpu_from_vid(vlapic->vm, i);
1074+
while ((vcpu_id = ffs64(dmask)) != INVALID_BIT_INDEX) {
1075+
bitmap_clear(vcpu_id, &dmask);
1076+
target_vcpu = vcpu_from_vid(vlapic->vm, vcpu_id);
10771077
if (target_vcpu == NULL)
10781078
continue;
10791079

10801080
if (mode == APIC_DELMODE_FIXED) {
10811081
vlapic_set_intr(target_vcpu, vec,
10821082
LAPIC_TRIG_EDGE);
10831083
dev_dbg(ACRN_DBG_LAPIC,
1084-
"vlapic sending ipi %d to vcpu_id %d",
1085-
vec, i);
1084+
"vlapic sending ipi %d to vcpu_id %hu",
1085+
vec, vcpu_id);
10861086
} else if (mode == APIC_DELMODE_NMI){
10871087
vcpu_inject_nmi(target_vcpu);
10881088
dev_dbg(ACRN_DBG_LAPIC,
1089-
"vlapic send ipi nmi to vcpu_id %d", i);
1089+
"vlapic send ipi nmi to vcpu_id %hu", vcpu_id);
10901090
} else if (mode == APIC_DELMODE_INIT) {
10911091
if ((icrval & APIC_LEVEL_MASK) == APIC_LEVEL_DEASSERT)
10921092
continue;
10931093

10941094
dev_dbg(ACRN_DBG_LAPIC,
1095-
"Sending INIT from VCPU %d to %d",
1096-
vlapic->vcpu->vcpu_id, i);
1095+
"Sending INIT from VCPU %d to %hu",
1096+
vlapic->vcpu->vcpu_id, vcpu_id);
10971097

10981098
/* put target vcpu to INIT state and wait for SIPI */
10991099
pause_vcpu(target_vcpu, VCPU_PAUSED);
@@ -1110,8 +1110,8 @@ vlapic_icrlo_write_handler(struct vlapic *vlapic)
11101110
continue;
11111111

11121112
dev_dbg(ACRN_DBG_LAPIC,
1113-
"Sending SIPI from VCPU %d to %d with vector %d",
1114-
vlapic->vcpu->vcpu_id, i, vec);
1113+
"Sending SIPI from VCPU %d to %hu with vector %d",
1114+
vlapic->vcpu->vcpu_id, vcpu_id, vec);
11151115

11161116
if (--target_vcpu->arch_vcpu.nr_sipi > 0)
11171117
continue;
@@ -1586,7 +1586,7 @@ vlapic_deliver_intr(struct vm *vm, bool level, uint32_t dest, bool phys,
15861586
int delmode, int vec)
15871587
{
15881588
bool lowprio;
1589-
int vcpu_id;
1589+
uint16_t vcpu_id;
15901590
uint64_t dmask;
15911591
struct vcpu *target_vcpu;
15921592

@@ -1606,7 +1606,7 @@ vlapic_deliver_intr(struct vm *vm, bool level, uint32_t dest, bool phys,
16061606
*/
16071607
vlapic_calcdest(vm, &dmask, dest, phys, lowprio);
16081608

1609-
while ((vcpu_id = ffs64(dmask)) >= 0) {
1609+
while ((vcpu_id = ffs64(dmask)) != INVALID_BIT_INDEX) {
16101610
bitmap_clear(vcpu_id, &dmask);
16111611
target_vcpu = vcpu_from_vid(vm, vcpu_id);
16121612
if (target_vcpu == NULL)
@@ -1738,21 +1738,21 @@ vlapic_set_intr(struct vcpu *vcpu, uint32_t vector, bool level)
17381738
}
17391739

17401740
int
1741-
vlapic_set_local_intr(struct vm *vm, int vcpu_id, uint32_t vector)
1741+
vlapic_set_local_intr(struct vm *vm, uint16_t vcpu_id, uint32_t vector)
17421742
{
17431743
struct vlapic *vlapic;
17441744
uint64_t dmask = 0;
17451745
int error;
17461746

1747-
if (vcpu_id < -1 || vcpu_id >= phys_cpu_num)
1747+
if ((vcpu_id != BROADCAST_CPU_ID) && (vcpu_id >= phys_cpu_num))
17481748
return -EINVAL;
17491749

1750-
if (vcpu_id == -1)
1750+
if (vcpu_id == BROADCAST_CPU_ID)
17511751
dmask = vm_active_cpus(vm);
17521752
else
17531753
bitmap_set(vcpu_id, &dmask);
17541754
error = 0;
1755-
while ((vcpu_id = ffs64(dmask)) >= 0) {
1755+
while ((vcpu_id = ffs64(dmask)) != INVALID_BIT_INDEX) {
17561756
bitmap_clear(vcpu_id, &dmask);
17571757
vlapic = vm_lapic_from_vcpu_id(vm, vcpu_id);
17581758
error = vlapic_trigger_lvt(vlapic, vector);

hypervisor/arch/x86/guest/vpic.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ static void vpic_notify_intr(struct vpic *vpic)
231231
ASSERT(vcpu != NULL, "vm%d, vcpu0", vpic->vm->attr.id);
232232
vcpu_inject_extint(vcpu);
233233
} else {
234-
vlapic_set_local_intr(vpic->vm, BROADCAST_PCPU_ID, APIC_LVT_LINT0);
234+
vlapic_set_local_intr(vpic->vm, BROADCAST_CPU_ID, APIC_LVT_LINT0);
235235
/* notify vioapic pin0 if existing
236236
* For vPIC + vIOAPIC mode, vpic master irq connected
237237
* to vioapic pin0 (irq2)

hypervisor/arch/x86/softirq.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ void exec_softirq(void)
4242
uint16_t cpu_id = get_cpu_id();
4343
volatile uint64_t *bitmap = &per_cpu(softirq_pending, cpu_id);
4444

45-
int softirq_id;
45+
uint16_t softirq_id;
4646

4747
if (cpu_id >= phys_cpu_num)
4848
return;
@@ -61,7 +61,7 @@ void exec_softirq(void)
6161

6262
while (1) {
6363
softirq_id = ffs64(*bitmap);
64-
if ((softirq_id < 0) || (softirq_id >= SOFTIRQ_MAX))
64+
if ((softirq_id == INVALID_BIT_INDEX) || (softirq_id >= SOFTIRQ_MAX))
6565
break;
6666

6767
bitmap_clear(softirq_id, bitmap);

hypervisor/common/hypercall.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ int64_t hcall_create_vcpu(struct vm *vm, uint64_t vmid, uint64_t param)
220220
}
221221

222222
pcpu_id = allocate_pcpu();
223-
if (INVALID_PCPU_ID == pcpu_id) {
223+
if (pcpu_id == INVALID_CPU_ID) {
224224
pr_err("%s: No physical available\n", __func__);
225225
return -1;
226226
}

hypervisor/common/schedule.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ uint16_t allocate_pcpu(void)
4141
return i;
4242
}
4343

44-
return INVALID_PCPU_ID;
44+
return INVALID_CPU_ID;
4545
}
4646

4747
void set_pcpu_used(uint16_t pcpu_id)

hypervisor/include/arch/x86/cpu.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,20 @@ enum feature_word {
211211
FEATURE_WORDS,
212212
};
213213

214+
/**
215+
*The invalid cpu_id (INVALID_CPU_ID) is error
216+
*code for error handling, this means that
217+
*caller can't find a valid physical cpu
218+
*or virtual cpu.
219+
*/
220+
#define INVALID_CPU_ID 0xffffU
221+
/**
222+
*The broadcast id (BROADCAST_CPU_ID)
223+
*used to notify all valid phyiscal cpu
224+
*or virtual cpu.
225+
*/
226+
#define BROADCAST_CPU_ID 0xfffeU
227+
214228
/* CPU states defined */
215229
enum cpu_state {
216230
CPU_STATE_RESET = 0,

hypervisor/include/arch/x86/cpuid.h

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -96,15 +96,6 @@
9696
#define CPUID_EXTEND_FUNCTION_4 0x80000004
9797
#define CPUID_EXTEND_ADDRESS_SIZE 0x80000008
9898

99-
/**pcpu id type is uint16_t,
100-
*The broadcast id (BROADCAST_PCPU_ID)
101-
* used to notify all valid pcpu,
102-
*the invalid pcpu id (INVALID_PCPU_ID) is error
103-
*code for error handling.
104-
*/
105-
#define INVALID_PCPU_ID 0xffffU
106-
#define BROADCAST_PCPU_ID 0xfffeU
107-
10899

109100
static inline void __cpuid(uint32_t *eax, uint32_t *ebx,
110101
uint32_t *ecx, uint32_t *edx)

hypervisor/include/arch/x86/guest/vlapic.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ vlapic_intr_edge(struct vcpu *vcpu, uint32_t vector)
8989
* Triggers the LAPIC local interrupt (LVT) 'vector' on 'cpu'. 'cpu' can
9090
* be set to -1 to trigger the interrupt on all CPUs.
9191
*/
92-
int vlapic_set_local_intr(struct vm *vm, int vcpu_id, uint32_t vector);
92+
int vlapic_set_local_intr(struct vm *vm, uint16_t vcpu_id, uint32_t vector);
9393

9494
int vlapic_intr_msi(struct vm *vm, uint64_t addr, uint64_t msg);
9595

hypervisor/include/arch/x86/softirq.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
#ifndef SOFTIRQ_H
88
#define SOFTIRQ_H
99

10-
#define SOFTIRQ_TIMER 0
11-
#define SOFTIRQ_DEV_ASSIGN 1
12-
#define SOFTIRQ_MAX 2
10+
#define SOFTIRQ_TIMER 0U
11+
#define SOFTIRQ_DEV_ASSIGN 1U
12+
#define SOFTIRQ_MAX 2U
1313
#define SOFTIRQ_MASK ((1UL<<SOFTIRQ_MAX)-1)
1414

1515
/* used for atomic value for prevent recursive */

0 commit comments

Comments
 (0)