Driver supported smp linux kernel need use smp_wmb/smp_rmb, nor wmb/rmb?

Russell King - ARM Linux linux at arm.linux.org.uk
Thu Aug 26 05:18:04 EDT 2010


On Thu, Aug 26, 2010 at 03:43:29PM +0800, David Yang wrote:
> Start with linux 2.6.33,  the DMA coherent buffers are mapped as Normal
> Non-cacheable, so our drivers using dma_alloc_coherent() add the
> barriers (e.g. wmb/rmb) to ensure that read/wirte coherence with
> devices.
> 
> Now our drivers are stable at the non-smp linux 2.6.33,  if our driver
> need support the smp linux 2.6.33, we need replace wmb()/rmb() to
> smp_wmb()/smp_rmb()?

No.  smp_* barriers are compiler barriers on uniprocessor, and mandatory
barriers on SMP systems.

If you definitely need a barrier for UP, then use the non-smp_ versions.



More information about the linux-arm-kernel mailing list