root/arch/mips/kernel/sysrq.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. sysrq_tlbdump_single
  2. sysrq_tlbdump_othercpus
  3. sysrq_handle_tlbdump
  4. mips_sysrq_init

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  * MIPS specific sysrq operations.
   4  *
   5  * Copyright (C) 2015 Imagination Technologies Ltd.
   6  */
   7 #include <linux/init.h>
   8 #include <linux/smp.h>
   9 #include <linux/spinlock.h>
  10 #include <linux/sysrq.h>
  11 #include <linux/workqueue.h>
  12 
  13 #include <asm/cpu-features.h>
  14 #include <asm/mipsregs.h>
  15 #include <asm/tlbdebug.h>
  16 
  17 /*
  18  * Dump TLB entries on all CPUs.
  19  */
  20 
  21 static DEFINE_SPINLOCK(show_lock);
  22 
  23 static void sysrq_tlbdump_single(void *dummy)
  24 {
  25         unsigned long flags;
  26 
  27         spin_lock_irqsave(&show_lock, flags);
  28 
  29         pr_info("CPU%d:\n", smp_processor_id());
  30         dump_tlb_regs();
  31         pr_info("\n");
  32         dump_tlb_all();
  33         pr_info("\n");
  34 
  35         spin_unlock_irqrestore(&show_lock, flags);
  36 }
  37 
  38 #ifdef CONFIG_SMP
  39 static void sysrq_tlbdump_othercpus(struct work_struct *dummy)
  40 {
  41         smp_call_function(sysrq_tlbdump_single, NULL, 0);
  42 }
  43 
  44 static DECLARE_WORK(sysrq_tlbdump, sysrq_tlbdump_othercpus);
  45 #endif
  46 
  47 static void sysrq_handle_tlbdump(int key)
  48 {
  49         sysrq_tlbdump_single(NULL);
  50 #ifdef CONFIG_SMP
  51         schedule_work(&sysrq_tlbdump);
  52 #endif
  53 }
  54 
  55 static struct sysrq_key_op sysrq_tlbdump_op = {
  56         .handler        = sysrq_handle_tlbdump,
  57         .help_msg       = "show-tlbs(x)",
  58         .action_msg     = "Show TLB entries",
  59         .enable_mask    = SYSRQ_ENABLE_DUMP,
  60 };
  61 
  62 static int __init mips_sysrq_init(void)
  63 {
  64         return register_sysrq_key('x', &sysrq_tlbdump_op);
  65 }
  66 arch_initcall(mips_sysrq_init);

/* [<][>][^][v][top][bottom][index][help] */