On Tue, Sep 15, 2026 at 08:32:25PM +0800, Hao Peng wrote:
> On Mon, Sep 14, 2026 at 3:20 AM Michael S. Tsirkin <[email protected]> wrote:
> >
> > On Fri, Sep 11, 2026 at 04:11:33PM +0800, Peng Hao wrote:
> > > From: Peng Hao <[email protected]>
> > >
> > > Since commit 69b9461512246 ("virtio_pci_modern: allow configuring
> > > extended features") the modern virtio-pci driver unconditionally
> > > accesses the whole 128 bits features space, i.e. it drives
> > > device_feature_select / guest_feature_select with the values 0..3.
> > >
> > > Devices predating the extended features space only implement the
> > > legacy 64 bits one, and what they report for the selectors above it is
> > > not a valid features space.  Negotiating it makes the driver and the
> > > device end up with different features sets: on a smart NIC exposing a
> > > virtio_net device the link comes up but carries no traffic, while the
> > > same device works with a kernel that only accesses the low 64 bits.
> > >
> > > Reading the features space has no side effect, so keep reading all of
> > > it and use the extended part to tell whether the device implements it:
> > > report the legacy 64 bits only when the extended words read back as
> > > all-ones or as an alias of the low words, and latch the device down for
> > > good.  As the features negotiation ANDs the device and driver features,
> > > no feature above bit 63 can be negotiated afterwards.
> > >
> > > Writing a selector the device does not implement cannot be relied upon
> > > the same way, so never drive one above the highest word that actually
> > > carries a bit.  The reset preceding the features negotiation zeroes the
> > > device side features, hence the words left unwritten stay cleared.
> > >
> > > Also dump the raw device_feature dwords, and add a max_features_u64s
> > > module parameter to force the legacy 64 bits space on devices whose
> > > quirk the detection does not catch.
> > >
> > > Conforming devices are unaffected: their extended words are neither
> > > all-ones nor an alias of the low ones, so the detection does not
> > > trigger.
> > >
> > > Signed-off-by: Peng Hao <[email protected]>
> >
> >
> > Also can you dump the pci header of the device please?
> >
> Yes. The affected PCI function is:
> 
>           BDF:               0000:45:00.0
>           Class:             0880
>           Vendor/device:     1af4:1000
>           Subsystem:         1af4:0001
>           Revision:          00
>           Physical slot:     0-34
>           Kernel driver:     virtio-pci
> 
>   The relevant `lspci -nnvv` output is:
> 
>   45:00.0 System peripheral [0880]: Red Hat, Inc. Virtio network
> device [1af4:1000]
>           Subsystem: Red Hat, Inc. Device [1af4:0001]
>           Physical Slot: 0-34
>           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-
>           NUMA node: 0
>           IOMMU group: 138
>           Region 0: Memory at 3ffbffc04000 (64-bit, prefetchable) [size=16K]
>           Region 2: Memory at 3ffbffc00000 (64-bit, prefetchable) [size=16K]
>           Capabilities: [94] MSI-X: Enable+ Count=66 Masked-
>                   Vector table: BAR=2 offset=00000000
>                   PBA: BAR=2 offset=00001000
>           Capabilities: [84] Vendor Specific Information: VirtIO: <unknown>
>                   BAR=0 offset=00000860 size=00000004


weird that lspci does not know about PciCfg wanna patch that?


>           Capabilities: [74] Vendor Specific Information: VirtIO: DeviceCfg
>                   BAR=0 offset=00000840 size=00000040
>           Capabilities: [64] Vendor Specific Information: VirtIO: ISR
>                   BAR=0 offset=00000820 size=00000020
>           Capabilities: [50] Vendor Specific Information: VirtIO: Notify
>                   BAR=0 offset=00001000 size=00000020 multiplier=00000000
>           Capabilities: [40] Vendor Specific Information: VirtIO: CommonCfg
>                   BAR=0 offset=00000888 size=00000078
>           Kernel driver in use: virtio-pci
> 
>   I have attached the complete `lspci -nnvvxxxx` output and the raw 4 KiB
>   PCI configuration-space dump.
> 
>  By the way, the information mentioned above was collected using the 7.2 
> kernel
> with my patch applied. Without this patch, the 7.2 kernel would be
> unable to establish
>  a network connection.
> 
>   Thanks,
>   Hao

So they didn't set subsystem id and we can't identify the device for
a quirk. Not nice. And sadly I do not see anything here that will
let us identify the specific hardware with any kind of robustness.

Waiting for you to report whether the device can be fixed in the field with
some kind of firmware update.


> > > ---
> > > diff --git a/drivers/virtio/virtio_pci_modern_dev.c 
> > > b/drivers/virtio/virtio_pci_modern_dev.c
> > > index 413a8c353463..cfb10c9f32dd 100644
> > > --- a/drivers/virtio/virtio_pci_modern_dev.c
> > > +++ b/drivers/virtio/virtio_pci_modern_dev.c
> > > @@ -5,6 +5,21 @@
> > >  #include <linux/pci.h>
> > >  #include <linux/delay.h>
> > >
> > > +static int max_features_u64s = -1;
> > > +module_param(max_features_u64s, int, 0444);
> > > +MODULE_PARM_DESC(max_features_u64s,
> > > +              "Max number of 64 bit words of the virtio features space 
> > > to access (1 = legacy 64 bits only, -1 = auto-detect)");
> > > +
> > > +static u8 vp_modern_features_u64s(const struct virtio_pci_modern_device 
> > > *mdev)
> > > +{
> > > +     u8 u64s = mdev->features_u64s ?: VIRTIO_FEATURES_U64S;
> > > +
> > > +     if (max_features_u64s > 0 && u64s > max_features_u64s)
> > > +             u64s = max_features_u64s;
> > > +
> > > +     return u64s;
> > > +}
> > > +
> > >  /*
> > >   * vp_modern_map_capability - map a part of virtio pci capability
> > >   * @mdev: the modern virtio-pci device
> > > @@ -230,6 +245,8 @@ int vp_modern_probe(struct virtio_pci_modern_device 
> > > *mdev)
> > >
> > >       check_offsets();
> > >
> > > +     mdev->features_u64s = VIRTIO_FEATURES_U64S;
> > > +
> > >       if (mdev->device_id_check) {
> > >               devid = mdev->device_id_check(pci_dev);
> > >               if (devid < 0)
> > > @@ -398,15 +415,36 @@ void vp_modern_get_extended_features(struct 
> > > virtio_pci_modern_device *mdev,
> > >                                    u64 *features)
> > >  {
> > >       struct virtio_pci_common_cfg __iomem *cfg = mdev->common;
> > > +     u32 raw[VIRTIO_FEATURES_BITS / 32];
> > > +     u8 u64s = vp_modern_features_u64s(mdev);
> > >       int i;
> > >
> > > -     virtio_features_zero(features);
> > >       for (i = 0; i < VIRTIO_FEATURES_BITS / 32; i++) {
> > > -             u64 cur;
> > > -
> > >               vp_iowrite32(i, &cfg->device_feature_select);
> > > -             cur = vp_ioread32(&cfg->device_feature);
> > > -             features[i >> 1] |= cur << (32 * (i & 1));
> > > +             raw[i] = vp_ioread32(&cfg->device_feature);
> > > +     }
> > > +
> > > +     dev_info(&mdev->pci_dev->dev,
> > > +              "virtio_pci: device_feature[0..3] = 0x%08x 0x%08x 0x%08x 
> > > 0x%08x\n",
> > > +              raw[0], raw[1], raw[2], raw[3]);
> > > +
> > > +     virtio_features_zero(features);
> > > +     for (i = 0; i < u64s * 2; i++)
> > > +             features[i >> 1] |= (u64)raw[i] << (32 * (i & 1));
> > > +
> > > +     for (i = 1; i < u64s; i++) {
> > > +             int j;
> > > +
> > > +             if (features[i] != U64_MAX &&
> > > +                 !(features[0] && features[i] == features[0]))
> > > +                     continue;
> > > +
> > > +             dev_info(&mdev->pci_dev->dev,
> > > +                      "virtio_pci: no extended features space, using 64 
> > > bits features only\n");
> > > +             mdev->features_u64s = 1;
> > > +             for (j = 1; j < VIRTIO_FEATURES_U64S; j++)
> > > +                     features[j] = 0;
> > > +             break;
> > >       }
> > >  }
> > >  EXPORT_SYMBOL_GPL(vp_modern_get_extended_features);
> > > @@ -424,10 +462,11 @@ vp_modern_get_driver_extended_features(struct 
> > > virtio_pci_modern_device *mdev,
> > >                                      u64 *features)
> > >  {
> > >       struct virtio_pci_common_cfg __iomem *cfg = mdev->common;
> > > +     u8 u64s = vp_modern_features_u64s(mdev);
> > >       int i;
> > >
> > >       virtio_features_zero(features);
> > > -     for (i = 0; i < VIRTIO_FEATURES_BITS / 32; i++) {
> > > +     for (i = 0; i < u64s * 2; i++) {
> > >               u64 cur;
> > >
> > >               vp_iowrite32(i, &cfg->guest_feature_select);
> > > @@ -446,9 +485,19 @@ void vp_modern_set_extended_features(struct 
> > > virtio_pci_modern_device *mdev,
> > >                                    const u64 *features)
> > >  {
> > >       struct virtio_pci_common_cfg __iomem *cfg = mdev->common;
> > > +     u8 u64s = vp_modern_features_u64s(mdev);
> > >       int i;
> > >
> > > -     for (i = 0; i < VIRTIO_FEATURES_BITS / 32; i++) {
> > > +     /*
> > > +      * Never drive a selector the device may not implement: stop at the
> > > +      * highest word that carries a bit.  The device side features are
> > > +      * zeroed by the reset that precedes the features negotiation, so 
> > > the
> > > +      * words left unwritten keep the value the driver wants for them.
> > > +      */
> > > +     while (u64s > 1 && !features[u64s - 1])
> > > +             u64s--;
> > > +
> > > +     for (i = 0; i < u64s * 2; i++) {
> > >               u32 cur = features[i >> 1] >> (32 * (i & 1));
> > >
> > >               vp_iowrite32(i, &cfg->guest_feature_select);
> > > diff --git a/include/linux/virtio_pci_modern.h 
> > > b/include/linux/virtio_pci_modern.h
> > > index 9a3f2fc53bd6..7dc76afa671e 100644
> > > --- a/include/linux/virtio_pci_modern.h
> > > +++ b/include/linux/virtio_pci_modern.h
> > > @@ -27,6 +27,9 @@
> > >   *               Returns the found device id or ERRNO
> > >   * @dma_mask:            Optional mask instead of the traditional 
> > > DMA_BIT_MASK(64),
> > >   *               for vendor devices with DMA space address limitations
> > > + * @features_u64s:  Number of 64 bit words of the features space that 
> > > can be
> > > + *               accessed on this device; 1 for devices not implementing
> > > + *               the extended (128 bits) features space
> > >   */
> > >  struct virtio_pci_modern_device {
> > >       struct pci_dev *pci_dev;
> > > @@ -49,6 +52,7 @@ struct virtio_pci_modern_device {
> > >
> > >       int (*device_id_check)(struct pci_dev *pdev);
> > >       u64 dma_mask;
> > > +     u8 features_u64s;
> > >  };
> > >
> > >  /*
> > > --
> > > 2.43.0
> >

> 45:00.0 System peripheral [0880]: Red Hat, Inc. Virtio network device 
> [1af4:1000]
>       Subsystem: Red Hat, Inc. Device [1af4:0001]
>       Physical Slot: 0-34
>       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
>       NUMA node: 0
>       IOMMU group: 138
>       Region 0: Memory at 3ffbffc04000 (64-bit, prefetchable) [size=16K]
>       Region 2: Memory at 3ffbffc00000 (64-bit, prefetchable) [size=16K]
>       Capabilities: [a0] Express (v2) Endpoint, MSI 00
>               DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <64ns, 
> L1 <1us
>                       ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset- 
> SlotPowerLimit 0W
>               DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq-
>                       RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+
>                       MaxPayload 512 bytes, MaxReadReq 2048 bytes
>               DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- 
> TransPend-
>               LnkCap: Port #0, Speed 16GT/s, Width x8, ASPM not supported
>                       ClockPM- Surprise- LLActRep+ BwNot+ ASPMOptComp-
>               LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk-
>                       ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>               LnkSta: Speed 16GT/s, Width x8
>                       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-16GT/s, Crosslink- Retimer- 
> 2Retimers- DRS-
>               LnkCtl2: Target Link Speed: 16GT/s, EnterCompliance- SpeedDis-
>                        Transmit Margin: Normal Operating Range, 
> EnterModifiedCompliance- ComplianceSOS-
>                        Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB 
> preshoot
>               LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- 
> EqualizationPhase1-
>                        EqualizationPhase2- EqualizationPhase3- 
> LinkEqualizationRequest-
>                        Retimer- 2Retimers- CrosslinkRes: unsupported
>       Capabilities: [94] MSI-X: Enable+ Count=66 Masked-
>               Vector table: BAR=2 offset=00000000
>               PBA: BAR=2 offset=00001000
>       Capabilities: [84] Vendor Specific Information: VirtIO: <unknown>
>               BAR=0 offset=00000860 size=00000004
>       Capabilities: [74] Vendor Specific Information: VirtIO: DeviceCfg
>               BAR=0 offset=00000840 size=00000040
>       Capabilities: [64] Vendor Specific Information: VirtIO: ISR
>               BAR=0 offset=00000820 size=00000020
>       Capabilities: [50] Vendor Specific Information: VirtIO: Notify
>               BAR=0 offset=00001000 size=00000020 multiplier=00000000
>       Capabilities: [40] Vendor Specific Information: VirtIO: CommonCfg
>               BAR=0 offset=00000888 size=00000078
>       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: [1a0 v1] Alternative Routing-ID Interpretation (ARI)
>               ARICap: MFVC- ACS-, Next Function: 0
>               ARICtl: MFVC- ACS-, Function Group: 0
>       Kernel driver in use: virtio-pci
>       Kernel modules: virtio_pci
> 00: f4 1a 00 10 06 04 10 00 00 00 80 08 10 00 00 00
> 10: 0c 40 c0 ff fb 3f 00 00 0c 00 c0 ff fb 3f 00 00
> 20: 00 00 00 00 00 00 00 00 00 00 00 00 f4 1a 01 00
> 30: 00 00 00 00 a0 00 00 00 00 00 00 00 ff 00 00 00
> 40: 09 00 10 01 00 00 00 00 88 08 00 00 78 00 00 00
> 50: 09 40 14 02 00 00 00 00 00 10 00 00 20 00 00 00
> 60: 00 00 00 00 09 50 10 03 00 00 00 00 20 08 00 00
> 70: 20 00 00 00 09 64 10 04 00 00 00 00 40 08 00 00
> 80: 40 00 00 00 09 74 10 05 00 00 00 00 60 08 00 00
> 90: 04 00 00 00 11 84 41 80 02 00 00 00 02 10 00 00
> a0: 10 94 02 00 22 80 00 00 57 49 00 00 84 60 30 00
> b0: 00 00 84 30 00 00 00 00 00 00 00 00 00 00 00 00
> c0: 00 00 00 00 1f 00 03 00 00 00 00 00 1e 00 00 00
> d0: 04 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 02 1a 00 00 00 00 00 00 00 00 30 20 ee 03
> 110: 00 00 00 00 00 00 00 00 e0 01 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: 00 00 00 00 00 00 00 00 00 00 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: 0e 00 01 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 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 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 00 00 00 00 00 00 00 00
> 2b0: 00 00 00 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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 300: a0 1e a0 1e 00 04 10 00 00 00 80 08 10 00 00 00
> 310: 0c 40 b0 ff fb 3f 00 00 0c 00 b0 ff fb 3f 00 00
> 320: 00 00 00 00 00 00 00 00 00 00 00 00 a0 1e 01 00
> 330: 00 00 00 00 a0 00 00 00 00 00 00 00 ff 00 00 00
> 340: 09 00 10 01 00 00 00 00 88 08 00 00 78 00 00 00
> 350: 09 40 14 02 00 00 00 00 00 10 00 00 20 00 00 00
> 360: 00 00 00 00 09 50 10 03 00 00 00 00 20 08 00 00
> 370: 20 00 00 00 09 64 10 04 00 00 00 00 40 08 00 00
> 380: 40 00 00 00 09 74 10 05 00 00 00 00 60 08 00 00
> 390: 04 00 00 00 11 84 00 01 02 00 00 00 02 20 00 00
> 3a0: 10 94 02 00 22 80 00 00 57 49 00 00 84 60 30 00
> 3b0: 00 00 84 30 00 00 00 00 00 00 00 00 00 00 00 00
> 3c0: 00 00 00 00 1f 00 03 00 00 00 00 00 1e 00 00 00
> 3d0: 04 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: 01 00 02 1a 00 00 00 00 00 00 00 00 30 20 ee 03
> 410: 00 00 00 00 00 00 00 00 e0 01 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: 0e 00 01 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: a0 1e a0 1e 00 04 10 00 00 00 80 08 10 00 00 00
> 610: 0c 40 a0 ff fb 3f 00 00 0c 00 a0 ff fb 3f 00 00
> 620: 00 00 00 00 00 00 00 00 00 00 00 00 a0 1e 01 00
> 630: 00 00 00 00 a0 00 00 00 00 00 00 00 ff 00 00 00
> 640: 09 00 10 01 00 00 00 00 88 08 00 00 78 00 00 00
> 650: 09 40 14 02 00 00 00 00 00 10 00 00 20 00 00 00
> 660: 00 00 00 00 09 50 10 03 00 00 00 00 20 08 00 00
> 670: 20 00 00 00 09 64 10 04 00 00 00 00 40 08 00 00
> 680: 40 00 00 00 09 74 10 05 00 00 00 00 60 08 00 00
> 690: 04 00 00 00 11 84 00 01 02 00 00 00 02 20 00 00
> 6a0: 10 94 02 00 22 80 00 00 57 49 00 00 84 60 30 00
> 6b0: 00 00 84 30 00 00 00 00 00 00 00 00 00 00 00 00
> 6c0: 00 00 00 00 1f 00 03 00 00 00 00 00 1e 00 00 00
> 6d0: 04 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: 01 00 02 1a 00 00 00 00 00 00 00 00 30 20 ee 03
> 710: 00 00 00 00 00 00 00 00 e0 01 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: 0e 00 01 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: a0 1e a0 1e 00 04 10 00 00 00 80 08 10 00 00 00
> 910: 0c 40 90 ff fb 3f 00 00 0c 00 90 ff fb 3f 00 00
> 920: 00 00 00 00 00 00 00 00 00 00 00 00 a0 1e 01 00
> 930: 00 00 00 00 a0 00 00 00 00 00 00 00 ff 00 00 00
> 940: 09 00 10 01 00 00 00 00 88 08 00 00 78 00 00 00
> 950: 09 40 14 02 00 00 00 00 00 10 00 00 20 00 00 00
> 960: 00 00 00 00 09 50 10 03 00 00 00 00 20 08 00 00
> 970: 20 00 00 00 09 64 10 04 00 00 00 00 40 08 00 00
> 980: 40 00 00 00 09 74 10 05 00 00 00 00 60 08 00 00
> 990: 04 00 00 00 11 84 00 01 02 00 00 00 02 20 00 00
> 9a0: 10 94 02 00 22 80 00 00 57 49 00 00 84 60 30 00
> 9b0: 00 00 84 30 00 00 00 00 00 00 00 00 00 00 00 00
> 9c0: 00 00 00 00 1f 00 03 00 00 00 00 00 1e 00 00 00
> 9d0: 04 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: 01 00 02 1a 00 00 00 00 00 00 00 00 30 20 ee 03
> a10: 00 00 00 00 00 00 00 00 e0 01 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: 0e 00 01 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: a0 1e a0 1e 00 04 10 00 00 00 80 08 10 00 00 00
> c10: 0c 40 80 ff fb 3f 00 00 0c 00 80 ff fb 3f 00 00
> c20: 00 00 00 00 00 00 00 00 00 00 00 00 a0 1e 01 00
> c30: 00 00 00 00 a0 00 00 00 00 00 00 00 ff 00 00 00
> c40: 09 00 10 01 00 00 00 00 88 08 00 00 78 00 00 00
> c50: 09 40 14 02 00 00 00 00 00 10 00 00 20 00 00 00
> c60: 00 00 00 00 09 50 10 03 00 00 00 00 20 08 00 00
> c70: 20 00 00 00 09 64 10 04 00 00 00 00 40 08 00 00
> c80: 40 00 00 00 09 74 10 05 00 00 00 00 60 08 00 00
> c90: 04 00 00 00 11 84 00 01 02 00 00 00 02 20 00 00
> ca0: 10 94 02 00 22 80 00 00 57 49 00 00 84 60 30 00
> cb0: 00 00 84 30 00 00 00 00 00 00 00 00 00 00 00 00
> cc0: 00 00 00 00 1f 00 03 00 00 00 00 00 1e 00 00 00
> cd0: 04 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: 01 00 02 1a 00 00 00 00 00 00 00 00 30 20 ee 03
> d10: 00 00 00 00 00 00 00 00 e0 01 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: 0e 00 01 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: a0 1e a0 1e 00 04 10 00 00 00 80 08 10 00 00 00
> f10: 0c 40 70 ff fb 3f 00 00 0c 00 70 ff fb 3f 00 00
> f20: 00 00 00 00 00 00 00 00 00 00 00 00 a0 1e 01 00
> f30: 00 00 00 00 a0 00 00 00 00 00 00 00 ff 00 00 00
> f40: 09 00 10 01 00 00 00 00 88 08 00 00 78 00 00 00
> f50: 09 40 14 02 00 00 00 00 00 10 00 00 20 00 00 00
> f60: 00 00 00 00 09 50 10 03 00 00 00 00 20 08 00 00
> f70: 20 00 00 00 09 64 10 04 00 00 00 00 40 08 00 00
> f80: 40 00 00 00 09 74 10 05 00 00 00 00 60 08 00 00
> f90: 04 00 00 00 11 84 00 01 02 00 00 00 02 20 00 00
> fa0: 10 94 02 00 22 80 00 00 57 49 00 00 84 60 30 00
> fb0: 00 00 84 30 00 00 00 00 00 00 00 00 00 00 00 00
> fc0: 00 00 00 00 1f 00 03 00 00 00 00 00 1e 00 00 00
> fd0: 04 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
> 


Reply via email to