Message ID | 4FD96A5A.5050605@ozlabs.ru |
---|---|
State | New, archived |
Headers | show |
On 06/14/2012 06:36 AM, Alexey Kardashevskiy wrote: > As it is a very quick operation to resolve qirq from IRQ number, > it makes no sense to cache it anywhere but its original source i.e. XICS. > > Signed-off-by: Alexey Kardashevskiy<aik@ozlabs.ru> Ben, please ack/nack. Alex > --- > hw/spapr_pci.c | 14 +++++--------- > hw/spapr_pci.h | 1 - > 2 files changed, 5 insertions(+), 10 deletions(-) > > diff --git a/hw/spapr_pci.c b/hw/spapr_pci.c > index 269dbbf..93017cd 100644 > --- a/hw/spapr_pci.c > +++ b/hw/spapr_pci.c > @@ -162,7 +162,9 @@ static void pci_spapr_set_irq(void *opaque, int irq_num, int level) > */ > sPAPRPHBState *phb = opaque; > > - qemu_set_irq(phb->lsi_table[irq_num].qirq, level); > + qemu_set_irq(xics_assign_irq(spapr->icp, > + phb->lsi_table[irq_num].dt_irq, XICS_LSI), > + level); > } > > static uint64_t spapr_io_read(void *opaque, target_phys_addr_t addr, > @@ -268,16 +270,10 @@ static int spapr_phb_init(SysBusDevice *s) > > /* Initialize the LSI table */ > for (i = 0; i< PCI_NUM_PINS; i++) { > - qemu_irq qirq; > - uint32_t num; > - > - qirq = spapr_allocate_lsi(0,&num); > - if (!qirq) { > + if (!spapr_allocate_lsi(0,&phb->lsi_table[i].dt_irq)) { > + fprintf(stderr, "Failed to allocate LSI IRQ pin %u\n", i); > return -1; > } > - > - phb->lsi_table[i].dt_irq = num; > - phb->lsi_table[i].qirq = qirq; > } > > return 0; > diff --git a/hw/spapr_pci.h b/hw/spapr_pci.h > index dd66f4b..11c3ee1 100644 > --- a/hw/spapr_pci.h > +++ b/hw/spapr_pci.h > @@ -41,7 +41,6 @@ typedef struct sPAPRPHBState { > > struct { > uint32_t dt_irq; > - qemu_irq qirq; > } lsi_table[PCI_NUM_PINS]; > > QLIST_ENTRY(sPAPRPHBState) list; -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/hw/spapr_pci.c b/hw/spapr_pci.c index 269dbbf..93017cd 100644 --- a/hw/spapr_pci.c +++ b/hw/spapr_pci.c @@ -162,7 +162,9 @@ static void pci_spapr_set_irq(void *opaque, int irq_num, int level) */ sPAPRPHBState *phb = opaque; - qemu_set_irq(phb->lsi_table[irq_num].qirq, level); + qemu_set_irq(xics_assign_irq(spapr->icp, + phb->lsi_table[irq_num].dt_irq, XICS_LSI), + level); } static uint64_t spapr_io_read(void *opaque, target_phys_addr_t addr, @@ -268,16 +270,10 @@ static int spapr_phb_init(SysBusDevice *s) /* Initialize the LSI table */ for (i = 0; i < PCI_NUM_PINS; i++) { - qemu_irq qirq; - uint32_t num; - - qirq = spapr_allocate_lsi(0, &num); - if (!qirq) { + if (!spapr_allocate_lsi(0, &phb->lsi_table[i].dt_irq)) { + fprintf(stderr, "Failed to allocate LSI IRQ pin %u\n", i); return -1; } - - phb->lsi_table[i].dt_irq = num; - phb->lsi_table[i].qirq = qirq; } return 0; diff --git a/hw/spapr_pci.h b/hw/spapr_pci.h index dd66f4b..11c3ee1 100644 --- a/hw/spapr_pci.h +++ b/hw/spapr_pci.h @@ -41,7 +41,6 @@ typedef struct sPAPRPHBState { struct { uint32_t dt_irq; - qemu_irq qirq; } lsi_table[PCI_NUM_PINS]; QLIST_ENTRY(sPAPRPHBState) list;
As it is a very quick operation to resolve qirq from IRQ number, it makes no sense to cache it anywhere but its original source i.e. XICS. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> --- hw/spapr_pci.c | 14 +++++--------- hw/spapr_pci.h | 1 - 2 files changed, 5 insertions(+), 10 deletions(-)