* [PATCH v4 0/2] e1000e: disregard NVM checksums for known-bad cases on Tiger Lake
@ 2025-06-30 8:33 Jacek Kowalski
2025-06-30 8:33 ` [PATCH v4 1/2] e1000e: disregard NVM checksum on tgp when valid checksum bit is not set Jacek Kowalski
2025-06-30 8:35 ` [PATCH v4 2/2] e1000e: ignore uninitialized checksum word on tgp Jacek Kowalski
0 siblings, 2 replies; 7+ messages in thread
From: Jacek Kowalski @ 2025-06-30 8:33 UTC (permalink / raw)
To: Tony Nguyen, Przemek Kitszel, Andrew Lunn, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman
Cc: intel-wired-lan, netdev
As described by Vitaly Lifshits:
> Starting from Tiger Lake, LAN NVM is locked for writes by SW, so the
> driver cannot perform checksum validation and correction. This means
> that all NVM images must leave the factory with correct checksum and
> checksum valid bit set.
There are two issues we have found so far on some Tiger Lake systems:
1. Checksum valid bit unset in NVM
Some Dell laptops, i.e. Latitude 5420, have a valid bit unset and
incorrect checksum over NVM contents.
2. Checksum word in NVM is uninitialized (0xFFFF)
Other Dell system, Optiplex 5090 Micro, has a valid bit set while
a checksum word contains 0xFFFF ("empty"/uninitialized value).
Both issues result in the driver refusing to work with error:
> e1000e 0000:XX:XX.X: The NVM Checksum Is Not Valid
The network card is rendered unusable.
Patches work around those problems by ignoring NVM checksum when those
exact error conditions are detected on TGP-based systems.
v1 -> v2: work around issue #2
v2 -> v3: fix wrong comparison in workaround for #2, drop u16 cast
v3 -> v4: rename constant, reformat files, update commit description
Jacek Kowalski (2):
e1000e: disregard NVM checksum on tgp when valid checksum bit is not
set
e1000e: ignore uninitialized checksum word on tgp
drivers/net/ethernet/intel/e1000e/defines.h | 3 +++
drivers/net/ethernet/intel/e1000e/ich8lan.c | 2 ++
drivers/net/ethernet/intel/e1000e/nvm.c | 6 ++++++
3 files changed, 11 insertions(+)
--
2.47.2
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v4 1/2] e1000e: disregard NVM checksum on tgp when valid checksum bit is not set
2025-06-30 8:33 [PATCH v4 0/2] e1000e: disregard NVM checksums for known-bad cases on Tiger Lake Jacek Kowalski
@ 2025-06-30 8:33 ` Jacek Kowalski
2025-07-13 11:55 ` [Intel-wired-lan] " Mor Bar-Gabay
2025-06-30 8:35 ` [PATCH v4 2/2] e1000e: ignore uninitialized checksum word on tgp Jacek Kowalski
1 sibling, 1 reply; 7+ messages in thread
From: Jacek Kowalski @ 2025-06-30 8:33 UTC (permalink / raw)
To: Tony Nguyen, Przemek Kitszel, Andrew Lunn, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman
Cc: intel-wired-lan, netdev
As described by Vitaly Lifshits:
> Starting from Tiger Lake, LAN NVM is locked for writes by SW, so the
> driver cannot perform checksum validation and correction. This means
> that all NVM images must leave the factory with correct checksum and
> checksum valid bit set. Since Tiger Lake devices were the first to have
> this lock, some systems in the field did not meet this requirement.
> Therefore, for these transitional devices we skip checksum update and
> verification, if the valid bit is not set.
Signed-off-by: Jacek Kowalski <Jacek@jacekk.info>
Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: Vitaly Lifshits <vitaly.lifshits@intel.com>
Fixes: 4051f68318ca9 ("e1000e: Do not take care about recovery NVM checksum")
Cc: stable@vger.kernel.org
---
drivers/net/ethernet/intel/e1000e/ich8lan.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c
index 364378133526..df4e7d781cb1 100644
--- a/drivers/net/ethernet/intel/e1000e/ich8lan.c
+++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c
@@ -4274,6 +4274,8 @@ static s32 e1000_validate_nvm_checksum_ich8lan(struct e1000_hw *hw)
ret_val = e1000e_update_nvm_checksum(hw);
if (ret_val)
return ret_val;
+ } else if (hw->mac.type == e1000_pch_tgp) {
+ return 0;
}
}
--
2.47.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 2/2] e1000e: ignore uninitialized checksum word on tgp
2025-06-30 8:33 [PATCH v4 0/2] e1000e: disregard NVM checksums for known-bad cases on Tiger Lake Jacek Kowalski
2025-06-30 8:33 ` [PATCH v4 1/2] e1000e: disregard NVM checksum on tgp when valid checksum bit is not set Jacek Kowalski
@ 2025-06-30 8:35 ` Jacek Kowalski
2025-06-30 17:00 ` Simon Horman
2025-07-20 7:12 ` Mor Bar-Gabay
1 sibling, 2 replies; 7+ messages in thread
From: Jacek Kowalski @ 2025-06-30 8:35 UTC (permalink / raw)
To: Tony Nguyen, Przemek Kitszel, Andrew Lunn, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman,
Vlad URSU
Cc: intel-wired-lan, netdev
As described by Vitaly Lifshits:
> Starting from Tiger Lake, LAN NVM is locked for writes by SW, so the
> driver cannot perform checksum validation and correction. This means
> that all NVM images must leave the factory with correct checksum and
> checksum valid bit set.
Unfortunately some systems have left the factory with an uninitialized
value of 0xFFFF at register address 0x3F (checksum word location).
So on Tiger Lake platform we ignore the computed checksum when such
condition is encountered.
Signed-off-by: Jacek Kowalski <Jacek@jacekk.info>
Tested-by: Vlad URSU <vlad@ursu.me>
Fixes: 4051f68318ca9 ("e1000e: Do not take care about recovery NVM checksum")
Cc: stable@vger.kernel.org
---
drivers/net/ethernet/intel/e1000e/defines.h | 3 +++
drivers/net/ethernet/intel/e1000e/nvm.c | 6 ++++++
2 files changed, 9 insertions(+)
diff --git a/drivers/net/ethernet/intel/e1000e/defines.h b/drivers/net/ethernet/intel/e1000e/defines.h
index 8294a7c4f122..ba331899d186 100644
--- a/drivers/net/ethernet/intel/e1000e/defines.h
+++ b/drivers/net/ethernet/intel/e1000e/defines.h
@@ -638,6 +638,9 @@
/* For checksumming, the sum of all words in the NVM should equal 0xBABA. */
#define NVM_SUM 0xBABA
+/* Uninitialized ("empty") checksum word value */
+#define NVM_CHECKSUM_UNINITIALIZED 0xFFFF
+
/* PBA (printed board assembly) number words */
#define NVM_PBA_OFFSET_0 8
#define NVM_PBA_OFFSET_1 9
diff --git a/drivers/net/ethernet/intel/e1000e/nvm.c b/drivers/net/ethernet/intel/e1000e/nvm.c
index e609f4df86f4..16369e6d245a 100644
--- a/drivers/net/ethernet/intel/e1000e/nvm.c
+++ b/drivers/net/ethernet/intel/e1000e/nvm.c
@@ -558,6 +558,12 @@ s32 e1000e_validate_nvm_checksum_generic(struct e1000_hw *hw)
checksum += nvm_data;
}
+ if (hw->mac.type == e1000_pch_tgp &&
+ nvm_data == NVM_CHECKSUM_UNINITIALIZED) {
+ e_dbg("Uninitialized NVM Checksum on TGP platform - ignoring\n");
+ return 0;
+ }
+
if (checksum != (u16)NVM_SUM) {
e_dbg("NVM Checksum Invalid\n");
return -E1000_ERR_NVM;
--
2.47.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v4 2/2] e1000e: ignore uninitialized checksum word on tgp
2025-06-30 8:35 ` [PATCH v4 2/2] e1000e: ignore uninitialized checksum word on tgp Jacek Kowalski
@ 2025-06-30 17:00 ` Simon Horman
2025-07-01 8:58 ` [Intel-wired-lan] " Lifshits, Vitaly
2025-07-20 7:12 ` Mor Bar-Gabay
1 sibling, 1 reply; 7+ messages in thread
From: Simon Horman @ 2025-06-30 17:00 UTC (permalink / raw)
To: Jacek Kowalski
Cc: Tony Nguyen, Przemek Kitszel, Andrew Lunn, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vlad URSU,
intel-wired-lan, netdev
On Mon, Jun 30, 2025 at 10:35:00AM +0200, Jacek Kowalski wrote:
> As described by Vitaly Lifshits:
>
> > Starting from Tiger Lake, LAN NVM is locked for writes by SW, so the
> > driver cannot perform checksum validation and correction. This means
> > that all NVM images must leave the factory with correct checksum and
> > checksum valid bit set.
>
> Unfortunately some systems have left the factory with an uninitialized
> value of 0xFFFF at register address 0x3F (checksum word location).
> So on Tiger Lake platform we ignore the computed checksum when such
> condition is encountered.
>
> Signed-off-by: Jacek Kowalski <Jacek@jacekk.info>
> Tested-by: Vlad URSU <vlad@ursu.me>
> Fixes: 4051f68318ca9 ("e1000e: Do not take care about recovery NVM checksum")
> Cc: stable@vger.kernel.org
Thanks for the update.
Reviewed-by: Simon Horman <horms@kernel.org>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Intel-wired-lan] [PATCH v4 2/2] e1000e: ignore uninitialized checksum word on tgp
2025-06-30 17:00 ` Simon Horman
@ 2025-07-01 8:58 ` Lifshits, Vitaly
0 siblings, 0 replies; 7+ messages in thread
From: Lifshits, Vitaly @ 2025-07-01 8:58 UTC (permalink / raw)
To: Simon Horman, Jacek Kowalski
Cc: Tony Nguyen, Przemek Kitszel, Andrew Lunn, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vlad URSU,
intel-wired-lan, netdev
On 6/30/2025 8:00 PM, Simon Horman wrote:
> On Mon, Jun 30, 2025 at 10:35:00AM +0200, Jacek Kowalski wrote:
>> As described by Vitaly Lifshits:
>>
>>> Starting from Tiger Lake, LAN NVM is locked for writes by SW, so the
>>> driver cannot perform checksum validation and correction. This means
>>> that all NVM images must leave the factory with correct checksum and
>>> checksum valid bit set.
>>
>> Unfortunately some systems have left the factory with an uninitialized
>> value of 0xFFFF at register address 0x3F (checksum word location).
>> So on Tiger Lake platform we ignore the computed checksum when such
>> condition is encountered.
>>
>> Signed-off-by: Jacek Kowalski <Jacek@jacekk.info>
>> Tested-by: Vlad URSU <vlad@ursu.me>
>> Fixes: 4051f68318ca9 ("e1000e: Do not take care about recovery NVM checksum")
>> Cc: stable@vger.kernel.org
>
> Thanks for the update.
>
> Reviewed-by: Simon Horman <horms@kernel.org>
>
Reviewed-by: Vitaly Lifshits <vitaly.lifshits@intel.com>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Intel-wired-lan] [PATCH v4 1/2] e1000e: disregard NVM checksum on tgp when valid checksum bit is not set
2025-06-30 8:33 ` [PATCH v4 1/2] e1000e: disregard NVM checksum on tgp when valid checksum bit is not set Jacek Kowalski
@ 2025-07-13 11:55 ` Mor Bar-Gabay
0 siblings, 0 replies; 7+ messages in thread
From: Mor Bar-Gabay @ 2025-07-13 11:55 UTC (permalink / raw)
To: Jacek Kowalski, Tony Nguyen, Przemek Kitszel, Andrew Lunn,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Simon Horman
Cc: intel-wired-lan, netdev
On 30/06/2025 11:33, Jacek Kowalski wrote:
> As described by Vitaly Lifshits:
>
>> Starting from Tiger Lake, LAN NVM is locked for writes by SW, so the
>> driver cannot perform checksum validation and correction. This means
>> that all NVM images must leave the factory with correct checksum and
>> checksum valid bit set. Since Tiger Lake devices were the first to have
>> this lock, some systems in the field did not meet this requirement.
>> Therefore, for these transitional devices we skip checksum update and
>> verification, if the valid bit is not set.
>
> Signed-off-by: Jacek Kowalski <Jacek@jacekk.info>
> Reviewed-by: Simon Horman <horms@kernel.org>
> Reviewed-by: Vitaly Lifshits <vitaly.lifshits@intel.com>
> Fixes: 4051f68318ca9 ("e1000e: Do not take care about recovery NVM checksum")
> Cc: stable@vger.kernel.org
> ---
> drivers/net/ethernet/intel/e1000e/ich8lan.c | 2 ++
> 1 file changed, 2 insertions(+)
>
Tested-by: Mor Bar-Gabay <morx.bar.gabay@intel.com>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Intel-wired-lan] [PATCH v4 2/2] e1000e: ignore uninitialized checksum word on tgp
2025-06-30 8:35 ` [PATCH v4 2/2] e1000e: ignore uninitialized checksum word on tgp Jacek Kowalski
2025-06-30 17:00 ` Simon Horman
@ 2025-07-20 7:12 ` Mor Bar-Gabay
1 sibling, 0 replies; 7+ messages in thread
From: Mor Bar-Gabay @ 2025-07-20 7:12 UTC (permalink / raw)
To: Jacek Kowalski, Tony Nguyen, Przemek Kitszel, Andrew Lunn,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Simon Horman, Vlad URSU
Cc: intel-wired-lan, netdev
On 30/06/2025 11:35, Jacek Kowalski wrote:
> As described by Vitaly Lifshits:
>
>> Starting from Tiger Lake, LAN NVM is locked for writes by SW, so the
>> driver cannot perform checksum validation and correction. This means
>> that all NVM images must leave the factory with correct checksum and
>> checksum valid bit set.
>
> Unfortunately some systems have left the factory with an uninitialized
> value of 0xFFFF at register address 0x3F (checksum word location).
> So on Tiger Lake platform we ignore the computed checksum when such
> condition is encountered.
>
> Signed-off-by: Jacek Kowalski <Jacek@jacekk.info>
> Tested-by: Vlad URSU <vlad@ursu.me>
> Fixes: 4051f68318ca9 ("e1000e: Do not take care about recovery NVM checksum")
> Cc: stable@vger.kernel.org
> Reviewed-by: Simon Horman <horms@kernel.org>
> Reviewed-by: Vitaly Lifshits <vitaly.lifshits@intel.com>
> ---
> drivers/net/ethernet/intel/e1000e/defines.h | 3 +++
> drivers/net/ethernet/intel/e1000e/nvm.c | 6 ++++++
> 2 files changed, 9 insertions(+)
>
Tested-by: Mor Bar-Gabay <morx.bar.gabay@intel.com>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-07-20 7:12 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-30 8:33 [PATCH v4 0/2] e1000e: disregard NVM checksums for known-bad cases on Tiger Lake Jacek Kowalski
2025-06-30 8:33 ` [PATCH v4 1/2] e1000e: disregard NVM checksum on tgp when valid checksum bit is not set Jacek Kowalski
2025-07-13 11:55 ` [Intel-wired-lan] " Mor Bar-Gabay
2025-06-30 8:35 ` [PATCH v4 2/2] e1000e: ignore uninitialized checksum word on tgp Jacek Kowalski
2025-06-30 17:00 ` Simon Horman
2025-07-01 8:58 ` [Intel-wired-lan] " Lifshits, Vitaly
2025-07-20 7:12 ` Mor Bar-Gabay
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).