@@ -284,10 +284,8 @@ vioapic_write_eoi(struct vioapic *vioapic, uint32_t vector)
284
284
for (pin = 0U ; pin < pincount ; pin ++ ) {
285
285
rte = vioapic -> rtbl [pin ];
286
286
287
- if ((rte .full & IOAPIC_RTE_REM_IRR ) == 0UL ) {
288
- continue ;
289
- }
290
- if ((rte .u .lo_32 & IOAPIC_RTE_LOW_INTVEC ) != vector ) {
287
+ if (((rte .u .lo_32 & IOAPIC_RTE_LOW_INTVEC ) != vector ) ||
288
+ ((rte .full & IOAPIC_RTE_REM_IRR ) == 0UL )) {
291
289
continue ;
292
290
}
293
291
@@ -492,12 +490,11 @@ vioapic_process_eoi(struct vm *vm, uint32_t vector)
492
490
/* notify device to ack if assigned pin */
493
491
for (pin = 0U ; pin < pincount ; pin ++ ) {
494
492
rte = vioapic -> rtbl [pin ];
495
- if ((rte .full & IOAPIC_RTE_REM_IRR ) == 0UL ) {
496
- continue ;
497
- }
498
- if ((rte .u .lo_32 & IOAPIC_RTE_LOW_INTVEC ) != vector ) {
493
+ if (((rte .u .lo_32 & IOAPIC_RTE_LOW_INTVEC ) != vector ) ||
494
+ ((rte .full & IOAPIC_RTE_REM_IRR ) == 0UL )) {
499
495
continue ;
500
496
}
497
+
501
498
ptdev_intx_ack (vm , pin , PTDEV_VPIN_IOAPIC );
502
499
}
503
500
@@ -508,10 +505,8 @@ vioapic_process_eoi(struct vm *vm, uint32_t vector)
508
505
VIOAPIC_LOCK (vioapic );
509
506
for (pin = 0U ; pin < pincount ; pin ++ ) {
510
507
rte = vioapic -> rtbl [pin ];
511
- if ((rte .full & IOAPIC_RTE_REM_IRR ) == 0UL ) {
512
- continue ;
513
- }
514
- if ((rte .u .lo_32 & IOAPIC_RTE_LOW_INTVEC ) != vector ) {
508
+ if (((rte .u .lo_32 & IOAPIC_RTE_LOW_INTVEC ) != vector ) ||
509
+ ((rte .full & IOAPIC_RTE_REM_IRR ) == 0UL )) {
515
510
continue ;
516
511
}
517
512
0 commit comments