Searched hist:bc2e6c6ac21183a6102a926f83186d9cac6713f8 (Results 1 – 2 of 2) sorted by relevance
/linux/arch/powerpc/include/asm/ |
H A D | exception-64s.h | diff bc2e6c6ac21183a6102a926f83186d9cac6713f8 Tue Aug 13 07:54:52 CEST 2013 Michael Neuling <mikey@neuling.org> powerpc: Avoid link stack corruption for MMU on exceptions
When we have MMU on exceptions (POWER8) and a relocatable kernel, we need to branch from the initial exception vectors at 0x0 to up high where the kernel might be located. Currently we do this using the link register.
Unfortunately this corrupts the link stack and instead we should use the count register. We did this for the syscall entry path in: 6a40480 powerpc: Avoid link stack corruption in MMU on syscall entry path but I stupidly forgot to do the same for other exceptions.
This patch changes the initial exception vectors to use the count register instead of the link register when we need to branch up to the relocated kernel.
I have a dodgy userspace test which loops calling a function that reads the PVR (mfpvr in userspace will be emulated by the kernel via the program check exception). On POWER8 and with CONFIG_RELOCATABLE=y, I get a ~10% performance improvement with my userspace test with this patch.
Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
H A D | paca.h | diff bc2e6c6ac21183a6102a926f83186d9cac6713f8 Tue Aug 13 07:54:52 CEST 2013 Michael Neuling <mikey@neuling.org> powerpc: Avoid link stack corruption for MMU on exceptions
When we have MMU on exceptions (POWER8) and a relocatable kernel, we need to branch from the initial exception vectors at 0x0 to up high where the kernel might be located. Currently we do this using the link register.
Unfortunately this corrupts the link stack and instead we should use the count register. We did this for the syscall entry path in: 6a40480 powerpc: Avoid link stack corruption in MMU on syscall entry path but I stupidly forgot to do the same for other exceptions.
This patch changes the initial exception vectors to use the count register instead of the link register when we need to branch up to the relocated kernel.
I have a dodgy userspace test which loops calling a function that reads the PVR (mfpvr in userspace will be emulated by the kernel via the program check exception). On POWER8 and with CONFIG_RELOCATABLE=y, I get a ~10% performance improvement with my userspace test with this patch.
Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
|