[PATCH] powerpc/pci: Only do fixed PHB numbering on powernv
Michael Ellerman
mpe at ellerman.id.au
Tue Aug 9 10:32:35 AEST 2016
"Guilherme G. Piccoli" <gpiccoli at linux.vnet.ibm.com> writes:
> On 08/07/2016 08:48 PM, Gavin Shan wrote:
>> On Fri, Aug 05, 2016 at 04:40:56PM +1000, Michael Ellerman wrote:
>>> The recent commit 63a72284b159 ("powerpc/pci: Assign fixed PHB number
>>> based on device-tree properties"), added code to read a 64-bit property
>>>from the device tree, and if not found read a 32-bit property (reg).
>>>
>>> There was a bug in the 32-bit case, on big endian machines, due to the
>>> use of the 64-bit value to read the 32-bit property. The cast of &prop
>>> means we end up writing to the high 32-bit of prop, leaving the low
>>> 32-bits containing whatever junk was on the stack.
>>>
>>> If that junk value was non-zero, and < MAX_PHBS, we would end up using
>>> it as the PHB id.
>>>
>>> This exposed a second problem, which is that Xorg can't cope with a
>>> domain number > 256.
>>>
>>> So for now drop the fallback to reg, and only use "ibm,opal-phbid" for
>>> PHB numbering.
>>>
>>> Fixes: 63a72284b159 ("powerpc/pci: Assign fixed PHB number based on device-tree properties")
>>> Signed-off-by: Michael Ellerman <mpe at ellerman.id.au>
>>> ---
>>> arch/powerpc/kernel/pci-common.c | 24 +++++++++---------------
>>> 1 file changed, 9 insertions(+), 15 deletions(-)
>>>
>>>
>>> This is my bad. Guilherme limited the reg case to pseries only, but I made it
>>> generic. I tested it on G5, Cell etc. which all booted - but that's not really
>>> a good enough test.
>
> Michael and Gavin, thanks very much for fixing and commenting on the
> issue. I'm sorry about the bug on Big Endian machines, my mistake! I'll
> fix it in a future patch, but right now I have 2 questions so I can
> investigate better the issue found on Xorg:
>
> (i) What is the specific issue? Do you have some logs or at least a
> "high-level" description of the problem in Xorg? I took a look in its
> code and PCI domain is coded as u16, which is correct/expected. So it
> seems a subtle bug we should investigate and hopefully fix.
It was reported here:
https://lists.ozlabs.org/pipermail/linuxppc-dev/2016-August/147062.html
It seems xorg just has a hard coded limit of 256 domains.
> (ii) Why is it related to the absence of pseries check?! You said this
> was your bad, but as far as I understand, Xorg runs in pSeries too so
> the issue should also be there heheh
Well yes I guess it would, if anyone had tested Xorg on pseries :)
> The bug was reported/found in another platform?
Yeah pasemi, see the email above.
On closer inspection I also see it on my G5, ie. the domain numbers are
random, but the machine doesn't mind (because I don't run xorg).
> As Gavin pointed, the important/interesting part of the patch is related
> to pSeries, in which we have PHB hotplug and so the patch allows network
> adapters to work well in PHB hotplug scenario, even if using predictable
> naming. For now, I guess this fix is pretty good, but would be really
> important to have this feature on pSeries too - I'll put some effort in
> solving the Xorg bug.
I think for now I'm going to apply this, and we'll work out something
else later.
cheers
More information about the Linuxppc-dev
mailing list