Re: [PATCH] net: emac: emac gigabit ethernet controller driver
From: Arnd Bergmann <arnd@arndb.de>
Date: 2015-12-15 21:55:39
Also in:
linux-arm-msm, linux-devicetree, lkml
From: Arnd Bergmann <arnd@arndb.de>
Date: 2015-12-15 21:55:39
Also in:
linux-arm-msm, linux-devicetree, lkml
On Tuesday 15 December 2015 15:09:23 Timur Tabi wrote:
Arnd Bergmann wrote:quoted
If that's in the probe() called from it function, just use writel() everywhere, a few extra microseconds won't kill the boot time. In general, if a user would notice the difference, use the relaxed version and add a comment to explain how you proved it's correct, otherwise stay with the default accessors.What about adding a wmb() after the last writel()? This driver does that a lot. Is that something we want to discourage? I can understand how we would want to make sure that the last write is posted before the function exits.
Please explain in a comment specifically which race you are closing by ensuring that the write gets posted. What does it race against? As I said earlier, guaranteeing that a write gets posted does not mean it has arrived at the device, we only get that behavior after a subsequent read from the same device, but you don't need a wmb() between the write and the read to guarantee this. If you have an odd bus that does not follow those rules, it may in fact be best to have a separate set of I/O accessors and not use readl/writel at all. Arnd