@@ -145,6 +145,7 @@ cap_sriov(struct device *d, int where)
u16 b;
u16 w;
u32 l;
+ int i;
printf("Single Root I/O Virtualization (SR-IOV)\n");
if (verbose < 2)
@@ -181,6 +182,28 @@ cap_sriov(struct device *d, int where)
printf("\t\tSupported Page Size: %08x, ", l);
l = get_conf_long(d, where + PCI_IOV_SYSPS);
printf("System Page Size: %08x\n", l);
+ for (i=0; i<PCI_IOV_NUM_BAR; i++) {
+ pciaddr_t addr;
+ int type;
+ u32 h;
+ l = get_conf_long(d, where + PCI_IOV_BAR_BASE + (i*4));
+ if (l == 0xffffffff)
+ l = 0;
+ if (!l)
+ continue;
+ printf("\t\tRegion %d: Memory at ", i);
+ addr = l & PCI_ADDR_MEM_MASK;
+ type = l & PCI_BASE_ADDRESS_MEM_TYPE_MASK;
+ if (type == PCI_BASE_ADDRESS_MEM_TYPE_64) {
+ i++;
+ h = get_conf_long(d, where + PCI_IOV_BAR_BASE + (i*4));
+ addr |= (pciaddr_t)h<<32;
+ }
+ printf(PCIADDR_T_FMT, addr);
+ printf(" (%s-bit, %sprefetchable)\n",
+ (type == PCI_BASE_ADDRESS_MEM_TYPE_32) ? "32" : "64",
+ (l & PCI_BASE_ADDRESS_MEM_PREFETCH) ? "" : "non-");
+ }
l = get_conf_long(d, where + PCI_IOV_MSAO);
printf("\t\tVF Migration: offset: %08x, BIR: %x\n", PCI_IOV_MSA_OFFSET(l),
PCI_IOV_MSA_BIR(l));
When decoding the PCIe SR-IOV capability, cap_sriov() doesn't show the VF BARs. This patch shows basic information about the VF BARs (doesn't include size, for example). For example: ... Capabilities: [160] Single Root I/O Virtualization (SR-IOV) IOVCap: Migration-, Interrupt Message Number: 000 IOVCtl: Enable- Migration- Interrupt- MSE- ARIHierarchy+ IOVSta: Migration- Initial VFs: 8, Total VFs: 8, Number of VFs: 8, Function Depende ncy Link: 00 VF offset: 128, stride: 2, Device ID: 10ca Supported Page Size: 00000553, System Page Size: 00000001 Region 0: Memory at fbb20000 (64-bit, non-prefetchable) Region 3: Memory at fbb00000 (64-bit, non-prefetchable) VF Migration: offset: 00000000, BIR: 0 ... Capabilities: [170] Single Root I/O Virtualization (SR-IOV) IOVCap: Migration-, Interrupt Message Number: 000 IOVCtl: Enable- Migration- Interrupt- MSE- ARIHierarchy+ IOVSta: Migration- Initial VFs: 16, Total VFs: 16, Number of VFs: 16, Function Depe ndency Link: 00 VF offset: 1, stride: 1, Device ID: 5833 Supported Page Size: 000007ff, System Page Size: 00000001 Region 0: Memory at f0000000 (64-bit, prefetchable) Region 2: Memory at f8820000 (64-bit, prefetchable) Region 4: Memory at f8800000 (64-bit, prefetchable) VF Migration: offset: 00000000, BIR: 0 Signed-off-by: Chris Wright <chrisw@sous-sol.org> --- ls-ecaps.c | 23 +++++++++++++++++++++++ 1 files changed, 23 insertions(+), 0 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html