All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow
@ 2022-03-07 13:43 Philippe Mathieu-Daudé
  2022-03-07 13:43 ` [PATCH 01/13] hw/mips/gt64xxx_pci: Fix PCI IRQ levels to be preserved during migration Philippe Mathieu-Daudé
                   ` (13 more replies)
  0 siblings, 14 replies; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2022-03-07 13:43 UTC (permalink / raw)
  To: Bernhard Beschow, qemu-devel; +Cc: Philippe Mathieu-Daudé

From: Philippe Mathieu-Daudé <f4bug@amsat.org>

This is a combination of 2 series posted by Bernhard Beschow:

"malta: Fix PCI IRQ levels to be preserved during migration" v4
https://lore.kernel.org/qemu-devel/20220217101924.15347-1-shentey@gmail.com/

"isa: Resolve unneeded IRQ attributes from ISADevice" v3
https://lore.kernel.org/qemu-devel/20220301220037.76555-1-shentey@gmail.com/

Bernhard, can you check if the 2nd series got rebased properly?

Thanks,

Phil.

Bernhard Beschow (13):
  hw/mips/gt64xxx_pci: Fix PCI IRQ levels to be preserved during
    migration
  malta: Move PCI interrupt handling from gt64xxx_pci to piix4
  hw/isa/piix4: Resolve redundant i8259[] attribute
  hw/isa/piix4: Pass PIIX4State as opaque parameter for piix4_set_irq()
  hw/isa/piix4: Resolve global instance variable
  hw/isa/piix4: Replace some magic IRQ constants
  hw/mips/gt64xxx_pci: Resolve gt64120_register()
  hw/rtc/mc146818rtc: QOM'ify IRQ number
  hw/rtc/m48t59-isa: QOM'ify IRQ number
  hw/input/pckbd: QOM'ify IRQ numbers
  hw/isa/isa-bus: Remove isabus_dev_print()
  hw/isa: Drop unused attributes from ISADevice
  hw/isa: Inline and remove one-line isa_init_irq()

 hw/audio/cs4231a.c            |  2 +-
 hw/audio/gus.c                |  2 +-
 hw/audio/sb16.c               |  2 +-
 hw/block/fdc-isa.c            |  2 +-
 hw/char/parallel.c            |  2 +-
 hw/char/serial-isa.c          |  2 +-
 hw/ide/isa.c                  |  2 +-
 hw/input/pckbd.c              | 26 ++++++++++--
 hw/ipmi/isa_ipmi_bt.c         |  2 +-
 hw/ipmi/isa_ipmi_kcs.c        |  2 +-
 hw/isa/isa-bus.c              | 37 +---------------
 hw/isa/piix4.c                | 56 +++++++++++++++++++++---
 hw/mips/gt64xxx_pci.c         | 80 +++--------------------------------
 hw/mips/malta.c               |  7 +--
 hw/net/ne2000-isa.c           |  2 +-
 hw/rtc/m48t59-isa.c           |  9 +++-
 hw/rtc/mc146818rtc.c          | 13 +++++-
 hw/tpm/tpm_tis_isa.c          |  2 +-
 include/hw/isa/isa.h          |  3 --
 include/hw/mips/mips.h        |  3 --
 include/hw/rtc/mc146818rtc.h  |  1 +
 include/hw/southbridge/piix.h |  2 -
 tests/qemu-iotests/172.out    | 26 ------------
 23 files changed, 114 insertions(+), 171 deletions(-)

-- 
2.34.1



^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH 01/13] hw/mips/gt64xxx_pci: Fix PCI IRQ levels to be preserved during migration
  2022-03-07 13:43 [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow Philippe Mathieu-Daudé
@ 2022-03-07 13:43 ` Philippe Mathieu-Daudé
  2022-03-08 18:09   ` Richard Henderson
  2022-03-07 13:43 ` [PATCH 02/13] malta: Move PCI interrupt handling from gt64xxx_pci to piix4 Philippe Mathieu-Daudé
                   ` (12 subsequent siblings)
  13 siblings, 1 reply; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2022-03-07 13:43 UTC (permalink / raw)
  To: Bernhard Beschow, qemu-devel; +Cc: Peter Maydell, Philippe Mathieu-Daudé

From: Bernhard Beschow <shentey@gmail.com>

Based on commit e735b55a8c11dd455e31ccd4420e6c9485191d0c:

  piix_pci: eliminate PIIX3State::pci_irq_levels

  PIIX3State::pci_irq_levels are redundant which is already tracked by
  PCIBus layer. So eliminate them.

The IRQ levels in the PCIBus layer are already preserved during
migration. By reusing them and rather than having a redundant implementation
the bug is avoided in the first place.

Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20220217101924.15347-2-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/mips/gt64xxx_pci.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/hw/mips/gt64xxx_pci.c b/hw/mips/gt64xxx_pci.c
index c7480bd019..4cbd0911f5 100644
--- a/hw/mips/gt64xxx_pci.c
+++ b/hw/mips/gt64xxx_pci.c
@@ -1006,14 +1006,11 @@ static int gt64120_pci_map_irq(PCIDevice *pci_dev, int irq_num)
     }
 }
 
