Skip to content

Commit f96f048

Browse files
ywan170lijinxia
authored andcommitted
hv: vioapic: change the variable type of pin to uint32_t
To make vioapic simpler, avoid lots of code to convert variable type between uint8_t and uint32_t. This patch changes all variable type of pin related variables to uint32_t instead of original uint_8. Signed-off-by: Yu Wang <yu1.wang@intel.com> Acked-by: Anthony Xu <anthony.xu@intel.com>
1 parent b13882f commit f96f048

File tree

2 files changed

+22
-22
lines changed

2 files changed

+22
-22
lines changed

hypervisor/arch/x86/guest/vioapic.c

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,12 @@ vm_ioapic(struct vm *vm)
6767
}
6868

6969
static void
70-
vioapic_send_intr(struct vioapic *vioapic, uint8_t pin)
70+
vioapic_send_intr(struct vioapic *vioapic, uint32_t pin)
7171
{
7272
uint32_t vector, dest, delmode;
7373
union ioapic_rte rte;
7474
bool level, phys;
75-
uint8_t pincount = vioapic_pincount(vioapic->vm);
75+
uint32_t pincount = vioapic_pincount(vioapic->vm);
7676

7777
if (pin >= pincount) {
7878
pr_err("vioapic_send_intr: invalid pin number %hhu", pin);
@@ -105,11 +105,11 @@ vioapic_send_intr(struct vioapic *vioapic, uint8_t pin)
105105
}
106106

107107
static void
108-
vioapic_set_pinstate(struct vioapic *vioapic, uint8_t pin, bool newstate)
108+
vioapic_set_pinstate(struct vioapic *vioapic, uint32_t pin, bool newstate)
109109
{
110110
int oldcnt, newcnt;
111111
bool needintr;
112-
uint8_t pincount = vioapic_pincount(vioapic->vm);
112+
uint32_t pincount = vioapic_pincount(vioapic->vm);
113113

114114
if (pin >= pincount) {
115115
pr_err("vioapic_set_pinstate: invalid pin number %hhu", pin);
@@ -153,7 +153,7 @@ static int
153153
vioapic_set_irqstate(struct vm *vm, uint32_t irq, enum irqstate irqstate)
154154
{
155155
struct vioapic *vioapic;
156-
uint8_t pin = (uint8_t)irq;
156+
uint32_t pin = irq;
157157

158158
if (pin >= vioapic_pincount(vm)) {
159159
return -EINVAL;
@@ -211,7 +211,7 @@ vioapic_update_tmr(struct vcpu *vcpu)
211211
union ioapic_rte rte;
212212
uint32_t vector, delmode;
213213
bool level;
214-
uint8_t pin, pincount;
214+
uint32_t pin, pincount;
215215

216216
vlapic = vcpu->arch_vcpu.vlapic;
217217
vioapic = vm_ioapic(vcpu->vm);
@@ -241,7 +241,7 @@ static uint32_t
241241
vioapic_indirect_read(struct vioapic *vioapic, uint32_t addr)
242242
{
243243
uint32_t regnum;
244-
uint8_t pin, pincount = vioapic_pincount(vioapic->vm);
244+
uint32_t pin, pincount = vioapic_pincount(vioapic->vm);
245245

246246
regnum = addr & 0xffU;
247247
switch (regnum) {
@@ -257,10 +257,10 @@ vioapic_indirect_read(struct vioapic *vioapic, uint32_t addr)
257257

258258
/* redirection table entries */
259259
if ((regnum >= IOAPIC_REDTBL) &&
260-
(regnum < (IOAPIC_REDTBL + ((uint32_t)pincount * 2U)))) {
260+
(regnum < (IOAPIC_REDTBL + (pincount * 2U)))) {
261261
uint32_t addr_offset = regnum - IOAPIC_REDTBL;
262262
uint32_t rte_offset = addr_offset / 2U;
263-
pin = (uint8_t)rte_offset;
263+
pin = rte_offset;
264264
if ((addr_offset % 2U) != 0U) {
265265
return vioapic->rtbl[pin].u.hi_32;
266266
} else {
@@ -282,7 +282,7 @@ vioapic_write_eoi(struct vioapic *vioapic, uint32_t vector)
282282
{
283283
struct vm *vm = vioapic->vm;
284284
union ioapic_rte rte;
285-
uint8_t pin, pincount;
285+
uint32_t pin, pincount;
286286

287287
if (vector < VECTOR_FOR_INTR_START || vector > NR_MAX_VECTOR) {
288288
pr_err("vioapic_process_eoi: invalid vector %u", vector);
@@ -316,7 +316,7 @@ vioapic_indirect_write(struct vioapic *vioapic, uint32_t addr, uint32_t data)
316316
union ioapic_rte last, new;
317317
uint64_t changed;
318318
uint32_t regnum;
319-
uint8_t pin, pincount = vioapic_pincount(vioapic->vm);
319+
uint32_t pin, pincount = vioapic_pincount(vioapic->vm);
320320

321321
regnum = addr & 0xffUL;
322322
switch (regnum) {
@@ -333,10 +333,10 @@ vioapic_indirect_write(struct vioapic *vioapic, uint32_t addr, uint32_t data)
333333

334334
/* redirection table entries */
335335
if ((regnum >= IOAPIC_REDTBL) &&
336-
(regnum < (IOAPIC_REDTBL + ((uint32_t)pincount * 2U)))) {
336+
(regnum < (IOAPIC_REDTBL + (pincount * 2U)))) {
337337
uint32_t addr_offset = regnum - IOAPIC_REDTBL;
338338
uint32_t rte_offset = addr_offset / 2U;
339-
pin = (uint8_t)rte_offset;
339+
pin = rte_offset;
340340

341341
last = vioapic->rtbl[pin];
342342
new = last;
@@ -430,7 +430,7 @@ vioapic_indirect_write(struct vioapic *vioapic, uint32_t addr, uint32_t data)
430430
struct ptdev_intx_info intx;
431431

432432
/* NOTE: only support max 256 pin */
433-
intx.virt_pin = pin;
433+
intx.virt_pin = (uint8_t)pin;
434434
intx.vpin_src = PTDEV_VPIN_IOAPIC;
435435
ptdev_intx_pin_remap(vioapic->vm, &intx);
436436
}
@@ -486,7 +486,7 @@ void
486486
vioapic_process_eoi(struct vm *vm, uint32_t vector)
487487
{
488488
struct vioapic *vioapic;
489-
uint8_t pin, pincount = vioapic_pincount(vm);
489+
uint32_t pin, pincount = vioapic_pincount(vm);
490490
union ioapic_rte rte;
491491

492492
if (vector < VECTOR_FOR_INTR_START || vector > NR_MAX_VECTOR) {
@@ -504,7 +504,7 @@ vioapic_process_eoi(struct vm *vm, uint32_t vector)
504504
continue;
505505
}
506506

507-
ptdev_intx_ack(vm, pin, PTDEV_VPIN_IOAPIC);
507+
ptdev_intx_ack(vm, (uint8_t)pin, PTDEV_VPIN_IOAPIC);
508508
}
509509

510510
/*
@@ -533,7 +533,7 @@ vioapic_process_eoi(struct vm *vm, uint32_t vector)
533533
void
534534
vioapic_reset(struct vioapic *vioapic)
535535
{
536-
uint8_t pin, pincount;
536+
uint32_t pin, pincount;
537537

538538
/* Initialize all redirection entries to mask all interrupts */
539539
pincount = vioapic_pincount(vioapic->vm);
@@ -575,7 +575,7 @@ vioapic_cleanup(struct vioapic *vioapic)
575575
free(vioapic);
576576
}
577577

578-
uint8_t
578+
uint32_t
579579
vioapic_pincount(struct vm *vm)
580580
{
581581
if (is_vm0(vm)) {
@@ -622,7 +622,7 @@ int vioapic_mmio_access_handler(struct vcpu *vcpu, struct io_request *io_req,
622622
* @pre vm->arch_vm.virt_ioapic != NULL
623623
* @pre rte != NULL
624624
*/
625-
void vioapic_get_rte(struct vm *vm, uint8_t pin, union ioapic_rte *rte)
625+
void vioapic_get_rte(struct vm *vm, uint32_t pin, union ioapic_rte *rte)
626626
{
627627
struct vioapic *vioapic;
628628

@@ -639,7 +639,7 @@ void get_vioapic_info(char *str_arg, int str_max, uint16_t vmid)
639639
uint32_t delmode, vector, dest;
640640
bool level, phys, remote_irr, mask;
641641
struct vm *vm = get_vm_from_vmid(vmid);
642-
uint8_t pin, pincount;
642+
uint32_t pin, pincount;
643643

644644
if (vm == NULL) {
645645
len = snprintf(str, size,

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@ void vioapic_update_tmr(struct vcpu *vcpu);
4949
void vioapic_mmio_write(struct vm *vm, uint64_t gpa, uint32_t wval);
5050
void vioapic_mmio_read(struct vm *vm, uint64_t gpa, uint32_t *rval);
5151

52-
uint8_t vioapic_pincount(struct vm *vm);
52+
uint32_t vioapic_pincount(struct vm *vm);
5353
void vioapic_process_eoi(struct vm *vm, uint32_t vector);
54-
void vioapic_get_rte(struct vm *vm, uint8_t pin, union ioapic_rte *rte);
54+
void vioapic_get_rte(struct vm *vm, uint32_t pin, union ioapic_rte *rte);
5555
int vioapic_mmio_access_handler(struct vcpu *vcpu,
5656
struct io_request *io_req, __unused void *handler_private_data);
5757

0 commit comments

Comments
 (0)