aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2022-11-25 11:52:39 +0000
committerPeter Maydell <peter.maydell@linaro.org>2022-12-16 15:59:07 +0000
commita359da4c62a59d400c3081160b1105e2fd8e719e (patch)
tree1a1814b952f3a4ff4ab9ff25110a8b26bd40fd84
parent36cdc8b3b87b8a42933b1987ad00cbe1c1a6f6d8 (diff)
downloadqemu-a359da4c62a59d400c3081160b1105e2fd8e719e.zip
qemu-a359da4c62a59d400c3081160b1105e2fd8e719e.tar.gz
qemu-a359da4c62a59d400c3081160b1105e2fd8e719e.tar.bz2
hw/intc/xics: Convert TYPE_ICS to 3-phase reset
Convert the TYPE_ICS class to 3-phase reset; this will allow us to convert the TYPE_PHB3_MSI class which inherits from it. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Tested-by: Daniel Henrique Barboza <danielhb413@gmail.com> Reviewed-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: Greg Kurz <groug@kaod.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-id: 20221125115240.3005559-7-peter.maydell@linaro.org
-rw-r--r--hw/intc/xics.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/hw/intc/xics.c b/hw/intc/xics.c
index dd13046..c7f8abd 100644
--- a/hw/intc/xics.c
+++ b/hw/intc/xics.c
@@ -564,9 +564,9 @@ static void ics_reset_irq(ICSIRQState *irq)
irq->saved_priority = 0xff;
}
-static void ics_reset(DeviceState *dev)
+static void ics_reset_hold(Object *obj)
{
- ICSState *ics = ICS(dev);
+ ICSState *ics = ICS(obj);
g_autofree uint8_t *flags = g_malloc(ics->nr_irqs);
int i;
@@ -584,7 +584,7 @@ static void ics_reset(DeviceState *dev)
if (kvm_irqchip_in_kernel()) {
Error *local_err = NULL;
- ics_set_kvm_state(ICS(dev), &local_err);
+ ics_set_kvm_state(ics, &local_err);
if (local_err) {
error_report_err(local_err);
}
@@ -688,16 +688,17 @@ static Property ics_properties[] = {
static void ics_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
+ ResettableClass *rc = RESETTABLE_CLASS(klass);
dc->realize = ics_realize;
device_class_set_props(dc, ics_properties);
- dc->reset = ics_reset;
dc->vmsd = &vmstate_ics;
/*
* Reason: part of XICS interrupt controller, needs to be wired up,
* e.g. by spapr_irq_init().
*/
dc->user_creatable = false;
+ rc->phases.hold = ics_reset_hold;
}
static const TypeInfo ics_info = {