diff options
author | Isaku Yamahata <yamahata@valinux.co.jp> | 2009-03-04 07:05:42 -0500 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2009-03-26 13:51:02 -0400 |
commit | e4ff5b8f545811008123dd9556a51d814f562fcf (patch) | |
tree | 2c308a3b1cc002f0d345ed64dd94a395678543bb /arch/ia64/mm | |
parent | 1aec1c558a797512e922581b21a178a05438bfc9 (diff) |
ia64/pv_ops: gate page paravirtualization.
paravirtualize gate page by allowing each pv_ops instances
to define its own gate page.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64/mm')
-rw-r--r-- | arch/ia64/mm/init.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c index c9bc5b305ffa..8503d534794f 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c | |||
@@ -260,6 +260,7 @@ put_kernel_page (struct page *page, unsigned long address, pgprot_t pgprot) | |||
260 | static void __init | 260 | static void __init |
261 | setup_gate (void) | 261 | setup_gate (void) |
262 | { | 262 | { |
263 | void *gate_section; | ||
263 | struct page *page; | 264 | struct page *page; |
264 | 265 | ||
265 | /* | 266 | /* |
@@ -267,10 +268,11 @@ setup_gate (void) | |||
267 | * headers etc. and once execute-only page to enable | 268 | * headers etc. and once execute-only page to enable |
268 | * privilege-promotion via "epc": | 269 | * privilege-promotion via "epc": |
269 | */ | 270 | */ |
270 | page = virt_to_page(ia64_imva(__start_gate_section)); | 271 | gate_section = paravirt_get_gate_section(); |
272 | page = virt_to_page(ia64_imva(gate_section)); | ||
271 | put_kernel_page(page, GATE_ADDR, PAGE_READONLY); | 273 | put_kernel_page(page, GATE_ADDR, PAGE_READONLY); |
272 | #ifdef HAVE_BUGGY_SEGREL | 274 | #ifdef HAVE_BUGGY_SEGREL |
273 | page = virt_to_page(ia64_imva(__start_gate_section + PAGE_SIZE)); | 275 | page = virt_to_page(ia64_imva(gate_section + PAGE_SIZE)); |
274 | put_kernel_page(page, GATE_ADDR + PAGE_SIZE, PAGE_GATE); | 276 | put_kernel_page(page, GATE_ADDR + PAGE_SIZE, PAGE_GATE); |
275 | #else | 277 | #else |
276 | put_kernel_page(page, GATE_ADDR + PERCPU_PAGE_SIZE, PAGE_GATE); | 278 | put_kernel_page(page, GATE_ADDR + PERCPU_PAGE_SIZE, PAGE_GATE); |