[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <tip-2baa891e42d84159b693eadd44f6fe1486285bdc@git.kernel.org>
Date: Fri, 28 Aug 2015 01:12:39 -0700
From: "tip-bot for Luis R. Rodriguez" <tipbot@...or.com>
To: linux-tip-commits@...r.kernel.org
Cc: awalls@...metrocast.net, vbabka@...e.cz, jgross@...e.com,
torvalds@...ux-foundation.org, mingo@...nel.org, bp@...e.de,
mgorman@...e.de, peterz@...radead.org, adaplas@...il.com,
hpa@...or.com, mcgrof@...e.com, tglx@...utronix.de,
daniel.vetter@...ll.ch, sbsiddha@...il.com, dbueso@...e.de,
dledford@...hat.com, airlied@...hat.com, toshi.kani@...com,
tomi.valkeinen@...com, linux-kernel@...r.kernel.org,
syrjala@....fi, dave.hansen@...ux.intel.com, plagnioj@...osoft.com,
luto@...capital.net
Subject: [tip:x86/mm] x86/mm/mtrr: Remove kernel internal MTRR interfaces:
unexport mtrr_add() and mtrr_del()
Commit-ID: 2baa891e42d84159b693eadd44f6fe1486285bdc
Gitweb: http://git.kernel.org/tip/2baa891e42d84159b693eadd44f6fe1486285bdc
Author: Luis R. Rodriguez <mcgrof@...e.com>
AuthorDate: Mon, 24 Aug 2015 12:13:33 -0700
Committer: Ingo Molnar <mingo@...nel.org>
CommitDate: Fri, 28 Aug 2015 10:09:28 +0200
x86/mm/mtrr: Remove kernel internal MTRR interfaces: unexport mtrr_add() and mtrr_del()
The effort to replace mtrr_add() with architecture agnostic
arch_phys_wc_add() is complete, this will ensure write-combining
implementations (PAT on x86) is taken advantage instead of using
MTRR. With the effort done now, hide direct MTRR access for
drivers.
The legacy user-space /proc/mtrr ABI is not affected.
Update x86 documentation on MTRR to reflect the completion of
the phasing out of direct access to MTRR, also add a note on
platform firmware code use of MTRRs based on the obituary
discussion of MTRRs on Linux [0].
[0] http://lkml.kernel.org/r/1438991330.3109.196.camel@hp.com
Signed-off-by: Luis R. Rodriguez <mcgrof@...e.com>
Cc: <syrjala@....fi>
Cc: Andy Lutomirski <luto@...capital.net>
Cc: Andy Walls <awalls@...metrocast.net>
Cc: Antonino Daplas <adaplas@...il.com>
Cc: Borislav Petkov <bp@...e.de>
Cc: Daniel Vetter <daniel.vetter@...ll.ch>
Cc: Dave Airlie <airlied@...hat.com>
Cc: Dave Hansen <dave.hansen@...ux.intel.com>
Cc: Davidlohr Bueso <dbueso@...e.de>
Cc: Doug Ledford <dledford@...hat.com>
Cc: H. Peter Anvin <hpa@...or.com>
Cc: Jean-Christophe Plagniol-Villard <plagnioj@...osoft.com>
Cc: Juergen Gross <jgross@...e.com>
Cc: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: Mel Gorman <mgorman@...e.de>
Cc: Peter Zijlstra <peterz@...radead.org>
Cc: Suresh Siddha <sbsiddha@...il.com>
Cc: Thomas Gleixner <tglx@...utronix.de>
Cc: Tomi Valkeinen <tomi.valkeinen@...com>
Cc: Toshi Kani <toshi.kani@...com>
Cc: Ville Syrjälä <syrjala@....fi>
Cc: Vlastimil Babka <vbabka@...e.cz>
Cc: airlied@...ux.ie
Cc: benh@...nel.crashing.org
Cc: bhelgaas@...gle.com
Cc: dan.j.williams@...el.com
Cc: konrad.wilk@...cle.com
Cc: linux-fbdev@...r.kernel.org
Cc: linux-kernel@...r.kernel.org
Cc: linux-media@...r.kernel.org
Cc: mst@...hat.com
Cc: netdev@...r.kernel.org
Cc: vinod.koul@...el.com
Cc: xen-devel@...ts.xensource.com
Link: http://lkml.kernel.org/r/1440443613-13696-12-git-send-email-mcgrof@do-not-panic.com
Signed-off-by: Ingo Molnar <mingo@...nel.org>
---
Documentation/x86/mtrr.txt | 20 ++++++++++++++++----
arch/x86/kernel/cpu/mtrr/main.c | 2 --
2 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/Documentation/x86/mtrr.txt b/Documentation/x86/mtrr.txt
index 860bc3a..dc3e703 100644
--- a/Documentation/x86/mtrr.txt
+++ b/Documentation/x86/mtrr.txt
@@ -6,10 +6,22 @@ Luis R. Rodriguez <mcgrof@...not-panic.com> - April 9, 2015
===============================================================================
Phasing out MTRR use
-MTRR use is replaced on modern x86 hardware with PAT. Over time the only type
-of effective MTRR that is expected to be supported will be for write-combining.
-As MTRR use is phased out device drivers should use arch_phys_wc_add() to make
-MTRR effective on non-PAT systems while a no-op on PAT enabled systems.
+MTRR use is replaced on modern x86 hardware with PAT. Direct MTRR use by
+drivers on Linux is now completely phased out, device drivers should use
+arch_phys_wc_add() in combination with ioremap_wc() to make MTRR effective on
+non-PAT systems while a no-op but equally effective on PAT enabled systems.
+
+Even if Linux does not use MTRRs directly, some x86 platform firmware may still
+set up MTRRs early before booting the OS. They do this as some platform
+firmware may still have implemented access to MTRRs which would be controlled
+and handled by the platform firmware directly. An example of platform use of
+MTRRs is through the use of SMI handlers, one case could be for fan control,
+the platform code would need uncachable access to some of its fan control
+registers. Such platform access does not need any Operating System MTRR code in
+place other than mtrr_type_lookup() to ensure any OS specific mapping requests
+are aligned with platform MTRR setup. If MTRRs are only set up by the platform
+firmware code though and the OS does not make any specific MTRR mapping
+requests mtrr_type_lookup() should always return MTRR_TYPE_INVALID.
For details refer to Documentation/x86/pat.txt.
diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c
index e7ed0d8..f891b47 100644
--- a/arch/x86/kernel/cpu/mtrr/main.c
+++ b/arch/x86/kernel/cpu/mtrr/main.c
@@ -448,7 +448,6 @@ int mtrr_add(unsigned long base, unsigned long size, unsigned int type,
return mtrr_add_page(base >> PAGE_SHIFT, size >> PAGE_SHIFT, type,
increment);
}
-EXPORT_SYMBOL(mtrr_add);
/**
* mtrr_del_page - delete a memory type region
@@ -537,7 +536,6 @@ int mtrr_del(int reg, unsigned long base, unsigned long size)
return -EINVAL;
return mtrr_del_page(reg, base >> PAGE_SHIFT, size >> PAGE_SHIFT);
}
-EXPORT_SYMBOL(mtrr_del);
/**
* arch_phys_wc_add - add a WC MTRR and handle errors if PAT is unavailable
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists