History log of /drivers/s390/cio/cio.c
Revision Date Author Comments
fe0f49768d807a8fe6336b097feb8c4441951710 30-Sep-2014 Martin Schwidefsky <schwidefsky@de.ibm.com> s390/nohz: use a per-cpu flag for arch_needs_cpu

Move the nohz_delay bit from the s390_idle data structure to the
per-cpu flags. Clear the nohz delay flag in __cpu_disable and
remove the cpu hotplug notifier that used to do this.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
0bf7fcf155160fd483af7ffdc50efd4be96f1c96 17-Aug-2014 Christoph Lameter <cl@linux.com> s390: cio driver &__get_cpu_var replacements

Use this_cpu_ptr() instead of &__get_cpu_var()

Signed-off-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
dbe33fc9ad0cd965afe71cd6fca9539afd704e38 03-Jun-2014 Sebastian Ott <sebott@linux.vnet.ibm.com> s390/cio: silence lockdep warning

On systems where a ccw based console device is used a lockdep false alarm
could be triggered when a device driver calls printk while holding a
subchannels lock (e.g. in it's irq handler). Since this is valid behavior
fix this by introducing a separate lock class for the console subchannels
lock.

The lockdep warning was revealed by "printk: enable interrupts before calling
console_trylock_for_printk()" which changed console_unlock() to be called with
lockdep enabled.

[ INFO: possible recursive locking detected ]
3.15.0-rc5-next-20140520 #1 Not tainted
---------------------------------------------
ccwgroup/2239 is trying to acquire lock:
(&(sch->lock)->rlock){-.-...}, at: [<0000000000642a52>] raw3215_write+0x52/0x200

but task is already holding lock:
(&(sch->lock)->rlock){-.-...}, at: [<00000000005fd160>] do_cio_interrupt+0x60/0x108

other info that might help us debug this:
Possible unsafe locking scenario:

CPU0
----
lock(&(sch->lock)->rlock);
lock(&(sch->lock)->rlock);

*** DEADLOCK ***

May be due to missing lock nesting notation

8 locks held by ccwgroup/2239:

stack backtrace:
CPU: 3 PID: 2239 Comm: ccwgroup Not tainted 3.15.0-rc5-next-20140520 #1
0000000036fab518 0000000036fab528 0000000000000002 0000000000000000
0000000036fab5b8 0000000036fab530 0000000036fab530 00000000001116e8
0000000000000000 0000000000986ec4 00000000009701b6 000000000000000b
0000000036fab578 0000000036fab518 0000000000000000 0000000000000000
0000000000000000 00000000001116e8 0000000036fab518 0000000036fab578
Call Trace:
([<0000000000111626>] show_trace+0x14e/0x158)
[<000000000011169a>] show_stack+0x6a/0xe8
[<00000000007c6e72>] dump_stack+0x82/0xb0
[<00000000001a95f2>] validate_chain.isra.37+0xa4a/0xbb0
[<00000000001acaca>] __lock_acquire+0x4da/0xcd0
[<00000000001ada1a>] lock_acquire+0xba/0x218
[<00000000007cd634>] _raw_spin_lock_irqsave+0x6c/0xb8
[<0000000000642a52>] raw3215_write+0x52/0x200
[<0000000000643d16>] con3215_write+0x76/0xf8
[<00000000001bd87a>] call_console_drivers.constprop.25+0xfa/0x210
[<00000000001be0b0>] console_unlock+0x3e0/0x4e8
[<00000000001be450>] vprintk_emit+0x298/0x6e0
[<00000000005aa210>] dev_vprintk_emit+0xe0/0x1a8
[<00000000005aa320>] dev_printk_emit+0x48/0x50
[<00000000005aa390>] __dev_printk+0x68/0xb0
[<00000000005aa7c2>] _dev_info+0x62/0x70
[<0000000000657bf0>] qeth_l2_send_setmac_cb+0xd0/0x190
[<0000000000651a1e>] qeth_send_control_data_cb+0x3a6/0x6a8
[<0000000000655546>] qeth_irq+0x1a6/0xac0
[<000000000060a0ac>] ccw_device_call_handler+0xa4/0xc0
[<0000000000608b62>] ccw_device_irq+0x5a/0x190
[<00000000005fd1ca>] do_cio_interrupt+0xca/0x108
[<00000000001c0a2e>] handle_irq_event_percpu+0x5e/0x378
[<00000000001c46fc>] handle_percpu_irq+0x6c/0x98
[<00000000001c0066>] generic_handle_irq+0x46/0x68
[<000000000010b5b6>] do_IRQ+0x5e/0x88
[<00000000007cf304>] io_call+0x6/0x20
[<000000000064c63a>] qeth_send_control_data+0x322/0x570
([<000000000064c50e>] qeth_send_control_data+0x1f6/0x570)
[<0000000000651db2>] qeth_send_ipa_cmd+0x92/0x120
[<000000000065b310>] __qeth_l2_set_online+0x170/0xaa8
[<000000000060ebb6>] ccwgroup_set_online+0x56/0x90
[<000000000060ef96>] ccwgroup_online_store+0xd6/0xe0
[<000000000033d11a>] kernfs_fop_write+0x10a/0x188
[<00000000002bbd00>] vfs_write+0x98/0x1c0
[<00000000002bc8a0>] SyS_write+0x60/0xd0
[<00000000007cee3a>] sysc_nr_ok+0x22/0x28
[<000003fffd0c3f28>] 0x3fffd0c3f28

Reported-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
63aef00b55d37e9fad837a8b38a2c261f0d32041 27-May-2014 Martin Schwidefsky <schwidefsky@de.ibm.com> s390/lowcore: replace lowcore irb array with a per-cpu variable

Remove the 96-byte irb array from the lowcore and create a per-cpu
variable instead. That way we will pick up any change in the definition
of the struct irb automatically.

Acked-By: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
bfc3f0281e08066fa8111c3972cff6edc1049864 05-Mar-2014 Frederic Weisbecker <fweisbec@gmail.com> cputime: Default implementation of nsecs -> cputime conversion

The architectures that override cputime_t (s390, ppc) don't provide
any version of nsecs_to_cputime(). Indeed this cputime_t implementation
by backend only happens when CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y under
which the core code doesn't make any use of nsecs_to_cputime().

At least for now.

We are going to make a broader use of it so lets provide a default
version with a per usecs granularity. It should be good enough for most
usecases.

Cc: Ingo Molnar <mingo@kernel.org>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Rik van Riel <riel@redhat.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
257ceab7456bd2a2657fd1c689384cabc95e3d30 04-Mar-2014 Thomas Gleixner <tglx@linutronix.de> s390: Do not rely on magic indirect includes

commit: 8f945a33 (genirq: Move kstat_incr_irqs_this_cpu() to core)
unearthed the following:

arch/s390/kernel/irq.c: In function 'init_IRQ':
>> arch/s390/kernel/irq.c:93:2: error: implicit declaration of function 'irq_reserve_irqs'
[-Werror=implicit-function-declaration]
....
cc1: some warnings being treated as errors
--
drivers/s390/cio/cio.c: In function 'init_cio_interrupts':
>> drivers/s390/cio/cio.c:594:2: error: implicit declaration of function
'irq_set_chip_and_handler' [-Werror=implicit-function-declaration]
[-Werror=implicit-function-declaration]
....
cc1: some warnings being treated as errors

The reason is that those files require linux/irq.h and magically
pulled that in via linux/kernel_stat.h

The commit above got rid of the pointless include of linux/irq.h in
linux/kernel_stat.h and therefor broke the build.

Include linux/irq.h

Reported-by: fengguang.wu@intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: s390 <linux-s390@vger.kernel.org>
bc5dfcff65f24f15567f766d8bd081d594ef8cc2 23-Feb-2014 Thomas Gleixner <tglx@linutronix.de> s390: Cio: Use the core irq stats function

Let the core do the irq_desc resolution.

No functional change.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: s390 <linux-s390@vger.kernel.org>
Link: http://lkml.kernel.org/r/20140223212737.983433636@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
f7e1e65d29636d050cdde0770b9544572959a67d 17-Feb-2014 Sebastian Ott <sebott@linux.vnet.ibm.com> s390: improve debug feature usage

The maximum usable buffer size of the s390 debug feature (when using
the sprintf_view) is 11 * sizeof(long) (1 pointer for the format
string + 10 arguments). When a larger buffer size is specified the
additional memory is unused and wasted per debug entry. So reducing
the buffer size to its maximum (or to the actual buffer size used)
will make more precious debug feature space usable.

For pci_msg, chsc_msg, and cio_crw we use the additional usable dbf
space to reduce the number of allocated pages.

Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
1bc8927cc5b57c4d9198e4c4ac6b426b7c7d72c7 05-Feb-2014 Sebastian Ott <sebott@linux.vnet.ibm.com> s390/cio: improve cio_commit_config

The modify subchannel wrapper cio_commit_config can fail when
(unexpected) status is pending on the subchannel.

Callers of cio_commit_config (that operated on enabled subchannels)
needed to do error handling for that case (clear the unexpected
status with test subchannel and retry). This error handling is
missing in some code paths and caused online setting of devices to
fail.

Fix this for all callers by moving the error handling inside
cio_commit_config.

Reviewed-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
8c071b0f19dfa230335d22ce56a8fab5bd20cedc 17-Oct-2013 Martin Schwidefsky <schwidefsky@de.ibm.com> s390/time: correct use of store clock fast

The result of the store-clock-fast (STCKF) instruction is a bit fuzzy.
It can happen that the value stored on one CPU is smaller than the value
stored on another CPU, although the order of the stores is the other
way around. This can cause deltas of get_tod_clock() values to become
negative when they should not be.

We need to be more careful with store-clock-fast, this patch partially
reverts git commit e4b7b4238e666682555461fa52eecd74652f36bb "time:
always use stckf instead of stck if available". The get_tod_clock()
function now uses the store-clock-extended (STCKE) instruction.
get_tod_clock_fast() can be used if the fuzziness of store-clock-fast
is acceptable e.g. for wait loops local to a CPU.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
1f44a225777e40fd9a945b09f958052c47494e1e 27-Jun-2013 Martin Schwidefsky <schwidefsky@de.ibm.com> s390: convert interrupt handling to use generic hardirq

With the introduction of PCI it became apparent that s390 should
convert to generic hardirqs as too many drivers do not have the
correct dependency for GENERIC_HARDIRQS. On the architecture
level s390 does not have irq lines. It has external interrupts,
I/O interrupts and adapter interrupts. This patch hard-codes all
external interrupts as irq #1, all I/O interrupts as irq #2 and
all adapter interrupts as irq #3. The additional information from
the lowcore associated with the interrupt is stored in the
pt_regs of the interrupt frame, where the interrupt handler can
pick it up. For PCI/MSI interrupts the adapter interrupt handler
scans the relevant bit fields and calls generic_handle_irq with
the virtual irq number for the MSI interrupt.

Reviewed-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
48f6b00c6e3190b786c44731b25ac124c81c2247 17-Jun-2013 Martin Schwidefsky <schwidefsky@de.ibm.com> s390/irq: store interrupt information in pt_regs

Copy the interrupt parameters from the lowcore to the pt_regs structure
in entry[64].S and reduce the arguments of the low level interrupt handler
to the pt_regs pointer only. In addition move the test-pending-interrupt
loop from do_IRQ to entry[64].S to make sure that interrupt information
is always delivered via pt_regs.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
3ad19b8fb07497f975aa6aba187198ce11191dd2 25-Apr-2013 Sebastian Ott <sebott@linux.vnet.ibm.com> s390/cio: fix irq statistics

When we fetch an interrupt on the CCW console using tsch (via
ccw_device_wait_idle formerly known as wait_cons_dev) we increment
the irq count for the affected interruption class but it is not
accounted as an IO interrupt.

This is broken since commit b603d258a43b4e7339660bdd3b5c25eacd603e54
"s390: remove superfluous tpi from wait_cons_dev"

Fix it so that the sum of the individual interrupts per class matches
the number of IO interrupts again.

Reported-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
e5dcf0025d7af58f525590ac86ac27cb44714e8d 13-Apr-2013 Sebastian Ott <sebott@linux.vnet.ibm.com> s390/css: move subchannel lock allocation

cio_validate_subchannel is used to do some basic checks to find out
if it's worth to further investigate a subchannel. Move the allocation
and initialization of the subchannels locks to css_alloc_subchannel.

Clean up the functions involved while at it.

Reviewed-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
14556b33f2a5d6a3bc75cd33b709452a31555b25 13-Apr-2013 Sebastian Ott <sebott@linux.vnet.ibm.com> s390/css: introduce cio_register_early_subchannels

Use cio_register_early_subchannels to register early subchannels
which are already in use. Call this function before we do the
actual subchannel scanning loop. This helps us to get rid of some
more special cases regarding the console subchannel.

Reviewed-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
863fc8492734822b95671780db803cd9a4b7d923 13-Apr-2013 Sebastian Ott <sebott@linux.vnet.ibm.com> s390/cio: get rid of static console subchannel

Remove the static console subchannel (and friends) and use dynamic
allocation for these structures. With this change the console
subchanel is treated (mostly) like any other subchannel and we can
remove some special cases.

Reviewed-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
188561a462d3b82451d6ba09e2e32c9ba2c9938c 13-Apr-2013 Sebastian Ott <sebott@linux.vnet.ibm.com> s390/cio: wait_cons_dev don't use static variable

wait_cons_dev is used to busy wait for an interrupt on the console
ccw device. Stop using the static console_subchannel and add a
parameter to this function to specify on which ccw device/subchannel
we have to do the polling.

While at it rename the function to ccw_device_wait_idle and
move it to device.c

Reviewed-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
1aae0560d160ee6ebef927a35e4f405306a079df 30-Jan-2013 Heiko Carstens <heiko.carstens@de.ibm.com> s390/time: rename tod clock access functions

Fix name clash with some common code device drivers and add "tod"
to all tod clock access function names.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
420f42ecf48a926ba775ec7d7294425f004b6ade 02-Jan-2013 Heiko Carstens <heiko.carstens@de.ibm.com> s390/irq: remove split irq fields from /proc/stat

Now that irq sum accounting for /proc/stat's "intr" line works again we
have the oddity that the sum field (first field) contains only the sum
of the second (external irqs) and third field (I/O interrupts).
The reason for that is that these two fields are already sums of all other
fields. So if we would sum up everything we would count every interrupt
twice.
This is broken since the split interrupt accounting was merged two years
ago: 052ff461c8427629aee887ccc27478fc7373237c "[S390] irq: have detailed
statistics for interrupt types".
To fix this remove the split interrupt fields from /proc/stat's "intr"
line again and only have them in /proc/interrupts.

This restores the old behaviour, seems to be the only sane fix and mimics
a behaviour from other architectures where /proc/interrupts also contains
more than /proc/stat's "intr" line does.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
add9bde216fefe1b65b41f7c0948cef48aa98c14 02-Jan-2013 Heiko Carstens <heiko.carstens@de.ibm.com> s390/irq: enable irq sum accounting for /proc/stat again

For more than two years, since f2c66cd8eeddedb440f33bc0f5cec1ed7ae376cb
"/proc/stat: scalability of irq num per cpu" the output of /proc/stat is
broken.
The first field in the "intr" line should contain the sum of all interrupts,
however since the above mentioned change it is always zero.

The reason for that is that a per cpu irq sum variable had been introduced
which got incremented when calling kstat_incr_irqs_this_cpu(). However
on s390 we directly incremented only the per cpu per irq counter by accessing
the array element via kstat_cpu(smp_processor_id()).irqs[...].
So fix this and use the kstat_incr_irqs_this_cpu() wrapper which increments
both: the per cpu per irq counter and the per cpu irq sum counter.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
41459d36cf0d57813017dae6080a879cc038e5fe 14-Sep-2012 Heiko Carstens <heiko.carstens@de.ibm.com> s390: add uninitialized_var() to suppress false positive compiler warnings

Get rid of these:

arch/s390/kernel/smp.c:134:19: warning: ‘status’ may be used uninitialized in this function [-Wuninitialized]
arch/s390/mm/pgtable.c:641:10: warning: ‘table’ may be used uninitialized in this function [-Wuninitialized]
arch/s390/mm/pgtable.c:644:12: warning: ‘page’ may be used uninitialized in this function [-Wuninitialized]
drivers/s390/cio/cio.c:1037:14: warning: ‘schid’ may be used uninitialized in this function [-Wuninitialized]

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
a53c8fab3f87c995c30ac226a03af95361243144 20-Jul-2012 Heiko Carstens <heiko.carstens@de.ibm.com> s390/comments: unify copyright messages and remove file names

Remove the file name from the comment at top of many files. In most
cases the file name was wrong anyway, so it's rather pointless.

Also unify the IBM copyright statement. We did have a lot of sightly
different statements and wanted to change them one after another
whenever a file gets touched. However that never happened. Instead
people start to take the old/"wrong" statements to use as a template
for new files.
So unify all of them in one go.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
b603d258a43b4e7339660bdd3b5c25eacd603e54 09-May-2012 Martin Schwidefsky <schwidefsky@de.ibm.com> s390: remove superfluous tpi from wait_cons_dev

wait_cons_dev waits for a particular subchannel to complete an I/O.
It is not necessary to use tpi to get the subchannel id as it is
already known. This avoids changes to the interrupt subclass mask
and allows to remove the lock & unlock of the subchannel lock.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
4c1051e37a0e2a941115c6fb7ba08c318f25a0f9 11-Mar-2012 Martin Schwidefsky <schwidefsky@de.ibm.com> [S390] rework idle code

Whenever the cpu loads an enabled wait PSW it will appear as idle to the
underlying host system. The code in default_idle calls vtime_stop_cpu
which does the necessary voodoo to get the cpu time accounting right.
The udelay code just loads an enabled wait PSW. To correct this rework
the vtime_stop_cpu/vtime_start_cpu logic and move the difficult parts
to entry[64].S, vtime_stop_cpu can now be called from anywhere and
vtime_start_cpu is gone. The correction of the cpu time during wakeup
from an enabled wait PSW is done with a critical section in entry[64].S.
As vtime_start_cpu is gone, s390_idle_check can be removed as well.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
60a0c68df2632feaa4a986af084650d1165d89c5 30-Oct-2011 Michael Holzheu <holzheu@linux.vnet.ibm.com> [S390] kdump backend code

This patch provides the architecture specific part of the s390 kdump
support.

Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
de400d6b78d15a73023485f050bc6b1709dc7a79 30-Oct-2011 Peter Oberparleiter <peter.oberparleiter@de.ibm.com> [S390] fix mismatch in summation of I/O IRQ statistics

Current IRQ statistics support does not show detail counts for I/O
interrupts which are processed internally only. The result is a
summation count which is way off such as this one:

CPU0 CPU1 CPU2
I/O: 1331 710 442
[...]
QAI: 15 16 16 [I/O] QDIO Adapter Interrupt
QDI: 1 0 0 [I/O] QDIO Interrupt
DAS: 706 645 381 [I/O] DASD
C15: 26 10 0 [I/O] 3215
C70: 0 0 0 [I/O] 3270
TAP: 0 0 0 [I/O] Tape
VMR: 0 0 0 [I/O] Unit Record Devices
LCS: 0 0 0 [I/O] LCS
CLW: 0 0 0 [I/O] CLAW
CTC: 0 0 0 [I/O] CTC
APB: 0 0 0 [I/O] AP Bus

Fix this by moving I/O interrupt accounting into the common I/O layer.

Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
a681887f7b0f8b7698e4b22f1191015424fa96e4 26-Sep-2011 Peter Oberparleiter <peter.oberparleiter@de.ibm.com> [S390] cio: fix cio_tpi ignoring adapter interrupts

Ensure that adapter interrupts are correctly processed when they are
retrieved using TEST PENDING INTERRUPTION.

Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
c513d07a2df0f7076c1707274e29737f09df3b7f 15-Mar-2011 Sebastian Ott <sebott@linux.vnet.ibm.com> [S390] cio: move options to io_sch_private

Move the options member from struct subchannel to
io_subchannel_private since it's I/O subchannel specific.
Also remove the unused cio_get_options function.

Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
ee5894fb0f128476dc9afb2ed50cab1427dfe0c3 15-Mar-2011 Sebastian Ott <sebott@linux.vnet.ibm.com> [S390] remove superfluous check from do_IRQ

Don't check for the int_type if an adapter interrupt is presented.

Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
4a6f4fe8377720e5a279fdbb769946c242e936d3 06-Dec-2010 Christoph Lameter <cl@linux.com> drivers: Replace __get_cpu_var with __this_cpu_read if not used for an address.

__get_cpu_var() can be replaced with this_cpu_read and will then use a single
read instruction with implied address calculation to access the correct per cpu
instance.

However, the address of a per cpu variable passed to __this_cpu_read() cannot be
determed (since its an implied address conversion through segment prefixes).
Therefore apply this only to uses of __get_cpu_var where the addres of the
variable is not used.

V3->V4:
- Move one instance of this_cpu_inc_return to a later patch
so that this one can go in without percpu infrastructrure
changes.

Sedat: fixed compile failure caused by an extra ')'.

Cc: Neil Horman <nhorman@tuxdriver.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Sedat Dilek <sedat.dilek@gmail.com>
Acked-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
6377981faf1a4425b0531e577736ef03df97c8f6 17-May-2010 Martin Schwidefsky <schwidefsky@de.ibm.com> [S390] idle time accounting vs. machine checks

A machine check can interrupt the i/o and external interrupt handler
anytime. If the machine check occurs while the interrupt handler is
waking up from idle vtime_start_cpu can get executed a second time
and the int_clock / async_enter_timer values in the lowcore get
clobbered. This can confuse the cpu time accounting.
To fix this problem two changes are needed. First the machine check
handler has to use its own copies of int_clock and async_enter_timer,
named mcck_clock and mcck_enter_timer. Second the nested execution
of vtime_start_cpu has to be prevented. This is done in s390_idle_check
by checking the wait bit in the program status word.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
8821d24cd261aede9b0436cd3252b17a60ccc33a 22-Apr-2010 Sebastian Ott <sebott@linux.vnet.ibm.com> [S390] cio: use exception-save stsch

Using stsch on schids with ssid != 0 can lead to an operand
exception. Use stsch_err to handle potential exceptions
if we fail to reenable mss after hibernation.

Cc: <stable@kernel.org>
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
cbb870c8221147ae337612e04b2bb0211f31a74b 26-Feb-2010 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] Cleanup struct _lowcore usage and defines.

Use asm offsets to make sure the offset defines to struct _lowcore and
its layout don't get out of sync.
Also add a BUILD_BUG_ON() which checks that the size of the structure
is sane.
And while being at it change those sites which use odd casts to access
the current lowcore. These should use S390_lowcore instead.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
27d71602b4a605fbb31088e69ac12187e69a9443 26-Feb-2010 Martin Schwidefsky <schwidefsky@de.ibm.com> [S390] add MACHINE_IS_LPAR flag

Introduce the MACHINE_IS_LPAR flag for code that should only be
executed if Linux is running in an LPAR.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
3c5d92a0cfb5103c0d5ab74d4ae6373d3af38148 29-Sep-2009 Martin Schwidefsky <schwidefsky@de.ibm.com> nohz: Introduce arch_needs_cpu

Allow the architecture to request a normal jiffy tick when the system
goes idle and tick_nohz_stop_sched_tick is called . On s390 the hook is
used to prevent the system going fully idle if there has been an
interrupt other than a clock comparator interrupt since the last wakeup.

On s390 the HiperSockets response time for 1 connection ping-pong goes
down from 42 to 34 microseconds. The CPU cost decreases by 27%.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
LKML-Reference: <20090929122533.402715150@de.ibm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
6ee4fec6be06f7d138860b37cba58982cc3ccb16 11-Sep-2009 Sebastian Ott <sebott@linux.vnet.ibm.com> [S390] cio: remove subchannel init_name

We used the init_name to set the console subchannels name early
at the boot stage. With the patch cio: fix memleak in subchannel validation
we moved the name setting to the point where we actually register the
console subchannel. At this time we can do dynamic allocations and therefore
use dev_set_name.

Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
ab6aae09024be1b039df441fa1b64dbe092d0acb 11-Sep-2009 Sebastian Ott <sebott@linux.vnet.ibm.com> [S390] cio: fix memleak in subchannel validation

When scanning for new subchannels we have a code path where we allocate
memory for a struct subchannel, set the device name (which is dynamically
allocated now) and do a check if the underlying device is blacklisted - if
so we free the subchannel structure.
Since we have not set up refcounting at this stage, the device name's memory
is lost. Fix this by moving the dev_set_name after the blacklist test.

Note: With this patch the init_name for the console subchannel becomes
virtually obsolete.

Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
efd986db2d720e8f6660ec2c292509ee7d28cc6a 11-Sep-2009 Sebastian Ott <sebott@linux.vnet.ibm.com> [S390] cio: increase trace level

Move debug traces for start I/O and interrupt events to exclusive
trace levels. Also change tracing in hot-path from sprintf (costly)
to hex.

Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
88dbd2037229bd2ed7543ffd0d8f2d9dec9d31d2 12-Jun-2009 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] ftrace: add function graph tracer support

Function graph tracer support for s390.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
76d4e00a05d06c1d1552adea24fcf6182c9d8999 12-Jun-2009 Martin Schwidefsky <schwidefsky@de.ibm.com> [S390] merge cpu.h into cputime.h

All definition in cpu.h have to do with cputime accounting. Move
them to cputime.h and remove the header file.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
ed04b892e28ae96662fbb3f4c961df5ff3385d28 26-Mar-2009 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: Try harder to disable subchannel.

Acting upon the assumption that cio_disable_subchannel()
is only called when we really want to disable the subchannel
(a) remove the check for activity (it is already done in
ccw_device_offline(), which is the place where it matters)
(b) collect pending status via tsch() and ignore it (it
can't matter anymore since the subchannel will be disabled).

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
f5daba1d4116d964435ddd99f32b6c80448a496b 26-Mar-2009 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] split/move machine check handler code

Split machine check handler code and move it to cio and kernel code
where it belongs to. No functional change.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
73ac36ea14fd18ea3dc057e41b16ff31a3c0bd5a 08-Jan-2009 Coly Li <coyli@suse.de> fix similar typos to successfull

When I review ocfs2 code, find there are 2 typos to "successfull". After
doing grep "successfull " in kernel tree, 22 typos found totally -- great
minds always think alike :)

This patch fixes all the similar typos. Thanks for Randy's ack and comments.

Signed-off-by: Coly Li <coyli@suse.de>
Acked-by: Randy Dunlap <randy.dunlap@oracle.com>
Acked-by: Roland Dreier <rolandd@cisco.com>
Cc: Jeremy Kerr <jk@ozlabs.org>
Cc: Jeff Garzik <jeff@garzik.org>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Theodore Ts'o <tytso@mit.edu>
Cc: Mark Fasheh <mfasheh@suse.com>
Cc: Vlad Yasevich <vladislav.yasevich@hp.com>
Cc: Sridhar Samudrala <sri@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9cfb9b3c3a7361c793c031e9c3583b177ac5debd 31-Dec-2008 Martin Schwidefsky <schwidefsky@de.ibm.com> [PATCH] improve idle cputime accounting

Distinguish the cputime of the idle process where idle is actually using
cpu cycles from the cputime where idle is sleeping on an enabled wait psw.
The former is accounted as system time, the later as idle time.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
e6d5a428e01b1387852f17b3dd7934239a0be0d4 25-Dec-2008 Michael Ernst <mernst@de.ibm.com> [S390] convert cio printks to pr_xxx macros.

Signed-off-by: Michael Ernst <mernst@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
13952ec12dfeea793ff83c2a96139ed57eb0b897 25-Dec-2008 Sebastian Ott <sebott@linux.vnet.ibm.com> [S390] cio: introduce cio_commit_config

To change the configuration of a subchannel we alter the modifiable
bits of the subchannel's schib field and issue a modify subchannel.
There can be the case that not all changes were applied -or worse-
quietly overwritten by the hardware. With the next store subchannel
we obtain the current state of the hardware but lose our target
configuration.

With this patch we introduce a subchannel_config structure which
contains the target subchannel configuration. Additionally the msch
wrapper cio_modify is replaced with cio_commit_config which
copies the desired changes to a temporary schib. msch is then
called with the temporary schib. This schib is only written back
to the subchannel if all changes were applied.

Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
cdb912a40df8b8507ab60b3d52f9980c0ba1f44d 25-Dec-2008 Sebastian Ott <sebott@linux.vnet.ibm.com> [S390] cio: introduce cio_update_schib

There is the chance that we get condition code 0 for a stsch but
the resulting schib is not vaild. In the current code there are
2 cases:
* we do a check for validity of the schib after stsch, but at this
time we have already stored the invaild schib in the subchannel
structure. This may lead to problems.
* we don't do a check for validity, which is not that good either.

The patch addresses both issues by introducing the stsch wrapper
cio_update_schib which performs stsch on a local schib. This schib
is only written back to the subchannel if it's valid.

side note: For some functions (chp_events) the return codes are
different now (-ENXIO vs -ENODEV) but this shouldn't do harm
since the caller doesn't check for _specific_ errors.

Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
191fd44c11e10daf9d2cabd16935952e9c735949 25-Dec-2008 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] cio: get rid of compile warning

Move cio_tpi() to the rest of the CONFIG_CCW_CONSOLE functions to
get rid of this one:

drivers/s390/cio/cio.c:115: warning: 'cio_tpi' defined but not used

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
5a0d0e65379256b4da2c9092e197a2c761f51c01 10-Oct-2008 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] Move private simple udelay function to arch/s390/lib/delay.c.

Move cio's private simple udelay function to lib/delay.c and turn it
into something much more readable. So we have all implementations
at one place.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
b1e766137fe2462fd110e2930f74ef5636adb436 10-Oct-2008 Heiko Carstens <heiko.carstens@de.ibm.com> [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>
f9c9fe3ecfc0c5ff17728d0c5ee95a4e269ec190 10-Oct-2008 Peter Oberparleiter <peter.oberparleiter@de.ibm.com> [S390] cio: inline assembly cleanup

Fix incorrect in- and output constraints, remove volatile declaration
of inline assembly parameters and reformat constraint declarations to
be more consistent.

Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
1f4e7edabc4071cdff0133e7e04db2d7287d0e36 10-Oct-2008 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] bus_id -> dev_set_name() for css and ccw busses

Convert remaining s390 users setting bus_id to dev_set_name()
or init_name.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2a0217d5c7d22d6dd28f8ae5d20b06d24dc426b8 10-Oct-2008 Kay Sievers <kay.sievers@vrfy.org> [S390] bus_id -> dev_name conversions

bus_id -> dev_name() conversions in s390 code.

[cornelia.huck@de.ibm.com: minor adaptions]
Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
9adb8c1d4f0ac78b3469e377ce5f8a846cbaedaf 16-Sep-2008 Stefan Weinhuber <wein@de.ibm.com> [S390] cio: fix orb initialization in cio_start_key

The functions cio_tm_start_key and cio_start_key use the same private
orb structure of a subchannel, so the orb needs to be cleared of old
data before it is used again. A respective memset is missing from
cio_start_key and hereby added.

Signed-off-by: Stefan Weinhuber <wein@de.ibm.com>
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
c91ebe496120e05301465fff31094bfecf798e9f 09-Sep-2008 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: handle ssch() return codes correctly.

ssch() has two classes of return codes:
- condition codes (0-3) which need to be translated to Linux
error codes
- Linux error codes (-EIO on exceptions) which should be passed
to the caller (instead of erronously being handled like
condition code 3)

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
c78aa6cbace460081ddc6227f02b6d3203a21585 14-Jul-2008 Michael Ernst <mernst@de.ibm.com> [S390] Cleanup cio printk messages.

Unnecessary dev_info, dev_warn and printk messages are removed.

Signed-off-by: Michael Ernst <mernst@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
9d92a7e1b0d095c8be96ce5e592c6c5541684631 14-Jul-2008 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: Add chsc subchannel driver.

This patch adds a driver for subchannels of type chsc.

A device /dev/chsc is created which may be used to issue ioctls to:
- obtain information about the machine's I/O configuration
- dynamically change the machine's I/O configuration via
asynchronous chsc commands

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
6ef556ccc8fd256259745c4f0d0ab65aaf703824 14-Jul-2008 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: Use isc_{register,unregister}.

Use the new isc registration functions for all places that need
an I/O interruption subclass.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
da7c5af82879828409f6b81431ac2f9f353ab04e 14-Jul-2008 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: Allow adapter interrupt handlers per isc.

Enhance the adapter interruption API so that device drivers can
register a handler for a specific interruption subclass. This
will allow different device drivers to move to differently
prioritized subclasses in order to avoid congestion.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
3a3fc29a6d0626fb4897b7391c4e956efbacd394 14-Jul-2008 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: Introduce abstract isc definitions.

Replace the numeric values for I/O interruption subclass usage
with abstract definitions and collect them all in asm/isc.h.
This gives us a better overview of which iscs are actually used
and makes it possible to better spread out isc usage in the
future.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
83262d6349e60b9d10798d489719d80029c00798 14-Jul-2008 Peter Oberparleiter <peter.oberparleiter@de.ibm.com> [S390] cio: provide functions for fcx enabled I/O

Provide functions for assembling and starting fcx enabled I/O request
blocks.

Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
23d805b647db6c2063a13089497615efa9deacdd 14-Jul-2008 Peter Oberparleiter <peter.oberparleiter@de.ibm.com> [S390] cio: introduce fcx enabled scsw format

Extend the scsw data structure to the format required by fcx. Also
provide helper functions for easier access to fields which are present
in both the traditional as well as the modified format.

Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
b3a686f47a3615fcfec0a01c4103c50bb9621369 14-Jul-2008 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: Base message subchannel handling.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
44a1c19e3b47a7ac596808177ccd250b95f5e688 14-Jul-2008 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: Export some symbols for modular css drivers.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
c820de39bd083222f5be2563181c87493e436f7c 14-Jul-2008 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: Rework css driver.

Rework the css driver methods to provide sane callbacks for
subchannels of all types.

