From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Bjorn Helgaas <helgaas@kernel.org>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
Alexey Kardashevskiy <aik@ozlabs.ru>,
linuxppc-dev <linuxppc-dev@lists.ozlabs.org>,
Michael Ellerman <mpe@ellerman.id.au>,
Paul Mackerras <paulus@ozlabs.org>, Rob Herring <robh@kernel.org>,
Alistair Popple <alistair@popple.id.au>,
linux-pci@vger.kernel.org
Subject: Re: [PATCH kernel] powerpc/pci: Fix broken INTx configuration via OF
Date: Fri, 09 Feb 2018 09:50:43 +1100 [thread overview]
Message-ID: <1518130243.2312.221.camel@kernel.crashing.org> (raw)
In-Reply-To: <20180208224205.GA206223@bhelgaas-glaptop.roam.corp.google.com>
On Thu, 2018-02-08 at 16:42 -0600, Bjorn Helgaas wrote:
> On Fri, Feb 09, 2018 at 09:21:43AM +1100, Benjamin Herrenschmidt wrote:
> > On Thu, 2018-02-08 at 15:39 -0600, Bjorn Helgaas wrote:
> > > I don't understand how this fix works. We used to check the result of
> > > of_irq_parse_and_map_pci() and entered the block if it was zero.
> > >
> > > Now you enter the block if it is zero or less than zero, but:
> > >
> > > static int pci_read_irq_line(...)
> > > {
> > > unsigned int virq = 0; /* unnecessarily initialized, BTW */
> > >
> > > virq = of_irq_parse_and_map_pci(pci_dev, 0, 0);
> > > if (virq <= 0) {
> > > ...
> > >
> > > virq is unsigned, so "virq < 0" can never be true. So how does this
> > > change anything?
> >
> > Yes it does:
> >
> > So the unsigned thing is a second bug in the original patch that Alexey
> > isn't fixing, we need to fix it too.
> >
> > However, the actual bug Alexey is fixing is that we lost the actual
> > value of virq. IE, without his fix, we test it for 0 but we don't
> > actually return it if it's positive.
>
> Ah, I see, the bug is that we discarded the non-zero virq value when
> we actually need it. I'm going to wait for a new patch with a
> changelog that says that and doesn't test an unsigned value for < 0.
>
> > So he fixes the normal case but there's still a bug in the error case,
> > we need to make virq signed.
>
> I looked through the of_irq_parse_and_map_pci() path and I do not see
> a case where it can return a negative value. It either returns zero
> or one of these:
>
> virq = irq_find_mapping(...)
> virq = irq_create_mapping(...)
>
> Both of these functions return unsigned values.
Ok so the test is just wrong then. Aleey, can you respin ?
Cheers,
Ben.
next prev parent reply other threads:[~2018-02-08 22:50 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-08 5:33 [PATCH kernel] powerpc/pci: Fix broken INTx configuration via OF Alexey Kardashevskiy
2018-02-08 19:20 ` Bjorn Helgaas
2018-02-08 21:39 ` Bjorn Helgaas
2018-02-08 22:21 ` Benjamin Herrenschmidt
2018-02-08 22:42 ` Bjorn Helgaas
2018-02-08 22:50 ` Benjamin Herrenschmidt [this message]
2018-02-08 19:46 ` Rob Herring
2018-02-09 4:00 ` [kernel] " Michael Ellerman
2018-02-09 4:20 ` Alexey Kardashevskiy
2018-02-09 5:34 ` Michael Ellerman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1518130243.2312.221.camel@kernel.crashing.org \
--to=benh@kernel.crashing.org \
--cc=aik@ozlabs.ru \
--cc=alistair@popple.id.au \
--cc=bhelgaas@google.com \
--cc=helgaas@kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=paulus@ozlabs.org \
--cc=robh@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.