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
This commit is contained in:
@@ -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,
|
|||||||
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:
|
|||||||
|
|
||||||
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:
|
|||||||
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:
|
|||||||
#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:
|
|||||||
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)
|
|||||||
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)
|
|||||||
{
|
{
|
||||||
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 {
|
|||||||
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)
|
|||||||
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)
|
|||||||
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
|
|||||||
#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 */
|
||||||
|
Reference in New Issue
Block a user