aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/mm
diff options
context:
space:
mode:
authorIsaku Yamahata <yamahata@valinux.co.jp>2009-03-04 07:05:42 -0500
committerTony Luck <tony.luck@intel.com>2009-03-26 13:51:02 -0400
commite4ff5b8f545811008123dd9556a51d814f562fcf (patch)
tree2c308a3b1cc002f0d345ed64dd94a395678543bb /arch/ia64/mm
parent1aec1c558a797512e922581b21a178a05438bfc9 (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.c6
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)
260static void __init 260static void __init
261setup_gate (void) 261setup_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);