On 20/06/13 20:02, Arnd Bergmann wrote: > On Thursday 20 June 2013, Srinivas KANDAGATLA wrote: >> +static u64 gt_counter_read(void) >> +{ >> + u64 counter; >> + u32 lower; >> + u32 upper, old_upper; >> + >> + upper = __raw_readl(gt_base + GT_COUNTER1); >> + do { >> + old_upper = upper; >> + lower = __raw_readl(gt_base + GT_COUNTER0); >> + upper = __raw_readl(gt_base + GT_COUNTER1); >> + } while (upper != old_upper); >> + >> + counter = upper; >> + counter <<= 32; >> + counter |= lower; >> + return counter; >> +} > > Please replace __raw_readl etc with the non-__raw variants > throughout the code. > > The __raw accessors are not endian safe and are not meant > for device drivers. If you are worried about latency from > extra barriers, use readl_relaxed(). Endian safe is good point. I will move to using readl/writel which does both ordering and byteswapping. And use relaxed versions in gt_counter_read to reduce the latency. looks like smp_twd.c too needs this type of change. Thanks, srini > > Arnd > -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html