All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/11] hw/isa: More housekeeping
@ 2023-02-10 16:37 Philippe Mathieu-Daudé
  2023-02-10 16:37 ` [PATCH 01/11] hw/intc/i8259: Document i8259_init() Philippe Mathieu-Daudé
                   ` (10 more replies)
  0 siblings, 11 replies; 20+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-02-10 16:37 UTC (permalink / raw)
  To: qemu-devel
  Cc: Thomas Huth, Sergio Lopez, Richard Henderson, qemu-ppc,
	Philippe Mathieu-Daudé

Trying to clarify the ISA API.
Most patches should be trivial enough,
so not much to describe here :)

Philippe Mathieu-Daudé (11):
  hw/intc/i8259: Document i8259_init()
  hw/isa/i82378: Rename output IRQ as 'cpu_intr'
  hw/isa/i82378: Remove intermediate IRQ forwarder
  hw/isa/vt82c686: Remove intermediate IRQ forwarder
  hw/mips/jazz: Rename ISA input IRQs as 'isa_irqs_in'
  hw/sparc64/sun4u: Keep reference to ISA input IRQs in EbusState
  hw/isa: Reorder to separate ISABus* vs ISADevice* functions
  hw/isa: Un-inline isa_bus_from_device()
  hw/isa: Rename isa_bus_irqs() -> isa_bus_register_input_irqs()
  hw/isa: Use isa_address_space_io() to reduce access on global 'isabus'
  hw/isa: Factor isa_bus_get_irq() out of isa_get_irq()

 hw/hppa/machine.c       |  2 +-
 hw/i386/microvm.c       |  2 +-
 hw/i386/pc_piix.c       |  2 +-
 hw/intc/i8259.c         |  4 ++--
 hw/isa/i82378.c         | 19 ++++++-------------
 hw/isa/isa-bus.c        | 29 ++++++++++++++++++++---------
 hw/isa/lpc_ich9.c       |  2 +-
 hw/isa/piix4.c          |  2 +-
 hw/isa/vt82c686.c       | 16 ++++------------
 hw/mips/jazz.c          |  6 +++---
 hw/ppc/pnv_lpc.c        |  2 +-
 hw/sparc64/sun4u.c      | 12 ++++++------
 include/hw/intc/i8259.h | 10 +++++++++-
 include/hw/isa/isa.h    | 27 ++++++++++++++++-----------
 14 files changed, 72 insertions(+), 63 deletions(-)

-- 
2.38.1



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

* [PATCH 01/11] hw/intc/i8259: Document i8259_init()
  2023-02-10 16:37 [PATCH 00/11] hw/isa: More housekeeping Philippe Mathieu-Daudé
@ 2023-02-10 16:37 ` Philippe Mathieu-Daudé
  2023-02-11 17:09   ` Richard Henderson
  2023-02-10 16:37 ` [PATCH 02/11] hw/isa/i82378: Rename output IRQ as 'cpu_intr' Philippe Mathieu-Daudé
                   ` (9 subsequent siblings)
  10 siblings, 1 reply; 20+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-02-10 16:37 UTC (permalink / raw)
  To: qemu-devel
  Cc: Thomas Huth, Sergio Lopez, Richard Henderson, qemu-ppc,
	Philippe Mathieu-Daudé,
	Michael S. Tsirkin, Paolo Bonzini

i8259_init() helper creates a i8259 device on an ISA bus,
connects its IRQ output to the parent's input IRQ, and
returns an array of 16 ISA input IRQs.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/intc/i8259.c         |  4 ++--
 include/hw/intc/i8259.h | 10 +++++++++-
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/hw/intc/i8259.c b/hw/intc/i8259.c
index 0261f087b2..17910f3bcb 100644
--- a/hw/intc/i8259.c
+++ b/hw/intc/i8259.c
@@ -406,7 +406,7 @@ static void pic_realize(DeviceState *dev, Error **errp)
     pc->parent_realize(dev, errp);
 }
 
