diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2007-04-23 23:09:12 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-04-24 08:08:56 -0400 |
commit | 621023072524fc0155ed16490255e1ea3aa11585 (patch) | |
tree | 77fec16321fe72ef75532c4f07ffee004b57bbfe /include/asm-powerpc/pgtable.h | |
parent | 687304014f7ca8e2fbb3feaefef356b4a0da65ad (diff) |
[POWERPC] Cleanup and fix breakage in tlbflush.h
BenH's commit a741e67969577163a4cfc78d7fd2753219087ef1 in powerpc.git,
although (AFAICT) only intended to affect ppc64, also has side-effects
which break 44x. I think 40x, 8xx and Freescale Book E are also
affected, though I haven't tested them.
The problem lies in unconditionally removing flush_tlb_pending() from
the versions of flush_tlb_mm(), flush_tlb_range() and
flush_tlb_kernel_range() used on ppc64 - which are also used the
embedded platforms mentioned above.
The patch below cleans up the convoluted #ifdef logic in tlbflush.h,
in the process restoring the necessary flushes for the software TLB
platforms. There are three sets of definitions for the flushing
hooks: the software TLB versions (revised to avoid using names which
appear to related to TLB batching), the 32-bit hash based versions
(external functions) amd the 64-bit hash based versions (which
implement batching).
It also moves the declaration of update_mmu_cache() to always be in
tlbflush.h (previously it was in tlbflush.h except for PPC64, where it
was in pgtable.h).
Booted on Ebony (440GP) and compiled for 64-bit and 32-bit
multiplatform.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'include/asm-powerpc/pgtable.h')
-rw-r--r-- | include/asm-powerpc/pgtable.h | 10 |
1 files changed, 0 insertions, 10 deletions
diff --git a/include/asm-powerpc/pgtable.h b/include/asm-powerpc/pgtable.h index c7142c7e0e05..19edb6982b81 100644 --- a/include/asm-powerpc/pgtable.h +++ b/include/asm-powerpc/pgtable.h | |||
@@ -448,16 +448,6 @@ extern pgd_t swapper_pg_dir[]; | |||
448 | 448 | ||
449 | extern void paging_init(void); | 449 | extern void paging_init(void); |
450 | 450 | ||
451 | /* | ||
452 | * This gets called at the end of handling a page fault, when | ||
453 | * the kernel has put a new PTE into the page table for the process. | ||
454 | * We use it to put a corresponding HPTE into the hash table | ||
455 | * ahead of time, instead of waiting for the inevitable extra | ||
456 | * hash-table miss exception. | ||
457 | */ | ||
458 | struct vm_area_struct; | ||
459 | extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t); | ||
460 | |||
461 | /* Encode and de-code a swap entry */ | 451 | /* Encode and de-code a swap entry */ |
462 | #define __swp_type(entry) (((entry).val >> 1) & 0x3f) | 452 | #define __swp_type(entry) (((entry).val >> 1) & 0x3f) |
463 | #define __swp_offset(entry) ((entry).val >> 8) | 453 | #define __swp_offset(entry) ((entry).val >> 8) |