On 11/3/2015 5:43 AM, Arnd Bergmann wrote:
Ok, got it.
Best add an explanation like the above in the interrupt handler,
to prevent this from accidentally getting 'cleaned up' to use
readl(), or copied into a driver that uses PCI ordering rules
where it is actually wrong.
I'm adding this disclaimer into the ISR routine.
/*
* Fine tuned for this HW...
*
* This ISR has been designed for this particular hardware. Relaxed read
* and write accessors are used for performance reasons due to interrupt
* delivery guarantees. Do not copy this code blindly and expect
* that to work.
*/
I think it should be done like this:
- anything that is not performance critical, use normal readl/writel
- in the fast path, add a comment to each readl_relaxed()/writel_relaxed()
that is safe in this driver but that would not be safe in a PCI
device
- For the ones that would be safe on PCI as weel, use
readl_relaxed()/writel_relaxed() without a comment on each one,
but clarify somewhere that these are all intentional.
Makes sense.
--
Sinan Kaya
Qualcomm Technologies, Inc. on behalf of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a
Linux Foundation Collaborative Project
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html