linux/arch/mips
Russell King 4b3073e1c5 MM: Pass a PTE pointer to update_mmu_cache() rather than the PTE itself
On VIVT ARM, when we have multiple shared mappings of the same file
in the same MM, we need to ensure that we have coherency across all
copies.  We do this via make_coherent() by making the pages
uncacheable.

This used to work fine, until we allowed highmem with highpte - we
now have a page table which is mapped as required, and is not available
for modification via update_mmu_cache().

Ralf Beache suggested getting rid of the PTE value passed to
update_mmu_cache():

  On MIPS update_mmu_cache() calls __update_tlb() which walks pagetables
  to construct a pointer to the pte again.  Passing a pte_t * is much
  more elegant.  Maybe we might even replace the pte argument with the
  pte_t?

Ben Herrenschmidt would also like the pte pointer for PowerPC:

  Passing the ptep in there is exactly what I want.  I want that
  -instead- of the PTE value, because I have issue on some ppc cases,
  for I$/D$ coherency, where set_pte_at() may decide to mask out the
  _PAGE_EXEC.

So, pass in the mapped page table pointer into update_mmu_cache(), and
remove the PTE value, updating all implementations and call sites to
suit.

Includes a fix from Stephen Rothwell:

  sparc: fix fallout from update_mmu_cache API change

  Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>

Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2010-02-20 16:41:46 +00:00
..
alchemy MIPS: Alchemy: Correct code taking the size of a pointer 2010-01-12 18:19:31 +01:00
ar7 MIPS: AR7: Remove unused prom_getchar() 2010-01-12 18:19:36 +01:00
bcm47xx MIPS: Replace all usages of CL_SIZE by COMMAND_LINE_SIZE 2009-12-17 01:56:56 +00:00
bcm63xx MIPS: BCM63xx: Remove duplicate CONFIG_CMDLINE. 2010-01-12 18:19:36 +01:00
boot MIPS: Ignore vmlinux.* 2010-01-12 18:19:38 +01:00
cavium-octeon MIPS: Octeon: Use non-overflowing arithmetic in sched_clock 2010-01-12 18:19:36 +01:00
cobalt MIPS: Cobalt use strlcat() for the command line arguments 2010-01-12 18:19:34 +01:00
configs MIPS: Fix and enhance built-in kernel command line 2009-12-17 01:57:35 +00:00
dec Merge branch 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-09-18 09:15:24 -07:00
emma MIPS: Remove useless zero initializations. 2009-09-17 20:07:51 +02:00
fw MIPS: IP22: Remove an unused function 2009-12-17 01:56:56 +00:00
gt64120/wrppmc Update Yoichi Yuasa's e-mail address 2009-07-03 15:45:29 +01:00
include/asm MM: Pass a PTE pointer to update_mmu_cache() rather than the PTE itself 2010-02-20 16:41:46 +00:00
jazz MIPS: Add IRQF_TIMER flag for timer interrupts 2009-11-02 12:00:02 +01:00
kernel MIPS: Cleanup random differences beween lmo and Linus' kernel. 2009-12-17 01:57:36 +00:00
lasat MIPS: Lasat: Fix botched changes to sysctl code. 2009-12-17 01:57:37 +00:00
lib MIPS: Fix __ndelay build error and add 'ull' suffix for 32-bit kernel 2009-06-17 11:06:24 +01:00
loongson MIPS: Loongson: Cleanups of serial port support 2009-12-17 01:57:34 +00:00
math-emu MIPS: Collect FPU emulator statistics per-CPU. 2009-12-17 01:57:08 +00:00
mipssim MIPS: Malta, PowerTV: Remove unnecessary "Linux started" 2010-01-12 18:19:36 +01:00
mm MIPS: Cleanup forgotten label_module_alloc in tlbex.c 2010-01-12 18:19:29 +01:00
mti-malta MIPS: Malta, PowerTV: Remove unnecessary "Linux started" 2010-01-12 18:19:36 +01:00
nxp MIPS: Fixup last users of irq_chip->typename 2009-12-17 01:57:21 +00:00
oprofile MIPS: oprofile: Only do performance counter handling for counter interrupts 2009-12-17 01:57:10 +00:00
pci MIPS: eXcite: Remove platform. 2009-12-17 01:57:35 +00:00
pmc-sierra cpumask: arch_send_call_function_ipi_mask: mips 2009-09-24 09:34:45 +09:30
power MIPS: Use PAGE_SIZE in assembly instead of _PAGE_SIZE. 2009-09-17 20:07:48 +02:00
powertv MIPS: Malta, PowerTV: Remove unnecessary "Linux started" 2010-01-12 18:19:36 +01:00
rb532 MIPS: Replace all usages of CL_SIZE by COMMAND_LINE_SIZE 2009-12-17 01:56:56 +00:00
sgi-ip22 MIPS: Move several variables from .bss to .init.data 2009-12-17 01:57:27 +00:00
sgi-ip27 mm: make totalhigh_pages unsigned long 2010-01-11 09:34:03 -08:00
sgi-ip32 MIPS: Move several variables from .bss to .init.data 2009-12-17 01:57:27 +00:00
sibyte MIPS: Replace all usages of CL_SIZE by COMMAND_LINE_SIZE 2009-12-17 01:56:56 +00:00
sni MIPS: Move several variables from .bss to .init.data 2009-12-17 01:57:27 +00:00
txx9 MIPS: TXx9: Cleanup builtin-cmdline processing 2010-01-12 18:19:34 +01:00
vr41xx MIPS: VR41xx: Use strlcat() for the command line arguments 2010-01-12 18:19:30 +01:00
Kconfig MIPS: No longer hardwire CONFIG_EMBEDDED to y 2009-12-17 01:57:36 +00:00
Kconfig.debug MIPS: Fix and enhance built-in kernel command line 2009-12-17 01:57:35 +00:00
Makefile MIPS: eXcite: Remove platform. 2009-12-17 01:57:35 +00:00