aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/lguest
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2013-04-22 00:40:42 -0400
committerRusty Russell <rusty@rustcorp.com.au>2013-04-22 02:15:03 -0400
commit6b39271746de131366a14bcf04f5740cdc4abdef (patch)
treea2f8875e7186df5a801345a61b01b9b2eab9bbca /drivers/lguest
parent6d0cda93c0d3c8bb0a553047c10f114c88c8af89 (diff)
lguest: map Switcher below fixmap.
Now we've adjusted all the code, we can simply set switcher_addr to wherever it needs to go below the fixmaps, rather than asserting that it should be so. With large NR_CPUS and PAE, people were hitting the "mapping switcher would thwack fixmap" message. Reported-by: Paul Bolle <pebolle@tiscali.nl> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'drivers/lguest')
-rw-r--r--drivers/lguest/core.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/drivers/lguest/core.c b/drivers/lguest/core.c
index 7e1d7ee36478..0bf1e4edf04d 100644
--- a/drivers/lguest/core.c
+++ b/drivers/lguest/core.c
@@ -83,18 +83,13 @@ static __init int map_switcher(void)
83 } 83 }
84 } 84 }
85 85
86 switcher_addr = SWITCHER_ADDR;
87
88 /* 86 /*
89 * First we check that the Switcher won't overlap the fixmap area at 87 * We place the Switcher underneath the fixmap area, which is the
90 * the top of memory. It's currently nowhere near, but it could have 88 * highest virtual address we can get. This is important, since we
91 * very strange effects if it ever happened. 89 * tell the Guest it can't access this memory, so we want its ceiling
90 * as high as possible.
92 */ 91 */
93 if (switcher_addr + (TOTAL_SWITCHER_PAGES+1)*PAGE_SIZE > FIXADDR_START){ 92 switcher_addr = FIXADDR_START - (TOTAL_SWITCHER_PAGES+1)*PAGE_SIZE;
94 err = -ENOMEM;
95 printk("lguest: mapping switcher would thwack fixmap\n");
96 goto free_pages;
97 }
98 93
99 /* 94 /*
100 * Now we reserve the "virtual memory area" we want. We might 95 * Now we reserve the "virtual memory area" we want. We might