Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp584223ybt; Fri, 19 Jun 2020 08:42:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy1CJcz18GBT2Rj0c1bcqw8sd4a3RW3yPJVDW7BUvh1yeEb4zQ2XQK7K1qorYjNtHjBAnle X-Received: by 2002:a50:98c1:: with SMTP id j59mr4105265edb.120.1592581351928; Fri, 19 Jun 2020 08:42:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592581351; cv=none; d=google.com; s=arc-20160816; b=HoTJwexbn5gNCzCkUUOyNYDRvNC3gvg4k805PPeTQ7VCesJO3ZXSXPN3lcCkqdcJ4+ /E1AFKmZ1V3SKbDFSZG13BTc6DCbGDtGEGi4rDy+y4l+4+ouRDO6LZiL3LTKGKIwmGXN /nI0Xns68yiI3nAre/VjSoCyGOXmIsvpA/P/oU7+LQ46/Md5GRVMvzbTQoWrOV13sTJf MKC4D2mCd5dY/WlEC8DcQrd04T7PpATClqu/CP2PImLSUjJWSoYRJ0H45sjnLmEGBQ3F M+1li/09mjKa06g/I68eMY+O6ln7zd69wKZulypNWO7rlMzfOWN+/6Nh9OBav6jjT20J xi6g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=3PFyf9eYO+YPDVQDpMQTIiP31onKOFXsfArGQGJN284=; b=EXKGl6JLA6L+Z10yLHW5eXnsdtFA2T5ssJPVMB/iTHzYVaYligG+NAMx8zyZBPCQ3C sM9X7x2vW4exlX9AXeAQTlOxJ5IQFlbnJokY7153QPyWbhZ0UP1R+B5cDd0EYTnlRrkg QbmF/ZKeEZc4k8c7RGeWidsQmxRK1wHKS8jx2YRcrd/ZCY45K63xNln5o6IqtcKyieUc 3A9DsXhwCAzv5ofhAZJ3V6Kybpy1VxD3/wYW5a2Knx+kqtYKMiamUzVTAiL0jxrmlYYj aD8d+f4twSTgZhHrBlgRMHzvp1/zeeOIvj986r8U/5C2vKlYrYu1W3jWCJWVbuIn7V3r 2/Jg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Fk6uMWs8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id e7si4171833ejx.291.2020.06.19.08.42.09; Fri, 19 Jun 2020 08:42:31 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Fk6uMWs8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2405053AbgFSPjY (ORCPT + 99 others); Fri, 19 Jun 2020 11:39:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:32796 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2391210AbgFSP3O (ORCPT ); Fri, 19 Jun 2020 11:29:14 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 77D7C21D6C; Fri, 19 Jun 2020 15:29:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592580552; bh=8FPgag9J9+4OfyBfUdpPAoFnxdEGZSeY+hr69ytXUSM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Fk6uMWs8iyvSWaksI7mBe6ZYy7DlogSadmdjyaHTNNtagskiDwV4H+YkvqPQ5TmdH lJiQEXqTc06IcIxVnDPtmZoMjimRVxmT6MhYlIEnf0g6AZD4fdOaHtUU6UcY38UP0j zwi56bsL2aLjq8LsUZOSoxEsON6uC3nUeEh4+f0I= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Punit Agrawal , Alexander Duyck , Aaron Brown , Jeff Kirsher Subject: [PATCH 5.7 294/376] e1000e: Relax condition to trigger reset for ME workaround Date: Fri, 19 Jun 2020 16:33:32 +0200 Message-Id: <20200619141724.258128166@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200619141710.350494719@linuxfoundation.org> References: <20200619141710.350494719@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Punit Agrawal commit d601afcae2febc49665008e9a79e701248d56c50 upstream. It's an error if the value of the RX/TX tail descriptor does not match what was written. The error condition is true regardless the duration of the interference from ME. But the driver only performs the reset if E1000_ICH_FWSM_PCIM2PCI_COUNT (2000) iterations of 50us delay have transpired. The extra condition can lead to inconsistency between the state of hardware as expected by the driver. Fix this by dropping the check for number of delay iterations. While at it, also make __ew32_prepare() static as it's not used anywhere else. CC: stable Signed-off-by: Punit Agrawal Reviewed-by: Alexander Duyck Tested-by: Aaron Brown Signed-off-by: Jeff Kirsher Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/intel/e1000e/e1000.h | 1 - drivers/net/ethernet/intel/e1000e/netdev.c | 12 +++++------- 2 files changed, 5 insertions(+), 8 deletions(-) --- a/drivers/net/ethernet/intel/e1000e/e1000.h +++ b/drivers/net/ethernet/intel/e1000e/e1000.h @@ -576,7 +576,6 @@ static inline u32 __er32(struct e1000_hw #define er32(reg) __er32(hw, E1000_##reg) -s32 __ew32_prepare(struct e1000_hw *hw); void __ew32(struct e1000_hw *hw, unsigned long reg, u32 val); #define ew32(reg, val) __ew32(hw, E1000_##reg, (val)) --- a/drivers/net/ethernet/intel/e1000e/netdev.c +++ b/drivers/net/ethernet/intel/e1000e/netdev.c @@ -119,14 +119,12 @@ static const struct e1000_reg_info e1000 * has bit 24 set while ME is accessing MAC CSR registers, wait if it is set * and try again a number of times. **/ -s32 __ew32_prepare(struct e1000_hw *hw) +static void __ew32_prepare(struct e1000_hw *hw) { s32 i = E1000_ICH_FWSM_PCIM2PCI_COUNT; while ((er32(FWSM) & E1000_ICH_FWSM_PCIM2PCI) && --i) udelay(50); - - return i; } void __ew32(struct e1000_hw *hw, unsigned long reg, u32 val) @@ -607,11 +605,11 @@ static void e1000e_update_rdt_wa(struct { struct e1000_adapter *adapter = rx_ring->adapter; struct e1000_hw *hw = &adapter->hw; - s32 ret_val = __ew32_prepare(hw); + __ew32_prepare(hw); writel(i, rx_ring->tail); - if (unlikely(!ret_val && (i != readl(rx_ring->tail)))) { + if (unlikely(i != readl(rx_ring->tail))) { u32 rctl = er32(RCTL); ew32(RCTL, rctl & ~E1000_RCTL_EN); @@ -624,11 +622,11 @@ static void e1000e_update_tdt_wa(struct { struct e1000_adapter *adapter = tx_ring->adapter; struct e1000_hw *hw = &adapter->hw; - s32 ret_val = __ew32_prepare(hw); + __ew32_prepare(hw); writel(i, tx_ring->tail); - if (unlikely(!ret_val && (i != readl(tx_ring->tail)))) { + if (unlikely(i != readl(tx_ring->tail))) { u32 tctl = er32(TCTL); ew32(TCTL, tctl & ~E1000_TCTL_EN);