As a bonus, this cleans up and simplyfies the machine check
handling for I/O subchannels a lot.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
0ae7a7b250bdf7ee87c8346164ef3c47fb79dfbd 14-Jul-2008 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: Register all subchannels.

Register all valid subchannels, not only I/O subchannels.
Move I/O subchannel specific initialization to io_subchannel_probe().

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
9689b336e193680fc0fcaa33829dc670637e9c98 14-Jul-2008 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: Clear correct bit in cio_release_console().

Fallout from the console isc 7 -> 1 change.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
85b0d7c0ad92c47887bf6aeb424a14e7af14bd87 10-Jun-2008 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: Fix inverted isc priorities.

Priorities for I/O interruption subclasses range from 0 (highest)
to 7 (lowest). Unfortunately, the console has been using isc 7
instead of an isc with a higher priority than regular I/O
subchannels (which use 3). Fix this by making the console use
isc 1.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
139b83dd57248a3c8fcfb256e562311ad61478e9 07-May-2008 Michael Ernst <mernst@de.ibm.com> [S390] cio: Remove cio_msg kernel parameter.

The only sporadically used CIO_DEBUG messages are replaced by ordinary
CIO_MSG_EVENT messages. The CIO_MSG_EVENT messages debug levels are
consolidated.

Signed-off-by: Michael Ernst <mernst@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
edf2209692769d3e461c0351553098bc017c2caf 30-Apr-2008 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: Make isc handling more robust.

Introduce an ->isc field in the subchannel to store the desired
interruption subclass, since sch->schib.pmcw.isc may be overwritten
by the hardware on stsch() after machine checks.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
a806170e29c5468b1d641a22518243bdf1b8d58b 17-Apr-2008 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] Fix a lot of sparse warnings.

Most noteable part of this commit is the new local header file entry.h
which contains all the function declarations of functions that get only
called from asm code or are arch internal. That way we can avoid extern
declarations in C files.
This is more or less the same that was done for sparc64.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
5a62b192196af9a798e2f2f4c6a1324e7edf2f4b 17-Apr-2008 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] Convert s390 to GENERIC_CLOCKEVENTS.

This way we get rid of s390's NO_IDLE_HZ and use the generic dynticks
variant instead. In addition we get high resolution timers for free.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
43ca5c3a1cefdaa09231d64485b8f676118bf1e0 17-Apr-2008 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] Convert monitor calls to function calls.

Remove the program check generating monitor calls and use function
calls instead. Theres is no real advantage in using monitor calls,
but they do make debugging harder, because of all the program checks
it generates.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
361f494d4e62ee5f7a971bf34945deeb69392159 26-Jan-2008 Peter Tiedemann <ptiedem@de.ibm.com> [S390] usage of s390dbf: shrink number of debug areas to use.

Signed-off-by: Peter Tiedemann <ptiedem@de.ibm.com>
808e48882316dd4a325cd1cc382516945edad77d 26-Jan-2008 Michael Ernst <mernst@de.ibm.com> [S390] cio: memory leak in cio processing

Allocated kernel memory for locks is not freed in case of subchannel found
to be invalid.

Signed-off-by: Michael Ernst <mernst@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
b279a4f56d5476a0b9b0a97397f7a7bbe00b9b2f 26-Jan-2008 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: I/O subchannel specific fields.

Some fields may be !0 only for I/O subchannels. Add some checks
where required. Also adapt cio_enable_subchannel() to make the
caller specify the intparm, which makes it more generic.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
4e8e56c6713398f417317d449f50c08bf2756c66 26-Jan-2008 Peter Oberparleiter <peter.oberparleiter@de.ibm.com> [S390] cio: Extend adapter interrupt interface.

From: Cornelia Huck <cornelia.huck@de.ibm.com>

Change the adapter interrupt interface in order to allow multiple
adapter interrupt handlers to be registered. Indicators are now
allocated by cio instead of the device driver.

The qdio parts have been
Acked-by: Ursula Braun <ubraun@linux.vnet.ibm.com>

Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
cd6b4f27b9bb2a6a5ec82b96b87c85421257be6c 26-Jan-2008 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: Introduce subchannel->private.

Introduce a private pointer in struct subchannel to store
per-subchannel type data (cannot use dev->priv since this
is already used for something else).

Create a new header io_sch.h for I/O subchannel specific structures
and instructions.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
bc698bcf8897363732226dc9ecba044771679996 26-Jan-2008 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: Cleanup debug feature usage.

Cleanup cio_debug.h.
Also make CIO_DEBUG add the "cio:" prefix to the printk string
so that it isn't needed for the debug feature.
Fix outdated comments for cio_debug_init() and clean it up.
Enlarge cio_crw to the same size as cio_msg so we may actually
find some relevant information there.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
602b20f2bf335d0d5fce11cb2ade22aa74e7ba25 26-Jan-2008 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: css_driver: Use consistent parameters.

Make all callbacks in css_driver take a struct subchannel (and not
a struct device).

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
1842f2b1847155805f9cc8c834ef4272198b272b 12-Oct-2007 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: Disable channel measurements (cmf) on shutdown/reboot.

Disable channel measurements for all ccw devices via the ccw bus's
shutdown method. Clear residual cmf related information that may be
in the schib when setting up a new subchannel.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
e556bbbd9d2ff2b158915945ac82e2ac7def4d2f 27-Jul-2007 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: Clean up messages.

- Remove unneeded messages.
- Move some messages into the debug feature.
- Use dev_* where appropriate.
- Use "cio: " prefix consistently.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
e5854a5839fa426a7873f038080f63587de5f1f1 27-Apr-2007 Peter Oberparleiter <peter.oberparleiter@de.ibm.com> [S390] cio: Channel-path configure function.

Add a new attribute to the channel-path sysfs directory through which
channel-path configure operations can be triggered. Also listen for
hardware events requesting channel-path configure operations and
process them accordingly.

Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
e6b6e10ac1de116fc6d2288f185393014851cccf 27-Apr-2007 Peter Oberparleiter <peter.oberparleiter@de.ibm.com> [S390] cio: Introduce separate files for channel-path related code.

Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
f86635fad14c4a6810cf0e08488fc9129a3b3b32 27-Apr-2007 Peter Oberparleiter <peter.oberparleiter@de.ibm.com> [S390] cio: Introduce struct chp_id.

Introduce data type for channel-path IDs.

Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
6fc321fd7dd91f0592f37503219196835314fbb7 27-Apr-2007 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] cio/ipl: Clean interface between cio and ipl code.

Clean interface between cio and ipl code, so Peter stops complaining.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
615b04b301fd4e1b7680a498b873c4ae9baad92f 21-Feb-2007 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] nss: Free unused memory in kernel image.

With CONFIG_SHARED_KERNEL the kernel text segment that might be in a
read only memory sections starts at 1MB. Memory between 0x12000 and
0x100000 is unused then. Free this, so we have appr. an extra MB
of memory available.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
46b05d2617c8efd8ec6b19acd2c95541a0118c13 21-Feb-2007 Michael Holzheu <holzheu@de.ibm.com> [S390] New header file ipl.h

