]> git.ipfire.org Git - thirdparty/pciutils.git/commitdiff
Flit Mode and Device 3 Capability
authorPaul Cassidy <paul.m.cassidy@gmail.com>
Fri, 28 Feb 2025 00:09:01 +0000 (00:09 +0000)
committerMartin Mareš <mj@ucw.cz>
Sun, 15 Jun 2025 20:50:07 +0000 (22:50 +0200)
lib/header.h
ls-caps.c
ls-ecaps.c
tests/cap-dev3 [new file with mode: 0644]
tests/cap-flitmode [new file with mode: 0644]

index 90da646dafc9c8073cfa3e628ed4c07a71fb74e4..9cef020c97cbd2ee2db49f21953480bdff450168 100644 (file)
 #define PCI_EXT_CAP_ID_ALT_PROT        0x2b    /* Alternate Protocol */
 #define PCI_EXT_CAP_ID_SFI     0x2c    /* System Firmware Intermediary */
 #define PCI_EXT_CAP_ID_DOE     0x2e    /* Data Object Exchange */
+#define PCI_EXT_CAP_ID_DEV3    0x2f    /* Device 3 */
 #define PCI_EXT_CAP_ID_IDE     0x30    /* Integrity and Data Encryption */
 #define PCI_EXT_CAP_ID_64GT    0x31    /* Physical Layer 64.0 GT/s */
 #define PCI_EXT_CAP_ID_FLIT_LOG        0x32    /* Flit Logging */
 #define  PCI_EXP_TYPE_ROOT_EC 0xa      /* Root Complex Event Collector */
 #define PCI_EXP_FLAGS_SLOT     0x0100  /* Slot implemented */
 #define PCI_EXP_FLAGS_IRQ      0x3e00  /* Interrupt message number */
+#define PCI_EXP_FLAGS_FLIT_MODE  0x8000  /* FLIT mode supported */
 #define PCI_EXP_DEVCAP         0x4     /* Device capabilities */
 #define  PCI_EXP_DEVCAP_PAYLOAD        0x07    /* Max_Payload_Size */
 #define  PCI_EXP_DEVCAP_PHANTOM        0x18    /* Phantom functions */
 #define  PCI_EXP_LNKCTL_HWAUTWD        0x0200  /* Hardware Autonomous Width Disable */
 #define  PCI_EXP_LNKCTL_BWMIE  0x0400  /* Bandwidth Mgmt Interrupt Enable */
 #define  PCI_EXP_LNKCTL_AUTBWIE        0x0800  /* Autonomous Bandwidth Mgmt Interrupt Enable */
+#define  PCI_EXP_LNKCTL_FLIT_MODE_DIS  0x2000      /* FLIT mode disable */
 #define PCI_EXP_LNKSTA         0x12    /* Link Status */
 #define  PCI_EXP_LNKSTA_SPEED  0x000f  /* Negotiated Link Speed */
 #define  PCI_EXP_LNKSTA_WIDTH  0x03f0  /* Negotiated Link Width */
 #define  PCI_EXP_LINKSTA2_CROSSLINK(x) (((x) >> 8) & 0x3) /* Crosslink Res */
 #define  PCI_EXP_LINKSTA2_COMPONENT(x) (((x) >> 12) & 0x7) /* Presence */
 #define  PCI_EXP_LINKSTA2_DRS_RCVD     0x8000  /* DRS Msg Received */
+#define  PCI_EXP_LINKSTA2_FLIT_MODE 0x0400  /* FLIT mode active */
 #define PCI_EXP_SLTCAP2                        0x34    /* Slot Capabilities */
 #define PCI_EXP_SLTCTL2                        0x38    /* Slot Control */
 #define PCI_EXP_SLTSTA2                        0x3a    /* Slot Status */
 #define PCI_LMR_PORT_STS_READY         0x1 /* Margining Ready */
 #define PCI_LMR_PORT_STS_SOFT_READY    0x2 /* Margining Software Ready */
 