-static int pci_irq_levels[4];
-
 static void gt64120_pci_set_irq(void *opaque, int irq_num, int level)
 {
     int i, pic_irq, pic_level;
     qemu_irq *pic = opaque;
-
-    pci_irq_levels[irq_num] = level;
+    PCIBus *bus = pci_get_bus(piix4_dev);
 
     /* now we change the pic irq level according to the piix irq mappings */
     /* XXX: optimize */
@@ -1023,7 +1020,7 @@ static void gt64120_pci_set_irq(void *opaque, int irq_num, int level)
         pic_level = 0;
         for (i = 0; i < 4; i++) {
             if (pic_irq == piix4_dev->config[PIIX_PIRQCA + i]) {
-                pic_level |= pci_irq_levels[i];
+                pic_level |= pci_bus_get_irq_level(bus, i);
             }
         }
         qemu_set_irq(pic[pic_irq], pic_level);
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 02/13] malta: Move PCI interrupt handling from gt64xxx_pci to piix4
  2022-03-07 13:43 [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow Philippe Mathieu-Daudé
  2022-03-07 13:43 ` [PATCH 01/13] hw/mips/gt64xxx_pci: Fix PCI IRQ levels to be preserved during migration Philippe Mathieu-Daudé
@ 2022-03-07 13:43 ` Philippe Mathieu-Daudé
  2022-03-07 13:43 ` [PATCH 03/13] hw/isa/piix4: Resolve redundant i8259[] attribute Philippe Mathieu-Daudé
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2022-03-07 13:43 UTC (permalink / raw)
  To: Bernhard Beschow, qemu-devel; +Cc: Philippe Mathieu-Daudé

From: Bernhard Beschow <shentey@gmail.com>

Handling PCI interrupts in piix4 increases cohesion and reduces differences
between piix4 and piix3.

Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20220217101924.15347-3-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/isa/piix4.c         | 55 ++++++++++++++++++++++++++++++++++++++
 hw/mips/gt64xxx_pci.c  | 60 ++++--------------------------------------
 hw/mips/malta.c        |  6 +----
 include/hw/mips/mips.h |  2 +-
 4 files changed, 62 insertions(+), 61 deletions(-)

diff --git a/hw/isa/piix4.c b/hw/isa/piix4.c
index 0fe7b69bc4..196b56e69c 100644
--- a/hw/isa/piix4.c
+++ b/hw/isa/piix4.c
@@ -45,6 +45,7 @@ struct PIIX4State {
     PCIDevice dev;
     qemu_irq cpu_intr;
     qemu_irq *isa;
+    qemu_irq i8259[ISA_NUM_IRQS];
 
     RTCState rtc;
     /* Reset Control Register */
@@ -54,6 +55,27 @@ struct PIIX4State {
 
 OBJECT_DECLARE_SIMPLE_TYPE(PIIX4State, PIIX4_PCI_DEVICE)
 
+static void piix4_set_irq(void *opaque, int irq_num, int level)
+{
+    int i, pic_irq, pic_level;
+    qemu_irq *pic = opaque;
+    PCIBus *bus = pci_get_bus(piix4_dev);
+
+    /* now we change the pic irq level according to the piix irq mappings */
+    /* XXX: optimize */
+    pic_irq = piix4_dev->config[PIIX_PIRQCA + irq_num];
+    if (pic_irq < 16) {
+        /* The pic level is the logical OR of all the PCI irqs mapped to it. */
+        pic_level = 0;
+        for (i = 0; i < 4; i++) {
+            if (pic_irq == piix4_dev->config[PIIX_PIRQCA + i]) {
+                pic_level |= pci_bus_get_irq_level(bus, i);
+            }
+        }
+        qemu_set_irq(pic[pic_irq], pic_level);
+    }
+}
+
 static void piix4_isa_reset(DeviceState *dev)
 {
     PIIX4State *d = PIIX4_PCI_DEVICE(dev);
@@ -248,8 +270,34 @@ static void piix4_register_types(void)
 
 type_init(piix4_register_types)
 
+static int pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num)
+{
+    int slot;
+
+    slot = PCI_SLOT(pci_dev->devfn);
+
+    switch (slot) {
+    /* PIIX4 USB */
+    case 10:
+        return 3;
+    /* AMD 79C973 Ethernet */
+    case 11:
+        return 1;
+    /* Crystal 4281 Sound */
+    case 12:
+        return 2;
+    /* PCI slot 1 to 4 */
+    case 18 ... 21:
+        return ((slot - 18) + irq_num) & 0x03;
+    /* Unknown device, don't do any translation */
+    default:
+        return irq_num;
+    }
+}
+
 DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus, I2CBus **smbus)
 {
+    PIIX4State *s;
     PCIDevice *pci;
     DeviceState *dev;
     int devfn = PCI_DEVFN(10, 0);
@@ -257,6 +305,7 @@ DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus, I2CBus **smbus)
     pci = pci_create_simple_multifunction(pci_bus, devfn,  true,
                                           TYPE_PIIX4_PCI_DEVICE);
     dev = DEVICE(pci);
+    s = PIIX4_PCI_DEVICE(pci);
     if (isa_bus) {
         *isa_bus = ISA_BUS(qdev_get_child_bus(dev, "isa.0"));
     }
@@ -271,5 +320,11 @@ DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus, I2CBus **smbus)
                                NULL, 0, NULL);
     }
 
+    pci_bus_irqs(pci_bus, piix4_set_irq, pci_slot_get_pirq, s->i8259, 4);
+
+    for (int i = 0; i < ISA_NUM_IRQS; i++) {
+        s->i8259[i] = qdev_get_gpio_in_named(dev, "isa", i);
+    }
+
     return dev;
 }
diff --git a/hw/mips/gt64xxx_pci.c b/hw/mips/gt64xxx_pci.c
index 4cbd0911f5..eb205d6d70 100644
--- a/hw/mips/gt64xxx_pci.c
+++ b/hw/mips/gt64xxx_pci.c
@@ -29,7 +29,6 @@
 #include "hw/mips/mips.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_host.h"
-#include "hw/southbridge/piix.h"
 #include "migration/vmstate.h"
 #include "hw/intc/i8259.h"
 #include "hw/irq.h"
@@ -981,53 +980,6 @@ static const MemoryRegionOps isd_mem_ops = {
     },
 };
 
-static int gt64120_pci_map_irq(PCIDevice *pci_dev, int irq_num)
-{
-    int slot;
-
-    slot = PCI_SLOT(pci_dev->devfn);
-
-    switch (slot) {
-    /* PIIX4 USB */
-    case 10:
-        return 3;
-    /* AMD 79C973 Ethernet */
-    case 11:
-        return 1;
-    /* Crystal 4281 Sound */
-    case 12:
-        return 2;
-    /* PCI slot 1 to 4 */
-    case 18 ... 21:
-        return ((slot - 18) + irq_num) & 0x03;
-    /* Unknown device, don't do any translation */
-    default:
-        return irq_num;
-    }
-}
-
-static void gt64120_pci_set_irq(void *opaque, int irq_num, int level)
-{
-    int i, pic_irq, pic_level;
-    qemu_irq *pic = opaque;
-    PCIBus *bus = pci_get_bus(piix4_dev);
-
-    /* now we change the pic irq level according to the piix irq mappings */
-    /* XXX: optimize */
-    pic_irq = piix4_dev->config[PIIX_PIRQCA + irq_num];
-    if (pic_irq < 16) {
-        /* The pic level is the logical OR of all the PCI irqs mapped to it. */
-        pic_level = 0;
-        for (i = 0; i < 4; i++) {
-            if (pic_irq == piix4_dev->config[PIIX_PIRQCA + i]) {
-                pic_level |= pci_bus_get_irq_level(bus, i);
-            }
-        }
-        qemu_set_irq(pic[pic_irq], pic_level);
-    }
-}
-
-
 static void gt64120_reset(DeviceState *dev)
 {
     GT64120State *s = GT64120_PCI_HOST_BRIDGE(dev);
@@ -1204,7 +1156,7 @@ static void gt64120_realize(DeviceState *dev, Error **errp)
                           "gt64120-isd", 0x1000);
 }
 
-PCIBus *gt64120_register(qemu_irq *pic)
+PCIBus *gt64120_register(void)
 {
     GT64120State *d;
     PCIHostState *phb;
@@ -1215,12 +1167,10 @@ PCIBus *gt64120_register(qemu_irq *pic)
     phb = PCI_HOST_BRIDGE(dev);
     memory_region_init(&d->pci0_mem, OBJECT(dev), "pci0-mem", 4 * GiB);
     address_space_init(&d->pci0_mem_as, &d->pci0_mem, "pci0-mem");
-    phb->bus = pci_register_root_bus(dev, "pci",
-                                     gt64120_pci_set_irq, gt64120_pci_map_irq,
-                                     pic,
-                                     &d->pci0_mem,
-                                     get_system_io(),
-                                     PCI_DEVFN(18, 0), 4, TYPE_PCI_BUS);
+    phb->bus = pci_root_bus_new(dev, "pci",
+                                &d->pci0_mem,
+                                get_system_io(),
+                                PCI_DEVFN(18, 0), TYPE_PCI_BUS);
     sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
 
     pci_create_simple(phb->bus, PCI_DEVFN(0, 0), "gt64120_pci");
diff --git a/hw/mips/malta.c b/hw/mips/malta.c
index b770b8d367..13254dbc89 100644
--- a/hw/mips/malta.c
+++ b/hw/mips/malta.c
@@ -97,7 +97,6 @@ struct MaltaState {
 
     Clock *cpuclk;
     MIPSCPSState cps;
-    qemu_irq i8259[ISA_NUM_IRQS];
 };
 
 static struct _loaderparams {
@@ -1391,7 +1390,7 @@ void mips_malta_init(MachineState *machine)
     stl_p(memory_region_get_ram_ptr(bios_copy) + 0x10, 0x00000420);
 
     /* Northbridge */
-    pci_bus = gt64120_register(s->i8259);
+    pci_bus = gt64120_register();
     /*
      * The whole address space decoded by the GT-64120A doesn't generate
      * exception when accessing invalid memory. Create an empty slot to
@@ -1404,9 +1403,6 @@ void mips_malta_init(MachineState *machine)
 
     /* Interrupt controller */
     qdev_connect_gpio_out_named(dev, "intr", 0, i8259_irq);
-    for (int i = 0; i < ISA_NUM_IRQS; i++) {
-        s->i8259[i] = qdev_get_gpio_in_named(dev, "isa", i);
-    }
 
     /* generate SPD EEPROM data */
     generate_eeprom_spd(&smbus_eeprom_buf[0 * 256], ram_size);
diff --git a/include/hw/mips/mips.h b/include/hw/mips/mips.h
index 6c9c8805f3..ff88942e63 100644
--- a/include/hw/mips/mips.h
+++ b/include/hw/mips/mips.h
@@ -10,7 +10,7 @@
 #include "exec/memory.h"
 
 /* gt64xxx.c */
-PCIBus *gt64120_register(qemu_irq *pic);
+PCIBus *gt64120_register(void);
 
 /* bonito.c */
 PCIBus *bonito_init(qemu_irq *pic);
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 03/13] hw/isa/piix4: Resolve redundant i8259[] attribute
  2022-03-07 13:43 [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow Philippe Mathieu-Daudé
  2022-03-07 13:43 ` [PATCH 01/13] hw/mips/gt64xxx_pci: Fix PCI IRQ levels to be preserved during migration Philippe Mathieu-Daudé
  2022-03-07 13:43 ` [PATCH 02/13] malta: Move PCI interrupt handling from gt64xxx_pci to piix4 Philippe Mathieu-Daudé
@ 2022-03-07 13:43 ` Philippe Mathieu-Daudé
  2022-03-08 18:18   ` Richard Henderson
  2022-03-07 13:43 ` [PATCH 04/13] hw/isa/piix4: Pass PIIX4State as opaque parameter for piix4_set_irq() Philippe Mathieu-Daudé
                   ` (10 subsequent siblings)
  13 siblings, 1 reply; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2022-03-07 13:43 UTC (permalink / raw)
  To: Bernhard Beschow, qemu-devel
  Cc: Philippe Mathieu-Daudé, Michael S . Tsirkin

From: Bernhard Beschow <shentey@gmail.com>

This is a follow-up on patch "malta: Move PCI interrupt handling from
gt64xxx_pci to piix4" where i8259[] was moved from MaltaState to
PIIX4State to make the code movement more obvious. However, i8259[]
seems redundant to *isa, so remove it.

Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Message-Id: <20220217101924.15347-4-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/isa/piix4.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/hw/isa/piix4.c b/hw/isa/piix4.c
index 196b56e69c..179968b18e 100644
--- a/hw/isa/piix4.c
+++ b/hw/isa/piix4.c
@@ -45,7 +45,6 @@ struct PIIX4State {
     PCIDevice dev;
     qemu_irq cpu_intr;
     qemu_irq *isa;
-    qemu_irq i8259[ISA_NUM_IRQS];
 
     RTCState rtc;
     /* Reset Control Register */
@@ -320,11 +319,7 @@ DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus, I2CBus **smbus)
                                NULL, 0, NULL);
     }
 
-    pci_bus_irqs(pci_bus, piix4_set_irq, pci_slot_get_pirq, s->i8259, 4);
-
-    for (int i = 0; i < ISA_NUM_IRQS; i++) {
-        s->i8259[i] = qdev_get_gpio_in_named(dev, "isa", i);
-    }
+    pci_bus_irqs(pci_bus, piix4_set_irq, pci_slot_get_pirq, s->isa, 4);
 
     return dev;
 }
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 04/13] hw/isa/piix4: Pass PIIX4State as opaque parameter for piix4_set_irq()
  2022-03-07 13:43 [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow Philippe Mathieu-Daudé
                   ` (2 preceding siblings ...)
  2022-03-07 13:43 ` [PATCH 03/13] hw/isa/piix4: Resolve redundant i8259[] attribute Philippe Mathieu-Daudé
@ 2022-03-07 13:43 ` Philippe Mathieu-Daudé
  2022-03-08 18:20   ` Richard Henderson
  2022-03-07 13:43 ` [PATCH 05/13] hw/isa/piix4: Resolve global instance variable Philippe Mathieu-Daudé
                   ` (9 subsequent siblings)
  13 siblings, 1 reply; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2022-03-07 13:43 UTC (permalink / raw)
  To: Bernhard Beschow, qemu-devel
  Cc: Peter Maydell, Philippe Mathieu-Daudé, Michael S . Tsirkin

From: Bernhard Beschow <shentey@gmail.com>

Passing PIIX4State rather than just the qemu_irq allows for resolving
the global piix4_dev variable.

Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Message-Id: <20220217101924.15347-5-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/isa/piix4.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/hw/isa/piix4.c b/hw/isa/piix4.c
index 179968b18e..caa2002e2c 100644
--- a/hw/isa/piix4.c
+++ b/hw/isa/piix4.c
@@ -57,7 +57,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(PIIX4State, PIIX4_PCI_DEVICE)
 static void piix4_set_irq(void *opaque, int irq_num, int level)
 {
     int i, pic_irq, pic_level;
-    qemu_irq *pic = opaque;
+    PIIX4State *s = opaque;
     PCIBus *bus = pci_get_bus(piix4_dev);
 
     /* now we change the pic irq level according to the piix irq mappings */
@@ -71,7 +71,7 @@ static void piix4_set_irq(void *opaque, int irq_num, int level)
                 pic_level |= pci_bus_get_irq_level(bus, i);
             }
         }
-        qemu_set_irq(pic[pic_irq], pic_level);
+        qemu_set_irq(s->isa[pic_irq], pic_level);
     }
 }
 
@@ -319,7 +319,7 @@ DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus, I2CBus **smbus)
                                NULL, 0, NULL);
     }
 
-    pci_bus_irqs(pci_bus, piix4_set_irq, pci_slot_get_pirq, s->isa, 4);
+    pci_bus_irqs(pci_bus, piix4_set_irq, pci_slot_get_pirq, s, 4);
 
     return dev;
 }
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 05/13] hw/isa/piix4: Resolve global instance variable
  2022-03-07 13:43 [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow Philippe Mathieu-Daudé
                   ` (3 preceding siblings ...)
  2022-03-07 13:43 ` [PATCH 04/13] hw/isa/piix4: Pass PIIX4State as opaque parameter for piix4_set_irq() Philippe Mathieu-Daudé
@ 2022-03-07 13:43 ` Philippe Mathieu-Daudé
  2022-03-08 18:20   ` Richard Henderson
  2022-03-07 13:43 ` [PATCH 06/13] hw/isa/piix4: Replace some magic IRQ constants Philippe Mathieu-Daudé
                   ` (8 subsequent siblings)
  13 siblings, 1 reply; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2022-03-07 13:43 UTC (permalink / raw)
  To: Bernhard Beschow, qemu-devel
  Cc: Philippe Mathieu-Daudé, Michael S . Tsirkin

From: Bernhard Beschow <shentey@gmail.com>

Now that piix4_set_irq's opaque parameter references own PIIX4State,
piix4_dev becomes redundant.

Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Message-Id: <20220217101924.15347-6-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/isa/piix4.c                | 10 +++-------
 include/hw/southbridge/piix.h |  2 --
 2 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/hw/isa/piix4.c b/hw/isa/piix4.c
index caa2002e2c..2e9b5ccada 100644
--- a/hw/isa/piix4.c
+++ b/hw/isa/piix4.c
@@ -39,8 +39,6 @@
 #include "sysemu/runstate.h"
 #include "qom/object.h"
 
-PCIDevice *piix4_dev;
-
 struct PIIX4State {
     PCIDevice dev;
     qemu_irq cpu_intr;
@@ -58,16 +56,16 @@ static void piix4_set_irq(void *opaque, int irq_num, int level)
 {
     int i, pic_irq, pic_level;
     PIIX4State *s = opaque;
-    PCIBus *bus = pci_get_bus(piix4_dev);
+    PCIBus *bus = pci_get_bus(&s->dev);
 
     /* now we change the pic irq level according to the piix irq mappings */
     /* XXX: optimize */
-    pic_irq = piix4_dev->config[PIIX_PIRQCA + irq_num];
+    pic_irq = s->dev.config[PIIX_PIRQCA + irq_num];
     if (pic_irq < 16) {
         /* The pic level is the logical OR of all the PCI irqs mapped to it. */
         pic_level = 0;
         for (i = 0; i < 4; i++) {
-            if (pic_irq == piix4_dev->config[PIIX_PIRQCA + i]) {
+            if (pic_irq == s->dev.config[PIIX_PIRQCA + i]) {
                 pic_level |= pci_bus_get_irq_level(bus, i);
             }
         }
@@ -219,8 +217,6 @@ static void piix4_realize(PCIDevice *dev, Error **errp)
         return;
     }
     isa_init_irq(ISA_DEVICE(&s->rtc), &s->rtc.irq, RTC_ISA_IRQ);
-
-    piix4_dev = dev;
 }
 
 static void piix4_init(Object *obj)
diff --git a/include/hw/southbridge/piix.h b/include/hw/southbridge/piix.h
index 6387f2b612..f63f83e5c6 100644
--- a/include/hw/southbridge/piix.h
+++ b/include/hw/southbridge/piix.h
@@ -70,8 +70,6 @@ typedef struct PIIXState PIIX3State;
 DECLARE_INSTANCE_CHECKER(PIIX3State, PIIX3_PCI_DEVICE,
                          TYPE_PIIX3_PCI_DEVICE)
 
-extern PCIDevice *piix4_dev;
-
 PIIX3State *piix3_create(PCIBus *pci_bus, ISABus **isa_bus);
 
 DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus, I2CBus **smbus);
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 06/13] hw/isa/piix4: Replace some magic IRQ constants
  2022-03-07 13:43 [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow Philippe Mathieu-Daudé
                   ` (4 preceding siblings ...)
  2022-03-07 13:43 ` [PATCH 05/13] hw/isa/piix4: Resolve global instance variable Philippe Mathieu-Daudé
@ 2022-03-07 13:43 ` Philippe Mathieu-Daudé
  2022-03-08 18:21   ` Richard Henderson
  2022-03-07 13:43 ` [PATCH 07/13] hw/mips/gt64xxx_pci: Resolve gt64120_register() Philippe Mathieu-Daudé
                   ` (7 subsequent siblings)
  13 siblings, 1 reply; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2022-03-07 13:43 UTC (permalink / raw)
  To: Bernhard Beschow, qemu-devel
  Cc: Philippe Mathieu-Daudé, Michael S . Tsirkin

From: Bernhard Beschow <shentey@gmail.com>

This is a follow-up on patch "malta: Move PCI interrupt handling from
gt64xxx_pci to piix4". gt64xxx_pci used magic constants, and probably
didn't want to use piix4-specific constants. Now that the interrupt
handing resides in piix4, its constants can be used.

Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Message-Id: <20220217101924.15347-7-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/isa/piix4.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/hw/isa/piix4.c b/hw/isa/piix4.c
index 2e9b5ccada..f876c71750 100644
--- a/hw/isa/piix4.c
+++ b/hw/isa/piix4.c
@@ -61,10 +61,10 @@ static void piix4_set_irq(void *opaque, int irq_num, int level)
     /* now we change the pic irq level according to the piix irq mappings */
     /* XXX: optimize */
     pic_irq = s->dev.config[PIIX_PIRQCA + irq_num];
-    if (pic_irq < 16) {
+    if (pic_irq < ISA_NUM_IRQS) {
         /* The pic level is the logical OR of all the PCI irqs mapped to it. */
         pic_level = 0;
-        for (i = 0; i < 4; i++) {
+        for (i = 0; i < PIIX_NUM_PIRQS; i++) {
             if (pic_irq == s->dev.config[PIIX_PIRQCA + i]) {
                 pic_level |= pci_bus_get_irq_level(bus, i);
             }
@@ -315,7 +315,7 @@ DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus, I2CBus **smbus)
                                NULL, 0, NULL);
     }
 
-    pci_bus_irqs(pci_bus, piix4_set_irq, pci_slot_get_pirq, s, 4);
+    pci_bus_irqs(pci_bus, piix4_set_irq, pci_slot_get_pirq, s, PIIX_NUM_PIRQS);
 
     return dev;
 }
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 07/13] hw/mips/gt64xxx_pci: Resolve gt64120_register()
  2022-03-07 13:43 [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow Philippe Mathieu-Daudé
                   ` (5 preceding siblings ...)
  2022-03-07 13:43 ` [PATCH 06/13] hw/isa/piix4: Replace some magic IRQ constants Philippe Mathieu-Daudé
@ 2022-03-07 13:43 ` Philippe Mathieu-Daudé
  2022-03-08 18:32   ` Richard Henderson
  2022-03-07 13:43 ` [PATCH 08/13] hw/rtc/mc146818rtc: QOM'ify IRQ number Philippe Mathieu-Daudé
                   ` (6 subsequent siblings)
  13 siblings, 1 reply; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2022-03-07 13:43 UTC (permalink / raw)
  To: Bernhard Beschow, qemu-devel; +Cc: Philippe Mathieu-Daudé

From: Bernhard Beschow <shentey@gmail.com>

Now that gt64120_register() lost its pic parameter, there is an
opportunity to remove it. gt64120_register() is old style by wrapping
qdev API, and the new style is to use qdev directly. So take the
opportunity and modernize the code.

Suggested-by: BALATON Zoltan <balaton@eik.bme.hu>
Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: BALATON Zoltan <balaton@eik.bme.hu>
Message-Id: <20220217101924.15347-8-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/mips/gt64xxx_pci.c  | 21 ++++-----------------
 hw/mips/malta.c        |  3 ++-
 include/hw/mips/mips.h |  3 ---
 3 files changed, 6 insertions(+), 21 deletions(-)

diff --git a/hw/mips/gt64xxx_pci.c b/hw/mips/gt64xxx_pci.c
index eb205d6d70..e0ff1b5566 100644
--- a/hw/mips/gt64xxx_pci.c
+++ b/hw/mips/gt64xxx_pci.c
@@ -26,7 +26,6 @@
 #include "qapi/error.h"
 #include "qemu/units.h"
 #include "qemu/log.h"
-#include "hw/mips/mips.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_host.h"
 #include "migration/vmstate.h"
@@ -1151,30 +1150,18 @@ static void gt64120_reset(DeviceState *dev)
 static void gt64120_realize(DeviceState *dev, Error **errp)
 {
     GT64120State *s = GT64120_PCI_HOST_BRIDGE(dev);
+    PCIHostState *phb = PCI_HOST_BRIDGE(dev);
 
     memory_region_init_io(&s->ISD_mem, OBJECT(dev), &isd_mem_ops, s,
                           "gt64120-isd", 0x1000);
-}
-
-PCIBus *gt64120_register(void)
-{
-    GT64120State *d;
-    PCIHostState *phb;
-    DeviceState *dev;
-
-    dev = qdev_new(TYPE_GT64120_PCI_HOST_BRIDGE);
-    d = GT64120_PCI_HOST_BRIDGE(dev);
-    phb = PCI_HOST_BRIDGE(dev);
-    memory_region_init(&d->pci0_mem, OBJECT(dev), "pci0-mem", 4 * GiB);
-    address_space_init(&d->pci0_mem_as, &d->pci0_mem, "pci0-mem");
+    memory_region_init(&s->pci0_mem, OBJECT(dev), "pci0-mem", 4 * GiB);
+    address_space_init(&s->pci0_mem_as, &s->pci0_mem, "pci0-mem");
     phb->bus = pci_root_bus_new(dev, "pci",
-                                &d->pci0_mem,
+                                &s->pci0_mem,
                                 get_system_io(),
                                 PCI_DEVFN(18, 0), TYPE_PCI_BUS);
-    sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
 
     pci_create_simple(phb->bus, PCI_DEVFN(0, 0), "gt64120_pci");
-    return phb->bus;
 }
 
 static void gt64120_pci_realize(PCIDevice *d, Error **errp)
diff --git a/hw/mips/malta.c b/hw/mips/malta.c
index 13254dbc89..55037eb90f 100644
--- a/hw/mips/malta.c
+++ b/hw/mips/malta.c
@@ -1390,7 +1390,8 @@ void mips_malta_init(MachineState *machine)
     stl_p(memory_region_get_ram_ptr(bios_copy) + 0x10, 0x00000420);
 
     /* Northbridge */
-    pci_bus = gt64120_register();
+    dev = sysbus_create_simple("gt64120", -1, NULL);
+    pci_bus = PCI_BUS(qdev_get_child_bus(dev, "pci"));
     /*
      * The whole address space decoded by the GT-64120A doesn't generate
      * exception when accessing invalid memory. Create an empty slot to
diff --git a/include/hw/mips/mips.h b/include/hw/mips/mips.h
index ff88942e63..101799f7d3 100644
--- a/include/hw/mips/mips.h
+++ b/include/hw/mips/mips.h
@@ -9,9 +9,6 @@
 
 #include "exec/memory.h"
 
-/* gt64xxx.c */
-PCIBus *gt64120_register(void);
-
 /* bonito.c */
 PCIBus *bonito_init(qemu_irq *pic);
 
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 08/13] hw/rtc/mc146818rtc: QOM'ify IRQ number
  2022-03-07 13:43 [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow Philippe Mathieu-Daudé
                   ` (6 preceding siblings ...)
  2022-03-07 13:43 ` [PATCH 07/13] hw/mips/gt64xxx_pci: Resolve gt64120_register() Philippe Mathieu-Daudé
@ 2022-03-07 13:43 ` Philippe Mathieu-Daudé
  2022-03-07 13:58   ` Bernhard Beschow
  2022-03-07 13:43 ` [PATCH 09/13] hw/rtc/m48t59-isa: " Philippe Mathieu-Daudé
                   ` (5 subsequent siblings)
  13 siblings, 1 reply; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2022-03-07 13:43 UTC (permalink / raw)
  To: Bernhard Beschow, qemu-devel; +Cc: Philippe Mathieu-Daudé

From: Bernhard Beschow <shentey@gmail.com>

Exposing the IRQ number as a QOM property not only allows it to be
configurable but also to be displayed in HMP:

Before:

(qemu) info qtree
       ...
          dev: mc146818rtc, id ""
            gpio-out "" 1
            base_year = 0 (0x0)
            lost_tick_policy = "discard"

After:

          dev: mc146818rtc, id ""
            gpio-out "" 1
            base_year = 0 (0x0)
            irq = 8 (0x8)
            lost_tick_policy = "discard"

The reason the IRQ number didn's show up before is that this device does not
call isa_init_irq().

Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20220301220037.76555-2-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/isa/piix4.c               |  2 +-
 hw/rtc/mc146818rtc.c         | 13 +++++++++++--
 include/hw/rtc/mc146818rtc.h |  1 +
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/hw/isa/piix4.c b/hw/isa/piix4.c
index f876c71750..fc3c8b3fd1 100644
--- a/hw/isa/piix4.c
+++ b/hw/isa/piix4.c
@@ -216,7 +216,7 @@ static void piix4_realize(PCIDevice *dev, Error **errp)
     if (!qdev_realize(DEVICE(&s->rtc), BUS(isa_bus), errp)) {
         return;
     }
-    isa_init_irq(ISA_DEVICE(&s->rtc), &s->rtc.irq, RTC_ISA_IRQ);
+    isa_init_irq(ISA_DEVICE(&s->rtc), &s->rtc.irq, s->rtc.isairq);
 }
 
 static void piix4_init(Object *obj)
diff --git a/hw/rtc/mc146818rtc.c b/hw/rtc/mc146818rtc.c
index ac9a60c90e..f235c2ddbe 100644
--- a/hw/rtc/mc146818rtc.c
+++ b/hw/rtc/mc146818rtc.c
@@ -912,6 +912,11 @@ static void rtc_realizefn(DeviceState *dev, Error **errp)
         s->base_year = 0;
     }
 
+    if (s->isairq >= ISA_NUM_IRQS) {
+        error_setg(errp, "Maximum value for \"irq\" is: %u", ISA_NUM_IRQS - 1);
+        return;
+    }
+
     rtc_set_date_from_host(isadev);
 
     switch (s->lost_tick_policy) {
@@ -957,15 +962,17 @@ ISADevice *mc146818_rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq)
 {
     DeviceState *dev;
     ISADevice *isadev;
+    RTCState *s;
 
     isadev = isa_new(TYPE_MC146818_RTC);
     dev = DEVICE(isadev);
+    s = MC146818_RTC(isadev);
     qdev_prop_set_int32(dev, "base_year", base_year);
     isa_realize_and_unref(isadev, bus, &error_fatal);
     if (intercept_irq) {
         qdev_connect_gpio_out(dev, 0, intercept_irq);
     } else {
-        isa_connect_gpio_out(isadev, 0, RTC_ISA_IRQ);
+        isa_connect_gpio_out(isadev, 0, s->isairq);
     }
 
     object_property_add_alias(qdev_get_machine(), "rtc-time", OBJECT(isadev),
@@ -976,6 +983,7 @@ ISADevice *mc146818_rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq)
 
 static Property mc146818rtc_properties[] = {
     DEFINE_PROP_INT32("base_year", RTCState, base_year, 1980),
+    DEFINE_PROP_UINT8("irq", RTCState, isairq, RTC_ISA_IRQ),
     DEFINE_PROP_LOSTTICKPOLICY("lost_tick_policy", RTCState,
                                lost_tick_policy, LOST_TICK_POLICY_DISCARD),
     DEFINE_PROP_END_OF_LIST(),
@@ -1011,6 +1019,7 @@ static void rtc_reset_hold(Object *obj)
 
 static void rtc_build_aml(ISADevice *isadev, Aml *scope)
 {
+    RTCState *s = MC146818_RTC(isadev);
     Aml *dev;
     Aml *crs;
 
@@ -1021,7 +1030,7 @@ static void rtc_build_aml(ISADevice *isadev, Aml *scope)
     crs = aml_resource_template();
     aml_append(crs, aml_io(AML_DECODE16, RTC_ISA_BASE, RTC_ISA_BASE,
                            0x01, 0x08));
-    aml_append(crs, aml_irq_no_flags(RTC_ISA_IRQ));
+    aml_append(crs, aml_irq_no_flags(s->isairq));
 
     dev = aml_device("RTC");
     aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0B00")));
diff --git a/include/hw/rtc/mc146818rtc.h b/include/hw/rtc/mc146818rtc.h
index 5b45b22924..deef93f89a 100644
--- a/include/hw/rtc/mc146818rtc.h
+++ b/include/hw/rtc/mc146818rtc.h
@@ -25,6 +25,7 @@ struct RTCState {
     MemoryRegion coalesced_io;
     uint8_t cmos_data[128];
     uint8_t cmos_index;
+    uint8_t isairq;
     int32_t base_year;
     uint64_t base_rtc;
     uint64_t last_update;
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 09/13] hw/rtc/m48t59-isa: QOM'ify IRQ number
  2022-03-07 13:43 [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow Philippe Mathieu-Daudé
                   ` (7 preceding siblings ...)
  2022-03-07 13:43 ` [PATCH 08/13] hw/rtc/mc146818rtc: QOM'ify IRQ number Philippe Mathieu-Daudé
@ 2022-03-07 13:43 ` Philippe Mathieu-Daudé
  2022-03-07 13:59   ` Bernhard Beschow
  2022-03-07 13:43 ` [PATCH 10/13] hw/input/pckbd: QOM'ify IRQ numbers Philippe Mathieu-Daudé
                   ` (4 subsequent siblings)
  13 siblings, 1 reply; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2022-03-07 13:43 UTC (permalink / raw)
  To: Bernhard Beschow, qemu-devel; +Cc: Philippe Mathieu-Daudé

From: Bernhard Beschow <shentey@gmail.com>

Exposing the IRQ number as a QOM property not only allows it to be
configurable but also to be printed by standard QOM mechanisms. This allows
isabus_dev_print() to be retired eventually.

Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20220301220037.76555-3-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/rtc/m48t59-isa.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/hw/rtc/m48t59-isa.c b/hw/rtc/m48t59-isa.c
index dc21fb10a5..e9086eada4 100644
--- a/hw/rtc/m48t59-isa.c
+++ b/hw/rtc/m48t59-isa.c
@@ -42,6 +42,7 @@ struct M48txxISAState {
     ISADevice parent_obj;
     M48t59State state;
     uint32_t io_base;
+    uint8_t isairq;
     MemoryRegion io;
 };
 
@@ -79,6 +80,7 @@ static void m48txx_isa_toggle_lock(Nvram *obj, int lock)
 static Property m48t59_isa_properties[] = {
     DEFINE_PROP_INT32("base-year", M48txxISAState, state.base_year, 0),
     DEFINE_PROP_UINT32("iobase", M48txxISAState, io_base, 0x74),
+    DEFINE_PROP_UINT8("irq", M48txxISAState, isairq, 8),
     DEFINE_PROP_END_OF_LIST(),
 };
 
@@ -97,9 +99,14 @@ static void m48t59_isa_realize(DeviceState *dev, Error **errp)
     M48txxISAState *d = M48TXX_ISA(dev);
     M48t59State *s = &d->state;
 
+    if (d->isairq >= ISA_NUM_IRQS) {
+        error_setg(errp, "Maximum value for \"irq\" is: %u", ISA_NUM_IRQS - 1);
+        return;
+    }
+
     s->model = u->info.model;
     s->size = u->info.size;
-    isa_init_irq(isadev, &s->IRQ, 8);
+    isa_init_irq(isadev, &s->IRQ, d->isairq);
     m48t59_realize_common(s, errp);
     memory_region_init_io(&d->io, OBJECT(dev), &m48t59_io_ops, s, "m48t59", 4);
     if (d->io_base != 0) {
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 10/13] hw/input/pckbd: QOM'ify IRQ numbers
  2022-03-07 13:43 [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow Philippe Mathieu-Daudé
                   ` (8 preceding siblings ...)
  2022-03-07 13:43 ` [PATCH 09/13] hw/rtc/m48t59-isa: " Philippe Mathieu-Daudé
@ 2022-03-07 13:43 ` Philippe Mathieu-Daudé
  2022-03-07 13:59   ` Bernhard Beschow
  2022-03-07 13:43 ` [PATCH 11/13] hw/isa/isa-bus: Remove isabus_dev_print() Philippe Mathieu-Daudé
                   ` (3 subsequent siblings)
  13 siblings, 1 reply; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2022-03-07 13:43 UTC (permalink / raw)
  To: Bernhard Beschow, qemu-devel; +Cc: Philippe Mathieu-Daudé

From: Bernhard Beschow <shentey@gmail.com>

Exposing the IRQ numbers as QOM properties not only allows them to be
configurable but also to be printed by standard QOM mechanisms. This
allows isabus_dev_print() to be retired eventually.

Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20220301220037.76555-4-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/input/pckbd.c | 26 ++++++++++++++++++++++----
 1 file changed, 22 insertions(+), 4 deletions(-)

diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c
index baba62f357..eb77e12f6f 100644
--- a/hw/input/pckbd.c
+++ b/hw/input/pckbd.c
@@ -26,6 +26,7 @@
 #include "qemu/error-report.h"
 #include "qemu/log.h"
 #include "qemu/timer.h"
+#include "qapi/error.h"
 #include "hw/isa/isa.h"
 #include "migration/vmstate.h"
 #include "hw/acpi/aml-build.h"
@@ -671,6 +672,8 @@ struct ISAKBDState {
     KBDState kbd;
     bool kbd_throttle;
     MemoryRegion io[2];
+    uint8_t kbd_irq;
+    uint8_t mouse_irq;
 };
 
 void i8042_isa_mouse_fake_event(ISAKBDState *isa)
@@ -734,8 +737,20 @@ static void i8042_realizefn(DeviceState *dev, Error **errp)
     ISAKBDState *isa_s = I8042(dev);
     KBDState *s = &isa_s->kbd;
 
-    isa_init_irq(isadev, &s->irq_kbd, 1);
-    isa_init_irq(isadev, &s->irq_mouse, 12);
+    if (isa_s->kbd_irq >= ISA_NUM_IRQS) {
+        error_setg(errp, "Maximum value for \"kbd-irq\" is: %u",
+                   ISA_NUM_IRQS - 1);
+        return;
+    }
+
+    if (isa_s->mouse_irq >= ISA_NUM_IRQS) {
+        error_setg(errp, "Maximum value for \"mouse-irq\" is: %u",
+                   ISA_NUM_IRQS - 1);
+        return;
+    }
+
+    isa_init_irq(isadev, &s->irq_kbd, isa_s->kbd_irq);
+    isa_init_irq(isadev, &s->irq_mouse, isa_s->mouse_irq);
 
     isa_register_ioport(isadev, isa_s->io + 0, 0x60);
     isa_register_ioport(isadev, isa_s->io + 1, 0x64);
@@ -754,6 +769,7 @@ static void i8042_realizefn(DeviceState *dev, Error **errp)
 
 static void i8042_build_aml(ISADevice *isadev, Aml *scope)
 {
+    ISAKBDState *isa_s = I8042(isadev);
     Aml *kbd;
     Aml *mou;
     Aml *crs;
@@ -761,7 +777,7 @@ static void i8042_build_aml(ISADevice *isadev, Aml *scope)
     crs = aml_resource_template();
     aml_append(crs, aml_io(AML_DECODE16, 0x0060, 0x0060, 0x01, 0x01));
     aml_append(crs, aml_io(AML_DECODE16, 0x0064, 0x0064, 0x01, 0x01));
-    aml_append(crs, aml_irq_no_flags(1));
+    aml_append(crs, aml_irq_no_flags(isa_s->kbd_irq));
 
     kbd = aml_device("KBD");
     aml_append(kbd, aml_name_decl("_HID", aml_eisaid("PNP0303")));
@@ -769,7 +785,7 @@ static void i8042_build_aml(ISADevice *isadev, Aml *scope)
     aml_append(kbd, aml_name_decl("_CRS", crs));
 
     crs = aml_resource_template();
-    aml_append(crs, aml_irq_no_flags(12));
+    aml_append(crs, aml_irq_no_flags(isa_s->mouse_irq));
 
     mou = aml_device("MOU");
     aml_append(mou, aml_name_decl("_HID", aml_eisaid("PNP0F13")));
@@ -783,6 +799,8 @@ static void i8042_build_aml(ISADevice *isadev, Aml *scope)
 static Property i8042_properties[] = {
     DEFINE_PROP_BOOL("extended-state", ISAKBDState, kbd.extended_state, true),
     DEFINE_PROP_BOOL("kbd-throttle", ISAKBDState, kbd_throttle, false),
+    DEFINE_PROP_UINT8("kbd-irq", ISAKBDState, kbd_irq, 1),
+    DEFINE_PROP_UINT8("mouse-irq", ISAKBDState, mouse_irq, 12),
     DEFINE_PROP_END_OF_LIST(),
 };
 
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 11/13] hw/isa/isa-bus: Remove isabus_dev_print()
  2022-03-07 13:43 [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow Philippe Mathieu-Daudé
                   ` (9 preceding siblings ...)
  2022-03-07 13:43 ` [PATCH 10/13] hw/input/pckbd: QOM'ify IRQ numbers Philippe Mathieu-Daudé
@ 2022-03-07 13:43 ` Philippe Mathieu-Daudé
  2022-03-07 14:00   ` Bernhard Beschow
  2022-03-07 13:43 ` [PATCH 12/13] hw/isa: Drop unused attributes from ISADevice Philippe Mathieu-Daudé
                   ` (2 subsequent siblings)
  13 siblings, 1 reply; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2022-03-07 13:43 UTC (permalink / raw)
  To: Bernhard Beschow, qemu-devel; +Cc: Philippe Mathieu-Daudé

From: Bernhard Beschow <shentey@gmail.com>

All isabus_dev_print() did was to print up to two IRQ numbers per
device. This is redundant if the IRQ numbers are present as QOM
properties (see e.g. the modified tests/qemu-iotests/172.out).

Now that the last devices relying on isabus_dev_print() had their IRQ
numbers QOM'ified, the contribution of this function ultimately became
redundant. Remove it.

Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20220301220037.76555-5-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/isa/isa-bus.c           | 16 ----------------
 tests/qemu-iotests/172.out | 26 --------------------------
 2 files changed, 42 deletions(-)

diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
index 6c31398dda..af5add6a26 100644
--- a/hw/isa/isa-bus.c
+++ b/hw/isa/isa-bus.c
@@ -21,21 +21,18 @@
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 #include "qapi/error.h"
-#include "monitor/monitor.h"
 #include "hw/sysbus.h"
 #include "sysemu/sysemu.h"
 #include "hw/isa/isa.h"
 
 static ISABus *isabus;
 
-static void isabus_dev_print(Monitor *mon, DeviceState *dev, int indent);
 static char *isabus_get_fw_dev_path(DeviceState *dev);
 
 static void isa_bus_class_init(ObjectClass *klass, void *data)
 {
     BusClass *k = BUS_CLASS(klass);
 
-    k->print_dev = isabus_dev_print;
     k->get_fw_dev_path = isabus_get_fw_dev_path;
 }
 
@@ -222,19 +219,6 @@ void isa_build_aml(ISABus *bus, Aml *scope)
     }
 }
 
-static void isabus_dev_print(Monitor *mon, DeviceState *dev, int indent)
-{
-    ISADevice *d = ISA_DEVICE(dev);
-
-    if (d->isairq[1] != -1) {
-        monitor_printf(mon, "%*sisa irqs %d,%d\n", indent, "",
-                       d->isairq[0], d->isairq[1]);
-    } else if (d->isairq[0] != -1) {
-        monitor_printf(mon, "%*sisa irq %d\n", indent, "",
-                       d->isairq[0]);
-    }
-}
-
 static void isabus_bridge_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
diff --git a/tests/qemu-iotests/172.out b/tests/qemu-iotests/172.out
index 4cf4d536b4..9479b92185 100644
--- a/tests/qemu-iotests/172.out
+++ b/tests/qemu-iotests/172.out
@@ -15,7 +15,6 @@ Testing:
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -43,7 +42,6 @@ Testing: -fda TEST_DIR/t.qcow2
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -81,7 +79,6 @@ Testing: -fdb TEST_DIR/t.qcow2
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -135,7 +132,6 @@ Testing: -fda TEST_DIR/t.qcow2 -fdb TEST_DIR/t.qcow2.2
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -190,7 +186,6 @@ Testing: -fdb
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -230,7 +225,6 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -268,7 +262,6 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2,index=1
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -322,7 +315,6 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2 -drive if=floppy,file=TEST_DIR/t
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -380,7 +372,6 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -418,7 +409,6 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,unit=1
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -456,7 +446,6 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qco
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -520,7 +509,6 @@ Testing: -fda TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -575,7 +563,6 @@ Testing: -fda TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -630,7 +617,6 @@ Testing: -fdb TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -685,7 +671,6 @@ Testing: -fdb TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -749,7 +734,6 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.q
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -804,7 +788,6 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.q
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -865,7 +848,6 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -global floppy.drive=none0 -device
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -933,7 +915,6 @@ Testing: -device floppy
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -958,7 +939,6 @@ Testing: -device floppy,drive-type=120
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -983,7 +963,6 @@ Testing: -device floppy,drive-type=144
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -1008,7 +987,6 @@ Testing: -device floppy,drive-type=288
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -1036,7 +1014,6 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,drive-t
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -1074,7 +1051,6 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,drive-t
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -1115,7 +1091,6 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,logical
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
@@ -1153,7 +1128,6 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,physica
             fdtypeA = "auto"
             fdtypeB = "auto"
             fallback = "288"
-            isa irq 6
             bus: floppy-bus.0
               type floppy-bus
               dev: floppy, id ""
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 12/13] hw/isa: Drop unused attributes from ISADevice
  2022-03-07 13:43 [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow Philippe Mathieu-Daudé
                   ` (10 preceding siblings ...)
  2022-03-07 13:43 ` [PATCH 11/13] hw/isa/isa-bus: Remove isabus_dev_print() Philippe Mathieu-Daudé
@ 2022-03-07 13:43 ` Philippe Mathieu-Daudé
  2022-03-07 14:01   ` Bernhard Beschow
  2022-03-07 13:43 ` [PATCH 13/13] hw/isa: Inline and remove one-line isa_init_irq() Philippe Mathieu-Daudé
  2022-03-07 14:04 ` [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow Bernhard Beschow
  13 siblings, 1 reply; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2022-03-07 13:43 UTC (permalink / raw)
  To: Bernhard Beschow, qemu-devel; +Cc: Philippe Mathieu-Daudé

From: Bernhard Beschow <shentey@gmail.com>

Now that the last users of ISADevice::isairq[] have been resolved during the
previous commits, it can be removed for good.

Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20220301220037.76555-7-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/isa/isa-bus.c     | 13 -------------
 include/hw/isa/isa.h |  2 --
 2 files changed, 15 deletions(-)

diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
index af5add6a26..c64a14120b 100644
--- a/hw/isa/isa-bus.c
+++ b/hw/isa/isa-bus.c
@@ -87,11 +87,7 @@ qemu_irq isa_get_irq(ISADevice *dev, unsigned isairq)
 
 void isa_init_irq(ISADevice *dev, qemu_irq *p, unsigned isairq)
 {
-    assert(dev->nirqs < ARRAY_SIZE(dev->isairq));
-    assert(isairq < ISA_NUM_IRQS);
-    dev->isairq[dev->nirqs] = isairq;
     *p = isa_get_irq(dev, isairq);
-    dev->nirqs++;
 }
 
 void isa_connect_gpio_out(ISADevice *isadev, int gpioirq, unsigned isairq)
@@ -150,14 +146,6 @@ int isa_register_portio_list(ISADevice *dev,
     return 0;
 }
 
-static void isa_device_init(Object *obj)
-{
-    ISADevice *dev = ISA_DEVICE(obj);
-
-    dev->isairq[0] = -1;
-    dev->isairq[1] = -1;
-}
-
 ISADevice *isa_new(const char *name)
 {
     return ISA_DEVICE(qdev_new(name));
@@ -244,7 +232,6 @@ static const TypeInfo isa_device_type_info = {
     .name = TYPE_ISA_DEVICE,
     .parent = TYPE_DEVICE,
     .instance_size = sizeof(ISADevice),
-    .instance_init = isa_device_init,
     .abstract = true,
     .class_size = sizeof(ISADeviceClass),
     .class_init = isa_device_class_init,
diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
index d4417b34b6..d80cab5b79 100644
--- a/include/hw/isa/isa.h
+++ b/include/hw/isa/isa.h
@@ -83,8 +83,6 @@ struct ISADevice {
     DeviceState parent_obj;
     /*< public >*/
 
-    int8_t isairq[2];      /* -1 = unassigned */
-    int nirqs;
     int ioport_id;
 };
 
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 13/13] hw/isa: Inline and remove one-line isa_init_irq()
  2022-03-07 13:43 [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow Philippe Mathieu-Daudé
                   ` (11 preceding siblings ...)
  2022-03-07 13:43 ` [PATCH 12/13] hw/isa: Drop unused attributes from ISADevice Philippe Mathieu-Daudé
@ 2022-03-07 13:43 ` Philippe Mathieu-Daudé
  2022-03-07 13:54   ` Bernhard Beschow
  2022-03-07 14:04 ` [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow Bernhard Beschow
  13 siblings, 1 reply; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2022-03-07 13:43 UTC (permalink / raw)
  To: Bernhard Beschow, qemu-devel
  Cc: Corey Minyard, Gerd Hoffmann, Philippe Mathieu-Daudé, Stefan Berger

From: Bernhard Beschow <shentey@gmail.com>

isa_init_irq() has become a trivial one-line wrapper for isa_get_irq().
It can therefore be removed.

isa_ipmi_kcs)

Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Stefan Berger <stefanb@linux.ibm.com> (tpm_tis_isa)
Acked-by: Corey Minyard <cminyard@mvista.com> (isa_ipmi_bt,
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Message-Id: <20220301220037.76555-8-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/audio/cs4231a.c     | 2 +-
 hw/audio/gus.c         | 2 +-
 hw/audio/sb16.c        | 2 +-
 hw/block/fdc-isa.c     | 2 +-
 hw/char/parallel.c     | 2 +-
 hw/char/serial-isa.c   | 2 +-
 hw/ide/isa.c           | 2 +-
 hw/input/pckbd.c       | 4 ++--
 hw/ipmi/isa_ipmi_bt.c  | 2 +-
 hw/ipmi/isa_ipmi_kcs.c | 2 +-
 hw/isa/isa-bus.c       | 8 +-------
 hw/isa/piix4.c         | 2 +-
 hw/net/ne2000-isa.c    | 2 +-
 hw/rtc/m48t59-isa.c    | 2 +-
 hw/tpm/tpm_tis_isa.c   | 2 +-
 include/hw/isa/isa.h   | 1 -
 16 files changed, 16 insertions(+), 23 deletions(-)

diff --git a/hw/audio/cs4231a.c b/hw/audio/cs4231a.c
index 7d60ce6f0e..0723e39430 100644
--- a/hw/audio/cs4231a.c
+++ b/hw/audio/cs4231a.c
@@ -677,7 +677,7 @@ static void cs4231a_realizefn (DeviceState *dev, Error **errp)
         return;
     }
 
-    isa_init_irq(d, &s->pic, s->irq);
+    s->pic = isa_get_irq(d, s->irq);
     k = ISADMA_GET_CLASS(s->isa_dma);
     k->register_channel(s->isa_dma, s->dma, cs_dma_read, s);
 
diff --git a/hw/audio/gus.c b/hw/audio/gus.c
index e8719ee117..42f010b671 100644
--- a/hw/audio/gus.c
+++ b/hw/audio/gus.c
@@ -282,7 +282,7 @@ static void gus_realizefn (DeviceState *dev, Error **errp)
     s->emu.himemaddr = s->himem;
     s->emu.gusdatapos = s->emu.himemaddr + 1024 * 1024 + 32;
     s->emu.opaque = s;
-    isa_init_irq (d, &s->pic, s->emu.gusirq);
+    s->pic = isa_get_irq(d, s->emu.gusirq);
 
     AUD_set_active_out (s->voice, 1);
 }
diff --git a/hw/audio/sb16.c b/hw/audio/sb16.c
index 60f1f75e3a..2215386ddb 100644
--- a/hw/audio/sb16.c
+++ b/hw/audio/sb16.c
@@ -1408,7 +1408,7 @@ static void sb16_realizefn (DeviceState *dev, Error **errp)
         return;
     }
 
-    isa_init_irq (isadev, &s->pic, s->irq);
+    s->pic = isa_get_irq(isadev, s->irq);
 
     s->mixer_regs[0x80] = magic_of_irq (s->irq);
     s->mixer_regs[0x81] = (1 << s->dma) | (1 << s->hdma);
diff --git a/hw/block/fdc-isa.c b/hw/block/fdc-isa.c
index ab663dce93..fa20450747 100644
--- a/hw/block/fdc-isa.c
+++ b/hw/block/fdc-isa.c
@@ -94,7 +94,7 @@ static void isabus_fdc_realize(DeviceState *dev, Error **errp)
                              isa->iobase, fdc_portio_list, fdctrl,
                              "fdc");
 
-    isa_init_irq(isadev, &fdctrl->irq, isa->irq);
+    fdctrl->irq = isa_get_irq(isadev, isa->irq);
     fdctrl->dma_chann = isa->dma;
     if (fdctrl->dma_chann != -1) {
         IsaDmaClass *k;
diff --git a/hw/char/parallel.c b/hw/char/parallel.c
index b45e67bfbb..adb9bd9be3 100644
--- a/hw/char/parallel.c
+++ b/hw/char/parallel.c
@@ -553,7 +553,7 @@ static void parallel_isa_realizefn(DeviceState *dev, Error **errp)
     index++;
 
     base = isa->iobase;
-    isa_init_irq(isadev, &s->irq, isa->isairq);
+    s->irq = isa_get_irq(isadev, isa->isairq);
     qemu_register_reset(parallel_reset, s);
 
     qemu_chr_fe_set_handlers(&s->chr, parallel_can_receive, NULL,
diff --git a/hw/char/serial-isa.c b/hw/char/serial-isa.c
index 1b8b303079..7a7ed239cd 100644
--- a/hw/char/serial-isa.c
+++ b/hw/char/serial-isa.c
@@ -75,7 +75,7 @@ static void serial_isa_realizefn(DeviceState *dev, Error **errp)
     }
     index++;
 
-    isa_init_irq(isadev, &s->irq, isa->isairq);
+    s->irq = isa_get_irq(isadev, isa->isairq);
     qdev_realize(DEVICE(s), NULL, errp);
     qdev_set_legacy_instance_id(dev, isa->iobase, 3);
 
diff --git a/hw/ide/isa.c b/hw/ide/isa.c
index 24bbde24c2..8bedbd13f1 100644
--- a/hw/ide/isa.c
+++ b/hw/ide/isa.c
@@ -75,7 +75,7 @@ static void isa_ide_realizefn(DeviceState *dev, Error **errp)
 
     ide_bus_init(&s->bus, sizeof(s->bus), dev, 0, 2);
     ide_init_ioport(&s->bus, isadev, s->iobase, s->iobase2);
-    isa_init_irq(isadev, &s->irq, s->isairq);
+    s->irq = isa_get_irq(isadev, s->isairq);
     ide_init2(&s->bus, s->irq);
     vmstate_register(VMSTATE_IF(dev), 0, &vmstate_ide_isa, s);
     ide_register_restart_cb(&s->bus);
diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c
index eb77e12f6f..1773db0d25 100644
--- a/hw/input/pckbd.c
+++ b/hw/input/pckbd.c
@@ -749,8 +749,8 @@ static void i8042_realizefn(DeviceState *dev, Error **errp)
         return;
     }
 
