diff mbox

[v2,5/6] x86/xen, pat: Remove PAT table init code from Xen

Message ID 1458175619-32206-4-git-send-email-toshi.kani@hpe.com (mailing list archive)
State New, archived
Headers show

Commit Message

Kani, Toshi March 17, 2016, 12:46 a.m. UTC
Xen supports PAT without MTRR for its guests.  In order to
enable WC attribute, it was necessary for xen_start_kernel()
to call pat_init_cache_modes() to update PAT table before
starting guest kernel.

Now that the kernel initializes PAT table to the BIOS handoff
state when MTRR is disabled, this Xen-specific PAT init code
is no longer necessary.  Delete it from xen_start_kernel().

Also change pat_init_cache_modes() to a static function since
PAT table should not be tweaked by other modules.

Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: Luis R. Rodriguez <mcgrof@suse.com>
Cc: Juergen Gross <jgross@suse.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
---
 arch/x86/include/asm/pat.h |    1 -
 arch/x86/mm/pat.c          |    2 +-
 arch/x86/xen/enlighten.c   |    9 ---------
 3 files changed, 1 insertion(+), 11 deletions(-)

Comments

Borislav Petkov March 22, 2016, 5:02 p.m. UTC | #1
On Wed, Mar 16, 2016 at 06:46:58PM -0600, Toshi Kani wrote:
> Xen supports PAT without MTRR for its guests.  In order to
> enable WC attribute, it was necessary for xen_start_kernel()
> to call pat_init_cache_modes() to update PAT table before
> starting guest kernel.
> 
> Now that the kernel initializes PAT table to the BIOS handoff
> state when MTRR is disabled, this Xen-specific PAT init code
> is no longer necessary.  Delete it from xen_start_kernel().
> 
> Also change pat_init_cache_modes() to a static function since
> PAT table should not be tweaked by other modules.
> 
> Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> Cc: Borislav Petkov <bp@suse.de>
> Cc: Luis R. Rodriguez <mcgrof@suse.com>
> Cc: Juergen Gross <jgross@suse.com>
> Cc: Ingo Molnar <mingo@kernel.org>
> Cc: H. Peter Anvin <hpa@zytor.com>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> ---
>  arch/x86/include/asm/pat.h |    1 -
>  arch/x86/mm/pat.c          |    2 +-
>  arch/x86/xen/enlighten.c   |    9 ---------
>  3 files changed, 1 insertion(+), 11 deletions(-)

Jürgen, ack?
Jürgen Groß March 23, 2016, 6:08 a.m. UTC | #2
On 22/03/16 18:02, Borislav Petkov wrote:
> On Wed, Mar 16, 2016 at 06:46:58PM -0600, Toshi Kani wrote:
>> Xen supports PAT without MTRR for its guests.  In order to
>> enable WC attribute, it was necessary for xen_start_kernel()
>> to call pat_init_cache_modes() to update PAT table before
>> starting guest kernel.
>>
>> Now that the kernel initializes PAT table to the BIOS handoff
>> state when MTRR is disabled, this Xen-specific PAT init code
>> is no longer necessary.  Delete it from xen_start_kernel().
>>
>> Also change pat_init_cache_modes() to a static function since
>> PAT table should not be tweaked by other modules.
>>
>> Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
>> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
>> Cc: Borislav Petkov <bp@suse.de>
>> Cc: Luis R. Rodriguez <mcgrof@suse.com>
>> Cc: Juergen Gross <jgross@suse.com>
>> Cc: Ingo Molnar <mingo@kernel.org>
>> Cc: H. Peter Anvin <hpa@zytor.com>
>> Cc: Thomas Gleixner <tglx@linutronix.de>
>> ---
>>  arch/x86/include/asm/pat.h |    1 -
>>  arch/x86/mm/pat.c          |    2 +-
>>  arch/x86/xen/enlighten.c   |    9 ---------
>>  3 files changed, 1 insertion(+), 11 deletions(-)
> 
> Jürgen, ack?

Yes, seems to be okay.

Acked-by: Juergen Gross <jgross@suse.com>


Juergen
diff mbox

Patch

diff --git a/arch/x86/include/asm/pat.h b/arch/x86/include/asm/pat.h
index 016142b..0b1ff4c 100644
--- a/arch/x86/include/asm/pat.h
+++ b/arch/x86/include/asm/pat.h
@@ -7,7 +7,6 @@ 
 bool pat_enabled(void);
 void pat_disable(const char *reason);
 extern void pat_init(void);
-void pat_init_cache_modes(u64);
 
 extern int reserve_memtype(u64 start, u64 end,
 		enum page_cache_mode req_pcm, enum page_cache_mode *ret_pcm);
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c
index 48d1619..02bf0e4 100644
--- a/arch/x86/mm/pat.c
+++ b/arch/x86/mm/pat.c
@@ -196,7 +196,7 @@  static enum page_cache_mode pat_get_cache_mode(unsigned pat_val, char *msg)
  * configuration.
  * Using lower indices is preferred, so we start with highest index.
  */
-void pat_init_cache_modes(u64 pat)
+static void pat_init_cache_modes(u64 pat)
 {
 	enum page_cache_mode cache;
 	char pat_msg[33];
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index 2c26108..4d21d69 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -74,7 +74,6 @@ 
 #include <asm/mach_traps.h>
 #include <asm/mwait.h>
 #include <asm/pci_x86.h>
-#include <asm/pat.h>
 #include <asm/cpu.h>
 
 #ifdef CONFIG_ACPI
@@ -1510,7 +1509,6 @@  asmlinkage __visible void __init xen_start_kernel(void)
 {
 	struct physdev_set_iopl set_iopl;
 	unsigned long initrd_start = 0;
-	u64 pat;
 	int rc;
 
 	if (!xen_start_info)
@@ -1617,13 +1615,6 @@  asmlinkage __visible void __init xen_start_kernel(void)
 				   xen_start_info->nr_pages);
 	xen_reserve_special_pages();
 
-	/*
-	 * Modify the cache mode translation tables to match Xen's PAT
-	 * configuration.
-	 */
-	rdmsrl(MSR_IA32_CR_PAT, pat);
-	pat_init_cache_modes(pat);
-
 	/* keep using Xen gdt for now; no urgent need to change it */
 
 #ifdef CONFIG_X86_32