Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/pci - ARI's function group is not bit 32-24 but 22-20.
details: https://anonhg.NetBSD.org/src/rev/e82a633539ae
branches: trunk
changeset: 341685:e82a633539ae
user: msaitoh <msaitoh%NetBSD.org@localhost>
date: Tue Nov 17 18:26:50 2015 +0000
description:
- ARI's function group is not bit 32-24 but 22-20.
- Add the Structure Length field in AF capability register.
- Add Enhanced Allocation extended capability ID (ECN: Enhanced Allocation (EA)
for Memory and I/O Resources).
- Add LN System CLS (ECN: Lightweight Notification (LN) Protocol).
- Add ST Upper and Lower bit definitions (ECN: TLP Processiong Hints).
- Add the Global Invalidate bit in the ATS capability register and the PRG
Response PASID Required bit in the Page Request status register (ECN: PASID
Translation)
- Decode ASPM support bit more (ECN: ASPM Optionally)
- Use __BITS()
diffstat:
sys/dev/pci/pci_subr.c | 48 ++++++++++++++++++++++++++++++++++++------------
sys/dev/pci/pcireg.h | 19 +++++++++++++------
2 files changed, 49 insertions(+), 18 deletions(-)
diffs (212 lines):
diff -r 50f15412c973 -r e82a633539ae sys/dev/pci/pci_subr.c
--- a/sys/dev/pci/pci_subr.c Tue Nov 17 17:51:42 2015 +0000
+++ b/sys/dev/pci/pci_subr.c Tue Nov 17 18:26:50 2015 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: pci_subr.c,v 1.144 2015/11/17 17:51:42 msaitoh Exp $ */
+/* $NetBSD: pci_subr.c,v 1.145 2015/11/17 18:26:50 msaitoh Exp $ */
/*
* Copyright (c) 1997 Zubin D. Dittia. All rights reserved.
@@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pci_subr.c,v 1.144 2015/11/17 17:51:42 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pci_subr.c,v 1.145 2015/11/17 18:26:50 msaitoh Exp $");
#ifdef _KERNEL_OPT
#include "opt_pci.h"
@@ -1584,15 +1584,18 @@
printf(" Active State PM Support: ");
val = (reg & PCIE_LCAP_ASPM) >> 10;
switch (val) {
+ case 0x0:
+ printf("No ASPM support\n");
+ break;
case 0x1:
- printf("L0s Entry supported\n");
+ printf("L0s supported\n");
+ break;
+ case 0x2:
+ printf("L1 supported\n");
break;
case 0x3:
printf("L0s and L1 supported\n");
break;
- default:
- printf("Reserved value\n");
- break;
}
printf(" L0 Exit Latency: ");
pci_print_pcie_L0s_latency((reg & PCIE_LCAP_L0S_EXIT) >> 12);
@@ -1792,6 +1795,21 @@
onoff("LTR Mechanism Supported", reg, PCIE_DCAP2_LTR_MEC);
printf(" TPH Completer Supported: %u\n",
(unsigned int)(reg & PCIE_DCAP2_TPH_COMP) >> 12);
+ printf(" LN System CLS: ");
+ switch (__SHIFTOUT(reg, PCIE_DCAP2_LNSYSCLS)) {
+ case 0x0:
+ printf("Not supported or not in effect\n");
+ break;
+ case 0x1:
+ printf("64byte cachelines in effect\n");
+ break;
+ case 0x2:
+ printf("128byte cachelines in effect\n");
+ break;
+ case 0x3:
+ printf("Reserved\n");
+ break;
+ }
printf(" OBFF Supported: ");
switch ((reg & PCIE_DCAP2_OBFF) >> 18) {
case 0x0:
@@ -1907,13 +1925,14 @@
onoff("MSI-X Enable", reg, PCI_MSIX_CTL_ENABLE);
reg = regs[o2i(capoff + PCI_MSIX_TBLOFFSET)];
printf(" Table offset register: 0x%08x\n", reg);
- printf(" Table offset: %08x\n", reg & PCI_MSIX_TBLOFFSET_MASK);
- printf(" BIR: 0x%x\n", reg & PCI_MSIX_TBLBIR_MASK);
+ printf(" Table offset: %08x\n",
+ (pcireg_t)(reg & PCI_MSIX_TBLOFFSET_MASK));
+ printf(" BIR: 0x%x\n", (pcireg_t)(reg & PCI_MSIX_TBLBIR_MASK));
reg = regs[o2i(capoff + PCI_MSIX_PBAOFFSET)];
printf(" Pending bit array register: 0x%08x\n", reg);
printf(" Pending bit array offset: %08x\n",
- reg & PCI_MSIX_PBAOFFSET_MASK);
- printf(" BIR: 0x%x\n", reg & PCI_MSIX_PBABIR_MASK);
+ (pcireg_t)(reg & PCI_MSIX_PBAOFFSET_MASK));
+ printf(" BIR: 0x%x\n", (pcireg_t)(reg & PCI_MSIX_PBABIR_MASK));
}
static void
@@ -1951,6 +1970,8 @@
reg = regs[o2i(capoff + PCI_AFCAPR)];
printf(" AF Capabilities register: 0x%02x\n", (reg >> 24) & 0xff);
+ printf(" AF Structure Length: 0x%02x\n",
+ (pcireg_t)__SHIFTOUT(reg, PCI_AF_LENGTH));
onoff("Transaction Pending", reg, PCI_AF_TP_CAP);
onoff("Function Level Reset", reg, PCI_AF_FLR_CAP);
reg = regs[o2i(capoff + PCI_AFCSR)];
@@ -1989,7 +2010,8 @@
{ PCI_CAP_PCIEXPRESS, "PCI Express", pci_conf_print_pcie_cap },
{ PCI_CAP_MSIX, "MSI-X", pci_conf_print_msix_cap },
{ PCI_CAP_SATA, "SATA", pci_conf_print_sata_cap },
- { PCI_CAP_PCIAF, "Advanced Features", pci_conf_print_pciaf_cap }
+ { PCI_CAP_PCIAF, "Advanced Features", pci_conf_print_pciaf_cap},
+ { PCI_CAP_EA, "Enhanced Allocation", NULL }
};
static int
@@ -2674,6 +2696,7 @@
num = 32;
printf(" Invalidate Queue Depth: %u\n", num);
onoff("Page Aligned Request", reg, PCI_ATS_CAP_PALIGNREQ);
+ onoff("Global Invalidate", reg, PCI_ATS_CAP_GLOBALINVL);
printf(" Control register: 0x%04x\n", ctl);
printf(" Smallest Translation Unit: %u\n",
@@ -2889,6 +2912,7 @@
onoff("Unexpected Page Request Group Index", reg,
PCI_PAGE_REQ_STA_UPRGI);
onoff("Stopped", reg, PCI_PAGE_REQ_STA_S);
+ onoff("PRG Response PASID Required", reg, PCI_PAGE_REQ_STA_PASIDR);
reg = regs[o2i(extcapoff + PCI_PAGE_REQ_OUTSTCAPA)];
printf(" Outstanding Page Request Capacity: %u\n", reg);
@@ -2897,7 +2921,7 @@
}
/* XXX pci_conf_print_amd_cap */
-/* XXX pci_conf_print_resize_bar_cap */
+/* XXX pci_conf_print_resiz_bar_cap */
/* XXX pci_conf_print_dpa_cap */
static const char *
diff -r 50f15412c973 -r e82a633539ae sys/dev/pci/pcireg.h
--- a/sys/dev/pci/pcireg.h Tue Nov 17 17:51:42 2015 +0000
+++ b/sys/dev/pci/pcireg.h Tue Nov 17 18:26:50 2015 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: pcireg.h,v 1.110 2015/11/17 17:51:42 msaitoh Exp $ */
+/* $NetBSD: pcireg.h,v 1.111 2015/11/17 18:26:50 msaitoh Exp $ */
/*
* Copyright (c) 1995, 1996, 1999, 2000
@@ -539,6 +539,7 @@
#define PCI_CAP_MSIX 0x11
#define PCI_CAP_SATA 0x12
#define PCI_CAP_PCIAF 0x13
+#define PCI_CAP_EA 0x14 /* Enhanced Allocation (EA) */
/*
* Capability ID: 0x01
@@ -1006,6 +1007,7 @@
#define PCIE_DCAP2_NO_ROPR_PASS __BIT(10) /* No RO-enabled PR-PR Passng */
#define PCIE_DCAP2_LTR_MEC __BIT(11) /* LTR Mechanism Supported */
#define PCIE_DCAP2_TPH_COMP __BITS(13, 12) /* TPH Completer Supported */
+#define PCIE_DCAP2_LNSYSCLS __BITS(15, 14) /* LN System CLS */
#define PCIE_DCAP2_OBFF __BITS(19, 18) /* Optimized Buffer Flush/Fill*/
#define PCIE_DCAP2_EXTFMT_FLD __BIT(20) /* Extended Fmt Field Support */
#define PCIE_DCAP2_EETLP_PREF __BIT(21) /* End-End TLP Prefix Support */
@@ -1059,14 +1061,14 @@
* 2nd DWORD is the Table Offset
*/
#define PCI_MSIX_TBLOFFSET 0x04
-#define PCI_MSIX_TBLOFFSET_MASK 0xfffffff8
-#define PCI_MSIX_TBLBIR_MASK 0x00000007
+#define PCI_MSIX_TBLOFFSET_MASK __BITS(31, 3)
+#define PCI_MSIX_TBLBIR_MASK __BITS(2, 0)
/*
* 3rd DWORD is the Pending Bitmap Array Offset
*/
#define PCI_MSIX_PBAOFFSET 0x08
-#define PCI_MSIX_PBAOFFSET_MASK 0xfffffff8
-#define PCI_MSIX_PBABIR_MASK 0x00000007
+#define PCI_MSIX_PBAOFFSET_MASK __BITS(31, 3)
+#define PCI_MSIX_PBABIR_MASK __BITS(2, 0)
#define PCI_MSIX_TABLE_ENTRY_SIZE 16
#define PCI_MSIX_TABLE_ENTRY_ADDR_LO 0x0
@@ -1080,6 +1082,8 @@
uint32_t pci_msix_vector_control;
};
#define PCI_MSIX_VECTCTL_MASK __BIT(0)
+#define PCI_MSIX_VECTCTL_STLO __BITS(23, 16)
+#define PCI_MSIX_VECTCTL_STUP __BITS(31, 24)
/* Max number of MSI-X vectors. See PCI-SIG specification. */
#define PCI_MSIX_MAX_VECTORS 2048
@@ -1103,6 +1107,7 @@
*/
#define PCI_AFCAPR 0x00 /* Capabilities */
#define PCI_AFCAPR_MASK __BITS(31, 24)
+#define PCI_AF_LENGTH __BITS(23, 16) /* Structure Length */
#define PCI_AF_TP_CAP __BIT(24) /* Transaction Pending */
#define PCI_AF_FLR_CAP __BIT(25) /* Function Level Reset */
#define PCI_AFCSR 0x04 /* Control & Status register */
@@ -1646,7 +1651,7 @@
#define PCI_ARI_CTL 0x04 /* Control Register */
#define PCI_ARI_CTL_M __BIT(16) /* MFVC Function Groups Ena. */
#define PCI_ARI_CTL_A __BIT(17) /* ACS Function Groups Ena. */
-#define PCI_ARI_CTL_FUNCGRP __BITS(31, 24) /* Function Group */
+#define PCI_ARI_CTL_FUNCGRP __BITS(22, 20) /* Function Group */
/*
* Extended capability ID: 0x000f
@@ -1655,6 +1660,7 @@
#define PCI_ATS_CAP 0x04 /* Capability Register */
#define PCI_ATS_CAP_INVQDEPTH __BITS(4, 0) /* Invalidate Queue Depth */
#define PCI_ATS_CAP_PALIGNREQ __BIT(5) /* Page Aligned Request */
+#define PCI_ATS_CAP_GLOBALINVL __BIT(6) /* Global Invalidate Support */
#define PCI_ATS_CTL 0x04 /* Control Register */
#define PCI_ATS_CTL_STU __BITS(20, 16) /* Smallest Translation Unit */
#define PCI_ATS_CTL_EN __BIT(31) /* Enable */
@@ -1739,6 +1745,7 @@
#define PCI_PAGE_REQ_STA_RF __BIT(0+16) /* Response Failure */
#define PCI_PAGE_REQ_STA_UPRGI __BIT(1+16) /* Unexpected Page Req Grp Idx */
#define PCI_PAGE_REQ_STA_S __BIT(8+16) /* Stopped */
+#define PCI_PAGE_REQ_STA_PASIDR __BIT(15+16) /* PRG Response PASID Required */
#define PCI_PAGE_REQ_OUTSTCAPA 0x08 /* Outstanding Page Request Capacity */
#define PCI_PAGE_REQ_OUTSTALLOC 0x0c /* Outstanding Page Request Allocation */
Home |
Main Index |
Thread Index |
Old Index