[U-Boot] [RESEND PATCH 2/3] arm: introduce _relaxed MMIO accessors

Alexander Graf agraf at suse.de
Wed Feb 20 12:24:51 UTC 2019


On 02/10/2019 05:17 PM, Andre Przywara wrote:
> The normal MMIO accessor macros (readX/writeX) guarantee a strong ordering,
> even with normal memory accesses: https://lwn.net/Articles/698014/
> For some MMIO operations (framebuffers being a prominent example) this is
> not needed, and the rather costly barrier inserted on weakly ordered
> systems like ARM costs some performance.
> To mitigate this issue, Linux introduced readX_relaxed and
> writeX_relaxed primitives, which only guarantee ordering between each
> other, so are typically faster due to the missing barrier.
>
> We probably do not care so much about performance in U-Boot, but want to
> have those primitives for two other reasons:
> - Being able to use the _relaxed macros simplifies porting drivers from
>    Linux.
> - The missing barrier typically allows to generate smaller code, which can
>    relieve some chronically tight SPL builds.
>
> Add those macros definitions by using the __raw versions of the
> accessors, which matches an earlier (and less complicated) version of
> the Linux implementation.
>
> Signed-off-by: Andre Przywara <andre.przywara at arm.com>
> Reviewed-by: Philipp Tomsich <philipp.tomsich at theobroma-systems.com>
> [On my experimental RK3399 after modifying a few drivers:]
> Tested-by: Philipp Tomsich <philipp.tomsich at theobroma-systems.com>

Reviewed-by: Alexander Graf <agraf at suse.de>


Alex



More information about the U-Boot mailing list