Commit 29a969b7 authored by Michael Neuling's avatar Michael Neuling Committed by Michael Ellerman

powerpc: Revert Load Monitor Register Support

Load monitored is no longer supported on POWER9 so let's remove the
code.

This reverts commit bd3ea317 ("powerpc: Load Monitor Register
Support").
Signed-off-by: default avatarMichael Neuling <mikey@neuling.org>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 7c65856b
...@@ -312,8 +312,6 @@ struct thread_struct { ...@@ -312,8 +312,6 @@ struct thread_struct {
unsigned long mmcr2; unsigned long mmcr2;
unsigned mmcr0; unsigned mmcr0;
unsigned used_ebb; unsigned used_ebb;
unsigned long lmrr;
unsigned long lmser;
#endif #endif
}; };
......
...@@ -292,8 +292,6 @@ ...@@ -292,8 +292,6 @@
#define SPRN_HRMOR 0x139 /* Real mode offset register */ #define SPRN_HRMOR 0x139 /* Real mode offset register */
#define SPRN_HSRR0 0x13A /* Hypervisor Save/Restore 0 */ #define SPRN_HSRR0 0x13A /* Hypervisor Save/Restore 0 */
#define SPRN_HSRR1 0x13B /* Hypervisor Save/Restore 1 */ #define SPRN_HSRR1 0x13B /* Hypervisor Save/Restore 1 */
#define SPRN_LMRR 0x32D /* Load Monitor Region Register */
#define SPRN_LMSER 0x32E /* Load Monitor Section Enable Register */
#define SPRN_IC 0x350 /* Virtual Instruction Count */ #define SPRN_IC 0x350 /* Virtual Instruction Count */
#define SPRN_VTB 0x351 /* Virtual Time Base */ #define SPRN_VTB 0x351 /* Virtual Time Base */
#define SPRN_LDBAR 0x352 /* LD Base Address Register */ #define SPRN_LDBAR 0x352 /* LD Base Address Register */
...@@ -304,7 +302,6 @@ ...@@ -304,7 +302,6 @@
#define SPRN_PMCR 0x374 /* Power Management Control Register */ #define SPRN_PMCR 0x374 /* Power Management Control Register */
/* HFSCR and FSCR bit numbers are the same */ /* HFSCR and FSCR bit numbers are the same */
#define FSCR_LM_LG 11 /* Enable Load Monitor Registers */
#define FSCR_TAR_LG 8 /* Enable Target Address Register */ #define FSCR_TAR_LG 8 /* Enable Target Address Register */
#define FSCR_EBB_LG 7 /* Enable Event Based Branching */ #define FSCR_EBB_LG 7 /* Enable Event Based Branching */
#define FSCR_TM_LG 5 /* Enable Transactional Memory */ #define FSCR_TM_LG 5 /* Enable Transactional Memory */
...@@ -314,12 +311,10 @@ ...@@ -314,12 +311,10 @@
#define FSCR_VECVSX_LG 1 /* Enable VMX/VSX */ #define FSCR_VECVSX_LG 1 /* Enable VMX/VSX */
#define FSCR_FP_LG 0 /* Enable Floating Point */ #define FSCR_FP_LG 0 /* Enable Floating Point */
#define SPRN_FSCR 0x099 /* Facility Status & Control Register */ #define SPRN_FSCR 0x099 /* Facility Status & Control Register */
#define FSCR_LM __MASK(FSCR_LM_LG)
#define FSCR_TAR __MASK(FSCR_TAR_LG) #define FSCR_TAR __MASK(FSCR_TAR_LG)
#define FSCR_EBB __MASK(FSCR_EBB_LG) #define FSCR_EBB __MASK(FSCR_EBB_LG)
#define FSCR_DSCR __MASK(FSCR_DSCR_LG) #define FSCR_DSCR __MASK(FSCR_DSCR_LG)
#define SPRN_HFSCR 0xbe /* HV=1 Facility Status & Control Register */ #define SPRN_HFSCR 0xbe /* HV=1 Facility Status & Control Register */
#define HFSCR_LM __MASK(FSCR_LM_LG)
#define HFSCR_TAR __MASK(FSCR_TAR_LG) #define HFSCR_TAR __MASK(FSCR_TAR_LG)
#define HFSCR_EBB __MASK(FSCR_EBB_LG) #define HFSCR_EBB __MASK(FSCR_EBB_LG)
#define HFSCR_TM __MASK(FSCR_TM_LG) #define HFSCR_TM __MASK(FSCR_TM_LG)
......
...@@ -1051,14 +1051,6 @@ static inline void save_sprs(struct thread_struct *t) ...@@ -1051,14 +1051,6 @@ static inline void save_sprs(struct thread_struct *t)
*/ */
t->tar = mfspr(SPRN_TAR); t->tar = mfspr(SPRN_TAR);
} }
if (cpu_has_feature(CPU_FTR_ARCH_300)) {
/* Conditionally save Load Monitor registers, if enabled */
if (t->fscr & FSCR_LM) {
t->lmrr = mfspr(SPRN_LMRR);
t->lmser = mfspr(SPRN_LMSER);
}
}
#endif #endif
} }
...@@ -1094,16 +1086,6 @@ static inline void restore_sprs(struct thread_struct *old_thread, ...@@ -1094,16 +1086,6 @@ static inline void restore_sprs(struct thread_struct *old_thread,
if (old_thread->tar != new_thread->tar) if (old_thread->tar != new_thread->tar)
mtspr(SPRN_TAR, new_thread->tar); mtspr(SPRN_TAR, new_thread->tar);
} }
if (cpu_has_feature(CPU_FTR_ARCH_300)) {
/* Conditionally restore Load Monitor registers, if enabled */
if (new_thread->fscr & FSCR_LM) {
if (old_thread->lmrr != new_thread->lmrr)
mtspr(SPRN_LMRR, new_thread->lmrr);
if (old_thread->lmser != new_thread->lmser)
mtspr(SPRN_LMSER, new_thread->lmser);
}
}
#endif #endif
} }
......
...@@ -1430,7 +1430,6 @@ void facility_unavailable_exception(struct pt_regs *regs) ...@@ -1430,7 +1430,6 @@ void facility_unavailable_exception(struct pt_regs *regs)
[FSCR_TM_LG] = "TM", [FSCR_TM_LG] = "TM",
[FSCR_EBB_LG] = "EBB", [FSCR_EBB_LG] = "EBB",
[FSCR_TAR_LG] = "TAR", [FSCR_TAR_LG] = "TAR",
[FSCR_LM_LG] = "LM",
}; };
char *facility = "unknown"; char *facility = "unknown";
u64 value; u64 value;
...@@ -1488,14 +1487,6 @@ void facility_unavailable_exception(struct pt_regs *regs) ...@@ -1488,14 +1487,6 @@ void facility_unavailable_exception(struct pt_regs *regs)
emulate_single_step(regs); emulate_single_step(regs);
} }
return; return;
} else if ((status == FSCR_LM_LG) && cpu_has_feature(CPU_FTR_ARCH_300)) {
/*
* This process has touched LM, so turn it on forever
* for this process
*/
current->thread.fscr |= FSCR_LM;
mtspr(SPRN_FSCR, current->thread.fscr);
return;
} }
if (status == FSCR_TM_LG) { if (status == FSCR_TM_LG) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment