Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp2224449imm; Thu, 18 Oct 2018 10:59:30 -0700 (PDT) X-Google-Smtp-Source: ACcGV63GyMrgtyckJl9ZQDOcLUxOTJCiH/PQnKKRGyc4cvt54ZSMMTJz9Jxvlx66QscJlAQRuXU+ X-Received: by 2002:a63:330e:: with SMTP id z14-v6mr2526495pgz.220.1539885570724; Thu, 18 Oct 2018 10:59:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539885570; cv=none; d=google.com; s=arc-20160816; b=SVDKCJwT143yyWZ3oqQzDQyciCxmb5fp2sPda/OpcboMkqFApF1gt5gjl0qTlYKnph D7Ea2QMNBydmam3TojXodSNvbqoDT0E5V4l9UqePirdiJMNYIf4NNnRLpfDLhqMy5Cft 9OZ0Vj1H5vGT2ft+f+PlGhjGXIT9EoUclPQEX2+TZOahy89iI8FYhjQndpeIIxhYK0JV uw/31BYZq9HqFIx4mSlBA913TKjL6Pzy4Yvq7xtnP/r53UhwXgFxVD2/inlKSkjceaqM ePMSoc+CW7fzMIvPQPXOmRivj6cOFkLDpgcnvxdYOgQXU+Qhd2NypdFgD34ChXh7sJY8 4Bew== 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=ATfdNtrrCYSMPYbFs3YG//baHt/ZKWJ70yFTlRCqxEg=; b=L8mW2PGlGtLXET5DCbPhWPU9H/p4BG0s/vQmQgdhp2mvtzNGfy362u4+Wxmav7+elb aIpzVIh4guf1QjTmf94nuaiQQAWUfGx1f56VJnEKPwl2LGVT6SiTzWbwUKr48ryKj5wh eUxZ44uPLiWV6FiX9mJwfm9Dfno088Ef+lKnQOw04JmGMoJT63U1JfvRzB/PW2IZHwgs vdBvWhax0Fh0Egc/4HmzeA9o27l3cOMpf7lo9Q5rhEoiBQOfjXkFkZwl0Qac7qdd0E/g lruq2FlrAYnNJY3elMdLl6b/jEPn5VjungOiujmQwhfF0SpzzRHtbx+fCYynzIIKipAe Q1wg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=JIXkA831; 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 30-v6si22295673pla.282.2018.10.18.10.59.15; Thu, 18 Oct 2018 10:59:30 -0700 (PDT) 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=JIXkA831; 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 S1728813AbeJSB7N (ORCPT + 99 others); Thu, 18 Oct 2018 21:59:13 -0400 Received: from mail.kernel.org ([198.145.29.99]:46942 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728786AbeJSB7M (ORCPT ); Thu, 18 Oct 2018 21:59:12 -0400 Received: from localhost (ip-213-127-77-176.ip.prioritytelecom.net [213.127.77.176]) (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 E107D204FD; Thu, 18 Oct 2018 17:57:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1539885427; bh=K6Nit7zyC55bJXKRAQfGGeaqP6qyRPZ6HGCrsDZgYfE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JIXkA831iOdKIh0Qjxz2bXL2dFNHzTmMdrBpVwxUmkquKLMn9aFqNLloFrHDymwQ2 H6rOEmDPYb6SANpJRuNeJc6RPaZ4Zz37MWQkL+Mrq7LdVhKf1YsQGENhNYClMPYBe7 uldO1xRLJT6BiMnV0lyLyjPiI5qDJYQF4F6iJR24= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Kazuya Mizuguchi , Simon Horman , Sergei Shtylyov , "David S. Miller" , Sasha Levin Subject: [PATCH 4.18 25/53] ravb: do not write 1 to reserved bits Date: Thu, 18 Oct 2018 19:54:18 +0200 Message-Id: <20181018175421.409912989@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181018175416.561567978@linuxfoundation.org> References: <20181018175416.561567978@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review 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 4.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Kazuya Mizuguchi [ Upstream commit 2fe397a3959de8a472f165e6d152f64cb77fa2cc ] EtherAVB hardware requires 0 to be written to status register bits in order to clear them, however, care must be taken not to: 1. Clear other bits, by writing zero to them 2. Write one to reserved bits This patch corrects the ravb driver with respect to the second point above. This is done by defining reserved bit masks for the affected registers and, after auditing the code, ensure all sites that may write a one to a reserved bit use are suitably masked. Signed-off-by: Kazuya Mizuguchi Signed-off-by: Simon Horman Reviewed-by: Sergei Shtylyov Signed-off-by: David S. Miller Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/renesas/ravb.h | 5 +++++ drivers/net/ethernet/renesas/ravb_main.c | 11 ++++++----- drivers/net/ethernet/renesas/ravb_ptp.c | 2 +- 3 files changed, 12 insertions(+), 6 deletions(-) --- a/drivers/net/ethernet/renesas/ravb.h +++ b/drivers/net/ethernet/renesas/ravb.h @@ -431,6 +431,7 @@ enum EIS_BIT { EIS_CULF1 = 0x00000080, EIS_TFFF = 0x00000100, EIS_QFS = 0x00010000, + EIS_RESERVED = (GENMASK(31, 17) | GENMASK(15, 11)), }; /* RIC0 */ @@ -475,6 +476,7 @@ enum RIS0_BIT { RIS0_FRF15 = 0x00008000, RIS0_FRF16 = 0x00010000, RIS0_FRF17 = 0x00020000, + RIS0_RESERVED = GENMASK(31, 18), }; /* RIC1 */ @@ -531,6 +533,7 @@ enum RIS2_BIT { RIS2_QFF16 = 0x00010000, RIS2_QFF17 = 0x00020000, RIS2_RFFF = 0x80000000, + RIS2_RESERVED = GENMASK(30, 18), }; /* TIC */ @@ -547,6 +550,7 @@ enum TIS_BIT { TIS_FTF1 = 0x00000002, /* Undocumented? */ TIS_TFUF = 0x00000100, TIS_TFWF = 0x00000200, + TIS_RESERVED = (GENMASK(31, 20) | GENMASK(15, 12) | GENMASK(7, 4)) }; /* ISS */ @@ -620,6 +624,7 @@ enum GIC_BIT { enum GIS_BIT { GIS_PTCF = 0x00000001, /* Undocumented? */ GIS_PTMF = 0x00000004, + GIS_RESERVED = GENMASK(15, 10), }; /* GIE (R-Car Gen3 only) */ --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -742,10 +742,11 @@ static void ravb_error_interrupt(struct u32 eis, ris2; eis = ravb_read(ndev, EIS); - ravb_write(ndev, ~EIS_QFS, EIS); + ravb_write(ndev, ~(EIS_QFS | EIS_RESERVED), EIS); if (eis & EIS_QFS) { ris2 = ravb_read(ndev, RIS2); - ravb_write(ndev, ~(RIS2_QFF0 | RIS2_RFFF), RIS2); + ravb_write(ndev, ~(RIS2_QFF0 | RIS2_RFFF | RIS2_RESERVED), + RIS2); /* Receive Descriptor Empty int */ if (ris2 & RIS2_QFF0) @@ -798,7 +799,7 @@ static bool ravb_timestamp_interrupt(str u32 tis = ravb_read(ndev, TIS); if (tis & TIS_TFUF) { - ravb_write(ndev, ~TIS_TFUF, TIS); + ravb_write(ndev, ~(TIS_TFUF | TIS_RESERVED), TIS); ravb_get_tx_tstamp(ndev); return true; } @@ -933,7 +934,7 @@ static int ravb_poll(struct napi_struct /* Processing RX Descriptor Ring */ if (ris0 & mask) { /* Clear RX interrupt */ - ravb_write(ndev, ~mask, RIS0); + ravb_write(ndev, ~(mask | RIS0_RESERVED), RIS0); if (ravb_rx(ndev, "a, q)) goto out; } @@ -941,7 +942,7 @@ static int ravb_poll(struct napi_struct if (tis & mask) { spin_lock_irqsave(&priv->lock, flags); /* Clear TX interrupt */ - ravb_write(ndev, ~mask, TIS); + ravb_write(ndev, ~(mask | TIS_RESERVED), TIS); ravb_tx_free(ndev, q, true); netif_wake_subqueue(ndev, q); mmiowb(); --- a/drivers/net/ethernet/renesas/ravb_ptp.c +++ b/drivers/net/ethernet/renesas/ravb_ptp.c @@ -319,7 +319,7 @@ void ravb_ptp_interrupt(struct net_devic } } - ravb_write(ndev, ~gis, GIS); + ravb_write(ndev, ~(gis | GIS_RESERVED), GIS); } void ravb_ptp_init(struct net_device *ndev, struct platform_device *pdev)