/[pkg-src]/trunk/kernel26-xen/patches-2.6.25-r1/1070-2.6.25-xen-Debug-dump-pgtables-on-make_page_readonly.patch |
Annotation of /trunk/kernel26-xen/patches-2.6.25-r1/1070-2.6.25-xen-Debug-dump-pgtables-on-make_page_readonly.patch
Parent Directory
|
Revision Log
Revision 606 -
(hide annotations)
(download)
Thu May 22 23:13:13 2008 UTC (16 years, 1 month ago) by niro
File size: 2482 byte(s)
Thu May 22 23:13:13 2008 UTC (16 years, 1 month ago) by niro
File size: 2482 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 bcd3f4ae6009563081166e6559eb9181d673d370 Mon Sep 17 00:00:00 2001 |
2 | From: Eduardo Habkost <ehabkost@redhat.com> | ||
3 | Date: Tue, 18 Dec 2007 12:34:36 -0200 | ||
4 | Subject: [PATCH] Debug: dump pgtables on make_page_readonly() | ||
5 | |||
6 | Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> | ||
7 | --- | ||
8 | arch/x86/mm/init_64.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++ | ||
9 | 1 files changed, 68 insertions(+), 0 deletions(-) | ||
10 | |||
11 | diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c | ||
12 | index cf1453b..fddf208 100644 | ||
13 | --- a/arch/x86/mm/init_64.c | ||
14 | +++ b/arch/x86/mm/init_64.c | ||
15 | @@ -72,6 +72,71 @@ DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); | ||
16 | |||
17 | #ifdef CONFIG_XEN | ||
18 | |||
19 | +//#define vvva(p) ((void*)((p) + __START_KERNEL_map)) | ||
20 | +#define vvva(p) __va((p)) | ||
21 | + | ||
22 | +void show_pgtable1(pte_t *tbl, unsigned long addr) | ||
23 | +{ | ||
24 | + pte_t *pte = tbl + pte_index(addr); | ||
25 | + pte_val_t pv; | ||
26 | + unsigned long *page; | ||
27 | + | ||
28 | + xprintk("\npte: %p\n", pte); | ||
29 | + xprintk("\npte val: %lx\n", pte->pte); | ||
30 | + | ||
31 | + pv = pte_val(*pte); | ||
32 | + if (!(pv & _PAGE_PRESENT)) | ||
33 | + return; | ||
34 | + | ||
35 | + page = vvva(pv & PHYSICAL_PAGE_MASK); | ||
36 | + | ||
37 | + xprintk("\npage: %p\n", page); | ||
38 | + xprintk("\npage val: %lx\n", *page); | ||
39 | +} | ||
40 | + | ||
41 | +void show_pgtable2(pmd_t *tbl, unsigned long addr) | ||
42 | +{ | ||
43 | + pmd_t *pmd = tbl + pmd_index(addr); | ||
44 | + pmd_val_t pv; | ||
45 | + | ||
46 | + xprintk("\npmd: %p\n", pmd); | ||
47 | + xprintk("\npmd val: %lx\n", pmd->pmd); | ||
48 | + | ||
49 | + pv = pmd_val(*pmd); | ||
50 | + if (!(pv & _PAGE_PRESENT)) | ||
51 | + return; | ||
52 | + | ||
53 | + show_pgtable1((pte_t*)vvva(pv & PHYSICAL_PAGE_MASK), addr); | ||
54 | +} | ||
55 | + | ||
56 | +void show_pgtable3(pud_t *tbl, unsigned long addr) | ||
57 | +{ | ||
58 | + pud_t *pud = tbl + pud_index(addr); | ||
59 | + | ||
60 | + xprintk("\npud: %p\n", pud); | ||
61 | + xprintk("pud value: %lx\n", pud->pud); | ||
62 | + | ||
63 | + show_pgtable2((pmd_t*)vvva(pud_val(*pud) & PHYSICAL_PAGE_MASK), addr); | ||
64 | +} | ||
65 | + | ||
66 | +void show_pgtable4(pgd_t *tbl, unsigned long addr) | ||
67 | +{ | ||
68 | + pgd_t *pgd = tbl + pgd_index(addr); | ||
69 | + | ||
70 | + xprintk("\npgd: %p\n", pgd); | ||
71 | + xprintk("pgd value: %lx\n", pgd->pgd); | ||
72 | + | ||
73 | + show_pgtable3((pud_t*)vvva(pgd_val(*pgd) & PHYSICAL_PAGE_MASK), addr); | ||
74 | +} | ||
75 | + | ||
76 | +void show_pgtable(unsigned long addr) | ||
77 | +{ | ||
78 | + xprintk("\nshowing pgtable for %lx\n", addr); | ||
79 | + | ||
80 | + show_pgtable4(init_level4_pgt, addr); | ||
81 | +} | ||
82 | + | ||
83 | + | ||
84 | static void __make_page_readonly(void *va) | ||
85 | { | ||
86 | pgd_t *pgd; pud_t *pud; pmd_t *pmd; pte_t pte, *ptep; | ||
87 | @@ -92,6 +157,9 @@ static void __make_page_readonly(void *va) | ||
88 | |||
89 | if ((addr >= VMALLOC_START) && (addr < VMALLOC_END)) | ||
90 | __make_page_readonly(__va(pte_pfn(pte) << PAGE_SHIFT)); | ||
91 | + | ||
92 | + //show_pgtable(addr); | ||
93 | + //show_pgtable(__START_KERNEL_map + __pa(va)); | ||
94 | } | ||
95 | |||
96 | static void __make_page_writable(void *va) | ||
97 | -- | ||
98 | 1.5.4.1 | ||
99 |