• Luis R. Rodriguez's avatar
    x86/mm/pat: Wrap pat_enabled into a function API · cb32edf6
    Luis R. Rodriguez authored
    We use pat_enabled in x86-specific code to see if PAT is enabled
    or not but we're granting full access to it even though readers
    do not need to set it. If, for instance, we granted access to it
    to modules later they then could override the variable
    setting... no bueno.
    
    This renames pat_enabled to a new static variable __pat_enabled.
    Folks are redirected to use pat_enabled() now.
    
    Code that sets this can only be internal to pat.c. Apart from
    the early kernel parameter "nopat" to disable PAT, we also have
    a few cases that disable it later and make use of a helper
    pat_disable(). It is wrapped under an ifdef but since that code
    cannot run unless PAT was enabled its not required to wrap it
    with ifdefs, unwrap that. Likewise, since "nopat" doesn't really
    change non-PAT systems just remove that ifdef as well.
    
    Although we could add and use an early_param_off(), these
    helpers don't use __read_mostly but we want to keep
    __read_mostly for __pat_enabled as this is a hot path -- upon
    boot, for instance, a simple guest may see ~4k accesses to
    pat_enabled(). Since __read_mostly early boot params are not
    that common we don't add a helper for them just yet.
    Signed-off-by: default avatarLuis R. Rodriguez <mcgrof@suse.com>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Andy Walls <awalls@md.metrocast.net>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Dave Airlie <airlied@redhat.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Doug Ledford <dledford@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Kyle McMartin <kyle@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1430425520-22275-3-git-send-email-mcgrof@do-not-panic.com
    Link: http://lkml.kernel.org/r/1432628901-18044-13-git-send-email-bp@alien8.deSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    cb32edf6
main.c 22.7 KB