powerpc: Rename and flesh out the facility unavailable exception handler
The exception at 0xf60 is not the TM (Transactional Memory) unavailable exception, it is the "Facility Unavailable Exception", rename it as such. Flesh out the handler to acknowledge the fact that it can be called for many reasons, one of which is TM being unavailable. Use STD_EXCEPTION_COMMON() for the exception body, for some reason we had it open-coded, I've checked the generated code is identical. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> CC: <stable@vger.kernel.org> [v3.10] Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:

committed by
Benjamin Herrenschmidt

parent
c9f69518e5
commit
021424a1fc
@@ -341,10 +341,11 @@ vsx_unavailable_pSeries_1:
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b vsx_unavailable_pSeries
|
||||
|
||||
facility_unavailable_trampoline:
|
||||
. = 0xf60
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b tm_unavailable_pSeries
|
||||
b facility_unavailable_pSeries
|
||||
|
||||
#ifdef CONFIG_CBE_RAS
|
||||
STD_EXCEPTION_HV(0x1200, 0x1202, cbe_system_error)
|
||||
@@ -522,7 +523,7 @@ denorm_done:
|
||||
KVM_HANDLER_PR(PACA_EXGEN, EXC_STD, 0xf20)
|
||||
STD_EXCEPTION_PSERIES_OOL(0xf40, vsx_unavailable)
|
||||
KVM_HANDLER_PR(PACA_EXGEN, EXC_STD, 0xf40)
|
||||
STD_EXCEPTION_PSERIES_OOL(0xf60, tm_unavailable)
|
||||
STD_EXCEPTION_PSERIES_OOL(0xf60, facility_unavailable)
|
||||
KVM_HANDLER_PR(PACA_EXGEN, EXC_STD, 0xf60)
|
||||
|
||||
/*
|
||||
@@ -829,11 +830,11 @@ vsx_unavailable_relon_pSeries_1:
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b vsx_unavailable_relon_pSeries
|
||||
|
||||
tm_unavailable_relon_pSeries_1:
|
||||
facility_unavailable_relon_trampoline:
|
||||
. = 0x4f60
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b tm_unavailable_relon_pSeries
|
||||
b facility_unavailable_relon_pSeries
|
||||
|
||||
STD_RELON_EXCEPTION_PSERIES(0x5300, 0x1300, instruction_breakpoint)
|
||||
#ifdef CONFIG_PPC_DENORMALISATION
|
||||
@@ -1159,15 +1160,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_VSX)
|
||||
bl .vsx_unavailable_exception
|
||||
b .ret_from_except
|
||||
|
||||
.align 7
|
||||
.globl tm_unavailable_common
|
||||
tm_unavailable_common:
|
||||
EXCEPTION_PROLOG_COMMON(0xf60, PACA_EXGEN)
|
||||
bl .save_nvgprs
|
||||
DISABLE_INTS
|
||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||
bl .tm_unavailable_exception
|
||||
b .ret_from_except
|
||||
STD_EXCEPTION_COMMON(0xf60, facility_unavailable, .facility_unavailable_exception)
|
||||
|
||||
.align 7
|
||||
.globl __end_handlers
|
||||
@@ -1180,7 +1173,7 @@ __end_handlers:
|
||||
STD_RELON_EXCEPTION_PSERIES_OOL(0xf00, performance_monitor)
|
||||
STD_RELON_EXCEPTION_PSERIES_OOL(0xf20, altivec_unavailable)
|
||||
STD_RELON_EXCEPTION_PSERIES_OOL(0xf40, vsx_unavailable)
|
||||
STD_RELON_EXCEPTION_PSERIES_OOL(0xf60, tm_unavailable)
|
||||
STD_RELON_EXCEPTION_PSERIES_OOL(0xf60, facility_unavailable)
|
||||
|
||||
#if defined(CONFIG_PPC_PSERIES) || defined(CONFIG_PPC_POWERNV)
|
||||
/*
|
||||
|
Reference in New Issue
Block a user