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] -=-=-=-=-=-=-=-=-=-=-=-