OpenCloudOS-Kernel/drivers/s390/cio
Heiko Carstens b1e766137f [S390] cio: fix cio_tpi.
In cio_tpi only disable bottom halves when not in interrupt context.
Otherwise a WARN_ON gets triggered. Besides that, when we are in
interrupt context bottom halves are disabled anyway.
Fixes this one:

Badness at kernel/softirq.c:77
Modules linked in:
CPU: 2 Not tainted 2.6.26 #4
Process swapper (pid: 0, task: 000000003fe83db0, ksp: 000000003fea7d28)
Krnl PSW : 0404c00180000000 0000000000053f4e (__local_bh_disable+0xbe/0xcc)
           R:0 T:1 IO:0 EX:0 Key:0 M:1 W:0 P:0 AS:3 CC:0 PM:0 EA:3
Krnl GPRS: 0000000000008ee0 00000000005f95e0 0000000000000000 0000000000000001
           000000000020be92 0000000000000000 0000000000000210 00000000005d36c0
           000000003fb5f4d8 0000000000000000 000000000020bed0 000000003fb5f3c8
           00000000009be920 0000000000364898 000000003fb5f408 000000003fb5f3c8
Krnl Code: 0000000000053f42: bf2f1000           icm     %r2,15,0(%r1)
           0000000000053f46: a774ffc5           brc     7,53ed0
           0000000000053f4a: a7f40001           brc     15,53f4c
          >0000000000053f4e: a7280001           lhi     %r2,1
           0000000000053f52: 50201000           st      %r2,0(%r1)
           0000000000053f56: a7f4ffbd           brc     15,53ed0
           0000000000053f5a: 0707               bcr     0,%r7
           0000000000053f5c: a7f13fc0           tmll    %r15,16320
Call Trace:
([<0000000000000210>] 0x210)
 [<0000000000053f86>] local_bh_disable+0x2a/0x38
 [<000000000020bed0>] wait_cons_dev+0xd4/0x154
 [<0000000000247cb2>] raw3215_make_room+0x6a/0x1a8
 [<000000000024861a>] raw3215_write+0x86/0x28c
 [<00000000002488a0>] con3215_write+0x80/0x110
 [<000000000004c3e0>] __call_console_drivers+0xc8/0xe4
 [<000000000004c47e>] _call_console_drivers+0x82/0xc4
 [<000000000004c744>] release_console_sem+0x218/0x2c0
 [<000000000004cf64>] vprintk+0x3c0/0x504
 [<0000000000354a4a>] printk+0x52/0x64
 [<0000000000088004>] __print_symbol+0x40/0x50
 [<0000000000071dbc>] print_stack_trace+0x78/0xac
 [<0000000000079e78>] print_lock_dependencies+0x148/0x208
 [<000000000007a050>] print_irq_inversion_bug+0x118/0x15c
 [<000000000007a106>] check_usage_forwards+0x72/0x84
 [<000000000007a36e>] mark_lock+0x1d2/0x594
 [<000000000007baca>] __lock_acquire+0x886/0xf48
 [<000000000007c234>] lock_acquire+0xa8/0xe0
 [<0000000000350316>] _write_lock+0x56/0x98
 [<000000000026cd92>] zfcp_erp_adapter_reopen+0x4e/0x8c
 [<000000000026f1e8>] zfcp_qdio_int_resp+0x2e4/0x2f4
 [<00000000002210f4>] qdio_int_handler+0x274/0x888
 [<00000000002177b6>] ccw_device_call_handler+0x6e/0xd8
 [<0000000000215336>] ccw_device_irq+0xd6/0x160
 [<0000000000212f88>] io_subchannel_irq+0x8c/0x118
 [<000000000020c120>] do_IRQ+0x1d0/0x1fc
 [<00000000000270b2>] io_return+0x0/0x8
 [<000000000001c8a4>] cpu_idle+0x178/0x21c
([<000000000001c884>] cpu_idle+0x158/0x21c)
 [<00000000003483a2>] start_secondary+0xb6/0xc8