-qemu_irq *i8259_init(ISABus *bus, qemu_irq parent_irq)
+qemu_irq *i8259_init(ISABus *bus, qemu_irq parent_irq_in)
 {
     qemu_irq *irq_set;
     DeviceState *dev;
@@ -418,7 +418,7 @@ qemu_irq *i8259_init(ISABus *bus, qemu_irq parent_irq)
     isadev = i8259_init_chip(TYPE_I8259, bus, true);
     dev = DEVICE(isadev);
 
-    qdev_connect_gpio_out(dev, 0, parent_irq);
+    qdev_connect_gpio_out(dev, 0, parent_irq_in);
     for (i = 0 ; i < 8; i++) {
         irq_set[i] = qdev_get_gpio_in(dev, i);
     }
diff --git a/include/hw/intc/i8259.h b/include/hw/intc/i8259.h
index a0e34dd990..c412575775 100644
--- a/include/hw/intc/i8259.h
+++ b/include/hw/intc/i8259.h
@@ -4,7 +4,15 @@
 /* i8259.c */
 
 extern PICCommonState *isa_pic;
-qemu_irq *i8259_init(ISABus *bus, qemu_irq parent_irq);
+
+/*
+ * i8259_init()
+ *
+ * Create a i8259 device on an ISA @bus,
+ * connect its output to @parent_irq_in,
+ * return an (allocated) array of 16 input IRQs.
+ */
+qemu_irq *i8259_init(ISABus *bus, qemu_irq parent_irq_in);
 qemu_irq *kvm_i8259_init(ISABus *bus);
 int pic_get_output(PICCommonState *s);
 int pic_read_irq(PICCommonState *s);
-- 
2.38.1



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

* [PATCH 02/11] hw/isa/i82378: Rename output IRQ as 'cpu_intr'
  2023-02-10 16:37 [PATCH 00/11] hw/isa: More housekeeping Philippe Mathieu-Daudé
  2023-02-10 16:37 ` [PATCH 01/11] hw/intc/i8259: Document i8259_init() Philippe Mathieu-Daudé
@ 2023-02-10 16:37 ` Philippe Mathieu-Daudé
  2023-02-11 17:10   ` Richard Henderson
  2023-02-10 16:37 ` [PATCH 03/11] hw/isa/i82378: Remove intermediate IRQ forwarder Philippe Mathieu-Daudé
                   ` (8 subsequent siblings)
  10 siblings, 1 reply; 20+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-02-10 16:37 UTC (permalink / raw)
  To: qemu-devel
  Cc: Thomas Huth, Sergio Lopez, Richard Henderson, qemu-ppc,
	Philippe Mathieu-Daudé,
	Hervé Poussineau

Commit a04ff94097 ("prep: Add i82378 PCI-to-ISA bridge
emulation") aimed to model the 2 output IRQs: CPU intr
and NMI. Commit 5039d6e235 ("i8257: remove cpu_request_exit
irq") removed the NMI IRQ.
Since this model only use the CPU interrupt, replace the
'out[2]' array by a single 'cpu_intr'.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/isa/i82378.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c
index e3322e03bf..84ce761f5f 100644
--- a/hw/isa/i82378.c
+++ b/hw/isa/i82378.c
@@ -32,7 +32,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(I82378State, I82378)
 struct I82378State {
     PCIDevice parent_obj;
 
-    qemu_irq out[2];
+    qemu_irq cpu_intr;
     qemu_irq *i8259;
     MemoryRegion io;
 };
@@ -50,7 +50,7 @@ static const VMStateDescription vmstate_i82378 = {
 static void i82378_request_out0_irq(void *opaque, int irq, int level)
 {
     I82378State *s = opaque;
-    qemu_set_irq(s->out[0], level);
+    qemu_set_irq(s->cpu_intr, level);
 }
 
 static void i82378_request_pic_irq(void *opaque, int irq, int level)
@@ -113,7 +113,7 @@ static void i82378_init(Object *obj)
     DeviceState *dev = DEVICE(obj);
     I82378State *s = I82378(obj);
 
-    qdev_init_gpio_out(dev, s->out, 1);
+    qdev_init_gpio_out(dev, &s->cpu_intr, 1);
     qdev_init_gpio_in(dev, i82378_request_pic_irq, 16);
 }
 
-- 
2.38.1



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

* [PATCH 03/11] hw/isa/i82378: Remove intermediate IRQ forwarder
  2023-02-10 16:37 [PATCH 00/11] hw/isa: More housekeeping Philippe Mathieu-Daudé
  2023-02-10 16:37 ` [PATCH 01/11] hw/intc/i8259: Document i8259_init() Philippe Mathieu-Daudé
  2023-02-10 16:37 ` [PATCH 02/11] hw/isa/i82378: Rename output IRQ as 'cpu_intr' Philippe Mathieu-Daudé
@ 2023-02-10 16:37 ` Philippe Mathieu-Daudé
  2023-02-11 17:13   ` Richard Henderson
  2023-02-10 16:37 ` [PATCH 04/11] hw/isa/vt82c686: " Philippe Mathieu-Daudé
                   ` (7 subsequent siblings)
  10 siblings, 1 reply; 20+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-02-10 16:37 UTC (permalink / raw)
  To: qemu-devel
  Cc: Thomas Huth, Sergio Lopez, Richard Henderson, qemu-ppc,
	Philippe Mathieu-Daudé, Philippe Mathieu-Daudé,
	Hervé Poussineau

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

When the i82378 model was added in commit a04ff940974 ("prep:
Add i82378 PCI-to-ISA bridge emulation") the i8259 model was
not yet QOM'ified. This happened later in commit 747c70af78f
("i8259: Convert to qdev").

Directly dispatch ISA IRQs to 'cpu_intr' output IRQ
by removing the intermediate i82378_request_out0_irq()
handler. Rename ISA IRQs array as 'isa_irqs_in' to
emphasize these are input IRQs.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/isa/i82378.c | 15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c
index 84ce761f5f..d32653369d 100644
--- a/hw/isa/i82378.c
+++ b/hw/isa/i82378.c
@@ -33,7 +33,7 @@ struct I82378State {
     PCIDevice parent_obj;
 
     qemu_irq cpu_intr;
-    qemu_irq *i8259;
+    qemu_irq *isa_irqs_in;
     MemoryRegion io;
 };
 
@@ -47,18 +47,12 @@ static const VMStateDescription vmstate_i82378 = {
     },
 };
 
-static void i82378_request_out0_irq(void *opaque, int irq, int level)
-{
-    I82378State *s = opaque;
-    qemu_set_irq(s->cpu_intr, level);
-}
-
 static void i82378_request_pic_irq(void *opaque, int irq, int level)
 {
     DeviceState *dev = opaque;
     I82378State *s = I82378(dev);
 
-    qemu_set_irq(s->i8259[irq], level);
+    qemu_set_irq(s->isa_irqs_in[irq], level);
 }
 
 static void i82378_realize(PCIDevice *pci, Error **errp)
@@ -94,9 +88,8 @@ static void i82378_realize(PCIDevice *pci, Error **errp)
      */
 
     /* 2 82C59 (irq) */
-    s->i8259 = i8259_init(isabus,
-                          qemu_allocate_irq(i82378_request_out0_irq, s, 0));
-    isa_bus_irqs(isabus, s->i8259);
+    s->isa_irqs_in = i8259_init(isabus, s->cpu_intr);
+    isa_bus_irqs(isabus, s->isa_irqs_in);
 
     /* 1 82C54 (pit) */
     pit = i8254_pit_init(isabus, 0x40, 0, NULL);
-- 
2.38.1



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

* [PATCH 04/11] hw/isa/vt82c686: Remove intermediate IRQ forwarder
  2023-02-10 16:37 [PATCH 00/11] hw/isa: More housekeeping Philippe Mathieu-Daudé
                   ` (2 preceding siblings ...)
  2023-02-10 16:37 ` [PATCH 03/11] hw/isa/i82378: Remove intermediate IRQ forwarder Philippe Mathieu-Daudé
@ 2023-02-10 16:37 ` Philippe Mathieu-Daudé
  2023-02-10 16:37 ` [PATCH 05/11] hw/mips/jazz: Rename ISA input IRQs as 'isa_irqs_in' Philippe Mathieu-Daudé
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-02-10 16:37 UTC (permalink / raw)
  To: qemu-devel
  Cc: Thomas Huth, Sergio Lopez, Richard Henderson, qemu-ppc,
	Philippe Mathieu-Daudé, Philippe Mathieu-Daudé,
	Huacai Chen, Jiaxun Yang

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

Directly dispatch ISA IRQs to 'cpu_intr' output IRQ
by removing the intermediate via_isa_request_i8259_irq()
handler. Rename ISA IRQs array as 'isa_irqs_in' to
emphasize these are input IRQs.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/isa/vt82c686.c | 16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c
index 3f9bd0c04d..a913a509f7 100644
--- a/hw/isa/vt82c686.c
+++ b/hw/isa/vt82c686.c
@@ -548,7 +548,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(ViaISAState, VIA_ISA)
 struct ViaISAState {
     PCIDevice dev;
     qemu_irq cpu_intr;
-    qemu_irq *isa_irqs;
+    qemu_irq *isa_irqs_in;
     ViaSuperIOState via_sio;
     RTCState rtc;
     PCIIDEState ide;
@@ -595,13 +595,7 @@ static const TypeInfo via_isa_info = {
 void via_isa_set_irq(PCIDevice *d, int n, int level)
 {
     ViaISAState *s = VIA_ISA(d);
-    qemu_set_irq(s->isa_irqs[n], level);
-}
-
-static void via_isa_request_i8259_irq(void *opaque, int irq, int level)
-{
-    ViaISAState *s = opaque;
-    qemu_set_irq(s->cpu_intr, level);
+    qemu_set_irq(s->isa_irqs_in[n], level);
 }
 
 static void via_isa_realize(PCIDevice *d, Error **errp)
@@ -609,12 +603,10 @@ static void via_isa_realize(PCIDevice *d, Error **errp)
     ViaISAState *s = VIA_ISA(d);
     DeviceState *dev = DEVICE(d);
     PCIBus *pci_bus = pci_get_bus(d);
-    qemu_irq *isa_irq;
     ISABus *isa_bus;
     int i;
 
     qdev_init_gpio_out(dev, &s->cpu_intr, 1);
-    isa_irq = qemu_allocate_irqs(via_isa_request_i8259_irq, s, 1);
     isa_bus = isa_bus_new(dev, pci_address_space(d), pci_address_space_io(d),
                           errp);
 
@@ -622,8 +614,8 @@ static void via_isa_realize(PCIDevice *d, Error **errp)
         return;
     }
 
-    s->isa_irqs = i8259_init(isa_bus, *isa_irq);
-    isa_bus_irqs(isa_bus, s->isa_irqs);
+    s->isa_irqs_in = i8259_init(isa_bus, s->cpu_intr);
+    isa_bus_irqs(isa_bus, s->isa_irqs_in);
     i8254_pit_init(isa_bus, 0x40, 0, NULL);
     i8257_dma_init(isa_bus, 0);
 
-- 
2.38.1



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

* [PATCH 05/11] hw/mips/jazz: Rename ISA input IRQs as 'isa_irqs_in'
  2023-02-10 16:37 [PATCH 00/11] hw/isa: More housekeeping Philippe Mathieu-Daudé
                   ` (3 preceding siblings ...)
  2023-02-10 16:37 ` [PATCH 04/11] hw/isa/vt82c686: " Philippe Mathieu-Daudé
@ 2023-02-10 16:37 ` Philippe Mathieu-Daudé
  2023-02-11 17:18   ` Richard Henderson
  2023-02-10 16:37 ` [PATCH 06/11] hw/sparc64/sun4u: Keep reference to ISA input IRQs in EbusState Philippe Mathieu-Daudé
                   ` (5 subsequent siblings)
  10 siblings, 1 reply; 20+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-02-10 16:37 UTC (permalink / raw)
  To: qemu-devel
  Cc: Thomas Huth, Sergio Lopez, Richard Henderson, qemu-ppc,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, Aleksandar Rikalo, Jiaxun Yang

The following code:

     /* ISA devices */
     i8259 = i8259_init(isa_bus, ...);

gives the false idea that the function is creating a i8259
device. Instead this function returns an array of input IRQs.
Rename the variable to clarify:

     /* ISA devices */
     isa_irqs_in = i8259_init(isa_bus, ...);

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/mips/jazz.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c
index 6aefe9a61b..fc7898006c 100644
--- a/hw/mips/jazz.c
+++ b/hw/mips/jazz.c
@@ -130,7 +130,7 @@ static void mips_jazz_init(MachineState *machine,
     MIPSCPU *cpu;
     MIPSCPUClass *mcc;
     CPUMIPSState *env;
-    qemu_irq *i8259;
+    qemu_irq *isa_irqs_in;
     rc4030_dma *dmas;
     IOMMUMemoryRegion *rc4030_dma_mr;
     MemoryRegion *isa_mem = g_new(MemoryRegion, 1);
@@ -248,8 +248,8 @@ static void mips_jazz_init(MachineState *machine,
     isa_bus = isa_bus_new(NULL, isa_mem, isa_io, &error_abort);
 
     /* ISA devices */
-    i8259 = i8259_init(isa_bus, env->irq[4]);
-    isa_bus_irqs(isa_bus, i8259);
+    isa_irqs_in = i8259_init(isa_bus, env->irq[4]);
+    isa_bus_irqs(isa_bus, isa_irqs_in);
     i8257_dma_init(isa_bus, 0);
     pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
     pcspk_init(isa_new(TYPE_PC_SPEAKER), isa_bus, pit);
-- 
2.38.1



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

* [PATCH 06/11] hw/sparc64/sun4u: Keep reference to ISA input IRQs in EbusState
  2023-02-10 16:37 [PATCH 00/11] hw/isa: More housekeeping Philippe Mathieu-Daudé
                   ` (4 preceding siblings ...)
  2023-02-10 16:37 ` [PATCH 05/11] hw/mips/jazz: Rename ISA input IRQs as 'isa_irqs_in' Philippe Mathieu-Daudé
@ 2023-02-10 16:37 ` Philippe Mathieu-Daudé
  2023-02-11 17:30   ` Richard Henderson
  2023-02-10 16:37 ` [PATCH 07/11] hw/isa: Reorder to separate ISABus* vs ISADevice* functions Philippe Mathieu-Daudé
                   ` (4 subsequent siblings)
  10 siblings, 1 reply; 20+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-02-10 16:37 UTC (permalink / raw)
  To: qemu-devel
  Cc: Thomas Huth, Sergio Lopez, Richard Henderson, qemu-ppc,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, Artyom Tarasenko

Keep reference to ISA input IRQs in EbusState.

To emphasize input/output distinction, rename arrays
as isa_irqs_in / isa_irqs_out.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/sparc64/sun4u.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index 387181ff77..8fe47e2c22 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -84,7 +84,8 @@ struct EbusState {
     PCIDevice parent_obj;
 
     ISABus *isa_bus;
-    qemu_irq isa_bus_irqs[ISA_NUM_IRQS];
+    qemu_irq *isa_irqs_in;
+    qemu_irq isa_irqs_out[ISA_NUM_IRQS];
     uint64_t console_serial_base;
     MemoryRegion bar0;
     MemoryRegion bar1;
@@ -287,7 +288,7 @@ static const TypeInfo power_info = {
 static void ebus_isa_irq_handler(void *opaque, int n, int level)
 {
     EbusState *s = EBUS(opaque);
-    qemu_irq irq = s->isa_bus_irqs[n];
+    qemu_irq irq = s->isa_irqs_out[n];
 
     /* Pass ISA bus IRQs onto their gpio equivalent */
     trace_ebus_isa_irq_handler(n, level);
@@ -303,7 +304,6 @@ static void ebus_realize(PCIDevice *pci_dev, Error **errp)
     ISADevice *isa_dev;
     SysBusDevice *sbd;
     DeviceState *dev;
-    qemu_irq *isa_irq;
     DriveInfo *fd[MAX_FD];
     int i;
 
@@ -315,9 +315,9 @@ static void ebus_realize(PCIDevice *pci_dev, Error **errp)
     }
 
     /* ISA bus */
-    isa_irq = qemu_allocate_irqs(ebus_isa_irq_handler, s, ISA_NUM_IRQS);
-    isa_bus_irqs(s->isa_bus, isa_irq);
-    qdev_init_gpio_out_named(DEVICE(s), s->isa_bus_irqs, "isa-irq",
+    s->isa_irqs_in = qemu_allocate_irqs(ebus_isa_irq_handler, s, ISA_NUM_IRQS);
+    isa_bus_irqs(s->isa_bus, s->isa_irqs_in);
+    qdev_init_gpio_out_named(DEVICE(s), s->isa_irqs_out, "isa-irq",
                              ISA_NUM_IRQS);
 
     /* Serial ports */
-- 
2.38.1



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

* [PATCH 07/11] hw/isa: Reorder to separate ISABus* vs ISADevice* functions
  2023-02-10 16:37 [PATCH 00/11] hw/isa: More housekeeping Philippe Mathieu-Daudé
                   ` (5 preceding siblings ...)
  2023-02-10 16:37 ` [PATCH 06/11] hw/sparc64/sun4u: Keep reference to ISA input IRQs in EbusState Philippe Mathieu-Daudé
@ 2023-02-10 16:37 ` Philippe Mathieu-Daudé
  2023-02-11 17:32   ` Richard Henderson
  2023-02-10 16:37 ` [PATCH 08/11] hw/isa: Un-inline isa_bus_from_device() Philippe Mathieu-Daudé
                   ` (3 subsequent siblings)
  10 siblings, 1 reply; 20+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-02-10 16:37 UTC (permalink / raw)
  To: qemu-devel
  Cc: Thomas Huth, Sergio Lopez, Richard Henderson, qemu-ppc,
	Philippe Mathieu-Daudé

Separate functions taking an ISABus* argument versus
functions taking a ISADevice* one.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 include/hw/isa/isa.h | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
index 25acd5c34c..e81cd33e3c 100644
--- a/include/hw/isa/isa.h
+++ b/include/hw/isa/isa.h
@@ -74,12 +74,8 @@ struct ISADevice {
 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_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);
-MemoryRegion *isa_address_space(ISADevice *dev);
-MemoryRegion *isa_address_space_io(ISADevice *dev);
 ISADevice *isa_new(const char *name);
 ISADevice *isa_try_new(const char *name);
 bool isa_realize_and_unref(ISADevice *dev, ISABus *bus, Error **errp);
@@ -87,6 +83,11 @@ ISADevice *isa_create_simple(ISABus *bus, const char *name);
 
 ISADevice *isa_vga_init(ISABus *bus);
 
+qemu_irq isa_get_irq(ISADevice *dev, unsigned isairq);
+void isa_connect_gpio_out(ISADevice *isadev, int gpioirq, unsigned isairq);
+MemoryRegion *isa_address_space(ISADevice *dev);
+MemoryRegion *isa_address_space_io(ISADevice *dev);
+
 /**
  * isa_register_ioport: Install an I/O port region on the ISA bus.
  *
-- 
2.38.1



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

* [PATCH 08/11] hw/isa: Un-inline isa_bus_from_device()
  2023-02-10 16:37 [PATCH 00/11] hw/isa: More housekeeping Philippe Mathieu-Daudé
                   ` (6 preceding siblings ...)
  2023-02-10 16:37 ` [PATCH 07/11] hw/isa: Reorder to separate ISABus* vs ISADevice* functions Philippe Mathieu-Daudé
@ 2023-02-10 16:37 ` Philippe Mathieu-Daudé
  2023-02-10 16:37 ` [PATCH 09/11] hw/isa: Rename isa_bus_irqs() -> isa_bus_register_input_irqs() Philippe Mathieu-Daudé
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-02-10 16:37 UTC (permalink / raw)
  To: qemu-devel
  Cc: Thomas Huth, Sergio Lopez, Richard Henderson, qemu-ppc,
	Philippe Mathieu-Daudé

No point in inlining isa_bus_from_device() which is only
used at device realization time.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/isa/isa-bus.c     | 5 +++++
 include/hw/isa/isa.h | 6 +-----
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
index 4fe61d6dfe..5bd99379e9 100644
--- a/hw/isa/isa-bus.c
+++ b/hw/isa/isa-bus.c
@@ -162,6 +162,11 @@ bool isa_realize_and_unref(ISADevice *dev, ISABus *bus, Error **errp)
     return qdev_realize_and_unref(&dev->parent_obj, &bus->parent_obj, errp);
 }
 
+ISABus *isa_bus_from_device(ISADevice *dev)
+{
+    return ISA_BUS(qdev_get_parent_bus(DEVICE(dev)));
+}
+
 ISADevice *isa_vga_init(ISABus *bus)
 {
     vga_interface_created = true;
diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
index e81cd33e3c..1691364011 100644
--- a/include/hw/isa/isa.h
+++ b/include/hw/isa/isa.h
@@ -87,6 +87,7 @@ qemu_irq isa_get_irq(ISADevice *dev, unsigned isairq);
 void isa_connect_gpio_out(ISADevice *isadev, int gpioirq, unsigned isairq);
 MemoryRegion *isa_address_space(ISADevice *dev);
 MemoryRegion *isa_address_space_io(ISADevice *dev);
+ISABus *isa_bus_from_device(ISADevice *dev);
 
 /**
  * isa_register_ioport: Install an I/O port region on the ISA bus.
@@ -124,9 +125,4 @@ int isa_register_portio_list(ISADevice *dev,
                              const MemoryRegionPortio *portio,
                              void *opaque, const char *name);
 
-static inline ISABus *isa_bus_from_device(ISADevice *d)
-{
-    return ISA_BUS(qdev_get_parent_bus(DEVICE(d)));
-}
-
 #endif
-- 
2.38.1



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

* [PATCH 09/11] hw/isa: Rename isa_bus_irqs() -> isa_bus_register_input_irqs()
  2023-02-10 16:37 [PATCH 00/11] hw/isa: More housekeeping Philippe Mathieu-Daudé
                   ` (7 preceding siblings ...)
  2023-02-10 16:37 ` [PATCH 08/11] hw/isa: Un-inline isa_bus_from_device() Philippe Mathieu-Daudé
@ 2023-02-10 16:37 ` Philippe Mathieu-Daudé
  2023-02-11 17:37   ` Richard Henderson
  2023-02-10 16:37 ` [PATCH 10/11] hw/isa: Use isa_address_space_io() to reduce access on global 'isabus' Philippe Mathieu-Daudé
  2023-02-10 16:37 ` [PATCH 11/11] hw/isa: Factor isa_bus_get_irq() out of isa_get_irq() Philippe Mathieu-Daudé
  10 siblings, 1 reply; 20+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-02-10 16:37 UTC (permalink / raw)
  To: qemu-devel
  Cc: Thomas Huth, Sergio Lopez, Richard Henderson, qemu-ppc,
	Philippe Mathieu-Daudé,
	Helge Deller, Paolo Bonzini, Eduardo Habkost, Michael S. Tsirkin,
	Marcel Apfelbaum, Hervé Poussineau, Aurelien Jarno,
	Huacai Chen, Jiaxun Yang, Aleksandar Rikalo,
	Cédric Le Goater, Mark Cave-Ayland, Artyom Tarasenko

isa_bus_irqs() register an array of input IRQs on
the ISA bus. Rename it as isa_bus_register_input_irqs().

Mechanical change using:

 $ sed -i -e 's/isa_bus_irqs/isa_bus_register_input_irqs/g' \
   $(git grep -wl isa_bus_irqs)

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/hppa/machine.c    | 2 +-
 hw/i386/microvm.c    | 2 +-
 hw/i386/pc_piix.c    | 2 +-
 hw/isa/i82378.c      | 2 +-
 hw/isa/isa-bus.c     | 8 ++++----
 hw/isa/lpc_ich9.c    | 2 +-
 hw/isa/piix4.c       | 2 +-
 hw/isa/vt82c686.c    | 2 +-
 hw/mips/jazz.c       | 2 +-
 hw/ppc/pnv_lpc.c     | 2 +-
 hw/sparc64/sun4u.c   | 2 +-
 include/hw/isa/isa.h | 4 ++--
 12 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
index 7ac68c943f..8fea5fa6b8 100644
--- a/hw/hppa/machine.c
+++ b/hw/hppa/machine.c
@@ -98,7 +98,7 @@ static ISABus *hppa_isa_bus(void)
     isa_irqs = i8259_init(isa_bus,
                           /* qemu_allocate_irq(dino_set_isa_irq, s, 0)); */
                           NULL);
-    isa_bus_irqs(isa_bus, isa_irqs);
+    isa_bus_register_input_irqs(isa_bus, isa_irqs);
 
     return isa_bus;
 }
diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c
index 29f30dd6d3..fed468a34d 100644
--- a/hw/i386/microvm.c
+++ b/hw/i386/microvm.c
@@ -174,7 +174,7 @@ static void microvm_devices_init(MicrovmMachineState *mms)
 
     isa_bus = isa_bus_new(NULL, get_system_memory(), get_system_io(),
                           &error_abort);
-    isa_bus_irqs(isa_bus, x86ms->gsi);
+    isa_bus_register_input_irqs(isa_bus, x86ms->gsi);
 
     ioapic_init_gsi(gsi_state, "machine");
     if (ioapics > 1) {
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index df64dd8dcc..7c48ba30e0 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -246,7 +246,7 @@ static void pc_init1(MachineState *machine,
         i8257_dma_init(isa_bus, 0);
         pcms->hpet_enabled = false;
     }
-    isa_bus_irqs(isa_bus, x86ms->gsi);
+    isa_bus_register_input_irqs(isa_bus, x86ms->gsi);
 
     if (x86ms->pic == ON_OFF_AUTO_ON || x86ms->pic == ON_OFF_AUTO_AUTO) {
         pc_i8259_create(isa_bus, gsi_state->i8259_irq);
diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c
index d32653369d..233059c6dc 100644
--- a/hw/isa/i82378.c
+++ b/hw/isa/i82378.c
@@ -89,7 +89,7 @@ static void i82378_realize(PCIDevice *pci, Error **errp)
 
     /* 2 82C59 (irq) */
     s->isa_irqs_in = i8259_init(isabus, s->cpu_intr);
-    isa_bus_irqs(isabus, s->isa_irqs_in);
+    isa_bus_register_input_irqs(isabus, s->isa_irqs_in);
 
     /* 1 82C54 (pit) */
     pit = i8254_pit_init(isabus, 0x40, 0, NULL);
diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
index 5bd99379e9..d19826f96e 100644
--- a/hw/isa/isa-bus.c
+++ b/hw/isa/isa-bus.c
@@ -67,13 +67,13 @@ ISABus *isa_bus_new(DeviceState *dev, MemoryRegion* address_space,
     return isabus;
 }
 
-void isa_bus_irqs(ISABus *bus, qemu_irq *irqs)
+void isa_bus_register_input_irqs(ISABus *bus, qemu_irq *irqs_in)
 {
-    bus->irqs = irqs;
+    bus->irqs_in = irqs_in;
 }
 
 /*
- * isa_get_irq() returns the corresponding qemu_irq entry for the i8259.
+ * isa_get_irq() returns the corresponding input qemu_irq entry for the i8259.
  *
  * This function is only for special cases such as the 'ferr', and
  * temporary use for normal devices until they are converted to qdev.
@@ -82,7 +82,7 @@ qemu_irq isa_get_irq(ISADevice *dev, unsigned isairq)
 {
     assert(!dev || ISA_BUS(qdev_get_parent_bus(DEVICE(dev))) == isabus);
     assert(isairq < ISA_NUM_IRQS);
-    return isabus->irqs[isairq];
+    return isabus->irqs_in[isairq];
 }
 
 void isa_connect_gpio_out(ISADevice *isadev, int gpioirq, unsigned isairq)
diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c
index 1fba3c210c..cda2f5621e 100644
--- a/hw/isa/lpc_ich9.c
+++ b/hw/isa/lpc_ich9.c
@@ -725,7 +725,7 @@ static void ich9_lpc_realize(PCIDevice *d, Error **errp)
 
     qdev_init_gpio_out_named(dev, lpc->gsi, ICH9_GPIO_GSI, GSI_NUM_PINS);
 
-    isa_bus_irqs(isa_bus, lpc->gsi);
+    isa_bus_register_input_irqs(isa_bus, lpc->gsi);
 
     i8257_dma_init(isa_bus, 0);
 }
diff --git a/hw/isa/piix4.c b/hw/isa/piix4.c
index de60ceef73..ef24826993 100644
--- a/hw/isa/piix4.c
+++ b/hw/isa/piix4.c
@@ -212,7 +212,7 @@ static void piix4_realize(PCIDevice *dev, Error **errp)
     s->isa = i8259_init(isa_bus, *i8259_out_irq);
 
     /* initialize ISA irqs */
-    isa_bus_irqs(isa_bus, s->isa);
+    isa_bus_register_input_irqs(isa_bus, s->isa);
 
     /* initialize pit */
     i8254_pit_init(isa_bus, 0x40, 0, NULL);
diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c
index a913a509f7..52814cc751 100644
--- a/hw/isa/vt82c686.c
+++ b/hw/isa/vt82c686.c
@@ -615,7 +615,7 @@ static void via_isa_realize(PCIDevice *d, Error **errp)
     }
 
     s->isa_irqs_in = i8259_init(isa_bus, s->cpu_intr);
-    isa_bus_irqs(isa_bus, s->isa_irqs_in);
+    isa_bus_register_input_irqs(isa_bus, s->isa_irqs_in);
     i8254_pit_init(isa_bus, 0x40, 0, NULL);
     i8257_dma_init(isa_bus, 0);
 
diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c
index fc7898006c..3b09c93a92 100644
--- a/hw/mips/jazz.c
+++ b/hw/mips/jazz.c
@@ -249,7 +249,7 @@ static void mips_jazz_init(MachineState *machine,
 
     /* ISA devices */
     isa_irqs_in = i8259_init(isa_bus, env->irq[4]);
-    isa_bus_irqs(isa_bus, isa_irqs_in);
+    isa_bus_register_input_irqs(isa_bus, isa_irqs_in);
     i8257_dma_init(isa_bus, 0);
     pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
     pcspk_init(isa_new(TYPE_PC_SPEAKER), isa_bus, pit);
diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c
index 71143b7692..01f44c19eb 100644
--- a/hw/ppc/pnv_lpc.c
+++ b/hw/ppc/pnv_lpc.c
@@ -837,7 +837,7 @@ ISABus *pnv_lpc_isa_create(PnvLpcController *lpc, bool use_cpld, Error **errp)
 
     irqs = qemu_allocate_irqs(handler, lpc, ISA_NUM_IRQS);
 
-    isa_bus_irqs(isa_bus, irqs);
+    isa_bus_register_input_irqs(isa_bus, irqs);
 
     return isa_bus;
 }
diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index 8fe47e2c22..8a56ba9f98 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -316,7 +316,7 @@ static void ebus_realize(PCIDevice *pci_dev, Error **errp)
 
     /* ISA bus */
     s->isa_irqs_in = qemu_allocate_irqs(ebus_isa_irq_handler, s, ISA_NUM_IRQS);
-    isa_bus_irqs(s->isa_bus, s->isa_irqs_in);
+    isa_bus_register_input_irqs(s->isa_bus, s->isa_irqs_in);
     qdev_init_gpio_out_named(DEVICE(s), s->isa_irqs_out, "isa-irq",
                              ISA_NUM_IRQS);
 
diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
index 1691364011..0aa36d4115 100644
--- a/include/hw/isa/isa.h
+++ b/include/hw/isa/isa.h
@@ -59,7 +59,7 @@ struct ISABus {
 
     MemoryRegion *address_space;
     MemoryRegion *address_space_io;
-    qemu_irq *irqs;
+    qemu_irq *irqs_in;
     IsaDma *dma[2];
 };
 
@@ -73,7 +73,7 @@ struct ISADevice {
 
 ISABus *isa_bus_new(DeviceState *dev, MemoryRegion *address_space,
                     MemoryRegion *address_space_io, Error **errp);
-void isa_bus_irqs(ISABus *bus, qemu_irq *irqs);
+void isa_bus_register_input_irqs(ISABus *bus, qemu_irq *irqs_in);
 void isa_bus_dma(ISABus *bus, IsaDma *dma8, IsaDma *dma16);
 IsaDma *isa_get_dma(ISABus *bus, int nchan);
 ISADevice *isa_new(const char *name);
-- 
2.38.1



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

* [PATCH 10/11] hw/isa: Use isa_address_space_io() to reduce access on global 'isabus'
  2023-02-10 16:37 [PATCH 00/11] hw/isa: More housekeeping Philippe Mathieu-Daudé
                   ` (8 preceding siblings ...)
  2023-02-10 16:37 ` [PATCH 09/11] hw/isa: Rename isa_bus_irqs() -> isa_bus_register_input_irqs() Philippe Mathieu-Daudé
@ 2023-02-10 16:37 ` Philippe Mathieu-Daudé
  2023-02-10 16:37 ` [PATCH 11/11] hw/isa: Factor isa_bus_get_irq() out of isa_get_irq() Philippe Mathieu-Daudé
  10 siblings, 0 replies; 20+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-02-10 16:37 UTC (permalink / raw)
  To: qemu-devel
  Cc: Thomas Huth, Sergio Lopez, Richard Henderson, qemu-ppc,
	Philippe Mathieu-Daudé

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/isa/isa-bus.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
index d19826f96e..d12973103f 100644
--- a/hw/isa/isa-bus.c
+++ b/hw/isa/isa-bus.c
@@ -114,7 +114,7 @@ static inline void isa_init_ioport(ISADevice *dev, uint16_t ioport)
 
 void isa_register_ioport(ISADevice *dev, MemoryRegion *io, uint16_t start)
 {
-    memory_region_add_subregion(isabus->address_space_io, start, io);
+    memory_region_add_subregion(isa_address_space_io(dev), start, io);
     isa_init_ioport(dev, start);
 }
 
@@ -133,7 +133,7 @@ int isa_register_portio_list(ISADevice *dev,
     isa_init_ioport(dev, start);
 
     portio_list_register(piolist, OBJECT(dev), pio_start, opaque, name,
-                         isabus->address_space_io, start);
+                         isa_address_space_io(dev), start);
 
     return 0;
 }
-- 
2.38.1



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

* [PATCH 11/11] hw/isa: Factor isa_bus_get_irq() out of isa_get_irq()
  2023-02-10 16:37 [PATCH 00/11] hw/isa: More housekeeping Philippe Mathieu-Daudé
                   ` (9 preceding siblings ...)
  2023-02-10 16:37 ` [PATCH 10/11] hw/isa: Use isa_address_space_io() to reduce access on global 'isabus' Philippe Mathieu-Daudé
@ 2023-02-10 16:37 ` Philippe Mathieu-Daudé
  2023-02-11 17:46   ` Richard Henderson
  10 siblings, 1 reply; 20+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-02-10 16:37 UTC (permalink / raw)
  To: qemu-devel
  Cc: Thomas Huth, Sergio Lopez, Richard Henderson, qemu-ppc,
	Philippe Mathieu-Daudé

isa_get_irq() was added in commit 3a38d437ca
("Add isa_reserve_irq()" Fri Aug 14 11:36:15 2009) as:

    a temporary interface to be used to allocate ISA IRQs for
    devices which have not yet been converted to qdev, and for
    special cases which are not suited for qdev conversions,
    such as the 'ferr'.

We still use it 14 years later, using the global 'isabus'
singleton. In order to get rid of such *temporary* interface,
extract isa_bus_get_irq() which can take any ISABus* object.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/isa/isa-bus.c     | 14 ++++++++++----
 include/hw/isa/isa.h |  8 ++++++++
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
index d12973103f..4cf26510bf 100644
--- a/hw/isa/isa-bus.c
+++ b/hw/isa/isa-bus.c
@@ -72,6 +72,13 @@ void isa_bus_register_input_irqs(ISABus *bus, qemu_irq *irqs_in)
     bus->irqs_in = irqs_in;
 }
 
+qemu_irq isa_bus_get_irq(ISABus *bus, unsigned irqnum)
+{
+    assert(irqnum < ISA_NUM_IRQS);
+    assert(bus->irqs_in);
+    return bus->irqs_in[irqnum];
+}
+
 /*
  * isa_get_irq() returns the corresponding input qemu_irq entry for the i8259.
  *
@@ -81,14 +88,13 @@ void isa_bus_register_input_irqs(ISABus *bus, qemu_irq *irqs_in)
 qemu_irq isa_get_irq(ISADevice *dev, unsigned isairq)
 {
     assert(!dev || ISA_BUS(qdev_get_parent_bus(DEVICE(dev))) == isabus);
-    assert(isairq < ISA_NUM_IRQS);
-    return isabus->irqs_in[isairq];
+    return isa_bus_get_irq(isabus, isairq);
 }
 
 void isa_connect_gpio_out(ISADevice *isadev, int gpioirq, unsigned isairq)
 {
-    qemu_irq irq = isa_get_irq(isadev, isairq);
-    qdev_connect_gpio_out(DEVICE(isadev), gpioirq, irq);
+    qemu_irq input_irq = isa_get_irq(isadev, isairq);
+    qdev_connect_gpio_out(DEVICE(isadev), gpioirq, input_irq);
 }
 
 void isa_bus_dma(ISABus *bus, IsaDma *dma8, IsaDma *dma16)
diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
index 0aa36d4115..ba62a2e6c8 100644
--- a/include/hw/isa/isa.h
+++ b/include/hw/isa/isa.h
@@ -76,6 +76,14 @@ ISABus *isa_bus_new(DeviceState *dev, MemoryRegion *address_space,
 void isa_bus_register_input_irqs(ISABus *bus, qemu_irq *irqs_in);
 void isa_bus_dma(ISABus *bus, IsaDma *dma8, IsaDma *dma16);
 IsaDma *isa_get_dma(ISABus *bus, int nchan);
+/**
+ * isa_bus_get_irq: Return input IRQ on ISA bus.
+ * @bus: the #ISABus to plug ISA devices on.
+ * @irqnum: the ISA IRQ number.
+ *
+ * Return IRQ @irqnum from the PIC associated on ISA @bus.
+ */
+qemu_irq isa_bus_get_irq(ISABus *bus, unsigned irqnum);
 ISADevice *isa_new(const char *name);
 ISADevice *isa_try_new(const char *name);
 bool isa_realize_and_unref(ISADevice *dev, ISABus *bus, Error **errp);
-- 
2.38.1



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

* Re: [PATCH 01/11] hw/intc/i8259: Document i8259_init()
  2023-02-10 16:37 ` [PATCH 01/11] hw/intc/i8259: Document i8259_init() Philippe Mathieu-Daudé
@ 2023-02-11 17:09   ` Richard Henderson
  0 siblings, 0 replies; 20+ messages in thread
From: Richard Henderson @ 2023-02-11 17:09 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel
  Cc: Thomas Huth, Sergio Lopez, qemu-ppc, Michael S. Tsirkin, Paolo Bonzini

On 2/10/23 06:37, Philippe Mathieu-Daudé wrote:
> i8259_init() helper creates a i8259 device on an ISA bus,
> connects its IRQ output to the parent's input IRQ, and
> returns an array of 16 ISA input IRQs.
> 
> Signed-off-by: Philippe Mathieu-Daudé<philmd@linaro.org>
> ---
>   hw/intc/i8259.c         |  4 ++--
>   include/hw/intc/i8259.h | 10 +++++++++-
>   2 files changed, 11 insertions(+), 3 deletions(-)

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

r~


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

* Re: [PATCH 02/11] hw/isa/i82378: Rename output IRQ as 'cpu_intr'
  2023-02-10 16:37 ` [PATCH 02/11] hw/isa/i82378: Rename output IRQ as 'cpu_intr' Philippe Mathieu-Daudé
@ 2023-02-11 17:10   ` Richard Henderson
  0 siblings, 0 replies; 20+ messages in thread
From: Richard Henderson @ 2023-02-11 17:10 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel
  Cc: Thomas Huth, Sergio Lopez, qemu-ppc, Hervé Poussineau

On 2/10/23 06:37, Philippe Mathieu-Daudé wrote:
> Commit a04ff94097 ("prep: Add i82378 PCI-to-ISA bridge
> emulation") aimed to model the 2 output IRQs: CPU intr
> and NMI. Commit 5039d6e235 ("i8257: remove cpu_request_exit
> irq") removed the NMI IRQ.
> Since this model only use the CPU interrupt, replace the
> 'out[2]' array by a single 'cpu_intr'.
> 
> Signed-off-by: Philippe Mathieu-Daudé<philmd@linaro.org>
> ---
>   hw/isa/i82378.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)

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

r~


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

* Re: [PATCH 03/11] hw/isa/i82378: Remove intermediate IRQ forwarder
  2023-02-10 16:37 ` [PATCH 03/11] hw/isa/i82378: Remove intermediate IRQ forwarder Philippe Mathieu-Daudé
@ 2023-02-11 17:13   ` Richard Henderson
  0 siblings, 0 replies; 20+ messages in thread
From: Richard Henderson @ 2023-02-11 17:13 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel
  Cc: Thomas Huth, Sergio Lopez, qemu-ppc, Philippe Mathieu-Daudé,
	Hervé Poussineau

On 2/10/23 06:37, Philippe Mathieu-Daudé wrote:
> From: Philippe Mathieu-Daudé<f4bug@amsat.org>
> 
> When the i82378 model was added in commit a04ff940974 ("prep:
> Add i82378 PCI-to-ISA bridge emulation") the i8259 model was
> not yet QOM'ified. This happened later in commit 747c70af78f
> ("i8259: Convert to qdev").
> 
> Directly dispatch ISA IRQs to 'cpu_intr' output IRQ
> by removing the intermediate i82378_request_out0_irq()
> handler. Rename ISA IRQs array as 'isa_irqs_in' to
> emphasize these are input IRQs.
> 
> Signed-off-by: Philippe Mathieu-Daudé<f4bug@amsat.org>
> Signed-off-by: Philippe Mathieu-Daudé<philmd@linaro.org>
> ---
>   hw/isa/i82378.c | 15 ++++-----------
>   1 file changed, 4 insertions(+), 11 deletions(-)

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

r~


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

* Re: [PATCH 05/11] hw/mips/jazz: Rename ISA input IRQs as 'isa_irqs_in'
  2023-02-10 16:37 ` [PATCH 05/11] hw/mips/jazz: Rename ISA input IRQs as 'isa_irqs_in' Philippe Mathieu-Daudé
@ 2023-02-11 17:18   ` Richard Henderson
  0 siblings, 0 replies; 20+ messages in thread
From: Richard Henderson @ 2023-02-11 17:18 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel
  Cc: Thomas Huth, Sergio Lopez, qemu-ppc, Hervé Poussineau,
	Aleksandar Rikalo, Jiaxun Yang

On 2/10/23 06:37, Philippe Mathieu-Daudé wrote:
> The following code:
> 
>       /* ISA devices */
>       i8259 = i8259_init(isa_bus, ...);
> 
> gives the false idea that the function is creating a i8259
> device. Instead this function returns an array of input IRQs.
> Rename the variable to clarify:
> 
>       /* ISA devices */
>       isa_irqs_in = i8259_init(isa_bus, ...);
> 
> Signed-off-by: Philippe Mathieu-Daudé<philmd@linaro.org>
> ---
>   hw/mips/jazz.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)

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

r~


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

* Re: [PATCH 06/11] hw/sparc64/sun4u: Keep reference to ISA input IRQs in EbusState
  2023-02-10 16:37 ` [PATCH 06/11] hw/sparc64/sun4u: Keep reference to ISA input IRQs in EbusState Philippe Mathieu-Daudé
@ 2023-02-11 17:30   ` Richard Henderson
  0 siblings, 0 replies; 20+ messages in thread
From: Richard Henderson @ 2023-02-11 17:30 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel
  Cc: Thomas Huth, Sergio Lopez, qemu-ppc, Mark Cave-Ayland, Artyom Tarasenko

On 2/10/23 06:37, Philippe Mathieu-Daudé wrote:
> Keep reference to ISA input IRQs in EbusState.
> 
> To emphasize input/output distinction, rename arrays
> as isa_irqs_in / isa_irqs_out.
> 
> Signed-off-by: Philippe Mathieu-Daudé<philmd@linaro.org>
> ---
>   hw/sparc64/sun4u.c | 12 ++++++------
>   1 file changed, 6 insertions(+), 6 deletions(-)

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

r~


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

* Re: [PATCH 07/11] hw/isa: Reorder to separate ISABus* vs ISADevice* functions
  2023-02-10 16:37 ` [PATCH 07/11] hw/isa: Reorder to separate ISABus* vs ISADevice* functions Philippe Mathieu-Daudé
@ 2023-02-11 17:32   ` Richard Henderson
  0 siblings, 0 replies; 20+ messages in thread
From: Richard Henderson @ 2023-02-11 17:32 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel
  Cc: Thomas Huth, Sergio Lopez, qemu-ppc

On 2/10/23 06:37, Philippe Mathieu-Daudé wrote:
> Separate functions taking an ISABus* argument versus
> functions taking a ISADevice* one.
> 
> Signed-off-by: Philippe Mathieu-Daudé<philmd@linaro.org>
> ---
>   include/hw/isa/isa.h | 9 +++++----
>   1 file changed, 5 insertions(+), 4 deletions(-)

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

r~


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

* Re: [PATCH 09/11] hw/isa: Rename isa_bus_irqs() -> isa_bus_register_input_irqs()
  2023-02-10 16:37 ` [PATCH 09/11] hw/isa: Rename isa_bus_irqs() -> isa_bus_register_input_irqs() Philippe Mathieu-Daudé
@ 2023-02-11 17:37   ` Richard Henderson
  0 siblings, 0 replies; 20+ messages in thread
From: Richard Henderson @ 2023-02-11 17:37 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel
  Cc: Thomas Huth, Sergio Lopez, qemu-ppc, Helge Deller, Paolo Bonzini,
	Eduardo Habkost, Michael S. Tsirkin, Marcel Apfelbaum,
	Hervé Poussineau, Aurelien Jarno, Huacai Chen, Jiaxun Yang,
	Aleksandar Rikalo, Cédric Le Goater, Mark Cave-Ayland,
	Artyom Tarasenko

On 2/10/23 06:37, Philippe Mathieu-Daudé wrote:
> isa_bus_irqs() register an array of input IRQs on
> the ISA bus. Rename it as isa_bus_register_input_irqs().
> 
> Mechanical change using:
> 
>   $ sed -i -e 's/isa_bus_irqs/isa_bus_register_input_irqs/g' \
>     $(git grep -wl isa_bus_irqs)
> 
> Signed-off-by: Philippe Mathieu-Daudé<philmd@linaro.org>
> ---
>   hw/hppa/machine.c    | 2 +-
>   hw/i386/microvm.c    | 2 +-
>   hw/i386/pc_piix.c    | 2 +-
>   hw/isa/i82378.c      | 2 +-
>   hw/isa/isa-bus.c     | 8 ++++----
>   hw/isa/lpc_ich9.c    | 2 +-
>   hw/isa/piix4.c       | 2 +-
>   hw/isa/vt82c686.c    | 2 +-
>   hw/mips/jazz.c       | 2 +-
>   hw/ppc/pnv_lpc.c     | 2 +-
>   hw/sparc64/sun4u.c   | 2 +-
>   include/hw/isa/isa.h | 4 ++--
>   12 files changed, 16 insertions(+), 16 deletions(-)

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

r~


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

* Re: [PATCH 11/11] hw/isa: Factor isa_bus_get_irq() out of isa_get_irq()
  2023-02-10 16:37 ` [PATCH 11/11] hw/isa: Factor isa_bus_get_irq() out of isa_get_irq() Philippe Mathieu-Daudé
@ 2023-02-11 17:46   ` Richard Henderson
  0 siblings, 0 replies; 20+ messages in thread
From: Richard Henderson @ 2023-02-11 17:46 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel
  Cc: Thomas Huth, Sergio Lopez, qemu-ppc

On 2/10/23 06:37, Philippe Mathieu-Daudé wrote:
> isa_get_irq() was added in commit 3a38d437ca
> ("Add isa_reserve_irq()" Fri Aug 14 11:36:15 2009) as:
> 
>      a temporary interface to be used to allocate ISA IRQs for
>      devices which have not yet been converted to qdev, and for
>      special cases which are not suited for qdev conversions,
>      such as the 'ferr'.
> 
> We still use it 14 years later, using the global 'isabus'
> singleton. In order to get rid of such*temporary*  interface,
> extract isa_bus_get_irq() which can take any ISABus* object.
> 
> Signed-off-by: Philippe Mathieu-Daudé<philmd@linaro.org>
> ---
>   hw/isa/isa-bus.c     | 14 ++++++++++----
>   include/hw/isa/isa.h |  8 ++++++++
>   2 files changed, 18 insertions(+), 4 deletions(-)

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

r~


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

end of thread, other threads:[~2023-02-11 17:47 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-10 16:37 [PATCH 00/11] hw/isa: More housekeeping Philippe Mathieu-Daudé
2023-02-10 16:37 ` [PATCH 01/11] hw/intc/i8259: Document i8259_init() Philippe Mathieu-Daudé
2023-02-11 17:09   ` Richard Henderson
2023-02-10 16:37 ` [PATCH 02/11] hw/isa/i82378: Rename output IRQ as 'cpu_intr' Philippe Mathieu-Daudé
2023-02-11 17:10   ` Richard Henderson
2023-02-10 16:37 ` [PATCH 03/11] hw/isa/i82378: Remove intermediate IRQ forwarder Philippe Mathieu-Daudé
2023-02-11 17:13   ` Richard Henderson
2023-02-10 16:37 ` [PATCH 04/11] hw/isa/vt82c686: " Philippe Mathieu-Daudé
2023-02-10 16:37 ` [PATCH 05/11] hw/mips/jazz: Rename ISA input IRQs as 'isa_irqs_in' Philippe Mathieu-Daudé
2023-02-11 17:18   ` Richard Henderson
2023-02-10 16:37 ` [PATCH 06/11] hw/sparc64/sun4u: Keep reference to ISA input IRQs in EbusState Philippe Mathieu-Daudé
2023-02-11 17:30   ` Richard Henderson
2023-02-10 16:37 ` [PATCH 07/11] hw/isa: Reorder to separate ISABus* vs ISADevice* functions Philippe Mathieu-Daudé
2023-02-11 17:32   ` Richard Henderson
2023-02-10 16:37 ` [PATCH 08/11] hw/isa: Un-inline isa_bus_from_device() Philippe Mathieu-Daudé
2023-02-10 16:37 ` [PATCH 09/11] hw/isa: Rename isa_bus_irqs() -> isa_bus_register_input_irqs() Philippe Mathieu-Daudé
2023-02-11 17:37   ` Richard Henderson
2023-02-10 16:37 ` [PATCH 10/11] hw/isa: Use isa_address_space_io() to reduce access on global 'isabus' Philippe Mathieu-Daudé
2023-02-10 16:37 ` [PATCH 11/11] hw/isa: Factor isa_bus_get_irq() out of isa_get_irq() Philippe Mathieu-Daudé
2023-02-11 17:46   ` Richard Henderson

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.