diff mbox series

[1/1,SRU,F,H,I,OEM-5.10,OEM-5.13] UBUNTU: SAUCE: e1000e: Do not take care about recovery NVM checksum

Message ID 20210721103731.232200-2-acelan.kao@canonical.com
State Accepted
Headers show
Series e1000e blocks the boot process when it tried to write checksum to its NVM | expand

Commit Message

AceLan Kao July 21, 2021, 10:37 a.m. UTC
From: Sasha Neftin <sasha.neftin@intel.com>

BugLink: https://bugs.launchpad.net/bugs/1936998

On new platforms, the NVM is read-only. Attempting to update the NVM
is causing a lockup to occur. Do not attempt to write to the NVM
on platforms where it's not supported.
Emit an error message when the NVM checksum is invalid.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=213667
Suggested-by: Dima Ruinskiy <dima.ruinskiy@intel.com>
Suggested-by: Vitaly Lifshits <vitaly.lifshits@intel.com>
Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
(cherry picked from
https://patchwork.ozlabs.org/project/intel-wired-lan/patch/20210718041031.3619696-1-sasha.neftin@intel.com/)
Signed-off-by: Chia-Lin Kao (AceLan) <acelan.kao@canonical.com>
---
 drivers/net/ethernet/intel/e1000e/ich8lan.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

Comments

Stefan Bader Aug. 31, 2021, 1:26 p.m. UTC | #1
On 21.07.21 12:37, AceLan Kao wrote:
> From: Sasha Neftin <sasha.neftin@intel.com>
> 
> BugLink: https://bugs.launchpad.net/bugs/1936998
> 
> On new platforms, the NVM is read-only. Attempting to update the NVM
> is causing a lockup to occur. Do not attempt to write to the NVM
> on platforms where it's not supported.
> Emit an error message when the NVM checksum is invalid.
> 
> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=213667
> Suggested-by: Dima Ruinskiy <dima.ruinskiy@intel.com>
> Suggested-by: Vitaly Lifshits <vitaly.lifshits@intel.com>
> Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
> (cherry picked from
> https://patchwork.ozlabs.org/project/intel-wired-lan/patch/20210718041031.3619696-1-sasha.neftin@intel.com/)

This is now upstream as:

commit 4051f68318ca9f3d3becef3b54e70ad2c146df97
Author: Sasha Neftin <sasha.neftin@intel.com>
Date:   Sun Jul 18 07:10:31 2021 +0300

     e1000e: Do not take care about recovery NVM checksum

     On new platforms, the NVM is read-only. Attempting to update the NVM
     is causing a lockup to occur. Do not attempt to write to the NVM
     on platforms where it's not supported.
     Emit an error message when the NVM checksum is invalid.

     Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=213667
     Fixes: fb776f5d57ee ("e1000e: Add support for Tiger Lake")
     Suggested-by: Dima Ruinskiy <dima.ruinskiy@intel.com>
     Suggested-by: Vitaly Lifshits <vitaly.lifshits@intel.com>
     Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
     Tested-by: Dvora Fuxbrumer <dvorax.fuxbrumer@linux.intel.com>
     Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
> Signed-off-by: Chia-Lin Kao (AceLan) <acelan.kao@canonical.com>
Acked-by: Stefan Bader <stefan.bader@canonical.com>
> ---

We should take the original cherry pick and add the BugLink and AceLan's s-o-b 
when applying.

-Stefan

>   drivers/net/ethernet/intel/e1000e/ich8lan.c | 18 +++++++++++-------
>   1 file changed, 11 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c
> index 16cd6c7cd8cc8..dc2a570f77425 100644
> --- a/drivers/net/ethernet/intel/e1000e/ich8lan.c
> +++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c
> @@ -4125,13 +4125,17 @@ static s32 e1000_validate_nvm_checksum_ich8lan(struct e1000_hw *hw)
>   		return ret_val;
>   
>   	if (!(data & valid_csum_mask)) {
> -		data |= valid_csum_mask;
> -		ret_val = e1000_write_nvm(hw, word, 1, &data);
> -		if (ret_val)
> -			return ret_val;
> -		ret_val = e1000e_update_nvm_checksum(hw);
> -		if (ret_val)
> -			return ret_val;
> +		e_dbg("NVM Checksum Invalid\n");
> +
> +		if (hw->mac.type < e1000_pch_cnp) {
> +			data |= valid_csum_mask;
> +			ret_val = e1000_write_nvm(hw, word, 1, &data);
> +			if (ret_val)
> +				return ret_val;
> +			ret_val = e1000e_update_nvm_checksum(hw);
> +			if (ret_val)
> +				return ret_val;
> +		}
>   	}
>   
>   	return e1000e_validate_nvm_checksum_generic(hw);
>
diff mbox series

Patch

diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c
index 16cd6c7cd8cc8..dc2a570f77425 100644
--- a/drivers/net/ethernet/intel/e1000e/ich8lan.c
+++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c
@@ -4125,13 +4125,17 @@  static s32 e1000_validate_nvm_checksum_ich8lan(struct e1000_hw *hw)
 		return ret_val;
 
 	if (!(data & valid_csum_mask)) {
-		data |= valid_csum_mask;
-		ret_val = e1000_write_nvm(hw, word, 1, &data);
-		if (ret_val)
-			return ret_val;
-		ret_val = e1000e_update_nvm_checksum(hw);
-		if (ret_val)
-			return ret_val;
+		e_dbg("NVM Checksum Invalid\n");
+
+		if (hw->mac.type < e1000_pch_cnp) {
+			data |= valid_csum_mask;
+			ret_val = e1000_write_nvm(hw, word, 1, &data);
+			if (ret_val)
+				return ret_val;
+			ret_val = e1000e_update_nvm_checksum(hw);
+			if (ret_val)
+				return ret_val;
+		}
 	}
 
 	return e1000e_validate_nvm_checksum_generic(hw);