* [PATCH] PCI: Fix device node for virtual bus
@ 2014-11-12 2:42 Gavin Shan
2014-11-12 2:55 ` Bjorn Helgaas
2014-11-20 23:11 ` Bjorn Helgaas
0 siblings, 2 replies; 8+ messages in thread
From: Gavin Shan @ 2014-11-12 2:42 UTC (permalink / raw)
To: linux-pci; +Cc: bhelgaas, Gavin Shan
pci_set_bus_of_node() sets virtual PCI bus's device node to PHB's
device node wrongly. The patch fixes the issue.
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
---
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
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] PCI: Fix device node for virtual bus
2014-11-12 2:42 [PATCH] PCI: Fix device node for virtual bus Gavin Shan
@ 2014-11-12 2:55 ` Bjorn Helgaas
2014-11-12 3:11 ` Gavin Shan
2014-11-20 23:11 ` Bjorn Helgaas
1 sibling, 1 reply; 8+ messages in thread
From: Bjorn Helgaas @ 2014-11-12 2:55 UTC (permalink / raw)
To: Gavin Shan; +Cc: linux-pci@vger.kernel.org
On Tue, Nov 11, 2014 at 7:42 PM, Gavin Shan <gwshan@linux.vnet.ibm.com> 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?
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").
Bjorn
> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
> ---
> 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
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] PCI: Fix device node for virtual bus
2014-11-12 2:55 ` Bjorn Helgaas
@ 2014-11-12 3:11 ` Gavin Shan
2014-11-12 4:08 ` Bjorn Helgaas
0 siblings, 1 reply; 8+ messages in thread
From: Gavin Shan @ 2014-11-12 3:11 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: Gavin Shan, linux-pci@vger.kernel.org
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@linux.vnet.ibm.com> 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.
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@linux.vnet.ibm.com>
>> ---
>> 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
>>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] PCI: Fix device node for virtual bus
2014-11-12 3:11 ` Gavin Shan
@ 2014-11-12 4:08 ` Bjorn Helgaas
2014-11-12 5:24 ` Gavin Shan
0 siblings, 1 reply; 8+ messages in thread
From: Bjorn Helgaas @ 2014-11-12 4:08 UTC (permalink / raw)
To: Gavin Shan; +Cc: linux-pci@vger.kernel.org
On Tue, Nov 11, 2014 at 8:11 PM, Gavin Shan <gwshan@linux.vnet.ibm.com> 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@linux.vnet.ibm.com> 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?
> 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@linux.vnet.ibm.com>
>>> ---
>>> 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
>>>
>>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] PCI: Fix device node for virtual bus
2014-11-12 4:08 ` Bjorn Helgaas
@ 2014-11-12 5:24 ` Gavin Shan
2014-11-12 19:02 ` Bjorn Helgaas
0 siblings, 1 reply; 8+ messages in thread
From: Gavin Shan @ 2014-11-12 5:24 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: Gavin Shan, linux-pci@vger.kernel.org
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@linux.vnet.ibm.com> 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@linux.vnet.ibm.com> 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@linux.vnet.ibm.com>
>>>> ---
>>>> 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
>>>>
>>>
>>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] PCI: Fix device node for virtual bus
2014-11-12 5:24 ` Gavin Shan
@ 2014-11-12 19:02 ` Bjorn Helgaas
2014-11-13 0:45 ` Gavin Shan
0 siblings, 1 reply; 8+ messages in thread
From: Bjorn Helgaas @ 2014-11-12 19:02 UTC (permalink / raw)
To: Gavin Shan; +Cc: linux-pci@vger.kernel.org
On Tue, Nov 11, 2014 at 10:24 PM, Gavin Shan <gwshan@linux.vnet.ibm.com> wrote:
> 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@linux.vnet.ibm.com> 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@linux.vnet.ibm.com> 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.
Well, that's not really the way I work. If somebody proposes a patch,
I expect the changelog to be an argument for why the patch is needed.
I'm not disagreeing with your patch; I'm just trying to get you to
provide the justification for it. I'm not an OF expert, so it's not
obvious to me. I probably could spend some time researching it and
convince myself, but I would rather have *you* convince me :)
>>> Yes, I guess it should be marked for stable if you don't object.
Once we know what the user-visible effect of this change is, it will
probably be obvious whether it should be marked for stable. If it
doesn't really fix anything, it probably should not go to stable.
Bjorn
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] PCI: Fix device node for virtual bus
2014-11-12 19:02 ` Bjorn Helgaas
@ 2014-11-13 0:45 ` Gavin Shan
0 siblings, 0 replies; 8+ messages in thread
From: Gavin Shan @ 2014-11-13 0:45 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: Gavin Shan, linux-pci@vger.kernel.org
On Wed, Nov 12, 2014 at 12:02:08PM -0700, Bjorn Helgaas wrote:
>On Tue, Nov 11, 2014 at 10:24 PM, Gavin Shan <gwshan@linux.vnet.ibm.com> wrote:
>> 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@linux.vnet.ibm.com> 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@linux.vnet.ibm.com> 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.
>
>Well, that's not really the way I work. If somebody proposes a patch,
>I expect the changelog to be an argument for why the patch is needed.
>I'm not disagreeing with your patch; I'm just trying to get you to
>provide the justification for it. I'm not an OF expert, so it's not
>obvious to me. I probably could spend some time researching it and
>convince myself, but I would rather have *you* convince me :)
>
Thank you for the detailed explaining. I'm trying to convince you.
Please drop it in case I fail :)
Basically, we have 3 types of buses with SR-IOV case inclusive:
(A) root bus leading from PHB; (B) normal bus leading from PCI
bridge; (C) virtual bus to hold SR-IOV VFs. A's device node is set
to PHB's device node and B's device node is equal to parent PCI
bridge's device node. So the device node of PCI bus is set that
one of parent device (either PHB or PCI bridge for A/B). For (C),
the bus's device node would be NULL, which is consistent with that
its parent device is NULL.
Kernel code can convert PCI bus to its corresponding device node
with function pci_bus_to_OF_node(). The code is usually unware
what type (PHB, PCI bridge or device) the device node is. With
current code, we poke the PHB device node for SR-IOV virtual buses.
and potentially wrong properties retrieved. I personally don't
think it's appropriate and it's worthy to have NULL device nodes
for those virtual buses.
>>>> Yes, I guess it should be marked for stable if you don't object.
>
>Once we know what the user-visible effect of this change is, it will
>probably be obvious whether it should be marked for stable. If it
>doesn't really fix anything, it probably should not go to stable.
>
Yep, it's not good candidate for stable.
Thanks,
Gavin
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] PCI: Fix device node for virtual bus
2014-11-12 2:42 [PATCH] PCI: Fix device node for virtual bus Gavin Shan
2014-11-12 2:55 ` Bjorn Helgaas
@ 2014-11-20 23:11 ` Bjorn Helgaas
1 sibling, 0 replies; 8+ messages in thread
From: Bjorn Helgaas @ 2014-11-20 23:11 UTC (permalink / raw)
To: Gavin Shan; +Cc: linux-pci
On Wed, Nov 12, 2014 at 01:42:43PM +1100, Gavin Shan wrote:
> pci_set_bus_of_node() sets virtual PCI bus's device node to PHB's
> device node wrongly. The patch fixes the issue.
>
> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Applied to pci/misc for v3.19, thanks!
Thanks for explaining this to me. It seems obvious now that I look at the
code.
> ---
> 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
>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-11-20 23:11 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-12 2:42 [PATCH] PCI: Fix device node for virtual bus Gavin Shan
2014-11-12 2:55 ` Bjorn Helgaas
2014-11-12 3:11 ` Gavin Shan
2014-11-12 4:08 ` Bjorn Helgaas
2014-11-12 5:24 ` Gavin Shan
2014-11-12 19:02 ` Bjorn Helgaas
2014-11-13 0:45 ` Gavin Shan
2014-11-20 23:11 ` Bjorn Helgaas
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).