-    isa_init_irq(isadev, &s->irq_kbd, isa_s->kbd_irq);
-    isa_init_irq(isadev, &s->irq_mouse, isa_s->mouse_irq);
+    s->irq_kbd = isa_get_irq(isadev, isa_s->kbd_irq);
+    s->irq_mouse = isa_get_irq(isadev, isa_s->mouse_irq);
 
     isa_register_ioport(isadev, isa_s->io + 0, 0x60);
     isa_register_ioport(isadev, isa_s->io + 1, 0x64);
diff --git a/hw/ipmi/isa_ipmi_bt.c b/hw/ipmi/isa_ipmi_bt.c
index 02625eb94e..88aa734e9e 100644
--- a/hw/ipmi/isa_ipmi_bt.c
+++ b/hw/ipmi/isa_ipmi_bt.c
@@ -92,7 +92,7 @@ static void isa_ipmi_bt_realize(DeviceState *dev, Error **errp)
     }
 
     if (iib->isairq > 0) {
-        isa_init_irq(isadev, &iib->irq, iib->isairq);
+        iib->irq = isa_get_irq(isadev, iib->isairq);
         iib->bt.use_irq = 1;
         iib->bt.raise_irq = isa_ipmi_bt_raise_irq;
         iib->bt.lower_irq = isa_ipmi_bt_lower_irq;
diff --git a/hw/ipmi/isa_ipmi_kcs.c b/hw/ipmi/isa_ipmi_kcs.c
index 3b23ad08b3..afabb95ebe 100644
--- a/hw/ipmi/isa_ipmi_kcs.c
+++ b/hw/ipmi/isa_ipmi_kcs.c
@@ -91,7 +91,7 @@ static void ipmi_isa_realize(DeviceState *dev, Error **errp)
     }
 
     if (iik->isairq > 0) {
-        isa_init_irq(isadev, &iik->irq, iik->isairq);
+        iik->irq = isa_get_irq(isadev, iik->isairq);
         iik->kcs.use_irq = 1;
         iik->kcs.raise_irq = isa_ipmi_kcs_raise_irq;
         iik->kcs.lower_irq = isa_ipmi_kcs_lower_irq;
diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
index c64a14120b..0ad1c5fd65 100644
--- a/hw/isa/isa-bus.c
+++ b/hw/isa/isa-bus.c
@@ -85,15 +85,9 @@ qemu_irq isa_get_irq(ISADevice *dev, unsigned isairq)
     return isabus->irqs[isairq];
 }
 
