Commit 710675d3 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6

* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6:
  [S390] Move psw_set_key.
  [S390] Add oops_enter()/oops_exit() calls to die().
  [S390] Print list of modules on die().
  [S390] Fix yet another two section mismatches.
  [S390] Fix zfcpdump header
  [S390] Missing blank when appending cio_ignore kernel parameter
parents a289bbe2 dc74d7f9
...@@ -535,8 +535,7 @@ void appldata_unregister_ops(struct appldata_ops *ops) ...@@ -535,8 +535,7 @@ void appldata_unregister_ops(struct appldata_ops *ops)
/******************************* init / exit *********************************/ /******************************* init / exit *********************************/
static void static void __cpuinit appldata_online_cpu(int cpu)
appldata_online_cpu(int cpu)
{ {
init_virt_timer(&per_cpu(appldata_timer, cpu)); init_virt_timer(&per_cpu(appldata_timer, cpu));
per_cpu(appldata_timer, cpu).function = appldata_timer_function; per_cpu(appldata_timer, cpu).function = appldata_timer_function;
...@@ -580,7 +579,7 @@ appldata_cpu_notify(struct notifier_block *self, ...@@ -580,7 +579,7 @@ appldata_cpu_notify(struct notifier_block *self,
return NOTIFY_OK; return NOTIFY_OK;
} }
static struct notifier_block appldata_nb = { static struct notifier_block __cpuinitdata appldata_nb = {
.notifier_call = appldata_cpu_notify, .notifier_call = appldata_cpu_notify,
}; };
......
...@@ -769,10 +769,13 @@ mcck_return: ...@@ -769,10 +769,13 @@ mcck_return:
RESTORE_ALL __LC_RETURN_MCCK_PSW,0 RESTORE_ALL __LC_RETURN_MCCK_PSW,0
#ifdef CONFIG_SMP
/* /*
* Restart interruption handler, kick starter for additional CPUs * Restart interruption handler, kick starter for additional CPUs
*/ */
#ifdef CONFIG_SMP
#ifndef CONFIG_HOTPLUG_CPU
.section .init.text,"ax"
#endif
.globl restart_int_handler .globl restart_int_handler
restart_int_handler: restart_int_handler:
l %r15,__LC_SAVE_AREA+60 # load ksp l %r15,__LC_SAVE_AREA+60 # load ksp
...@@ -785,6 +788,9 @@ restart_int_handler: ...@@ -785,6 +788,9 @@ restart_int_handler:
br %r14 # branch to start_secondary br %r14 # branch to start_secondary
restart_addr: restart_addr:
.long start_secondary .long start_secondary
#ifndef CONFIG_HOTPLUG_CPU
.previous
#endif
#else #else
/* /*
* If we do not run with SMP enabled, let the new CPU crash ... * If we do not run with SMP enabled, let the new CPU crash ...
......
...@@ -745,10 +745,13 @@ mcck_return: ...@@ -745,10 +745,13 @@ mcck_return:
#endif #endif
lpswe __LC_RETURN_MCCK_PSW # back to caller lpswe __LC_RETURN_MCCK_PSW # back to caller
#ifdef CONFIG_SMP
/* /*
* Restart interruption handler, kick starter for additional CPUs * Restart interruption handler, kick starter for additional CPUs
*/ */
#ifdef CONFIG_SMP
#ifndef CONFIG_HOTPLUG_CPU
.section .init.text,"ax"
#endif
.globl restart_int_handler .globl restart_int_handler
restart_int_handler: restart_int_handler:
lg %r15,__LC_SAVE_AREA+120 # load ksp lg %r15,__LC_SAVE_AREA+120 # load ksp
...@@ -759,6 +762,9 @@ restart_int_handler: ...@@ -759,6 +762,9 @@ restart_int_handler:
lmg %r6,%r15,__SF_GPRS(%r15) # load registers from clone lmg %r6,%r15,__SF_GPRS(%r15) # load registers from clone
stosm __SF_EMPTY(%r15),0x04 # now we can turn dat on stosm __SF_EMPTY(%r15),0x04 # now we can turn dat on
jg start_secondary jg start_secondary
#ifndef CONFIG_HOTPLUG_CPU
.previous
#endif
#else #else
/* /*
* If we do not run with SMP enabled, let the new CPU crash ... * If we do not run with SMP enabled, let the new CPU crash ...
......
...@@ -300,6 +300,7 @@ static void __init setup_zfcpdump(unsigned int console_devno) ...@@ -300,6 +300,7 @@ static void __init setup_zfcpdump(unsigned int console_devno)
else else
sprintf(str, "cio_ignore=all,!0.0.%04x", sprintf(str, "cio_ignore=all,!0.0.%04x",
ipl_info.data.fcp.dev_id.devno); ipl_info.data.fcp.dev_id.devno);
strcat(COMMAND_LINE, " ");
strcat(COMMAND_LINE, str); strcat(COMMAND_LINE, str);
console_loglevel = 2; console_loglevel = 2;
} }
......
...@@ -253,19 +253,22 @@ void die(const char * str, struct pt_regs * regs, long err) ...@@ -253,19 +253,22 @@ void die(const char * str, struct pt_regs * regs, long err)
{ {
static int die_counter; static int die_counter;
oops_enter();
debug_stop_all(); debug_stop_all();
console_verbose(); console_verbose();
spin_lock_irq(&die_lock); spin_lock_irq(&die_lock);
bust_spinlocks(1); bust_spinlocks(1);
printk("%s: %04lx [#%d]\n", str, err & 0xffff, ++die_counter); printk("%s: %04lx [#%d]\n", str, err & 0xffff, ++die_counter);
show_regs(regs); print_modules();
show_regs(regs);
bust_spinlocks(0); bust_spinlocks(0);
spin_unlock_irq(&die_lock); spin_unlock_irq(&die_lock);
if (in_interrupt()) if (in_interrupt())
panic("Fatal exception in interrupt"); panic("Fatal exception in interrupt");
if (panic_on_oops) if (panic_on_oops)
panic("Fatal exception: panic_on_oops"); panic("Fatal exception: panic_on_oops");
do_exit(SIGSEGV); oops_exit();
do_exit(SIGSEGV);
} }
static void inline static void inline
......
...@@ -267,7 +267,9 @@ struct zcore_header { ...@@ -267,7 +267,9 @@ struct zcore_header {
u64 tod; u64 tod;
cpuid_t cpu_id; cpuid_t cpu_id;
u32 arch_id; u32 arch_id;
u32 volnr;
u32 build_arch; u32 build_arch;
u64 rmem_size;
char pad2[4016]; char pad2[4016];
} __attribute__((packed,__aligned__(16))); } __attribute__((packed,__aligned__(16)));
...@@ -559,6 +561,7 @@ static void __init zcore_header_init(int arch, struct zcore_header *hdr) ...@@ -559,6 +561,7 @@ static void __init zcore_header_init(int arch, struct zcore_header *hdr)
else else
hdr->arch_id = DUMP_ARCH_S390; hdr->arch_id = DUMP_ARCH_S390;
hdr->mem_size = sys_info.mem_size; hdr->mem_size = sys_info.mem_size;
hdr->rmem_size = sys_info.mem_size;
hdr->mem_end = sys_info.mem_size; hdr->mem_end = sys_info.mem_size;
hdr->num_pages = sys_info.mem_size / PAGE_SIZE; hdr->num_pages = sys_info.mem_size / PAGE_SIZE;
hdr->tod = get_clock(); hdr->tod = get_clock();
......
...@@ -216,6 +216,11 @@ static inline void cpu_relax(void) ...@@ -216,6 +216,11 @@ static inline void cpu_relax(void)
barrier(); barrier();
} }
static inline void psw_set_key(unsigned int key)
{
asm volatile("spka 0(%0)" : : "d" (key));
}
/* /*
* Set PSW to specified value. * Set PSW to specified value.
*/ */
......
...@@ -470,14 +470,7 @@ struct user_regs_struct ...@@ -470,14 +470,7 @@ struct user_regs_struct
#define regs_return_value(regs)((regs)->gprs[2]) #define regs_return_value(regs)((regs)->gprs[2])
#define profile_pc(regs) instruction_pointer(regs) #define profile_pc(regs) instruction_pointer(regs)
extern void show_regs(struct pt_regs * regs); extern void show_regs(struct pt_regs * regs);
#endif #endif /* __KERNEL__ */
static inline void
psw_set_key(unsigned int key)
{
asm volatile("spka 0(%0)" : : "d" (key));
}
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#endif /* _S390_PTRACE_H */ #endif /* _S390_PTRACE_H */
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