This patch contains the following fix for the common I/O layer
in linux kernel version 2.2.16:
Description:
Invalid generation of return codes in the common I/O layer
causes overhead on RVA devices.
Symptom:
Severe degradation in RVA performance with 7/23 patches
(zSeries).
Problem:
The return codes for s390_SetPGID and s390_SensePGID were
messed up and incorrect error handling was initiated. This
introduced unnecessary processing overhead on RVA devices.
Solution:
Incorrect code removed.
To create the
complete kernel sources, the following patches need to be applied
in sequence:
linux-2.2.16.tar.gz (GPL)
+ linux-2.2.16.2-s390.diff (IBM)
+ linux-2.2.16-dasd_erp.diff (IBM)
+ linux-2.2.16-dasd.diff (IBM)
+ linux-2.2.16-xchg.diff (IBM)
+ linux-2.2.16-iucv.diff (IBM)
+ linux-2.2.16-pgtable.diff (IBM)
+ linux-2.2.16-sense.diff (IBM)
+ linux-2.2.16-signal.diff (IBM)
+ linux-2.2.16-pagecache.diff (IBM)
+ linux-2.2.16-iucv2.diff (IBM)
+ linux-2.2.16-io.diff (IBM)
+ linux-2.2.16-dasd_performance.diff (IBM)
+ linux-2.2.16-tape.diff (IBM)
+ linux-2.2.16-s390-dump.diff (IBM)
+ linux-2.2.16-fixes.diff (IBM)
+ linux-2.2.16-iucv3.diff (IBM)
+ linux-2.2.16-dasd_fba.diff (IBM)
+ linux-2.2.16-rva_perf.diff (IBM)
This patch contains the following fix for the DASD driver for
linux kernel version 2.2.16:
Description:
The max_blocks setting for FBA devices was wrong.
Symptom:
Message "ccwcache:Channel program to large to fit on one page"
is printed, io errors occur.
Problem:
max_blocks was miscalculated because the define_extend and
locate_record command words, which are always at the beginning of a
chain, were not counted.
Solution:
The max_blocks calculation was fixed.
To create the
complete kernel sources, the following patches need to be applied
in sequence:
linux-2.2.16.tar.gz (GPL)
+ linux-2.2.16.2-s390.diff (IBM)
+ linux-2.2.16-dasd_erp.diff (IBM)
+ linux-2.2.16-dasd.diff (IBM)
+ linux-2.2.16-xchg.diff (IBM)
+ linux-2.2.16-iucv.diff (IBM)
+ linux-2.2.16-pgtable.diff (IBM)
+ linux-2.2.16-sense.diff (IBM)
+ linux-2.2.16-signal.diff (IBM)
+ linux-2.2.16-pagecache.diff (IBM)
+ linux-2.2.16-iucv2.diff (IBM)
+ linux-2.2.16-io.diff (IBM)
+ linux-2.2.16-dasd_performance.diff (IBM)
+ linux-2.2.16-tape.diff (IBM)
+ linux-2.2.16-s390-dump.diff (IBM)
+ linux-2.2.16-fixes.diff (IBM)
+ linux-2.2.16-iucv3.diff (IBM)
+ linux-2.2.16-dasd_fba.diff (IBM)
Everyone who is using FBA DASD devices should apply this patch.
This patch contains the following fix for the IUCV driver for
linux-2.2.16:
Description:
Segmentation error using a MP system and IUCV.
Symptom:
Get segment exception on 'shutdown -h now' with IUCV
configured.
Problem:
The problem is caused when one CPU issues an
iucv_declare_buffer (during registration or an incoming
connection), and another CPU issues an iucv_retrieve_buffer (when
unregistering). The retrieve buffer call must be done on the same
CPU as the declare buffer call (or an operation exception
results).
Solution:
The problem is solved by making sure that:
Each CPU must call IUCV initialization when it is brought
online since each CPU must issue IUCV DCLBFR in order to receive
IUCV interrupts.
A CPU cannot enable for external interrupts while the IUCV top
half is running on that CPU (the other CPUs can remain
enabled).
To create the
complete kernel sources, the following patches need to be applied
in sequence:
linux-2.2.16.tar.gz (GPL)
+ linux-2.2.16.2-s390.diff (IBM)
+ linux-2.2.16-dasd_erp.diff (IBM)
+ linux-2.2.16-dasd.diff (IBM)
+ linux-2.2.16-xchg.diff (IBM)
+ linux-2.2.16-iucv.diff (IBM)
+ linux-2.2.16-pgtable.diff (IBM)
+ linux-2.2.16-sense.diff (IBM)
+ linux-2.2.16-signal.diff (IBM)
+ linux-2.2.16-pagecache.diff (IBM)
+ linux-2.2.16-iucv2.diff (IBM)
+ linux-2.2.16-io.diff (IBM)
+ linux-2.2.16-dasd_performance.diff (IBM)
+ linux-2.2.16-tape.diff (IBM)
+ linux-2.2.16-s390-dump.diff (IBM)
+ linux-2.2.16-fixes.diff (IBM)
+ linux-2.2.16-iucv3.diff (IBM)
This patch
contains the following fixes for the linux kernel version 2.2.16:
Description:
Kernel reboot problem.
Symptom:
The system fails to start up correctly after a reboot.
Problem:
The CCW prefetch control bit in the operation
request block was not set in the reipl routine. This leads to
incorrect execution of self-modifying IPL CCW chains.
Description:
Kernel hangs during boot with disks shared with z/OS.
z/OS unable to copy EMC volumes shared with Linux
Symptom:
Trying to establish path groups during IPL/Boot for shared
volumes may cause IPL/Boot hangs.
Linux defined path groups may prevent z/OS to create copies of
its own volumes using EMC utilities.
Problem:
During IPL/Boot the common I/O layer
establishes path groupes during internal device recognition,
regardless whether any device driver will eventually operate the
device. This is now avoided unless a device driver explicitely
claims ownership for a device.
Description:
in_interrupt counting incorrect
Symptom:
NFS ceases to work after some time.
Problem:
irq_enter/irq_exit was not done in the I/O
interruption path. This makes cli() continue processing without
waiting for the global_irq_lock although another processor is in
interrupt. This leads to various other problems besides this one
(NFS).
Description:
Parameter parsing problem.
Symptom:
Some multiline kernel parameter won't work.
Problem:
Some editors use the sequence 0x0d0a as line
end delimiter instead of 0x0a. The character 0x0d was not converted
to a blank which can confuse the parameter parsing.
Description:
User program crashes on entry to signal handler.
Symptom:
The SIGILL signal handler could crash trying to
recover from special illegal instructions.
Problem:
Instructions that switch the address space
control are intercepted by the linux kernel after the instruction
has been executed. The access space control bits in the user PSW
need to be resetted before calling the signal handler.
Description:
Console device node major 5/minor 1 does not work with 3215.
Symptom:
The 3215 device driver does not react to
activity on the special device node major 5/minor 1.
Problem:
The 3215 function that is supposed to return
the device number of the console device returned a wrong
number.
Description:
Kernel problems related to the compiler version.
Symptom:
An "old" kernel (2.2.x) compiled with the new
2.95.3 compiler backend does not work at all.
Problem:
The new compiler backend has an improved
condition code handling that makes better use of the condition
code. This requires that all inline assemblies that clobber the
condition code specify that fact on the clobber list.
Description:
Register information incorrect after a panic or a halt.
Symptom:
After a panic or a halt command the lowcores of
the CPUs do not contain the dumped registers.
Problem:
The order "stop and store status" dumps the
processor registers into absolute 0 and not into real 0. The fixed
code now uses the orders "stop" and "store status at address" to
make every CPU dump to its own prefix page.
To create the
complete kernel sources, the following patches need to be applied
in sequence:
linux-2.2.16.tar.gz (GPL)
+ linux-2.2.16.2-s390.diff (IBM)
+ linux-2.2.16-dasd_erp.diff (IBM)
+ linux-2.2.16-dasd.diff (IBM)
+ linux-2.2.16-xchg.diff (IBM)
+ linux-2.2.16-iucv.diff (IBM)
+ linux-2.2.16-pgtable.diff (IBM)
+ linux-2.2.16-sense.diff (IBM)
+ linux-2.2.16-signal.diff (IBM)
+ linux-2.2.16-pagecache.diff (IBM)
+ linux-2.2.16-iucv2.diff (IBM)
+ linux-2.2.16-io.diff (IBM)
+ linux-2.2.16-dasd_performance.diff (IBM)
+ linux-2.2.16-tape.diff (IBM)
+ linux-2.2.16-s390-dump.diff (IBM)
+ linux-2.2.16-fixes.diff (IBM)
This patch
provides two LINUX for S/390 stand alone dump records for
generating system memory dumps on dasd volumes and tapes. It
contains the following:
Two stand alone dump records
A readme file (s390dump.txt) which explains how to use the
tools
A Kerntypes dummy module that includes headers for all kernel
types that the dump analysis tool lcrash needs.
The dumps can be analyzed with the dump analysis tool 'lcrash' from
the lkcdutils package. lkcdutils version 3.1.2 includes LINUX for
S/390 support.
The dump records are built with 'make image' and are located in
arch/s390/boot. The Kerntypes file can be built with 'make
Kerntypes' which creates the file in the Linux toplevel
directory.
For more details refer to the "Using the dump tools" manual in
the Documentation
section.
To create the complete kernel sources, the following patches
need to be applied in sequence:
linux-2.2.16.tar.gz (GPL)
+ linux-2.2.16.2-s390.diff (IBM)
+ linux-2.2.16-dasd_erp.diff (IBM)
+ linux-2.2.16-dasd.diff (IBM)
+ linux-2.2.16-xchg.diff (IBM)
+ linux-2.2.16-iucv.diff (IBM)
+ linux-2.2.16-pgtable.diff (IBM)
+ linux-2.2.16-sense.diff (IBM)
+ linux-2.2.16-signal.diff (IBM)
+ linux-2.2.16-pagecache.diff (IBM)
+ linux-2.2.16-iucv2.diff (IBM)
+ linux-2.2.16-io.diff (IBM)
+ linux-2.2.16-dasd_performance.diff (IBM)
+ linux-2.2.16-tape.diff (IBM)
+ linux-2.2.16-s390-dump.diff (IBM)
This patch contains the following kernel enhancement:
device driver for channel attached tape devices
This device driver can be used together with IBM 3480 or IBM 3490
magnetic tape subsystems and 100% compatibles.
The updated "LINUX for S/390 Device Drivers and Installation
Commands" manual in the Documentation section contains a
description of the tape device driver.
Everybody who needs to access these devices should apply this
patch.
To create the complete kernel sources, the following patches
need to be applied in sequence:
linux-2.2.16.tar.gz (Vanilla kernel)
+ linux-2.2.16.2-s390.diff (IBM)
+ linux-2.2.16-dasd_erp.diff (IBM)
+ linux-2.2.16-dasd.diff (IBM)
+ linux-2.2.16-xchg.diff (IBM)
+ linux-2.2.16-iucv.diff (IBM)
+ linux-2.2.16-pgtable.diff (IBM)
+ linux-2.2.16-sense.diff (IBM)
+ linux-2.2.16-signal.diff (IBM)
+ linux-2.2.16-pagecache.diff (IBM)
+ linux-2.2.16-iucv2.diff (IBM)
+ linux-2.2.16-io.diff (IBM)
+ linux-2.2.16-dasd_performance.diff (IBM)
+ linux-2.2.16-tape.diff (IBM)
This patch contains the following kernel performance fix:
Description:
Dynamically allocated DASD majors do not perform well.
Symptom:
The disk I/O performance for DASD devices in
dynamically allocated majors (all but major 94, from /dev/dasdbm
on) is poor.
Problem:
The generic block device layer does not perform
merging of requests to these devices due to a static list of device
driver's major numbers that support request merging.
Solution:
Introduce an array where the device driver
writes down whether it supports request clustering or not when
registering a dynamic major. Enhance the request merging code to
evaluate this setting.
Everybody who uses more than 64 DASDs in a Linux image should apply this patch.
To create the complete kernel
sources, the following patches need to be applied in sequence:
linux-2.2.16.tar.gz (Vanilla kernel)
+ linux-2.2.16.2-s390.diff (IBM)
+ linux-2.2.16-dasd_erp.diff (IBM)
+ linux-2.2.16-dasd.diff (IBM)
+ linux-2.2.16-xchg.diff (IBM)
+ linux-2.2.16-iucv.diff (IBM)
+ linux-2.2.16-pgtable.diff (IBM)
+ linux-2.2.16-sense.diff (IBM)
+ linux-2.2.16-signal.diff (IBM)
+ linux-2.2.16-pagecache.diff (IBM)
+ linux-2.2.16-iucv2.diff (IBM)
+ linux-2.2.16-io.diff (IBM)
+ linux-2.2.16-dasd_performance.diff (IBM)
Kernel hangs on boot when certain devices are connected.
Symptom:
When booting Linux in an LPAR with certain
devices connected, the boot process fails to complete ("Operating
System Messages" are never displayed). When deactivating the chpid
in question, the boot goes through.
Problem:
During device initialization, Linux tries to
perform the Set Path Group ID operation on the device. If this
results in an unit check, Linux will try to retry the operation. If
the operation keeps failing, the loop should be aborted after a
certain number of retries. Due to a bug, this retry count was not
maintained correctly, causing an endless loop in certain
situations.
Solution:
Limit the number of retries to 5.
Everybody should apply this patch.
To create the complete kernel
sources, the following patches need to be applied in sequence:
linux-2.2.16.tar.gz (GPL)
+ linux-2.2.16.2-s390.diff (IBM)
+ linux-2.2.16-dasd_erp.diff (IBM)
+ linux-2.2.16-dasd.diff (IBM)
+ linux-2.2.16-xchg.diff (IBM)
+ linux-2.2.16-iucv.diff (IBM)
+ linux-2.2.16-pgtable.diff (IBM)
+ linux-2.2.16-sense.diff (IBM)
+ linux-2.2.16-signal.diff (IBM)
+ linux-2.2.16-pagecache.diff (IBM)
+ linux-2.2.16-iucv2.diff (IBM)
+ linux-2.2.16-io.diff (IBM)
When putting high network load on the IUCV
driver, the kernel crashes with messages like "kfree_skb passed an
skb still on a list".
Problem:
When encountering certain error situations, the
IUCV transmit handler will drop the packet, but pass an incorrect
error code up to the Linux network layer that causes that layer to
requeue the packet for retry. As the memory holding the packet data
was already freed by the driver, this will cause
crashes.
Solution:
Fixed behaviour of IUCV driver in transmit error situations.
Everybody who uses IUCV should apply this patch.
To create the complete kernel
sources, the following patches need to be applied in sequence:
linux-2.2.16.tar.gz (GPL)
+ linux-2.2.16.2-s390.diff (IBM)
+ linux-2.2.16-dasd_erp.diff (IBM)
+ linux-2.2.16-dasd.diff (IBM)
+ linux-2.2.16-xchg.diff (IBM)
+ linux-2.2.16-iucv.diff (IBM)
+ linux-2.2.16-pgtable.diff (IBM)
+ linux-2.2.16-sense.diff (IBM)
+ linux-2.2.16-signal.diff (IBM)
+ linux-2.2.16-pagecache.diff (IBM)
+ linux-2.2.16-iucv2.diff (IBM)
Possible data corruption when writing to block
devices (e.g. DASD or ramdisk).
Problem:
In very rare cases, writing to a block device
updates only the buffer cache, not the page cache. While the
modified data is nevertheless written to the device correctly,
subsequent *reads* will retrieve out-of-date data from the page
cache.
This is a bug in Linux common code which
triggers only on architectures where kernel space and user space
share the same range of addresses (e.g. S/390).
Solution:
Always update the page cache if required.
Note:
If you use DB2 UDB on Linux for S/390 and get error messages about
"partial page writes", this is most likely caused by this bug.
Everybody should apply this patch.
To create the complete kernel
sources, the following patches need to be applied in sequence:
linux-2.2.16.tar.gz (GPL)
+ linux-2.2.16.2-s390.diff (IBM)
+ linux-2.2.16-dasd_erp.diff (IBM)
+ linux-2.2.16-dasd.diff (IBM)
+ linux-2.2.16-xchg.diff (IBM)
+ linux-2.2.16-pgtable.diff (IBM)
+ linux-2.2.16-sense.diff (IBM)
+ linux-2.2.16-signal.diff (IBM)
+ linux-2.2.16-pagecache.diff (IBM)
This patch contains the following five DASD driver bug fixes:
Description: Wrong DASD names. Symptom: The names of the 702th and the following DASD
devices in the /proc filesystem are wrong. Problem: The calculation of the first and second letter
in the DASD name is incorrect. Solution: Fix the calculation of DASD names.
Description: Unresolvable calls to unblank_console. Symptom: The insertion of the DASD module fails with the
message "dasd_mod.o: unresolved symbol unblank_console" Problem: The linux-2.2.16-dasd_erp patch incorporated a
call to unblank_console for debugging purposes. Because the
function unblank_console is not exported the load of the DASD
module compiled with the dasd_erp patch fails. Solution: Remove the calls to unblank_console.
Description: Bad current working directories after removal
of the DASD module. Symptom: Segmentation faults after removal of the DASD module. Problem: The removal of the DASD module removes the
/proc/dasd directory too. If the current working directory of a
user process is in /proc/dasd that process might crash due to
accesses to inodes that no longer exist. Solution: Prevent the removal of the DASD module as long
as any user process has its current working directory in
/proc/dasd.
Description: Bad DASD major info structure. Symptom: Segmentation faults while reading /proc/dasd/devices. Problem: This only happens if there are too many DASD
devices defined. In that case the allocation of a dynamic block
major can fail. The incomplete DASD major info structure is
erroneously added to the list of DASD majors. Solution: Move the insertion of the DASD major info
structure to prevent adding an incomplete structure.
Description: /proc/partitions too small. Symptom: Errors creating logical volumes in a system
with more than 130 DASD devices. Problem: The partitions /proc entry uses the simple form
for /proc entries. This simple form is limited to 4k of data. With
more than 130 DASD devices 4k is not enough. Solution: Use the alternative /proc entry api that allows
for more than 4k of data.
Everybody should apply this patch.
To create the complete compiler
sources, the following patches need to be applied in
sequence:
linux-2.2.16.tar.gz (GPL)
+ linux-2.2.16.2-s390.diff (IBM)
+ linux-2.2.16-dasd_erp.diff (IBM)
+ linux-2.2.16-dasd.diff (IBM)
linux-2.2.16-iucv
This patch contains the following IUCV driver bug fix:
Description: IUCV crashes due to improper use of kmalloc. Symptom: Error message "kmem_grow: Called non-atomically
from int" while using the iucv network driver. Problem: IUCV calls kmalloc within an interrupt with
inappropriate options. Solution: Correct the calls to kmalloc.
You need this patch only if you are using iucv.
To create the
complete compiler sources, the following patches need to be applied
in sequence:
linux-2.2.16.tar.gz (GPL)
+ linux-2.2.16.2-s390.diff (IBM)
+ linux-2.2.16-dasd_erp.diff (IBM)
+ linux-2.2.16-dasd.diff (IBM)
+ linux-2.2.16-xchg.diff (IBM)
+ linux-2.2.16-iucv.diff (IBM)
linux-2.2.16-pgtable
This patch contains the following kernel bug fix:
Description: Page directories allocated 4 instead of two pages. Symptom: Memory is wasted. Problem: Too many pages are allocated in the allocation
and the release function for page directories. Solution: Correct the number of pages in the allocation
and the release routines for page directories.
Everybody should apply this patch.
To create the complete compiler
sources, the following patches need to be applied in
sequence:
linux-2.2.16.tar.gz (GPL)
+ linux-2.2.16.2-s390.diff (IBM)
+ linux-2.2.16-dasd_erp.diff (IBM)
+ linux-2.2.16-dasd.diff (IBM)
+ linux-2.2.16-xchg.diff (IBM)
+ linux-2.2.16-iucv.diff (IBM)
+ linux-2.2.16-pgtable.diff (IBM)
linux-2.2.16-sense
This patch contains the following kernel bug fix:
Description: Test for the presence of I/O sense data. Symptom: Device drivers may stop working or might start
inappropriate recovery actions. Problem: The expression used to test if sense data is
available missed some clauses. Solution: Add the missing clauses in the test for sense
data.
Everybody should apply this patch.
To create the
complete compiler sources, the following patches need to be applied
in sequence:
linux-2.2.16.tar.gz (GPL)
+ linux-2.2.16.2-s390.diff (IBM)
+ linux-2.2.16-dasd_erp.diff (IBM)
+ linux-2.2.16-dasd.diff (IBM)
+ linux-2.2.16-xchg.diff (IBM)
+ linux-2.2.16-iucv.diff (IBM)
+ linux-2.2.16-pgtable.diff (IBM)
+ linux-2.2.16-sense.diff (IBM)
linux-2.2.16-signal
This patch contains the following kernel bug fix:
Description: Corrects the test if an interrupted system call
needs to be restarted. Symptom: A program can return from a system call with
error -512 (ERESTARTSYS) although the system call should have been
restarted. Problem: The check if a system call needs a restart is wrong. Solution: Correct the check.
In addition this patch adds two
more parameters to the signal handler. These extra parameters are
the trap number and the instruction address where the trap
happened. This information was not added to the sigcontext
structure to avoid breaking binary compatibility.
Everybody should apply this patch.
To create the complete compiler
sources, the following patches need to be applied in
sequence:
linux-2.2.16.tar.gz (GPL)
+ linux-2.2.16.2-s390.diff (IBM)
+ linux-2.2.16-dasd_erp.diff (IBM)
+ linux-2.2.16-dasd.diff (IBM)
+ linux-2.2.16-xchg.diff (IBM)
+ linux-2.2.16-iucv.diff (IBM)
+ linux-2.2.16-pgtable.diff (IBM)
+ linux-2.2.16-sense.diff (IBM)
+ linux-2.2.16-signal.diff (IBM)
linux-2.2.16-xchg
This patch contains the following kernel bug fix:
Description: __xchg function didn't work for byte and halfword operands. Symptom: Device drivers that use __xchg won't work. Problem: __xchg on byte and halfword operands swapped
the wrong bytes of the first argument. Solution: Correct the calculation in __xchg.
Note:
The __xchg function is used in kernel version 2.2.16 only on 4 byte
words and is a inline function. Only kernel additions on top of
2.2.16 that have been compiled with the 2.2.16 header files can be
affected.
You need this patch only if you compile kernel add-ons.
To create the
complete compiler sources, the following patches need to be applied
in sequence:
linux-2.2.16.tar.gz (GPL)
+ linux-2.2.16.2-s390.diff (IBM)
+ linux-2.2.16-dasd_erp.diff (IBM)
+ linux-2.2.16-dasd.diff (IBM)
+ linux-2.2.16-xchg.diff (IBM)
The patch adds
error recovery functionality to the DASD device driver, which is
essentially needed to support ESS (Shark). The device driver is
enabled to deal with 'long busy' error conditions (action code
'0x1D') and some related errors.
To create the
complete kernel sources, the following patches need to be applied
in sequence:
linux-2.2.16.tar.gz (Vanilla kernel)
+ linux-2.2.16.2-s390.diff (IBM)
+ linux-2.2.16-dasd_erp.diff (IBM)
binutils
Category application development tool. The binutils package is a
collection of various development tools like a linker, a utility
for creating, modifying and extracting from archives, a tool that
displays information from object files, a tool to generate an index
to the contents of an archive and so on.
gcc
Category application development tool. Contains the C Compiler
front-end including architecture dependent back-ends like the S/390
back-end that generates executables for LINUX/390. The gcc is an
application that can be built to run on many different platforms
and does not need to run on LINUX for S/390.
gdb
Category application development tool. Contains the GNU debugger.
It can be used as an interactive symbolic debugger as well as
post-mortem debugger.