@@ -67,12 +67,12 @@ vm_ioapic(struct vm *vm)
67
67
}
68
68
69
69
static void
70
- vioapic_send_intr (struct vioapic * vioapic , uint8_t pin )
70
+ vioapic_send_intr (struct vioapic * vioapic , uint32_t pin )
71
71
{
72
72
uint32_t vector , dest , delmode ;
73
73
union ioapic_rte rte ;
74
74
bool level , phys ;
75
- uint8_t pincount = vioapic_pincount (vioapic -> vm );
75
+ uint32_t pincount = vioapic_pincount (vioapic -> vm );
76
76
77
77
if (pin >= pincount ) {
78
78
pr_err ("vioapic_send_intr: invalid pin number %hhu" , pin );
@@ -105,11 +105,11 @@ vioapic_send_intr(struct vioapic *vioapic, uint8_t pin)
105
105
}
106
106
107
107
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 )
109
109
{
110
110
int oldcnt , newcnt ;
111
111
bool needintr ;
112
- uint8_t pincount = vioapic_pincount (vioapic -> vm );
112
+ uint32_t pincount = vioapic_pincount (vioapic -> vm );
113
113
114
114
if (pin >= pincount ) {
115
115
pr_err ("vioapic_set_pinstate: invalid pin number %hhu" , pin );
@@ -153,7 +153,7 @@ static int
153
153
vioapic_set_irqstate (struct vm * vm , uint32_t irq , enum irqstate irqstate )
154
154
{
155
155
struct vioapic * vioapic ;
156
- uint8_t pin = ( uint8_t ) irq ;
156
+ uint32_t pin = irq ;
157
157
158
158
if (pin >= vioapic_pincount (vm )) {
159
159
return - EINVAL ;
@@ -211,7 +211,7 @@ vioapic_update_tmr(struct vcpu *vcpu)
211
211
union ioapic_rte rte ;
212
212
uint32_t vector , delmode ;
213
213
bool level ;
214
- uint8_t pin , pincount ;
214
+ uint32_t pin , pincount ;
215
215
216
216
vlapic = vcpu -> arch_vcpu .vlapic ;
217
217
vioapic = vm_ioapic (vcpu -> vm );
@@ -241,7 +241,7 @@ static uint32_t
241
241
vioapic_indirect_read (struct vioapic * vioapic , uint32_t addr )
242
242
{
243
243
uint32_t regnum ;
244
- uint8_t pin , pincount = vioapic_pincount (vioapic -> vm );
244
+ uint32_t pin , pincount = vioapic_pincount (vioapic -> vm );
245
245
246
246
regnum = addr & 0xffU ;
247
247
switch (regnum ) {
@@ -257,10 +257,10 @@ vioapic_indirect_read(struct vioapic *vioapic, uint32_t addr)
257
257
258
258
/* redirection table entries */
259
259
if ((regnum >= IOAPIC_REDTBL ) &&
260
- (regnum < (IOAPIC_REDTBL + (( uint32_t ) pincount * 2U )))) {
260
+ (regnum < (IOAPIC_REDTBL + (pincount * 2U )))) {
261
261
uint32_t addr_offset = regnum - IOAPIC_REDTBL ;
262
262
uint32_t rte_offset = addr_offset / 2U ;
263
- pin = ( uint8_t ) rte_offset ;
263
+ pin = rte_offset ;
264
264
if ((addr_offset % 2U ) != 0U ) {
265
265
return vioapic -> rtbl [pin ].u .hi_32 ;
266
266
} else {
@@ -282,7 +282,7 @@ vioapic_write_eoi(struct vioapic *vioapic, uint32_t vector)
282
282
{
283
283
struct vm * vm = vioapic -> vm ;
284
284
union ioapic_rte rte ;
285
- uint8_t pin , pincount ;
285
+ uint32_t pin , pincount ;
286
286
287
287
if (vector < VECTOR_FOR_INTR_START || vector > NR_MAX_VECTOR ) {
288
288
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)
316
316
union ioapic_rte last , new ;
317
317
uint64_t changed ;
318
318
uint32_t regnum ;
319
- uint8_t pin , pincount = vioapic_pincount (vioapic -> vm );
319
+ uint32_t pin , pincount = vioapic_pincount (vioapic -> vm );
320
320
321
321
regnum = addr & 0xffUL ;
322
322
switch (regnum ) {
@@ -333,10 +333,10 @@ vioapic_indirect_write(struct vioapic *vioapic, uint32_t addr, uint32_t data)
333
333
334
334
/* redirection table entries */
335
335
if ((regnum >= IOAPIC_REDTBL ) &&
336
- (regnum < (IOAPIC_REDTBL + (( uint32_t ) pincount * 2U )))) {
336
+ (regnum < (IOAPIC_REDTBL + (pincount * 2U )))) {
337
337
uint32_t addr_offset = regnum - IOAPIC_REDTBL ;
338
338
uint32_t rte_offset = addr_offset / 2U ;
339
- pin = ( uint8_t ) rte_offset ;
339
+ pin = rte_offset ;
340
340
341
341
last = vioapic -> rtbl [pin ];
342
342
new = last ;
@@ -430,7 +430,7 @@ vioapic_indirect_write(struct vioapic *vioapic, uint32_t addr, uint32_t data)
430
430
struct ptdev_intx_info intx ;
431
431
432
432
/* NOTE: only support max 256 pin */
433
- intx .virt_pin = pin ;
433
+ intx .virt_pin = ( uint8_t ) pin ;
434
434
intx .vpin_src = PTDEV_VPIN_IOAPIC ;
435
435
ptdev_intx_pin_remap (vioapic -> vm , & intx );
436
436
}
486
486
vioapic_process_eoi (struct vm * vm , uint32_t vector )
487
487
{
488
488
struct vioapic * vioapic ;
489
- uint8_t pin , pincount = vioapic_pincount (vm );
489
+ uint32_t pin , pincount = vioapic_pincount (vm );
490
490
union ioapic_rte rte ;
491
491
492
492
if (vector < VECTOR_FOR_INTR_START || vector > NR_MAX_VECTOR ) {
@@ -504,7 +504,7 @@ vioapic_process_eoi(struct vm *vm, uint32_t vector)
504
504
continue ;
505
505
}
506
506
507
- ptdev_intx_ack (vm , pin , PTDEV_VPIN_IOAPIC );
507
+ ptdev_intx_ack (vm , ( uint8_t ) pin , PTDEV_VPIN_IOAPIC );
508
508
}
509
509
510
510
/*
@@ -533,7 +533,7 @@ vioapic_process_eoi(struct vm *vm, uint32_t vector)
533
533
void
534
534
vioapic_reset (struct vioapic * vioapic )
535
535
{
536
- uint8_t pin , pincount ;
536
+ uint32_t pin , pincount ;
537
537
538
538
/* Initialize all redirection entries to mask all interrupts */
539
539
pincount = vioapic_pincount (vioapic -> vm );
@@ -575,7 +575,7 @@ vioapic_cleanup(struct vioapic *vioapic)
575
575
free (vioapic );
576
576
}
577
577
578
- uint8_t
578
+ uint32_t
579
579
vioapic_pincount (struct vm * vm )
580
580
{
581
581
if (is_vm0 (vm )) {
@@ -622,7 +622,7 @@ int vioapic_mmio_access_handler(struct vcpu *vcpu, struct io_request *io_req,
622
622
* @pre vm->arch_vm.virt_ioapic != NULL
623
623
* @pre rte != NULL
624
624
*/
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 )
626
626
{
627
627
struct vioapic * vioapic ;
628
628
@@ -639,7 +639,7 @@ void get_vioapic_info(char *str_arg, int str_max, uint16_t vmid)
639
639
uint32_t delmode , vector , dest ;
640
640
bool level , phys , remote_irr , mask ;
641
641
struct vm * vm = get_vm_from_vmid (vmid );
642
- uint8_t pin , pincount ;
642
+ uint32_t pin , pincount ;
643
643
644
644
if (vm == NULL ) {
645
645
len = snprintf (str , size ,
0 commit comments