[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH v3 19/24] ppc/xics: move the ICP array under the sPAPR
From: |
Cédric Le Goater |
Subject: |
[Qemu-ppc] [PATCH v3 19/24] ppc/xics: move the ICP array under the sPAPR machine |
Date: |
Fri, 24 Feb 2017 11:18:18 +0100 |
This is the last step to remove the XICSState abstraction and have the
machine hold all the objects related to interrupts : ICSs and ICPs.
Signed-off-by: Cédric Le Goater <address@hidden>
---
hw/ppc/spapr.c | 17 ++++++++---------
include/hw/ppc/spapr.h | 3 +++
include/hw/ppc/xics.h | 2 --
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index ae9a59b226c7..032c8ab008d8 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -123,15 +123,15 @@ static XICSState *try_create_xics(sPAPRMachineState
*spapr,
goto error;
}
- xics->ss = g_malloc0(nr_servers * sizeof(ICPState));
- xics->nr_servers = nr_servers;
+ spapr->icps = g_malloc0(nr_servers * sizeof(ICPState));
+ spapr->nr_servers = nr_servers;
for (i = 0; i < nr_servers; i++) {
- ICPState *icp = &xics->ss[i];
+ ICPState *icp = &spapr->icps[i];
object_initialize(icp, sizeof(*icp), type_icp);
qdev_set_parent_bus(DEVICE(icp), sysbus_get_default());
- object_property_add_child(OBJECT(xics), "icp[*]", OBJECT(icp), NULL);
+ object_property_add_child(OBJECT(spapr), "icp[*]", OBJECT(icp), NULL);
object_property_add_const_link(OBJECT(icp), "xics", OBJECT(xics),
NULL);
object_property_set_bool(OBJECT(icp), true, "realized", &err);
if (err) {
@@ -965,7 +965,7 @@ static void *spapr_build_fdt(sPAPRMachineState *spapr,
_FDT(fdt_setprop_cell(fdt, 0, "#size-cells", 2));
/* /interrupt controller */
- spapr_dt_xics(spapr->xics->nr_servers, fdt, PHANDLE_XICP);
+ spapr_dt_xics(spapr->nr_servers, fdt, PHANDLE_XICP);
ret = spapr_populate_memory(spapr, fdt);
if (ret < 0) {
@@ -2928,8 +2928,7 @@ static ICPState *spapr_icp_get(XICSFabric *xi, int server)
{
sPAPRMachineState *spapr = SPAPR_MACHINE(xi);
- return (server < spapr->xics->nr_servers) ? &spapr->xics->ss[server] :
- NULL;
+ return (server < spapr->nr_servers) ? &spapr->icps[server] : NULL;
}
static void spapr_icp_resend(XICSFabric *xi)
@@ -2937,8 +2936,8 @@ static void spapr_icp_resend(XICSFabric *xi)
sPAPRMachineState *spapr = SPAPR_MACHINE(xi);
int i;
- for (i = 0; i < spapr->xics->nr_servers; i++) {
- icp_resend(xi, &spapr->xics->ss[i]);
+ for (i = 0; i < spapr->nr_servers; i++) {
+ icp_resend(xi, &spapr->icps[i]);
}
}
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index 21e506b13cfa..f5bbb040f941 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -95,6 +95,9 @@ struct sPAPRMachineState {
/*< public >*/
char *kvm_type;
MemoryHotplugState hotplug_memory;
+
+ uint32_t nr_servers;
+ ICPState *icps;
};
#define H_SUCCESS 0
diff --git a/include/hw/ppc/xics.h b/include/hw/ppc/xics.h
index 879853cc69c2..332a96b51d1c 100644
--- a/include/hw/ppc/xics.h
+++ b/include/hw/ppc/xics.h
@@ -80,8 +80,6 @@ struct XICSState {
/*< private >*/
DeviceState parent_obj;
/*< public >*/
- uint32_t nr_servers;
- ICPState *ss;
};
#define TYPE_ICP "icp"
--
2.7.4
- [Qemu-ppc] [PATCH v3 09/24] ppc/xics: use the QOM interface to get irqs, (continued)
- [Qemu-ppc] [PATCH v3 09/24] ppc/xics: use the QOM interface to get irqs, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 10/24] ppc/xics: use the QOM interface to resend irqs, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 11/24] ppc/xics: remove xics_find_source(), Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 12/24] ppc/xics: register the reset handler of ICS objects, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 13/24] ppc/xics: remove the XICS list of ICS, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 14/24] ppc/xics: extend the QOM interface to handle ICPs, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 15/24] ppc/xics: simplify the cpu_setup() handler, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 16/24] ppc/xics: use the QOM interface to grab an ICP, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 17/24] ppc/xics: simplify spapr_dt_xics() interface, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 18/24] ppc/xics: register the reset handler of ICP objects, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 19/24] ppc/xics: move the ICP array under the sPAPR machine,
Cédric Le Goater <=
- [Qemu-ppc] [PATCH v3 20/24] ppc/xics: move kernel_xics_fd out of KVMXICSState, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 21/24] ppc/xics: move the cpu_setup() handler under the ICPState class, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 22/24] ppc/xics: remove the 'xics' backlinks, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 23/24] ppc/xics: export the XICS init routines, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 24/24] ppc/xics: remove the XICSState classes, Cédric Le Goater, 2017/02/24
- Re: [Qemu-ppc] [PATCH v3 00/24] ppc/xics: simplify ICS and ICP creation, Cédric Le Goater, 2017/02/24