|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [linux-2.6.18-xen] x86/MTRR: misc adjustments
# HG changeset patch
# User Jan Beulich <jbeulich@xxxxxxxx>
# Date 1475834715 -7200
# Fri Oct 07 12:05:15 2016 +0200
# Node ID 896b47a37cf83c7d204ee2196b8135eeee1dff9d
# Parent d8a0a20fdf208e98c3e41464cf8bdd4eee0ac25b
x86/MTRR: misc adjustments
Properly clear mtrr_if when there's no MTRR support, and properly bail
from mtrr_{add,del}_page() when mtrr_if is NULL. Ditch mtrr_init() in
favor of doing the initialization in mtrr_bp_init(), better matching
native initialization flow.
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
---
diff -r d8a0a20fdf20 -r 896b47a37cf8 arch/i386/kernel/cpu/mtrr/main-xen.c
--- a/arch/i386/kernel/cpu/mtrr/main-xen.c Fri Oct 07 12:03:13 2016 +0200
+++ b/arch/i386/kernel/cpu/mtrr/main-xen.c Fri Oct 07 12:05:15 2016 +0200
@@ -67,6 +67,9 @@ int mtrr_add_page(unsigned long base, un
int error;
struct xen_platform_op op;
+ if (!mtrr_if)
+ return -ENXIO;
+
mutex_lock(&mtrr_mutex);
op.cmd = XENPF_add_memtype;
@@ -120,6 +123,9 @@ int mtrr_del_page(int reg, unsigned long
int error = -EINVAL;
struct xen_platform_op op;
+ if (!mtrr_if)
+ return -ENXIO;
+
mutex_lock(&mtrr_mutex);
if (reg < 0) {
@@ -170,29 +176,23 @@ EXPORT_SYMBOL(mtrr_del);
void __init mtrr_bp_init(void)
{
+ struct cpuinfo_x86 *c = &boot_cpu_data;
+
+ if (!is_initial_xendomain())
+ mtrr_if = NULL;
+
+ if (!cpu_has(c, X86_FEATURE_MTRR) &&
+ !cpu_has(c, X86_FEATURE_K6_MTRR) &&
+ !cpu_has(c, X86_FEATURE_CYRIX_ARR) &&
+ !cpu_has(c, X86_FEATURE_CENTAUR_MCR))
+ mtrr_if = NULL;
+
+ if (mtrr_if) {
+ set_num_var_ranges();
+ init_table();
+ }
}
void mtrr_ap_init(void)
{
}
-
-static int __init mtrr_init(void)
-{
- struct cpuinfo_x86 *c = &boot_cpu_data;
-
- if (!is_initial_xendomain())
- return -ENODEV;
-
- if ((!cpu_has(c, X86_FEATURE_MTRR)) &&
- (!cpu_has(c, X86_FEATURE_K6_MTRR)) &&
- (!cpu_has(c, X86_FEATURE_CYRIX_ARR)) &&
- (!cpu_has(c, X86_FEATURE_CENTAUR_MCR)))
- return -ENODEV;
-
- set_num_var_ranges();
- init_table();
-
- return 0;
-}
-
-subsys_initcall(mtrr_init);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |