History

e1000e: Enable GPT clock before sending message to CSME

On corporate (CSME) ADL systems, the Ethernet Controller may stop working ("HW unit hang") after exiting from the s0ix state. The reason is that CSME misses the message sent by the host. Enabling the dynamic GPT clock solves this problem. This clock is cleared upon HW initialization.

Sasha Neftin committed 4 years ago

Commit b49feac1 parent cd72e611 file · +4 −0Browse files

Unified · Split

drivers/net/ethernet/intel/e1000e/netdev.c+4−0
@@ -6494,6 +6494,10 @@ static void e1000e_s0ix_exit_flow(struct e1000_adapter *adapter) · 6493 unmodified lines
6494 6494
6495 if (er32(FWSM) & E1000_ICH_FWSM_FW_VALID &&6495 if (er32(FWSM) & E1000_ICH_FWSM_FW_VALID &&
6496 hw->mac.type >= e1000_pch_adp) {6496 hw->mac.type >= e1000_pch_adp) {
6497 /* Keep the GPT clock enabled for CSME */
6498 mac_data = er32(FEXTNVM);
6499 mac_data |= BIT(3);
6500 ew32(FEXTNVM, mac_data);
6497 /* Request ME unconfigure the device from S0ix */6501 /* Request ME unconfigure the device from S0ix */
6498 mac_data = er32(H2ME);6502 mac_data = er32(H2ME);
6499 mac_data &= ~E1000_H2ME_START_DPG;6503 mac_data &= ~E1000_H2ME_START_DPG;