lkml.org 
[lkml]   [2008]   [Sep]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: e1000e NVM corruption issue status
    On Mon, 29 Sep 2008, Jiri Kosina wrote:

    > > in case your mailer hoses something apply in this order:
    > > # This series applies on GIT commit 011fcfcb75311c7368f13170b9e68adcf146a557
    > > 01-e-mem.patch
    > > 02-e_flash.patch
    > > 03-e1000e-release-lock-in-reset.patch
    > > 04-e1000e-dont-sleep.patch
    > > 05-e1000e-no-deeplocks.patch
    > > 06-e1000e-drop-stats-lock.patch
    > > 07-subject-e1000e-debug-patch.patch
    > > 08-e1000e-version.patch
    > > 09-e1000e-allow-bad-checksum.patch
    > > 10-e1000e-dump-eeprom-to-dmesg.txt
    > When using this patchset (plus patch that adds check for address range in
    > pci_mmap_resource() by Jesse Barnes), the machine (that already has
    > corrupted (but not completely erased)) hangs after dumping eeprom
    > contents:
    > 0000:00:19.0: 0000:00:19.0: The NVM Checksum Is Not Valid
    > /*********************/
    > Current EEPROM Checksum : 0x2259
    > Calculated : 0xa259
    > Offset Values
    > ======== ======
    > 00000000: 00 15 58 c6 4a ff 00 08 ff ff 30 00 ff ff ff ff
    > 00000010: ff ff ff ff c7 10 b9 20 aa 17 49 10 86 80 00 00
    > 00000020: 01 0d 00 00 00 00 05 16 20 50 00 38 00 00 8b 0d
    > 00000030: 02 06 c1 01 03 08 00 00 00 00 00 00 00 00 00 00
    > 00000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    > 00000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    > 00000060: 00 01 00 40 28 12 07 40 ff ff ff ff ff ff ff ff
    > 00000070: ff ff ff ff ff ff ff ff ff ff ff ff ff ff 59 22
    > /*********************/
    > after this, alt-sysrq-p indicates that it's somehow running in the loops
    > around r1000_read_nvm_ich8lan and e1000_release_swflag_uch8lan. Below
    > there are several subsequent alt-sysrq-p outputs on this frozen system

    And I believe that this is because of this code in
    09-e1000e-allow-bad-checksum.patch:

    for (i = 0;; i++) {
    if (e1000_validate_nvm_checksum(hw) >= 0) {
    /* copy the MAC address out of the NVM */
    if (e1000e_read_mac_addr(&adapter->hw))
    e_err("NVM Read Error reading MAC address\n");
    break;
    }
    if (i == 2) {
    e_err("The NVM Checksum Is Not Valid\n");
    e1000e_dump_eeprom(adapter);
    /*
    * set MAC address to all zeroes to invalidate and
    * temporary disable this device for the user. This
    * blocks regular traffic while still permitting
    * ethtool ioctls from reaching the hardware as well as
    * allowing the user to run the interface after
    * manually setting a hw addr using
    * `ip link set address`
    */
    memset(hw->mac.addr, 0, netdev->addr_len);
    }
    }

    We are missing 'break;' after the memset, and that is where the hanging
    machine comes from (the loop keeps spinning forever), right? I will verify
    this right away.

    --
    Jiri Kosina
    SUSE Labs


    \
     
     \ /
      Last update: 2008-09-29 18:23    [W:0.023 / U:0.616 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site