Magellan Linux

Annotation of /trunk/kernel26-xen/patches-2.6.25-r1/1021-2.6.25-xen-x86_64-Split-set_pte_vaddr.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 606 - (hide annotations) (download)
Thu May 22 23:13:13 2008 UTC (16 years ago) by niro
File size: 2039 byte(s)
-ver bump to 2.6.25-magellan-r1:
- linux-2.6.25.4
- fbcondecor-0.9.4
- squashfs-3.3
- unionfs-2.3.3
- tuxonice-3.0-rc7
- linux-phc-0.3.0
- acpi-dstd-0.9a
- reiser4
- xen-3.2.0
. ipw3945-1.2.2

1 niro 606 From 94105deeacbfac6e4baceb55e79b60c7301c03f6 Mon Sep 17 00:00:00 2001
2     From: Eduardo Habkost <ehabkost@redhat.com>
3     Date: Fri, 8 Feb 2008 12:41:04 -0200
4     Subject: [PATCH] x86_64: Split set_pte_vaddr()
5    
6     We will need to set a pte on l3_user_pgt. Extract set_pte_vaddr_pud()
7     from set_pte_vaddr(), that will accept the l3 page table as
8     parameter.
9    
10     This change should be a no-op for existing code.
11    
12     Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
13     Signed-off-by: Mark McLoughlin <markmc@redhat.com>
14     ---
15     arch/x86/mm/init_64.c | 33 +++++++++++++++++++++------------
16     1 files changed, 21 insertions(+), 12 deletions(-)
17    
18     diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
19     index 00628b5..65d2a75 100644
20     --- a/arch/x86/mm/init_64.c
21     +++ b/arch/x86/mm/init_64.c
22     @@ -121,23 +121,14 @@ static __init void *spp_getpage(void)
23     return ptr;
24     }
25    
26     -void
27     -set_pte_vaddr(unsigned long vaddr, pte_t pteval)
28     +static void
29     +set_pte_vaddr_pud(pud_t *pud_page, unsigned long vaddr, pte_t pteval)
30     {
31     - pgd_t *pgd;
32     pud_t *pud;
33     pmd_t *pmd;
34     pte_t *pte;
35    
36     - pr_debug("set_pte_phys %lx to %lx\n", vaddr, native_pte_val(pteval));
37     -
38     - pgd = pgd_offset_k(vaddr);
39     - if (pgd_none(*pgd)) {
40     - printk(KERN_ERR
41     - "PGD FIXMAP MISSING, it should be setup in head.S!\n");
42     - return;
43     - }
44     - pud = pud_offset(pgd, vaddr);
45     + pud = pud_page + pud_index(vaddr);
46     if (pud_none(*pud)) {
47     pmd = (pmd_t *) spp_getpage();
48     set_pud(pud, __pud(__pa(pmd) | _KERNPG_TABLE | _PAGE_USER));
49     @@ -170,6 +161,24 @@ set_pte_vaddr(unsigned long vaddr, pte_t pteval)
50     __flush_tlb_one(vaddr);
51     }
52    
53     +void
54     +set_pte_vaddr(unsigned long vaddr, pte_t pteval)
55     +{
56     + pgd_t *pgd;
57     + pud_t *pud_page;
58     +
59     + pr_debug("set_pte_vaddr %lx to %lx\n", vaddr, native_pte_val(pteval));
60     +
61     + pgd = pgd_offset_k(vaddr);
62     + if (pgd_none(*pgd)) {
63     + printk(KERN_ERR
64     + "PGD FIXMAP MISSING, it should be setup in head.S!\n");
65     + return;
66     + }
67     + pud_page = (pud_t*)pgd_page_vaddr(*pgd);
68     + set_pte_vaddr_pud(pud_page, vaddr, pteval);
69     +}
70     +
71     /*
72     * The head.S code sets up the kernel high mapping:
73     *
74     --
75     1.5.4.1
76