Message ID | 20210210161615.21228-1-tsbogend@alpha.franken.de (mailing list archive) |
---|---|
State | Accepted |
Commit | b1468f3071f7312bdc78c380dd01273b5e4459c1 |
Headers | show |
Series | [1/2] Revert "MIPS: kernel: {ftrace,kgdb}: Set correct address limit for cache flushes" | expand |
On Wed, Feb 10, 2021 at 05:16:13PM +0100, Thomas Bogendoerfer wrote: > This reverts commit 6ebda44f366478d1eea180d93154e7d97b591f50. > > All icache flushes in this code paths are done via flush_icache_range(), > which only uses normal cache instruction. And this is the correct thing > for EVA mode, too. So no need to do set_fs(KERNEL_DS) here. > > Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Looks good, Reviewed-by: Christoph Hellwig <hch@lst.de> ... it might be time to kill off the remaining set_fs() users in mips code as well ...
On Wed, Feb 10, 2021 at 07:11:00PM +0000, Christoph Hellwig wrote: > On Wed, Feb 10, 2021 at 05:16:13PM +0100, Thomas Bogendoerfer wrote: > > This reverts commit 6ebda44f366478d1eea180d93154e7d97b591f50. > > > > All icache flushes in this code paths are done via flush_icache_range(), > > which only uses normal cache instruction. And this is the correct thing > > for EVA mode, too. So no need to do set_fs(KERNEL_DS) here. > > > > Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de> > > Looks good, > > Reviewed-by: Christoph Hellwig <hch@lst.de> > > ... it might be time to kill off the remaining set_fs() users in mips > code as well ... I already have patches for that. Still needs some cleaning and testing before sending/applying it. Thomas.
On Wed, Feb 10, 2021 at 05:16:13PM +0100, Thomas Bogendoerfer wrote: > This reverts commit 6ebda44f366478d1eea180d93154e7d97b591f50. > > All icache flushes in this code paths are done via flush_icache_range(), > which only uses normal cache instruction. And this is the correct thing > for EVA mode, too. So no need to do set_fs(KERNEL_DS) here. > > Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de> > --- > arch/mips/kernel/ftrace.c | 4 ---- > arch/mips/kernel/kgdb.c | 18 +----------------- > 2 files changed, 1 insertion(+), 21 deletions(-) applied to mips-next. Thomas.
diff --git a/arch/mips/kernel/ftrace.c b/arch/mips/kernel/ftrace.c index f57e68f40a34..666b9969c1bd 100644 --- a/arch/mips/kernel/ftrace.c +++ b/arch/mips/kernel/ftrace.c @@ -73,7 +73,6 @@ static inline void ftrace_dyn_arch_init_insns(void) static int ftrace_modify_code(unsigned long ip, unsigned int new_code) { int faulted; - mm_segment_t old_fs; /* *(unsigned int *)ip = new_code; */ safe_store_code(new_code, ip, faulted); @@ -81,10 +80,7 @@ static int ftrace_modify_code(unsigned long ip, unsigned int new_code) if (unlikely(faulted)) return -EFAULT; - old_fs = get_fs(); - set_fs(KERNEL_DS); flush_icache_range(ip, ip + 8); - set_fs(old_fs); return 0; } diff --git a/arch/mips/kernel/kgdb.c b/arch/mips/kernel/kgdb.c index ea781b29f7f1..de779e23faf2 100644 --- a/arch/mips/kernel/kgdb.c +++ b/arch/mips/kernel/kgdb.c @@ -32,7 +32,6 @@ #include <asm/cacheflush.h> #include <asm/processor.h> #include <asm/sigcontext.h> -#include <linux/uaccess.h> #include <asm/irq_regs.h> static struct hard_trap_info { @@ -210,14 +209,7 @@ void arch_kgdb_breakpoint(void) void kgdb_call_nmi_hook(void *ignored) { - mm_segment_t old_fs; - - old_fs = get_fs(); - set_fs(KERNEL_DS); - kgdb_nmicallback(raw_smp_processor_id(), get_irq_regs()); - - set_fs(old_fs); } static int compute_signal(int tt) @@ -302,7 +294,6 @@ static int kgdb_mips_notify(struct notifier_block *self, unsigned long cmd, struct die_args *args = (struct die_args *)ptr; struct pt_regs *regs = args->regs; int trap = (regs->cp0_cause & 0x7c) >> 2; - mm_segment_t old_fs; #ifdef CONFIG_KPROBES /* @@ -317,17 +308,11 @@ static int kgdb_mips_notify(struct notifier_block *self, unsigned long cmd, if (user_mode(regs)) return NOTIFY_DONE; - /* Kernel mode. Set correct address limit */ - old_fs = get_fs(); - set_fs(KERNEL_DS); - if (atomic_read(&kgdb_active) != -1) kgdb_nmicallback(smp_processor_id(), regs); - if (kgdb_handle_exception(trap, compute_signal(trap), cmd, regs)) { - set_fs(old_fs); + if (kgdb_handle_exception(trap, compute_signal(trap), cmd, regs)) return NOTIFY_DONE; - } if (atomic_read(&kgdb_setting_breakpoint)) if ((trap == 9) && (regs->cp0_epc == (unsigned long)breakinst)) @@ -337,7 +322,6 @@ static int kgdb_mips_notify(struct notifier_block *self, unsigned long cmd, local_irq_enable(); __flush_cache_all(); - set_fs(old_fs); return NOTIFY_STOP; }
This reverts commit 6ebda44f366478d1eea180d93154e7d97b591f50. All icache flushes in this code paths are done via flush_icache_range(), which only uses normal cache instruction. And this is the correct thing for EVA mode, too. So no need to do set_fs(KERNEL_DS) here. Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de> --- arch/mips/kernel/ftrace.c | 4 ---- arch/mips/kernel/kgdb.c | 18 +----------------- 2 files changed, 1 insertion(+), 21 deletions(-)