Re: [PATCH] Fix pSeries boot failure, by returning interrupt controller node when an interrupt-map property doesn't exist

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Tue, 30 Jun 2015 13:23:33 +1000
, Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx>
 wrote:
> 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@xxxxxxxxx>
> 
> Reviewed-by: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx>
> ---
> 
> Rob, do you want to take this or should we ?

Merged, thanks.

Jeremy, please check your mailer configuration. The patch was mangled
and would not apply. I had to fix it up manually.

Also, does this patch need to be backported into stable? What commit
introduced this bug, and which kernel does it first appear in?

Thanks,
g.

> 
> > ---
> >  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
> 
> 

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux