-static int passthrough_irq_handler(struct guest_info * info, struct v3_interrupt * intr, void * priv_data)
-{
+static int passthrough_irq_handler(struct guest_info * info, struct v3_interrupt * intr, void * priv_data) {
+
+ if (intr->should_ack == 1) {
+ V3_ACK_IRQ(intr->irq);
+ }
PrintDebug("[passthrough_irq_handler] raise_irq=%d (guest=0x%p)\n",
intr->irq, (void *)info);
- return v3_raise_irq(info, intr->irq);
+ return v3_raise_irq(info, intr->irq);
}
-int v3_hook_passthrough_irq(struct guest_info * info, uint_t irq)
-{
-
+int v3_hook_passthrough_irq(struct guest_info * info, uint_t irq) {
int rc = v3_hook_irq(info, irq, passthrough_irq_handler, NULL);
if (rc) {