summaryrefslogtreecommitdiffstats
path: root/sys/arm64
diff options
context:
space:
mode:
authorzbb <zbb@FreeBSD.org>2016-04-07 10:36:50 +0000
committerzbb <zbb@FreeBSD.org>2016-04-07 10:36:50 +0000
commitfa19c68f9fc264035f6529ad9e6c229e27bdb83a (patch)
tree0eee11463de472a2bc5c044f2e3bd7226b945bb6 /sys/arm64
parentd7c17f7512ce19f20a6db9d6cd29668a69ba14c7 (diff)
downloadFreeBSD-src-fa19c68f9fc264035f6529ad9e6c229e27bdb83a.zip
FreeBSD-src-fa19c68f9fc264035f6529ad9e6c229e27bdb83a.tar.gz
Fix interrupts delivery on ThunderX for VF IDs beyond 8
SR-IOV devices usually use Alternative Routing ID (ARI). In that case slot/device is always assumed to be 0 and function/identifier is extended to 8 bits. Fix interrupts delivery to VF IDs beyond 8 by using a correct DevID if ARI is enabled. Reviewed by: jhb, wma Obtained from: Semihalf Sponsored by: Cavium Differential Revision: https://reviews.freebsd.org/D5855
Diffstat (limited to 'sys/arm64')
-rw-r--r--sys/arm64/arm64/gic_v3_its.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/sys/arm64/arm64/gic_v3_its.c b/sys/arm64/arm64/gic_v3_its.c
index c847f95..aef6346 100644
--- a/sys/arm64/arm64/gic_v3_its.c
+++ b/sys/arm64/arm64/gic_v3_its.c
@@ -1579,9 +1579,7 @@ its_get_devid_thunder(device_t pci_dev)
uint32_t bus;
bus = pci_get_bus(pci_dev);
-
- bsf = PCI_RID(pci_get_bus(pci_dev), pci_get_slot(pci_dev),
- pci_get_function(pci_dev));
+ bsf = pci_get_rid(pci_dev);
/* Check if accessing internal PCIe (low bus numbers) */
if (bus < GIC_V3_ITS_QUIRK_THUNDERX_PEM_BUS_OFFSET) {
OpenPOWER on IntegriCloud