-void isa_init_irq(ISADevice *dev, qemu_irq *p, unsigned isairq)
-{
-    *p = isa_get_irq(dev, isairq);
-}
-
 void isa_connect_gpio_out(ISADevice *isadev, int gpioirq, unsigned isairq)
 {
-    qemu_irq irq;
-    isa_init_irq(isadev, &irq, isairq);
+    qemu_irq irq = isa_get_irq(isadev, isairq);
     qdev_connect_gpio_out(DEVICE(isadev), gpioirq, irq);
 }
 
diff --git a/hw/isa/piix4.c b/hw/isa/piix4.c
index fc3c8b3fd1..8607e0ac36 100644
--- a/hw/isa/piix4.c
+++ b/hw/isa/piix4.c
@@ -216,7 +216,7 @@ static void piix4_realize(PCIDevice *dev, Error **errp)
     if (!qdev_realize(DEVICE(&s->rtc), BUS(isa_bus), errp)) {
         return;
     }
-    isa_init_irq(ISA_DEVICE(&s->rtc), &s->rtc.irq, s->rtc.isairq);
+    s->rtc.irq = isa_get_irq(ISA_DEVICE(&s->rtc), s->rtc.isairq);
 }
 
 static void piix4_init(Object *obj)
diff --git a/hw/net/ne2000-isa.c b/hw/net/ne2000-isa.c
index dd6f6e34d3..6ced6775ff 100644
--- a/hw/net/ne2000-isa.c
+++ b/hw/net/ne2000-isa.c
@@ -68,7 +68,7 @@ static void isa_ne2000_realizefn(DeviceState *dev, Error **errp)
     ne2000_setup_io(s, DEVICE(isadev), 0x20);
     isa_register_ioport(isadev, &s->io, isa->iobase);
 
-    isa_init_irq(isadev, &s->irq, isa->isairq);
+    s->irq = isa_get_irq(isadev, isa->isairq);
 
     qemu_macaddr_default_if_unset(&s->c.macaddr);
     ne2000_reset(s);
diff --git a/hw/rtc/m48t59-isa.c b/hw/rtc/m48t59-isa.c
index e9086eada4..e61f7ec370 100644
--- a/hw/rtc/m48t59-isa.c
+++ b/hw/rtc/m48t59-isa.c
@@ -106,7 +106,7 @@ static void m48t59_isa_realize(DeviceState *dev, Error **errp)
 
     s->model = u->info.model;
     s->size = u->info.size;
-    isa_init_irq(isadev, &s->IRQ, d->isairq);
+    s->IRQ = isa_get_irq(isadev, d->isairq);
     m48t59_realize_common(s, errp);
     memory_region_init_io(&d->io, OBJECT(dev), &m48t59_io_ops, s, "m48t59", 4);
     if (d->io_base != 0) {
diff --git a/hw/tpm/tpm_tis_isa.c b/hw/tpm/tpm_tis_isa.c
index 10d8a14f19..3477afd735 100644
--- a/hw/tpm/tpm_tis_isa.c
+++ b/hw/tpm/tpm_tis_isa.c
@@ -127,7 +127,7 @@ static void tpm_tis_isa_realizefn(DeviceState *dev, Error **errp)
         return;
     }
 
-    isa_init_irq(ISA_DEVICE(dev), &s->irq, s->irq_num);
+    s->irq = isa_get_irq(ISA_DEVICE(dev), s->irq_num);
 
     memory_region_add_subregion(isa_address_space(ISA_DEVICE(dev)),
                                 TPM_TIS_ADDR_BASE, &s->mmio);
diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
index d80cab5b79..034d706ba1 100644
--- a/include/hw/isa/isa.h
+++ b/include/hw/isa/isa.h
@@ -90,7 +90,6 @@ ISABus *isa_bus_new(DeviceState *dev, MemoryRegion *address_space,
                     MemoryRegion *address_space_io, Error **errp);
 void isa_bus_irqs(ISABus *bus, qemu_irq *irqs);
 qemu_irq isa_get_irq(ISADevice *dev, unsigned isairq);
-void isa_init_irq(ISADevice *dev, qemu_irq *p, unsigned isairq);
 void isa_connect_gpio_out(ISADevice *isadev, int gpioirq, unsigned isairq);
 void isa_bus_dma(ISABus *bus, IsaDma *dma8, IsaDma *dma16);
 IsaDma *isa_get_dma(ISABus *bus, int nchan);
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 27+ messages in thread

* Re: [PATCH 13/13] hw/isa: Inline and remove one-line isa_init_irq()
  2022-03-07 13:43 ` [PATCH 13/13] hw/isa: Inline and remove one-line isa_init_irq() Philippe Mathieu-Daudé
@ 2022-03-07 13:54   ` Bernhard Beschow
  0 siblings, 0 replies; 27+ messages in thread
From: Bernhard Beschow @ 2022-03-07 13:54 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel
  Cc: Corey Minyard, Gerd Hoffmann, Philippe Mathieu-Daudé, Stefan Berger

Am 7. März 2022 13:43:53 UTC schrieb "Philippe Mathieu-Daudé" <philippe.mathieu.daude@gmail.com>:
>From: Bernhard Beschow <shentey@gmail.com>
>
>isa_init_irq() has become a trivial one-line wrapper for isa_get_irq().
>It can therefore be removed.
>
>isa_ipmi_kcs)
>
>Signed-off-by: Bernhard Beschow <shentey@gmail.com>
>Reviewed-by: Stefan Berger <stefanb@linux.ibm.com> (tpm_tis_isa)
>Acked-by: Corey Minyard <cminyard@mvista.com> (isa_ipmi_bt,
>Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>Acked-by: Gerd Hoffmann <kraxel@redhat.com>
>Message-Id: <20220301220037.76555-8-shentey@gmail.com>
>Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

Reviewed-by: Bernhard Beschow <shentey@gmail.com>

>---
> hw/audio/cs4231a.c     | 2 +-
> hw/audio/gus.c         | 2 +-
> hw/audio/sb16.c        | 2 +-
> hw/block/fdc-isa.c     | 2 +-
> hw/char/parallel.c     | 2 +-
> hw/char/serial-isa.c   | 2 +-
> hw/ide/isa.c           | 2 +-
> hw/input/pckbd.c       | 4 ++--
> hw/ipmi/isa_ipmi_bt.c  | 2 +-
> hw/ipmi/isa_ipmi_kcs.c | 2 +-
> hw/isa/isa-bus.c       | 8 +-------
> hw/isa/piix4.c         | 2 +-
> hw/net/ne2000-isa.c    | 2 +-
> hw/rtc/m48t59-isa.c    | 2 +-
> hw/tpm/tpm_tis_isa.c   | 2 +-
> include/hw/isa/isa.h   | 1 -
> 16 files changed, 16 insertions(+), 23 deletions(-)

These numbers look right, i.e. the patch looks complete.

Best regards,
Bernhard

>
>diff --git a/hw/audio/cs4231a.c b/hw/audio/cs4231a.c
>index 7d60ce6f0e..0723e39430 100644
>--- a/hw/audio/cs4231a.c
>+++ b/hw/audio/cs4231a.c
>@@ -677,7 +677,7 @@ static void cs4231a_realizefn (DeviceState *dev, Error **errp)
>         return;
>     }
> 
>-    isa_init_irq(d, &s->pic, s->irq);
>+    s->pic = isa_get_irq(d, s->irq);
>     k = ISADMA_GET_CLASS(s->isa_dma);
>     k->register_channel(s->isa_dma, s->dma, cs_dma_read, s);
> 
>diff --git a/hw/audio/gus.c b/hw/audio/gus.c
>index e8719ee117..42f010b671 100644
>--- a/hw/audio/gus.c
>+++ b/hw/audio/gus.c
>@@ -282,7 +282,7 @@ static void gus_realizefn (DeviceState *dev, Error **errp)
>     s->emu.himemaddr = s->himem;
>     s->emu.gusdatapos = s->emu.himemaddr + 1024 * 1024 + 32;
>     s->emu.opaque = s;
>-    isa_init_irq (d, &s->pic, s->emu.gusirq);
>+    s->pic = isa_get_irq(d, s->emu.gusirq);
> 
>     AUD_set_active_out (s->voice, 1);
> }
>diff --git a/hw/audio/sb16.c b/hw/audio/sb16.c
>index 60f1f75e3a..2215386ddb 100644
>--- a/hw/audio/sb16.c
>+++ b/hw/audio/sb16.c
>@@ -1408,7 +1408,7 @@ static void sb16_realizefn (DeviceState *dev, Error **errp)
>         return;
>     }
> 
>-    isa_init_irq (isadev, &s->pic, s->irq);
>+    s->pic = isa_get_irq(isadev, s->irq);
> 
>     s->mixer_regs[0x80] = magic_of_irq (s->irq);
>     s->mixer_regs[0x81] = (1 << s->dma) | (1 << s->hdma);
>diff --git a/hw/block/fdc-isa.c b/hw/block/fdc-isa.c
>index ab663dce93..fa20450747 100644
>--- a/hw/block/fdc-isa.c
>+++ b/hw/block/fdc-isa.c
>@@ -94,7 +94,7 @@ static void isabus_fdc_realize(DeviceState *dev, Error **errp)
>                              isa->iobase, fdc_portio_list, fdctrl,
>                              "fdc");
> 
>-    isa_init_irq(isadev, &fdctrl->irq, isa->irq);
>+    fdctrl->irq = isa_get_irq(isadev, isa->irq);
>     fdctrl->dma_chann = isa->dma;
>     if (fdctrl->dma_chann != -1) {
>         IsaDmaClass *k;
>diff --git a/hw/char/parallel.c b/hw/char/parallel.c
>index b45e67bfbb..adb9bd9be3 100644
>--- a/hw/char/parallel.c
>+++ b/hw/char/parallel.c
>@@ -553,7 +553,7 @@ static void parallel_isa_realizefn(DeviceState *dev, Error **errp)
>     index++;
> 
>     base = isa->iobase;
>-    isa_init_irq(isadev, &s->irq, isa->isairq);
>+    s->irq = isa_get_irq(isadev, isa->isairq);
>     qemu_register_reset(parallel_reset, s);
> 
>     qemu_chr_fe_set_handlers(&s->chr, parallel_can_receive, NULL,
>diff --git a/hw/char/serial-isa.c b/hw/char/serial-isa.c
>index 1b8b303079..7a7ed239cd 100644
>--- a/hw/char/serial-isa.c
>+++ b/hw/char/serial-isa.c
>@@ -75,7 +75,7 @@ static void serial_isa_realizefn(DeviceState *dev, Error **errp)
>     }
>     index++;
> 
>-    isa_init_irq(isadev, &s->irq, isa->isairq);
>+    s->irq = isa_get_irq(isadev, isa->isairq);
>     qdev_realize(DEVICE(s), NULL, errp);
>     qdev_set_legacy_instance_id(dev, isa->iobase, 3);
> 
>diff --git a/hw/ide/isa.c b/hw/ide/isa.c
>index 24bbde24c2..8bedbd13f1 100644
>--- a/hw/ide/isa.c
>+++ b/hw/ide/isa.c
>@@ -75,7 +75,7 @@ static void isa_ide_realizefn(DeviceState *dev, Error **errp)
> 
>     ide_bus_init(&s->bus, sizeof(s->bus), dev, 0, 2);
>     ide_init_ioport(&s->bus, isadev, s->iobase, s->iobase2);
>-    isa_init_irq(isadev, &s->irq, s->isairq);
>+    s->irq = isa_get_irq(isadev, s->isairq);
>     ide_init2(&s->bus, s->irq);
>     vmstate_register(VMSTATE_IF(dev), 0, &vmstate_ide_isa, s);
>     ide_register_restart_cb(&s->bus);
>diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c
>index eb77e12f6f..1773db0d25 100644
>--- a/hw/input/pckbd.c
>+++ b/hw/input/pckbd.c
>@@ -749,8 +749,8 @@ static void i8042_realizefn(DeviceState *dev, Error **errp)
>         return;
>     }
> 
>-    isa_init_irq(isadev, &s->irq_kbd, isa_s->kbd_irq);
>-    isa_init_irq(isadev, &s->irq_mouse, isa_s->mouse_irq);
>+    s->irq_kbd = isa_get_irq(isadev, isa_s->kbd_irq);
>+    s->irq_mouse = isa_get_irq(isadev, isa_s->mouse_irq);
> 
>     isa_register_ioport(isadev, isa_s->io + 0, 0x60);
>     isa_register_ioport(isadev, isa_s->io + 1, 0x64);
>diff --git a/hw/ipmi/isa_ipmi_bt.c b/hw/ipmi/isa_ipmi_bt.c
>index 02625eb94e..88aa734e9e 100644
>--- a/hw/ipmi/isa_ipmi_bt.c
>+++ b/hw/ipmi/isa_ipmi_bt.c
>@@ -92,7 +92,7 @@ static void isa_ipmi_bt_realize(DeviceState *dev, Error **errp)
>     }
> 
>     if (iib->isairq > 0) {
>-        isa_init_irq(isadev, &iib->irq, iib->isairq);
>+        iib->irq = isa_get_irq(isadev, iib->isairq);
>         iib->bt.use_irq = 1;
>         iib->bt.raise_irq = isa_ipmi_bt_raise_irq;
>         iib->bt.lower_irq = isa_ipmi_bt_lower_irq;
>diff --git a/hw/ipmi/isa_ipmi_kcs.c b/hw/ipmi/isa_ipmi_kcs.c
>index 3b23ad08b3..afabb95ebe 100644
>--- a/hw/ipmi/isa_ipmi_kcs.c
>+++ b/hw/ipmi/isa_ipmi_kcs.c
>@@ -91,7 +91,7 @@ static void ipmi_isa_realize(DeviceState *dev, Error **errp)
>     }
> 
>     if (iik->isairq > 0) {
>-        isa_init_irq(isadev, &iik->irq, iik->isairq);
>+        iik->irq = isa_get_irq(isadev, iik->isairq);
>         iik->kcs.use_irq = 1;
>         iik->kcs.raise_irq = isa_ipmi_kcs_raise_irq;
>         iik->kcs.lower_irq = isa_ipmi_kcs_lower_irq;
>diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
>index c64a14120b..0ad1c5fd65 100644
>--- a/hw/isa/isa-bus.c
>+++ b/hw/isa/isa-bus.c
>@@ -85,15 +85,9 @@ qemu_irq isa_get_irq(ISADevice *dev, unsigned isairq)
>     return isabus->irqs[isairq];
> }
> 
>-void isa_init_irq(ISADevice *dev, qemu_irq *p, unsigned isairq)
>-{
>-    *p = isa_get_irq(dev, isairq);
>-}
>-
> void isa_connect_gpio_out(ISADevice *isadev, int gpioirq, unsigned isairq)
> {
>-    qemu_irq irq;
>-    isa_init_irq(isadev, &irq, isairq);
>+    qemu_irq irq = isa_get_irq(isadev, isairq);
>     qdev_connect_gpio_out(DEVICE(isadev), gpioirq, irq);
> }
> 
>diff --git a/hw/isa/piix4.c b/hw/isa/piix4.c
>index fc3c8b3fd1..8607e0ac36 100644
>--- a/hw/isa/piix4.c
>+++ b/hw/isa/piix4.c
>@@ -216,7 +216,7 @@ static void piix4_realize(PCIDevice *dev, Error **errp)
>     if (!qdev_realize(DEVICE(&s->rtc), BUS(isa_bus), errp)) {
>         return;
>     }
>-    isa_init_irq(ISA_DEVICE(&s->rtc), &s->rtc.irq, s->rtc.isairq);
>+    s->rtc.irq = isa_get_irq(ISA_DEVICE(&s->rtc), s->rtc.isairq);
> }
> 
> static void piix4_init(Object *obj)
>diff --git a/hw/net/ne2000-isa.c b/hw/net/ne2000-isa.c
>index dd6f6e34d3..6ced6775ff 100644
>--- a/hw/net/ne2000-isa.c
>+++ b/hw/net/ne2000-isa.c
>@@ -68,7 +68,7 @@ static void isa_ne2000_realizefn(DeviceState *dev, Error **errp)
>     ne2000_setup_io(s, DEVICE(isadev), 0x20);
>     isa_register_ioport(isadev, &s->io, isa->iobase);
> 
>-    isa_init_irq(isadev, &s->irq, isa->isairq);
>+    s->irq = isa_get_irq(isadev, isa->isairq);
> 
>     qemu_macaddr_default_if_unset(&s->c.macaddr);
>     ne2000_reset(s);
>diff --git a/hw/rtc/m48t59-isa.c b/hw/rtc/m48t59-isa.c
>index e9086eada4..e61f7ec370 100644
>--- a/hw/rtc/m48t59-isa.c
>+++ b/hw/rtc/m48t59-isa.c
>@@ -106,7 +106,7 @@ static void m48t59_isa_realize(DeviceState *dev, Error **errp)
> 
>     s->model = u->info.model;
>     s->size = u->info.size;
>-    isa_init_irq(isadev, &s->IRQ, d->isairq);
>+    s->IRQ = isa_get_irq(isadev, d->isairq);
>     m48t59_realize_common(s, errp);
>     memory_region_init_io(&d->io, OBJECT(dev), &m48t59_io_ops, s, "m48t59", 4);
>     if (d->io_base != 0) {
>diff --git a/hw/tpm/tpm_tis_isa.c b/hw/tpm/tpm_tis_isa.c
>index 10d8a14f19..3477afd735 100644
>--- a/hw/tpm/tpm_tis_isa.c
>+++ b/hw/tpm/tpm_tis_isa.c
>@@ -127,7 +127,7 @@ static void tpm_tis_isa_realizefn(DeviceState *dev, Error **errp)
>         return;
>     }
> 
>-    isa_init_irq(ISA_DEVICE(dev), &s->irq, s->irq_num);
>+    s->irq = isa_get_irq(ISA_DEVICE(dev), s->irq_num);
> 
>     memory_region_add_subregion(isa_address_space(ISA_DEVICE(dev)),
>                                 TPM_TIS_ADDR_BASE, &s->mmio);
>diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
>index d80cab5b79..034d706ba1 100644
>--- a/include/hw/isa/isa.h
>+++ b/include/hw/isa/isa.h
>@@ -90,7 +90,6 @@ ISABus *isa_bus_new(DeviceState *dev, MemoryRegion *address_space,
>                     MemoryRegion *address_space_io, Error **errp);
> void isa_bus_irqs(ISABus *bus, qemu_irq *irqs);
> qemu_irq isa_get_irq(ISADevice *dev, unsigned isairq);
>-void isa_init_irq(ISADevice *dev, qemu_irq *p, unsigned isairq);
> void isa_connect_gpio_out(ISADevice *isadev, int gpioirq, unsigned isairq);
> void isa_bus_dma(ISABus *bus, IsaDma *dma8, IsaDma *dma16);
> IsaDma *isa_get_dma(ISABus *bus, int nchan);



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 08/13] hw/rtc/mc146818rtc: QOM'ify IRQ number
  2022-03-07 13:43 ` [PATCH 08/13] hw/rtc/mc146818rtc: QOM'ify IRQ number Philippe Mathieu-Daudé
@ 2022-03-07 13:58   ` Bernhard Beschow
  0 siblings, 0 replies; 27+ messages in thread
From: Bernhard Beschow @ 2022-03-07 13:58 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Philippe Mathieu-Daudé

