On Tue, Nov 11, 2014 at 09:08:23PM -0700, Bjorn Helgaas wrote: >On Tue, Nov 11, 2014 at 8:11 PM, Gavin Shan <gwshan@xxxxxxxxxxxxxxxxxx> wrote: >> On Tue, Nov 11, 2014 at 07:55:19PM -0700, Bjorn Helgaas wrote: >>>On Tue, Nov 11, 2014 at 7:42 PM, Gavin Shan <gwshan@xxxxxxxxxxxxxxxxxx> wrote: >>>> pci_set_bus_of_node() sets virtual PCI bus's device node to PHB's >>>> device node wrongly. The patch fixes the issue. >>> >>>This needs more detail. How is this bug visible to users? Is there a >>>bug report? Is this a regression? Should it be marked for stable? >>> >> >> I don't have opened bug for it. I just found the problem (maybe not >> a problem) when reading the code: The original implementation binds >> PHB device-tree node with "virtual bus", which doesn't make sense. > >Does this result in something being wrong in sysfs? How is this bug >visible to users? > No, I don't think it caused anything wrong in sysfs. So I'm not sure it's a real problem and need the fix. Please judge. Thanks, Gavin >> Yes, I guess it should be marked for stable if you don't object. >> >>>We use "virtual bus" to refer to buses created for SR-IOV VFs that are >>>not on the same bus as the PF. These virtual buses have no bridge >>>device leading to them. But I think you're talking about something >>>totally different. Or maybe that *is* what you're talking about, >>>since this patch resembles 2ba29e270e97 ("PCI: Use pci_is_root_bus() >>>to check for root bus"). >>> >> >> "virtual bus" here is the buses created for SR-IOV VFs. Yes, the >> code changes resembles commit 2ba29e270e97. >> >> Thanks, >> Gavin >> >>>Bjorn >>> >>>> Signed-off-by: Gavin Shan <gwshan@xxxxxxxxxxxxxxxxxx> >>>> --- >>>> drivers/pci/of.c | 4 ++-- >>>> 1 file changed, 2 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/drivers/pci/of.c b/drivers/pci/of.c >>>> index f092993..7b2256b 100644 >>>> --- a/drivers/pci/of.c >>>> +++ b/drivers/pci/of.c >>>> @@ -31,9 +31,9 @@ void pci_release_of_node(struct pci_dev *dev) >>>> >>>> void pci_set_bus_of_node(struct pci_bus *bus) >>>> { >>>> - if (bus->self == NULL) >>>> + if (pci_is_root_bus(bus)) >>>> bus->dev.of_node = pcibios_get_phb_of_node(bus); >>>> - else >>>> + else if (bus->self) >>>> bus->dev.of_node = of_node_get(bus->self->dev.of_node); >>>> } >>>> >>>> -- >>>> 1.8.3.2 >>>> >>> >> > -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html