Commit 02b6505c authored by Alistair Popple's avatar Alistair Popple Committed by Michael Ellerman

powerpc/powernv: Increase opal-irqchip initcall priority

The eeh subsystem for powernv requires the opal event irqchip to be
initialised prior to initialisation or the following errors are
produced (and eeh doesn't work as expected):

irq: XICS didn't like hwirq-0x9 to VIRQ17 mapping (rc=-22)
pnv_eeh_post_init: Can't request OPAL event interrupt (0)

On powernv eeh is initialised from a subsys_initcall due to a check
for machine_is(powernv) in eeh_init(). This patch increases the
initcall priority of opal_event_init() to an arch_initcall to ensure
the opal event interface is initialised prior to any users of it.
Signed-off-by: default avatarAlistair Popple <alistair@popple.id.au>
Reported-by: default avatarDaniel Axtens <dja@axtens.net>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 3609d819
...@@ -231,6 +231,7 @@ int __init opal_event_init(void) ...@@ -231,6 +231,7 @@ int __init opal_event_init(void)
of_node_put(opal_node); of_node_put(opal_node);
return rc; return rc;
} }
machine_arch_initcall(powernv, opal_event_init);
/** /**
* opal_event_request(unsigned int opal_event_nr) - Request an event * opal_event_request(unsigned int opal_event_nr) - Request an event
...@@ -244,6 +245,9 @@ int __init opal_event_init(void) ...@@ -244,6 +245,9 @@ int __init opal_event_init(void)
*/ */
int opal_event_request(unsigned int opal_event_nr) int opal_event_request(unsigned int opal_event_nr)
{ {
if (WARN_ON_ONCE(!opal_event_irqchip.domain))
return NO_IRQ;
return irq_create_mapping(opal_event_irqchip.domain, opal_event_nr); return irq_create_mapping(opal_event_irqchip.domain, opal_event_nr);
} }
EXPORT_SYMBOL(opal_event_request); EXPORT_SYMBOL(opal_event_request);
...@@ -657,9 +657,6 @@ static int __init opal_init(void) ...@@ -657,9 +657,6 @@ static int __init opal_init(void)
return -ENODEV; return -ENODEV;
} }
/* Initialise OPAL events */
opal_event_init();
/* Register OPAL consoles if any ports */ /* Register OPAL consoles if any ports */
if (firmware_has_feature(FW_FEATURE_OPALv2)) if (firmware_has_feature(FW_FEATURE_OPALv2))
consoles = of_find_node_by_path("/ibm,opal/consoles"); consoles = of_find_node_by_path("/ibm,opal/consoles");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment