Skip to contentSkip to conversation

s390 patches for 2.6.22

PATCH In review Martin Schwidefsky 4 participants 11 messages Jun 19, 2007 s390

lore
Share & tools
lore
#0 lore raw

cover s390 patches for 2.6.22

Last s390 bug fix patches for 2.6.22.

Signature · 4 lines
blue skies,
   Martin.

"Reality continues to ruin my life." - Calvin.
#1 lore raw

PATCH 1/6 Missing blank when appending cio_ignore kernel parameter

From: Michael Holzheu <[email protected]>

When appending the 'cio_ignore' kernel parameter to the command line, a blank has to be inserted in order to separate 'cio_ignore' from the preceding kernel parameters.

---

 arch/s390/kernel/setup.c |    1 +
 1 file changed, 1 insertion(+)
arch/s390/kernel/setup.c +1 -0
Index: quilt-2.6/arch/s390/kernel/setup.c
===================================================================
@@ -300,6 +300,7 @@ static void __init setup_zfcpdump(unsign
 	else
 		sprintf(str, "cio_ignore=all,!0.0.%04x",
 			ipl_info.data.fcp.dev_id.devno);
+	strcat(COMMAND_LINE, " ");
 	strcat(COMMAND_LINE, str);
 	console_loglevel = 2;
 }
Signature · 4 lines
blue skies,
   Martin.

"Reality continues to ruin my life." - Calvin.
#2 lore raw

PATCH 2/6 Fix zfcpdump header

In reply to Martin Schwidefsky

From: Michael Holzheu <[email protected]>

Added members for volume number and real memory size to header information.

---

 drivers/s390/char/zcore.c |    3 +++
 1 file changed, 3 insertions(+)
drivers/s390/char/zcore.c +3 -0
Index: quilt-2.6/drivers/s390/char/zcore.c
===================================================================
@@ -267,7 +267,9 @@ struct zcore_header {
 	u64 tod;
 	cpuid_t cpu_id;
 	u32 arch_id;
+	u32 volnr;
 	u32 build_arch;
+	u64 rmem_size;
 	char pad2[4016];
 } __attribute__((packed,__aligned__(16)));
 
@@ -559,6 +561,7 @@ static void __init zcore_header_init(int
 	else
 		hdr->arch_id = DUMP_ARCH_S390;
 	hdr->mem_size = sys_info.mem_size;
+	hdr->rmem_size = sys_info.mem_size;
 	hdr->mem_end = sys_info.mem_size;
 	hdr->num_pages = sys_info.mem_size / PAGE_SIZE;
 	hdr->tod = get_clock();
Signature · 4 lines
blue skies,
   Martin.

"Reality continues to ruin my life." - Calvin.
#3 lore raw

PATCH 3/6 Fix yet another two section mismatches.

In reply to Martin Schwidefsky

From: Heiko Carstens <[email protected]>

WARNING: arch/s390/kernel/built-in.o(.text+0xb92a):
Section mismatch: reference to .init.text:start_secondary (between 'restart_addr' and 'stack_overflow')
WARNING: arch/s390/appldata/built-in.o(.data+0xdc):
Section mismatch: reference to .init.text:
(between 'appldata_nb' and 'appldata_timer_lock')

---

 arch/s390/appldata/appldata_base.c |    5 ++---
 arch/s390/kernel/entry.S           |    8 +++++++-
 arch/s390/kernel/entry64.S         |    8 +++++++-
 3 files changed, 16 insertions(+), 5 deletions(-)
arch/s390/appldata/appldata_base.c +2 -3
Index: quilt-2.6/arch/s390/appldata/appldata_base.c
===================================================================
@@ -535,8 +535,7 @@ void appldata_unregister_ops(struct appl
 
 /******************************* init / exit *********************************/
 
-static void
-appldata_online_cpu(int cpu)
+static void __cpuinit appldata_online_cpu(int cpu)
 {
 	init_virt_timer(&per_cpu(appldata_timer, cpu));
 	per_cpu(appldata_timer, cpu).function = appldata_timer_function;
@@ -580,7 +579,7 @@ appldata_cpu_notify(struct notifier_bloc
 	return NOTIFY_OK;
 }
 
-static struct notifier_block appldata_nb = {
+static struct notifier_block __cpuinitdata appldata_nb = {
 	.notifier_call = appldata_cpu_notify,
 };
 
arch/s390/kernel/entry64.S +7 -1
Index: quilt-2.6/arch/s390/kernel/entry64.S
===================================================================
@@ -745,10 +745,13 @@ mcck_return:
 #endif
 	lpswe	__LC_RETURN_MCCK_PSW	# back to caller
 
-#ifdef CONFIG_SMP
 /*
  * Restart interruption handler, kick starter for additional CPUs
  */
+#ifdef CONFIG_SMP
+#ifndef CONFIG_HOTPLUG_CPU
+	.section .init.text,"ax"
+#endif
 	.globl restart_int_handler
 restart_int_handler:
 	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
 	stosm	__SF_EMPTY(%r15),0x04	# now we can turn dat on
 	jg	start_secondary
+#ifndef CONFIG_HOTPLUG_CPU
+	.previous
+#endif
 #else
 /*
  * If we do not run with SMP enabled, let the new CPU crash ...
arch/s390/kernel/entry.S +7 -1
Index: quilt-2.6/arch/s390/kernel/entry.S
===================================================================
@@ -769,10 +769,13 @@ mcck_return:
 
 	RESTORE_ALL __LC_RETURN_MCCK_PSW,0
 
-#ifdef CONFIG_SMP
 /*
  * Restart interruption handler, kick starter for additional CPUs
  */
+#ifdef CONFIG_SMP
+#ifndef CONFIG_HOTPLUG_CPU
+	.section .init.text,"ax"
+#endif
 	.globl restart_int_handler
 restart_int_handler:
 	l	%r15,__LC_SAVE_AREA+60	# load ksp
@@ -785,6 +788,9 @@ restart_int_handler:
 	br	%r14			# branch to start_secondary
 restart_addr:
 	.long	start_secondary
+#ifndef CONFIG_HOTPLUG_CPU
+	.previous
+#endif
 #else
 /*
  * If we do not run with SMP enabled, let the new CPU crash ...
Signature · 4 lines
blue skies,
   Martin.

"Reality continues to ruin my life." - Calvin.
#4 lore raw

PATCH 4/6 Print list of modules on die().

In reply to Martin Schwidefsky

From: Heiko Carstens <[email protected]>

Print list of modules on die() like a lot of other architectures do.

---

 arch/s390/kernel/traps.c |    1 +
 1 file changed, 1 insertion(+)
arch/s390/kernel/traps.c +1 -0
Index: quilt-2.6/arch/s390/kernel/traps.c
===================================================================
@@ -258,6 +258,7 @@ void die(const char * str, struct pt_reg
 	spin_lock_irq(&die_lock);
 	bust_spinlocks(1);
 	printk("%s: %04lx [#%d]\n", str, err & 0xffff, ++die_counter);
+	print_modules();
         show_regs(regs);
 	bust_spinlocks(0);
         spin_unlock_irq(&die_lock);
Signature · 4 lines
blue skies,
   Martin.

"Reality continues to ruin my life." - Calvin.
#5 lore raw

PATCH 5/6 Move psw_set_key.

In reply to Martin Schwidefsky

From: Heiko Carstens <[email protected]>

Move psw_set_key() from ptrace.h to processor.h which is a more suitable place for it. In addition the moves makes the function invisible to user space.

---

 arch/s390/kernel/traps.c |    8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
arch/s390/kernel/traps.c +5 -3
Index: quilt-2.6/arch/s390/kernel/traps.c
===================================================================
@@ -253,20 +253,22 @@ void die(const char * str, struct pt_reg
 {
 	static int die_counter;
 
+	oops_enter();
 	debug_stop_all();
 	console_verbose();
 	spin_lock_irq(&die_lock);
 	bust_spinlocks(1);
 	printk("%s: %04lx [#%d]\n", str, err & 0xffff, ++die_counter);
 	print_modules();
-        show_regs(regs);
+	show_regs(regs);
 	bust_spinlocks(0);
-        spin_unlock_irq(&die_lock);
+	spin_unlock_irq(&die_lock);
 	if (in_interrupt())
 		panic("Fatal exception in interrupt");
 	if (panic_on_oops)
 		panic("Fatal exception: panic_on_oops");
-        do_exit(SIGSEGV);
+	oops_exit();
+	do_exit(SIGSEGV);
 }
 
 static void inline
Signature · 4 lines
blue skies,
   Martin.

"Reality continues to ruin my life." - Calvin.
#6 lore raw

Re: [patch 5/6] Move psw_set_key.

Quoted 3 lines · Martin Schwidefsky

Move psw_set_key() from ptrace.h to processor.h which is a more suitable place for it. In addition the moves makes the function invisible to user space.

Hmm, this does not really describe the changes.

Bastian

Signature · 2 lines
Violence in reality is quite different from theory.
		-- Spock, "The Cloud Minders", stardate 5818.4
#7 lore raw

Re: [patch 5/6] Move psw_set_key.

Quoted 6 lines · Bastian Blank
Quoted 3 lines · Martin Schwidefsky

Move psw_set_key() from ptrace.h to processor.h which is a more suitable place for it. In addition the moves makes the function invisible to user space.

Hmm, this does not really describe the changes.

Yes.. you need to interchange descriptions for patches 5 & 6. Then it might make sense ;)

#8 lore raw

Re: [patch 5/6] Move psw_set_key.

Quoted 8 lines · Heiko Carstens
Quoted 5 lines
Quoted 3 lines

Move psw_set_key() from ptrace.h to processor.h which is a more suitable place for it. In addition the moves makes the function invisible to user space.

Hmm, this does not really describe the changes.

Yes.. you need to interchange descriptions for patches 5 & 6. Then it might make sense ;)

Ahem, yes, oops.. sorry.

Fixed on git390.

Signature · 4 lines
blue skies,
  Martin.

"Reality continues to ruin my life." - Calvin.
#9 lore raw

PATCH 6/6 Add oops_enter()/oops_exit() calls to die().

In reply to Martin Schwidefsky

From: Heiko Carstens <[email protected]>

This is mainly to switch off all potentially debugging stuff that won't report anything useful after an oops happened. Besided that setting pause_on_oops will work too, but doesn't make too much sense on s390.

---

 include/asm-s390/processor.h |    5 +++++
 include/asm-s390/ptrace.h    |    9 +--------
 2 files changed, 6 insertions(+), 8 deletions(-)
include/asm-s390/processor.h +5 -0
Index: quilt-2.6/include/asm-s390/processor.h
===================================================================
@@ -216,6 +216,11 @@ static inline void cpu_relax(void)
 	barrier();
 }
 
+static inline void psw_set_key(unsigned int key)
+{
+	asm volatile("spka 0(%0)" : : "d" (key));
+}
+
 /*
  * Set PSW to specified value.
  */
include/asm-s390/ptrace.h +1 -8
Index: quilt-2.6/include/asm-s390/ptrace.h
===================================================================
@@ -470,14 +470,7 @@ struct user_regs_struct
 #define regs_return_value(regs)((regs)->gprs[2])
 #define profile_pc(regs) instruction_pointer(regs)
 extern void show_regs(struct pt_regs * regs);
-#endif
-
-static inline void
-psw_set_key(unsigned int key)
-{
-	asm volatile("spka 0(%0)" : : "d" (key));
-}
-
+#endif /* __KERNEL__ */
 #endif /* __ASSEMBLY__ */
 
 #endif /* _S390_PTRACE_H */
Signature · 4 lines
blue skies,
   Martin.

"Reality continues to ruin my life." - Calvin.
#10 lore raw

Re: [patch 5/6] Move psw_set_key.

Quoted 9 lines · Martin Schwidefsky

From: Heiko Carstens <[email protected]>

Move psw_set_key() from ptrace.h to processor.h which is a more suitable place for it. In addition the moves makes the function invisible to user space.

 arch/s390/kernel/traps.c |    8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
Quoted 11 lines · Martin Schwidefsky

From: Heiko Carstens <[email protected]>

This is mainly to switch off all potentially debugging stuff that won't report anything useful after an oops happened. Besided that setting pause_on_oops will work too, but doesn't make too much sense on s390.

 include/asm-s390/processor.h |    5 +++++
 include/asm-s390/ptrace.h    |    9 +--------
 2 files changed, 6 insertions(+), 8 deletions(-)

These changelog does not match the patch, they're reversed.. :-)