Setup.h has been misused for ipl related stuff in the past. We now move
everything, which has to do with ipl and reipl to a new header file named
"ipl.h".

Signed-off-by: Michael Holzheu <holzheu@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
4d284cac76d0bfebc42d76b428c4e44d921200a9 05-Feb-2007 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] Avoid excessive inlining.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
ab14de6c37fae22911ba99f4171613e6d758050b 05-Feb-2007 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] Convert memory detection into C code.

Hopefully this will make it more maintainable and less error prone.
Code makes use of search_exception_tables(). Since it calls this
function before the kernel exeception table is sorted, there is an
early call to sort_main_extable().

This way it's easy to use the already present infrastructure of fixup
sections. Also this would allows to easily convert the rest of
head[31|64].S into C code.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
d54853ef8cb17296ac7bce9c77430fb7c80532d0 05-Feb-2007 Martin Schwidefsky <schwidefsky@de.ibm.com> [S390] ETR support.

This patch adds support for clock synchronization to an external time
reference (ETR). The external time reference sends an oscillator
signal and a synchronization signal every 2^20 microseconds to keep
the TOD clocks of all connected servers in sync. For availability
two ETR units can be connected to a machine. If the clock deviates
for more than the sync-check tolerance all cpus get a machine check
that indicates that the clock is out of sync. For the lovely details
how to get the clock back in sync see the code below.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
347d59d7e9739ff2acbaa751b6225ecb335c3f29 05-Feb-2007 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] cio: Don't spam debug feature.

Lower priority of "Blacklisted device detected" messages so we don't
overwrite more useful messages.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
6faf4444f2445b068a4f75a86ae81b104c0eed2c 09-Jan-2007 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] cio: use barrier() in stsch_reset.

Use barrier() in stsch_reset() instead of duplicating the stsch()
inline assembly and adding "memory" to the clobberlist.
Pointed out by Chuck Ebbert.

Real fix would be to add a fixup section to the stsch() and extend the
basic program check handler so it searches the exception tables in case
of a program check.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
aa77015c4e94cb1d30680646c163d7ae1f93f941 28-Dec-2006 Michael Holzheu <holzheu@de.ibm.com> [S390] cio: fix stsch_reset.

Copy inline assembly of stsch and add "memory" to clobber list in order
to prevent gcc from optimizing away the checking of the global variable
"pgm_check_occured".

Signed-off-by: Michael Holzheu <holzheu@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
a45e14148fb34175cba042df8979e7982758635f 15-Dec-2006 Michael Holzheu <holzheu@de.ibm.com> [S390] Fix reboot hang on LPARs

Reboot hangs on LPARs without diag308 support. The reason for this is,
that before the reboot is done, the channel subsystem is shut down.
During the reset on each possible subchannel a "store subchannel" is
done. This operation can end in a program check interruption, if the
specified subchannel set is not implemented by the hardware. During
the reset, currently we do not have a program check handler, which
leads to the described kernel bug. We install now a new program check
handler for the reboot code to fix this problem.

Signed-off-by: Michael Holzheu <holzheu@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
d7b5a4c94f49131811112526f7d404a50f0b5ca7 08-Dec-2006 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] Support for disconnected devices reappearing on another subchannel.

- create a 'pseudo_subchannel' per channel subsystem (the 'orphanage')
- use the orphanage as a shelter for ccw_devices that can't remain on the same
subchannel

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2ec2298412e1ab4674b3780005058d4f0b8bd858 08-Dec-2006 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] subchannel lock conversion.

Convert the subchannel lock to a pointer to a lock. Needed for the dynamic
subchannel mapping patch.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
15e9b586e0bd3692e2a21c5be178810d9d32214e 04-Dec-2006 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] Reset infrastructure for re-IPL.

In case of re-IPL and diag308 doesn't work we have to reset all devices
manually and wait synchronously that each reset finished.
This patch adds the necessary infrastucture and the first exploiter of it.

Subsystems that need to add a function that needs to be called at re-IPL
may register/unregister this function via

struct reset_call {
struct reset_call *next;
void (*fn)(void);
};

void register_reset_call(struct reset_call *reset);
void unregister_reset_call(struct reset_call *reset);

When the registered function get called the context is:

- all cpus beside the current one are stopped
- all machine checks and interrupts are disabled
- prefixing is disabled
- a default machine check handler is available for use

The registered functions may not take any locks are sleep.

For the common I/O layer part of this patch:

Introduce a reset_call css_reset that does the following:
- clear all subchannels
- perform a rchp on all channel paths and wait for the resulting
machine checks
This replaces the calls to clear_all_subchannels() and
cio_reset_channel_paths() for kexec and ccw reipl. reipl_ccw_dev() now
uses reipl_find_schid() to determine the subchannel id for a given
device id.
Also remove cio_reset_channel_paths() and friends since they are not
needed anymore.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
9d0a57cbdb4976f382eb1c03baee338e467b6592 11-Oct-2006 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] irq change improvements.

Remove the last few places where a pointer to pt_regs gets passed.
Also make sure we call set_irq_regs() before irq_enter() and after
irq_exit(). This doesn't fix anything but makes sure s390 looks the
same like all other architectures.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
5a489b9846f688db7e69aa7ccb23c53459a9c20e 06-Oct-2006 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] irq change build fixes.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
28bdc6f6233f380ddc0b430cabd88ffeafea34c7 20-Sep-2006 Peter Oberparleiter <peter.oberparleiter@de.ibm.com> [S390] cio: always query all paths on path verification.

Reappearing channel paths are sometimes not utilized by CCW devices
because path verification incorrectly relies on path-operational-mask
information which is not updated until a channel path has been used
again.
Modify path verification procedure to always query all available paths
to a device.

Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
e0e32c8eba86fd5ea79eefad6f2c0b4988dfd02a 20-Sep-2006 Peter Oberparleiter <peter.oberparleiter@de.ibm.com> [S390] cio: update path groups on logical CHPID changes.

CHPIDs that are logically varied off will not be removed from
a CCW device's path group because resign-from-pathgroup command is
issued with invalid path mask of 0 because internal CCW operations
are masked by the logical path mask after the relevant bits are
cleared by the vary operation.
Do not apply logical path mask to internal operations.

Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
e87bfe51b5ca2db99dd680bbb1e8fe3c94b607df 20-Sep-2006 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] convert some assembler to C.

Convert GET_IPL_DEVICE assembler macro to C function.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
ff6b8ea68f4b7353f88b97024f28127e2148aa00 20-Sep-2006 Michael Holzheu <holzheu@de.ibm.com> [S390] ipl/dump on panic.

It is now possible to specify a ccw/fcp dump device which is used to
automatically create a system dump in case of a kernel panic. The dump
device can be configured under /sys/firmware/dump.
In addition it is now possible to specify a ccw/fcp device which is used
for the next reboot of Linux. The reipl device can be configured under
/sys/firmware/reipl.

