diff options
author | Paul Mackerras <paulus@samba.org> | 2013-08-12 16:12:06 +1000 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2013-08-14 15:00:09 +1000 |
commit | 630573c1da54925290cf7a4f45752f3e9876d7e0 (patch) | |
tree | bd571325f769cc30f1a4e111e837ddf934bfadcf /arch/powerpc/kernel/smp.c | |
parent | d82fbf305c63d309d122d86a0714d1e8c572ec1b (diff) | |
download | blackbird-op-linux-630573c1da54925290cf7a4f45752f3e9876d7e0.tar.gz blackbird-op-linux-630573c1da54925290cf7a4f45752f3e9876d7e0.zip |
powerpc: Fix denormalized exception handler
The denormalized exception handler (denorm_exception_hv) has a couple
of bugs. If the CONFIG_PPC_DENORMALISATION option is not selected,
or the HSRR1_DENORM bit is not set in HSRR1, we don't test whether the
interrupt occurred within a KVM guest. On the other hand, if the
HSRR1_DENORM bit is set and CONFIG_PPC_DENORMALISATION is enabled,
we corrupt the CFAR and PPR.
To correct these problems, this replaces the open-coded version of
EXCEPTION_PROLOG_1 that is there currently, and that is missing the
saving of PPR and CFAR values to the PACA, with an instance of
EXCEPTION_PROLOG_1. This adds an explicit KVMTEST after testing
whether the exception is one we can handle, and adds code to restore
the CFAR on exit.
Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/kernel/smp.c')
0 files changed, 0 insertions, 0 deletions