DM: wrap ASSERT/DEASSERT IRQ line with Set/Clear IRQ line

- remove ASSERT & DEASSET IRQ line IOCTLs
 - remove PULSE IRQ line IOCTLs, use set/clear
   IRQ line instead.
 - Use IC_SET_IRQLINE to set or clear IRQ line

Tracked-On: #861
Signed-off-by: Yonghua Huang <yonghua.huang@intel.com>
Reviewed-by: Jason Chen CJ <jason.cj.chen@intel.com>
Reviewed-by: Eddie Dong <eddie.dong@intel.com>
Acked-by: Anthony Xu <anthony.xu@intel.com>
This commit is contained in:
Yonghua Huang
2018-09-27 17:34:25 +08:00
committed by Xie, Nanlin
parent e12f88b8c7
commit b686b562f4
10 changed files with 32 additions and 131 deletions

View File

@@ -416,58 +416,15 @@ vm_lapic_msi(struct vmctx *ctx, uint64_t addr, uint64_t msg)
}
int
vm_ioapic_assert_irq(struct vmctx *ctx, int irq)
vm_set_gsi_irq(struct vmctx *ctx, int gsi, uint32_t operation)
{
struct acrn_irqline ioapic_irq;
struct acrn_irqline_ops op;
uint64_t *req = (uint64_t *)&op;
bzero(&ioapic_irq, sizeof(ioapic_irq));
ioapic_irq.intr_type = ACRN_INTR_TYPE_IOAPIC;
ioapic_irq.ioapic_irq = irq;
op.op = operation;
op.nr_gsi = (uint32_t)gsi;
return ioctl(ctx->fd, IC_ASSERT_IRQLINE, &ioapic_irq);
}
int
vm_ioapic_deassert_irq(struct vmctx *ctx, int irq)
{
struct acrn_irqline ioapic_irq;
bzero(&ioapic_irq, sizeof(ioapic_irq));
ioapic_irq.intr_type = ACRN_INTR_TYPE_IOAPIC;
ioapic_irq.ioapic_irq = irq;
return ioctl(ctx->fd, IC_DEASSERT_IRQLINE, &ioapic_irq);
}
static int
vm_isa_irq(struct vmctx *ctx, int irq, int ioapic_irq, unsigned long call_id)
{
struct acrn_irqline isa_irq;
bzero(&isa_irq, sizeof(isa_irq));
isa_irq.intr_type = ACRN_INTR_TYPE_ISA;
isa_irq.pic_irq = irq;
isa_irq.ioapic_irq = ioapic_irq;
return ioctl(ctx->fd, call_id, &isa_irq);
}
int
vm_isa_assert_irq(struct vmctx *ctx, int atpic_irq, int ioapic_irq)
{
return vm_isa_irq(ctx, atpic_irq, ioapic_irq, IC_ASSERT_IRQLINE);
}
int
vm_isa_deassert_irq(struct vmctx *ctx, int atpic_irq, int ioapic_irq)
{
return vm_isa_irq(ctx, atpic_irq, ioapic_irq, IC_DEASSERT_IRQLINE);
}
int
vm_isa_pulse_irq(struct vmctx *ctx, int atpic_irq, int ioapic_irq)
{
return vm_isa_irq(ctx, atpic_irq, ioapic_irq, IC_PULSE_IRQLINE);
return ioctl(ctx->fd, IC_SET_IRQLINE, *req);
}
int