[dpdk-dev] ethdev: support PCI domains

Message ID 1469201650-32447-1-git-send-email-okaya@codeaurora.org (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers

Commit Message

Sinan Kaya July 22, 2016, 3:34 p.m. UTC
  The current code is enumerating devices based on bus, device and function
pairs. This does not work well for architectures with multiple PCI
segments/domains. Multiple PCI devices will have the same BDF value but
different segment numbers (01:01:01.0 and 02:01:01.0) for instance.

Adding segment numbers to device naming so that we can uniquely identify
devices.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 lib/librte_ether/rte_ethdev.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
  

Comments

Stephen Hemminger July 22, 2016, 9:12 p.m. UTC | #1
On Fri, 22 Jul 2016 11:34:10 -0400
Sinan Kaya <okaya@codeaurora.org> wrote:

> The current code is enumerating devices based on bus, device and function
> pairs. This does not work well for architectures with multiple PCI
> segments/domains. Multiple PCI devices will have the same BDF value but
> different segment numbers (01:01:01.0 and 02:01:01.0) for instance.
> 
> Adding segment numbers to device naming so that we can uniquely identify
> devices.
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>

I ran into this yes. There is a small risk of breaking some application that
assumed something about names though.

Acked-by: Stephen Hemminger <stephen@networkplumber.org>
  
Sinan Kaya July 22, 2016, 10:56 p.m. UTC | #2
On 7/22/2016 5:12 PM, Stephen Hemminger wrote:
> On Fri, 22 Jul 2016 11:34:10 -0400
> Sinan Kaya <okaya@codeaurora.org> wrote:
> 
>> The current code is enumerating devices based on bus, device and function
>> pairs. This does not work well for architectures with multiple PCI
>> segments/domains. Multiple PCI devices will have the same BDF value but
>> different segment numbers (01:01:01.0 and 02:01:01.0) for instance.
>>
>> Adding segment numbers to device naming so that we can uniquely identify
>> devices.
>>
>> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> 
> I ran into this yes. There is a small risk of breaking some application that
> assumed something about names though.
> 
> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
> 

Thanks, hopefully the change is minor and can be contained until next release.
  
Thomas Monjalon Oct. 4, 2016, 8:15 a.m. UTC | #3
2016-07-22 18:56, Sinan Kaya:
> On 7/22/2016 5:12 PM, Stephen Hemminger wrote:
> > On Fri, 22 Jul 2016 11:34:10 -0400
> > Sinan Kaya <okaya@codeaurora.org> wrote:
> > 
> >> The current code is enumerating devices based on bus, device and function
> >> pairs. This does not work well for architectures with multiple PCI
> >> segments/domains. Multiple PCI devices will have the same BDF value but
> >> different segment numbers (01:01:01.0 and 02:01:01.0) for instance.
> >>
> >> Adding segment numbers to device naming so that we can uniquely identify
> >> devices.
> >>
> >> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> > 
> > I ran into this yes. There is a small risk of breaking some application that
> > assumed something about names though.
> > 
> > Acked-by: Stephen Hemminger <stephen@networkplumber.org>
> > 
> 
> Thanks, hopefully the change is minor and can be contained until next release.

It is part of the EAL rework.
The function has been moved in EAL and includes the PCI domain:
	http://dpdk.org/commit/affe1cdc
  
Sinan Kaya Oct. 4, 2016, 1:59 p.m. UTC | #4
On 10/4/2016 4:15 AM, Thomas Monjalon wrote:
> 2016-07-22 18:56, Sinan Kaya:
>> On 7/22/2016 5:12 PM, Stephen Hemminger wrote:
>>> On Fri, 22 Jul 2016 11:34:10 -0400
>>> Sinan Kaya <okaya@codeaurora.org> wrote:
>>>
>>>> The current code is enumerating devices based on bus, device and function
>>>> pairs. This does not work well for architectures with multiple PCI
>>>> segments/domains. Multiple PCI devices will have the same BDF value but
>>>> different segment numbers (01:01:01.0 and 02:01:01.0) for instance.
>>>>
>>>> Adding segment numbers to device naming so that we can uniquely identify
>>>> devices.
>>>>
>>>> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
>>>
>>> I ran into this yes. There is a small risk of breaking some application that
>>> assumed something about names though.
>>>
>>> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
>>>
>>
>> Thanks, hopefully the change is minor and can be contained until next release.
> 
> It is part of the EAL rework.
> The function has been moved in EAL and includes the PCI domain:
> 	http://dpdk.org/commit/affe1cdc
> 

Thanks for taking care of it.
  

Patch

diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
index 0a6e3f1..929240f 100644
--- a/lib/librte_ether/rte_ethdev.c
+++ b/lib/librte_ether/rte_ethdev.c
@@ -226,7 +226,8 @@  rte_eth_dev_create_unique_device_name(char *name, size_t size,
 {
 	int ret;
 
-	ret = snprintf(name, size, "%d:%d.%d",
+	ret = snprintf(name, size, "%d:%d:%d.%d",
+			pci_dev->addr.domain,
 			pci_dev->addr.bus, pci_dev->addr.devid,
 			pci_dev->addr.function);
 	if (ret < 0)