• Logan Gunthorpe's avatar
    iomap: Use non-raw io functions for io{read|write}XXbe · aecc787c
    Logan Gunthorpe authored
    Fix an asymmetry in the io{read|write}XXbe functions in that the
    big-endian variants make use of the raw io accessors while the
    little-endian variants use the regular accessors. Some architectures
    implement barriers to order against both spinlocks and DMA accesses
    and for these case, the big-endian variant of the API would not be
    protected.
    
    Thus, change the mmio_XXXXbe macros to use the appropriate swab() function
    wrapping the regular accessor. This is similar to what was done for PIO.
    
    When this code was originally written, barriers in the IO accessors were
    not common and the accessors simply wrapped the raw functions in a
    conversion to CPU endianness. Since then, barriers have been added in
    some architectures and are now missing in the big endian variant of the
    API.
    
    This also manages to silence a few sparse warnings that check
    for using the correct endian types which the original code did
    not annotate correctly.
    Signed-off-by: default avatarLogan Gunthorpe <logang@deltatee.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Kate Stewart <kstewart@linuxfoundation.org>
    Cc: Philippe Ombredanne <pombredanne@nexb.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Link: http://lkml.kernel.org/r/CAK8P3a25zQDxyaY3iVv+JmSSzs7F6ssGc+HdBkGs54ZfViX+Fg@mail.gmail.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    aecc787c
iomap.c 6.45 KB