The linux kernel treats PCI domains as 32 bit ints. diff -ru libpciaccess-0.13.4/include/pciaccess.h libpciaccess-0.13.4-fixed/include/pciaccess.h --- libpciaccess-0.13.4/include/pciaccess.h 2015-05-01 14:44:47.000000000 +1000 +++ libpciaccess-0.13.4-fixed/include/pciaccess.h 2018-02-28 12:21:12.280963252 +1100 @@ -321,7 +321,7 @@ * the domain will always be zero. */ /*@{*/ - uint16_t domain; + uint32_t domain; uint8_t bus; uint8_t dev; uint8_t func; diff -ru libpciaccess-0.13.4/src/linux_sysfs.c libpciaccess-0.13.4-fixed/src/linux_sysfs.c --- libpciaccess-0.13.4/src/linux_sysfs.c 2015-05-01 14:44:47.000000000 +1000 +++ libpciaccess-0.13.4-fixed/src/linux_sysfs.c 2018-02-28 12:21:32.676941130 +1100 @@ -157,7 +157,7 @@ (struct pci_device_private *) &p->devices[i]; - sscanf(devices[i]->d_name, "%04x:%02x:%02x.%1u", + sscanf(devices[i]->d_name, "%x:%02x:%02x.%1u", & dom, & bus, & dev, & func); device->base.domain = dom;
-- Dr Peter Chubb Tel: +61 2 9490 5852 http://ts.data61.csiro.au/ Trustworthy Systems Group Data61 (formerly NICTA)