I noticed that the PCI domain in VPP is limited to 16 bits.
This is a problem on Azure/Hyper-V and other virtual environments.
In these environments, the host will generate a 32 bit synthetic value
when passing a PCI device through. The Linux kernel has 32 bit PCI 
domains, and libpciaccess used by X now has 32 bit PCI domains.
The PCI specification says domain is supposed to be 32 bit so this is
not just Linux/Hyper-V issue.

Unfortunately, VPP has 16 bit PCI domain hard coded. This is not a show
stopper now because the main use of PCI is for SR-IOV passthrough. In the
passthrough case, the VF is taken over by other devices and the actual PCI
value is not something VPP has to worry about directly. With DPDK today,
this is done via TAP/FAILSAFE/VDEV_NETVSC devices. The issue would only be
visible with direct device assignment.

Fixing it in not too hard (only in pci.h) but it would cause the device
union to get larger and all the places as_u32 is used would have to become
as_u64. Mostly mechanical, but always a possibility of errors.
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#10654): https://lists.fd.io/g/vpp-dev/message/10654
Mute This Topic: https://lists.fd.io/mt/26219976/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to