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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to