diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-11 14:20:11 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-11 14:20:11 -0400 |
commit | 0ca9caae2d05ee0c4878aa3e2619cd23f4ad4cb4 (patch) | |
tree | 93323b1f7146aefb1843cb995def6c09613bb363 /arch/s390 | |
parent | 6bf1f75bc6dabc357a29e3b3d6bd4ff00c3d5e6e (diff) | |
parent | 75e9de18f079a51fa987ef0703112d5bc125fdb7 (diff) |
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] stacktrace bug.
[S390] cio: remove casts from/to (void *).
[S390] cio: Remove grace period for vary off chpid.
[S390] cio: Use ccw_dev_id and subchannel_id in ccw_device_private
[S390] monwriter kzalloc size.
[S390] cio: add missing KERN_INFO printk header.
[S390] irq change improvements.
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/appldata/appldata_base.c | 2 | ||||
-rw-r--r-- | arch/s390/kernel/s390_ext.c | 4 | ||||
-rw-r--r-- | arch/s390/kernel/stacktrace.c | 17 | ||||
-rw-r--r-- | arch/s390/kernel/vtime.c | 8 |
4 files changed, 15 insertions, 16 deletions
diff --git a/arch/s390/appldata/appldata_base.c b/arch/s390/appldata/appldata_base.c index 2b1e6c9a6e0e..45c9fa7d7545 100644 --- a/arch/s390/appldata/appldata_base.c +++ b/arch/s390/appldata/appldata_base.c | |||
@@ -109,7 +109,7 @@ static LIST_HEAD(appldata_ops_list); | |||
109 | * | 109 | * |
110 | * schedule work and reschedule timer | 110 | * schedule work and reschedule timer |
111 | */ | 111 | */ |
112 | static void appldata_timer_function(unsigned long data, struct pt_regs *regs) | 112 | static void appldata_timer_function(unsigned long data) |
113 | { | 113 | { |
114 | P_DEBUG(" -= Timer =-\n"); | 114 | P_DEBUG(" -= Timer =-\n"); |
115 | P_DEBUG("CPU: %i, expire_count: %i\n", smp_processor_id(), | 115 | P_DEBUG("CPU: %i, expire_count: %i\n", smp_processor_id(), |
diff --git a/arch/s390/kernel/s390_ext.c b/arch/s390/kernel/s390_ext.c index c49ab8c784d2..4faf96f8a834 100644 --- a/arch/s390/kernel/s390_ext.c +++ b/arch/s390/kernel/s390_ext.c | |||
@@ -117,8 +117,8 @@ void do_extint(struct pt_regs *regs, unsigned short code) | |||
117 | int index; | 117 | int index; |
118 | struct pt_regs *old_regs; | 118 | struct pt_regs *old_regs; |
119 | 119 | ||
120 | irq_enter(); | ||
121 | old_regs = set_irq_regs(regs); | 120 | old_regs = set_irq_regs(regs); |
121 | irq_enter(); | ||
122 | asm volatile ("mc 0,0"); | 122 | asm volatile ("mc 0,0"); |
123 | if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer) | 123 | if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer) |
124 | /** | 124 | /** |
@@ -134,8 +134,8 @@ void do_extint(struct pt_regs *regs, unsigned short code) | |||
134 | p->handler(code); | 134 | p->handler(code); |
135 | } | 135 | } |
136 | } | 136 | } |
137 | set_irq_regs(old_regs); | ||
138 | irq_exit(); | 137 | irq_exit(); |
138 | set_irq_regs(old_regs); | ||
139 | } | 139 | } |
140 | 140 | ||
141 | EXPORT_SYMBOL(register_external_interrupt); | 141 | EXPORT_SYMBOL(register_external_interrupt); |
diff --git a/arch/s390/kernel/stacktrace.c b/arch/s390/kernel/stacktrace.c index d9428a0fc8fb..0d14a4789bf2 100644 --- a/arch/s390/kernel/stacktrace.c +++ b/arch/s390/kernel/stacktrace.c | |||
@@ -62,27 +62,26 @@ static inline unsigned long save_context_stack(struct stack_trace *trace, | |||
62 | void save_stack_trace(struct stack_trace *trace, struct task_struct *task) | 62 | void save_stack_trace(struct stack_trace *trace, struct task_struct *task) |
63 | { | 63 | { |
64 | register unsigned long sp asm ("15"); | 64 | register unsigned long sp asm ("15"); |
65 | unsigned long orig_sp; | 65 | unsigned long orig_sp, new_sp; |
66 | 66 | ||
67 | sp &= PSW_ADDR_INSN; | 67 | orig_sp = sp & PSW_ADDR_INSN; |
68 | orig_sp = sp; | ||
69 | 68 | ||
70 | sp = save_context_stack(trace, &trace->skip, sp, | 69 | new_sp = save_context_stack(trace, &trace->skip, orig_sp, |
71 | S390_lowcore.panic_stack - PAGE_SIZE, | 70 | S390_lowcore.panic_stack - PAGE_SIZE, |
72 | S390_lowcore.panic_stack); | 71 | S390_lowcore.panic_stack); |
73 | if ((sp != orig_sp) && !trace->all_contexts) | 72 | if ((new_sp != orig_sp) && !trace->all_contexts) |
74 | return; | 73 | return; |
75 | sp = save_context_stack(trace, &trace->skip, sp, | 74 | new_sp = save_context_stack(trace, &trace->skip, new_sp, |
76 | S390_lowcore.async_stack - ASYNC_SIZE, | 75 | S390_lowcore.async_stack - ASYNC_SIZE, |
77 | S390_lowcore.async_stack); | 76 | S390_lowcore.async_stack); |
78 | if ((sp != orig_sp) && !trace->all_contexts) | 77 | if ((new_sp != orig_sp) && !trace->all_contexts) |
79 | return; | 78 | return; |
80 | if (task) | 79 | if (task) |
81 | save_context_stack(trace, &trace->skip, sp, | 80 | save_context_stack(trace, &trace->skip, new_sp, |
82 | (unsigned long) task_stack_page(task), | 81 | (unsigned long) task_stack_page(task), |
83 | (unsigned long) task_stack_page(task) + THREAD_SIZE); | 82 | (unsigned long) task_stack_page(task) + THREAD_SIZE); |
84 | else | 83 | else |
85 | save_context_stack(trace, &trace->skip, sp, | 84 | save_context_stack(trace, &trace->skip, new_sp, |
86 | S390_lowcore.thread_info, | 85 | S390_lowcore.thread_info, |
87 | S390_lowcore.thread_info + THREAD_SIZE); | 86 | S390_lowcore.thread_info + THREAD_SIZE); |
88 | return; | 87 | return; |
diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c index 1d7d3938b2b1..21baaf5496d6 100644 --- a/arch/s390/kernel/vtime.c +++ b/arch/s390/kernel/vtime.c | |||
@@ -209,11 +209,11 @@ static void list_add_sorted(struct vtimer_list *timer, struct list_head *head) | |||
209 | * Do the callback functions of expired vtimer events. | 209 | * Do the callback functions of expired vtimer events. |
210 | * Called from within the interrupt handler. | 210 | * Called from within the interrupt handler. |
211 | */ | 211 | */ |
212 | static void do_callbacks(struct list_head *cb_list, struct pt_regs *regs) | 212 | static void do_callbacks(struct list_head *cb_list) |
213 | { | 213 | { |
214 | struct vtimer_queue *vt_list; | 214 | struct vtimer_queue *vt_list; |
215 | struct vtimer_list *event, *tmp; | 215 | struct vtimer_list *event, *tmp; |
216 | void (*fn)(unsigned long, struct pt_regs*); | 216 | void (*fn)(unsigned long); |
217 | unsigned long data; | 217 | unsigned long data; |
218 | 218 | ||
219 | if (list_empty(cb_list)) | 219 | if (list_empty(cb_list)) |
@@ -224,7 +224,7 @@ static void do_callbacks(struct list_head *cb_list, struct pt_regs *regs) | |||
224 | list_for_each_entry_safe(event, tmp, cb_list, entry) { | 224 | list_for_each_entry_safe(event, tmp, cb_list, entry) { |
225 | fn = event->function; | 225 | fn = event->function; |
226 | data = event->data; | 226 | data = event->data; |
227 | fn(data, regs); | 227 | fn(data); |
228 | 228 | ||
229 | if (!event->interval) | 229 | if (!event->interval) |
230 | /* delete one shot timer */ | 230 | /* delete one shot timer */ |
@@ -275,7 +275,7 @@ static void do_cpu_timer_interrupt(__u16 error_code) | |||
275 | list_move_tail(&event->entry, &cb_list); | 275 | list_move_tail(&event->entry, &cb_list); |
276 | } | 276 | } |
277 | spin_unlock(&vt_list->lock); | 277 | spin_unlock(&vt_list->lock); |
278 | do_callbacks(&cb_list, get_irq_regs()); | 278 | do_callbacks(&cb_list); |
279 | 279 | ||
280 | /* next event is first in list */ | 280 | /* next event is first in list */ |
281 | spin_lock(&vt_list->lock); | 281 | spin_lock(&vt_list->lock); |