Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[S390] irq change build fixes.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>

authored by

Heiko Carstens and committed by
Martin Schwidefsky
5a489b98 7e8ae7bf

+36 -24
+6 -3
arch/s390/kernel/s390_ext.c
··· 16 16 17 17 #include <asm/lowcore.h> 18 18 #include <asm/s390_ext.h> 19 + #include <asm/irq_regs.h> 19 20 #include <asm/irq.h> 20 21 21 22 /* ··· 115 114 { 116 115 ext_int_info_t *p; 117 116 int index; 117 + struct pt_regs *old_regs; 118 118 119 119 irq_enter(); 120 + old_regs = set_irq_regs(regs); 120 121 asm volatile ("mc 0,0"); 121 122 if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer) 122 123 /** 123 124 * Make sure that the i/o interrupt did not "overtake" 124 125 * the last HZ timer interrupt. 125 126 */ 126 - account_ticks(regs); 127 + account_ticks(); 127 128 kstat_cpu(smp_processor_id()).irqs[EXTERNAL_INTERRUPT]++; 128 129 index = ext_hash(code); 129 130 for (p = ext_int_hash[index]; p; p = p->next) { 130 131 if (likely(p->code == code)) { 131 132 if (likely(p->handler)) 132 - p->handler(regs, code); 133 + p->handler(code); 133 134 } 134 135 } 136 + set_irq_regs(old_regs); 135 137 irq_exit(); 136 138 } 137 139 138 140 EXPORT_SYMBOL(register_external_interrupt); 139 141 EXPORT_SYMBOL(unregister_external_interrupt); 140 -
+1 -1
arch/s390/kernel/smp.c
··· 339 339 * cpus are handled. 340 340 */ 341 341 342 - void do_ext_call_interrupt(struct pt_regs *regs, __u16 code) 342 + void do_ext_call_interrupt(__u16 code) 343 343 { 344 344 unsigned long bits; 345 345
+9 -6
arch/s390/kernel/time.c
··· 34 34 #include <asm/s390_ext.h> 35 35 #include <asm/div64.h> 36 36 #include <asm/irq.h> 37 + #include <asm/irq_regs.h> 37 38 #include <asm/timer.h> 38 39 39 40 /* change this if you have some constant time drift */ ··· 151 150 152 151 153 152 #ifdef CONFIG_PROFILING 154 - #define s390_do_profile(regs) profile_tick(CPU_PROFILING, regs) 153 + #define s390_do_profile() profile_tick(CPU_PROFILING) 155 154 #else 156 - #define s390_do_profile(regs) do { ; } while(0) 155 + #define s390_do_profile() do { ; } while(0) 157 156 #endif /* CONFIG_PROFILING */ 158 157 159 158 ··· 161 160 * timer_interrupt() needs to keep up the real-time clock, 162 161 * as well as call the "do_timer()" routine every clocktick 163 162 */ 164 - void account_ticks(struct pt_regs *regs) 163 + void account_ticks(void) 165 164 { 166 165 __u64 tmp; 167 166 __u32 ticks; ··· 222 221 account_tick_vtime(current); 223 222 #else 224 223 while (ticks--) 225 - update_process_times(user_mode(regs)); 224 + update_process_times(user_mode(get_irq_regs())); 226 225 #endif 227 226 228 - s390_do_profile(regs); 227 + s390_do_profile(); 229 228 } 230 229 231 230 #ifdef CONFIG_NO_IDLE_HZ ··· 286 285 */ 287 286 static inline void start_hz_timer(void) 288 287 { 288 + BUG_ON(!in_interrupt()); 289 + 289 290 if (!cpu_isset(smp_processor_id(), nohz_cpu_mask)) 290 291 return; 291 - account_ticks(task_pt_regs(current)); 292 + account_ticks(); 292 293 cpu_clear(smp_processor_id(), nohz_cpu_mask); 293 294 } 294 295
+1 -1
arch/s390/kernel/traps.c
··· 61 61 #ifdef CONFIG_PFAULT 62 62 extern int pfault_init(void); 63 63 extern void pfault_fini(void); 64 - extern void pfault_interrupt(struct pt_regs *regs, __u16 error_code); 64 + extern void pfault_interrupt(__u16 error_code); 65 65 static ext_int_info_t ext_int_pfault; 66 66 #endif 67 67 extern pgm_check_handler_t do_monitor_call;
+3 -2
arch/s390/kernel/vtime.c
··· 22 22 23 23 #include <asm/s390_ext.h> 24 24 #include <asm/timer.h> 25 + #include <asm/irq_regs.h> 25 26 26 27 static ext_int_info_t ext_int_info_timer; 27 28 DEFINE_PER_CPU(struct vtimer_queue, virt_cpu_timer); ··· 242 241 /* 243 242 * Handler for the virtual CPU timer. 244 243 */ 245 - static void do_cpu_timer_interrupt(struct pt_regs *regs, __u16 error_code) 244 + static void do_cpu_timer_interrupt(__u16 error_code) 246 245 { 247 246 int cpu; 248 247 __u64 next, delta; ··· 275 274 list_move_tail(&event->entry, &cb_list); 276 275 } 277 276 spin_unlock(&vt_list->lock); 278 - do_callbacks(&cb_list, regs); 277 + do_callbacks(&cb_list, get_irq_regs()); 279 278 280 279 /* next event is first in list */ 281 280 spin_lock(&vt_list->lock);
+1 -1
arch/s390/mm/fault.c
··· 451 451 } 452 452 453 453 asmlinkage void 454 - pfault_interrupt(struct pt_regs *regs, __u16 error_code) 454 + pfault_interrupt(__u16 error_code) 455 455 { 456 456 struct task_struct *tsk; 457 457 __u16 subcode;
+1 -1
drivers/s390/block/dasd_diag.c
··· 218 218 219 219 /* Handle external interruption. */ 220 220 static void 221 - dasd_ext_handler(struct pt_regs *regs, __u16 code) 221 + dasd_ext_handler(__u16 code) 222 222 { 223 223 struct dasd_ccw_req *cqr, *next; 224 224 struct dasd_device *device;
+1 -1
drivers/s390/char/ctrlchar.c
··· 20 20 static void 21 21 ctrlchar_handle_sysrq(void *tty) 22 22 { 23 - handle_sysrq(ctrlchar_sysrq_key, NULL, (struct tty_struct *) tty); 23 + handle_sysrq(ctrlchar_sysrq_key, (struct tty_struct *) tty); 24 24 } 25 25 26 26 static DECLARE_WORK(ctrlchar_work, ctrlchar_handle_sysrq, NULL);
+1 -1
drivers/s390/char/keyboard.c
··· 304 304 if (kbd->sysrq) { 305 305 if (kbd->sysrq == K(KT_LATIN, '-')) { 306 306 kbd->sysrq = 0; 307 - handle_sysrq(value, NULL, kbd->tty); 307 + handle_sysrq(value, kbd->tty); 308 308 return; 309 309 } 310 310 if (value == '-') {
+2 -2
drivers/s390/char/sclp.c
··· 324 324 * Prepare read event data request if necessary. Start processing of next 325 325 * request on queue. */ 326 326 static void 327 - sclp_interrupt_handler(struct pt_regs *regs, __u16 code) 327 + sclp_interrupt_handler(__u16 code) 328 328 { 329 329 struct sclp_req *req; 330 330 u32 finished_sccb; ··· 743 743 /* Handler for external interruption used during initialization. Modify 744 744 * request state to done. */ 745 745 static void 746 - sclp_check_handler(struct pt_regs *regs, __u16 code) 746 + sclp_check_handler(__u16 code) 747 747 { 748 748 u32 finished_sccb; 749 749
+5 -1
drivers/s390/cio/cio.c
··· 19 19 #include <asm/cio.h> 20 20 #include <asm/delay.h> 21 21 #include <asm/irq.h> 22 + #include <asm/irq_regs.h> 22 23 #include <asm/setup.h> 23 24 #include "airq.h" 24 25 #include "cio.h" ··· 607 606 struct tpi_info *tpi_info; 608 607 struct subchannel *sch; 609 608 struct irb *irb; 609 + struct pt_regs *old_regs; 610 610 611 611 irq_enter (); 612 + old_regs = set_irq_regs(regs); 612 613 asm volatile ("mc 0,0"); 613 614 if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer) 614 615 /** 615 616 * Make sure that the i/o interrupt did not "overtake" 616 617 * the last HZ timer interrupt. 617 618 */ 618 - account_ticks(regs); 619 + account_ticks(); 619 620 /* 620 621 * Get interrupt information from lowcore 621 622 */ ··· 655 652 * out of the sie which costs more cycles than it saves. 656 653 */ 657 654 } while (!MACHINE_IS_VM && tpi (NULL) != 0); 655 + set_irq_regs(old_regs); 658 656 irq_exit (); 659 657 } 660 658
+2 -2
drivers/s390/net/iucv.c
··· 116 116 *Internal function prototypes 117 117 */ 118 118 static void iucv_tasklet_handler(unsigned long); 119 - static void iucv_irq_handler(struct pt_regs *, __u16); 119 + static void iucv_irq_handler(__u16); 120 120 121 121 static DECLARE_TASKLET(iucv_tasklet,iucv_tasklet_handler,0); 122 122 ··· 2251 2251 * Places the interrupt buffer on a queue and schedules iucv_tasklet_handler(). 2252 2252 */ 2253 2253 static void 2254 - iucv_irq_handler(struct pt_regs *regs, __u16 code) 2254 + iucv_irq_handler(__u16 code) 2255 2255 { 2256 2256 iucv_irqdata *irqdata; 2257 2257
+1 -1
include/asm-s390/hardirq.h
··· 32 32 33 33 #define HARDIRQ_BITS 8 34 34 35 - extern void account_ticks(struct pt_regs *); 35 + extern void account_ticks(void); 36 36 37 37 #endif /* __ASM_HARDIRQ_H */
+1
include/asm-s390/irq_regs.h
··· 1 + #include <asm-generic/irq_regs.h>
+1 -1
include/asm-s390/s390_ext.h
··· 10 10 * Martin Schwidefsky (schwidefsky@de.ibm.com) 11 11 */ 12 12 13 - typedef void (*ext_int_handler_t)(struct pt_regs *regs, __u16 code); 13 + typedef void (*ext_int_handler_t)(__u16 code); 14 14 15 15 /* 16 16 * Warning: if you change ext_int_info_t you have to change the