linux-pwm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thierry Reding <thierry.reding@gmail.com>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Xiubo Li <Li.Xiubo@freescale.com>,
	mark.rutland@arm.com, s.hauer@pengutronix.de,
	galak@codeaurora.org, swarren@wwwdotorg.org, t.figa@samsung.com,
	grant.likely@linaro.org, matt.porter@linaro.org, rob@landley.net,
	tomasz.figa@gmail.com, ian.campbell@citrix.com,
	pawel.moll@arm.com, rob.herring@calxeda.com,
	linux-arm-kernel@lists.infradead.org, linux-pwm@vger.kernel.org,
	linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
	linux-doc@vger.kernel.org, Alison Wang <b18965@freescale.com>,
	Jingchang Lu <b35083@freescale.com>
Subject: Re: [PATCHv7 1/4] pwm: Add Freescale FTM PWM driver support
Date: Tue, 17 Dec 2013 13:24:33 +0100	[thread overview]
Message-ID: <20131217122431.GA17210@ulmo.nvidia.com> (raw)
In-Reply-To: <20131217115136.GT4360@n2100.arm.linux.org.uk>

[-- Attachment #1: Type: text/plain, Size: 2035 bytes --]

On Tue, Dec 17, 2013 at 11:51:36AM +0000, Russell King - ARM Linux wrote:
> On Tue, Dec 17, 2013 at 12:10:22PM +0100, Thierry Reding wrote:
> > On Fri, Dec 13, 2013 at 04:57:04PM +0800, Xiubo Li wrote:
> > > +static inline u32 fsl_pwm_readl(struct fsl_pwm_chip *fpc,
> > > +		const void __iomem *addr)
> > > +{
> > > +	u32 val;
> > > +
> > > +	val = __raw_readl(addr);
> > > +
> > > +	if (likely(fpc->big_endian))
> > 
> > The likely() probably isn't very useful in this case. But if you want to
> > keep it, it should at least be reversed, since little-endian is actually
> > the default (you have to specify the big-endian property to activate the
> > big endian mode).
> > 
> > > +		val = be32_to_cpu(val);
> > > +	else
> > > +		val = le32_to_cpu(val);
> 
> This will also cause sparse errors, because when sparse is enabled, these
> expect __le32 or __be32 arguments, not u32.
> 
> > > +	rmb();
> > 
> > I'd prefer the rmb() to follow the __raw_readl() immediately to make the
> > relationship more explicit.
> 
> A better question to ask is: why is this barrier here?  What memory
> ordering operations is it trying to serialise?

I suppose that this was done so that the accesses would essentially
remain the same as those performed by readl() and writel().

> > > +static inline void fsl_pwm_writel(struct fsl_pwm_chip *fpc,
> > > +		u32 val, void __iomem *addr)
> > > +{
> > > +	wmb();
> > > +	if (likely(fpc->big_endian))
> > > +		val = cpu_to_be32(val);
> > > +	else
> > > +		val = cpu_to_le32(val);
> > > +
> > > +	__raw_writel(val, addr);
> > 
> > Same here. wmb() should precede __raw_writel() immediately.
> 
> Same comments here - what memory operations is the wmb() trying to
> serialise?  Does this PWM driver somehow end up doing DMA?

Not that I can see. But if my understanding is correct, not using the
barriers would allow the compiler and CPU to reorder accesses, and by
that cause the register accesses to potentially happen in the wrong
order.

Thierry

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

  parent reply	other threads:[~2013-12-17 12:24 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-13  8:57 [PATCHv7 0/4] Add Freescale FTM PWM driver Xiubo Li
     [not found] ` <1386925027-16288-1-git-send-email-Li.Xiubo-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2013-12-13  8:57   ` [PATCHv7 1/4] pwm: Add Freescale FTM PWM driver support Xiubo Li
2013-12-17 11:10     ` Thierry Reding
2013-12-17 11:51       ` Russell King - ARM Linux
2013-12-17 12:00         ` Tomasz Figa
2013-12-17 12:45           ` Thierry Reding
2013-12-17 12:54             ` Tomasz Figa
2013-12-17 13:04               ` Russell King - ARM Linux
2013-12-17 13:08                 ` Tomasz Figa
2013-12-17 13:22                 ` Thierry Reding
2013-12-18  9:43                 ` Li.Xiubo
2013-12-18  6:28             ` Li.Xiubo
2013-12-17 12:24         ` Thierry Reding [this message]
2013-12-17 12:58           ` Russell King - ARM Linux
2013-12-17 13:19             ` Thierry Reding
2013-12-18  3:34       ` Li.Xiubo
2013-12-13  8:57 ` [PATCHv7 2/4] ARM: dts: Add Freescale FTM PWM node for VF610 Xiubo Li
2013-12-13  8:57 ` [PATCHv7 3/4] ARM: dts: Enables FTM PWM device for Vybrid VF610 TOWER board Xiubo Li
2013-12-13  8:57 ` [PATCHv7 4/4] Documentation: Add device tree bindings for Freescale FTM PWM Xiubo Li

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20131217122431.GA17210@ulmo.nvidia.com \
    --to=thierry.reding@gmail.com \
    --cc=Li.Xiubo@freescale.com \
    --cc=b18965@freescale.com \
    --cc=b35083@freescale.com \
    --cc=devicetree@vger.kernel.org \
    --cc=galak@codeaurora.org \
    --cc=grant.likely@linaro.org \
    --cc=ian.campbell@citrix.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=mark.rutland@arm.com \
    --cc=matt.porter@linaro.org \
    --cc=pawel.moll@arm.com \
    --cc=rob.herring@calxeda.com \
    --cc=rob@landley.net \
    --cc=s.hauer@pengutronix.de \
    --cc=swarren@wwwdotorg.org \
    --cc=t.figa@samsung.com \
    --cc=tomasz.figa@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).