+/* Device 3 Extended Capability */
+#define PCI_DEV3_DEVCAP3               0x04    /* Device Capabilities 3 */
+#define  PCI_DEV3_DEVCAP3_DMWR_REQ     0x0001  /* DMWr Request Routing Supported */
+#define  PCI_DEV3_DEVCAP3_14BIT_TAG_COMP       0x0002  /* 14-Bit Tag Completer Supported */
+#define  PCI_DEV3_DEVCAP3_14BIT_TAG_REQ        0x0004  /* 14-Bit Tag Requester Supported */
+#define  PCI_DEV3_DEVCAP3_L0P_SUPP     0x0008  /* L0p Supported */
+#define  PCI_DEV3_DEVCAP3_PORT_L0P_EXIT(x)     (((x) >> 4) & 0x7) /* Port L0p Exit Latency */
+#define  PCI_DEV3_DEVCAP3_RETIMER_L0P_EXIT(x)  (((x) >> 7) & 0x7) /* Retimer L0p Exit Latency */
+#define  PCI_DEV3_DEVCAP3_UIO_MEM_RDWR_COMP    0x0400  /* UIO Mem RdWr Completer Supported */
+#define  PCI_DEV3_DEVCAP3_UIO_MEM_RDWR_REQ     0x0800  /* UIO Mem RdWr Requester Supported */
+
+#define PCI_DEV3_DEVCTL3               0x08    /* Device Control 3 */
+#define  PCI_DEV3_DEVCTL3_DMWR_REQ_EN  0x0001  /* DMWr Requester Enable */
+#define  PCI_DEV3_DEVCTL3_DMWR_EGRESS_BLK      0x0002  /* DMWr Egress Blocking */
+#define  PCI_DEV3_DEVCTL3_14BIT_TAG_REQ_EN     0x0004  /* 14-Bit Tag Requester Enable */
+#define  PCI_DEV3_DEVCTL3_L0P_EN       0x0008  /* L0p Enable */
+#define  PCI_DEV3_DEVCTL3_TARGET_LINK_WIDTH(x) (((x) >> 4) & 0x7) /* Target Link Width */
+#define  PCI_DEV3_DEVCTL3_UIO_MEM_RDWR_REQ_EN  0x0080  /* UIO Mem RdWr Requester Enable */
+#define  PCI_DEV3_DEVCTL3_UIO_REQ_256B_DIS     0x0100  /* UIO Request 256B Boundary Disable */
+
+#define PCI_DEV3_DEVSTA3               0x0C    /* Device Status 3 */
+#define  PCI_DEV3_DEVSTA3_INIT_LINK_WIDTH(x)   ((x) & 0x7) /* Initial Link Width */
+#define  PCI_DEV3_DEVSTA3_SEGMENT_CAPTURED     0x0008  /* Segment Captured */
+#define  PCI_DEV3_DEVSTA3_REMOTE_L0P_SUPP      0x0010  /* Remote L0p Supported */
+
 /* Integrity and Data Encryption Extended Capability */
 #define PCI_IDE_CAP            0x4
 #define  PCI_IDE_CAP_LINK_IDE_SUPP     0x1     /* Link IDE Stream Supported */
index c2aaea573234d835be3d5825659888cdb228aa61..b4e626c573ed97fb27a7ec7d339dd4893ffcc27f 100644 (file)
--- a/ls-caps.c
+++ b/ls-caps.c
@@ -843,14 +843,15 @@ static void cap_express_link(struct device *d, int where, int type)
   if ((type == PCI_EXP_TYPE_ROOT_PORT) || (type == PCI_EXP_TYPE_ENDPOINT) ||
       (type == PCI_EXP_TYPE_LEG_END) || (type == PCI_EXP_TYPE_PCI_BRIDGE))
     printf(" RCB %d bytes,", w & PCI_EXP_LNKCTL_RCB ? 128 : 64);
