[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 1/5] ppc64: Allocate IRQ lines with qdev_init_gpio_in()
From: |
Cédric Le Goater |
Subject: |
[PATCH 1/5] ppc64: Allocate IRQ lines with qdev_init_gpio_in() |
Date: |
Tue, 5 Jul 2022 16:58:10 +0200 |
This replaces the IRQ array 'irq_inputs' with GPIO lines, the goal
being to remove 'irq_inputs' when all CPUs have been converted.
Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
hw/intc/xics.c | 10 ++++++----
hw/intc/xive.c | 4 ++--
hw/ppc/mac_newworld.c | 8 ++++----
hw/ppc/ppc.c | 15 +++------------
4 files changed, 15 insertions(+), 22 deletions(-)
diff --git a/hw/intc/xics.c b/hw/intc/xics.c
index 24e67020dbf3..5b0b4d962427 100644
--- a/hw/intc/xics.c
+++ b/hw/intc/xics.c
@@ -301,23 +301,25 @@ void icp_reset(ICPState *icp)
static void icp_realize(DeviceState *dev, Error **errp)
{
ICPState *icp = ICP(dev);
+ PowerPCCPU *cpu;
CPUPPCState *env;
Error *err = NULL;
assert(icp->xics);
assert(icp->cs);
- env = &POWERPC_CPU(icp->cs)->env;
+ cpu = POWERPC_CPU(icp->cs);
+ env = &cpu->env;
switch (PPC_INPUT(env)) {
case PPC_FLAGS_INPUT_POWER7:
- icp->output = env->irq_inputs[POWER7_INPUT_INT];
+ icp->output = qdev_get_gpio_in(DEVICE(cpu), POWER7_INPUT_INT);
break;
case PPC_FLAGS_INPUT_POWER9: /* For SPAPR xics emulation */
- icp->output = env->irq_inputs[POWER9_INPUT_INT];
+ icp->output = qdev_get_gpio_in(DEVICE(cpu), POWER9_INPUT_INT);
break;
case PPC_FLAGS_INPUT_970:
- icp->output = env->irq_inputs[PPC970_INPUT_INT];
+ icp->output = qdev_get_gpio_in(DEVICE(cpu), PPC970_INPUT_INT);
break;
default:
diff --git a/hw/intc/xive.c b/hw/intc/xive.c
index ae221fed732f..a986b96843e7 100644
--- a/hw/intc/xive.c
+++ b/hw/intc/xive.c
@@ -695,8 +695,8 @@ static void xive_tctx_realize(DeviceState *dev, Error
**errp)
env = &cpu->env;
switch (PPC_INPUT(env)) {
case PPC_FLAGS_INPUT_POWER9:
- tctx->hv_output = env->irq_inputs[POWER9_INPUT_HINT];
- tctx->os_output = env->irq_inputs[POWER9_INPUT_INT];
+ tctx->hv_output = qdev_get_gpio_in(DEVICE(cpu), POWER9_INPUT_HINT);
+ tctx->os_output = qdev_get_gpio_in(DEVICE(cpu), POWER9_INPUT_INT);
break;
default:
diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index c865921bdc05..22405dd27a7c 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -276,16 +276,16 @@ static void ppc_core99_init(MachineState *machine)
#if defined(TARGET_PPC64)
case PPC_FLAGS_INPUT_970:
openpic_irqs[i].irq[OPENPIC_OUTPUT_INT] =
- ((qemu_irq *)env->irq_inputs)[PPC970_INPUT_INT];
+ qdev_get_gpio_in(DEVICE(cpu), PPC970_INPUT_INT);
openpic_irqs[i].irq[OPENPIC_OUTPUT_CINT] =
- ((qemu_irq *)env->irq_inputs)[PPC970_INPUT_INT];
+ qdev_get_gpio_in(DEVICE(cpu), PPC970_INPUT_INT);
openpic_irqs[i].irq[OPENPIC_OUTPUT_MCK] =
- ((qemu_irq *)env->irq_inputs)[PPC970_INPUT_MCP];
+ qdev_get_gpio_in(DEVICE(cpu), PPC970_INPUT_MCP);
/* Not connected ? */
openpic_irqs[i].irq[OPENPIC_OUTPUT_DEBUG] = NULL;
/* Check this */
openpic_irqs[i].irq[OPENPIC_OUTPUT_RESET] =
- ((qemu_irq *)env->irq_inputs)[PPC970_INPUT_HRESET];
+ qdev_get_gpio_in(DEVICE(cpu), PPC970_INPUT_HRESET);
break;
#endif /* defined(TARGET_PPC64) */
default:
diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c
index fea70df45e69..15f2b5f0f07a 100644
--- a/hw/ppc/ppc.c
+++ b/hw/ppc/ppc.c
@@ -234,10 +234,7 @@ static void ppc970_set_irq(void *opaque, int pin, int
level)
void ppc970_irq_init(PowerPCCPU *cpu)
{
- CPUPPCState *env = &cpu->env;
-
- env->irq_inputs = (void **)qemu_allocate_irqs(&ppc970_set_irq, cpu,
- PPC970_INPUT_NB);
+ qdev_init_gpio_in(DEVICE(cpu), ppc970_set_irq, PPC970_INPUT_NB);
}
/* POWER7 internal IRQ controller */
@@ -260,10 +257,7 @@ static void power7_set_irq(void *opaque, int pin, int
level)
void ppcPOWER7_irq_init(PowerPCCPU *cpu)
{
- CPUPPCState *env = &cpu->env;
-
- env->irq_inputs = (void **)qemu_allocate_irqs(&power7_set_irq, cpu,
- POWER7_INPUT_NB);
+ qdev_init_gpio_in(DEVICE(cpu), power7_set_irq, POWER7_INPUT_NB);
}
/* POWER9 internal IRQ controller */
@@ -292,10 +286,7 @@ static void power9_set_irq(void *opaque, int pin, int
level)
void ppcPOWER9_irq_init(PowerPCCPU *cpu)
{
- CPUPPCState *env = &cpu->env;
-
- env->irq_inputs = (void **)qemu_allocate_irqs(&power9_set_irq, cpu,
- POWER9_INPUT_NB);
+ qdev_init_gpio_in(DEVICE(cpu), power9_set_irq, POWER9_INPUT_NB);
}
#endif /* defined(TARGET_PPC64) */
--
2.35.3
- [PATCH 0/5] ppc: Remove irq_inputs, Cédric Le Goater, 2022/07/05
- [PATCH 2/5] ppc/40x: Allocate IRQ lines with qdev_init_gpio_in(), Cédric Le Goater, 2022/07/05
- [PATCH 1/5] ppc64: Allocate IRQ lines with qdev_init_gpio_in(),
Cédric Le Goater <=
- [PATCH 3/5] ppc/6xx: Allocate IRQ lines with qdev_init_gpio_in(), Cédric Le Goater, 2022/07/05
- [PATCH 4/5] ppc/e500: Allocate IRQ lines with qdev_init_gpio_in(), Cédric Le Goater, 2022/07/05
- [PATCH 5/5] ppc: Remove unused irq_inputs, Cédric Le Goater, 2022/07/05
- Re: [PATCH 0/5] ppc: Remove irq_inputs, Mark Cave-Ayland, 2022/07/11
- Re: [PATCH 0/5] ppc: Remove irq_inputs, Peter Maydell, 2022/07/11
- Re: [PATCH 0/5] ppc: Remove irq_inputs, Daniel Henrique Barboza, 2022/07/11