mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-09-01 00:47:23 +00:00
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:
committed by
Xie, Nanlin
parent
e12f88b8c7
commit
b686b562f4
@@ -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
|
||||
|
Reference in New Issue
Block a user