Commit fbd32c90 authored by Martin Schwidefsky's avatar Martin Schwidefsky Committed by Linus Torvalds

[PATCH] s390 update (17/27): beautification.

Remove bogus sanity checks and code cleanup.
parent 57e19bfe
...@@ -302,15 +302,15 @@ void dump_thread(struct pt_regs * regs, struct user * dump) ...@@ -302,15 +302,15 @@ void dump_thread(struct pt_regs * regs, struct user * dump)
dump->magic = CMAGIC; dump->magic = CMAGIC;
dump->start_code = 0; dump->start_code = 0;
dump->start_stack = regs->gprs[15] & ~(PAGE_SIZE - 1); dump->start_stack = regs->gprs[15] & ~(PAGE_SIZE - 1);
dump->u_tsize = ((unsigned long) current->mm->end_code) >> PAGE_SHIFT; dump->u_tsize = current->mm->end_code >> PAGE_SHIFT;
dump->u_dsize = ((unsigned long) (current->mm->brk + (PAGE_SIZE-1))) >> PAGE_SHIFT; dump->u_dsize = (current->mm->brk + PAGE_SIZE - 1) >> PAGE_SHIFT;
dump->u_dsize -= dump->u_tsize; dump->u_dsize -= dump->u_tsize;
dump->u_ssize = 0; dump->u_ssize = 0;
if (dump->start_stack < TASK_SIZE) if (dump->start_stack < TASK_SIZE)
dump->u_ssize = ((unsigned long) (TASK_SIZE - dump->start_stack)) >> PAGE_SHIFT; dump->u_ssize = (TASK_SIZE - dump->start_stack) >> PAGE_SHIFT;
memcpy(&dump->regs.gprs[0],regs,sizeof(s390_regs)); memcpy(&dump->regs, regs, sizeof(s390_regs));
dump_fpu (regs, &dump->regs.fp_regs); dump_fpu (regs, &dump->regs.fp_regs);
memcpy(&dump->regs.per_info,&current->thread.per_info,sizeof(per_struct)); dump->regs.per_info = current->thread.per_info;
} }
/* /*
......
...@@ -526,7 +526,10 @@ static int show_cpuinfo(struct seq_file *m, void *v) ...@@ -526,7 +526,10 @@ static int show_cpuinfo(struct seq_file *m, void *v)
(loops_per_jiffy/(5000/HZ))%100); (loops_per_jiffy/(5000/HZ))%100);
} }
if (cpu_online_map & (1 << n)) { if (cpu_online_map & (1 << n)) {
cpuinfo = &safe_get_cpu_lowcore(n)->cpu_data; if (smp_processor_id() == n)
cpuinfo = &S390_lowcore.cpu_data;
else
cpuinfo = &lowcore_ptr[n]->cpu_data;
seq_printf(m, "processor %li: " seq_printf(m, "processor %li: "
"version = %02X, " "version = %02X, "
"identification = %06X, " "identification = %06X, "
......
...@@ -173,7 +173,7 @@ static inline void do_store_status(void) ...@@ -173,7 +173,7 @@ static inline void do_store_status(void)
for (i = 0; i < NR_CPUS; i++) { for (i = 0; i < NR_CPUS; i++) {
if (!cpu_online(i) || smp_processor_id() == i) if (!cpu_online(i) || smp_processor_id() == i)
continue; continue;
low_core_addr = (unsigned long)get_cpu_lowcore(i); low_core_addr = (unsigned long) lowcore_ptr[i];
do { do {
rc = signal_processor_ps(&dummy, low_core_addr, i, rc = signal_processor_ps(&dummy, low_core_addr, i,
sigp_store_status_at_address); sigp_store_status_at_address);
...@@ -188,7 +188,7 @@ static inline void do_store_status(void) ...@@ -188,7 +188,7 @@ static inline void do_store_status(void)
void smp_send_stop(void) void smp_send_stop(void)
{ {
/* write magic number to zero page (absolute 0) */ /* write magic number to zero page (absolute 0) */
get_cpu_lowcore(smp_processor_id())->panic_magic = __PANIC_MAGIC; lowcore_ptr[smp_processor_id()]->panic_magic = __PANIC_MAGIC;
/* stop other processors. */ /* stop other processors. */
do_send_stop(); do_send_stop();
...@@ -296,7 +296,7 @@ void do_ext_call_interrupt(struct pt_regs *regs, __u16 code) ...@@ -296,7 +296,7 @@ void do_ext_call_interrupt(struct pt_regs *regs, __u16 code)
*/ */
static sigp_ccode smp_ext_bitcall(int cpu, ec_bit_sig sig) static sigp_ccode smp_ext_bitcall(int cpu, ec_bit_sig sig)
{ {
struct _lowcore *lowcore = get_cpu_lowcore(cpu); struct _lowcore *lowcore = lowcore_ptr[cpu];
sigp_ccode ccode; sigp_ccode ccode;
/* /*
...@@ -319,7 +319,7 @@ static void smp_ext_bitcall_others(ec_bit_sig sig) ...@@ -319,7 +319,7 @@ static void smp_ext_bitcall_others(ec_bit_sig sig)
for (i = 0; i < NR_CPUS; i++) { for (i = 0; i < NR_CPUS; i++) {
if (!cpu_online(i) || smp_processor_id() == i) if (!cpu_online(i) || smp_processor_id() == i)
continue; continue;
lowcore = get_cpu_lowcore(i); lowcore = lowcore_ptr[i];
/* /*
* Set signaling bit in lowcore of target cpu and kick it * Set signaling bit in lowcore of target cpu and kick it
*/ */
...@@ -519,7 +519,7 @@ int __cpu_up(unsigned int cpu) ...@@ -519,7 +519,7 @@ int __cpu_up(unsigned int cpu)
unhash_process(idle); unhash_process(idle);
cpu_lowcore = get_cpu_lowcore(cpu); cpu_lowcore = lowcore_ptr[cpu];
cpu_lowcore->save_area[15] = idle->thread.ksp; cpu_lowcore->save_area[15] = idle->thread.ksp;
cpu_lowcore->kernel_stack = (__u32) idle->thread_info + (2*PAGE_SIZE); cpu_lowcore->kernel_stack = (__u32) idle->thread_info + (2*PAGE_SIZE);
__asm__ __volatile__("la 1,%0\n\t" __asm__ __volatile__("la 1,%0\n\t"
...@@ -555,7 +555,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus) ...@@ -555,7 +555,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
/* /*
* Initialize prefix pages and stacks for all possible cpus * Initialize prefix pages and stacks for all possible cpus
*/ */
print_cpu_info(&safe_get_cpu_lowcore(0)->cpu_data); print_cpu_info(&S390_lowcore.cpu_data);
for(i = 0; i < NR_CPUS; i++) { for(i = 0; i < NR_CPUS; i++) {
if (!cpu_possible(i)) if (!cpu_possible(i))
......
...@@ -233,16 +233,18 @@ extern inline void do_exception(struct pt_regs *regs, unsigned long error_code) ...@@ -233,16 +233,18 @@ extern inline void do_exception(struct pt_regs *regs, unsigned long error_code)
* the fault. * the fault.
*/ */
switch (handle_mm_fault(mm, vma, address, error_code == 4)) { switch (handle_mm_fault(mm, vma, address, error_code == 4)) {
case 1: case VM_FAULT_MINOR:
tsk->min_flt++; tsk->min_flt++;
break; break;
case 2: case VM_FAULT_MAJOR:
tsk->maj_flt++; tsk->maj_flt++;
break; break;
case 0: case VM_FAULT_SIGBUS:
goto do_sigbus; goto do_sigbus;
default: case VM_FAULT_OOM:
goto out_of_memory; goto out_of_memory;
default:
BUG();
} }
up_read(&mm->mmap_sem); up_read(&mm->mmap_sem);
......
...@@ -292,15 +292,15 @@ void dump_thread(struct pt_regs * regs, struct user * dump) ...@@ -292,15 +292,15 @@ void dump_thread(struct pt_regs * regs, struct user * dump)
dump->magic = CMAGIC; dump->magic = CMAGIC;
dump->start_code = 0; dump->start_code = 0;
dump->start_stack = regs->gprs[15] & ~(PAGE_SIZE - 1); dump->start_stack = regs->gprs[15] & ~(PAGE_SIZE - 1);
dump->u_tsize = ((unsigned long) current->mm->end_code) >> PAGE_SHIFT; dump->u_tsize = current->mm->end_code >> PAGE_SHIFT;
dump->u_dsize = ((unsigned long) (current->mm->brk + (PAGE_SIZE-1))) >> PAGE_SHIFT; dump->u_dsize = (current->mm->brk + PAGE_SIZE - 1) >> PAGE_SHIFT;
dump->u_dsize -= dump->u_tsize; dump->u_dsize -= dump->u_tsize;
dump->u_ssize = 0; dump->u_ssize = 0;
if (dump->start_stack < TASK_SIZE) if (dump->start_stack < TASK_SIZE)
dump->u_ssize = ((unsigned long) (TASK_SIZE - dump->start_stack)) >> PAGE_SHIFT; dump->u_ssize = (TASK_SIZE - dump->start_stack) >> PAGE_SHIFT;
memcpy(&dump->regs.gprs[0],regs,sizeof(s390_regs)); memcpy(&dump->regs, regs, sizeof(s390_regs));
dump_fpu (regs, &dump->regs.fp_regs); dump_fpu (regs, &dump->regs.fp_regs);
memcpy(&dump->regs.per_info,&current->thread.per_info,sizeof(per_struct)); dump->regs.per_info = current->thread.per_info;
} }
/* /*
......
...@@ -516,7 +516,10 @@ static int show_cpuinfo(struct seq_file *m, void *v) ...@@ -516,7 +516,10 @@ static int show_cpuinfo(struct seq_file *m, void *v)
(loops_per_jiffy/(5000/HZ))%100); (loops_per_jiffy/(5000/HZ))%100);
} }
if (cpu_online_map & (1 << n)) { if (cpu_online_map & (1 << n)) {
cpuinfo = &safe_get_cpu_lowcore(n)->cpu_data; if (smp_processor_id() == n)
cpuinfo = &S390_lowcore.cpu_data;
else
cpuinfo = &lowcore_ptr[n]->cpu_data;
seq_printf(m, "processor %li: " seq_printf(m, "processor %li: "
"version = %02X, " "version = %02X, "
"identification = %06X, " "identification = %06X, "
......
...@@ -172,7 +172,7 @@ static inline void do_store_status(void) ...@@ -172,7 +172,7 @@ static inline void do_store_status(void)
for (i = 0; i < NR_CPUS; i++) { for (i = 0; i < NR_CPUS; i++) {
if (!cpu_online(i) || smp_processor_id() == i) if (!cpu_online(i) || smp_processor_id() == i)
continue; continue;
low_core_addr = (unsigned long)get_cpu_lowcore(i); low_core_addr = (unsigned long) lowcore_ptr[i];
do { do {
rc = signal_processor_ps(&dummy, low_core_addr, i, rc = signal_processor_ps(&dummy, low_core_addr, i,
sigp_store_status_at_address); sigp_store_status_at_address);
...@@ -187,7 +187,7 @@ static inline void do_store_status(void) ...@@ -187,7 +187,7 @@ static inline void do_store_status(void)
void smp_send_stop(void) void smp_send_stop(void)
{ {
/* write magic number to zero page (absolute 0) */ /* write magic number to zero page (absolute 0) */
get_cpu_lowcore(smp_processor_id())->panic_magic = __PANIC_MAGIC; lowcore_ptr[smp_processor_id()]->panic_magic = __PANIC_MAGIC;
/* stop other processors. */ /* stop other processors. */
do_send_stop(); do_send_stop();
...@@ -298,7 +298,7 @@ static sigp_ccode smp_ext_bitcall(int cpu, ec_bit_sig sig) ...@@ -298,7 +298,7 @@ static sigp_ccode smp_ext_bitcall(int cpu, ec_bit_sig sig)
/* /*
* Set signaling bit in lowcore of target cpu and kick it * Set signaling bit in lowcore of target cpu and kick it
*/ */
set_bit(sig, &(get_cpu_lowcore(cpu)->ext_call_fast)); set_bit(sig, &lowcore_ptr[cpu]->ext_call_fast);
ccode = signal_processor(cpu, sigp_external_call); ccode = signal_processor(cpu, sigp_external_call);
return ccode; return ccode;
} }
...@@ -317,7 +317,7 @@ static void smp_ext_bitcall_others(ec_bit_sig sig) ...@@ -317,7 +317,7 @@ static void smp_ext_bitcall_others(ec_bit_sig sig)
/* /*
* Set signaling bit in lowcore of target cpu and kick it * Set signaling bit in lowcore of target cpu and kick it
*/ */
set_bit(sig, &(get_cpu_lowcore(i)->ext_call_fast)); set_bit(sig, &lowcore_ptr[i]->ext_call_fast);
while (signal_processor(i, sigp_external_call) == sigp_busy) while (signal_processor(i, sigp_external_call) == sigp_busy)
udelay(10); udelay(10);
} }
...@@ -499,7 +499,7 @@ int __cpu_up(unsigned int cpu) ...@@ -499,7 +499,7 @@ int __cpu_up(unsigned int cpu)
unhash_process(idle); unhash_process(idle);
cpu_lowcore = get_cpu_lowcore(cpu); cpu_lowcore = lowcore_ptr[cpu];
cpu_lowcore->save_area[15] = idle->thread.ksp; cpu_lowcore->save_area[15] = idle->thread.ksp;
cpu_lowcore->kernel_stack = (__u64) idle->thread_info + (4*PAGE_SIZE); cpu_lowcore->kernel_stack = (__u64) idle->thread_info + (4*PAGE_SIZE);
__asm__ __volatile__("la 1,%0\n\t" __asm__ __volatile__("la 1,%0\n\t"
...@@ -535,7 +535,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus) ...@@ -535,7 +535,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
/* /*
* Initialize prefix pages and stacks for all possible cpus * Initialize prefix pages and stacks for all possible cpus
*/ */
print_cpu_info(&safe_get_cpu_lowcore(0)->cpu_data); print_cpu_info(&S390_lowcore.cpu_data);
for(i = 0; i < NR_CPUS; i++) { for(i = 0; i < NR_CPUS; i++) {
if (!cpu_possible(i)) if (!cpu_possible(i))
......
...@@ -233,16 +233,18 @@ extern inline void do_exception(struct pt_regs *regs, unsigned long error_code) ...@@ -233,16 +233,18 @@ extern inline void do_exception(struct pt_regs *regs, unsigned long error_code)
* the fault. * the fault.
*/ */
switch (handle_mm_fault(mm, vma, address, error_code == 4)) { switch (handle_mm_fault(mm, vma, address, error_code == 4)) {
case 1: case VM_FAULT_MINOR:
tsk->min_flt++; tsk->min_flt++;
break; break;
case 2: case VM_FAULT_MAJOR:
tsk->maj_flt++; tsk->maj_flt++;
break; break;
case 0: case VM_FAULT_SIGBUS:
goto do_sigbus; goto do_sigbus;
default: case VM_FAULT_OOM:
goto out_of_memory; goto out_of_memory;
default:
BUG();
} }
up_read(&mm->mmap_sem); up_read(&mm->mmap_sem);
......
...@@ -2215,8 +2215,6 @@ hwc_do_interrupt (u32 ext_int_param) ...@@ -2215,8 +2215,6 @@ hwc_do_interrupt (u32 ext_int_param)
void void
hwc_interrupt_handler (struct pt_regs *regs, __u16 code) hwc_interrupt_handler (struct pt_regs *regs, __u16 code)
{ {
int cpu = smp_processor_id ();
u32 ext_int_param = hwc_ext_int_param (); u32 ext_int_param = hwc_ext_int_param ();
irq_enter (); irq_enter ();
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* S/390 common I/O routines -- special interrupt registration * S/390 common I/O routines -- special interrupt registration
* currently used only by qdio * currently used only by qdio
* *
* $Revision: 1.2 $ * $Revision: 1.3 $
* *
* Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH, * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH,
* IBM Corporation * IBM Corporation
...@@ -60,7 +60,7 @@ s390_register_adapter_interrupt (adapter_int_handler_t handler) ...@@ -60,7 +60,7 @@ s390_register_adapter_interrupt (adapter_int_handler_t handler)
sprintf (dbf_txt, "ret:%d", ret); sprintf (dbf_txt, "ret:%d", ret);
CIO_TRACE_EVENT (4, dbf_txt); CIO_TRACE_EVENT (4, dbf_txt);
return (ret); return ret;
} }
int int
...@@ -85,7 +85,7 @@ s390_unregister_adapter_interrupt (adapter_int_handler_t handler) ...@@ -85,7 +85,7 @@ s390_unregister_adapter_interrupt (adapter_int_handler_t handler)
sprintf (dbf_txt, "ret:%d", ret); sprintf (dbf_txt, "ret:%d", ret);
CIO_TRACE_EVENT (4, dbf_txt); CIO_TRACE_EVENT (4, dbf_txt);
return (ret); return ret;
} }
void void
......
/* /*
* drivers/s390/cio/blacklist.c * drivers/s390/cio/blacklist.c
* S/390 common I/O routines -- blacklisting of specific devices * S/390 common I/O routines -- blacklisting of specific devices
* $Revision: 1.5 $ * $Revision: 1.7 $
* *
* Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH, * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH,
* IBM Corporation * IBM Corporation
...@@ -134,7 +134,7 @@ __setup ("cio_ignore=", blacklist_setup); ...@@ -134,7 +134,7 @@ __setup ("cio_ignore=", blacklist_setup);
int int
is_blacklisted (int devno) is_blacklisted (int devno)
{ {
return (test_bit (devno, &bl_dev)); return test_bit (devno, &bl_dev);
} }
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
...@@ -243,10 +243,10 @@ static int cio_ignore_write (struct file *file, const char *user_buf, ...@@ -243,10 +243,10 @@ static int cio_ignore_write (struct file *file, const char *user_buf,
return -EFAULT; return -EFAULT;
} }
buf[user_len] = '\0'; buf[user_len] = '\0';
#if 0
CIO_DEBUG(KERN_DEBUG, 2, CIO_DEBUG(KERN_DEBUG, 2,
"/proc/cio_ignore: '%s'\n", buf); "/proc/cio_ignore: '%s'\n", buf);
#endif
blacklist_parse_proc_parameters (buf); blacklist_parse_proc_parameters (buf);
vfree (buf); vfree (buf);
......
/* /*
* drivers/s390/cio/cio.c * drivers/s390/cio/cio.c
* S/390 common I/O routines -- low level i/o calls * S/390 common I/O routines -- low level i/o calls
* $Revision: 1.15 $ * $Revision: 1.25 $
* *
* Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH, * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH,
* IBM Corporation * IBM Corporation
...@@ -52,7 +52,7 @@ s390_displayhex (void *ptr, s32 cnt, int level) ...@@ -52,7 +52,7 @@ s390_displayhex (void *ptr, s32 cnt, int level)
} }
DBG ("%s\n", buffer); DBG ("%s\n", buffer);
if (cio_debug_initialized) if (cio_debug_initialized)
debug_text_event (cio_debug_trace_id, level, buffer); debug_text_event (cio_debug_msg_id, level, buffer);
} }
...@@ -433,8 +433,6 @@ s390_start_IO (int irq, /* IRQ */ ...@@ -433,8 +433,6 @@ s390_start_IO (int irq, /* IRQ */
int ret = 0; int ret = 0;
char dbf_txt[15]; char dbf_txt[15];
SANITY_CHECK (irq);
/* /*
* The flag usage is mutal exclusive ... * The flag usage is mutal exclusive ...
*/ */
...@@ -456,7 +454,7 @@ s390_start_IO (int irq, /* IRQ */ ...@@ -456,7 +454,7 @@ s390_start_IO (int irq, /* IRQ */
ret = enable_cpu_sync_isc (irq); ret = enable_cpu_sync_isc (irq);
if (ret) if (ret)
return (ret); return ret;
} }
...@@ -556,7 +554,7 @@ s390_start_IO (int irq, /* IRQ */ ...@@ -556,7 +554,7 @@ s390_start_IO (int irq, /* IRQ */
if (flag & DOIO_DONT_CALL_INTHDLR) if (flag & DOIO_DONT_CALL_INTHDLR)
ioinfo[irq]->ui.flags.repnone = 0; ioinfo[irq]->ui.flags.repnone = 0;
return (ret); return ret;
} }
int int
...@@ -618,7 +616,7 @@ do_IO (int irq, /* IRQ */ ...@@ -618,7 +616,7 @@ do_IO (int irq, /* IRQ */
} }
return (ret); return ret;
} }
...@@ -677,7 +675,7 @@ resume_IO (int irq) ...@@ -677,7 +675,7 @@ resume_IO (int irq)
} }
return (ret); return ret;
} }
/* /*
...@@ -720,7 +718,7 @@ halt_IO (int irq, unsigned long user_intparm, unsigned long flag) ...@@ -720,7 +718,7 @@ halt_IO (int irq, unsigned long user_intparm, unsigned long flag)
ret = enable_cpu_sync_isc (irq); ret = enable_cpu_sync_isc (irq);
if (ret) if (ret)
return (ret); return ret;
} }
/* /*
...@@ -784,7 +782,7 @@ halt_IO (int irq, unsigned long user_intparm, unsigned long flag) ...@@ -784,7 +782,7 @@ halt_IO (int irq, unsigned long user_intparm, unsigned long flag)
if (flag & DOIO_WAIT_FOR_INTERRUPT) if (flag & DOIO_WAIT_FOR_INTERRUPT)
disable_cpu_sync_isc (irq); disable_cpu_sync_isc (irq);
return (ret); return ret;
} }
/* /*
...@@ -803,7 +801,7 @@ clear_IO (int irq, unsigned long user_intparm, unsigned long flag) ...@@ -803,7 +801,7 @@ clear_IO (int irq, unsigned long user_intparm, unsigned long flag)
SANITY_CHECK (irq); SANITY_CHECK (irq);
if (ioinfo[irq] == INVALID_STORAGE_AREA) if (ioinfo[irq] == INVALID_STORAGE_AREA)
return (-ENODEV); return -ENODEV;
/* /*
* we only allow for clear_IO if the device has an I/O handler associated * we only allow for clear_IO if the device has an I/O handler associated
...@@ -829,7 +827,7 @@ clear_IO (int irq, unsigned long user_intparm, unsigned long flag) ...@@ -829,7 +827,7 @@ clear_IO (int irq, unsigned long user_intparm, unsigned long flag)
ret = enable_cpu_sync_isc (irq); ret = enable_cpu_sync_isc (irq);
if (ret) if (ret)
return (ret); return ret;
} }
/* /*
...@@ -891,7 +889,7 @@ clear_IO (int irq, unsigned long user_intparm, unsigned long flag) ...@@ -891,7 +889,7 @@ clear_IO (int irq, unsigned long user_intparm, unsigned long flag)
if (flag & DOIO_WAIT_FOR_INTERRUPT) if (flag & DOIO_WAIT_FOR_INTERRUPT)
disable_cpu_sync_isc (irq); disable_cpu_sync_isc (irq);
return (ret); return ret;
} }
/* /*
...@@ -908,8 +906,6 @@ cancel_IO (int irq) ...@@ -908,8 +906,6 @@ cancel_IO (int irq)
char dbf_txt[15]; char dbf_txt[15];
int ret = 0; int ret = 0;
SANITY_CHECK (irq);
sprintf (dbf_txt, "cancelIO%x", irq); sprintf (dbf_txt, "cancelIO%x", irq);
CIO_TRACE_EVENT (2, dbf_txt); CIO_TRACE_EVENT (2, dbf_txt);
...@@ -955,7 +951,6 @@ do_IRQ (struct pt_regs regs) ...@@ -955,7 +951,6 @@ do_IRQ (struct pt_regs regs)
* Get interrupt info from lowcore * Get interrupt info from lowcore
*/ */
volatile tpi_info_t *tpi_info = (tpi_info_t *) (__LC_SUBCHANNEL_ID); volatile tpi_info_t *tpi_info = (tpi_info_t *) (__LC_SUBCHANNEL_ID);
int cpu = smp_processor_id ();
/* /*
* take fast exit if CPU is in sync. I/O state * take fast exit if CPU is in sync. I/O state
...@@ -1183,7 +1178,7 @@ s390_process_IRQ_normal(unsigned int irq, ...@@ -1183,7 +1178,7 @@ s390_process_IRQ_normal(unsigned int irq,
* take fast exit if no handler is available * take fast exit if no handler is available
*/ */
if (!ioinfo[irq]->ui.flags.ready) if (!ioinfo[irq]->ui.flags.ready)
return (ending_status); return ending_status;
/* /*
* Check whether we must issue a SENSE CCW ourselves if there is no * Check whether we must issue a SENSE CCW ourselves if there is no
...@@ -1485,7 +1480,8 @@ s390_process_IRQ (unsigned int irq) ...@@ -1485,7 +1480,8 @@ s390_process_IRQ (unsigned int irq)
s390_irq_count[cpu]++; s390_irq_count[cpu]++;
} }
sprintf (dbf_txt, "procIRQ%x", irq); CIO_TRACE_EVENT (3, "procIRQ");
sprintf (dbf_txt, "%x", irq);
CIO_TRACE_EVENT (3, dbf_txt); CIO_TRACE_EVENT (3, dbf_txt);
if (ioinfo[irq] == INVALID_STORAGE_AREA) { if (ioinfo[irq] == INVALID_STORAGE_AREA) {
...@@ -1497,14 +1493,8 @@ s390_process_IRQ (unsigned int irq) ...@@ -1497,14 +1493,8 @@ s390_process_IRQ (unsigned int irq)
"for non-initialized subchannel!\n", irq); "for non-initialized subchannel!\n", irq);
tsch (irq, &p_init_irb); tsch (irq, &p_init_irb);
return (1);
}
if (ioinfo[irq]->st) {
/* can't be */
BUG();
return 1; return 1;
} }
dp = &ioinfo[irq]->devstat; dp = &ioinfo[irq]->devstat;
...@@ -1715,8 +1705,6 @@ set_cons_dev (int irq) ...@@ -1715,8 +1705,6 @@ set_cons_dev (int irq)
int rc = 0; int rc = 0;
char dbf_txt[15]; char dbf_txt[15];
SANITY_CHECK (irq);
if (cons_dev != -1) if (cons_dev != -1)
return -EBUSY; return -EBUSY;
...@@ -1750,7 +1738,7 @@ set_cons_dev (int irq) ...@@ -1750,7 +1738,7 @@ set_cons_dev (int irq)
} }
} }
return (rc); return rc;
} }
int int
...@@ -1801,7 +1789,7 @@ wait_cons_dev (int irq) ...@@ -1801,7 +1789,7 @@ wait_cons_dev (int irq)
} }
return (rc); return rc;
} }
/* /*
......
...@@ -3,9 +3,9 @@ ...@@ -3,9 +3,9 @@
#define SANITY_CHECK(irq) do { \ #define SANITY_CHECK(irq) do { \
if (irq > highest_subchannel || irq < 0) \ if (irq > highest_subchannel || irq < 0) \
return (-ENODEV); \ return -ENODEV; \
if (ioinfo[irq] == INVALID_STORAGE_AREA) \ if (ioinfo[irq] == INVALID_STORAGE_AREA) \
return (-ENODEV); \ return -ENODEV; \
if (ioinfo[irq]->st) \ if (ioinfo[irq]->st) \
return -ENODEV; \ return -ENODEV; \
} while(0) } while(0)
...@@ -20,14 +20,14 @@ if (irq > highest_subchannel || irq < 0) \ ...@@ -20,14 +20,14 @@ if (irq > highest_subchannel || irq < 0) \
#define CIO_MSG_EVENT(imp, args...) do { \ #define CIO_MSG_EVENT(imp, args...) do { \
if (cio_debug_initialized) \ if (cio_debug_initialized) \
debug_sprintf_event(cio_debug_msg_id, \ debug_sprintf_event(cio_debug_msg_id, \
imp, \ imp , \
##args); \ ##args); \
} while (0) } while (0)
#define CIO_CRW_EVENT(imp, args...) do { \ #define CIO_CRW_EVENT(imp, args...) do { \
if (cio_debug_initialized) \ if (cio_debug_initialized) \
debug_sprintf_event(cio_debug_crw_id, \ debug_sprintf_event(cio_debug_crw_id, \
imp, \ imp , \
##args); \ ##args); \
} while (0) } while (0)
......
/* /*
* drivers/s390/cio/ioinfo.c * drivers/s390/cio/ioinfo.c
* S/390 common I/O routines -- the ioinfo structure * S/390 common I/O routines -- the ioinfo structure
* $Revision: 1.3 $ * $Revision: 1.4 $
* *
* Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH, * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH,
* IBM Corporation * IBM Corporation
...@@ -102,12 +102,12 @@ get_irq_next (int irq) ...@@ -102,12 +102,12 @@ get_irq_next (int irq)
int int
get_dev_info_by_irq (int irq, s390_dev_info_t * pdi) get_dev_info_by_irq (int irq, s390_dev_info_t * pdi)
{ {
if (irq > highest_subchannel || irq < 0) \ if (irq > highest_subchannel || irq < 0)
return (-ENODEV); \ return -ENODEV;
if (ioinfo[irq] == INVALID_STORAGE_AREA) \ if (ioinfo[irq] == INVALID_STORAGE_AREA)
return (-ENODEV); \ return -ENODEV;
if (ioinfo[irq]->st) \ if (ioinfo[irq]->st)
return -ENODEV; \ return -ENODEV;
if (pdi == NULL) if (pdi == NULL)
return -EINVAL; return -EINVAL;
...@@ -189,7 +189,7 @@ get_dev_info_by_devno (__u16 devno, s390_dev_info_t * pdi) ...@@ -189,7 +189,7 @@ get_dev_info_by_devno (__u16 devno, s390_dev_info_t * pdi)
} }
} }
return (rc); return rc;
} }
...@@ -211,7 +211,7 @@ get_irq_by_devno (__u16 devno) ...@@ -211,7 +211,7 @@ get_irq_by_devno (__u16 devno)
} }
} }
return (rc); return rc;
} }
unsigned int unsigned int
...@@ -235,7 +235,7 @@ get_devno_by_irq (int irq) ...@@ -235,7 +235,7 @@ get_devno_by_irq (int irq)
* defined who's device number isn't valid ... * defined who's device number isn't valid ...
*/ */
if (ioinfo[irq]->schib.pmcw.dnv) if (ioinfo[irq]->schib.pmcw.dnv)
return (ioinfo[irq]->schib.pmcw.dev); return ioinfo[irq]->schib.pmcw.dev;
else else
return -1; return -1;
} }
...@@ -258,9 +258,9 @@ int ...@@ -258,9 +258,9 @@ int
s390_set_private_data(int irq, void *data) s390_set_private_data(int irq, void *data)
{ {
if (irq > highest_subchannel || irq < 0) if (irq > highest_subchannel || irq < 0)
return (-ENODEV); return -ENODEV;
if (ioinfo[irq] == INVALID_STORAGE_AREA) if (ioinfo[irq] == INVALID_STORAGE_AREA)
return (-ENODEV); return -ENODEV;
if (ioinfo[irq]->st) if (ioinfo[irq]->st)
return -ENODEV; return -ENODEV;
ioinfo[irq]->private_data = data; ioinfo[irq]->private_data = data;
......
...@@ -253,8 +253,6 @@ enable_subchannel (unsigned int irq) ...@@ -253,8 +253,6 @@ enable_subchannel (unsigned int irq)
int retry = 5; int retry = 5;
char dbf_txt[15]; char dbf_txt[15];
SANITY_CHECK (irq);
sprintf (dbf_txt, "ensch%x", irq); sprintf (dbf_txt, "ensch%x", irq);
CIO_TRACE_EVENT (2, dbf_txt); CIO_TRACE_EVENT (2, dbf_txt);
...@@ -324,7 +322,7 @@ enable_subchannel (unsigned int irq) ...@@ -324,7 +322,7 @@ enable_subchannel (unsigned int irq)
sprintf (dbf_txt, "ret:%d", ret); sprintf (dbf_txt, "ret:%d", ret);
CIO_TRACE_EVENT (2, dbf_txt); CIO_TRACE_EVENT (2, dbf_txt);
return (ret); return ret;
} }
/* /*
...@@ -338,8 +336,6 @@ disable_subchannel (unsigned int irq) ...@@ -338,8 +336,6 @@ disable_subchannel (unsigned int irq)
int retry = 5; int retry = 5;
char dbf_txt[15]; char dbf_txt[15];
SANITY_CHECK (irq);
sprintf (dbf_txt, "dissch%x", irq); sprintf (dbf_txt, "dissch%x", irq);
CIO_TRACE_EVENT (2, dbf_txt); CIO_TRACE_EVENT (2, dbf_txt);
...@@ -427,7 +423,7 @@ disable_subchannel (unsigned int irq) ...@@ -427,7 +423,7 @@ disable_subchannel (unsigned int irq)
sprintf (dbf_txt, "ret:%d", ret); sprintf (dbf_txt, "ret:%d", ret);
CIO_TRACE_EVENT (2, dbf_txt); CIO_TRACE_EVENT (2, dbf_txt);
return (ret); return ret;
} }
/* FIXME: there must be a cleaner way to express what happens */ /* FIXME: there must be a cleaner way to express what happens */
......
...@@ -565,17 +565,13 @@ read_dev_chars (int irq, void **buffer, int length) ...@@ -565,17 +565,13 @@ read_dev_chars (int irq, void **buffer, int length)
char dbf_txt[15]; char dbf_txt[15];
if (!buffer || !length) { if (!buffer || !length)
return (-EINVAL); return -EINVAL;
}
SANITY_CHECK (irq); SANITY_CHECK (irq);
if (ioinfo[irq]->ui.flags.oper == 0) { if (ioinfo[irq]->ui.flags.oper == 0)
return (-ENODEV); return -ENODEV;
}
sprintf (dbf_txt, "rddevch%x", irq); sprintf (dbf_txt, "rddevch%x", irq);
CIO_TRACE_EVENT (4, dbf_txt); CIO_TRACE_EVENT (4, dbf_txt);
...@@ -687,11 +683,11 @@ read_conf_data (int irq, void **buffer, int *length, __u8 lpm) ...@@ -687,11 +683,11 @@ read_conf_data (int irq, void **buffer, int *length, __u8 lpm)
SANITY_CHECK (irq); SANITY_CHECK (irq);
if (!buffer || !length) { if (!buffer || !length) {
return (-EINVAL); return -EINVAL;
} else if (ioinfo[irq]->ui.flags.oper == 0) { } else if (ioinfo[irq]->ui.flags.oper == 0) {
return (-ENODEV); return -ENODEV;
} else if (ioinfo[irq]->ui.flags.esid == 0) { } else if (ioinfo[irq]->ui.flags.esid == 0) {
return (-EOPNOTSUPP); return -EOPNOTSUPP;
} }
...@@ -857,7 +853,7 @@ read_conf_data (int irq, void **buffer, int *length, __u8 lpm) ...@@ -857,7 +853,7 @@ read_conf_data (int irq, void **buffer, int *length, __u8 lpm)
} }
return (ret); return ret;
} }
...@@ -1299,7 +1295,7 @@ s390_validate_subchannel (int irq, int enable) ...@@ -1299,7 +1295,7 @@ s390_validate_subchannel (int irq, int enable)
} }
return (ret); return ret;
} }
/* /*
...@@ -1336,10 +1332,8 @@ s390_SenseID (int irq, senseid_t * sid, __u8 lpm) ...@@ -1336,10 +1332,8 @@ s390_SenseID (int irq, senseid_t * sid, __u8 lpm)
int i; int i;
int failure = 0; /* nothing went wrong yet */ int failure = 0; /* nothing went wrong yet */
SANITY_CHECK (irq);
if (ioinfo[irq]->ui.flags.oper == 0) { if (ioinfo[irq]->ui.flags.oper == 0) {
return (-ENODEV); return -ENODEV;
} }
...@@ -1939,10 +1933,8 @@ s390_SetPGID (int irq, __u8 lpm, pgid_t * pgid) ...@@ -1939,10 +1933,8 @@ s390_SetPGID (int irq, __u8 lpm, pgid_t * pgid)
int inlreq = 0; /* inline request_irq() */ int inlreq = 0; /* inline request_irq() */
int mpath = 1; /* try multi-path first */ int mpath = 1; /* try multi-path first */
SANITY_CHECK (irq);
if (ioinfo[irq]->ui.flags.oper == 0) { if (ioinfo[irq]->ui.flags.oper == 0) {
return (-ENODEV); return -ENODEV;
} }
...@@ -2150,7 +2142,7 @@ s390_SetPGID (int irq, __u8 lpm, pgid_t * pgid) ...@@ -2150,7 +2142,7 @@ s390_SetPGID (int irq, __u8 lpm, pgid_t * pgid)
if (inlreq) if (inlreq)
free_irq (irq, pdevstat); free_irq (irq, pdevstat);
return (irq_ret); return irq_ret;
} }
/* /*
...@@ -2172,10 +2164,8 @@ s390_SensePGID (int irq, __u8 lpm, pgid_t * pgid) ...@@ -2172,10 +2164,8 @@ s390_SensePGID (int irq, __u8 lpm, pgid_t * pgid)
int inlreq = 0; /* inline request_irq() */ int inlreq = 0; /* inline request_irq() */
unsigned long flags; unsigned long flags;
SANITY_CHECK (irq);
if (ioinfo[irq]->ui.flags.oper == 0) { if (ioinfo[irq]->ui.flags.oper == 0) {
return (-ENODEV); return -ENODEV;
} }
...@@ -2339,7 +2329,7 @@ s390_SensePGID (int irq, __u8 lpm, pgid_t * pgid) ...@@ -2339,7 +2329,7 @@ s390_SensePGID (int irq, __u8 lpm, pgid_t * pgid)
if (inlreq) if (inlreq)
free_irq (irq, pdevstat); free_irq (irq, pdevstat);
return (irq_ret); return irq_ret;
} }
/* /*
...@@ -2360,8 +2350,6 @@ s390_send_nop(int irq, __u8 lpm) ...@@ -2360,8 +2350,6 @@ s390_send_nop(int irq, __u8 lpm)
int irq_ret = 0; int irq_ret = 0;
int inlreq = 0; int inlreq = 0;
SANITY_CHECK(irq);
if (!ioinfo[irq]->ui.flags.oper) if (!ioinfo[irq]->ui.flags.oper)
/* no sense in trying */ /* no sense in trying */
return -ENODEV; return -ENODEV;
......
...@@ -314,7 +314,7 @@ s390_machine_check_handler(void *parm) ...@@ -314,7 +314,7 @@ s390_machine_check_handler(void *parm)
} while (1); } while (1);
return (0); return 0;
} }
/* /*
...@@ -557,7 +557,7 @@ s390_collect_crw_info(void) ...@@ -557,7 +557,7 @@ s390_collect_crw_info(void)
} while (ccode == 0); } while (ccode == 0);
return (count); return count;
} }
#ifdef CONFIG_MACHCHK_WARNING #ifdef CONFIG_MACHCHK_WARNING
...@@ -587,6 +587,6 @@ s390_post_warning(void) ...@@ -587,6 +587,6 @@ s390_post_warning(void)
DBG(KERN_DEBUG "post_warning : 1 warning machine check posted\n"); DBG(KERN_DEBUG "post_warning : 1 warning machine check posted\n");
return (1); return 1;
} }
#endif #endif
...@@ -160,7 +160,8 @@ debug_text_event(debug_info_t* id, int level, const char* txt) ...@@ -160,7 +160,8 @@ debug_text_event(debug_info_t* id, int level, const char* txt)
} }
extern debug_entry_t * extern debug_entry_t *
debug_sprintf_event(debug_info_t* id,int level,char *string,...); debug_sprintf_event(debug_info_t* id,int level,char *string,...)
__attribute__ ((format(printf, 3, 4)));
extern inline debug_entry_t* extern inline debug_entry_t*
...@@ -195,7 +196,8 @@ debug_text_exception(debug_info_t* id, int level, const char* txt) ...@@ -195,7 +196,8 @@ debug_text_exception(debug_info_t* id, int level, const char* txt)
extern debug_entry_t * extern debug_entry_t *
debug_sprintf_exception(debug_info_t* id,int level,char *string,...); debug_sprintf_exception(debug_info_t* id,int level,char *string,...)
__attribute__ ((format(printf, 3, 4)));
int debug_register_view(debug_info_t* id, struct debug_view* view); int debug_register_view(debug_info_t* id, struct debug_view* view);
int debug_unregister_view(debug_info_t* id, struct debug_view* view); int debug_unregister_view(debug_info_t* id, struct debug_view* view);
......
...@@ -176,25 +176,16 @@ struct _lowcore ...@@ -176,25 +176,16 @@ struct _lowcore
__u8 pad12[0x1000-0xe04]; /* 0xe04 */ __u8 pad12[0x1000-0xe04]; /* 0xe04 */
} __attribute__((packed)); /* End structure*/ } __attribute__((packed)); /* End structure*/
#define S390_lowcore (*((struct _lowcore *) 0))
extern struct _lowcore *lowcore_ptr[];
extern __inline__ void set_prefix(__u32 address) extern __inline__ void set_prefix(__u32 address)
{ {
__asm__ __volatile__ ("spx %0" : : "m" (address) : "memory" ); __asm__ __volatile__ ("spx %0" : : "m" (address) : "memory" );
} }
#define S390_lowcore (*((struct _lowcore *) 0))
extern struct _lowcore *lowcore_ptr[];
#ifndef CONFIG_SMP
#define get_cpu_lowcore(cpu) (&S390_lowcore)
#define safe_get_cpu_lowcore(cpu) (&S390_lowcore)
#else
#define get_cpu_lowcore(cpu) (lowcore_ptr[(cpu)])
#define safe_get_cpu_lowcore(cpu) \
((cpu) == smp_processor_id() ? &S390_lowcore : lowcore_ptr[(cpu)])
#endif
#endif /* __ASSEMBLY__ */
#define __PANIC_MAGIC 0xDEADC0DE #define __PANIC_MAGIC 0xDEADC0DE
#endif #endif
#endif
...@@ -184,18 +184,18 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) ...@@ -184,18 +184,18 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
#define local_irq_enable() ({ \ #define local_irq_enable() ({ \
__u8 __dummy; \ __u8 __dummy; \
__asm__ __volatile__ ( \ __asm__ __volatile__ ( \
"stosm 0(%0),0x03" : : "a" (&__dummy) : "memory"); \ "stosm 0(%1),0x03" : "=m" (__dummy) : "a" (&__dummy) ); \
}) })
#define local_irq_disable() ({ \ #define local_irq_disable() ({ \
__u32 __flags; \ __u32 __flags; \
__asm__ __volatile__ ( \ __asm__ __volatile__ ( \
"stnsm 0(%0),0xFC" : : "a" (&__flags) : "memory"); \ "stnsm 0(%1),0xFC" : "=m" (__flags) : "a" (&__flags) ); \
__flags; \ __flags; \
}) })
#define local_save_flags(x) \ #define local_save_flags(x) \
__asm__ __volatile__("stosm 0(%0),0" : : "a" (&x) : "memory") __asm__ __volatile__("stosm 0(%1),0" : "=m" (x) : "a" (&x) )
#define local_irq_restore(x) \ #define local_irq_restore(x) \
__asm__ __volatile__("ssm 0(%0)" : : "a" (&x) : "memory") __asm__ __volatile__("ssm 0(%0)" : : "a" (&x) : "memory")
......
...@@ -160,7 +160,8 @@ debug_text_event(debug_info_t* id, int level, const char* txt) ...@@ -160,7 +160,8 @@ debug_text_event(debug_info_t* id, int level, const char* txt)
} }
extern debug_entry_t * extern debug_entry_t *
debug_sprintf_event(debug_info_t* id,int level,char *string,...); debug_sprintf_event(debug_info_t* id,int level,char *string,...)
__attribute__ ((format(printf, 3, 4)));
extern inline debug_entry_t* extern inline debug_entry_t*
...@@ -195,7 +196,8 @@ debug_text_exception(debug_info_t* id, int level, const char* txt) ...@@ -195,7 +196,8 @@ debug_text_exception(debug_info_t* id, int level, const char* txt)
extern debug_entry_t * extern debug_entry_t *
debug_sprintf_exception(debug_info_t* id,int level,char *string,...); debug_sprintf_exception(debug_info_t* id,int level,char *string,...)
__attribute__ ((format(printf, 3, 4)));
int debug_register_view(debug_info_t* id, struct debug_view* view); int debug_register_view(debug_info_t* id, struct debug_view* view);
int debug_unregister_view(debug_info_t* id, struct debug_view* view); int debug_unregister_view(debug_info_t* id, struct debug_view* view);
......
...@@ -194,25 +194,17 @@ struct _lowcore ...@@ -194,25 +194,17 @@ struct _lowcore
__u8 pad17[0x2000-0x1400]; /* 0x1400 */ __u8 pad17[0x2000-0x1400]; /* 0x1400 */
} __attribute__((packed)); /* End structure*/ } __attribute__((packed)); /* End structure*/
#define S390_lowcore (*((struct _lowcore *) 0))
extern struct _lowcore *lowcore_ptr[];
extern __inline__ void set_prefix(__u32 address) extern __inline__ void set_prefix(__u32 address)
{ {
__asm__ __volatile__ ("spx %0" : : "m" (address) : "memory" ); __asm__ __volatile__ ("spx %0" : : "m" (address) : "memory" );
} }
#define S390_lowcore (*((struct _lowcore *) 0)) #define __PANIC_MAGIC 0xDEADC0DE
extern struct _lowcore *lowcore_ptr[];
#ifndef CONFIG_SMP
#define get_cpu_lowcore(cpu) (&S390_lowcore)
#define safe_get_cpu_lowcore(cpu) (&S390_lowcore)
#else
#define get_cpu_lowcore(cpu) (lowcore_ptr[(cpu)])
#define safe_get_cpu_lowcore(cpu) \
((cpu) == smp_processor_id() ? &S390_lowcore : lowcore_ptr[(cpu)])
#endif #endif
#endif /* __ASSEMBLY__ */
#define __PANIC_MAGIC 0xDEADC0DE
#endif #endif
...@@ -202,21 +202,21 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) ...@@ -202,21 +202,21 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
#define local_irq_enable() ({ \ #define local_irq_enable() ({ \
unsigned long __dummy; \ unsigned long __dummy; \
__asm__ __volatile__ ( \ __asm__ __volatile__ ( \
"stosm 0(%0),0x03" : : "a" (&__dummy) : "memory"); \ "stosm 0(%1),0x03" : "=m" (__dummy) : "a" (&__dummy) ); \
}) })
#define local_irq_disable() ({ \ #define local_irq_disable() ({ \
unsigned long __flags; \ unsigned long __flags; \
__asm__ __volatile__ ( \ __asm__ __volatile__ ( \
"stnsm 0(%0),0xFC" : : "a" (&__flags) : "memory"); \ "stnsm 0(%1),0xfc" : "=m" (__flags) : "a" (&__flags) ); \
__flags; \ __flags; \
}) })
#define local_save_flags(x) \ #define local_save_flags(x) \
__asm__ __volatile__("stosm 0(%0),0" : : "a" (&x) : "memory") __asm__ __volatile__("stosm 0(%1),0" : "=m" (x) : "a" (&x) )
#define local_irq_restore(x) \ #define local_irq_restore(x) \
__asm__ __volatile__("ssm 0(%0)" : : "a" (&x) : "memory") __asm__ __volatile__("ssm 0(%0)" : : "a" (&x) )
#define irqs_disabled() \ #define irqs_disabled() \
({ \ ({ \
......
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