@@ -341,17 +341,10 @@ vsx_unavailable_pSeries_1:
341341 EXCEPTION_PROLOG_0(PACA_EXGEN)
342342 b vsx_unavailable_pSeries
343343
344- facility_unavailable_trampoline:
345344 . = 0xf60
346345 SET_SCRATCH0(r13)
347346 EXCEPTION_PROLOG_0(PACA_EXGEN)
348- b facility_unavailable_pSeries
349-
350- hv_facility_unavailable_trampoline:
351- . = 0xf80
352- SET_SCRATCH0(r13)
353- EXCEPTION_PROLOG_0(PACA_EXGEN)
354- b facility_unavailable_hv
347+ b tm_unavailable_pSeries
355348
356349#ifdef CONFIG_CBE_RAS
357350 STD_EXCEPTION_HV(0x1200 , 0x1202 , cbe_system_error)
@@ -529,10 +522,8 @@ denorm_done:
529522 KVM_HANDLER_PR(PACA_EXGEN, EXC_STD, 0xf20 )
530523 STD_EXCEPTION_PSERIES_OOL(0xf40 , vsx_unavailable)
531524 KVM_HANDLER_PR(PACA_EXGEN, EXC_STD, 0xf40 )
532- STD_EXCEPTION_PSERIES_OOL(0xf60 , facility_unavailable )
525+ STD_EXCEPTION_PSERIES_OOL(0xf60 , tm_unavailable )
533526 KVM_HANDLER_PR(PACA_EXGEN, EXC_STD, 0xf60 )
534- STD_EXCEPTION_HV_OOL(0xf82 , facility_unavailable)
535- KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xf82 )
536527
537528/*
538529 * An interrupt came in while soft-disabled. We set paca->irq_happened, then:
@@ -802,18 +793,24 @@ system_call_relon_pSeries:
802793 STD_RELON_EXCEPTION_PSERIES(0x4d00 , 0xd00 , single_step)
803794
804795 . = 0x4e00
805- b . /* Can't happen, see v2.07 Book III-S section 6.5 */
796+ SET_SCRATCH0(r13)
797+ EXCEPTION_PROLOG_0(PACA_EXGEN)
798+ b h_data_storage_relon_hv
806799
807800 . = 0x4e20
808- b . /* Can't happen, see v2.07 Book III-S section 6.5 */
801+ SET_SCRATCH0(r13)
802+ EXCEPTION_PROLOG_0(PACA_EXGEN)
803+ b h_instr_storage_relon_hv
809804
810805 . = 0x4e40
811806 SET_SCRATCH0(r13)
812807 EXCEPTION_PROLOG_0(PACA_EXGEN)
813808 b emulation_assist_relon_hv
814809
815810 . = 0x4e60
816- b . /* Can't happen, see v2.07 Book III-S section 6.5 */
811+ SET_SCRATCH0(r13)
812+ EXCEPTION_PROLOG_0(PACA_EXGEN)
813+ b hmi_exception_relon_hv
817814
818815 . = 0x4e80
819816 SET_SCRATCH0(r13)
@@ -838,17 +835,11 @@ vsx_unavailable_relon_pSeries_1:
838835 EXCEPTION_PROLOG_0(PACA_EXGEN)
839836 b vsx_unavailable_relon_pSeries
840837
841- facility_unavailable_relon_trampoline :
838+ tm_unavailable_relon_pSeries_1 :
842839 . = 0x4f60
843840 SET_SCRATCH0(r13)
844841 EXCEPTION_PROLOG_0(PACA_EXGEN)
845- b facility_unavailable_relon_pSeries
846-
847- hv_facility_unavailable_relon_trampoline:
848- . = 0x4f80
849- SET_SCRATCH0(r13)
850- EXCEPTION_PROLOG_0(PACA_EXGEN)
851- b facility_unavailable_relon_hv
842+ b tm_unavailable_relon_pSeries
852843
853844 STD_RELON_EXCEPTION_PSERIES(0x5300 , 0x1300 , instruction_breakpoint)
854845#ifdef CONFIG_PPC_DENORMALISATION
@@ -1174,21 +1165,36 @@ END_FTR_SECTION_IFSET(CPU_FTR_VSX)
11741165 bl .vsx_unavailable_exception
11751166 b .ret_from_except
11761167
1177- STD_EXCEPTION_COMMON(0xf60 , facility_unavailable, .facility_unavailable_exception)
1168+ .align 7
1169+ .globl tm_unavailable_common
1170+ tm_unavailable_common:
1171+ EXCEPTION_PROLOG_COMMON(0xf60 , PACA_EXGEN)
1172+ bl .save_nvgprs
1173+ DISABLE_INTS
1174+ addi r3,r1,STACK_FRAME_OVERHEAD
1175+ bl .tm_unavailable_exception
1176+ b .ret_from_except
11781177
11791178 .align 7
11801179 .globl __end_handlers
11811180__end_handlers:
11821181
11831182 /* Equivalents to the above handlers for relocation-on interrupt vectors */
1183+ STD_RELON_EXCEPTION_HV_OOL(0xe00 , h_data_storage)
1184+ KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe00 )
1185+ STD_RELON_EXCEPTION_HV_OOL(0xe20 , h_instr_storage)
1186+ KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe20 )
11841187 STD_RELON_EXCEPTION_HV_OOL(0xe40 , emulation_assist)
1188+ KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe40 )
1189+ STD_RELON_EXCEPTION_HV_OOL(0xe60 , hmi_exception)
1190+ KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe60 )
11851191 MASKABLE_RELON_EXCEPTION_HV_OOL(0xe80 , h_doorbell)
1192+ KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe80 )
11861193
11871194 STD_RELON_EXCEPTION_PSERIES_OOL(0xf00 , performance_monitor)
11881195 STD_RELON_EXCEPTION_PSERIES_OOL(0xf20 , altivec_unavailable)
11891196 STD_RELON_EXCEPTION_PSERIES_OOL(0xf40 , vsx_unavailable)
1190- STD_RELON_EXCEPTION_PSERIES_OOL(0xf60 , facility_unavailable)
1191- STD_RELON_EXCEPTION_HV_OOL(0xf80 , facility_unavailable)
1197+ STD_RELON_EXCEPTION_PSERIES_OOL(0xf60 , tm_unavailable)
11921198
11931199#if defined(CONFIG_PPC_PSERIES) || defined(CONFIG_PPC_POWERNV)
11941200/*
0 commit comments