diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-12-01 17:28:35 -0500 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-12-01 17:28:35 -0500 |
commit | 5a7b4193e564d1611ecf1cd859aed60d5612d78f (patch) | |
tree | 8831669121df3d50845718b848d7c6e4bc51be26 /arch/powerpc/mm/subpage-prot.c | |
parent | 86f9e097f340fd0fbd37afe92bd5453f5a84cbca (diff) |
Revert "powerpc/mm: Fix bug in pagetable cache cleanup with CONFIG_PPC_SUBPAGE_PROT"
This reverts commit c045256d146800ea1d741a8e9e377dada6b7e195.
It breaks build when CONFIG_PPC_SUBPAGE_PROT is not set. I will
commit a fixed version separately
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/mm/subpage-prot.c')
-rw-r--r-- | arch/powerpc/mm/subpage-prot.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/arch/powerpc/mm/subpage-prot.c b/arch/powerpc/mm/subpage-prot.c index a040b81e93bd..4cafc0c33d0a 100644 --- a/arch/powerpc/mm/subpage-prot.c +++ b/arch/powerpc/mm/subpage-prot.c | |||
@@ -24,9 +24,9 @@ | |||
24 | * Also makes sure that the subpage_prot_table structure is | 24 | * Also makes sure that the subpage_prot_table structure is |
25 | * reinitialized for the next user. | 25 | * reinitialized for the next user. |
26 | */ | 26 | */ |
27 | void subpage_prot_free(struct mm_struct *mm) | 27 | void subpage_prot_free(pgd_t *pgd) |
28 | { | 28 | { |
29 | struct subpage_prot_table *spt = &mm->context.spt; | 29 | struct subpage_prot_table *spt = pgd_subpage_prot(pgd); |
30 | unsigned long i, j, addr; | 30 | unsigned long i, j, addr; |
31 | u32 **p; | 31 | u32 **p; |
32 | 32 | ||
@@ -51,13 +51,6 @@ void subpage_prot_free(struct mm_struct *mm) | |||
51 | spt->maxaddr = 0; | 51 | spt->maxaddr = 0; |
52 | } | 52 | } |
53 | 53 | ||
54 | void subpage_prot_init_new_context(struct mm_struct *mm) | ||
55 | { | ||
56 | struct subpage_prot_table *spt = &mm->context.spt; | ||
57 | |||
58 | memset(spt, 0, sizeof(*spt)); | ||
59 | } | ||
60 | |||
61 | static void hpte_flush_range(struct mm_struct *mm, unsigned long addr, | 54 | static void hpte_flush_range(struct mm_struct *mm, unsigned long addr, |
62 | int npages) | 55 | int npages) |
63 | { | 56 | { |
@@ -94,7 +87,7 @@ static void hpte_flush_range(struct mm_struct *mm, unsigned long addr, | |||
94 | static void subpage_prot_clear(unsigned long addr, unsigned long len) | 87 | static void subpage_prot_clear(unsigned long addr, unsigned long len) |
95 | { | 88 | { |
96 | struct mm_struct *mm = current->mm; | 89 | struct mm_struct *mm = current->mm; |
97 | struct subpage_prot_table *spt = &mm->context.spt; | 90 | struct subpage_prot_table *spt = pgd_subpage_prot(mm->pgd); |
98 | u32 **spm, *spp; | 91 | u32 **spm, *spp; |
99 | int i, nw; | 92 | int i, nw; |
100 | unsigned long next, limit; | 93 | unsigned long next, limit; |
@@ -143,7 +136,7 @@ static void subpage_prot_clear(unsigned long addr, unsigned long len) | |||
143 | long sys_subpage_prot(unsigned long addr, unsigned long len, u32 __user *map) | 136 | long sys_subpage_prot(unsigned long addr, unsigned long len, u32 __user *map) |
144 | { | 137 | { |
145 | struct mm_struct *mm = current->mm; | 138 | struct mm_struct *mm = current->mm; |
146 | struct subpage_prot_table *spt = &mm->context.spt; | 139 | struct subpage_prot_table *spt = pgd_subpage_prot(mm->pgd); |
147 | u32 **spm, *spp; | 140 | u32 **spm, *spp; |
148 | int i, nw; | 141 | int i, nw; |
149 | unsigned long next, limit; | 142 | unsigned long next, limit; |