• Will Deacon's avatar
    ARM: 7500/1: io: avoid writeback addressing modes for __raw_ accessors · 195bbcac
    Will Deacon authored
    Data aborts taken to hyp mode do not provide a valid instruction
    syndrome field in the HSR if the faulting instruction is a memory
    access using a writeback addressing mode.
    
    For hypervisors emulating MMIO accesses to virtual peripherals, taking
    such an exception requires disassembling the faulting instruction in
    order to determine the behaviour of the access. Since this requires
    manually walking the two stages of translation, the world must be
    stopped to prevent races against page aging in the guest, where the
    first-stage translation is invalidated after the hypervisor has
    translated to an IPA and the physical page is reused for something else.
    
    This patch avoids taking this heavy performance penalty when running
    Linux as a guest by ensuring that our I/O accessors do not make use of
    writeback addressing modes.
    
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Reviewed-by: default avatarArnd Bergmann <arnd@arndb.de>
    Reviewed-by: default avatarNicolas Pitre <nico@linaro.org>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    195bbcac
io.h 12.9 KB