Am 7. März 2022 13:43:48 UTC schrieb "Philippe Mathieu-Daudé" <philippe.mathieu.daude@gmail.com>:
>From: Bernhard Beschow <shentey@gmail.com>
>
>Exposing the IRQ number as a QOM property not only allows it to be
>configurable but also to be displayed in HMP:
>
>Before:
>
>(qemu) info qtree
>       ...
>          dev: mc146818rtc, id ""
>            gpio-out "" 1
>            base_year = 0 (0x0)
>            lost_tick_policy = "discard"
>
>After:
>
>          dev: mc146818rtc, id ""
>            gpio-out "" 1
>            base_year = 0 (0x0)
>            irq = 8 (0x8)
>            lost_tick_policy = "discard"
>
>The reason the IRQ number didn's show up before is that this device does not
>call isa_init_irq().
>
>Signed-off-by: Bernhard Beschow <shentey@gmail.com>
>Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>Message-Id: <20220301220037.76555-2-shentey@gmail.com>
>Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>---
> hw/isa/piix4.c               |  2 +-
> hw/rtc/mc146818rtc.c         | 13 +++++++++++--
> include/hw/rtc/mc146818rtc.h |  1 +
> 3 files changed, 13 insertions(+), 3 deletions(-)
>
>diff --git a/hw/isa/piix4.c b/hw/isa/piix4.c
>index f876c71750..fc3c8b3fd1 100644
>--- a/hw/isa/piix4.c
>+++ b/hw/isa/piix4.c
>@@ -216,7 +216,7 @@ static void piix4_realize(PCIDevice *dev, Error **errp)
>     if (!qdev_realize(DEVICE(&s->rtc), BUS(isa_bus), errp)) {
>         return;
>     }
>-    isa_init_irq(ISA_DEVICE(&s->rtc), &s->rtc.irq, RTC_ISA_IRQ);
>+    isa_init_irq(ISA_DEVICE(&s->rtc), &s->rtc.irq, s->rtc.isairq);
> }
> 
> static void piix4_init(Object *obj)
>diff --git a/hw/rtc/mc146818rtc.c b/hw/rtc/mc146818rtc.c
>index ac9a60c90e..f235c2ddbe 100644
>--- a/hw/rtc/mc146818rtc.c
>+++ b/hw/rtc/mc146818rtc.c
>@@ -912,6 +912,11 @@ static void rtc_realizefn(DeviceState *dev, Error **errp)
>         s->base_year = 0;
>     }
> 
>+    if (s->isairq >= ISA_NUM_IRQS) {
>+        error_setg(errp, "Maximum value for \"irq\" is: %u", ISA_NUM_IRQS - 1);
>+        return;
>+    }
>+
>     rtc_set_date_from_host(isadev);
> 
>     switch (s->lost_tick_policy) {
>@@ -957,15 +962,17 @@ ISADevice *mc146818_rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq)
> {
>     DeviceState *dev;
>     ISADevice *isadev;
>+    RTCState *s;
> 
>     isadev = isa_new(TYPE_MC146818_RTC);
>     dev = DEVICE(isadev);
>+    s = MC146818_RTC(isadev);
>     qdev_prop_set_int32(dev, "base_year", base_year);
>     isa_realize_and_unref(isadev, bus, &error_fatal);
>     if (intercept_irq) {
>         qdev_connect_gpio_out(dev, 0, intercept_irq);
>     } else {
>-        isa_connect_gpio_out(isadev, 0, RTC_ISA_IRQ);
>+        isa_connect_gpio_out(isadev, 0, s->isairq);
>     }
> 
>     object_property_add_alias(qdev_get_machine(), "rtc-time", OBJECT(isadev),
>@@ -976,6 +983,7 @@ ISADevice *mc146818_rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq)
> 
> static Property mc146818rtc_properties[] = {
>     DEFINE_PROP_INT32("base_year", RTCState, base_year, 1980),
>+    DEFINE_PROP_UINT8("irq", RTCState, isairq, RTC_ISA_IRQ),
>     DEFINE_PROP_LOSTTICKPOLICY("lost_tick_policy", RTCState,
>                                lost_tick_policy, LOST_TICK_POLICY_DISCARD),
>     DEFINE_PROP_END_OF_LIST(),
>@@ -1011,6 +1019,7 @@ static void rtc_reset_hold(Object *obj)
> 
> static void rtc_build_aml(ISADevice *isadev, Aml *scope)
> {
>+    RTCState *s = MC146818_RTC(isadev);
>     Aml *dev;
>     Aml *crs;
> 
>@@ -1021,7 +1030,7 @@ static void rtc_build_aml(ISADevice *isadev, Aml *scope)
>     crs = aml_resource_template();
>     aml_append(crs, aml_io(AML_DECODE16, RTC_ISA_BASE, RTC_ISA_BASE,
>                            0x01, 0x08));
>-    aml_append(crs, aml_irq_no_flags(RTC_ISA_IRQ));
>+    aml_append(crs, aml_irq_no_flags(s->isairq));
> 
>     dev = aml_device("RTC");
>     aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0B00")));
>diff --git a/include/hw/rtc/mc146818rtc.h b/include/hw/rtc/mc146818rtc.h
>index 5b45b22924..deef93f89a 100644
>--- a/include/hw/rtc/mc146818rtc.h
>+++ b/include/hw/rtc/mc146818rtc.h
>@@ -25,6 +25,7 @@ struct RTCState {
>     MemoryRegion coalesced_io;
>     uint8_t cmos_data[128];
>     uint8_t cmos_index;
>+    uint8_t isairq;
>     int32_t base_year;
>     uint64_t base_rtc;
>     uint64_t last_update;

Reviewed-by: Bernhard Beschow <shentey@gmail.com>



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 09/13] hw/rtc/m48t59-isa: QOM'ify IRQ number
  2022-03-07 13:43 ` [PATCH 09/13] hw/rtc/m48t59-isa: " Philippe Mathieu-Daudé
@ 2022-03-07 13:59   ` Bernhard Beschow
  0 siblings, 0 replies; 27+ messages in thread
From: Bernhard Beschow @ 2022-03-07 13:59 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Philippe Mathieu-Daudé

Am 7. März 2022 13:43:49 UTC schrieb "Philippe Mathieu-Daudé" <philippe.mathieu.daude@gmail.com>:
>From: Bernhard Beschow <shentey@gmail.com>
>
>Exposing the IRQ number as a QOM property not only allows it to be
>configurable but also to be printed by standard QOM mechanisms. This allows
>isabus_dev_print() to be retired eventually.
>
>Signed-off-by: Bernhard Beschow <shentey@gmail.com>
>Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>Message-Id: <20220301220037.76555-3-shentey@gmail.com>
>Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>---
> hw/rtc/m48t59-isa.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
>diff --git a/hw/rtc/m48t59-isa.c b/hw/rtc/m48t59-isa.c
>index dc21fb10a5..e9086eada4 100644
>--- a/hw/rtc/m48t59-isa.c
>+++ b/hw/rtc/m48t59-isa.c
>@@ -42,6 +42,7 @@ struct M48txxISAState {
>     ISADevice parent_obj;
>     M48t59State state;
>     uint32_t io_base;
>+    uint8_t isairq;
>     MemoryRegion io;
> };
> 
>@@ -79,6 +80,7 @@ static void m48txx_isa_toggle_lock(Nvram *obj, int lock)
> static Property m48t59_isa_properties[] = {
>     DEFINE_PROP_INT32("base-year", M48txxISAState, state.base_year, 0),
>     DEFINE_PROP_UINT32("iobase", M48txxISAState, io_base, 0x74),
>+    DEFINE_PROP_UINT8("irq", M48txxISAState, isairq, 8),
>     DEFINE_PROP_END_OF_LIST(),
> };
> 
>@@ -97,9 +99,14 @@ static void m48t59_isa_realize(DeviceState *dev, Error **errp)
>     M48txxISAState *d = M48TXX_ISA(dev);
>     M48t59State *s = &d->state;
> 
>+    if (d->isairq >= ISA_NUM_IRQS) {
>+        error_setg(errp, "Maximum value for \"irq\" is: %u", ISA_NUM_IRQS - 1);
>+        return;
>+    }
>+
>     s->model = u->info.model;
>     s->size = u->info.size;
>-    isa_init_irq(isadev, &s->IRQ, 8);
>+    isa_init_irq(isadev, &s->IRQ, d->isairq);
>     m48t59_realize_common(s, errp);
>     memory_region_init_io(&d->io, OBJECT(dev), &m48t59_io_ops, s, "m48t59", 4);
>     if (d->io_base != 0) {

Reviewed-by: Bernhard Beschow <shentey@gmail.com>



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 10/13] hw/input/pckbd: QOM'ify IRQ numbers
  2022-03-07 13:43 ` [PATCH 10/13] hw/input/pckbd: QOM'ify IRQ numbers Philippe Mathieu-Daudé
@ 2022-03-07 13:59   ` Bernhard Beschow
  0 siblings, 0 replies; 27+ messages in thread
From: Bernhard Beschow @ 2022-03-07 13:59 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Philippe Mathieu-Daudé

Am 7. März 2022 13:43:50 UTC schrieb "Philippe Mathieu-Daudé" <philippe.mathieu.daude@gmail.com>:
>From: Bernhard Beschow <shentey@gmail.com>
>
>Exposing the IRQ numbers as QOM properties not only allows them to be
>configurable but also to be printed by standard QOM mechanisms. This
>allows isabus_dev_print() to be retired eventually.
>
>Signed-off-by: Bernhard Beschow <shentey@gmail.com>
>Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>Message-Id: <20220301220037.76555-4-shentey@gmail.com>
>Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>---
> hw/input/pckbd.c | 26 ++++++++++++++++++++++----
> 1 file changed, 22 insertions(+), 4 deletions(-)
>
>diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c
>index baba62f357..eb77e12f6f 100644
>--- a/hw/input/pckbd.c
>+++ b/hw/input/pckbd.c
>@@ -26,6 +26,7 @@
> #include "qemu/error-report.h"
> #include "qemu/log.h"
> #include "qemu/timer.h"
>+#include "qapi/error.h"
> #include "hw/isa/isa.h"
> #include "migration/vmstate.h"
> #include "hw/acpi/aml-build.h"
>@@ -671,6 +672,8 @@ struct ISAKBDState {
>     KBDState kbd;
>     bool kbd_throttle;
>     MemoryRegion io[2];
>+    uint8_t kbd_irq;
>+    uint8_t mouse_irq;
> };
> 
> void i8042_isa_mouse_fake_event(ISAKBDState *isa)
>@@ -734,8 +737,20 @@ static void i8042_realizefn(DeviceState *dev, Error **errp)
>     ISAKBDState *isa_s = I8042(dev);
>     KBDState *s = &isa_s->kbd;
> 
>-    isa_init_irq(isadev, &s->irq_kbd, 1);
>-    isa_init_irq(isadev, &s->irq_mouse, 12);
>+    if (isa_s->kbd_irq >= ISA_NUM_IRQS) {
>+        error_setg(errp, "Maximum value for \"kbd-irq\" is: %u",
>+                   ISA_NUM_IRQS - 1);
>+        return;
>+    }
>+
>+    if (isa_s->mouse_irq >= ISA_NUM_IRQS) {
>+        error_setg(errp, "Maximum value for \"mouse-irq\" is: %u",
>+                   ISA_NUM_IRQS - 1);
>+        return;
>+    }
>+
>+    isa_init_irq(isadev, &s->irq_kbd, isa_s->kbd_irq);
>+    isa_init_irq(isadev, &s->irq_mouse, isa_s->mouse_irq);
> 
>     isa_register_ioport(isadev, isa_s->io + 0, 0x60);
>     isa_register_ioport(isadev, isa_s->io + 1, 0x64);
>@@ -754,6 +769,7 @@ static void i8042_realizefn(DeviceState *dev, Error **errp)
> 
> static void i8042_build_aml(ISADevice *isadev, Aml *scope)
> {
>+    ISAKBDState *isa_s = I8042(isadev);
>     Aml *kbd;
>     Aml *mou;
>     Aml *crs;
>@@ -761,7 +777,7 @@ static void i8042_build_aml(ISADevice *isadev, Aml *scope)
>     crs = aml_resource_template();
>     aml_append(crs, aml_io(AML_DECODE16, 0x0060, 0x0060, 0x01, 0x01));
>     aml_append(crs, aml_io(AML_DECODE16, 0x0064, 0x0064, 0x01, 0x01));
>-    aml_append(crs, aml_irq_no_flags(1));
>+    aml_append(crs, aml_irq_no_flags(isa_s->kbd_irq));
> 
>     kbd = aml_device("KBD");
>     aml_append(kbd, aml_name_decl("_HID", aml_eisaid("PNP0303")));
>@@ -769,7 +785,7 @@ static void i8042_build_aml(ISADevice *isadev, Aml *scope)
>     aml_append(kbd, aml_name_decl("_CRS", crs));
> 
>     crs = aml_resource_template();
>-    aml_append(crs, aml_irq_no_flags(12));
>+    aml_append(crs, aml_irq_no_flags(isa_s->mouse_irq));
> 
>     mou = aml_device("MOU");
>     aml_append(mou, aml_name_decl("_HID", aml_eisaid("PNP0F13")));
>@@ -783,6 +799,8 @@ static void i8042_build_aml(ISADevice *isadev, Aml *scope)
> static Property i8042_properties[] = {
>     DEFINE_PROP_BOOL("extended-state", ISAKBDState, kbd.extended_state, true),
>     DEFINE_PROP_BOOL("kbd-throttle", ISAKBDState, kbd_throttle, false),
>+    DEFINE_PROP_UINT8("kbd-irq", ISAKBDState, kbd_irq, 1),
>+    DEFINE_PROP_UINT8("mouse-irq", ISAKBDState, mouse_irq, 12),
>     DEFINE_PROP_END_OF_LIST(),
> };
> 

Reviewed-by: Bernhard Beschow <shentey@gmail.com>



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 11/13] hw/isa/isa-bus: Remove isabus_dev_print()
  2022-03-07 13:43 ` [PATCH 11/13] hw/isa/isa-bus: Remove isabus_dev_print() Philippe Mathieu-Daudé
@ 2022-03-07 14:00   ` Bernhard Beschow
  0 siblings, 0 replies; 27+ messages in thread
From: Bernhard Beschow @ 2022-03-07 14:00 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Philippe Mathieu-Daudé

Am 7. März 2022 13:43:51 UTC schrieb "Philippe Mathieu-Daudé" <philippe.mathieu.daude@gmail.com>:
>From: Bernhard Beschow <shentey@gmail.com>
>
>All isabus_dev_print() did was to print up to two IRQ numbers per
>device. This is redundant if the IRQ numbers are present as QOM
>properties (see e.g. the modified tests/qemu-iotests/172.out).
>
>Now that the last devices relying on isabus_dev_print() had their IRQ
>numbers QOM'ified, the contribution of this function ultimately became
>redundant. Remove it.
>
>Signed-off-by: Bernhard Beschow <shentey@gmail.com>
>Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>Message-Id: <20220301220037.76555-5-shentey@gmail.com>
>Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>---
> hw/isa/isa-bus.c           | 16 ----------------
> tests/qemu-iotests/172.out | 26 --------------------------
> 2 files changed, 42 deletions(-)
>
>diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
>index 6c31398dda..af5add6a26 100644
>--- a/hw/isa/isa-bus.c
>+++ b/hw/isa/isa-bus.c
>@@ -21,21 +21,18 @@
> #include "qemu/error-report.h"
> #include "qemu/module.h"
> #include "qapi/error.h"
>-#include "monitor/monitor.h"
> #include "hw/sysbus.h"
> #include "sysemu/sysemu.h"
> #include "hw/isa/isa.h"
> 
> static ISABus *isabus;
> 
>-static void isabus_dev_print(Monitor *mon, DeviceState *dev, int indent);
> static char *isabus_get_fw_dev_path(DeviceState *dev);
> 
> static void isa_bus_class_init(ObjectClass *klass, void *data)
> {
>     BusClass *k = BUS_CLASS(klass);
> 
>-    k->print_dev = isabus_dev_print;
>     k->get_fw_dev_path = isabus_get_fw_dev_path;
> }
> 
>@@ -222,19 +219,6 @@ void isa_build_aml(ISABus *bus, Aml *scope)
>     }
> }
> 
>-static void isabus_dev_print(Monitor *mon, DeviceState *dev, int indent)
>-{
>-    ISADevice *d = ISA_DEVICE(dev);
>-
>-    if (d->isairq[1] != -1) {
>-        monitor_printf(mon, "%*sisa irqs %d,%d\n", indent, "",
>-                       d->isairq[0], d->isairq[1]);
>-    } else if (d->isairq[0] != -1) {
>-        monitor_printf(mon, "%*sisa irq %d\n", indent, "",
>-                       d->isairq[0]);
>-    }
>-}
>-
> static void isabus_bridge_class_init(ObjectClass *klass, void *data)
> {
>     DeviceClass *dc = DEVICE_CLASS(klass);
>diff --git a/tests/qemu-iotests/172.out b/tests/qemu-iotests/172.out
>index 4cf4d536b4..9479b92185 100644
>--- a/tests/qemu-iotests/172.out
>+++ b/tests/qemu-iotests/172.out
>@@ -15,7 +15,6 @@ Testing:
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -43,7 +42,6 @@ Testing: -fda TEST_DIR/t.qcow2
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -81,7 +79,6 @@ Testing: -fdb TEST_DIR/t.qcow2
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -135,7 +132,6 @@ Testing: -fda TEST_DIR/t.qcow2 -fdb TEST_DIR/t.qcow2.2
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -190,7 +186,6 @@ Testing: -fdb
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -230,7 +225,6 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -268,7 +262,6 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2,index=1
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -322,7 +315,6 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2 -drive if=floppy,file=TEST_DIR/t
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -380,7 +372,6 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -418,7 +409,6 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,unit=1
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -456,7 +446,6 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qco
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -520,7 +509,6 @@ Testing: -fda TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -575,7 +563,6 @@ Testing: -fda TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -630,7 +617,6 @@ Testing: -fdb TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -685,7 +671,6 @@ Testing: -fdb TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -749,7 +734,6 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.q
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -804,7 +788,6 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.q
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -865,7 +848,6 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -global floppy.drive=none0 -device
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -933,7 +915,6 @@ Testing: -device floppy
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -958,7 +939,6 @@ Testing: -device floppy,drive-type=120
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -983,7 +963,6 @@ Testing: -device floppy,drive-type=144
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -1008,7 +987,6 @@ Testing: -device floppy,drive-type=288
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -1036,7 +1014,6 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,drive-t
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -1074,7 +1051,6 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,drive-t
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -1115,7 +1091,6 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,logical
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""
>@@ -1153,7 +1128,6 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,physica
>             fdtypeA = "auto"
>             fdtypeB = "auto"
>             fallback = "288"
>-            isa irq 6
>             bus: floppy-bus.0
>               type floppy-bus
>               dev: floppy, id ""

Reviewed-by: Bernhard Beschow <shentey@gmail.com>



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 12/13] hw/isa: Drop unused attributes from ISADevice
  2022-03-07 13:43 ` [PATCH 12/13] hw/isa: Drop unused attributes from ISADevice Philippe Mathieu-Daudé
@ 2022-03-07 14:01   ` Bernhard Beschow
  0 siblings, 0 replies; 27+ messages in thread
From: Bernhard Beschow @ 2022-03-07 14:01 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Philippe Mathieu-Daudé

Am 7. März 2022 13:43:52 UTC schrieb "Philippe Mathieu-Daudé" <philippe.mathieu.daude@gmail.com>:
>From: Bernhard Beschow <shentey@gmail.com>
>
>Now that the last users of ISADevice::isairq[] have been resolved during the
>previous commits, it can be removed for good.
>
>Signed-off-by: Bernhard Beschow <shentey@gmail.com>
>Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>Message-Id: <20220301220037.76555-7-shentey@gmail.com>
>Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>---
> hw/isa/isa-bus.c     | 13 -------------
> include/hw/isa/isa.h |  2 --
> 2 files changed, 15 deletions(-)
>
>diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
>index af5add6a26..c64a14120b 100644
>--- a/hw/isa/isa-bus.c
>+++ b/hw/isa/isa-bus.c
>@@ -87,11 +87,7 @@ qemu_irq isa_get_irq(ISADevice *dev, unsigned isairq)
> 
> void isa_init_irq(ISADevice *dev, qemu_irq *p, unsigned isairq)
> {
>-    assert(dev->nirqs < ARRAY_SIZE(dev->isairq));
>-    assert(isairq < ISA_NUM_IRQS);
>-    dev->isairq[dev->nirqs] = isairq;
>     *p = isa_get_irq(dev, isairq);
>-    dev->nirqs++;
> }
> 
> void isa_connect_gpio_out(ISADevice *isadev, int gpioirq, unsigned isairq)
>@@ -150,14 +146,6 @@ int isa_register_portio_list(ISADevice *dev,
>     return 0;
> }
> 
>-static void isa_device_init(Object *obj)
>-{
>-    ISADevice *dev = ISA_DEVICE(obj);
>-
>-    dev->isairq[0] = -1;
>-    dev->isairq[1] = -1;
>-}
>-
> ISADevice *isa_new(const char *name)
> {
>     return ISA_DEVICE(qdev_new(name));
>@@ -244,7 +232,6 @@ static const TypeInfo isa_device_type_info = {
>     .name = TYPE_ISA_DEVICE,
>     .parent = TYPE_DEVICE,
>     .instance_size = sizeof(ISADevice),
>-    .instance_init = isa_device_init,
>     .abstract = true,
>     .class_size = sizeof(ISADeviceClass),
>     .class_init = isa_device_class_init,
>diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
>index d4417b34b6..d80cab5b79 100644
>--- a/include/hw/isa/isa.h
>+++ b/include/hw/isa/isa.h
>@@ -83,8 +83,6 @@ struct ISADevice {
>     DeviceState parent_obj;
>     /*< public >*/
> 
>-    int8_t isairq[2];      /* -1 = unassigned */
>-    int nirqs;
>     int ioport_id;
> };
> 

Reviewed-by: Bernhard Beschow <shentey@gmail.com>



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow
  2022-03-07 13:43 [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow Philippe Mathieu-Daudé
                   ` (12 preceding siblings ...)
  2022-03-07 13:43 ` [PATCH 13/13] hw/isa: Inline and remove one-line isa_init_irq() Philippe Mathieu-Daudé
@ 2022-03-07 14:04 ` Bernhard Beschow
  13 siblings, 0 replies; 27+ messages in thread
From: Bernhard Beschow @ 2022-03-07 14:04 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Philippe Mathieu-Daudé

Am 7. März 2022 13:43:40 UTC schrieb "Philippe Mathieu-Daudé" <philippe.mathieu.daude@gmail.com>:
>From: Philippe Mathieu-Daudé <f4bug@amsat.org>
>
>This is a combination of 2 series posted by Bernhard Beschow:
>
>"malta: Fix PCI IRQ levels to be preserved during migration" v4
>https://lore.kernel.org/qemu-devel/20220217101924.15347-1-shentey@gmail.com/
>
>"isa: Resolve unneeded IRQ attributes from ISADevice" v3
>https://lore.kernel.org/qemu-devel/20220301220037.76555-1-shentey@gmail.com/
>
>Bernhard, can you check if the 2nd series got rebased properly?

Looks good, ship it! ;)

Thank you so much for pushing this over the finish line!!

Best regards,
Bernhard

>
>Thanks,
>
>Phil.
>
>Bernhard Beschow (13):
>  hw/mips/gt64xxx_pci: Fix PCI IRQ levels to be preserved during
>    migration
>  malta: Move PCI interrupt handling from gt64xxx_pci to piix4
>  hw/isa/piix4: Resolve redundant i8259[] attribute
>  hw/isa/piix4: Pass PIIX4State as opaque parameter for piix4_set_irq()
>  hw/isa/piix4: Resolve global instance variable
>  hw/isa/piix4: Replace some magic IRQ constants
>  hw/mips/gt64xxx_pci: Resolve gt64120_register()
>  hw/rtc/mc146818rtc: QOM'ify IRQ number
>  hw/rtc/m48t59-isa: QOM'ify IRQ number
>  hw/input/pckbd: QOM'ify IRQ numbers
>  hw/isa/isa-bus: Remove isabus_dev_print()
>  hw/isa: Drop unused attributes from ISADevice
>  hw/isa: Inline and remove one-line isa_init_irq()
>
> hw/audio/cs4231a.c            |  2 +-
> hw/audio/gus.c                |  2 +-
> hw/audio/sb16.c               |  2 +-
> hw/block/fdc-isa.c            |  2 +-
> hw/char/parallel.c            |  2 +-
> hw/char/serial-isa.c          |  2 +-
> hw/ide/isa.c                  |  2 +-
> hw/input/pckbd.c              | 26 ++++++++++--
> hw/ipmi/isa_ipmi_bt.c         |  2 +-
> hw/ipmi/isa_ipmi_kcs.c        |  2 +-
> hw/isa/isa-bus.c              | 37 +---------------
> hw/isa/piix4.c                | 56 +++++++++++++++++++++---
> hw/mips/gt64xxx_pci.c         | 80 +++--------------------------------
> hw/mips/malta.c               |  7 +--
> hw/net/ne2000-isa.c           |  2 +-
> hw/rtc/m48t59-isa.c           |  9 +++-
> hw/rtc/mc146818rtc.c          | 13 +++++-
> hw/tpm/tpm_tis_isa.c          |  2 +-
> include/hw/isa/isa.h          |  3 --
> include/hw/mips/mips.h        |  3 --
> include/hw/rtc/mc146818rtc.h  |  1 +
> include/hw/southbridge/piix.h |  2 -
> tests/qemu-iotests/172.out    | 26 ------------
> 23 files changed, 114 insertions(+), 171 deletions(-)
>



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 01/13] hw/mips/gt64xxx_pci: Fix PCI IRQ levels to be preserved during migration
  2022-03-07 13:43 ` [PATCH 01/13] hw/mips/gt64xxx_pci: Fix PCI IRQ levels to be preserved during migration Philippe Mathieu-Daudé
@ 2022-03-08 18:09   ` Richard Henderson
  0 siblings, 0 replies; 27+ messages in thread
From: Richard Henderson @ 2022-03-08 18:09 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Bernhard Beschow, qemu-devel
  Cc: Peter Maydell, Philippe Mathieu-Daudé

On 3/7/22 03:43, Philippe Mathieu-Daudé wrote:
> From: Bernhard Beschow<shentey@gmail.com>
> 
> Based on commit e735b55a8c11dd455e31ccd4420e6c9485191d0c:
> 
>    piix_pci: eliminate PIIX3State::pci_irq_levels
> 
>    PIIX3State::pci_irq_levels are redundant which is already tracked by
>    PCIBus layer. So eliminate them.
> 
> The IRQ levels in the PCIBus layer are already preserved during
> migration. By reusing them and rather than having a redundant implementation
> the bug is avoided in the first place.
> 
> Suggested-by: Peter Maydell<peter.maydell@linaro.org>
> Signed-off-by: Bernhard Beschow<shentey@gmail.com>
> Reviewed-by: Peter Maydell<peter.maydell@linaro.org>
> Message-Id:<20220217101924.15347-2-shentey@gmail.com>
> Signed-off-by: Philippe Mathieu-Daudé<f4bug@amsat.org>
> ---
>   hw/mips/gt64xxx_pci.c | 7 ++-----
>   1 file changed, 2 insertions(+), 5 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 03/13] hw/isa/piix4: Resolve redundant i8259[] attribute
  2022-03-07 13:43 ` [PATCH 03/13] hw/isa/piix4: Resolve redundant i8259[] attribute Philippe Mathieu-Daudé
@ 2022-03-08 18:18   ` Richard Henderson
  0 siblings, 0 replies; 27+ messages in thread
From: Richard Henderson @ 2022-03-08 18:18 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Bernhard Beschow, qemu-devel
  Cc: Philippe Mathieu-Daudé, Michael S . Tsirkin

On 3/7/22 03:43, Philippe Mathieu-Daudé wrote:
> From: Bernhard Beschow<shentey@gmail.com>
> 
> This is a follow-up on patch "malta: Move PCI interrupt handling from
> gt64xxx_pci to piix4" where i8259[] was moved from MaltaState to
> PIIX4State to make the code movement more obvious. However, i8259[]
> seems redundant to *isa, so remove it.
> 
> Signed-off-by: Bernhard Beschow<shentey@gmail.com>
> Reviewed-by: Philippe Mathieu-Daudé<f4bug@amsat.org>
> Acked-by: Michael S. Tsirkin<mst@redhat.com>
> Message-Id:<20220217101924.15347-4-shentey@gmail.com>
> Signed-off-by: Philippe Mathieu-Daudé<f4bug@amsat.org>
> ---
>   hw/isa/piix4.c | 7 +------
>   1 file changed, 1 insertion(+), 6 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 04/13] hw/isa/piix4: Pass PIIX4State as opaque parameter for piix4_set_irq()
  2022-03-07 13:43 ` [PATCH 04/13] hw/isa/piix4: Pass PIIX4State as opaque parameter for piix4_set_irq() Philippe Mathieu-Daudé
@ 2022-03-08 18:20   ` Richard Henderson
  0 siblings, 0 replies; 27+ messages in thread
From: Richard Henderson @ 2022-03-08 18:20 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Bernhard Beschow, qemu-devel
  Cc: Peter Maydell, Philippe Mathieu-Daudé, Michael S . Tsirkin

On 3/7/22 03:43, Philippe Mathieu-Daudé wrote:
> From: Bernhard Beschow<shentey@gmail.com>
> 
> Passing PIIX4State rather than just the qemu_irq allows for resolving
> the global piix4_dev variable.
> 
> Signed-off-by: Bernhard Beschow<shentey@gmail.com>
> Reviewed-by: Peter Maydell<peter.maydell@linaro.org>
> Reviewed-by: Philippe Mathieu-Daudé<f4bug@amsat.org>
> Acked-by: Michael S. Tsirkin<mst@redhat.com>
> Message-Id:<20220217101924.15347-5-shentey@gmail.com>
> Signed-off-by: Philippe Mathieu-Daudé<f4bug@amsat.org>
> ---
>   hw/isa/piix4.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 05/13] hw/isa/piix4: Resolve global instance variable
  2022-03-07 13:43 ` [PATCH 05/13] hw/isa/piix4: Resolve global instance variable Philippe Mathieu-Daudé
@ 2022-03-08 18:20   ` Richard Henderson
  0 siblings, 0 replies; 27+ messages in thread
From: Richard Henderson @ 2022-03-08 18:20 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Bernhard Beschow, qemu-devel
  Cc: Philippe Mathieu-Daudé, Michael S . Tsirkin

On 3/7/22 03:43, Philippe Mathieu-Daudé wrote:
> From: Bernhard Beschow<shentey@gmail.com>
> 
> Now that piix4_set_irq's opaque parameter references own PIIX4State,
> piix4_dev becomes redundant.
> 
> Signed-off-by: Bernhard Beschow<shentey@gmail.com>
> Reviewed-by: Philippe Mathieu-Daudé<f4bug@amsat.org>
> Acked-by: Michael S. Tsirkin<mst@redhat.com>
> Message-Id:<20220217101924.15347-6-shentey@gmail.com>
> Signed-off-by: Philippe Mathieu-Daudé<f4bug@amsat.org>
> ---
>   hw/isa/piix4.c                | 10 +++-------
>   include/hw/southbridge/piix.h |  2 --
>   2 files changed, 3 insertions(+), 9 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 06/13] hw/isa/piix4: Replace some magic IRQ constants
  2022-03-07 13:43 ` [PATCH 06/13] hw/isa/piix4: Replace some magic IRQ constants Philippe Mathieu-Daudé
@ 2022-03-08 18:21   ` Richard Henderson
  0 siblings, 0 replies; 27+ messages in thread
From: Richard Henderson @ 2022-03-08 18:21 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Bernhard Beschow, qemu-devel
  Cc: Philippe Mathieu-Daudé, Michael S . Tsirkin

On 3/7/22 03:43, Philippe Mathieu-Daudé wrote:
> From: Bernhard Beschow<shentey@gmail.com>
> 
> This is a follow-up on patch "malta: Move PCI interrupt handling from
> gt64xxx_pci to piix4". gt64xxx_pci used magic constants, and probably
> didn't want to use piix4-specific constants. Now that the interrupt
> handing resides in piix4, its constants can be used.
> 
> Signed-off-by: Bernhard Beschow<shentey@gmail.com>
> Reviewed-by: Philippe Mathieu-Daudé<f4bug@amsat.org>
> Acked-by: Michael S. Tsirkin<mst@redhat.com>
> Message-Id:<20220217101924.15347-7-shentey@gmail.com>
> Signed-off-by: Philippe Mathieu-Daudé<f4bug@amsat.org>
> ---
>   hw/isa/piix4.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 07/13] hw/mips/gt64xxx_pci: Resolve gt64120_register()
  2022-03-07 13:43 ` [PATCH 07/13] hw/mips/gt64xxx_pci: Resolve gt64120_register() Philippe Mathieu-Daudé
@ 2022-03-08 18:32   ` Richard Henderson
  0 siblings, 0 replies; 27+ messages in thread
From: Richard Henderson @ 2022-03-08 18:32 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Bernhard Beschow, qemu-devel
  Cc: Philippe Mathieu-Daudé

On 3/7/22 03:43, Philippe Mathieu-Daudé wrote:
> From: Bernhard Beschow<shentey@gmail.com>
> 
> Now that gt64120_register() lost its pic parameter, there is an
> opportunity to remove it. gt64120_register() is old style by wrapping
> qdev API, and the new style is to use qdev directly. So take the
> opportunity and modernize the code.
> 
> Suggested-by: BALATON Zoltan<balaton@eik.bme.hu>
> Signed-off-by: Bernhard Beschow<shentey@gmail.com>
> Reviewed-by: Philippe Mathieu-Daudé<f4bug@amsat.org>
> Reviewed-by: BALATON Zoltan<balaton@eik.bme.hu>
> Message-Id:<20220217101924.15347-8-shentey@gmail.com>
> Signed-off-by: Philippe Mathieu-Daudé<f4bug@amsat.org>
> ---
>   hw/mips/gt64xxx_pci.c  | 21 ++++-----------------
>   hw/mips/malta.c        |  3 ++-
>   include/hw/mips/mips.h |  3 ---
>   3 files changed, 6 insertions(+), 21 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2022-03-08 18:33 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-07 13:43 [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow Philippe Mathieu-Daudé
2022-03-07 13:43 ` [PATCH 01/13] hw/mips/gt64xxx_pci: Fix PCI IRQ levels to be preserved during migration Philippe Mathieu-Daudé
2022-03-08 18:09   ` Richard Henderson
2022-03-07 13:43 ` [PATCH 02/13] malta: Move PCI interrupt handling from gt64xxx_pci to piix4 Philippe Mathieu-Daudé
2022-03-07 13:43 ` [PATCH 03/13] hw/isa/piix4: Resolve redundant i8259[] attribute Philippe Mathieu-Daudé
2022-03-08 18:18   ` Richard Henderson
2022-03-07 13:43 ` [PATCH 04/13] hw/isa/piix4: Pass PIIX4State as opaque parameter for piix4_set_irq() Philippe Mathieu-Daudé
2022-03-08 18:20   ` Richard Henderson
2022-03-07 13:43 ` [PATCH 05/13] hw/isa/piix4: Resolve global instance variable Philippe Mathieu-Daudé
2022-03-08 18:20   ` Richard Henderson
2022-03-07 13:43 ` [PATCH 06/13] hw/isa/piix4: Replace some magic IRQ constants Philippe Mathieu-Daudé
2022-03-08 18:21   ` Richard Henderson
2022-03-07 13:43 ` [PATCH 07/13] hw/mips/gt64xxx_pci: Resolve gt64120_register() Philippe Mathieu-Daudé
2022-03-08 18:32   ` Richard Henderson
2022-03-07 13:43 ` [PATCH 08/13] hw/rtc/mc146818rtc: QOM'ify IRQ number Philippe Mathieu-Daudé
2022-03-07 13:58   ` Bernhard Beschow
2022-03-07 13:43 ` [PATCH 09/13] hw/rtc/m48t59-isa: " Philippe Mathieu-Daudé
2022-03-07 13:59   ` Bernhard Beschow
2022-03-07 13:43 ` [PATCH 10/13] hw/input/pckbd: QOM'ify IRQ numbers Philippe Mathieu-Daudé
2022-03-07 13:59   ` Bernhard Beschow
2022-03-07 13:43 ` [PATCH 11/13] hw/isa/isa-bus: Remove isabus_dev_print() Philippe Mathieu-Daudé
2022-03-07 14:00   ` Bernhard Beschow
2022-03-07 13:43 ` [PATCH 12/13] hw/isa: Drop unused attributes from ISADevice Philippe Mathieu-Daudé
2022-03-07 14:01   ` Bernhard Beschow
2022-03-07 13:43 ` [PATCH 13/13] hw/isa: Inline and remove one-line isa_init_irq() Philippe Mathieu-Daudé
2022-03-07 13:54   ` Bernhard Beschow
2022-03-07 14:04 ` [PATCH 00/13] hw: ISA & MIPS patches from Bernhard Beschow Bernhard Beschow

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.