On Fri, Jul 29, 2016 at 1:59 PM, Alexey Muranov
<alexey.mura...@gmail.com> wrote:
> 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.

Glad to hear you got it fixed.  It isn't too surprising that there
would only be a single bit difference.  Odds are what probably
happened is that a single bit somewhere in your NVM was changed and
that resulted in a single bit difference in your checksum.

- Alex

------------------------------------------------------------------------------
_______________________________________________
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