From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752836AbbJZB0N (ORCPT ); Sun, 25 Oct 2015 21:26:13 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:61422 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752150AbbJZB0I (ORCPT ); Sun, 25 Oct 2015 21:26:08 -0400 From: Arnd Bergmann To: "Marc Kleine-Budde" Subject: Re: [PATCH 1/2] can: xilinx: use readl/writel instead of ioread/iowrite Date: Mon, 26 Oct 2015 02:25:30 +0100 User-Agent: KMail/1.12.2 (Linux/3.19.0-27-generic; KDE/4.3.2; x86_64; ; ) Cc: linux-arm-kernel@lists.infradead.org, Kedareswara rao Appana , anirudh@xilinx.com, wg@grandegger.com, michal.simek@xilinx.com, soren.brinkmann@xilinx.com, appanad@xilinx.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-can@vger.kernel.org References: <1445489163-11045-1-git-send-email-appanad@xilinx.com> <8460953.p47oezaZnR@wuerfel> <562D3C4C.60306@pengutronix.de> In-Reply-To: <562D3C4C.60306@pengutronix.de> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Message-Id: <201510260225.30934.arnd@arndb.de> X-Provags-ID: V03:K0:lWkLHfYvC1RhCtpOxIqGQz7YX0VZuRD/S7l4vrvaSFw5Pt8Hk15 qPsDwnMHk/6j4I3eg3CoLc4TTbvQ48QV+O6WtcOSfidYaySyZcidt64LyYRLsqpbPE7MS5D UpsN79Rx48jhoBLT8+ZNfqqZr3O/QACGbVbse5SZ4Kldzw6PkiSvlBjtyiFY4MLxLWYzEkS PTPDXZPjG/2YMfaHtxg2Q== X-UI-Out-Filterresults: notjunk:1;V01:K0:/wtDmvjwN+A=:kRNF/Nb6gft22sOgaDxAi6 Sr10Uh3a/+7eD1ymihFirUyfYZzemSPVddTpMvV0pjK6GfQ5EFFqir3m61lSAJMlnnW/aGSJD 0dE4LhFgk5gWT1yZqavzl4nc/Lbf/o6wqFBr+JuyI+Z+9ZvzY0orUomJkt3ZAoGSciTLoq7iA zGLU+NNgu3n83neaGrpBy2zB28M3rylyhjGCPLysk7BOOycqrltiVIrLfD2dbAVfFiVes0qOp VcnqzKa5I5s8bBJYvq4ZitwheU8jGGFrtcpJzTmidRXdErdaBy8vzadzQvcpQI0KtWeeeUV1Q tNaw0yU8qYdPi9Ovp0PZ4JZLZ5prrBQu5Qi3pDFXYDndcvywWjp7NBzOSagIQuCeOlE0BCipg prnQPdTytLc/NhuOV+3JUx+nRzSPBdXzfpVHDE/zT6kQDroAdUl5uwFYXlDK0144lZJd+C+Ya /9A36M9DjsirCuqi9NscVVKSE8rnQhRcFFxcTDdY7IXY51lDSNF0H/zSs3tTxx1f3N9bX55XD uRjnXXrurA0czVDjogHf67B0t/jvhl/1wfk90LraEG2cgou1jKirXFTXkeOz6KyCjpafnVc6Q UteHXhpcCoA0YHVLzBiBLTWQI0l45fhcwFZXT6i5nbIxUucnngoAxXM4O3t/4hblntMB0pDqN 6v+Q0VOFaI+OfYKN5ZG0eWWHV+k07EoFKQGx9LQVu0Q84bF6kZfE7dQ60UBSmxnWoEpwGk+i7 268GY5XUeqE77Xvl Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sunday 25 October 2015, Marc Kleine-Budde wrote: > On 10/22/2015 10:58 AM, Arnd Bergmann wrote: > >>> The two should really do the same thing: iowrite32() is just a static inline > >>> calling writel() on both ARM32 and ARM64. On which kernel version did you > >>> observe the difference? It's possible that an older version used > >>> CONFIG_GENERIC_IOMAP, which made this slightly more expensive. > >>> > >>> If there are barriers that you want to get rid of for performance reasons, > >>> you should use writel_relaxed(), but be careful to synchronize them correctly > >>> with regard to DMA. It should be fine in this driver, as it does not > >>> perform any DMA, but be aware that there is no big-endian version of > >>> writel_relaxed() at the moment. > >> > >> We don't have DMA in CAN drivers, but usually a certain write triggers > >> sending. Do we need a barrier before triggering the sending? > > > > No, the relaxed writes are not well-defined across architectures. On > > ARM, the CPU guarantees that stores to an MMIO area are still in order > > with respect to one another, the barrier is only needed for actual DMA, > > so you are fine. I would expect the same to be true everywhere, > > otherwise a lot of other drivers would be broken too. > > And the relaxed functions seem not to be available on all archs. This > driver should work on microblaze. Are __raw_writeX(), __raw_readX() an > alternative here? __raw_writeX() and __raw_readX() are not safe to use in drivers in general. readl_relaxed() should work on all architectures nowadays, and I've checked that it does on microblaze. Arnd