[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xen-cvs
Subject:    [Xen-changelog] [xen-unstable] [LINUX] Replace pagetable walks by
From:       Xen patchbot-unstable <patchbot-unstable () lists ! xensource ! com>
Date:       2006-06-30 15:40:51
Message-ID: E1FwL6z-0007Ol-3W () xenbits ! xensource ! com
[Download RAW message or body]

# HG changeset patch
# User kfraser@dhcp93.uk.xensource.com
# Node ID 129ce4f59b6dc8e2406a13a058ef393894ff355f
# Parent  a75c1bdfe76146ad591574d805be5be0a3098d2a
[LINUX] Replace pagetable walks by simple address calculation.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
---
 linux-2.6-xen-sparse/arch/i386/mm/hypervisor.c |   20 ++------------------
 1 files changed, 2 insertions(+), 18 deletions(-)

diff -r a75c1bdfe761 -r 129ce4f59b6d linux-2.6-xen-sparse/arch/i386/mm/hypervisor.c
--- a/linux-2.6-xen-sparse/arch/i386/mm/hypervisor.c	Fri Jun 30 10:24:14 2006 +0100
+++ b/linux-2.6-xen-sparse/arch/i386/mm/hypervisor.c	Fri Jun 30 10:35:54 2006 +0100
@@ -271,10 +271,6 @@ int xen_create_contiguous_region(
 int xen_create_contiguous_region(
 	unsigned long vstart, unsigned int order, unsigned int address_bits)
 {
-	pgd_t         *pgd; 
-	pud_t         *pud; 
-	pmd_t         *pmd;
-	pte_t         *pte;
 	unsigned long *in_frames = discontig_frames, out_frame;
 	unsigned long  frame, i, flags;
 	long           rc;
@@ -313,11 +309,7 @@ int xen_create_contiguous_region(
 
 	/* 1. Zap current PTEs, remembering MFNs. */
 	for (i = 0; i < (1UL<<order); i++) {
-		pgd = pgd_offset_k(vstart + (i*PAGE_SIZE));
-		pud = pud_offset(pgd, (vstart + (i*PAGE_SIZE)));
-		pmd = pmd_offset(pud, (vstart + (i*PAGE_SIZE)));
-		pte = pte_offset_kernel(pmd, (vstart + (i*PAGE_SIZE)));
-		in_frames[i] = pte_mfn(*pte);
+		in_frames[i] = pfn_to_mfn((__pa(vstart) >> PAGE_SHIFT) + i);
 		if (HYPERVISOR_update_va_mapping(vstart + (i*PAGE_SIZE),
 						 __pte_ma(0), 0))
 			BUG();
@@ -372,10 +364,6 @@ int xen_create_contiguous_region(
 
 void xen_destroy_contiguous_region(unsigned long vstart, unsigned int order)
 {
-	pgd_t         *pgd; 
-	pud_t         *pud; 
-	pmd_t         *pmd;
-	pte_t         *pte;
 	unsigned long *out_frames = discontig_frames, in_frame;
 	unsigned long  frame, i, flags;
 	long           rc;
@@ -410,11 +398,7 @@ void xen_destroy_contiguous_region(unsig
 	contiguous_bitmap_clear(__pa(vstart) >> PAGE_SHIFT, 1UL << order);
 
 	/* 1. Find start MFN of contiguous extent. */
-	pgd = pgd_offset_k(vstart);
-	pud = pud_offset(pgd, vstart);
-	pmd = pmd_offset(pud, vstart);
-	pte = pte_offset_kernel(pmd, vstart);
-	in_frame = pte_mfn(*pte);
+	in_frame = pfn_to_mfn(__pa(vstart) >> PAGE_SHIFT);
 
 	/* 2. Zap current PTEs. */
 	for (i = 0; i < (1UL<<order); i++) {

_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xensource.com
http://lists.xensource.com/xen-changelog
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic