android_kernel_oneplus_msm8998/arch/powerpc
Scott Wood 9d378dfac8 powerpc/booke64: Use SPRG7 for VDSO
Previously SPRG3 was marked for use by both VDSO and critical
interrupts (though critical interrupts were not fully implemented).

In commit 8b64a9dfb0 ("powerpc/booke64:
Use SPRG0/3 scratch for bolted TLB miss & crit int"), Mihai Caraman
made an attempt to resolve this conflict by restoring the VDSO value
early in the critical interrupt, but this has some issues:

 - It's incompatible with EXCEPTION_COMMON which restores r13 from the
   by-then-overwritten scratch (this cost me some debugging time).
 - It forces critical exceptions to be a special case handled
   differently from even machine check and debug level exceptions.
 - It didn't occur to me that it was possible to make this work at all
   (by doing a final "ld r13, PACA_EXCRIT+EX_R13(r13)") until after
   I made (most of) this patch. :-)

It might be worth investigating using a load rather than SPRG on return
from all exceptions (except TLB misses where the scratch never leaves
the SPRG) -- it could save a few cycles.  Until then, let's stick with
SPRG for all exceptions.

Since we cannot use SPRG4-7 for scratch without corrupting the state of
a KVM guest, move VDSO to SPRG7 on book3e.  Since neither SPRG4-7 nor
critical interrupts exist on book3s, SPRG3 is still used for VDSO
there.

Signed-off-by: Scott Wood <scottwood@freescale.com>
Cc: Mihai Caraman <mihai.caraman@freescale.com>
Cc: Anton Blanchard <anton@samba.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: kvm-ppc@vger.kernel.org
2014-03-19 19:57:14 -05:00
..
boot powerpc: T4240: Add ina220 node in dts 2014-03-19 16:57:25 -05:00
configs powerpc/config: Remove unnecssary CONFIG_FSL_IFC 2014-03-19 17:38:13 -05:00
crypto
include powerpc/booke64: Use SPRG7 for VDSO 2014-03-19 19:57:14 -05:00
kernel powerpc/booke64: Use SPRG7 for VDSO 2014-03-19 19:57:14 -05:00
kvm powerpc/booke64: Use SPRG7 for VDSO 2014-03-19 19:57:14 -05:00
lib selftests/powerpc: Import Anton's memcpy / copy_tofrom_user tests 2014-03-07 15:53:12 +11:00
math-emu powerpc: fix e500 SPE float SIGFPE generation 2014-01-07 18:43:42 -06:00
mm powerpc/e6500: Make TLB lock recursive 2014-03-19 19:57:13 -05:00
net bpf: do not use reciprocal divide 2014-01-15 17:02:08 -08:00
oprofile powerpc: Delete non-required instances of include <linux/init.h> 2014-01-15 13:46:44 +11:00
perf powerpc/perf: Configure BHRB filter before enabling PMU interrupts 2014-02-11 11:24:50 +11:00
platforms Corenet: Add QE platform support for Corenet 2014-03-19 19:37:59 -05:00
sysdev powerpc/pci: Fix IMMRBAR address 2014-03-19 16:09:05 -05:00
xmon powerpc: Fix xmon disassembler for little-endian 2014-03-07 15:50:12 +11:00
Kconfig powerpc: Add "force config cmd line" Kconfig option 2014-03-07 15:54:50 +11:00
Kconfig.debug
Makefile powerpc: Fix error when cross building TAGS & cscope 2013-11-25 11:49:11 +11:00
relocs_check.pl