Bug#891674: Patch to fix the problem
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)
Reply to: