• Serge Semin's avatar
    mips: Remove q-accessors from non-64bit platforms · 1e279144
    Serge Semin authored
    There are some generic drivers in the kernel, which make use of the
    q-accessors or their derivatives. While at current asm/io.h the accessors
    are defined, their implementation is only applicable either for 64bit
    systems, or for systems with cpu_has_64bits flag set. Obviously there
    are MIPS systems which are neither of these, but still need to have
    those drivers supported. In this case the solution is to define some
    generic versions of the q-accessors, but with a limitation to be
    non-atomic. Such accessors are defined in the
    io-64-nonatomic-{hi-lo,lo-hi}.h file. The drivers which utilize the
    q-suffixed IO-methods are supposed to include the header file, so
    in case if these accessors aren't defined for the platform, the generic
    non-atomic versions are utilized. Currently the MIPS-specific asm/io.h
    file provides the q-accessors for any MIPS system even for ones, which
    in fact don't support them and raise BUG() in case if any of them is
    called. Due to this the generic versions of the accessors are never
    used while an attempt to call the IO-methods causes the kernel BUG().
    In order to fix this we need to define the q-accessors only for
    the MIPS systems, which actually support them, and don't define them
    otherwise, so to let the corresponding drivers to use the non-atomic
    q-suffixed accessors.
    Signed-off-by: default avatarSerge Semin <fancer.lancer@gmail.com>
    Suggested-by: default avatarArnd Bergmann <arnd@arndb.de>
    Cc: Vadim V. Vlasov <vadim.vlasov@t-platforms.ru>
    Signed-off-by: default avatarPaul Burton <paul.burton@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: Serge Semin <Sergey.Semin@t-platforms.ru>
    Cc: linux-mips@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    1e279144
io.h 20.2 KB