Signed-off-by: Michael Holzheu <holzheu@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
d2c993d845781d160a7ef759a3e65c6892c4a270 12-Jul-2006 Heiko Carstens <heiko.carstens@de.ibm.com> [S390] Fix sparse warnings.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
7e560814de1972e1bfc780616841d7a0032ca467 12-Jul-2006 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] path grouping and path verifications fixes.

1. Multipath devices for which SetPGID is not supported are not handled well.
Use NOP ccws for path verification (sans path grouping) when SetPGID is not
supported.
2. Check for PGIDs already set with SensePGID on _all_ paths (not just the
first one) and try to find a common one. Moan if no common PGID can be
found (and use NOP verification). If no PGIDs have been set, use the css
global PGID (as before). (Rationale: SetPGID will get a command reject if
the PGID it tries to set does not match the already set PGID.)
3. Immediately before reboot, issue RESET CHANNEL PATH (rcp) on all chpids. This
will remove the old PGIDs. rcp will generate solicited CRWs which can be
savely ignored by the machine check handler (all other actions create
unsolicited CRWs).

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
6ab4879a0d074c938fd17dba141dce042fc17bee 12-Jul-2006 Cornelia Huck <cornelia.huck@de.ibm.com> [S390] subchannel register/unregister mutex.

Add a reg_mutex to prevent unregistering a subchannel before it has been
registered. Since 2.6.17, we've seen oopses in kslowcrw when a device is
found to be not operational during sense id when doing initial device
recognition; it is not clear yet why that particular problem was not (yet)
observed with earlier kernels...

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
1f194a4c393103ac925001d7e04b05fbb122580d 03-Jul-2006 Heiko Carstens <heiko.carstens@de.ibm.com> [PATCH] lockdep: irqtrace subsystem, s390 support

irqtrace support for s390.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Arjan van de Ven <arjan@infradead.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
6ab3d5624e172c553004ecc862bfeac16d9d68b7 30-Jun-2006 Jörn Engel <joern@wohnheim.fh-wedel.de> Remove obsolete #include <linux/config.h>

Signed-off-by: Jörn Engel <joern@wohnheim.fh-wedel.de>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
06fbcb104ad16c22eb5718ae598b306c777be8af 11-Apr-2006 Peter Oberparleiter <peter.oberparleiter@de.ibm.com> [PATCH] s390: increase cio_trace debug event size

Debugging events in cio_trace/hex_ascii are truncated for some trace entries.
Increase trace event size to 16 bytes to cover longer text events, make
CIO_HEX_EVENT an inline function that loops to cover bigger hex events.

Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
e018ba1fceee5bd306e31f6e3a60934d5f143ac5 01-Feb-2006 Heiko Carstens <heiko.carstens@de.ibm.com> [PATCH] s390: Remove CVS generated information

- Remove all CVS generated information like e.g. revision IDs from
drivers/s390 and include/asm-s390 (none present in arch/s390).

- Add newline at end of arch/s390/lib/Makefile to avoid diff message.

Acked-by: Andreas Herrmann <aherrman@de.ibm.com>
Acked-by: Frank Pavlic <pavlic@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
4ce3b30cf32c5c078518f0f3e6623bcb6eee9872 14-Jan-2006 Cornelia Huck <cornelia.huck@de.ibm.com> [PATCH] s390: email-address change

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
347a8dc3b815f0c0fa62a1df075184ffe4cbdcf1 06-Jan-2006 Martin Schwidefsky <schwidefsky@de.ibm.com> [PATCH] s390: cleanup Kconfig

Sanitize some s390 Kconfig options. We have ARCH_S390, ARCH_S390X,
ARCH_S390_31, 64BIT, S390_SUPPORT and COMPAT. Replace these 6 options by
S390, 64BIT and COMPAT.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
fb6958a594da49ece869793e6ec163b89fc5f79f 06-Jan-2006 Cornelia Huck <cohuck@de.ibm.com> [PATCH] s390: multiple subchannel sets support

Add support for multiple subchannel sets. Works with arbitrary devices in
subchannel set 1 and is transparent to device drivers. Although currently
only two subchannel sets are available, this will work with the architectured
maximum number of subchannel sets as well.

Signed-off-by: Cornelia Huck <cohuck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
f97a56fb768e5fe9cd07c56ca47870136bb5530c 06-Jan-2006 Cornelia Huck <cohuck@de.ibm.com> [PATCH] s390: introduce for_each_subchannel

for_each_subchannel() is an iterator calling a function for every possible
subchannel id until non-zero is returned. Convert the current iterating
functions to it.

Signed-off-by: Cornelia Huck <cohuck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
a8237fc4108060402d904bea5e1062e22e731969 06-Jan-2006 Cornelia Huck <cohuck@de.ibm.com> [PATCH] s390: introduce struct subchannel_id

This patch introduces a struct subchannel_id containing the subchannel number
(formerly referred to as "irq") and switches code formerly relying on the
subchannel number over to it.

While we're touching inline assemblies anyway, make sure they have correct
memory constraints.

Signed-off-by: Cornelia Huck <cohuck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
4c24da79e29537f0e240a331220a1c46cb9bc085 04-Sep-2005 Cornelia Huck <cohuck@de.ibm.com> [PATCH] s390: reIPL fix and extern/static inline

Common i/o layer changes:

- Collect the irb at the correct subchannel when waiting for the clear
interrupt during subchannel cleaning befor reIPL - don't stop at the first
interrupt that comes in.

- Change "extern __inline__" to "static inline".

- Remove unneeded qdio includes.

Signed-off-by: Cornelia Huck <cohuck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
66a464dbc8e0345b6f972b92bf1118e043d7c987 25-Jun-2005 Michael Holzheu <holzheu@de.ibm.com> [PATCH] s390: debug feature changes

This patch changes the memory allocation method for the s390 debug feature.
Trace buffers had been allocated using the get_free_pages() function before.
Therefore it was not possible to get big memory areas in a running system due
to memory fragmentation. Now the trace buffers are subdivided into several
subbuffers with pagesize. Therefore it is now possible to allocate more
memory for the trace buffers and more trace records can be written.

In addition to that, dynamic specification of the size of the trace buffers is
implemented. It is now possible to change the size of a trace buffer using a
new debugfs file instance. When writing a number into this file, the trace
buffer size is changed to 'number * pagesize'.

In the past all the traces could be obtained from userspace by accessing files
in the "proc" filesystem. Now with debugfs we have a new filesystem which
should be used for debugging purposes. This patch moves the debug feature
from procfs to debugfs.

Since the interface of debug_register() changed, all device drivers, which use
the debug feature had to be adjusted.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
0b642ede47969d4180b0922d982777fe64379228 01-May-2005 Peter Oberparleiter <peter.oberparleiter@de.ibm.com> [PATCH] s390: default storage key

Provide an easy way to define a non-zero storage key at compile time. This is
useful for debugging purposes.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 17-Apr-2005 Linus Torvalds <torvalds@ppc970.osdl.org> Linux-2.6.12-rc2

Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.

Let it rip!