-  printf(" LnkDisable%c CommClk%c\n\t\t\tExtSynch%c ClockPM%c AutWidDis%c BWInt%c AutBWInt%c\n",
+  printf(" LnkDisable%c CommClk%c\n\t\t\tExtSynch%c ClockPM%c AutWidDis%c BWInt%c AutBWInt%c FltModeDis%c\n",
        FLAG(w, PCI_EXP_LNKCTL_DISABLE),
        FLAG(w, PCI_EXP_LNKCTL_CLOCK),
        FLAG(w, PCI_EXP_LNKCTL_XSYNCH),
        FLAG(w, PCI_EXP_LNKCTL_CLOCKPM),
        FLAG(w, PCI_EXP_LNKCTL_HWAUTWD),
        FLAG(w, PCI_EXP_LNKCTL_BWMIE),
-       FLAG(w, PCI_EXP_LNKCTL_AUTBWIE));
+       FLAG(w, PCI_EXP_LNKCTL_AUTBWIE),
+       FLAG(w, PCI_EXP_LNKCTL_FLIT_MODE_DIS));
 
   w = get_conf_word(d, where + PCI_EXP_LNKSTA);
   sta_speed = w & PCI_EXP_LNKSTA_SPEED;
@@ -1366,7 +1367,7 @@ static void cap_express_link2(struct device *d, int where, int type)
   w = get_conf_word(d, where + PCI_EXP_LNKSTA2);
   printf("\t\tLnkSta2: Current De-emphasis Level: %s, EqualizationComplete%c EqualizationPhase1%c\n"
        "\t\t\t EqualizationPhase2%c EqualizationPhase3%c LinkEqualizationRequest%c\n"
-       "\t\t\t Retimer%c 2Retimers%c CrosslinkRes: %s",
+       "\t\t\t Retimer%c 2Retimers%c CrosslinkRes: %s, FltMode%c",
        cap_express_link2_deemphasis(PCI_EXP_LINKSTA2_DEEMPHASIS(w)),
        FLAG(w, PCI_EXP_LINKSTA2_EQU_COMP),
        FLAG(w, PCI_EXP_LINKSTA2_EQU_PHASE1),
@@ -1375,7 +1376,8 @@ static void cap_express_link2(struct device *d, int where, int type)
        FLAG(w, PCI_EXP_LINKSTA2_EQU_REQ),
        FLAG(w, PCI_EXP_LINKSTA2_RETIMER),
        FLAG(w, PCI_EXP_LINKSTA2_2RETIMERS),
-       cap_express_link2_crosslink_res(PCI_EXP_LINKSTA2_CROSSLINK(w)));
+       cap_express_link2_crosslink_res(PCI_EXP_LINKSTA2_CROSSLINK(w)),
+       FLAG(w, PCI_EXP_LINKSTA2_FLIT_MODE));
 
   if (exp_downstream_port(type) && (l & PCI_EXP_LNKCAP2_DRS)) {
     printf(", DRS%c\n"
@@ -1502,7 +1504,12 @@ cap_express(struct device *d, int where, int cap)
     default:
       printf("Unknown type %d", type);
   }
-  printf(", IntMsgNum %d\n", (cap & PCI_EXP_FLAGS_IRQ) >> 9);
+  printf(", IntMsgNum %d", (cap & PCI_EXP_FLAGS_IRQ) >> 9);
+  if (cap & PCI_EXP_FLAGS_FLIT_MODE)
+    printf(", FLIT Mode Supported\n");
+  else
+    printf("\n");
+
   if (verbose < 2)
     return type;
 
index 6d652bcee5b40bf5ee9fb523c6a94ceaad6b48a4..508b60725e1d2be354a2105a5d2240160f93310b 100644 (file)
@@ -1813,6 +1813,103 @@ cap_ide(struct device *d, int where)
       }
 }
 
