On 27 Jul 2016, at 17:45, Alexander Duyck <alexander.du...@gmail.com> wrote:

> Other than that I can't think of too many other ways to modify the
> EEPROM without actually going in and modifying it yourself.  I believe
> the e1000e driver supports modifying an EEPROM via ethtool, so one
> possible fix would be to disable the EEPROM protection and read/write
> the same value from some offset on the EEPROM.  For example byte
> offsets 0x10 through 0x13 in your dump below should represent the PBA
> number.  If you were to either rewrite it as 0xFF or even alter the
> data it should cause no harm since the PBA number is currently unused
> anyway, note the "PBA No: FFFFFF-0FF" from your driver load.  The key
> bit being that we want to trigger e1000e_update_nvm_checksum which
> will occur with any write as long as it is in a checksummed region.

Alexander, thanks a lot, it worked!

For the record, here is what i did, more or less.

I noted the checksum before writing to the EEPROM (not really, i just looked it 
up in the dump afterwards):

    $ sudo ethtool -e enp0s31f6 offset 0x7e length 2
    Offset              Values
    ------              ------
    0x007e:             60 13 

Checked again a value which is a part of PBA:

    $ sudo ethtool -e enp0s31f6 offset 0x10 length 1
    Offset              Values
    ------              ------
    0x0010:             ff 

Determined the "magic" key 0x15708086 for writing to my EEPROM with ethtool, 
after reading
http://blog.vodkamelone.de/archives/146-Unbricking-an-Intel-Pro1000-e1000-network-interface.html
 :

    $ lspci -nn | grep Ethernet
    00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection 
I219-V [8086:1570] (rev 21)

Wrote to EEPROM:

    $ sudo ethtool -E enp0s31f6 magic 0x15708086 offset 0x10 value 0xff

Checked the new checksum:

    $ sudo ethtool -e enp0s31f6 offset 0x7e length 2
    Offset              Values
    ------              ------
    0x007e:             60 93 

(I also checked the whole dump.  Naturally, there were no other differences.)

I booted a kernel with an unpatched e1000e, and the Ethernet worked fine.

What is strange, is that the checksum was off by one bit, apparently the 
highest one...

- Alexey.
------------------------------------------------------------------------------
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit 
http://communities.intel.com/community/wired

Reply via email to