On Wed, 2020-06-24 at 10:57 -0500, Bjorn Helgaas wrote: > On Tue, Jun 23, 2020 at 09:00:24PM -0700, Sean V Kelley wrote: > > Root Complex Event Collectors provide support for terminating error > > and PME messages from RCiEPs. This patch provides basic decoding > > for > > the lspci RCEC Endpoint Association Extended Capability. See PCIe > > 5.0-1, > > sec 7.9.10 for further details. > > > > Signed-off-by: Sean V Kelley <sean.v.kelley@xxxxxxxxxxxxxxx> > > Looks good to me. Minor comments below, but either way: > > Reviewed-by: Bjorn Helgaas <bhelgaas@xxxxxxxxxx> > > > --- > > Changes since v1 [1]: > > > > - Corrections to commit log wording/abbreviation. > > - Added mention of Endpoint Association for clarity. > > - Removed "Desc:" from output as not necessary. > > - Removed "cap_ver" from output as redundant. > > - Broke out RCiEP device numbers as a comma separated list. > > (Bjorn Helgaas) > > > > [1] > > https://lore.kernel.org/linux-pci/20200622230330.799259-1-sean.v.kelley@xxxxxxxxxxxxxxx/ > > > > Thanks, > > > > Sean > > --- > > lib/header.h | 8 +- > > ls-ecaps.c | 50 ++++++++- > > setpci.c | 2 +- > > tests/cap-rcec | 299 > > +++++++++++++++++++++++++++++++++++++++++++++++++ > > 4 files changed, 355 insertions(+), 4 deletions(-) > > create mode 100644 tests/cap-rcec > > > > diff --git a/lib/header.h b/lib/header.h > > index 472816e..57a9343 100644 > > --- a/lib/header.h > > +++ b/lib/header.h > > @@ -219,7 +219,7 @@ > > #define PCI_EXT_CAP_ID_PB 0x04 /* Power Budgeting */ > > #define PCI_EXT_CAP_ID_RCLINK 0x05 /* Root Complex > > Link Declaration */ > > #define PCI_EXT_CAP_ID_RCILINK 0x06 /* Root Complex > > Internal Link Declaration */ > > -#define PCI_EXT_CAP_ID_RCECOLL 0x07 /* Root Complex > > Event Collector */ > > +#define PCI_EXT_CAP_ID_RCEC 0x07 /* Root Complex > > Event Collector */ > > #define PCI_EXT_CAP_ID_MFVC 0x08 /* Multi-Function > > Virtual Channel */ > > #define PCI_EXT_CAP_ID_VC2 0x09 /* Virtual Channel (2nd ID) > > */ > > #define PCI_EXT_CAP_ID_RCRB 0x0a /* Root Complex > > Register Block */ > > @@ -1048,6 +1048,12 @@ > > #define PCI_RCLINK_LINK_ADDR 8 /* Link Entry: Address (64- > > bit) */ > > #define PCI_RCLINK_LINK_SIZE 16 /* Link Entry: sizeof */ > > > > +/* Root Complex Event Collector Endpoint Association */ > > +#define PCI_RCEC_EP_CAP_VER(reg) (((reg) >> 16) & 0xf) > > +#define PCI_RCEC_BUSN_REG_VER 0x02 /* as per PCIe sec > > 7.9.10.1 */ > > +#define PCI_RCEC_RCIEP_BMAP 0x0004 /* as per PCIe sec > > 7.9.10.2 */ > > +#define PCI_RCEC_BUSN_REG 0x0008 /* as per PCIe sec 7.9.10.3 > > */ > > + > > /* PCIe Vendor-Specific Capability */ > > #define PCI_EVNDR_HEADER 4 /* Vendor-Specific Header */ > > #define PCI_EVNDR_REGISTERS 8 /* Vendor-Specific > > Registers */ > > diff --git a/ls-ecaps.c b/ls-ecaps.c > > index e71209e..ae26393 100644 > > --- a/ls-ecaps.c > > +++ b/ls-ecaps.c > > @@ -634,6 +634,52 @@ cap_rclink(struct device *d, int where) > > } > > } > > > > +static void > > +cap_rcec(struct device *d, int where) > > +{ > > + printf("Root Complex Event Collector Endpoint Association\n"); > > + if (verbose < 2) > > + return; > > + > > + if (!config_fetch(d, where, 12)) > > + return; > > + > > + u32 hdr = get_conf_long(d, where); > > + byte cap_ver = PCI_RCEC_EP_CAP_VER(hdr); > > + u32 bmap = get_conf_long(d, where + PCI_RCEC_RCIEP_BMAP); > > + printf("\t\tRCiEPBitmap: "); > > + if (bmap) > > + { > > + int dev=0; > > + int prevmatched=0; > > + printf("RCiEP at Device(s):"); > > + while (bmap) > > + { > > + if (BITS(bmap, 0, 1)) > > + if (!prevmatched) > > + { > > + prevmatched=1; > > + printf(" %u", dev); > > + } > > + else > > + printf("%s %u", (prevmatched) ? "," : "", dev); > > Maybe this could be done in one printf? > > if (bmap) > { > int prevmatched = 0; > > for (dev = 0; dev < 32; dev++) > if (BITS(bmap, dev, 1)) > { > printf("%s%u", prevmatched ? ", " : "", dev); > prevmatched = 1; > } > } That works well, I can also add the hyphen if it is adjacent with this, I think: for (int dev=0; dev < 32; dev++) { if (BITS(bmap, dev, 1)) { if (!adjcount) printf("%s %u", (prevmatched) ? "," : "", dev); prevmatched=1; adjcount++; prevdev=dev; } else { if (adjcount > 1) printf("-%u", prevdev); adjacent=0; } } > > + bmap >>= 1; > > + dev += 1; > > + } > > + } > > + else > > + printf("00000000"); > > Or "[none]", with "00000000 [none]" for the "-vvv" case? Seems like > an > RCEC with no associated devices wouldn't be very useful. Although I > guess it could have devices on other buses. > It's more informative to note that it really means "none". Will do. > > + printf("\n"); > > + > > + if (cap_ver < PCI_RCEC_BUSN_REG_VER) > > + return; > > + > > + u32 busn = get_conf_long(d, where + PCI_RCEC_BUSN_REG); > > + printf("\t\tRCECLastBus=%02x RCECFirstBus=%02x\n", > > + BITS(busn, 16, 8), > > + BITS(busn, 8, 8)); > > The spec term is "RCEC *Next* Bus", not "RCEC First Bus". > > Maybe print these in the "Next Last" order so it comes out like a bus > number range when enabled? Good catch, I'm not sure where I was getting First... And I think the bus number range with Next Last order makes sense. > > The example below ("RCECLastBus=00 RCECFirstBus=ff") is actually the > case when there are no additional bus numbers associated with this > RCEC. show_range() handles a similar case by printing "[disabled]" > (as well as the raw numbers in the "enabled" or "verbose > 2" cases). > "[disabled]" wouldn't be quite right here, but maybe "[none]"? > > Could be > > AssociatedBusNumbers: 01-07 > AssociatedBusNumbers: [none] # -vv case > AssociatedBusNumbers: ff-00 [none] # -vvv case No one seems to use 'verbose' very effectively for individual caps in ls-ecaps, afaict. It's either on/off so to speak. I really like this granularity, however. I'll have a look. Thanks, Sean > > But maybe that's applying too much interpretation. We don't do > anything so fancy for bridge secondary/subordinate bus numbers, for > example. > > > +} > > + > > static void > > cap_dvsec_cxl(struct device *d, int where) > > { > > @@ -991,8 +1037,8 @@ show_ext_caps(struct device *d, int type) > > case PCI_EXT_CAP_ID_RCILINK: > > printf("Root Complex Internal Link <?>\n"); > > break; > > - case PCI_EXT_CAP_ID_RCECOLL: > > - printf("Root Complex Event Collector <?>\n"); > > + case PCI_EXT_CAP_ID_RCEC: > > + cap_rcec(d, where); > > break; > > case PCI_EXT_CAP_ID_MFVC: > > printf("Multi-Function Virtual Channel <?>\n"); > > diff --git a/setpci.c b/setpci.c > > index 90ca726..2cb70fa 100644 > > --- a/setpci.c > > +++ b/setpci.c > > @@ -350,7 +350,7 @@ static const struct reg_name pci_reg_names[] = > > { > > { 0x20004, 0, 0, "ECAP_PB" }, > > { 0x20005, 0, 0, "ECAP_RCLINK" }, > > { 0x20006, 0, 0, "ECAP_RCILINK" }, > > - { 0x20007, 0, 0, "ECAP_RCECOLL" }, > > + { 0x20007, 0, 0, "ECAP_RCEC" }, > > { 0x20008, 0, 0, "ECAP_MFVC" }, > > { 0x20009, 0, 0, "ECAP_VC2" }, > > { 0x2000a, 0, 0, "ECAP_RBCB" }, > > diff --git a/tests/cap-rcec b/tests/cap-rcec > > new file mode 100644 > > index 0000000..4196228 > > --- /dev/null > > +++ b/tests/cap-rcec > > @@ -0,0 +1,299 @@ > > +6a:00.4 Generic system peripheral [0807]: Intel Corporation Device > > 0b23 > > + Subsystem: Intel Corporation Device 0000 > > + 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- > > + Interrupt: pin A routed to IRQ 255 > > + NUMA node: 0 > > + Capabilities: [40] Express (v2) Root Complex Event > > Collector, MSI 00 > > + DevCap: MaxPayload 512 bytes, PhantFunc 0 > > + ExtTag- RBE- > > + DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq- > > + RlxdOrd- ExtTag- PhantFunc- AuxPwr- > > NoSnoop- > > + MaxPayload 128 bytes, MaxReadReq 128 bytes > > + DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- > > AuxPwr- TransPend- > > + RootCap: CRSVisible- > > + RootCtl: ErrCorrectable+ ErrNon-Fatal+ ErrFatal+ > > PMEIntEna- CRSVisible- > > + RootSta: PME ReqID 0000, PMEStatus- PMEPending- > > + DevCap2: Completion Timeout: Not Supported, > > TimeoutDis- NROPrPrP- LTR- > > + 10BitTagComp- 10BitTagReq- OBFF Not > > Supported, ExtFmt- EETLPPrefix- > > + EmergencyPowerReduction Not Supported, > > EmergencyPowerReductionInit- > > + FRS- > > + DevCtl2: Completion Timeout: 50us to 50ms, > > TimeoutDis- LTR- OBFF Disabled, > > + Capabilities: [80] 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: [90] MSI: Enable- Count=1/1 Maskable+ 64bit- > > + Address: 00000000 Data: 0000 > > + Masking: 00000000 Pending: 00000000 > > + Capabilities: [100 v1] 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 > > + RootCmd: CERptEn- NFERptEn- FERptEn- > > + RootSta: CERcvd- MultCERcvd- UERcvd- MultUERcvd- > > + FirstFatal- NonFatalMsg- FatalMsg- IntMsg > > 0 > > + ErrorSrc: ERR_COR: 0000 ERR_FATAL/NONFATAL: 0000 > > + Capabilities: [160 v2] Root Complex Event Collector > > Endpoint Association > > + RCiEPBitmap: RCiEP at Device(s): 0, 1, 4, 7, 8, 9, > > 10, 12, 13 > > + RCECLastBus=00 RCECFirstBus=ff > > +00: 86 80 23 0b 00 01 10 00 00 00 07 08 00 00 00 00 > > +10: 00 00 00 00 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 86 80 00 00 > > +30: 00 00 00 00 40 00 00 00 00 00 00 00 ff 01 00 00 > > +40: 10 80 a2 00 02 00 00 00 07 00 00 00 00 00 00 00 > > +50: 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 > > +60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +80: 01 90 03 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +90: 05 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 > > +a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +d0: 31 6a 08 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 01 16 00 00 00 00 20 00 10 00 10 30 46 00 > > +110: 00 00 00 00 00 20 00 00 00 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 00 00 00 00 00 00 00 00 > > +150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +160: 07 00 02 00 00 00 00 00 00 ff 00 00 00 00 00 00 > > +170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +1a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +1b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +1c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +1d0: 00 00 00 00 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 07 00 00 00 00 00 00 00 00 00 00 00 > > +270: 00 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00 > > +280: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +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 20 00 18 00 20 00 18 00 > > +2b0: 20 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +2c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +2d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +2e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +2f0: 00 20 00 00 00 20 00 00 00 20 00 00 00 e0 00 00 > > +300: 00 e0 00 00 00 e0 00 00 00 e0 00 00 00 e0 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: 44 00 00 00 91 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: 90 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: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +710: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +720: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +730: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +740: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +750: 00 00 00 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 00 00 00 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 00 00 00 00 00 00 00 00 > > +8b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +8c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +8d0: 00 00 00 00 00 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: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > +b40: 00 00 00 00 00 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 > > -- > > 2.27.0 > >