> > > > static inline void writeq(__u64 val, volatile void __iomem *addr) > > > > { > > > > writel(val, addr); > > > > writel(val >> 32, addr+4); > > > > } ... > > > > We need the 64 bit completed in one access pci memory write, else spin lock is required. > > > > Since it's going to be difficult to know which writeq was implemented in the kernel, > > > > 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 -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html