Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752533AbdHPVBI (ORCPT ); Wed, 16 Aug 2017 17:01:08 -0400 Received: from mail-co1nam03on0055.outbound.protection.outlook.com ([104.47.40.55]:20321 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752154AbdHPVBG (ORCPT ); Wed, 16 Aug 2017 17:01:06 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=alex.g@adaptrum.com; Subject: Re: [PATCH v3 5/5] reset: simple: read back to make sure changes are applied To: Philipp Zabel , linux-kernel@vger.kernel.org References: <20170816094701.30678-1-p.zabel@pengutronix.de> <20170816094701.30678-6-p.zabel@pengutronix.de> Cc: Andre Przywara , Maxime Coquelin , Alexandre Torgue , Maxime Ripard , Chen-Yu Tsai , Baoyou Xie , Eugeniy Paltsev , Steffen Trumtrar , Dinh Nguyen , =?UTF-8?Q?Andreas_F=c3=a4rber?= , linux-arm-kernel@lists.infradead.org, kernel@pengutronix.de From: Alexandru Gagniuc Message-ID: <561b4eb5-98be-f844-57cb-b5ce5962258f@adaptrum.com> Date: Wed, 16 Aug 2017 14:00:59 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <20170816094701.30678-6-p.zabel@pengutronix.de> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [198.0.218.81] X-ClientProxiedBy: MWHPR02CA0024.namprd02.prod.outlook.com (10.168.209.162) To CY4PR04MB0841.namprd04.prod.outlook.com (10.172.138.18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 37331b73-aee6-4884-fbe9-08d4e4e9e7d7 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(2017082002075)(300000503095)(300135400095)(201703131423075)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:CY4PR04MB0841; X-Microsoft-Exchange-Diagnostics: 1;CY4PR04MB0841;3:A0WMWqbH6XfcyETvSbt6d6wNrHrluCc9/vypdZ6P0Cc0hDtAUsOaPnlLSzJGmMhdMhpJYtmNn6FJK3Gowe/Rf/uH0ekkr4o+KUiUaf3wzIsd5h5ARnNNsTu7tK+JpgwhTfiuK8UN58n5NwTZfHZsCSADcHAJ5iNilxTQ+1w/e0tbHzP8Vdak+Ib1i8+9zDy+C9l6yyhfVK9EQTUd1WlDo1lPBB/hg+15ixrgKMTRkUyjooQahgml2AuGG/I9wBep;25:4tdyp1cfUoREfLSGSSJ0yVt6Jqx1peM0/SnPI9f7kpRrv7KioZvDr2Y0ZJrhZ2b98J+FHAoca9nu3MbarTXDanvn/Kg7kSc6eeJmxpXmu+IcjHyXzG547QN6nGzpv2r2toYQquc9qY7NmzolvaV0o2BXcLa3Gn+gb4PqWK6yOTpyEwYRMkQwrkaC0DtOEb9pg3BgvV5cFQ5EHwvTwgTmChBLkaPtAzayB3iJ2jQaDgbLX0FceMIJKq9I8rDTgsVfMtvJKAFMf9HTdpKpDW3z8hRda9ym8IYQuCVvM21M7fpHQ1STGFNAdPcUwnJ5l72bjc3ofAdl/G+un3jOQ2EJ8Q==;31:rzaqtcXXOeBBxZNVLj+2S4k4XIeQxtd82gDRL+UOscEi9xCCLO5iysTELoxSbntM9YR2fn1vGfIpIVbBr4Bam33YADNooVEI1oFU3IbPkWDluWAZNOqIqsW/wRJseGvbiLekXVYXibxH+KaVVP39mi1X/1ELzdJxuMHyQNJR1DcynQUvdm+gr2gNMDAjOKjrFYiNhIr8vJRVQYj+5mJUsnpElLLfPB3uzjiIbCTrEUQ= X-MS-TrafficTypeDiagnostic: CY4PR04MB0841: X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(6041248)(20161123564025)(20161123560025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123562025)(2016111802025)(6043046)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:CY4PR04MB0841;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:CY4PR04MB0841; X-Microsoft-Exchange-Diagnostics: 1;CY4PR04MB0841;4:dWb5lD0Jg0UWwBiBwvC61oD1qorg0cpacu+dw50oYwWGO8qS0WNnW1ry/BYD6lZg89rv7dFcaAWFID3N4xspKpVECIu0BcwhfL7nPF0DBX2ZHhc5h7Krt58OLz2RpQMlq72fJcQ+rkYrDzUpRYP3p+fqGqUUSzhbsqIeE5ZgrxIKA/aUyFAehfIBKZJ2UCg+PZpeASz17MfQzuMshK++9EJm165QzvMEnjUGmdrwJI4Wuoo/y1tikVZkNWyVVg71 X-Forefront-PRVS: 0401647B7F X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(7370300001)(4630300001)(6009001)(39830400002)(24454002)(199003)(189002)(377454003)(6506006)(6116002)(3846002)(31696002)(53546010)(4326008)(86362001)(68736007)(7416002)(66066001)(65956001)(65806001)(47776003)(7350300001)(4001350100001)(23746002)(54356999)(230700001)(5660300001)(97736004)(101416001)(31686004)(189998001)(65826007)(50466002)(6486002)(81166006)(6246003)(81156014)(76176999)(105586002)(8676002)(50986999)(110136004)(83506001)(53936002)(54906002)(229853002)(305945005)(33646002)(6512007)(7736002)(2906002)(2950100002)(6666003)(478600001)(25786009)(64126003)(42186005)(36756003)(106356001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR04MB0841;H:dev2.adaptrum;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;CY4PR04MB0841;23:d7dsy7zg5r1vsq+MCD83jscbjUjBQXmWqCDyc?= =?Windows-1252?Q?piccEnIi6KYtG5G2yGDzOJKQXzeaHNxMHDW0INuKsAFHLsKq6KNnPhzQ?= =?Windows-1252?Q?JR4pf3QI+ZnmvTOkNalWl4Dqas5R1w9q+/+dF6lulCIy7UPEwBiqqUYb?= =?Windows-1252?Q?n0SiDXAJGB1zBZlz6RBRdjWV766d8IK8Uyfm3XSxfwnxLR1sNT2JJ7hk?= =?Windows-1252?Q?CGbZbEYqzmASvKr+xT9gD/c7GZuvvfETPj2YJFiGY7OUHEYSHvMf+DCk?= =?Windows-1252?Q?CVc9R4sVCwujrujl8TIuQQxI3pc45xKUU0sWwCZLGGEkDmhPp4Ft/Evx?= =?Windows-1252?Q?QJXbxP/wJLDKzof2E4caeKb1qnSbLynNlGml0AG0jLeW0X3fp+j3eX4g?= =?Windows-1252?Q?v2AwiqBHEPoDUkl9Rj/T/2lZt39BiJ89i4i94e7QYS2UBJjDsl23YiF1?= =?Windows-1252?Q?yxub6g2uxSfr60PPdxv/oS029MAgMyQdO7FnYuTkrUrnOmzLcE8ZKz0P?= =?Windows-1252?Q?6MTDypxtPXUsOCS92IzLIEtKTL3Fo8pZxrYoyS8VJDznoPzp/GpjXGtd?= =?Windows-1252?Q?azVIeoAkikOKnnAGg7wT7WJM88G7k1U/hyxIyovM3YpH2r4ujM41rjK/?= =?Windows-1252?Q?uekKIkhuXI+iQZPls5wJ3PjHKmj3PFbxxdYBAb0yhRXa2hsaQiwWMo1Z?= =?Windows-1252?Q?2JMakHbQmdSVI8ae+CIgClCWQ7At84bRvcuB81ktJz2/km8GY1ksYSGy?= =?Windows-1252?Q?6yKL/QAUqedV9+iBPNV4tUAgjgiUfmLYLgy5cQtrBuz5+X4MelLn6zE+?= =?Windows-1252?Q?HwJ5oKbQmhAikzuS7taAMOsnCm4zSyuv1mpclr/tHuJwF7AE/hViL61y?= =?Windows-1252?Q?QbZDMz/fmS6o6EypyxfMwSG6Yw8CUoIIykWKvIXSR5fu1xNFx2BSRbSf?= =?Windows-1252?Q?jZ1vSbLhagt8N1SGiD+15aTkpC4OhQzDSSPCsJDCi4cDQdZCxPh85gWM?= =?Windows-1252?Q?z1x1FqzNWKTf3UC/P3dZXDLbbj65J+8hquJIJB28EkMnv39ujirbII0D?= =?Windows-1252?Q?fK/Ckw7QP5O/KC8eZbScC/qT3F0gi2tcEyH9XI969g0QEVqbtf9mjp85?= =?Windows-1252?Q?6KfZ06bNfnIiclfckiiONSEiVlXKKznTMz5hOYUtKEFJOXg3ns1DeY3z?= =?Windows-1252?Q?2un/I/IuKOUQryj2s2ZAOQizEvJ8TYqNtaNQjB1lSZxkObtrNP+CM57a?= =?Windows-1252?Q?GaoHdsbRqiJ/KtfxYbiKP/MBnQTD4gKBznF3KJ9dBYFjK4XmePsyjK+N?= =?Windows-1252?Q?GSdY48xYUuXosKiuiGeFxtQAKIJ81TpkR5NxCV7gVDookoNx9ua2hB02?= =?Windows-1252?Q?KNZVwT/YgzxzSa1hd4zCOLYcCW7Y6iiqsbhnUonX/uxJ2t3fAbLPwf57?= =?Windows-1252?Q?liziCXK6hGO9CU7q+yx5FaBzZWVW3RVf/NwZ+xkICincQ2jIYsqbVuHn?= =?Windows-1252?Q?JEIrdjuOpuFGKZbUxL6jDpu3vYTk7DIQhUV2V1mTNU8i49DVQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR04MB0841;6:B2/042qIJ782w8zXtlfsB+FI732o6nqFjGaT5NtD1uCzDhw9vYylVmdlmF58DWNWcb3iSzoLZuMQLylfcX3Pc1jFcqUhkDWodNYi4119h7rYkin+2AtJ96oUHoQHCZeNFlka+Hzml4LIqIflPv+dRhMDp1HRUZqb7RtaLPf1jvyrP5zR042aCXqyBB1W6o90zx6esfd30Jr9FOiZKRjQHDWO2QF6Ek4NWHuaZdXBfQwzk5LxBREDMko7pZok/NOfh/czUx14yk1mzYLbGSqb7qAJdKSeVKno/MrubiklAMhz7Iz+jI1awQ/tKPTvLXHXEo87kqfv2Wwrgp+qONta/w==;5:MPt4q4Ldtw30nkY3rf6nODs96EKPv21VrDQgGoBj3f2OlhhR2lK2Z0lp+ADkhfL5zO9UdZZiRDHftANQGj1mF4Z5Hy6iZDGWD2Ilv1sc0I52cvEFYOjOqgQKjW5O1XIKbjQdx33j8uPX+dU35ts68g==;24:G0K+CoYjQc6REwEJ3BDTcscOS/qIAif8BMR8lWW/DaoWDS12evCIAPUQG1LO0gDC4jEu0om8laW/vR6OKLv7hnwOIC/R4DDB7i+ipGQmf4o=;7:SJ4sgjbQ9E/f77dEWfkKsh2XRZo3s0M5lPBgEob5pe14MrtdZkR75PsbfzN5Pk+1Nlrm1Tr4WHvPON/CVfqiOdkPKmeU7F0BmXRWxKd78wHNL1eBrK4UPNinPv2H43oe5Vb8qE7JvEcYqGKnLpTTup1MYw1n6slMgyvCtfbM4DNvRCp+vbFpOHjsF3lwEV3cWTtx98dGSfP2JoQWBCynGM2sp9F52ZXbMvG/o8hBL3I= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: adaptrum.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Aug 2017 21:01:02.5068 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR04MB0841 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2147 Lines: 60 On 08/16/2017 02:47 AM, Philipp Zabel wrote: > Read back the register after setting or clearing a reset bit to make > sure that the changes are applied to the reset controller hardware. > Theoretically, this avoids the write to stay stuck in a store buffer Is there hardware where this has been observed to happen, or is this purely theoretical? It would be nice to have a "this is needed on hardware XYZ because ABC, and doesn't affect other hardware" comment in the source. > during the delay of an assert-delay-deassert sequence, and makes sure > that the reset really is asserted for the specified duration. > > Signed-off-by: Philipp Zabel > --- > drivers/reset/reset-simple.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/reset/reset-simple.c b/drivers/reset/reset-simple.c > index 13e7d5559acc9..d98a7e7d802d1 100644 > --- a/drivers/reset/reset-simple.c > +++ b/drivers/reset/reset-simple.c > @@ -39,17 +39,20 @@ static int reset_simple_set(struct reset_controller_dev *rcdev, > int reg_width = sizeof(u32); > int bank = id / (reg_width * BITS_PER_BYTE); > int offset = id % (reg_width * BITS_PER_BYTE); > + void __iomem *addr = data->membase + (bank * reg_width); > unsigned long flags; > u32 reg; > > spin_lock_irqsave(&data->lock, flags); > > - reg = readl(data->membase + (bank * reg_width)); > + reg = readl(addr); > if (assert ^ data->active_low) > reg |= BIT(offset); > else > reg &= ~BIT(offset); > - writel(reg, data->membase + (bank * reg_width)); > + writel(reg, addr); > + /* Read back to make sure the write doesn't linger in a store buffer */ > + readl(addr); You're not using the returned value to check that the reset was actually set. This seems a very arbitrary readback workaround, which gives no indication if it actually succeeded or not. Also the set() is now asymmetrical to clear(). In cases when releasing reset on a HW block that is about to have IO performed on it, one would want to make sure the reset is actually deasserted before doing any IO. Alex > > spin_unlock_irqrestore(&data->lock, flags); > >