Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp4025089ybl; Mon, 3 Feb 2020 11:05:11 -0800 (PST) X-Google-Smtp-Source: APXvYqwT0JIbT118hWrVzs9y5NBTHTCtGxwIr8yoynKkqCesZtLD4W0kW40ZklM/bALGndVt/3vj X-Received: by 2002:a05:6830:10d7:: with SMTP id z23mr18575261oto.114.1580756711277; Mon, 03 Feb 2020 11:05:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580756711; cv=none; d=google.com; s=arc-20160816; b=TOZyfvdBhq1ixtpWSiGI2yA1dc7cSZ9i8ldjsyFtem8TxDs18CoOtLmyIjRuJo3vHq JDxFAKX0fq1lSW+Ojwks3jj8OXKyfJQMGVHlGLSLcjNqIepwlEky7d0aEjFiWiMvOj7S nbK0ytMXDpS0lZd5+g9n2i2y25ttDhIFeeNRtQkPM9F2UKf/nozPky465O6O6TSm3XzY hJ40CA75l//M45d3I6dE5P0J8rjnz3DUGyuHxIxuFLmsBwbTEqpqdElc8cqCDt526sge Tfp1BZ9aza/rkhnXj3MxcR9hKhGnvLD45iOcjkJdUWGnH/ZPDebTGMI5ci0nCLCc1uR+ 8hWg== 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=GMPQBzf0YcMtwtcZAFwzHOylyQ0CzL4OJ7yE4Kw0Vgo=; b=HyTC8b7Ix9/I9SjMlrtuH364/scOXPMHSGQVwuAKmi7d4Kn9eag68L9sMcfw0aHjJl 0wH1owxXosj/9+zafZPJlacz3RskrN1kryxYFB19poEV1TVULOGjIHECTVfHY9NAwj+D lDR03Hd90cyzJmFP1J67f1Yub6OQxGm3oMmuPwyJwaNvfUC9PtegTf40+X4mpr+N60Vt KEyO4Qnbst1+DgVZQLrkaq79CNGNaP1m5/gzoqOXvj4vcOw8ezsvHZOFUhI0OtvIOcqM P5DRnGkuOW1u37wIdP6iT8pl6l2FBSORI8HXs2RF+FYkM3Py9IJ1x8bfH2xDwbSgsKxv 3ssw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=k3z1dP6A; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 38si10471665otu.166.2020.02.03.11.04.59; Mon, 03 Feb 2020 11:05:11 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=k3z1dP6A; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729864AbgBCQ3s (ORCPT + 99 others); Mon, 3 Feb 2020 11:29:48 -0500 Received: from mail.kernel.org ([198.145.29.99]:41836 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729847AbgBCQ3p (ORCPT ); Mon, 3 Feb 2020 11:29:45 -0500 Received: from localhost (unknown [104.132.45.99]) (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 6CE9E20838; Mon, 3 Feb 2020 16:29:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1580747384; bh=c+d813cZMCYf0vAj2pTZXXiLVWj7SVH0DsY+S6RlMds=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=k3z1dP6A9kCFsm/oeTRsd1ASuhOeJ2eMUTFKmld2stU3bS0tOr2JcKBN+fUYgtLFd FnEZlj9uQD8AAlYvsLrrvLBAB8JnPk731bWBKSvb5bCQIFn3o9pgE38VdRR88KhjYf 7QwYzB/NEFiqGzvM1F4OjZ4+ruT/LcYsvoFwIPPU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Peter Zijlstra , Fenghua Yu , Tony Luck , "David S. Miller" , Sasha Levin Subject: [PATCH 4.14 24/89] drivers/net/b44: Change to non-atomic bit operations on pwol_mask Date: Mon, 3 Feb 2020 16:19:09 +0000 Message-Id: <20200203161920.127855118@linuxfoundation.org> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200203161916.847439465@linuxfoundation.org> References: <20200203161916.847439465@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: Fenghua Yu [ Upstream commit f11421ba4af706cb4f5703de34fa77fba8472776 ] Atomic operations that span cache lines are super-expensive on x86 (not just to the current processor, but also to other processes as all memory operations are blocked until the operation completes). Upcoming x86 processors have a switch to cause such operations to generate a #AC trap. It is expected that some real time systems will enable this mode in BIOS. In preparation for this, it is necessary to fix code that may execute atomic instructions with operands that cross cachelines because the #AC trap will crash the kernel. Since "pwol_mask" is local and never exposed to concurrency, there is no need to set bits in pwol_mask using atomic operations. Directly operate on the byte which contains the bit instead of using __set_bit() to avoid any big endian concern due to type cast to unsigned long in __set_bit(). Suggested-by: Peter Zijlstra Signed-off-by: Fenghua Yu Signed-off-by: Tony Luck Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/broadcom/b44.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/broadcom/b44.c b/drivers/net/ethernet/broadcom/b44.c index a1125d10c8255..8b9a0ce1d29f5 100644 --- a/drivers/net/ethernet/broadcom/b44.c +++ b/drivers/net/ethernet/broadcom/b44.c @@ -1521,8 +1521,10 @@ static int b44_magic_pattern(u8 *macaddr, u8 *ppattern, u8 *pmask, int offset) int ethaddr_bytes = ETH_ALEN; memset(ppattern + offset, 0xff, magicsync); - for (j = 0; j < magicsync; j++) - set_bit(len++, (unsigned long *) pmask); + for (j = 0; j < magicsync; j++) { + pmask[len >> 3] |= BIT(len & 7); + len++; + } for (j = 0; j < B44_MAX_PATTERNS; j++) { if ((B44_PATTERN_SIZE - len) >= ETH_ALEN) @@ -1534,7 +1536,8 @@ static int b44_magic_pattern(u8 *macaddr, u8 *ppattern, u8 *pmask, int offset) for (k = 0; k< ethaddr_bytes; k++) { ppattern[offset + magicsync + (j * ETH_ALEN) + k] = macaddr[k]; - set_bit(len++, (unsigned long *) pmask); + pmask[len >> 3] |= BIT(len & 7); + len++; } } return len - 1; -- 2.20.1