INFO: lockdep is turned off.
Last Breaking-Event-Address:
 [<0000000000053f4a>] __local_bh_disable+0xba/0xcc

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2008-10-10 21:33:55 +02:00
..
Makefile [S390] qdio: new qdio driver. 2008-07-17 17:22:10 +02:00
airq.c [S390] cio: Allow adapter interrupt handlers per isc. 2008-07-14 10:02:10 +02:00
blacklist.c [S390] cio: introduce purge function for /proc/cio_ignore 2008-10-10 21:33:47 +02:00
blacklist.h [PATCH] s390: multiple subchannel sets support 2006-01-06 08:33:52 -08:00
ccwgroup.c [S390] bus_id -> dev_set_name() changes 2008-10-10 21:33:50 +02:00
chp.c [S390] bus_id -> dev_set_name() changes 2008-10-10 21:33:50 +02:00
chp.h [S390] cio: Repair chpid event handling. 2008-07-14 10:02:11 +02:00
chsc.c [S390] cio: Export chsc_error_from_response(). 2008-07-17 17:22:10 +02:00
chsc.h [S390] cio: Export chsc_error_from_response(). 2008-07-17 17:22:10 +02:00
chsc_sch.c [S390] cio: Correct use of ! and & 2008-10-10 21:33:54 +02:00
chsc_sch.h [S390] cio: Add chsc subchannel driver. 2008-07-14 10:02:12 +02:00
cio.c [S390] cio: fix cio_tpi. 2008-10-10 21:33:55 +02:00
cio.h [S390] bus_id -> dev_set_name() for css and ccw busses 2008-10-10 21:33:53 +02:00
cio_debug.h [S390] cio: Remove cio_msg kernel parameter. 2008-05-07 09:23:01 +02:00
cmf.c [S390] Cleanup cio printk messages. 2008-07-14 10:02:18 +02:00
css.c [S390] bus_id -> dev_set_name() changes 2008-10-10 21:33:50 +02:00
css.h [S390] cio: Add chsc subchannel driver. 2008-07-14 10:02:12 +02:00
device.c [S390] bus_id -> dev_set_name() for css and ccw busses 2008-10-10 21:33:53 +02:00
device.h [S390] cio: introduce purge function for /proc/cio_ignore 2008-10-10 21:33:47 +02:00
device_fsm.c [S390] bus_id -> dev_name conversions 2008-10-10 21:33:49 +02:00
device_id.c [S390] cio: provide functions for fcx enabled I/O 2008-07-14 10:02:08 +02:00
device_ops.c [S390] bus_id -> dev_name conversions 2008-10-10 21:33:49 +02:00
device_pgid.c [S390] cio: provide functions for fcx enabled I/O 2008-07-14 10:02:08 +02:00
device_status.c [S390] cio: introduce fcx enabled scsw format 2008-07-14 10:02:07 +02:00
fcx.c [S390] cio: provide functions for fcx enabled I/O 2008-07-14 10:02:08 +02:00
idset.c [S390] cio: Memory allocation for idset changed. 2008-08-01 16:39:31 +02:00
idset.h [S390] cio: Add chsc subchannel driver. 2008-07-14 10:02:12 +02:00
io_sch.h [S390] cio: inline assembly cleanup 2008-10-10 21:33:53 +02:00
ioasm.h [S390] cio: inline assembly cleanup 2008-10-10 21:33:53 +02:00
isc.c [S390] cio: introduce isc_(un)register functions. 2008-07-14 10:02:11 +02:00
itcw.c [S390] cio: provide helper functions for fcx enabled I/O 2008-07-14 10:02:08 +02:00
qdio.h [S390] qdio: speed up multicast traffic on full HiperSocket queue 2008-10-10 21:33:46 +02:00
qdio_debug.c [S390] bus_id ->dev_name() conversions in qdio 2008-10-10 21:33:52 +02:00
qdio_debug.h [S390] qdio: improve s390 debug feature usage 2008-08-21 19:46:40 +02:00
qdio_main.c [S390] bus_id ->dev_name() conversions in qdio 2008-10-10 21:33:52 +02:00
qdio_perf.c [S390] qdio: fix section mismatch bug. 2008-08-01 16:39:35 +02:00
qdio_perf.h [S390] qdio: new qdio driver. 2008-07-17 17:22:10 +02:00
qdio_setup.c [S390] qdio: prevent stack clobber 2008-10-03 21:55:55 +02:00
qdio_thinint.c [S390] qdio: prevent oopsing if qdio_establish fails 2008-08-21 19:46:39 +02:00
scsw.c [S390] cio: introduce fcx enabled scsw format 2008-07-14 10:02:07 +02:00