+static const char *l0p_exit_latency(int value)
+{
+  static const char *latencies[] = {
+    "Less than 1us",
+    "1us to less than 2us",
+    "2us to less than 4us",
+    "4us to less than 8us",
+    "8us to less than 16us",
+    "16us to less than 32us",
+    "32us-64us",
+    "More than 64us"
+  };
+  
+  if (value >= 0 && value <= 7)
+    return latencies[value];
+  return "Unknown";
+}
+
+static const char *link_width_str(char *buf, size_t buflen, int width)
+{
+  switch (width)
+    {
+      case 0:
+        return "x1";
+      case 1:
+        return "x2";
+      case 2:
+        return "x4";
+      case 3:
+        return "x8";
+      case 4:
+        return "x16";
+      case 7:
+        return "Dynamic";
+      default:
+        snprintf(buf, buflen, "Unknown (%d)", width);
+        return buf;
+    }
+}
+
+static void
+cap_dev3(struct device *d, int where)
+{
+  u32 devcap3;
+  u16 devctl3, devsta3;
+  char buf[16];
+  
+  printf("Device 3\n");
+  
+  if (verbose < 2)
+    return;
+    
+  if (!config_fetch(d, where + PCI_DEV3_DEVCAP3, 4))
+    return;
+  devcap3 = get_conf_long(d, where + PCI_DEV3_DEVCAP3);
+  
+  printf("\t\tDevCap3: DMWr Request Routing%c, 14-Bit Tag Completer%c, 14-Bit Tag Requester%c\n"
+         "\t\t\t L0p%c",
+         FLAG(devcap3, PCI_DEV3_DEVCAP3_DMWR_REQ),
+         FLAG(devcap3, PCI_DEV3_DEVCAP3_14BIT_TAG_COMP),
+         FLAG(devcap3, PCI_DEV3_DEVCAP3_14BIT_TAG_REQ),
+         FLAG(devcap3, PCI_DEV3_DEVCAP3_L0P_SUPP));
+  
+  if (devcap3 & PCI_DEV3_DEVCAP3_L0P_SUPP)
+    printf(", Port L0p Exit Latency: %s, Retimer L0p Exit Latency: %s",
+           l0p_exit_latency(PCI_DEV3_DEVCAP3_PORT_L0P_EXIT(devcap3)),
+           l0p_exit_latency(PCI_DEV3_DEVCAP3_RETIMER_L0P_EXIT(devcap3)));
+  
+  printf("\n\t\t\t UIO Mem RdWr Completer%c, UIO Mem RdWr Requester%c\n",
+         FLAG(devcap3, PCI_DEV3_DEVCAP3_UIO_MEM_RDWR_COMP),
+         FLAG(devcap3, PCI_DEV3_DEVCAP3_UIO_MEM_RDWR_REQ));
+  
+  if (!config_fetch(d, where + PCI_DEV3_DEVCTL3, 2))
+    return;
+  devctl3 = get_conf_word(d, where + PCI_DEV3_DEVCTL3);
+  
+  printf("\t\tDevCtl3: DMWr Requester%c, DMWr Egress Blocking%c, 14-Bit Tag Requester%c\n"
+         "\t\t\t L0p%c, Target Link Width: %s\n"
+         "\t\t\t UIO Mem RdWr Requester%c, UIO Request 256B Boundary%c\n",
+         FLAG(devctl3, PCI_DEV3_DEVCTL3_DMWR_REQ_EN),
+         FLAG(devctl3, PCI_DEV3_DEVCTL3_DMWR_EGRESS_BLK),
+         FLAG(devctl3, PCI_DEV3_DEVCTL3_14BIT_TAG_REQ_EN),
+         FLAG(devctl3, PCI_DEV3_DEVCTL3_L0P_EN),
+         link_width_str(buf, sizeof(buf), PCI_DEV3_DEVCTL3_TARGET_LINK_WIDTH(devctl3)),
+         FLAG(devctl3, PCI_DEV3_DEVCTL3_UIO_MEM_RDWR_REQ_EN),
+         FLAG(~devctl3, PCI_DEV3_DEVCTL3_UIO_REQ_256B_DIS));
+  
+  if (!config_fetch(d, where + PCI_DEV3_DEVSTA3, 2))
+    return;
+  devsta3 = get_conf_word(d, where + PCI_DEV3_DEVSTA3);
+  
+  printf("\t\tDevSta3: Initial Link Width: %s, Segment Captured%c, Remote L0p%c\n",
+         link_width_str(buf, sizeof(buf), PCI_DEV3_DEVSTA3_INIT_LINK_WIDTH(devsta3)),
+         FLAG(devsta3, PCI_DEV3_DEVSTA3_SEGMENT_CAPTURED),
+         FLAG(devsta3, PCI_DEV3_DEVSTA3_REMOTE_L0P_SUPP));
+}
+
 void
 show_ext_caps(struct device *d, int type)
 {
@@ -1972,6 +2069,9 @@ show_ext_caps(struct device *d, int type)
          case PCI_EXT_CAP_ID_64GT:
            cap_phy_64gt(d, where);
            break;
+         case PCI_EXT_CAP_ID_DEV3:
+           cap_dev3(d, where);
+           break;
          default:
            printf("Extended Capability ID %#02x\n", id);
            break;
diff --git a/tests/cap-dev3 b/tests/cap-dev3
new file mode 100644 (file)
index 0000000..c9bc830
--- /dev/null
@@ -0,0 +1,324 @@
+01:00.0 Non-Volatile memory controller: Synopsys EPMockUp (rev 03) (prog-if 02 [NVM Express])
+       Subsystem: Synopsys EPMockUp
+       Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
+       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
+       Latency: 0, Cache Line Size: 64 bytes
+       Interrupt: pin A routed to IRQ 43
+       IOMMU group: 14
+       Region 0: Memory at fc800000 (64-bit, non-prefetchable) [size=16K]
+       Capabilities: [40] Power Management version 3
+               Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
+               Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
+       Capabilities: [50] MSI: Enable- Count=1/8 Maskable+ 64bit+
+               Address: 0000000000000000  Data: 0000
+               Masking: 00000000  Pending: 00000000
+       Capabilities: [70] Express (v2) Endpoint, MSI 00
+               DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
+                       ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 75W
+               DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
+                       RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop- FLReset-
+                       MaxPayload 128 bytes, MaxReadReq 512 bytes
+               DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr+ TransPend-
+               LnkCap: Port #0, Speed 8GT/s, Width x4, ASPM L1, Exit Latency L1 <8us
+                       ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
+               LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
+                       ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
+               LnkSta: Speed 8GT/s, Width x4
+                       TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
+               DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+
+                        10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
+                        EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
+                        FRS- TPHComp- ExtTPHComp-
+                        AtomicOpsCap: 32bit- 64bit- 128bitCAS-
+               DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled,
+                        AtomicOpsCtl: ReqEn-
+               LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
+               LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
+                        Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
+                        Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
+               LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+ EqualizationPhase1+
+                        EqualizationPhase2+ EqualizationPhase3+ LinkEqualizationRequest-
+                        Retimer- 2Retimers- CrosslinkRes: unsupported
+       Capabilities: [b0] MSI-X: Enable+ Count=16 Masked-
+               Vector table: BAR=0 offset=00002000
+               PBA: BAR=0 offset=00002100
+       Capabilities: [100 v2] Advanced Error Reporting
+               UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
+               UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
+               UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
+               CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
+               CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
+               AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
+                       MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
+               HeaderLog: 00000000 00000000 00000000 00000000
+       Capabilities: [158 v1] Secondary PCI Express
+               LnkCtl3: LnkEquIntrruptEn- PerformEqu-
+               LaneErrStat: 0
+       Capabilities: [178 v1] Latency Tolerance Reporting
+               Max snoop latency: 1048576ns
+               Max no snoop latency: 1048576ns
+       Capabilities: [180 v1] L1 PM Substates
+               L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
+                         PortCommonModeRestoreTime=10us PortTPowerOnTime=10us
+               L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
+                          T_CommonMode=0us LTR1.2_Threshold=32768ns
+               L1SubCtl2: T_PwrOn=10us
+       Kernel driver in use: nvme
+       Kernel modules: nvme
+00: c3 16 da ed 06 04 10 00 03 02 08 01 10 00 00 00
+10: 04 00 80 fc 00 00 00 00 00 00 00 00 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 c3 16 da ed
+30: 00 00 00 00 40 00 00 00 00 00 00 00 0b 01 00 00
+40: 01 50 03 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 05 70 86 01 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 10 b0 02 00 c0 8f 2c 11 1f 20 19 00 43 c8 45 00
+80: 42 01 43 10 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 1f 08 00 00 00 04 00 00 0e 00 00 00
+a0: 03 00 1f 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 11 00 0f 80 00 20 00 00 00 21 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+100: 01 00 82 15 00 00 00 00 00 00 40 00 30 20 46 00
+110: 00 00 00 00 00 e0 00 00 a0 00 00 00 00 00 00 00
+120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+140: 00 00 00 00 00 00 00 00 04 00 81 15 00 00 00 00
+150: 00 00 00 00 01 00 00 00 19 00 81 17 00 00 00 00
+160: 00 00 00 00 00 37 00 37 00 37 00 37 00 00 00 00
+170: 00 00 00 00 00 00 00 00 18 00 01 18 01 10 01 10
+180: 1e 00 01 30 1f 0a 28 00 00 00 01 60 28 00 00 00
+190: 16 00 01 1c 1f 11 80 ff 00 00 00 00 00 01 00 00
+1a0: 20 1f 1e 1d 1c 1b 1a 19 18 17 16 15 14 13 12 11
+1b0: 10 0f 0e 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01
+1c0: 22 00 c1 1c 00 00 00 80 00 00 00 00 0b 00 c1 2c
+1d0: 02 00 03 10 00 00 00 00 00 00 00 00 00 00 00 00
+1e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+1f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+210: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+220: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+230: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+240: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+250: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+270: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+280: 00 00 58 00 01 00 08 00 86 55 58 03 00 53 60 08
+290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+2a0: 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00
+2b0: 00 0a 0c 00 85 b9 40 36 00 00 00 00 00 00 00 00
+2c0: 00 00 00 00 00 00 00 00 00 00 00 00 0b 00 01 00
+2d0: 01 00 81 03 00 00 00 00 10 00 00 00 00 00 00 00
+2e0: 10 00 00 00 00 00 00 00 00 00 00 00 c0 00 c0 00
+2f0: c0 00 c0 00 01 00 00 00 00 00 00 00 00 00 00 00
+300: 2f 00 01 00 0f 0c 00 00 93 01 00 00 18 00 00 00
+310: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+320: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+330: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+340: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+350: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+3a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+3b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+3c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+3d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+3e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+3f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+410: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+430: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+440: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+450: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+470: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+4a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+4b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+4c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+4d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+4e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+4f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+510: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+530: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+540: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+550: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+590: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+5a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+5b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+5c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+5d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+5e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+5f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+610: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+620: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+630: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+640: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+650: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+6a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+6b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+6c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+6d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+6e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+6f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+700: 12 00 36 00 ff ff ff ff 00 00 00 70 00 46 0f 66
+710: 20 01 07 00 00 00 00 00 00 c0 00 00 40 01 00 00
+720: 00 00 00 00 01 00 00 00 91 cd 32 01 10 00 00 08
+730: fc 01 04 00 ff 0f 04 00 7c 00 02 00 00 00 00 00
+740: 0f 00 00 00 00 00 00 00 80 30 23 c0 16 30 23 00
+750: 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00
+760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+770: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+790: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+7a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+7b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+7c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+7d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+7e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+7f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+800: 00 00 00 00 00 00 00 00 00 00 00 00 80 01 01 00
+810: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+820: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+830: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+840: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+850: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+860: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+870: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+880: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+890: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+8a0: 00 00 00 00 00 00 00 00 20 b8 01 01 53 00 00 00
+8b0: 00 00 00 00 00 00 00 00 0f 00 00 00 00 00 00 00
+8c0: 80 00 00 00 44 00 00 00 00 00 00 00 01 00 00 32
+8d0: 00 a4 00 00 32 00 00 00 00 00 00 00 00 00 00 00
+8e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+8f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+900: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+910: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+920: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+930: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+940: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+950: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+960: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+970: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+990: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+9a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+9b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+9c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+9d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+9e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+9f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+aa0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ab0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ac0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ad0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ae0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+af0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b30: 46 88 46 88 00 00 00 00 00 00 00 00 00 00 00 00
+b40: 19 00 00 00 d2 00 00 00 00 00 00 00 00 00 00 00
+b50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ba0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+bb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+bc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+bd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+be0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+bf0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ca0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+cb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+cc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+cd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ce0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+cf0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+da0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+db0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+dc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+dd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+de0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+df0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ea0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+eb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ec0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ed0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ee0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ef0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+fa0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+fb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+fc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+fd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
diff --git a/tests/cap-flitmode b/tests/cap-flitmode
new file mode 100644 (file)
index 0000000..859141b
--- /dev/null
@@ -0,0 +1,324 @@
+01:00.0 Non-Volatile memory controller: Synopsys EPMockUp (rev 03) (prog-if 02 [NVM Express])
+       Subsystem: Synopsys EPMockUp
+       Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
+       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
+       Latency: 0, Cache Line Size: 64 bytes
+       Interrupt: pin A routed to IRQ 43
+       IOMMU group: 14
+       Region 0: Memory at fc800000 (64-bit, non-prefetchable) [size=16K]
+       Capabilities: [40] Power Management version 3
+               Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
+               Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
+       Capabilities: [50] MSI: Enable- Count=1/8 Maskable+ 64bit+
+               Address: 0000000000000000  Data: 0000
+               Masking: 00000000  Pending: 00000000
+       Capabilities: [70] Express (v2) Endpoint, MSI 00
+               DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
+                       ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 75W
+               DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
+                       RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop- FLReset-
+                       MaxPayload 128 bytes, MaxReadReq 512 bytes
+               DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr+ TransPend-
+               LnkCap: Port #0, Speed 8GT/s, Width x4, ASPM L1, Exit Latency L1 <8us
+                       ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
+               LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
+                       ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
+               LnkSta: Speed 8GT/s, Width x4
+                       TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
+               DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+
+                        10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
+                        EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
+                        FRS- TPHComp- ExtTPHComp-
+                        AtomicOpsCap: 32bit- 64bit- 128bitCAS-
+               DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled,
+                        AtomicOpsCtl: ReqEn-
+               LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
+               LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
+                        Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
+                        Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
+               LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+ EqualizationPhase1+
+                        EqualizationPhase2+ EqualizationPhase3+ LinkEqualizationRequest-
+                        Retimer- 2Retimers- CrosslinkRes: unsupported
+       Capabilities: [b0] MSI-X: Enable+ Count=16 Masked-
+               Vector table: BAR=0 offset=00002000
+               PBA: BAR=0 offset=00002100
+       Capabilities: [100 v2] Advanced Error Reporting
+               UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
+               UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
+               UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
+               CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
+               CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
+               AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
+                       MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
+               HeaderLog: 00000000 00000000 00000000 00000000
+       Capabilities: [158 v1] Secondary PCI Express
+               LnkCtl3: LnkEquIntrruptEn- PerformEqu-
+               LaneErrStat: 0
+       Capabilities: [178 v1] Latency Tolerance Reporting
+               Max snoop latency: 1048576ns
+               Max no snoop latency: 1048576ns
+       Capabilities: [180 v1] L1 PM Substates
+               L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
+                         PortCommonModeRestoreTime=10us PortTPowerOnTime=10us
+               L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
+                          T_CommonMode=0us LTR1.2_Threshold=32768ns
+               L1SubCtl2: T_PwrOn=10us
+       Kernel driver in use: nvme
+       Kernel modules: nvme
+00: c3 16 da ed 06 04 10 00 03 02 08 01 10 00 00 00
+10: 04 00 80 fc 00 00 00 00 00 00 00 00 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 c3 16 da ed
+30: 00 00 00 00 40 00 00 00 00 00 00 00 0b 01 00 00
+40: 01 50 03 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 05 70 86 01 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 10 b0 02 80 c0 8f 2c 11 1f 20 19 00 43 c8 45 00
+80: 42 21 43 10 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 1f 08 00 00 00 04 00 00 0e 00 00 00
+a0: 03 00 1f 04 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 11 00 0f 80 00 20 00 00 00 21 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+100: 01 00 82 15 00 00 00 00 00 00 40 00 30 20 46 00
+110: 00 00 00 00 00 e0 00 00 a0 00 00 00 00 00 00 00
+120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+140: 00 00 00 00 00 00 00 00 04 00 81 15 00 00 00 00
+150: 00 00 00 00 01 00 00 00 19 00 81 17 00 00 00 00
+160: 00 00 00 00 00 37 00 37 00 37 00 37 00 00 00 00
+170: 00 00 00 00 00 00 00 00 18 00 01 18 01 10 01 10
+180: 1e 00 01 30 1f 0a 28 00 00 00 01 60 28 00 00 00
+190: 16 00 01 1c 1f 11 80 ff 00 00 00 00 00 01 00 00
+1a0: 20 1f 1e 1d 1c 1b 1a 19 18 17 16 15 14 13 12 11
+1b0: 10 0f 0e 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01
+1c0: 22 00 c1 1c 00 00 00 80 00 00 00 00 0b 00 c1 2c
+1d0: 02 00 03 10 00 00 00 00 00 00 00 00 00 00 00 00
+1e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+1f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+210: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+220: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+230: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+240: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+250: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+270: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+280: 00 00 58 00 01 00 08 00 86 55 58 03 00 53 60 08
+290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+2a0: 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00
+2b0: 00 0a 0c 00 85 b9 40 36 00 00 00 00 00 00 00 00
+2c0: 00 00 00 00 00 00 00 00 00 00 00 00 0b 00 01 00
+2d0: 01 00 81 03 00 00 00 00 10 00 00 00 00 00 00 00
+2e0: 10 00 00 00 00 00 00 00 00 00 00 00 c0 00 c0 00
+2f0: c0 00 c0 00 01 00 00 00 00 00 00 00 00 00 00 00
+300: 2f 00 01 00 ae 01 01 00 93 01 00 00 18 00 00 00
+310: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+320: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+330: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+340: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+350: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+3a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+3b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+3c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+3d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+3e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+3f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+410: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+430: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+440: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+450: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+470: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+4a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+4b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+4c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+4d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+4e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+4f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+510: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+530: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+540: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+550: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+590: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+5a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+5b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+5c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+5d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+5e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+5f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+610: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+620: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+630: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+640: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+650: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+6a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+6b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+6c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+6d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+6e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+6f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+700: 12 00 36 00 ff ff ff ff 00 00 00 70 00 46 0f 66
+710: 20 01 07 00 00 00 00 00 00 c0 00 00 40 01 00 00
+720: 00 00 00 00 01 00 00 00 91 cd 32 01 10 00 00 08
+730: fc 01 04 00 ff 0f 04 00 7c 00 02 00 00 00 00 00
+740: 0f 00 00 00 00 00 00 00 80 30 23 c0 16 30 23 00
+750: 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00
+760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+770: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+790: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+7a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+7b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+7c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+7d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+7e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+7f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+800: 00 00 00 00 00 00 00 00 00 00 00 00 80 01 01 00
+810: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+820: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+830: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+840: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+850: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+860: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+870: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+880: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+890: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+8a0: 00 00 00 00 00 00 00 00 20 b8 01 01 53 00 00 00
+8b0: 00 00 00 00 00 00 00 00 0f 00 00 00 00 00 00 00
+8c0: 80 00 00 00 44 00 00 00 00 00 00 00 01 00 00 32
+8d0: 00 a4 00 00 32 00 00 00 00 00 00 00 00 00 00 00
+8e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+8f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+900: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+910: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+920: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+930: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+940: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+950: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+960: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+970: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+990: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+9a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+9b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+9c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+9d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+9e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+9f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+aa0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ab0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ac0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ad0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ae0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+af0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b30: 46 88 46 88 00 00 00 00 00 00 00 00 00 00 00 00
+b40: 19 00 00 00 d2 00 00 00 00 00 00 00 00 00 00 00
+b50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ba0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+bb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+bc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+bd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+be0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+bf0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ca0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+cb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+cc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+cd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ce0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+cf0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+da0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+db0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+dc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+dd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+de0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+df0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ea0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+eb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ec0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ed0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ee0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ef0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+fa0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+fb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+fc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+fd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+