Thread (27 messages) flat view 27 messages, 7 authors, 2016-02-22

[PATCH V2 6/6] coresight-stm: adding driver for CoreSight STM component

From: arnd@arndb.de (Arnd Bergmann)
Date: 2016-02-05 14:31:17
Also in: linux-api, lkml

On Friday 05 February 2016 15:06:20 Alexander Shishkin wrote:
Chunyan Zhang [off-list ref] writes:
quoted
+#ifndef CONFIG_64BIT
+static inline void __raw_writeq(u64 val, volatile void __iomem *addr)
+{
+     asm volatile("strd %1, %0"
+                  : "+Qo" (*(volatile u64 __force *)addr)
+                  : "r" (val));
+}
Is it really ok to do this for all !64bit arms, inside a driver, just
like that? I'm not an expert, but I'm pretty sure there's more to it.
It's normally device dependent whether this works or not, on 32-bit
architectures, a 64-bit access to an I/O bus tends to get split into
two 32 bit accesses and the order might not be the as what was
intended.

We have functions in include/linux/io-64-nonatomic-hi-lo.h
and include/linux/io-64-nonatomic-lo-hi.h that are meant to
do this right. Maybe the driver can be changed to use whichever
one is correct for it.

	Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help