While working on SR-IOV support on Azure, it was discovered that some applications and drivers do not support full size PCI domains. On Azure environment the PCI pass through device has a synthetic domain value (ie generated by host) which is > 16 bits.
The common PCI utilities (pci-utils) and Linux kernel both support full 32 bits but DPDK does not. FreeBSD also supports 32 bit domains. Changing the one place in DPDK (rte_pci.h) in source is trivial but of course it is a major ABI breakage which is a complete flag day. I.e no binary compatiabilty is possible.