You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'akpm' (incoming from Andrew)
Merge third batch of fixes from Andrew Morton: "Most of the rest. I still have two large patchsets against AIO and IPC, but they're a bit stuck behind other trees and I'm about to vanish for six days. - random fixlets - inotify - more of the MM queue - show_stack() cleanups - DMI update - kthread/workqueue things - compat cleanups - epoll udpates - binfmt updates - nilfs2 - hfs - hfsplus - ptrace - kmod - coredump - kexec - rbtree - pids - pidns - pps - semaphore tweaks - some w1 patches - relay updates - core Kconfig changes - sysrq tweaks" * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (109 commits) Documentation/sysrq: fix inconstistent help message of sysrq key ethernet/emac/sysrq: fix inconstistent help message of sysrq key sparc/sysrq: fix inconstistent help message of sysrq key powerpc/xmon/sysrq: fix inconstistent help message of sysrq key ARM/etm/sysrq: fix inconstistent help message of sysrq key power/sysrq: fix inconstistent help message of sysrq key kgdb/sysrq: fix inconstistent help message of sysrq key lib/decompress.c: fix initconst notifier-error-inject: fix module names in Kconfig kernel/sys.c: make prctl(PR_SET_MM) generally available UAPI: remove empty Kbuild files menuconfig: print more info for symbol without prompts init/Kconfig: re-order CONFIG_EXPERT options to fix menuconfig display kconfig menu: move Virtualization drivers near other virtualization options Kconfig: consolidate CONFIG_DEBUG_STRICT_USER_COPY_CHECKS relay: use macro PAGE_ALIGN instead of FIX_SIZE kernel/relay.c: move FIX_SIZE macro into relay.c kernel/relay.c: remove unused function argument actor drivers/w1/slaves/w1_ds2760.c: fix the error handling in w1_ds2760_add_slave() drivers/w1/slaves/w1_ds2781.c: fix the error handling in w1_ds2781_add_slave() ...
This commit is contained in:
+10
-10
@@ -129,9 +129,9 @@ On all - write a character to /proc/sysrq-trigger. e.g.:
|
||||
|
||||
* Okay, so what can I use them for?
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Well, un'R'aw is very handy when your X server or a svgalib program crashes.
|
||||
Well, unraw(r) is very handy when your X server or a svgalib program crashes.
|
||||
|
||||
sa'K' (Secure Access Key) is useful when you want to be sure there is no
|
||||
sak(k) (Secure Access Key) is useful when you want to be sure there is no
|
||||
trojan program running at console which could grab your password
|
||||
when you would try to login. It will kill all programs on given console,
|
||||
thus letting you make sure that the login prompt you see is actually
|
||||
@@ -143,20 +143,20 @@ IMPORTANT: such. :IMPORTANT
|
||||
useful when you want to exit a program that will not let you switch consoles.
|
||||
(For example, X or a svgalib program.)
|
||||
|
||||
re'B'oot is good when you're unable to shut down. But you should also 'S'ync
|
||||
and 'U'mount first.
|
||||
reboot(b) is good when you're unable to shut down. But you should also
|
||||
sync(s) and umount(u) first.
|
||||
|
||||
'C'rash can be used to manually trigger a crashdump when the system is hung.
|
||||
crash(c) can be used to manually trigger a crashdump when the system is hung.
|
||||
Note that this just triggers a crash if there is no dump mechanism available.
|
||||
|
||||
'S'ync is great when your system is locked up, it allows you to sync your
|
||||
sync(s) is great when your system is locked up, it allows you to sync your
|
||||
disks and will certainly lessen the chance of data loss and fscking. Note
|
||||
that the sync hasn't taken place until you see the "OK" and "Done" appear
|
||||
on the screen. (If the kernel is really in strife, you may not ever get the
|
||||
OK or Done message...)
|
||||
|
||||
'U'mount is basically useful in the same ways as 'S'ync. I generally 'S'ync,
|
||||
'U'mount, then re'B'oot when my system locks. It's saved me many a fsck.
|
||||
umount(u) is basically useful in the same ways as sync(s). I generally sync(s),
|
||||
umount(u), then reboot(b) when my system locks. It's saved me many a fsck.
|
||||
Again, the unmount (remount read-only) hasn't taken place until you see the
|
||||
"OK" and "Done" message appear on the screen.
|
||||
|
||||
@@ -165,11 +165,11 @@ kernel messages you do not want to see. Selecting '0' will prevent all but
|
||||
the most urgent kernel messages from reaching your console. (They will
|
||||
still be logged if syslogd/klogd are alive, though.)
|
||||
|
||||
t'E'rm and k'I'll are useful if you have some sort of runaway process you
|
||||
term(e) and kill(i) are useful if you have some sort of runaway process you
|
||||
are unable to kill any other way, especially if it's spawning other
|
||||
processes.
|
||||
|
||||
"'J'ust thaw it" is useful if your system becomes unresponsive due to a frozen
|
||||
"just thaw it(j)" is useful if your system becomes unresponsive due to a frozen
|
||||
(probably root) filesystem via the FIFREEZE ioctl.
|
||||
|
||||
* Sometimes SysRq seems to get 'stuck' after using it, what can I do?
|
||||
|
||||
@@ -175,6 +175,7 @@ machine_power_off(void)
|
||||
void
|
||||
show_regs(struct pt_regs *regs)
|
||||
{
|
||||
show_regs_print_info(KERN_DEFAULT);
|
||||
dik_show_regs(regs, NULL);
|
||||
}
|
||||
|
||||
|
||||
@@ -169,13 +169,6 @@ void show_stack(struct task_struct *task, unsigned long *sp)
|
||||
dik_show_trace(sp);
|
||||
}
|
||||
|
||||
void dump_stack(void)
|
||||
{
|
||||
show_stack(NULL, NULL);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(dump_stack);
|
||||
|
||||
void
|
||||
die_if_kernel(char * str, struct pt_regs *regs, long err, unsigned long *r9_15)
|
||||
{
|
||||
|
||||
@@ -220,13 +220,6 @@ void show_stack(struct task_struct *tsk, unsigned long *sp)
|
||||
show_stacktrace(tsk, NULL);
|
||||
}
|
||||
|
||||
/* Expected by Rest of kernel code */
|
||||
void dump_stack(void)
|
||||
{
|
||||
show_stacktrace(NULL, NULL);
|
||||
}
|
||||
EXPORT_SYMBOL(dump_stack);
|
||||
|
||||
/* Another API expected by schedular, shows up in "ps" as Wait Channel
|
||||
* Ofcourse just returning schedule( ) would be pointless so unwind until
|
||||
* the function is not in schedular code
|
||||
|
||||
@@ -71,7 +71,7 @@ void print_task_path_n_nm(struct task_struct *tsk, char *buf)
|
||||
}
|
||||
|
||||
done:
|
||||
pr_info("%s, TGID %u\n", path_nm, tsk->tgid);
|
||||
pr_info("Path: %s\n", path_nm);
|
||||
}
|
||||
EXPORT_SYMBOL(print_task_path_n_nm);
|
||||
|
||||
@@ -163,6 +163,7 @@ void show_regs(struct pt_regs *regs)
|
||||
return;
|
||||
|
||||
print_task_path_n_nm(tsk, buf);
|
||||
show_regs_print_info(KERN_INFO);
|
||||
|
||||
if (current->thread.cause_code)
|
||||
show_ecr_verbose(regs);
|
||||
|
||||
@@ -254,7 +254,7 @@ static void sysrq_etm_dump(int key)
|
||||
|
||||
static struct sysrq_key_op sysrq_etm_op = {
|
||||
.handler = sysrq_etm_dump,
|
||||
.help_msg = "ETM buffer dump",
|
||||
.help_msg = "etm-buffer-dump(v)",
|
||||
.action_msg = "etm",
|
||||
};
|
||||
|
||||
|
||||
@@ -225,11 +225,8 @@ void __show_regs(struct pt_regs *regs)
|
||||
unsigned long flags;
|
||||
char buf[64];
|
||||
|
||||
printk("CPU: %d %s (%s %.*s)\n",
|
||||
raw_smp_processor_id(), print_tainted(),
|
||||
init_utsname()->release,
|
||||
(int)strcspn(init_utsname()->version, " "),
|
||||
init_utsname()->version);
|
||||
show_regs_print_info(KERN_DEFAULT);
|
||||
|
||||
print_symbol("PC is at %s\n", instruction_pointer(regs));
|
||||
print_symbol("LR is at %s\n", regs->ARM_lr);
|
||||
printk("pc : [<%08lx>] lr : [<%08lx>] psr: %08lx\n"
|
||||
@@ -284,7 +281,6 @@ void __show_regs(struct pt_regs *regs)
|
||||
void show_regs(struct pt_regs * regs)
|
||||
{
|
||||
printk("\n");
|
||||
printk("Pid: %d, comm: %20s\n", task_pid_nr(current), current->comm);
|
||||
__show_regs(regs);
|
||||
dump_stack();
|
||||
}
|
||||
|
||||
@@ -204,13 +204,6 @@ static void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk)
|
||||
}
|
||||
#endif
|
||||
|
||||
void dump_stack(void)
|
||||
{
|
||||
dump_backtrace(NULL, NULL);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(dump_stack);
|
||||
|
||||
void show_stack(struct task_struct *tsk, unsigned long *sp)
|
||||
{
|
||||
dump_backtrace(NULL, tsk);
|
||||
|
||||
@@ -145,11 +145,7 @@ void __show_regs(struct pt_regs *regs)
|
||||
{
|
||||
int i;
|
||||
|
||||
printk("CPU: %d %s (%s %.*s)\n",
|
||||
raw_smp_processor_id(), print_tainted(),
|
||||
init_utsname()->release,
|
||||
(int)strcspn(init_utsname()->version, " "),
|
||||
init_utsname()->version);
|
||||
show_regs_print_info(KERN_DEFAULT);
|
||||
print_symbol("PC is at %s\n", instruction_pointer(regs));
|
||||
print_symbol("LR is at %s\n", regs->regs[30]);
|
||||
printk("pc : [<%016llx>] lr : [<%016llx>] pstate: %08llx\n",
|
||||
@@ -166,7 +162,6 @@ void __show_regs(struct pt_regs *regs)
|
||||
void show_regs(struct pt_regs * regs)
|
||||
{
|
||||
printk("\n");
|
||||
printk("Pid: %d, comm: %20s\n", task_pid_nr(current), current->comm);
|
||||
__show_regs(regs);
|
||||
}
|
||||
|
||||
|
||||
@@ -167,13 +167,6 @@ static void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk)
|
||||
}
|
||||
}
|
||||
|
||||
void dump_stack(void)
|
||||
{
|
||||
dump_backtrace(NULL, NULL);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(dump_stack);
|
||||
|
||||
void show_stack(struct task_struct *tsk, unsigned long *sp)
|
||||
{
|
||||
dump_backtrace(NULL, tsk);
|
||||
|
||||
@@ -204,14 +204,6 @@ void show_stack(struct task_struct *tsk, unsigned long *stack)
|
||||
show_stack_log_lvl(tsk, (unsigned long)stack, NULL, "");
|
||||
}
|
||||
|
||||
void dump_stack(void)
|
||||
{
|
||||
unsigned long stack;
|
||||
|
||||
show_trace_log_lvl(current, &stack, NULL, "");
|
||||
}
|
||||
EXPORT_SYMBOL(dump_stack);
|
||||
|
||||
static const char *cpu_modes[] = {
|
||||
"Application", "Supervisor", "Interrupt level 0", "Interrupt level 1",
|
||||
"Interrupt level 2", "Interrupt level 3", "Exception", "NMI"
|
||||
@@ -223,6 +215,8 @@ void show_regs_log_lvl(struct pt_regs *regs, const char *log_lvl)
|
||||
unsigned long lr = regs->lr;
|
||||
unsigned long mode = (regs->sr & MODE_MASK) >> MODE_SHIFT;
|
||||
|
||||
show_regs_print_info(log_lvl);
|
||||
|
||||
if (!user_mode(regs)) {
|
||||
sp = (unsigned long)regs + FRAME_SIZE_FULL;
|
||||
|
||||
@@ -260,9 +254,6 @@ void show_regs_log_lvl(struct pt_regs *regs, const char *log_lvl)
|
||||
regs->sr & SR_I0M ? '0' : '.',
|
||||
regs->sr & SR_GM ? 'G' : 'g');
|
||||
printk("%sCPU Mode: %s\n", log_lvl, cpu_modes[mode]);
|
||||
printk("%sProcess: %s [%d] (task: %p thread: %p)\n",
|
||||
log_lvl, current->comm, current->pid, current,
|
||||
task_thread_info(current));
|
||||
}
|
||||
|
||||
void show_regs(struct pt_regs *regs)
|
||||
|
||||
@@ -168,6 +168,7 @@ void dump_stack(void)
|
||||
#endif
|
||||
trace_buffer_save(tflags);
|
||||
dump_bfin_trace_buffer();
|
||||
dump_stack_print_info(KERN_DEFAULT);
|
||||
show_stack(current, &stack);
|
||||
trace_buffer_restore(tflags);
|
||||
}
|
||||
|
||||
@@ -853,6 +853,8 @@ void show_regs(struct pt_regs *fp)
|
||||
unsigned char in_atomic = (bfin_read_IPEND() & 0x10) || in_atomic();
|
||||
|
||||
pr_notice("\n");
|
||||
show_regs_print_info(KERN_NOTICE);
|
||||
|
||||
if (CPUID != bfin_cpuid())
|
||||
pr_notice("Compiled for cpu family 0x%04x (Rev %d), "
|
||||
"but running on:0x%04x (Rev %d)\n",
|
||||
|
||||
@@ -31,6 +31,7 @@ void __init trap_init(void)
|
||||
void show_regs(struct pt_regs *regs)
|
||||
{
|
||||
pr_err("\n");
|
||||
show_regs_print_info(KERN_ERR);
|
||||
pr_err("PC: %08lx SP: %08lx\n", regs->pc, regs->sp);
|
||||
pr_err("Status: %08lx ORIG_A4: %08lx\n", regs->csr, regs->orig_a4);
|
||||
pr_err("A0: %08lx B0: %08lx\n", regs->a0, regs->b0);
|
||||
@@ -67,15 +68,6 @@ void show_regs(struct pt_regs *regs)
|
||||
pr_err("A31: %08lx B31: %08lx\n", regs->a31, regs->b31);
|
||||
}
|
||||
|
||||
void dump_stack(void)
|
||||
{
|
||||
unsigned long stack;
|
||||
|
||||
show_stack(current, &stack);
|
||||
}
|
||||
EXPORT_SYMBOL(dump_stack);
|
||||
|
||||
|
||||
void die(char *str, struct pt_regs *fp, int nr)
|
||||
{
|
||||
console_verbose();
|
||||
|
||||
@@ -176,6 +176,9 @@ unsigned long get_wchan(struct task_struct *p)
|
||||
void show_regs(struct pt_regs * regs)
|
||||
{
|
||||
unsigned long usp = rdusp();
|
||||
|
||||
show_regs_print_info(KERN_DEFAULT);
|
||||
|
||||
printk("IRP: %08lx SRP: %08lx DCCR: %08lx USP: %08lx MOF: %08lx\n",
|
||||
regs->irp, regs->srp, regs->dccr, usp, regs->mof );
|
||||
printk(" r0: %08lx r1: %08lx r2: %08lx r3: %08lx\n",
|
||||
|
||||
@@ -164,6 +164,9 @@ get_wchan(struct task_struct *p)
|
||||
void show_regs(struct pt_regs * regs)
|
||||
{
|
||||
unsigned long usp = rdusp();
|
||||
|
||||
show_regs_print_info(KERN_DEFAULT);
|
||||
|
||||
printk("ERP: %08lx SRP: %08lx CCS: %08lx USP: %08lx MOF: %08lx\n",
|
||||
regs->erp, regs->srp, regs->ccs, usp, regs->mof);
|
||||
|
||||
|
||||
@@ -146,13 +146,6 @@ show_stack(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
dump_stack(void)
|
||||
{
|
||||
show_stack(NULL, NULL);
|
||||
}
|
||||
EXPORT_SYMBOL(dump_stack);
|
||||
|
||||
void
|
||||
set_nmi_handler(void (*handler)(struct pt_regs *))
|
||||
{
|
||||
|
||||
+1
-13
@@ -466,17 +466,6 @@ asmlinkage void compound_exception(unsigned long esfr1,
|
||||
BUG();
|
||||
} /* end compound_exception() */
|
||||
|
||||
/*****************************************************************************/
|
||||
/*
|
||||
* The architecture-independent backtrace generator
|
||||
*/
|
||||
void dump_stack(void)
|
||||
{
|
||||
show_stack(NULL, NULL);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(dump_stack);
|
||||
|
||||
void show_stack(struct task_struct *task, unsigned long *sp)
|
||||
{
|
||||
}
|
||||
@@ -508,6 +497,7 @@ void show_regs(struct pt_regs *regs)
|
||||
int loop;
|
||||
|
||||
printk("\n");
|
||||
show_regs_print_info(KERN_DEFAULT);
|
||||
|
||||
printk("Frame: @%08lx [%s]\n",
|
||||
(unsigned long) regs,
|
||||
@@ -522,8 +512,6 @@ void show_regs(struct pt_regs *regs)
|
||||
else
|
||||
printk(" | ");
|
||||
}
|
||||
|
||||
printk("Process %s (pid: %d)\n", current->comm, current->pid);
|
||||
}
|
||||
|
||||
void die_if_kernel(const char *str, ...)
|
||||
|
||||
@@ -83,6 +83,8 @@ void machine_power_off(void)
|
||||
|
||||
void show_regs(struct pt_regs * regs)
|
||||
{
|
||||
show_regs_print_info(KERN_DEFAULT);
|
||||
|
||||
printk("\nPC: %08lx Status: %02x",
|
||||
regs->pc, regs->ccr);
|
||||
printk("\nORIG_ER0: %08lx ER0: %08lx ER1: %08lx",
|
||||
|
||||
@@ -164,10 +164,3 @@ void show_trace_task(struct task_struct *tsk)
|
||||
{
|
||||
show_stack(tsk,(unsigned long *)tsk->thread.esp0);
|
||||
}
|
||||
|
||||
void dump_stack(void)
|
||||
{
|
||||
show_stack(NULL,NULL);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(dump_stack);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user