Thread (18 messages) 18 messages, 9 authors, 2011-05-19

RE: [PATCH 1/3] mpt2sas: remove the use of writeq, since writeq isnot atomic

From: David Laight <hidden>
Date: 2011-05-18 08:06:16
Also in: linux-scsi

=20
quoted
quoted
quoted
static inline void writeq(__u64 val, volatile void __iomem
*addr)
quoted
quoted
quoted
{
        writel(val, addr);
        writel(val >> 32, addr+4);
}
...
quoted
quoted
quoted
We need the 64 bit completed in one access pci memory write,
else spin lock is required.
quoted
quoted
quoted
Since it's going to be difficult to know which writeq was
implemented in the kernel,=20
quoted
quoted
quoted
the driver is going to have to always acquire a spin lock each
time we do 64bit write.
...
I'm just in the process of finding them now on IRC so I can demand an
explanation: this is a really serious API problem because writeq is
supposed to be atomic on 64 bit.
Most 32 bit systems don't have atomic 64bit writes.
I'd also have thought there would be code which wouldn't mind the
write being done as two cycles.

I'm not sure that some of the ppc soc systems are capable of
doing a 64bit data pci/pcie cycle except by dma.
So your driver is probably doomed to require a lock.

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