• Borislav Petkov's avatar
    x86/mm: Fix INVPCID asm constraint · e2c7698c
    Borislav Petkov authored
    So we want to specify the dependency on both @pcid and @addr so that the
    compiler doesn't reorder accesses to them *before* the TLB flush. But
    for that to work, we need to express this properly in the inline asm and
    deref the whole desc array, not the pointer to it. See clwb() for an
    example.
    
    This fixes the build error on 32-bit:
    
      arch/x86/include/asm/tlbflush.h: In function ‘__invpcid’:
      arch/x86/include/asm/tlbflush.h:26:18: error: memory input 0 is not directly addressable
    
    which gcc4.7 caught but 5.x didn't. Which is strange. :-\
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Luis R. Rodriguez <mcgrof@suse.com>
    Cc: Michael Matz <matz@suse.de>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Toshi Kani <toshi.kani@hp.com>
    Cc: linux-mm@kvack.org
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    e2c7698c
tlbflush.h 7.99 KB