mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-10 02:54:58 -06:00
hw: set interrupts using pci irq wrappers
pci_set_irq and the other pci irq wrappers use PCI_INTERRUPT_PIN config register to compute device INTx pin to assert/deassert. An irq is allocated using pci_allocate_irq wrapper only if is needed by non pci devices. Removed irq related fields from state if not used anymore. Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
68919cace8
commit
9e64f8a3fc
26 changed files with 43 additions and 43 deletions
|
@ -361,7 +361,7 @@ static int esp_pci_scsi_init(PCIDevice *dev)
|
|||
"esp-io", 0x80);
|
||||
|
||||
pci_register_bar(dev, 0, PCI_BASE_ADDRESS_SPACE_IO, &pci->io);
|
||||
s->irq = dev->irq[0];
|
||||
s->irq = pci_allocate_irq(dev);
|
||||
|
||||
scsi_bus_new(&s->bus, sizeof(s->bus), d, &esp_pci_scsi_info, NULL);
|
||||
if (!d->hotplugged) {
|
||||
|
@ -378,6 +378,7 @@ static void esp_pci_scsi_uninit(PCIDevice *d)
|
|||
{
|
||||
PCIESPState *pci = PCI_ESP(d);
|
||||
|
||||
qemu_free_irq(pci->esp.irq);
|
||||
memory_region_destroy(&pci->io);
|
||||
}
|
||||
|
||||
|
|
|
@ -433,7 +433,7 @@ static void lsi_update_irq(LSIState *s)
|
|||
level, s->dstat, s->sist1, s->sist0);
|
||||
last_level = level;
|
||||
}
|
||||
qemu_set_irq(d->irq[0], level);
|
||||
pci_set_irq(d, level);
|
||||
|
||||
if (!level && lsi_irq_on_rsl(s) && !(s->scntl1 & LSI_SCNTL1_CON)) {
|
||||
DPRINTF("Handled IRQs & disconnected, looking for pending "
|
||||
|
|
|
@ -535,7 +535,7 @@ static void megasas_complete_frame(MegasasState *s, uint64_t context)
|
|||
msix_notify(pci_dev, 0);
|
||||
} else {
|
||||
trace_megasas_irq_raise();
|
||||
qemu_irq_raise(pci_dev->irq[0]);
|
||||
pci_irq_assert(pci_dev);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -1936,7 +1936,7 @@ static void megasas_mmio_write(void *opaque, hwaddr addr,
|
|||
s->intr_mask = val;
|
||||
if (!megasas_intr_enabled(s) && !msix_enabled(pci_dev)) {
|
||||
trace_megasas_irq_lower();
|
||||
qemu_irq_lower(pci_dev->irq[0]);
|
||||
pci_irq_deassert(pci_dev);
|
||||
}
|
||||
if (megasas_intr_enabled(s)) {
|
||||
trace_megasas_intr_enabled();
|
||||
|
@ -1952,7 +1952,7 @@ static void megasas_mmio_write(void *opaque, hwaddr addr,
|
|||
stl_le_phys(s->producer_pa, s->reply_queue_head);
|
||||
if (!msix_enabled(pci_dev)) {
|
||||
trace_megasas_irq_lower();
|
||||
qemu_irq_lower(pci_dev->irq[0]);
|
||||
pci_irq_deassert(pci_dev);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -330,7 +330,7 @@ pvscsi_update_irq_status(PVSCSIState *s)
|
|||
return;
|
||||
}
|
||||
|
||||
qemu_set_irq(d->irq[0], !!should_raise);
|
||||
pci_set_irq(d, !!should_raise);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue