[PATCH] Fix pSeries boot failure, by returning interrupt controller node when an interrupt-map property doesn't exist
Benjamin Herrenschmidt
benh at kernel.crashing.org
Tue Jun 30 13:23:33 AEST 2015
On Mon, 2015-06-29 at 18:50 -0500, Jeremy Linton wrote:
> This is a reformat of the patch attached to "pSeries boot failure due
> to wrong interrupt controller".
>
> It allows of_irq_parse_raw() to return the node pointer of the
> interrupt controller, rather than the parent bus. This allows
> ics_rtas_host_match() to detect that the controller is a legacy 8259
> and avoid using xics. This avoids an RTAS assertion/crash during early
> kernel bootstrapping
>
> Signed-off-by: Jeremy Linton <lintonrjeremy at gmail.com>
Reviewed-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
---
Rob, do you want to take this or should we ?
> ---
> drivers/of/irq.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/of/irq.c b/drivers/of/irq.c
> index 1a79806..cb4b9ae 100644
> --- a/drivers/of/irq.c
> +++ b/drivers/of/irq.c
> @@ -252,8 +252,6 @@ int of_irq_parse_raw(const __be32 *addr, struct
> of_phandle_args *out_irq)
> * Successfully parsed an interrrupt-map translation; copy new
> * interrupt specifier into the out_irq structure
> */
> - out_irq->np = newpar;
> -
> match_array = imap - newaddrsize - newintsize;
> for (i = 0; i < newintsize; i++)
> out_irq->args[i] = be32_to_cpup(imap - newintsize + i);
> @@ -262,6 +260,7 @@ int of_irq_parse_raw(const __be32 *addr, struct
> of_phandle_args *out_irq)
>
> skiplevel:
> /* Iterate again with new parent */
> + out_irq->np = newpar;
> pr_debug(" -> new parent: %s\n", of_node_full_name(newpar));
> of_node_put(ipar);
> ipar = newpar;
> --
> 1.8.1.4
More information about the Linuxppc-dev
mailing list