Overview: "August 2001 stream"

Linux for S/390 31-bit distributions and Linux for zSeries 64-bit distributions can be built using:

The recommended kernel 2.4.7 / 2.4.17 downloads of this page were tested with:

If you download any software from this web site please be aware of the Warranty Disclaimer and Limitation of Liabilities.

Note that most new functions introduced with the "June 2003 stream" and "May 2002 stream" are not available on this combination of levels. For an overview of the three parallel kernel 2.4 streams refer to Downloads for kernel 2.4 page.

System Build Cross Reference "August 2001 stream"

If you download any software from this web site please be aware of the Warranty Disclaimer and Limitation of Liabilities.

Available downloads


 

kernel 2.4.17 downloads for the "August 2001 stream"
Package Downloads Description
kernel 2.4.17 linux-2.4.17-s390.tar.gz MD5 (2002-02-05) See kernel 2002-02-05
linux-2.4.17-s390-1-lcs.tar.gz MD5 (2002-03-04) See kernel 2002-03-04
linux-2.4.17-s390-2.tar.gz MD5 (2002-04-15) See kernel 2002-04-15
linux-2.4.17-s390-3.tar.gz MD5 (2002-06-12) See kernel 2002-06-12
linux-2.4.17-s390-4-iucvtar.gz MD5 (2002-08-16) See kernel 2002-08-16
corrected 2002-09-18
linux-2.4.17-s390-5.tar.gz MD5 (2002-11-25) See kernel 2002-11-25
linux-2.4.17-order2-2.tar.gz MD5 (2003-02-20) See Order-2 2003-02-20
linux-2.4.17-s390-6.tar.gz MD5 (2003-02-20) See kernel 2003-02-20
linux-2.4.17-s390-7.tar.gz MD5 (2003-03-17) See kernel 2003-03-17
linux-2.4.17-s390-8.tar.gz MD5 (2003-04-16) See kernel 2003-04-16
linux-2.4.17-s390-9.tar.gz MD5 (2003-07-07) See kernel 2003-07-07
linux-2.4.17-s390-10.tar.gz MD5 (2003-09-04) See kernel 2003-09-04
linux-2.4.17-s390-11.tar.gz MD5 (2003-12-05) See kernel 2003-12-05
linux-2.4.17-s390-12.tar.gz MD5 (2004-01-26) See kernel 2004-01-26
linux-2.4.17-s390-13.tar.gz MD5 (2004-03-24) See kernel 2004-03-24
linux-2.4.17-s390-14.tar.gz MD5 (2004-06-09) See kernel 2004-06-09
linux-2.4.17-s390-15.tar.gz MD5 (2004-07-14) See kernel 2004-07-14
On-demand timer patch linux-2.4.17-timer-7.tar.gz MD5 (2003-12-05) See On-demand timer 2003-12-05
Order-2 allocation relief n/a required kernel 2.4.17 patch as of 2003-02-20
kerntypes linux-2.4.17-s390-kerntypes.tar.gz MD5 (2002-05-31) See kerntypes 2002-04-30

 

OCO modules (kernel 2.4.17) for the "August 2001 stream"
Package Downloads Description
qdio 31-bit qdio MD5 (2003-12-05)
31-bit qdio-timer MD5 (2003-12-05)
64-bit qdio MD5 (2003-12-05)
64-bit qdio-timer MD5 (2003-12-05)
See qdio 2003-12-05
qeth 31-bit qeth MD5 (2003-12-05)
31-bit qeth-timer MD5 (2003-12-05)
64-bit qeth MD5 (2003-12-05)
64-bit qeth-timer MD5 (2003-12-05)
See qeth 2003-12-05
tape_3590_mod 31-bit tape_3590_mod MD5 (2003-02-20)
31-bit tape_3590_mod-timmer MD5 (2003-02-20)
64-bit tape_3590_mod MD5 (2003-02-20)
64-bit tape_3590_mod-timmer MD5 (2003-02-20)
See tape_3590_mod 2003-02-20
z90crypt n/a part of 2003-02-20 kernel 2.4.17 patch

 

kernel 2.4.7 downloads for the "August 2001 stream"
Package Downloads Description
kernel 2.4.19 linux-2.4.7-s390.tar.gz MD5 (2001-08-20) See kernel 2001-08-20
linux-2.4.7-s390-1.tar.gz MD5 (2001-09-14) See kernel 2001-09-14
linux-2.4.7-s390-2.tar.gz MD5 (2001-10-12) See kernel 2001-10-12
linux-2.4.7-s390-3.tar.gz MD5 (2001-11-09) See kernel 2001-11-09
linux-2.4.7-s390-4.tar.gz MD5 (2001-11-23) See kernel 2001-11-23
linux-2.4.7-s390-5.tar.gz MD5 (2002-01-21) See kernel 2002-01-21
linux-2.4.7-s390-6-lcs.tar.gz MD5 (2002-03-04) See kernel 2002-03-04
linux-2.4.7-s390-7.tar.gz MD5 (2002-04-15) See kernel 2002-04-15
linux-2.4.7-s390-8-iucv.tar.gz MD5 (2002-08-16) See kernel 2002-08-16
corrected 2002-09-13
linux-2.4.7-s390-9-extfix.tar.gz MD5 (2002-09-13) See kernel 2002-09-13
linux-2.4.7-s390-10.tar.gz MD5 (2002-11-25) See kernel 2002-11-25
linux-2.4.7-s390-11.tar.gz MD5 (2003-02-20) See kernel 2003-02-20
linux-2.4.7-s390-12.tar.gz MD5 (2003-03-17) See kernel 2003-03-17
linux-2.4.7-s390-13.tar.gz MD5 (2003-04-16) See kernel 2003-04-16
linux-2.4.7-s390-14.tar.gz MD5 (2003-07-07) See kernel 2003-07-07
linux-2.4.7-s390-15.tar.gz MD5 (2003-09-04) See kernel 2003-09-04
linux-2.4.7-s390-16.tar.gz MD5 (2003-12-05) See kernel 2003-12-05
linux-2.4.7-s390-17.tar.gz MD5 (2004-01-26) See kernel 2004-01-26
linux-2.4.7-s390-18.tar.gz MD5 (2004-03-24) See kernel 2004-03-24
linux-2.4.7-s390-19.tar.gz MD5 (2004-06-09) See kernel 2004-06-09
linux-2.4.7-s390-20.tar.gz MD5 (2004-07-14) See kernel 2004-07-14
On-demand timer patch linux-2.4.7-timer-8.tar.gz MD5 (2003-09-04) See On-demand timer 2003-09-04
Order-2 allocation relief linux-2.4.7-order2-9.tar.gz MD5 (2004-07-14) See Order-2 2004-07-14
kerntypes linux-2.4.7-s390-kerntypes.tar.gz MD5 (2001-08-20) See kerntypes 2001-08-20

 

OCO modules (kernel 2.4.7) for the "August 2001 stream"
Package Downloads Description
qdio 31-bit qdio MD5 (2003-12-05)
31-bit qdio-timer MD5 (2003-12-05)
64-bit qdio MD5 (2003-12-05)
64-bit qdio-timer MD5 (2003-12-05)
See qdio 2003-12-05
qeth 31-bit qeth MD5 (2003-12-05)
31-bit qeth-timer MD5 (2003-12-05)
64-bit qeth MD5 (2003-12-05)
64-bit qeth-timer MD5 (2003-12-05)
See qeth 2003-12-05
tape_3590_mod 31-bit tape_3590_mod MD5 (2003-02-20)
31-bit tape_3590_mod-timer MD5 (2003-02-20)
64-bit tape_3590_mod MD5 (2003-02-20)
64-bit tape_3590_mod-timer MD5 (2003-02-20)
See tape_3590_mod 2003-02-20
z90crypt n/a part of 2003-02-20 kernel 2.4.7 patch

 

Tool-chain for the "August 2001 stream"
Package Downloads Description
binutils-2.11.90.0.27 binutils-2.11.90.0.27-s390.tar.gz MD5 (2001-08-20) See binutils 2001-08-20
binutils-2.11.90.0.27-s390-1.tar.gz MD5 (2001-10-12) See binutils 2001-10-12
binutils-2.11.90.0.27-s390-2.tar.gz MD5 (2002-02-28) See binutils 2002-02-28
binutils-2.11.90.0.27-s390-3.tar.gz MD5 (2002-07-04) See binutils 2002-07-04
binutils-2.11.90.0.27-s390-4.tar.gz MD5 (2002-07-25) See binutils 2002-07-25
gcc 2.95.3 gcc-2.95.3-s390.tar.gz MD5 (2001-08-20) See gcc 2001-08-20
corrected 2002-09-13
gcc-2.95.3-s390-1.tar.gz MD5 (2001-09-14) See gcc 2001-09-14
gcc-2.95.3-s390-2.tar.gz MD5 (2001-10-12) See gcc 2001-10-12
gcc-2.95.3-s390-3.tar.gz MD5 (2002-03-18) See gcc 2002-03-18
gcc-2.95.3-s390-4.tar.gz MD5 (2002-06-04) See gcc 2002-06-04
gcc-2.95.3-s390-5.tar.gz MD5 (2002-07-25) See gcc 2002-07-25
glibc 2.2.4 glibc-2.2.4-s390.tar.gz MD5 (2001-08-20) See glibc 2001-08-20
glibc-2.2.4-s390-1.tar.gz MD5 (2001-10-12) See glibc 2001-10-12
glibc-2.2.4-s390-2.tar.gz MD5 (2002-02-27) See glibc 2002-02-27
glibc-2.2.4-s390-3.tar.gz MD5 (2002-02-28) See glibc 2002-02-28

 

Utilities for the "August 2001 stream"
Package Downloads Description
modutils 2.4.7 n/a See modutils 2001-08-20
s390-tools 1.0.6 s390-tools-1.0.6-august2001.tar.gz MD5 (2003-02-20) See s390-tools 2003-02-20

 

Debug tools for the "August 2001 stream"
Package Downloads Description
gdb 5.0 gdb-5.0-s390.tar.gz MD5 (2001-08-20) See gdb 2001-08-20
gdb-5.0-s390-1.tar.gz MD5 (2001-09-14) See gdb 2001-09-14
gdb-5.0-s390-2.tar.gz MD5 (2001-10-12) See gdb 2001-10-12
strace 4.2 strace-4.2.20010119-s390.tar.gz MD5 (2001-08-20) See strace 2001-08-20
strace-4.2.20010119-s390-1.tar.gz MD5 (2001-10-12) See strace 2001-10-12

Note: lkcdutils-4.0 includes the dump analysis tool lcrash. lkcdutils-4.0 can be downloaded at //lkcd.sourceforge.net or //sourceforge.net/projects/lkcd.


 

Download Area "August 2001 stream"

Below are the downloads (with description) for the kernel 2.4.7/17 "August 2001 stream", listed in reverse chronological order. This can be used to backtrack the "August 2001 stream".

The System Build Cross Reference shows the most current set of downloads for the "August 2001 stream" and ignores superseded patches and modules (which are still shown below).

If you download any software from this web site please be aware of the Warranty Disclaimer and Limitation of Liabilities.

downloads for the kernel 2.4.7/17 "August 2001 stream"
Date Component Downloadable
2004-07-14 kernel 2.4.17

kernel 2.4.7
linux-2.4.17-s390-15

linux-2.4.7-s390-20
linux-2.4.7-order2-9
2004-06-09 kernel 2.4.17

kernel 2.4.7
linux-2.4.17-s390-14

linux-2.4.7-s390-19
linux-2.4.7-order2-8 (superseded)
2004-03-24 kernel 2.4.17

kernel 2.4.7
linux-2.4.17-s390-13

linux-2.4.7-s390-18
2004-01-26 kernel 2.4.17

kernel 2.4.7
linux-2.4.17-s390-12

linux-2.4.7-s390-17
2003-12-05 kernel 2.4.17


OCO modules 2.4.17


kernel 2.4.7

OCO modules 2.4.7
linux-2.4.17-s390-11
linux-2.4.17-timer-7

qdio (7)
qeth (7)

linux-2.4.7-s390-16

qdio (14)
qeth (14)
2003-09-04 kernel 2.4.17


kernel 2.4.7
linux-2.4.17-s390-10
linux-2.4.17-timer-6 (superseded)

linux-2.4.7-s390-15
linux-2.4.7-timer-8
linux-2.4.7-order2-7 (superseded)
2003-07-07 kernel 2.4.17


OCO modules 2.4.17


kernel 2.4.7



OCO modules 2.4.7
linux-2.4.17-s390-9
linux-2.4.17-timer-5 (superseded)

qdio (6) (superseded)
qeth (6) (superseded)

linux-2.4.7-s390-14
linux-2.4.7-timer-7 (superseded)
linux-2.4.7-order2-6 (superseded)

qdio (13) (superseded)
qeth (13) (superseded)
2003-04-16 kernel 2.4.17

kernel 2.4.7
linux-2.4.17-s390-8

linux-2.4.7-s390-13
2003-03-17 kernel 2.4.17

kernel 2.4.7
linux-2.4.17-s390-7

linux-2.4.7-s390-12
2003-02-20 kernel 2.4.17



OCO modules 2.4.17



kernel 2.4.7



OCO modules 2.4.7



utilities
linux-2.4.17-s390-6
linux-2.4.17-order2-2
linux-2.4.17-timer-4 (superseded)

qdio (5) (superseded)
qeth (5) (superseded)
tape_3590_mod

linux-2.4.7-s390-11
linux-2.4.7-timer-6 (superseded)
linux-2.4.7-order2-5 (superseded)

qdio (12) (superseded)
qeth (12) (superseded)
tape_3590_mod

s390-tools 1.0.6
2002-12-19 OCO modules 2.4.17




OCO modules 2.4.7
Recommended 2.4.17 OCO modules 31-bit (superseded)
qdio(4) and qeth(4) for standard and "on-demand" timer.
Recommended 2.4.17 OCO modules 64-bit (superseded)
qdio(4) and qeth(4) for standard and "on-demand" timer.

Recommended 2.4.7 OCO modules 31-bit (superseded)
qdio(11) and qeth(11) for standard and "on-demand" timer.
Recommended 2.4.7 OCO modules 64-bit (superseded)
qdio(11) and qeth(11) for standard and "on-demand" timer.
2002-11-25 kernel 2.4.17

kernel 2.4.7
linux-2.4.17-s390-5

linux-2.4.7-s390-10
2002-09-13 kernel 2.4.7 linux-2.4.7-s390-9-extfix
linux-2.4.7-timer-5 (superseded)
2002-08-16 kernel 2.4.17

OCO modules 2.4.17






kernel 2.4.7

OCO modules 2.4.7
linux-2.4.17-s390-4-iucv (corrected 2002-09-18)

Recommended 2.4.17 OCO modules 31-bit
qdio(3) and qeth(3) for standard and "on-demand" timer. (superseded)
Recommended 2.4.17 OCO modules 64-bit
qdio(3) and qeth(3) for standard and "on-demand" timer. (superseded)

linux-2.4.7-s390-8-iucv (corrected 2002-09-13)

Recommended 2.4.7 OCO modules 31-bit
qdio(10) and qeth(10) for standard and "on-demand" timer. (superseded)
Recommended 2.4.7 OCO modules 64-bit
qdio(10) and qeth(10) for standard and "on-demand" timer. (superseded)
2002-07-25 tool chain binutils 2.11.90.0.27
gcc 2.95.3
2002-07-04 tool chain binutils 2.11.90.0.27
2002-06-17 kernel 2.4.17

OCO modules 2.4.17






OCO modules 2.4.7
linux-2.4.17-timer-3 (superseded)

Recommended 2.4.17 OCO modules 31-bit
qdio(2) and qeth(2) for standard and "on-demand" timer. (superseded)
Recommended 2.4.17 OCO modules 64-bit
qdio(2) and qeth(2) for standard and "on-demand" timer. (superseded)

Recommended 2.4.7 OCO modules 31-bit
qdio(9) and qeth(9) for standard and "on-demand" timer. (superseded)
Recommended 2.4.7 OCO modules 64-bit
qdio(9) and qeth(9) for standard and "on-demand" timer. (superseded)
2002-06-12 kernel 2.4.17 linux-2.4.17-s390-3
2002-06-04 tool chain gcc 2.95.3
2002-04-30 kernel 2.4.17 linux-2.4.17-s390-kerntypes
2002-04-15 kernel 2.4.17


kernel 2.4.7
linux-2.4.17-s390-2
linux-2.4.17-timer-2 (superseded)

linux-2.4.7-s390-7
linux-2.4.7-timer-4 (superseded)
2002-03-18 kernel 2.4.17

kernel 2.4.7

tool chain
linux-2.4.17-order2-1 (superseded)

linux-2.4.7-order2-4 (superseded)

gcc 2.95.3
2002-03-04 kernel 2.4.17

kernel 2.4.7

linux-2.4.17-s390-1-lcs

linux-2.4.17-s390-6-lcs

2002-03-01 OCO modules 2.4.7 Recommended OCO modules 31-bit (superseded)
qdio(8) and qeth(8) for standard and "on-demand" timer.
Recommended OCO modules 64-bit (superseded)
qdio(8) and qeth(8) for standard and "on-demand" timer.
2002-02-28 tool chain binutils 2.11.90.0.27
glibc 2.2.4
undef-weak-bug
2002-02-27 tool chain glibc 2.2.4
2002-02-26 utilities s390-tools (superseded)
2002-02-18 OCO modules 2.4.17 Recommended OCO modules 31-bit (superseded)
z90crypt(1) for standard and "on-demand" timer.
lcs(1), qdio(1), and qeth(1) for standard and "on-demand" timer.
Recommended OCO modules 64-bit (superseded)
z90crypt(1) for standard and "on-demand" timer.
lcs(1), qdio(1), and qeth(1) for standard and "on-demand" timer.
2002-02-05 kernel 2.4.17



OCO modules 2.4.17
linux-2.4.17-s390
linux-2.4.17-timer (superseded)
linux-2.4.17-order2 (superseded)

Recommended OCO modules 31-bit (superseded)
lcs, qdio, qeth, and z90crypt for standard and "on-demand" timer.
Recommended OCO modules 64-bit (superseded)
lcs, qdio, qeth, and z90crypt for standard and "on-demand" timer.
2002-01-21 kernel 2.4.7



OCO modules 2.4.7
linux-2.4.7-s390
linux-2.4.7-timer (superseded)
linux-2.4.7-order2 (superseded)

Recommended OCO modules 31-bit (superseded)
z90crypt(2) for standard and "on-demand" timer.
lcs(6), qdio(7), and qeth(7)
Recommended OCO modules 64-bit (superseded)
lcs(6), qdio(7), and qeth(7) for standard and "on-demand" timer.
2001-12-12 utilities

OCO modules 2.4.7
s390-tools (superseded)

Recommended OCO modules 31-bit (superseded)
lcs(5), qdio(6), and qeth(6) for standard and "on-demand" timer.
Recommended OCO modules 64-bit (superseded)
lcs(5), qdio(6), and qeth(6) for standard and "on-demand" timer.
2001-11-23 kernel 2.4.7


OCO modules 2.4.7
linux-2.4.7-s390
linux-2.4.7-timer (superseded)

Recommended OCO modules 31-bit (superseded)
lcs(4), qdio(5), and qeth(5) for standard and "on-demand" timer.
Recommended OCO modules 64-bit (superseded)
lcs(4), qdio(5), and qeth(5) for standard and "on-demand" timer.
2001-11-09 kernel 2.4.7

OCO modules 2.4.7






utilities
linux-2.4.7-s390

Recommended OCO modules 31-bit (superseded)
lcs(3), qdio(4), and qeth(4) for standard and "on-demand" timer.
Recommended OCO modules 64-bit (superseded)
lcs(3), qdio(4), and qeth(4) for standard and "on-demand" timer.

s390-tools (superseded)
2001-10-12 kernel 2.4.7


OCO modules 2.4.7






tool chain



utilities

debug tools
linux-2.4.7-s390
linux-2.4.7-timer (superseded)

Recommended OCO modules 31-bit (superseded)
lcs(2), qdio(3), and qeth(3) for standard and "on-demand" timer.
Recommended OCO modules 64-bit (superseded)
lcs(2), qdio(3), and qeth(3) for standard and "on-demand" timer.

binutils 2.11.90.0.27
gcc 2.95.3
glibc 2.2.4

s390-tools (superseded)

strace 4.2
2001-09-28 OCO modules 2.4.7 Recommended OCO modules 31-bit (superseded)
qdio(2), and qeth(2) for standard and "on-demand" timer.
Recommended OCO modules 64-bit (superseded)
qdio(2), and qeth(2) for standard and "on-demand" timer.
z90crypt (superseded)
2001-09-14 kernel 2.4.7


OCO modules 2.4.7



tool chain


utilities

debug tools
linux-2.4.7-s390
linux-2.4.7-timer (superseded)

Recommended OCO modules 64-bit (superseded)
lcs(1), qdio(1), and qeth(1) for standard and "on-demand" timer.

binutils-2.11.90.0.27-brxlq
gcc 2.95.3

s390-tools (superseded)

gdb 5.0
2001-08-20 kernel 2.4.7


OCO modules 2.4.7




tool chain



utilities


debug tools
linux-2.4.7-s390
linux-2.4.7-kerntypes

Recommended OCO modules 31-bit (superseded)
lcs, qdio, and qeth for standard and "on-demand" timer.
Recommended OCO modules 64-bit (superseded)
lcs, qdio, and qeth for standard and "on-demand" timer.

binutils 2.11.90.0.27
gcc 2.95.3
glibc 2.2.4

s390-tools (superseded)
modutils 2.4.7

gdb 5.0
strace 4.2

2004-07-14 kernel 2.4.17 for the "August 2001 stream"

This patch contains the following Linux kernel bug fix:

Description:
Kernel: Lost dirty bits.
Symptom:
Data corruption under memory pressure.
Problem:
The hardware dirty bit is cleared every time SetPageUptodate is called. The common memory management code calls the function, even if the page already is up to date. In this case the dirty bit may not be cleared because the page is potentially mapped writable in some user process which could have written to the page since the last writeback.
Solution:
Add a check to arch_set_page_uptodate to skip the clearing of the dirty bit, if the page is already up to date.
Problem-ID:
8165

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (see www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)
+ linux-2.4.17-s390-3.diff (IBM)
+ linux-2.4.17-s390-4-iucv.diff (IBM)
+ linux-2.4.17-s390-5.diff (IBM)
+ linux-2.4.17-order2-2.diff (IBM)
+ linux-2.4.17-s390-6.diff (IBM)
+ linux-2.4.17-s390-7.diff (IBM)
+ linux-2.4.17-s390-8.diff (IBM)
+ linux-2.4.17-s390-9.diff (IBM)
+ linux-2.4.17-s390-10.diff (IBM)
+ linux-2.4.17-s390-11.diff (IBM)
+ linux-2.4.17-s390-12.diff (IBM)
+ linux-2.4.17-s390-13.diff (IBM)
+ linux-2.4.17-s390-14.diff (IBM)
+ linux-2.4.17-s390-15.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.17-timer-7.diff (IBM)


2004-07-14 kernel 2.4.7 for the "August 2001 stream"

This patch contains the following Linux kernel bug fix:

Description:
Kernel: Lost dirty bits.
Symptom:
Data corruption under memory pressure.
Problem:
The hardware dirty bit is cleared every time SetPageUptodate is called. The common memory management code calls the function, even if the page already is up to date. In this case the dirty bit may not be cleared because the page is potentially mapped writable in some user process which could have written to the page since the last writeback.
Solution:
Add a check to arch_set_page_uptodate to skip the clearing of the dirty bit, if the page is already up to date.
Problem-ID:
8165

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-s390-7.diff (IBM)
+ linux-2.4.7-s390-8-iucv.diff (IBM)
+ linux-2.4.7-s390-9-extfix.diff (IBM)
+ linux-2.4.7-s390-10.diff (IBM)
+ linux-2.4.7-s390-11.diff (IBM)
+ linux-2.4.7-s390-12.diff (IBM)
+ linux-2.4.7-s390-13.diff (IBM)
+ linux-2.4.7-s390-14.diff (IBM)
+ linux-2.4.7-s390-15.diff (IBM)
+ linux-2.4.7-s390-16.diff (IBM)
+ linux-2.4.7-s390-17.diff (IBM)
+ linux-2.4.7-s390-18.diff (IBM)
+ linux-2.4.7-s390-19.diff (IBM)
+ linux-2.4.7-s390-20.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.7-timer-8.diff (IBM)

Note: If Order-2 is required, apply as last patch (i.e. on top of On-demand timer patch if needed):
+ linux-2.4.7-order2-9.diff (IBM)


Order-2 ("August 2001", 2004-07-14)

linux-2.4.7-order2-9.tar.gz MD5 recommended (2004-07-14)

The "order 2 allocation relief" patch is a complete replacement of the recommended patch shipped on 2004-06-09. This patch is functionally equivalent to the 2004-06-09 patch.

To create the complete linux kernel sources, apply all IBM kernel 2.4.7 patches on top of linux-2.4.7.tar.gz (see www.kernel.org) and as last patch

+ linux-2.4.7-order2-9.diff (IBM), or on top of linux-2.4.7-timer-8.diff (IBM) if timer is required.


2004-06-09 kernel 2.4.17 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
cio: Deferred cc=3 on BASIC SENSE leads to data corruption.
Symptom:
Data corruption after heavy I/O workload while ESS is doing failover.
Problem:
BASIC SENSE after a unit check returns with deferred cc=3. The device driver is called with the device status for the BASIC SENSE which it should not see.
Solution:
If a deferred cc=3 after a BASIC SENSE happens, call the device driver with the device status for the preceding unit check and reset the w4sense flag.
Problem-ID:
9055
Description:
iucv: restart of multiple IUCV connections fails.
Symptom:
Further IUCV connections are only possible after reloading of module netiucv.
Problem:
When restarting IUCV connections, the old IUCV pathids are not reused. Thus repeated restart of a single IUCV connection resp. few restarts of multiple IUCV connections result in reaching the maximum number limit of IUCV paths.
Solution:
Handling of an IUCV connection severed by partner is changed: No reconnect is made; instead the IUCV connection stays in state STARTWAIT till a "Connection Pending" interrupt arrives.
Problem-ID:
7640
Description:
kernel: mlock() gets stuck in get_user_pages/follow_page.
Symptom:
Process doing mlock loops in the kernel with kernel locks held.
Problem:
set_pte/pte_mkdirty does not cause pte_dirty to return true but the common mm code relies on it.
Solution:
Set page dirty if required but do not loop on !pte_dirty().
Problem-ID:
8210

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (see www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)
+ linux-2.4.17-s390-3.diff (IBM)
+ linux-2.4.17-s390-4-iucv.diff (IBM)
+ linux-2.4.17-s390-5.diff (IBM)
+ linux-2.4.17-order2-2.diff (IBM)
+ linux-2.4.17-s390-6.diff (IBM)
+ linux-2.4.17-s390-7.diff (IBM)
+ linux-2.4.17-s390-8.diff (IBM)
+ linux-2.4.17-s390-9.diff (IBM)
+ linux-2.4.17-s390-10.diff (IBM)
+ linux-2.4.17-s390-11.diff (IBM)
+ linux-2.4.17-s390-12.diff (IBM)
+ linux-2.4.17-s390-13.diff (IBM)
+ linux-2.4.17-s390-14.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.17-timer-7.diff (IBM)


2004-06-09 kernel 2.4.7 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
cio: Deferred cc=3 on BASIC SENSE leads to data corruption.
Symptom:
Data corruption after heavy I/O workload while ESS is doing failover.
Problem:
BASIC SENSE after a unit check returns with deferred cc=3. The device driver is called with the device status for the BASIC SENSE which it should not see.
Solution:
If a deferred cc=3 after a BASIC SENSE happens, call the device driver with the device status for the preceding unit check and reset the w4sense flag.
Problem-ID:
9055
Description:
iucv: restart of multiple IUCV connections fails.
Symptom:
Further IUCV connections are only possible after reloading of module netiucv.
Problem:
When restarting IUCV connections, the old IUCV pathids are not reused. Thus repeated restart of a single IUCV connection resp. few restarts of multiple IUCV connections result in reaching the maximum number limit of IUCV paths.
Solution:
Handling of an IUCV connection severed by partner is changed: No reconnect is made; instead the IUCV connection stays in state STARTWAIT till a "Connection Pending" interrupt arrives.
Problem-ID:
7640
Description:
kernel: mlock() gets stuck in get_user_pages/follow_page.
Symptom:
Process doing mlock loops in the kernel with kernel locks held.
Problem:
set_pte/pte_mkdirty does not cause pte_dirty to return true but the common mm code relies on it.
Solution:
Set page dirty if required but do not loop on !pte_dirty().
Problem-ID:
8210

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-s390-7.diff (IBM)
+ linux-2.4.7-s390-8-iucv.diff (IBM)
+ linux-2.4.7-s390-9-extfix.diff (IBM)
+ linux-2.4.7-s390-10.diff (IBM)
+ linux-2.4.7-s390-11.diff (IBM)
+ linux-2.4.7-s390-12.diff (IBM)
+ linux-2.4.7-s390-13.diff (IBM)
+ linux-2.4.7-s390-14.diff (IBM)
+ linux-2.4.7-s390-15.diff (IBM)
+ linux-2.4.7-s390-16.diff (IBM)
+ linux-2.4.7-s390-17.diff (IBM)
+ linux-2.4.7-s390-18.diff (IBM)
+ linux-2.4.7-s390-19.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.7-timer-8.diff (IBM)

Note: If Order-2 is required, apply as last patch (i.e. on top of On-demand timer patch if needed):
+ linux-2.4.7-order2-8.diff (IBM)


Order-2 ("August 2001", 2004-06-09) (superseded)

linux-2.4.7-order2-8.tar.gz MD5 recommended (2004-06-09)

The "order 2 allocation relief" patch is a complete replacement of the recommended patch shipped on 2003-09-04. This patch is functionally equivalent to the 2003-09-04 patch.

To create the complete linux kernel sources, apply all IBM kernel 2.4.7 patches on top of linux-2.4.7.tar.gz (see www.kernel.org) and as last patch
+ linux-2.4.7-order2-8.diff (IBM), or on top of linux-2.4.7-timer-8.diff (IBM) if timer is required.


2004-03-24 kernel 2.4.17 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
iucv: IUCV send failure.
Symptom:
strace of ping shows that sendmsg returns ENOBUFS.
Problem:
tx_queue_len of the iucv net_device is set to zero.
Solution:
Set tx_queue_len to the message limit returned from the ACCEPT function of IUCV.
Problem-ID:
6157
Description:
iucv: unable to reconnect after reboot
Symptom:
Connection FSM state: Stopped in /proc/net/iucv/iucv0/statistics of iucv-partner of the rebooting system
Problem:
The iucv-partner of a rebooting system does not try to reconnect when remote partner severed connection
Solution:
Added connect retry when remote severed connection
Problem-ID:
6631
Note:
This patch fixes a problem introduced with the fix for Problem-ID 5912 in linux-2.4.17-s390-12.diff (2004-01-26).
Description:
lcs: multicast joins and drops not noticed by drivers
Symptom:
multicast traffic is not received
Problem:
driver did not notice stack using multicast addresses
Solution:
use notifier_call_chain to notify drivers
Problem-ID:
5921

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (see www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)
+ linux-2.4.17-s390-3.diff (IBM)
+ linux-2.4.17-s390-4-iucv.diff (IBM)
+ linux-2.4.17-s390-5.diff (IBM)
+ linux-2.4.17-order2-2.diff (IBM)
+ linux-2.4.17-s390-6.diff (IBM)
+ linux-2.4.17-s390-7.diff (IBM)
+ linux-2.4.17-s390-8.diff (IBM)
+ linux-2.4.17-s390-9.diff (IBM)
+ linux-2.4.17-s390-10.diff (IBM)
+ linux-2.4.17-s390-11.diff (IBM)
+ linux-2.4.17-s390-12.diff (IBM)
+ linux-2.4.17-s390-13.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.17-timer-7.diff (IBM)


2004-03-24 kernel 2.4.7 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
iucv: IUCV send failure.
Symptom:
strace of ping shows that sendmsg returns ENOBUFS.
Problem:
tx_queue_len of the iucv net_device is set to zero.
Solution:
Set tx_queue_len to the message limit returned from the ACCEPT function of IUCV.
Problem-ID:
6157
Description:
iucv: unable to reconnect after reboot
Symptom:
Connection FSM state: Stopped in /proc/net/iucv/iucv0/statistics of iucv-partner of the rebooting system
Problem:
The iucv-partner of a rebooting system does not try to reconnect when remote partner severed connection
Solution:
Added connect retry when remote severed connection
Problem-ID:
6631
Note:
This patch fixes a problem introduced with the fix for Problem-ID 5912 in linux-2.4.7-s390-17.diff (2004-01-26).
Description:
lcs: multicast joins and drops not noticed by drivers
Symptom:
multicast traffic is not received
Problem:
driver did not notice stack using multicast addresses
Solution:
use notifier_call_chain to notify drivers
Problem-ID:
5921

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-s390-7.diff (IBM)
+ linux-2.4.7-s390-8-iucv.diff (IBM)
+ linux-2.4.7-s390-9-extfix.diff (IBM)
+ linux-2.4.7-s390-10.diff (IBM)
+ linux-2.4.7-s390-11.diff (IBM)
+ linux-2.4.7-s390-12.diff (IBM)
+ linux-2.4.7-s390-13.diff (IBM)
+ linux-2.4.7-s390-14.diff (IBM)
+ linux-2.4.7-s390-15.diff (IBM)
+ linux-2.4.7-s390-16.diff (IBM)
+ linux-2.4.7-s390-17.diff (IBM)
+ linux-2.4.7-s390-18.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.7-timer-8.diff (IBM)

Note: If Order-2 is required, apply as last patch (i.e. on top of On-demand timer patch if needed):
+ linux-2.4.7-order2-7.diff (IBM)


2004-01-26 kernel 2.4.17 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
dasd: Driver sets improper default cache mode on ESS
Symptom:
Performance limitation.
Problem:
Suboptimal caching behavior for 'default' workload limits I/O performance.
Solution:
Set proper default (normal caching).
Problem-ID:
5409
Description:
dasd: BUG when pulling/plug in fibers associated with ESS.
Symptom:
BUG in dasd ERP leads to kernel panic.
Problem:
The (paranoia) macro in dasd_3990_erp_alternate_path assumes that the status of the request is ERROR, but it might also be FILLED (if the situation happens the first time)
Solution:
Only reduce status to QUEUED (do not enhance)
Problem-ID:
5702
Description:
dasd: Massive workload combined with ESS FlashCopy leading to I/O hang.
Symptom:
FlashCopy I/O hang
Problem:
State change interrupt handler checks only first request in cqr-queue, but in case the fastpath for start_IO was successful, it might happen that the second request is long busy.
Solution:
Check the whole cqr-queue for long busy.
Problem-ID:
4676
Description:
iucv: Disable message interrupts during connection setup
Symptom:
--
Problem:
--
Solution:
Honor incoming connection severed during connection setup.
Problem-ID:
5912
Note:
This patch introduces a problem that is resolved with the fix for Problem-ID 6631 in linux-2.4.17-s390-13.diff (2004-03-24).
Description:
z90crypt: Unnecessary restriction to length of inputdata for MEX request
Symptom:
errno = EINVAL for valid data
Problem:
checking for even inputdatalength for both CRT and MEX request
Solution:
only check for CRT request
Problem-ID:
5633

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (see www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)
+ linux-2.4.17-s390-3.diff (IBM)
+ linux-2.4.17-s390-4-iucv.diff (IBM)
+ linux-2.4.17-s390-5.diff (IBM)
+ linux-2.4.17-order2-2.diff (IBM)
+ linux-2.4.17-s390-6.diff (IBM)
+ linux-2.4.17-s390-7.diff (IBM)
+ linux-2.4.17-s390-8.diff (IBM)
+ linux-2.4.17-s390-9.diff (IBM)
+ linux-2.4.17-s390-10.diff (IBM)
+ linux-2.4.17-s390-11.diff (IBM)
+ linux-2.4.17-s390-12.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.17-timer-7.diff (IBM)

Note: If you apply this patch and are using iucv you may run into Problem-ID 6631, the fix for which is included in linux-2.4.17-s390-13.diff (2004-03-24).


2004-01-26 kernel 2.4.17 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
dasd: Driver sets improper default cache mode on ESS
Symptom:
Performance limitation.
Problem:
Suboptimal caching behavior for 'default' workload limits I/O performance.
Solution:
Set proper default (normal caching).
Problem-ID:
5409
Description:
dasd: BUG when pulling/plug in fibers associated with ESS.
Symptom:
BUG in dasd ERP leads to kernel panic.
Problem:
The (paranoia) macro in dasd_3990_erp_alternate_path assumes that the status of the request is ERROR, but it might also be FILLED (if the situation happens the first time)
Solution:
Only reduce status to QUEUED (do not enhance)
Problem-ID:
5702
Description:
dasd: Massive workload combined with ESS FlashCopy leading to I/O hang.
Symptom:
FlashCopy I/O hang
Problem:
State change interrupt handler checks only first request in cqr-queue, but in case the fastpath for start_IO was successful, it might happen that the second request is long busy.
Solution:
Check the whole cqr-queue for long busy.
Problem-ID:
4676
Description:
iucv: Disable message interrupts during connection setup
Symptom:
--
Problem:
--
Solution:
Honor incoming connection severed during connection setup.
Problem-ID:
5912
Note:
This patch introduces a problem that is resolved with the fix for Problem-ID 6631 in linux-2.4.17-s390-13.diff (2004-03-24).
Description:
z90crypt: Unnecessary restriction to length of inputdata for MEX request
Symptom:
errno = EINVAL for valid data
Problem:
checking for even inputdatalength for both CRT and MEX request
Solution:
only check for CRT request
Problem-ID:
5633

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (see www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)
+ linux-2.4.17-s390-3.diff (IBM)
+ linux-2.4.17-s390-4-iucv.diff (IBM)
+ linux-2.4.17-s390-5.diff (IBM)
+ linux-2.4.17-order2-2.diff (IBM)
+ linux-2.4.17-s390-6.diff (IBM)
+ linux-2.4.17-s390-7.diff (IBM)
+ linux-2.4.17-s390-8.diff (IBM)
+ linux-2.4.17-s390-9.diff (IBM)
+ linux-2.4.17-s390-10.diff (IBM)
+ linux-2.4.17-s390-11.diff (IBM)
+ linux-2.4.17-s390-12.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.17-timer-7.diff (IBM)

Note: If you apply this patch and are using iucv you may run into Problem-ID 6631, the fix for which is included in linux-2.4.17-s390-13.diff (2004-03-24).


2004-01-26 kernel 2.4.7 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
dasd: Driver sets improper default cache mode on ESS
Symptom:
Performance limitation.
Problem:
Suboptimal caching behavior for 'default' workload limits I/O performance.
Solution:
Set proper default (normal caching).
Problem-ID:
5409
Description:
dasd: BUG when pulling/plug in fibers associated with ESS.
Symptom:
BUG in dasd ERP leads to kernel panic.
Problem:
The (paranoia) macro in dasd_3990_erp_alternate_path assumes that the status of the request is ERROR, but it might also be FILLED (if the situation happens the first time)
Solution:
Only reduce status to QUEUED (do not enhance)
Problem-ID:
5702
Description:
dasd: Massive workload combined with ESS FlashCopy leading to I/O hang.
Symptom:
FlashCopy I/O hang
Problem:
State change interrupt handler checks only first request in cqr-queue, but in case the fastpath for start_IO was successful, it might happen that the second request is long busy.
Solution:
Check the whole cqr-queue for long busy.
Problem-ID:
4676
Description:
iucv: Disable message interrupts during connection setup
Symptom:
--
Problem:
--
Solution:
Honor incoming connection severed during connection setup.
Problem-ID:
5912
Note:
This patch introduces a problem that is resolved with the fix for Problem-ID 6631 in linux-2.4.7-s390-18.diff (2004-03-24).
Description:
z90crypt: Unnecessary restriction to length of inputdata for MEX request
Symptom:
errno = EINVAL for valid data
Problem:
checking for even inputdatalength for both CRT and MEX request
Solution:
only check for CRT request
Problem-ID:
5633

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-s390-7.diff (IBM)
+ linux-2.4.7-s390-8-iucv.diff (IBM)
+ linux-2.4.7-s390-9-extfix.diff (IBM)
+ linux-2.4.7-s390-10.diff (IBM)
+ linux-2.4.7-s390-11.diff (IBM)
+ linux-2.4.7-s390-12.diff (IBM)
+ linux-2.4.7-s390-13.diff (IBM)
+ linux-2.4.7-s390-14.diff (IBM)
+ linux-2.4.7-s390-15.diff (IBM)
+ linux-2.4.7-s390-16.diff (IBM)
+ linux-2.4.7-s390-17.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.7-timer-8.diff (IBM)

Note: If Order-2 is required, apply as last patch (i.e. on top of On-demand timer patch if needed):
+ linux-2.4.7-order2-7.diff (IBM)

Note: If you apply this patch and are using iucv you may run into Problem-ID 6631, the fix for which is included in linux-2.4.7-s390-18.diff (2004-03-24).


2003-12-05 kernel 2.4.17 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
Crashes, triggered by iucv and ctc when calling dst_link_failure()
Symptom:
Miscellaneous crashes, triggered by calling dst_link_failure()
Problem:
Calling dst_link_failure() triggers a bug in common code.
Solution:
Removed call of dst_link_failure() in both netiucv.c and ctcmain.c
Problem-ID:
5098
Description:
Fixed S390 Debug Feature usage.
Symptom:
Segmentation fault when DBF file is read.
Problem:
The sprintf event/exception functions write a pointer to the format string (%s) into the log. This means that the string must be valid at the time the DBF-log is read.
Solution:
Don't write 'volatile' strings to DBF.
Problem-ID:
4822
Description:
Unable to reconnect when using z/VM 3.1 at remote peer.
Symptom:
When peer interface was recycled, iucv is unable to reconnect.
Problem:
Incoming message interrupt during setup leads to illegal driver state.
Solution:
Disable all interrupts during setup
Problem-ID:
3061
Description:
crashes triggered by s390 network drivers calling dst_link_failure
Symptom:
crashes, bugs in icmp.c
Problem:
network driver called dst_link_failure
Solution:
remove dst_link_failure call
Problem-ID:
5108
Description:
ctc: loglevel parameter could not be set to maximum
Symptom:
Numbers with more than 1 digit are ignored when writing to /proc/net/ctc/ctc0/loglevel
Problem:
Check for maximum string length was wrong.
Solution:
Corrected check for maximum string length.
Problem-ID:
4342
Description:
reduce stack usage (for qeth: export show_trace symbol)
Symptom:
symlink loops on NFS share causes oops
Problem:
stack overflow
Solution:
reduce stack usage by inlining some functions and check for stack usage. Export show_trace symbol which is needed for the corresponding qeth fix.
Problem-ID:
3344

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (see www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)
+ linux-2.4.17-s390-3.diff (IBM)
+ linux-2.4.17-s390-4-iucv.diff (IBM)
+ linux-2.4.17-s390-5.diff (IBM)
+ linux-2.4.17-order2-2.diff (IBM)
+ linux-2.4.17-s390-6.diff (IBM)
+ linux-2.4.17-s390-7.diff (IBM)
+ linux-2.4.17-s390-8.diff (IBM)
+ linux-2.4.17-s390-9.diff (IBM)
+ linux-2.4.17-s390-10.diff (IBM)
+ linux-2.4.17-s390-11.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.17-timer-7.diff (IBM)


2003-12-05 OCO modules (kernel 2.4.17) for the "August 2001 stream"

Description:
spinlock problem with unsupported ioctls in qeth
Symptom:
deadlock in ioctl of unsupported ioctl of qeth
Problem:
spinlock was not released
Solution:
release spinlock before leaving function
Problem-ID:
3287
Description:
reduce stack usage
Symptom:
symlink loops on NFS share causes oops
Problem:
stack overflow
Solution:
reduce stack usage by inlining some functions and check for stack usage
Problem-ID:
3344
Description:
avoid hang during initialization on I/O errors
Symptom:
system hangs when initializing
Problem:
on I/O errors, a lock was not released
Solution:
release the lock
Problem-ID:
4971
Description:
crashes triggered by s390 network drivers calling dst_link_failure
Symptom:
crashes, bugs in icmp.c
Problem:
network driver called dst_link_failure
Solution:
remove dst_link_failure call
Problem-ID:
5108
Description:
VIPA and Proxy ARP problems on qeth
Symptom:
add_rxip4, add_vipa4 etc. do not work
Problem:
control flags not set correctly, netmask bad for VSWITCH
Solution:
fixed flags, use 0 as default netmask
Problem-ID:
5178

2003-12-05 kernel 2.4.7 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
Crashes, triggered by iucv and ctc when calling dst_link_failure()
Symptom:
Miscellaneous crashes, triggered by calling dst_link_failure()
Problem:
Calling dst_link_failure() triggers a bug in common code.
Solution:
Removed call of dst_link_failure() in both netiucv.c and ctcmain.c
Problem-ID:
5098
Description:
Incorrect calculation of max_blocks in DIAG discipline
Symptom:
BUG in dasd_alloc_request
Problem:
Maximum size request can not be handled by dasd device driver.
Solution:
Make sure the request size fits (correct calculation).
Problem-ID:
4922
Note:
applicable for 31-bit Linux, only
Description:
Unable to reconnect when using z/VM 3.1 at remote peer.
Symptom:
When peer interface was recycled, iucv is unable to reconnect.
Problem:
Incoming message interrupt during setup leads to illegal driver state.
Solution:
Disable all interrupts during setup
Problem-ID:
3061
Description:
crashes triggered by s390 network drivers calling dst_link_failure
Symptom:
crashes, bugs in icmp.c
Problem:
network driver called dst_link_failure
Solution:
remove dst_link_failure call
Problem-ID:
5108
Description:
ctc: loglevel parameter could not be set to maximum
Symptom:
Numbers with more than 1 digit are ignored when writing to /proc/net/ctc/ctc0/loglevel
Problem:
Check for maximum string length was wrong.
Solution:
Corrected check for maximum string length.
Problem-ID:
4342

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-s390-7.diff (IBM)
+ linux-2.4.7-s390-8-iucv.diff (IBM)
+ linux-2.4.7-s390-9-extfix.diff (IBM)
+ linux-2.4.7-s390-10.diff (IBM)
+ linux-2.4.7-s390-11.diff (IBM)
+ linux-2.4.7-s390-12.diff (IBM)
+ linux-2.4.7-s390-13.diff (IBM)
+ linux-2.4.7-s390-14.diff (IBM)
+ linux-2.4.7-s390-15.diff (IBM)
+ linux-2.4.7-s390-16.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.7-timer-8.diff (IBM)

Note: If Order-2 is required, apply as last patch (i.e. on top of On-demand timer patch if needed):
+ linux-2.4.7-order2-7.diff (IBM)


2003-12-05 OCO modules (kernel 2.4.7) for the "August 2001 stream"

Description:
spinlock problem with unsupported ioctls in qeth
Symptom:
deadlock in ioctl of unsupported ioctl of qeth
Problem:
spinlock was not released
Solution:
release spinlock before leaving function
Problem-ID:
3287
Description:
reduce stack usage
Symptom:
symlink loops on NFS share causes oops
Problem:
stack overflow
Solution:
reduce stack usage by inlining some functions and check for stack usage
Problem-ID:
3344
Description:
avoid hang during initialization on I/O errors
Symptom:
system hangs when initializing
Problem:
on I/O errors, a lock was not released
Solution:
release the lock
Problem-ID:
4971
Description:
crashes triggered by s390 network drivers calling dst_link_failure
Symptom:
crashes, bugs in icmp.c
Problem:
network driver called dst_link_failure
Solution:
remove dst_link_failure call
Problem-ID:
5108
Description:
VIPA and Proxy ARP problems on qeth
Symptom:
add_rxip4, add_vipa4 etc. do not work
Problem:
control flags not set correctly, netmask bad for VSWITCH
Solution:
fixed flags, use 0 as default netmask
Problem-ID:
5178

2003-09-04 kernel 2.4.17 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
<ccwcache>: Incorrect cache index determination
Symptom:
random kernel oops
Problem:
The incorrect comparison caused the wrong cache line to be selected for maximum size requests.
Solution:
fixed the comparison
Problem-ID:
3450
Description:
siginfo_t structure on user stack incorrect.
Symptom:
Unwinding over a rt signal frame crashes user programs.
Problem:
The kernel definition of the siginfo_t structure for s390x is 136 bytes long instead of the correct length of 128. The kernel will create a stack frame for rt signal that the unwind code can't process.
Solution:
Reduce the size of the _pad array.
Problem-ID:
3490
Note:
applicable for 64-bit Linux, only
Description:
dasd: erroneous message about failing dasd format
Symptom:
When hitting CTRL-S/CTRL-Q during a dasd format /var/log/messages shows a message like: dasd: /dev/dasdv ( 94: 84),4324@1a42: Formatting of unit 1420 failed with rc = -512
Problem:
The return code of dasd_sleep_on_request is not checked properly.
Solution:
Suppress message when return code of dasd_sleep_on_request returns -ERESTARTSYS.
Problem-ID:
3847
Description:
dasd_diag: buggy CMS label recognition in fs/partitions/ibm.c
Symptom:
CMS reserved minidisk detection doesn't work as expected
Problem:
CMS label is read from page, that had been freed before
Solution:
no longer use freed storage for CMS label recognition
Problem-ID:
3611
Description:
crash when using ctc tty with gcov
Symptom:
See description
Problem:
Invalid use of netif_stop_queue() and netif_wake_queue() for ctc ttys
Solution:
code fixed
Problem-ID:
4174
Description:
Oops in iucv code
Symptom:
Crash with kernel oops when shutting down an iucv connection
Problem:
Interrupt buffer was released too early
Solution:
Moved call of iucv_retrieve_buffer() into iucv_exit()
Problem-ID:
3314

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (see www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)
+ linux-2.4.17-s390-3.diff (IBM)
+ linux-2.4.17-s390-4-iucv.diff (IBM)
+ linux-2.4.17-s390-5.diff (IBM)
+ linux-2.4.17-order2-2.diff (IBM)
+ linux-2.4.17-s390-6.diff (IBM)
+ linux-2.4.17-s390-7.diff (IBM)
+ linux-2.4.17-s390-8.diff (IBM)
+ linux-2.4.17-s390-9.diff (IBM)
+ linux-2.4.17-s390-10.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.17-timer-6.diff (IBM)

This patch fixes the following bug:

Description:
missing local irq disable
Symptom:
CPUs are idle even if system is under full load
Problem:
race condition in cpu_idle that results in lost reschedule events
Solution:
protect with local irq disable
Problem-ID:
2914

To create the complete linux kernel sources, apply all IBM kernel 2.4.17 patches on top of linux-2.4.17.tar.gz (see www.kernel.org) and as last patch

+ linux-2.4.17-timer-6.diff (IBM)


kernel 2.4.7 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
<ccwcache>: Incorrect cache index determination
Symptom:
random kernel oops
Problem:
The incorrect comparison caused the wrong cache line to be selected for maximum size requests.
Solution:
fixed the comparison
Problem-ID:
3450
Description:
siginfo_t structure on user stack incorrect.
Symptom:
Unwinding over a rt signal frame crashes user programs.
Problem:
The kernel definition of the siginfo_t structure for s390x is 136 bytes long instead of the correct length of 128. The kernel will create a stack frame for rt signal that the unwind code can't process.
Solution:
Reduce the size of the _pad array.
Problem-ID:
3490
Note:
applicable for 64-bit Linux, only
Description:
dasd: erroneous message about failing dasd format
Symptom:
When hitting CTRL-S/CTRL-Q during a dasd format /var/log/messages shows a message like: dasd: /dev/dasdv ( 94: 84),4324@1a42: Formatting of unit 1420 failed with rc = -512
Problem:
The return code of dasd_sleep_on_request is not checked properly.
Solution:
Suppress message when return code of dasd_sleep_on_request returns -ERESTARTSYS.
Problem-ID:
3847
Description:
dasd_diag: buggy CMS label recognition in fs/partitions/ibm.c
Symptom:
CMS reserved minidisk detection doesn't work as expected
Problem:
CMS label is read from page, that had been freed before
Solution:
no longer use freed storage for CMS label recognition
Problem-ID:
3611
Description:
crash when using ctc tty with gcov
Symptom:
See description
Problem:
Invalid use of netif_stop_queue() and netif_wake_queue() for ctc ttys
Solution:
code fixed
Problem-ID:
4174
Description:
Oops in iucv code
Symptom:
Crash with kernel oops when shutting down an iucv connection
Problem:
Interrupt buffer was released too early
Solution:
Moved call of iucv_retrieve_buffer() into iucv_exit()
Problem-ID:
3314

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-s390-7.diff (IBM)
+ linux-2.4.7-s390-8-iucv.diff (IBM)
+ linux-2.4.7-s390-9-extfix.diff (IBM)
+ linux-2.4.7-s390-10.diff (IBM)
+ linux-2.4.7-s390-11.diff (IBM)
+ linux-2.4.7-s390-12.diff (IBM)
+ linux-2.4.7-s390-13.diff (IBM)
+ linux-2.4.7-s390-14.diff (IBM)
+ linux-2.4.7-s390-15.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.7-timer-8.diff (IBM)

Note: If Order-2 is required, apply as last patch (i.e. on top of On-demand timer patch if needed):
+ linux-2.4.7-order2-7.diff (IBM)

  • On demand timer ("August 2001", 2003-09-04)

    Release notes: Adaption to above 2003-09-04 kernel-patch.
    This patch is a complete replacement of the patch contained in linux-2.4.7-timer-7.tar.gz shipped on 2003-07-07.

    linux-2.4.7-timer-8.tar.gz MD5 recommended (2003-09-04)

    Category operating system.
    Contains a patch for the linux kernel 2.4.7 that changes the timing method from the regular 100 hz interrupts to on demand timer interrupts. This saves some cpu cycles in an idle linux image. The drawback is that a busy linux image will do a small amount of additional work every time the switch between user mode and kernel mode is done. In short if you are running many images under VM the on demand timers are useful but you probably don't want to use it running under LPAR or native. The patch introduces a configuration option CONFIG_NO_IDLE_HZ_TIMER that lets you choose between the old and the new behavior. Note that you'll need different qdio, qeth and tape_3590_mod modules if you use the no hz timer option.

This patch fixes the following bug:

Description:
missing local irq disable
Symptom:
CPUs are idle even if system is under full load
Problem:
race condition in cpu_idle that results in lost reschedule events
Solution:
protect with local irq disable
Problem-ID:
2914

To create the complete linux kernel sources, apply all IBM kernel 2.4.7 patches on top of linux-2.4.7.tar.gz (see www.kernel.org) and as last patch

+ linux-2.4.7-timer-8.diff (IBM)

  • Order-2 ("August 2001", 2003-09-04)

    linux-2.4.7-order2-7.tar.gz MD5 recommended (2003-09-04) (superseded)

    The "order 2 allocation relief" patch is a complete replacement of the recommended patch shipped on 2003-07-07. This patch is functionaly equivalent to the 2003-07-07 patch. The original patch decreased the kernel stack size to 8KB which turned out to be not enough. As a side-effect of this new patch there is no longer a need for special OCO-modules and the timer patch can be applied to the same kernel.

    To create the complete linux kernel sources, apply all IBM kernel 2.4.7 patches on top of linux-2.4.7.tar.gz (see www.kernel.org) and as last patch
    + linux-2.4.7-order2-7.diff (IBM), or on top of linux-2.4.7-timer-8.diff (IBM) if timer is required.


2003-07-07 kernel 2.4.17 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
kernel: s390dbf - invalid call of create_proc_entry() within spin_lock_irqsave() section
Symptom:
Kernel hang when registering a s390dbf view in low memory situations
Problem:
It is not allowed to call kmalloc() with GFP_KERNEL when interrupts are disabled! create_proc_entry() calls kmalloc(). create_proc_entry() is called when interrupts are disabled.
Solution:
Call create_proc_entry() before critical section is entered and before interrupts are disabled
Problem-ID:
2719
Description:
Address space switching instruction in user space does not fault.
Symptom:
System crash due to cpus entering an endless program check loop.
Problem:
A non-priviledged instruction which can change the primary space origin is not fenched correctly.
Solution:
Set control register 5 to some value unequal to zero.
Problem-ID:
2893
Description:
dasd: Problems when echoing invalid devno to /proc/dasd/devices.
Symptom:
Linux hangs when non-existing device is 'set off'.
Problem:
The spinlock was not released in error path.
Solution:
Release the spinlock.
Problem-ID:
2927
Description:
/proc/cio_ignore parsing.
Symptom:
Piping various combinations of device ranges and device numbers to /proc/cio_ignore leads to "illegal operation" or "Trying to vfree() bad address".
Problem:
Parser called from /proc/cio_ignore didn't work properly.
Solution:
Backport working /proc/cio_ignore parser from 2.5.
Problem-ID:
2934
Description:
CTC: System hang on shutdown of remote OS/390
Symptom:
Shutting down a remotely connected OS/390 system causes a system hang.
Problem:
Receiving garbage data from remote was not properly handled.
Solution:
Added additional validation of received data.
Problem-ID:
2314
Description:
Clearing of .bss section.
Symptom:
Kernel compiled with gcc 3.3 doesn't work.
Problem:
gcc 3.3 puts global variables with an initial value of zero to the .bss section. gcc < 3.3 puts these variables to the .data section. This makes a difference because the clearing of the .bss section is done after the store of the detected memory size to memory_size.
Solution:
Move clearing of the .bss section before the memory detection.
Problem-ID:
3135
Description:
Fixed-point divide exception in boot process.
Symptom:
Kernel crashes with a fixed-point device exception.
Problem:
The clock comparator interrupt is enabled before the clock comparator is set to its initial value. If the system is started without doing a system clear first, the clock comparator may still have an old value. The clock comparator can then interrupt too early.
Solution:
Initialise clock comparator first, then enable the clock comparator interrupt.
Problem-ID:
3137
Description:
chandev configuration
Symptom:
Argument errors when writing to /proc/chandev.
Problem:
The parsing of the auto_msck and del_auto_msck verbs is broken because of missing breaks in a switch statement.
Solution:
Add breaks.
Problem-ID:
3139
Description:
Many iucv devices.
Symptom:
Deadlock when starting more than 160 iucv devices.
Problem:
iucv_connect allocates an iparml_control structure to do the iucv connect. Between the allocation and the release of the structure an iucv_setmask is done which needs a iparml_control element too. If 160 iucv connection are started simultaneously all iparml_control structures are allocated and iucv_setmask loops indefinitly in grab_param.
Solution:
Release iparml_control structure immediatly after connect.
Problem-ID:
3140
Description:
Module loader.
Symptom:
Module load fails with error messages "init_module: changed module name ...".
Problem:
There are two problem in the kernel module code. 1) A size-check in sys_create_module is off by one byte. 2) sys_init_module checks the module name using a buffer that might have been overwritten. This happens if the struct module used by insmod is larger than the one used by the kernel (e.g. modutils with the gcov patch).
Solution:
Correct the two checks.
Problem-ID:
3141
Description:
noop elevator
Symptom:
Performance improvement.
Problem:
The dasd driver shouldn't use an elevator algorithm because the emulation of a dasd devices in the storage subsystems removes any potential for disk head optimization.
Solution:
Enable the no-op elevator.
Problem-ID:
3142
Description:
vmalloc with user specified length.
Symptom:
Error message "kernel BUG at vmalloc.c"
Problem:
cio_ignore_proc_write calls vmalloc with an arbitrary user specified length. If the user passes a value that exceeds the memory size a BUG() is triggered in vmalloc.c.
Solution:
Limit user specified length to 64K.
Problem-ID:
3143
Description:
memory management: dirty bit clearing.
Symptom:
I/O errors on read only disks.
Problem:
The dirty bit for a new page needs to get set to zero. So far this is done in mk_pte/set_pte. The call to mk_pte for the first user of a page sets a bit in the pte that causes set_pte to clear the dirty bit. This is a race condition if two processes want to access the same page simultaneously.
Solution:
Move dirty bit clearing from mk_pte() to SetPageUptodate().
Problem-ID:
3144
Description:
starting a LCS network device with specific module parameters causes an address exception
Symptom:
1. start LCS module with parameter model_no=1 and rel_adapter_no=1
2. starting the LCS network device causes an address exception
Problem:
init_waitqueue_head was not called for a lanstat_wait in kernel version > 2.3.0
Solution:
call init_waitqueue_head for kernel version >= 2.3.0
Problem-ID:
3158
Description:
Deadlock in memory management code.
Symptom:
Mapping and accessing memory on a 64 bit zLinux system that requires a full segment table can lead to a deadlock if the system is low on memory.
Problem:
The extension of a half-sized pmd (8K) to a full-sized pmd (16K) requires the allocation of 4 consequitive pages. If the system starts swapping to allocate these 4 pages and touches the page table the reallocation is done for it deadlocks on the page table lock.
Solution:
Release the page table lock in pgd_populate before calling __get_free_pages.
Problem-ID:
3231
Description:
xpram parameter parsing.
Symptom:
The xpram driver doesn't accept hexadecimal sizes on the xpram_parts parameter with a single digit after the 0x.
Problem:
The check in xpram_int_format that determines if a number is in hexadecimal is broken.
Solution:
Fix the check for hexadecimal numbers.
Problem-ID:
3284

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (see www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)
+ linux-2.4.17-s390-3.diff (IBM)
+ linux-2.4.17-s390-4-iucv.diff (IBM)
+ linux-2.4.17-s390-5.diff (IBM)
+ linux-2.4.17-order2-2.diff (IBM)
+ linux-2.4.17-s390-6.diff (IBM)
+ linux-2.4.17-s390-7.diff (IBM)
+ linux-2.4.17-s390-8.diff (IBM)
+ linux-2.4.17-s390-9.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.17-timer-5.diff (IBM)

  • On-demand timer patch kernel 2.4.17 ("August 2001", 2003-07-07)

    linux-2.4.17-timer-5.tar.gz MD5 recommended (2003-07-07) (superseded)

    On demand timer patch:
    Contains a patch for the linux kernel 2.4.17 that changes the timing method from the regular 100 hz interrupts to on demand timer interrupts. This saves some cpu cycles in an idle linux image. The drawback is that a busy linux image will do a small amount of additional work every time the switch between user mode and kernel mode is done. In short if you are running many images under VM the on demand timers are useful but you probably don't want to use it running under LPAR or native. The patch introduces a configuration option CONFIG_NO_IDLE_HZ_TIMER that lets you choose between the old and the new behavior. Note that you'll need different qdio, qeth and tape_3590_mod modules if you use the no hz timer option.

    This patch is a complete replacement of the patch contained in linux-2.4.17-timer-4.tar.gz shipped on 2003-02-20.

    This patch is functionaly equivalent to the 2003-02-20 patch.

    To create the complete linux kernel sources, apply all IBM kernel 2.4.17 patches on top of linux-2.4.17.tar.gz (see www.kernel.org) and as last patch

    + linux-2.4.17-timer-5.diff (IBM)

2003-07-07 OCO modules (kernel 2.4.17) for the "August 2001 stream"

Description:
High percentage of dropped packets using UDP
Symptom:
qeth had high percentage of dropped UDP packets running on VM in V=V mode and also in V=R mode
Problem-ID:
2574
Description:
qeth sent wrong command when doing ioctl
Symptom:
When issueing SIOCDEVPRIVATE+2, a wrong command code was sent to the card
Problem-ID:
2545
Description:
Improper multicast IP housekeeping.
Symptom:
Msg on interface shutdown, cannot delete multicast IP
Problem-ID:
2090

2003-07-07 kernel 2.4.7 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
kernel: s390dbf - invalid call of create_proc_entry() within spin_lock_irqsave() section
Symptom:
Kernel hang when registering a s390dbf view in low memory situations
Problem:
It is not allowed to call kmalloc() with GFP_KERNEL when interrupts are disabled! create_proc_entry() calls kmalloc(). create_proc_entry() is called when interrupts are disabled.
Solution:
Call create_proc_entry() before critical section is entered and before interrupts are disabled
Problem-ID:
2719
Description:
Address space switching instruction in user space does not fault.
Symptom:
System crash due to cpus entering an endless program check loop.
Problem:
A non-priviledged instruction which can change the primary space origin is not fenched correctly.
Solution:
Set control register 5 to some value unequal to zero.
Problem-ID:
2893
Description:
dasd: Problems when echoing invalid devno to /proc/dasd/devices.
Symptom:
Linux hangs when non-existing device is 'set off'.
Problem:
The spinlock was not released in error path.
Solution:
Release the spinlock.
Problem-ID:
2927
Description:
/proc/cio_ignore parsing.
Symptom:
Piping various combinations of device ranges and device numbers to /proc/cio_ignore leads to "illegal operation" or "Trying to vfree() bad address".
Problem:
Parser called from /proc/cio_ignore didn't work properly.
Solution:
Backport working /proc/cio_ignore parser from 2.5.
Problem-ID:
2934
Description:
CTC: System hang on shutdown of remote OS/390
Symptom:
Shutting down a remotely connected OS/390 system causes a system hang.
Problem:
Receiving garbage data from remote was not properly handled.
Solution:
Added additional validation of received data.
Problem-ID:
2314
Description:
Clearing of .bss section.
Symptom:
Kernel compiled with gcc 3.3 doesn't work.
Problem:
gcc 3.3 puts global variables with an initial value of zero to the .bss section. gcc < 3.3 puts these variables to the .data section. This makes a difference because the clearing of the .bss section is done after the store of the detected memory size to memory_size.
Solution:
Move clearing of the .bss section before the memory detection.
Problem-ID:
3135
Description:
Fixed-point divide exception in boot process.
Symptom:
Kernel crashes with a fixed-point device exception.
Problem:
The clock comparator interrupt is enabled before the clock comparator is set to its initial value. If the system is started without doing a system clear first, the clock comparator may still have an old value. The clock comparator can then interrupt too early.
Solution:
Initialise clock comparator first, then enable the clock comparator interrupt.
Problem-ID:
3137
Description:
chandev configuration
Symptom:
Argument errors when writing to /proc/chandev.
Problem:
The parsing of the auto_msck and del_auto_msck verbs is broken because of missing breaks in a switch statement.
Solution:
Add breaks.
Problem-ID:
3139
Description:
Many iucv devices.
Symptom:
Deadlock when starting more than 160 iucv devices.
Problem:
iucv_connect allocates an iparml_control structure to do the iucv connect. Between the allocation and the release of the structure an iucv_setmask is done which needs a iparml_control element too. If 160 iucv connection are started simultaneously all iparml_control structures are allocated and iucv_setmask loops indefinitly in grab_param.
Solution:
Release iparml_control structure immediatly after connect.
Problem-ID:
3140
Description:
Module loader.
Symptom:
Module load fails with error messages "init_module: changed module name ...".
Problem:
There are two problem in the kernel module code. 1) A size-check in sys_create_module is off by one byte. 2) sys_init_module checks the module name using a buffer that might have been overwritten. This happens if the struct module used by insmod is larger than the one used by the kernel (e.g. modutils with the gcov patch).
Solution:
Correct the two checks.
Problem-ID:
3141
Description:
noop elevator
Symptom:
Performance improvement.
Problem:
The dasd driver shouldn't use an elevator algorithm because the emulation of a dasd devices in the storage subsystems removes any potential for disk head optimization.
Solution:
Enable the no-op elevator.
Problem-ID:
3142
Description:
vmalloc with user specified length.
Symptom:
Error message "kernel BUG at vmalloc.c"
Problem:
cio_ignore_proc_write calls vmalloc with an arbitrary user specified length. If the user passes a value that exceeds the memory size a BUG() is triggered in vmalloc.c.
Solution:
Limit user specified length to 64K.
Problem-ID:
3143
Description:
memory management: dirty bit clearing.
Symptom:
I/O errors on read only disks.
Problem:
The dirty bit for a new page needs to get set to zero. So far this is done in mk_pte/set_pte. The call to mk_pte for the first user of a page sets a bit in the pte that causes set_pte to clear the dirty bit. This is a race condition if two processes want to access the same page simultaneously.
Solution:
Move dirty bit clearing from mk_pte() to SetPageUptodate().
Problem-ID:
3144
Description:
starting a LCS network device with specific module parameters causes an address exception
Symptom:
1. start LCS module with parameter model_no=1 and rel_adapter_no=1
2. starting the LCS network device causes an address exception
Problem:
init_waitqueue_head was not called for a lanstat_wait in kernel version > 2.3.0
Solution:
call init_waitqueue_head for kernel version >= 2.3.0
Problem-ID:
3158
Description:
xpram parameter parsing.
Symptom:
The xpram driver doesn't accept hexadecimal sizes on the xpram_parts parameter with a single digit after the 0x.
Problem:
The check in xpram_int_format that determines if a number is in hexadecimal is broken.
Solution:
Fix the check for hexadecimal numbers.
Problem-ID:
3284

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-s390-7.diff (IBM)
+ linux-2.4.7-s390-8-iucv.diff (IBM)
+ linux-2.4.7-s390-9-extfix.diff (IBM)
+ linux-2.4.7-s390-10.diff (IBM)
+ linux-2.4.7-s390-11.diff (IBM)
+ linux-2.4.7-s390-12.diff (IBM)
+ linux-2.4.7-s390-13.diff (IBM)
+ linux-2.4.7-s390-14.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.7-timer-7.diff (IBM)

Note: If Order-2 is required, apply as last patch (i.e. on top of On-demand timer patch if needed):
+ linux-2.4.7-order2-6.diff (IBM)


2003-07-07 OCO modules (kernel 2.4.7) for the "August 2001 stream"

Description:
High percentage of dropped packets using UDP
Symptom:
qeth had high percentage of dropped UDP packets running on VM in V=V mode and also in V=R mode
Problem-ID:
2574
Description:
qeth sent wrong command when doing ioctl
Symptom:
When issueing SIOCDEVPRIVATE+2, a wrong command code was sent to the card
Problem-ID:
2545
Description:
Improper multicast IP housekeeping.
Symptom:
Msg on interface shutdown, cannot delete multicast IP
Problem-ID:
2090

2003-04-16 kernel 2.4.17 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
dasd: IFCC handling fixed
Symptom:
IO errors after interface control check
Problem:
dasd interrupt handler does recognize an interface control check and triggers the error recovery mechanism but does not provide sense data (none available) which cannot be handled by the error recovery.
Solution:
retry the request
Problem-ID:
2167
Description:
dasd: discipline load order problem (with DIAG)
Symptom:
CMS RESERVED minidisks are accessed via ECKD discipline even if dasd_diag module was loaded.
Problem:
The discipline load order is responsible for the decision which discipline (ECKD or DIAG) is used to access CMS RESERVED minidisks.
Solution:
Load DIAG always to the beginning. This means that DIAG is used as soon as the module is loaded.
Problem-ID:
2256
Note:
applicable for 31-bit Linux, only
Description:
cio: Handling of not operational paths.
Symptom:
Devices for which a path is not operational are not recognized.
Problem:
Only deferred cc=3 was handled correcty; cc=3 on ssch() with a specified lpm was always treated as device not operational (this only happens on some models).
Solution:
Make SensePGID and SetPGID handle cc=3 on ssch() correctly (switch off path and not device).
Problem-ID:
2406
Description:
cio: oopses from debug feature.
Symptom:
Oops when looking at cio_msg dbf.
Problem:
s390_displayhex2, which was supposed to dump data into sprintf feature, didn't work.
Solution:
Replace s390_displayhex2 with directly dumping into cio_trace hex_ascii view.
Problem-ID:
2409

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (see www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)
+ linux-2.4.17-s390-3.diff (IBM)
+ linux-2.4.17-s390-4-iucv.diff (IBM)
+ linux-2.4.17-s390-5.diff (IBM)
+ linux-2.4.17-order2-2.diff (IBM)
+ linux-2.4.17-s390-6.diff (IBM)
+ linux-2.4.17-s390-7.diff (IBM)
+ linux-2.4.17-s390-8.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.17-timer-4.diff (IBM)


2003-04-16 kernel 2.4.7 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
dasd: IFCC handling fixed
Symptom:
IO errors after interface control check
Problem:
dasd interrupt handler does recognize an interface control check and triggers the error recovery mechanism but does not provide sense data (none available) which cannot be handled by the error recovery.
Solution:
retry the request
Problem-ID:
2167
Description:
dasd: discipline load order problem (with DIAG)
Symptom:
CMS RESERVED minidisks are accessed via ECKD discipline even if dasd_diag module was loaded.
Problem:
The discipline load order is responsible for the decision which discipline (ECKD or DIAG) is used to access CMS RESERVED minidisks.
Solution:
Load DIAG always to the beginning. This means that DIAG is used as soon as the module is loaded.
Problem-ID:
2256
Note:
applicable for 31-bit Linux, only
Description:
cio: Handling of not operational paths.
Symptom:
Devices for which a path is not operational are not recognized.
Problem:
Only deferred cc=3 was handled correcty; cc=3 on ssch() with a specified lpm was always treated as device not operational (this only happens on some models).
Solution:
Make SensePGID and SetPGID handle cc=3 on ssch() correctly (switch off path and not device).
Problem-ID:
2406
Description:
cio: oopses from debug feature.
Symptom:
Oops when looking at cio_msg dbf.
Problem:
s390_displayhex2, which was supposed to dump data into sprintf feature, didn't work.
Solution:
Replace s390_displayhex2 with directly dumping into cio_trace hex_ascii view.
Problem-ID:
2409

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-s390-7.diff (IBM)
+ linux-2.4.7-s390-8-iucv.diff (IBM)
+ linux-2.4.7-s390-9-extfix.diff (IBM)
+ linux-2.4.7-s390-10.diff (IBM)
+ linux-2.4.7-s390-11.diff (IBM)
+ linux-2.4.7-s390-12.diff (IBM)
+ linux-2.4.7-s390-13.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.7-timer-6.diff (IBM)

Note: If Order-2 is required, apply as last patch (i.e. on top of On-demand timer patch if needed):
+ linux-2.4.7-order2-5.diff (IBM)


2003-03-17 kernel 2.4.17 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
DASD devices will not be set 'online' on slow/fast systems.
Symptom:
Root volume does not go online.
Problem:
Bottom half raises DASD state before main path.
Solution:
Extend scope of irq_lock to include change of state.
Problem-ID:
1919
Description:
Fixes for low memory emergency IDAL handling.
Symptom:
Kernel might hang in low memory situations.
Problem:
Possible memory overwrite during emergency idal creation.
Solution:
Check if data fit into the available emergency IDAL page before writing them.
Problem-ID:
2098
Note:
applicable for 64-bit Linux, only
Description:
DIAG250-disk on 64Bit system causes endless loop.
Symptom:
System hang when accessing DASD with diag250.
Problem:
Wrong preload of return code, used with diag250 exception.
Solution:
Preload a value of 11 instead of 3, causing an I/O error.
Problem-ID:
1341
Note:
applicable for 64-bit Linux, only

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (see www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)
+ linux-2.4.17-s390-3.diff (IBM)
+ linux-2.4.17-s390-4-iucv.diff (IBM)
+ linux-2.4.17-s390-5.diff (IBM)
+ linux-2.4.17-order2-2.diff (IBM)
+ linux-2.4.17-s390-6.diff (IBM)
+ linux-2.4.17-s390-7.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.17-timer-4.diff (IBM)


2003-03-17 kernel 2.4.7 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
DASD driver statistics backport from 2.4.17
Symptom:
/proc/dasd/statistics is showing a bunch of zeros
Problem:
Missing functionality.
Solution:
Backport the functionality form 2.4.17 branch.
Problem-ID:
1940
Description:
DASD devices will not be set 'online' on slow/fast systems.
Symptom:
Root volume does not go online.
Problem:
Bottom half raises DASD state before main path
Solution:
Extend scope of irq_lock to include change of state.
Problem-ID:
1919
Description:
Fixes for low memory emergency IDAL handling.
Symptom:
Kernel might hang in low memory situations.
Problem:
Possible memory overwrite during emergency idal creation.
Solution:
Check if data fit into the available emergency IDAL page before writing them.
Problem-ID:
2098
Note:
applicable for 64-bit Linux, only
Description:
DIAG250-disk on 64Bit system causes endless loop.
Symptom:
System hang when accessing DASD with diag250.
Problem:
Wrong preload of return code, used with diag250 exception.
Solution:
Preload a value of 11 instead of 3, causing an I/O error.
Problem-ID:
1341
Note:
applicable for 64-bit Linux, only

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-s390-7.diff (IBM)
+ linux-2.4.7-s390-8-iucv.diff (IBM)
+ linux-2.4.7-s390-9-extfix.diff (IBM)
+ linux-2.4.7-s390-10.diff (IBM)
+ linux-2.4.7-s390-11.diff (IBM)
+ linux-2.4.7-s390-12.diff (IBM)

Note: If On-demand timer is required, apply on top of above patches:
+ linux-2.4.7-timer-6.diff (IBM)

Note: If Order-2 is required, apply as last patch (i.e. on top of On-demand timer patch if needed):
+ linux-2.4.7-order2-5.diff (IBM)


2003-02-20 kernel 2.4.17 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
64 bit xpram driver.
Symptom:
64 bit systems only see odd numbered xpram devices.
Problem:
The sizes array of the xpram driver is declared as 'unsigned long' but the block device layer accesses the array as 'unsigned int'.
Solution:
Use the correct type for the sizes array.
Problem-ID:
1928
Note:
applicable for 64-bit Linux
Description:
Crashes in copy_to_user.
Symptom:
Kernel oops message.
Problem:
The fixup routine __copy_to_user that is called after an unresolvable fault of the mvcle instruction accesses the program check old psw and the translation exception address fields in the lowcore. But the program check handler may have already called schedule and another process may have overwritten this information.
Solution:
Don't rely on any information stored in the lowcore in the fixup routine of __copy_to_user.
Problem-ID:
1923
Description:
Codepage conversion problem.
Symptom:
Input strings with certain length are not translated correctly.
Problem:
codepage_convert for strings with n*256+1 bytes only convert (n-1)*256+1 bytes because of an incorrect branch instruction.
Solution:
Correct branch instruction.
Problem-ID:
1926
Description:
TLBs not flushed under heavy swapping.
Symptom:
Random memory corruption leading to program crashes or wrong data.
Problem:
The __flush_tlb_mm function sets the cpu_vm_mask to the current cpu if it does a global flush. This is wrong in the case the flush is done for a different mm than the current one for the cpu. The next flush can fail to remove the tlb another cpu has created for this mm.
Solution:
Reset cpu_vm_mask to the current cpu only if the mm is the active mm for this cpu and the cpu is the exclusive user for the mm.
Problem-ID:
1924
Description:
Status pending handling.
Symptom:
Possibly all kinds of erratic behavior.
Problem:
Upon encountering a cc=1 (status pending) condition when trying to start an I/O operation, Linux called the common interrupt handler to process the pending status, but couldn't call the registered interrupt handler. This could lead to interrupts not reported to the device driver which contained important information.
Solution:
Only process cc=1 internally when doing sync. I/O; otherwise return -EBUSY and process the interrupt as soon as interrupts are enabled again.
Problem-ID:
1844
Description:
Path not operational handling.
Symptom:
Paths with are fine appear as not operational.
Problem:
When Linux encountered a deferred condition code 3, or another not operational situation, it considered the path designated in the last path used mask (lpum) to be not operational and switched it off. However, (1) the lpum shows the last *successfully* used path, and (2) deferred cc 3 doesn't necessarily mean the path is not operational.
Solution:
Don't switch off paths for all devices, and switch off paths for a device only according to the path not operational mask (pnom).
Problem-ID:
1614
Description:
Zero sense data.
Symptom:
Device drivers get confused by non-existent sense data.
Problem:
Zero sense data was obtained by the common I/O layer, but the DEVSTAT_SENSE_AVAIL flag is set.
Solution:
Reset DEVSTAT_SENSE_AVAIL if sense_count is zero.
Problem-ID:
1615
Description:
Basic sense return code.
Symptom:
Zero sense data, lost interrupt information.
Problem:
The common I/O layer didn't check if starting the basic sense ccw was successful and therefore didn't realize the next incoming interrupt didn't signify the successful completion of the basic sense operation.
Solution:
Check return code of basic sense.
Problem-ID:
1616
Description:
Synchronous isc not correctly set.
Symptom:
Linux runs into deadlock with all cpus in enable_cpu_sync_isc.
Problem:
When msch() fails to set the sync isc in enable_cpu_sync_isc and encounters a status pending, s390_process_IRQ() is called while the syncio bit is set for the subchannel. I/O called from there assumes it is synchronous and has isc 5 exclusively, which is not true and can lead into another subchannel trying to get the sync_isc lock.
Solution:
(1) Set the syncio flag only after a successful msch().
(2) Reset sync_isc_count and give up the sync_isc lock if sync isc is not set.
Problem-ID:
1618
Description:
'mt' causing more than 511 skip commands fails.
Symptom:
Trying to skip more than 511 records or files with one 'mt' command will give an error message and cause the command to fail.
Problem:
The tape driver cannot handle more than 511 repetitions without special handling.
Solution:
Internally split these commands into several parts of 511.
Problem-ID:
1554
Description:
Fixes for ESS DASD device support.
Symptom:
Various effects (from "not visible for user" up to "system hang").
Problem:
Error recovery problems in ESS DASD specific scenarios.
Solution:
Enhanced and fixed various ERP scenarios.
Problem-ID:
1838
Description:
Memory allocations not checked.
Symptom:
Possible oopses or BUG()s (not observed yet).
Problem:
Failure to check if an allocation was successful. Missing flags.
Solution:
Check if allocation worked; clean up if not. Add GFP_ATOMIC.
Problem-ID:
1892
Description:
Handling of copy_to_user/copy_from_user return codes.
Symptom:
ptrace returns positive numbers instead of -EFAULT if an invalid address is passed on the ptrace call.
Problem:
copy_to_user/copy_from_user do not return an error code if they fail but the number of bytes not copied. This needs to be converted into -EFAULT.
Solution:
Check return value of copy_to_user/copy_from_user and replace any non-zero return value with -EFAULT.
Problem-ID:
1962
Description:
munmap frees pages still in use.
Symptom:
User process crashes and/or kernel oops in page_alloc.c.
Problem:
sys_munmap for a mapping near the end of the address space frees pages still in use. This is caused by an address calculation overflow in free_pgtables.
Solution:
Check for the overflow in free_pgtables.
Problem-ID:
1233

This patch contains an enhancement of the device driver for channel attached tape devices. It implements an infrastructure which allows to have different tape disciplines as separate Kernel modules. The generic tape driver (tape390) tries to automatically load the known tape disciplines. 3480 and 3490 tape disciplines are included in this patch. The 3590 tape discipline can be downloaded separately from this web site: tape_3590_mod. Basically this functionality is a backport of the May2002 tape driver. For documentation how to use this enhanced tape device driver please refer to "Chapter 5.Channel-attached tape device driver" of the "Linux for zSeries and S/390 Device Drivers and Installation Commands" manual of the May 2002 stream.

This patch also contains the following backports from 2.4.19:

and some cosmetic changes.

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (see www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)
+ linux-2.4.17-s390-3.diff (IBM)
+ linux-2.4.17-s390-4-iucv.diff (IBM)
+ linux-2.4.17-s390-5.diff (IBM)
+ linux-2.4.17-order2-2.diff (IBM)
+ linux-2.4.17-s390-6.diff (IBM)

  • Order-2 ("August 2001", 2003-02-20)

    linux-2.4.17-order2-2.tar.gz MD5 recommended (2003-02-20) (superseded)

    The "order 2 allocation relief" patch is a complete replacement of the patch contained in linux-2.4.17-order2-1.tar.gz shipped on 2002-03-18.

    This patch is functionally equivalent to the 2002-03-18 patch, but applies without warnings.

Description:
Order 2 allocation relief
Symptom:
Under stress and after long uptimes of a 64 bit system the error message "__alloc_pages: 2-order allocation failed." appears and either the fork of a new process fails or an active process dies.
Problem:
The order 2 allocation problem is based in the size of the region and segment tables as defined by the zSeries architecture. A full region or segment table in 64 bit mode takes 16 KB of contiguous real memory. The page allocation routines do not guarantee that a higher order allocation will succeed due to memory fragmentation.
Solution:
The order 2 allocation fix is supposed to reduce the number of order 2 allocations for the region and segment tables to a minimum. To do so it uses a feature of the architecture that allows to create incomplete region and segment tables. In almost all cases a process does not need full region or segment tables. If a full region or segment table is needed it is reallocated to the full size.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)
+ linux-2.4.17-s390-3.diff (IBM)
+ linux-2.4.17-s390-4-iucv.diff (IBM)
+ linux-2.4.17-s390-5.diff (IBM)
+ linux-2.4.17-order2-2.diff (IBM)

  • On demand timer ("August 2001", 2003-02-20)

    Release notes: Adaption to above 2003-02-20 kernel-patch

    linux-2.4.17-timer-4.tar.gz MD5 recommended (2003-02-20) (superseded)

    Category operating system.
    Contains a patch for the linux kernel 2.4.17 that will change the timing method from the regular 100 hz interrupts to on demand timer interrupts. This saves some cpu cycles in an idle linux image. The backdraw is that a busy linux image will do a small amount of additional work every time the switch between user mode and kernel mode is done. In short if you are running many images under VM the on demand timers are useful but you probably don't want to use it running under LPAR or native. The patch introduces a configuration option CONFIG_NO_HZ_TIMER that lets you choose between the old and the new behaviour.

    Note that you'll need different qdio, qeth and tape_3590_mod modules if you use the no hz timer option.

    This patch is a complete replacement of the patch contained in linux-2.4.17-timer-3.tar.gz shipped on 2002-06-17.

    This patch is functionaly equivalent to the 2002-06-17 patch, but applies without warnings.

    To create the complete linux kernel sources, the following patches need to be applied in sequence:

    linux-2.4.17.tar.gz (see www.kernel.org)
    + linux-2.4.17-s390.diff (IBM)
    + linux-2.4.17-s390-1-lcs.diff (IBM)
    + linux-2.4.17-s390-2.diff (IBM)
    + linux-2.4.17-s390-3.diff (IBM)
    + linux-2.4.17-s390-4-iucv.diff (IBM)
    + linux-2.4.17-s390-5.diff (IBM)
    + linux-2.4.17-order2-2.diff (IBM)
    + linux-2.4.17-s390-6.diff (IBM)
    + linux-2.4.17-timer-4.diff (IBM)


2003-02-20 OCO modules (kernel 2.4.17) for the "August 2001 stream"


2003-02-20 kernel 2.4.7 for the "August 2001 stream"

These patches contain the following Linux kernel bug fixes:

Description:
IPL from labeled tapes.
Symptom:
The IPL from a labeled tape with an initial ramdisk doesn't work for a 64 bit kernel (on 31 bit the IPL succeeds after several retries).
Problem:
The code to skip the HDR and EOF records of a labeled tapes loads the address of the initial ramdisk with an incorrect offset. The retry after a HDR or EOF record has been found loads the ramdisk to 0.
Solution:
Load the address of the initial ramdisk from the correct memory location.
Problem-ID:
1957
Note:
applicable for 64-bit Linux
Description:
Memory management: mprotect problem.
Symptom:
Writes to memory areas that have been write protected with the mprotect system call do not cause segmentation faults.
Problem:
A check for the VM_WRITE bit in the page fault handler is missing.
Solution:
Add missing check.
Problem-ID:
1958
Description:
ptrace locking
Symptom:
Crashes in kernel space or kernel hangs while using debugging tools like strace or gdb.
Problem:
The traced process was not properly locked in sys_ptrace.
Solution:
Add get_task_struct/free_task_struct calls in sys_ptrace.
Problem-ID:
1959
Description:
Floating point use in the 31 bit emulation.
Symptom:
Floating point register contents of 31-bit emu applications get corrupted.
Problem:
The 31-bit emu signal handler dispatch code clobbered floating point registers.
Solution:
Do not use floating point arithmetic in kernel space.
Problem-ID:
1961
Note:
applicable for 64-bit Linux
Description:
Handling of copy_to_user/copy_from_user return codes.
Symptom:
ptrace returns positive numbers instead of -EFAULT if an invalid address is passed on the ptrace call.
Problem:
copy_to_user/copy_from_user do not return an error code if they fail but the number of bytes not copied. This needs to be converted into -EFAULT.
Solution:
Check return value of copy_to_user/copy_from_user and replace any non-zero return value with -EFAULT.
Problem-ID:
1962
Description:
System hang with unformatted dasd devices.
Symptom:
fdasd on an unformatted dasd device causes a system hang.
Problem:
BIODASDINFO ioctl accesses the request_queue of the device without checking if the request_queue has been initialized.
Solution:
Access request_queue only if it was initialzed.
Problem-ID:
1964
Description:
Mount of unformatted dasd.
Symptom:
Kernel panic after mounting an unformatted dasd device.
Problem:
An unformatted dasd doesn't have a valid blocksize and the number of blocks is unknown. A register_disk of such a device causes the panic.
Solution:
Check if blocksize and number of blocks is valid before calling register_disk.
Problem-ID:
1965
Description:
State change pending interrupts.
Symptom:
Kernel panic.
Problem:
If a state change pending interrupt comes in the dasd interrupt handler tries to restart the first request on the ccw queue. The request that got the long busy condition normally stays on the ccw queue but some special requests get removed by timeouts. In that case the request queue might be empty but the interrupt handler tries to access the head of the queue unconditionally.
Solution:
Check if the ccw queue is empty before accessing it.
Problem-ID:
1966
Description:
Dasd partition check.
Symptom:
System hang when dasd partitions are checked.
Problem:
Large empty device ranges leads to system hang.
Solution:
Fix race condition in dasd_enable_ranges.
Problem-ID:
1967
Description:
ctrl-c during format of dasd device.
Symptom:
Kernel panic.
Problem:
Unable to abort dasd formatting.
Solution:
Fix race condition in dasd_sleep_on_request.
Problem-ID:
1968
Description:
Dynamic attach of diag dasd devices.
Symptom:
Diag dasd device showing up as eckd dasd device.
Problem:
Diag dasd devices do not get registered with the diag discipline when they are dynamically attached because the eckd discipline gets them first.
Solution:
Try diag discipline before eckd discipline.
Problem-ID:
1969
Description:
Dynamic attach of dasd devices.
Symptom:
The kernel loops when a dasd is defined under VM.
Problem:
Deadlock in device bring-up.
Solution:
Fix deadlock in device bring-up.
Problem-ID:
1970
Description:
Dasd autodetect.
Symptom:
System hangs if dasd= parameter is missing.
Problem:
For system with a huge device range the ipl needs a very long time.
Solution:
Switched off autodetect/probeonly as default parameter.
Problem-ID:
1971
Description:
Kernel oops while formatting dasd.
Symptom:
Segmentation fault in the dasd driver when an unformatted dasd device is disabled.
Problem:
An unformatted dasd device doesn't not have a request_queue. dasd_disable_blkdev doesn't check if the request_queue pointer is valid.
Solution:
Check for validity of device->request_queue before accessing its members in dasd_disable_blkdev.
Problem-ID:
1972
Description:
Crashes in copy_to_user.
Symptom:
Kernel oops message
Problem:
The fixup routine __copy_to_user that is called after an unresolvable fault of the mvcle instruction accesses the program check old psw and the translation exception address fields in the lowcore. But the program check handler may have already called schedule and another process may have overwritten this information.
Solution:
Don't rely on any information stored in the lowcore in the fixup routine of __copy_to_user.
Problem-ID:
1923
Description:
Codepage conversion problem.
Symptom:
Input strings with certain length are not translated correctly.
Problem:
codepage_convert for strings with n*256+1 bytes only convert (n-1)*256+1 bytes because of an incorrect branch instruction.
Solution:
Correct branch instruction.
Problem-ID:
1926
Description:
TLBs not flushed under heavy swapping.
Symptom:
Random memory corruption leading to program crashes or wrong data.
Problem:
The __flush_tlb_mm function sets the cpu_vm_mask to the current cpu if it does a global flush. This is wrong in the case the flush is done for a different mm than the current one for the cpu. The next flush can fail to remove the tlb another cpu has created for this mm.
Solution:
Reset cpu_vm_mask to the current cpu only if the mm is the active mm for this cpu and the cpu is the exclusive user for the mm.
Problem-ID:
1924
Description:
Status pending handling.
Symptom:
Possibly all kinds of erratic behavior.
Problem:
Upon encountering a cc=1 (status pending) condition when trying to start an I/O operation, Linux called the common interrupt handler to process the pending status, but couldn't call the registered interrupt handler. This could lead to interrupts not reported to the device driver which contained important information.
Solution:
Only process cc=1 internally when doing sync. I/O; otherwise return -EBUSY and process the interrupt as soon as interrupts are enabled again.
Problem-ID:
1844
Description:
Path not operational handling.
Symptom:
Paths with are fine appear as not operational.
Problem:
When Linux encountered a deferred condition code 3, or another not operational situation, it considered the path designated in the last path used mask (lpum) to be not operational and switched it off. However, (1) the lpum shows the last *successfully* used path, and (2) deferred cc 3 doesn't necessarily mean the path is not operational.
Solution:
Don't switch off paths for all devices, and switch off paths for a device only according to the path not operational mask (pnom).
Problem-ID:
1614
Description:
Zero sense data.
Symptom:
Device drivers get confused by non-existent sense data.
Problem:
Zero sense data was obtained by the common I/O layer, but the DEVSTAT_SENSE_AVAIL flag is set.
Solution:
Reset DEVSTAT_SENSE_AVAIL if sense_count is zero.
Problem-ID:
1615
Description:
Basic sense return code.
Symptom:
Zero sense data, lost interrupt information.
Problem:
The common I/O layer didn't check if starting the basic sense ccw was successful and therefore didn't realize the next incoming interrupt didn't signify the successful completion of the basic sense operation.
Solution:
Check return code of basic sense.
Problem-ID:
1616
Description:
Synchronous isc not correctly set.
Symptom:
Linux runs into deadlock with all cpus in enable_cpu_sync_isc.
Problem:
When msch() fails to set the sync isc in enable_cpu_sync_isc and encounters a status pending, s390_process_IRQ() is called while the syncio bit is set for the subchannel. I/O called from there assumes it is synchronous and has isc 5 exclusively, which is not true and can lead into another subchannel trying to get the sync_isc lock.
Solution:
(1) Set the syncio flag only after a successful msch().
(2) Reset sync_isc_count and give up the sync_isc lock if sync isc is not set.
Problem-ID:
1618
Description:
Fixes for ESS DASD device support.
Symptom:
Various effects (from "not visible for user" up to "system hang").
Problem:
Error recovery problems in ESS DASD specific scenarios.
Solution:
Enhanced and fixed various ERP scenarios.
Problem-ID:
1838
Description:
Memory allocations not checked.
Symptom:
Possible oopses or BUG()s (not observed yet).
Problem:
Failure to check if an allocation was successful. Missing flags.
Solution:
Check if allocation worked; clean up if not. Add GFP_ATOMIC.
Problem-ID:
1892
Description:
munmap frees pages still in use.
Symptom:
User process crashes and/or kernel oops in page_alloc.c.
Problem:
sys_munmap for a mapping near the end of the address space frees pages still in use. This is caused by an address calculation overflow in free_pgtables.
Solution:
Check for the overflow in free_pgtables.
Problem-ID:
1233

This patch contains an enhancement of the device driver for channel attached tape devices. It implements an infrastructure which allows to have different tape disciplines as separate Kernel modules. The generic tape driver (tape390) tries to automatically load the known tape disciplines. 3480 and 3490 tape disciplines are included in this patch. The 3590 tape discipline can be downloaded separately from this web site: tape_3590_mod. Basically this functionality is a backport of the May2002 tape driver. For documentation how to use this enhanced tape device driver please refer to "Chapter 5.Channel-attached tape device driver" of the "Linux for zSeries and S/390 Device Drivers and Installation Commands" manual of the May 2002 stream.

This patch also contains:

and some cosmetic changes.

Everybody should apply this patch.

To create the complete Linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-s390-7.diff (IBM)
+ linux-2.4.7-s390-8-iucv.diff (IBM)
+ linux-2.4.7-s390-9-extfix.diff (IBM)
+ linux-2.4.7-s390-10.diff (IBM)
+ linux-2.4.7-s390-11.diff (IBM)

Category operating system.
Contains a patch for the linux kernel 2.4.7 that will change the timing method from the regular 100 hz interrupts to on demand timer interrupts. This saves some cpu cycles in an idle linux image. The backdraw is that a busy linux image will do a small amount of additional work every time the switch between user mode and kernel mode is done. In short if you are running many images under VM the on demand timers are useful but you probably don't want to use it running under LPAR or native. The patch introduces a configuration option CONFIG_NO_HZ_TIMER that lets you choose between the old and the new behaviour. Note that you'll need different lcs and qeth modules if you use the no hz timer option.

This linux-2.4.7-timer-6.tar.gz is a complete replacement for the already shipped timer patches:

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-s390-7.diff (IBM)
+ linux-2.4.7-s390-8-iucv.tar.gz (IBM)
+ linux-2.4.7-s390-9-extfix.diff (IBM)
+ linux-2.4.7-s390-10.diff (IBM)
+ linux-2.4.7-s390-11.diff (IBM)
+ linux-2.4.7-timer-6.diff (IBM)

Description:
Order 2 allocation relief
Symptom:
Under stress and after long uptimes of a 64 bit system the error message "__alloc_pages: 2-order allocation failed." appears and either the fork of a new process fails or an active process dies.
Problem:
The order 2 allocation problem is based in the size of the region and segment tables as defined by the zSeries architecture. A full region or segment table in 64 bit mode takes 16 KB of contiguous real memory. The page allocation routines do not guarantee that a higher order allocation will succeed due to memory fragmentation.
Solution:
The order 2 allocation fix is supposed to reduce the number of order 2 allocations for the region and segment tables to a minimum. To do so it uses a feature of the architecture that allows to create incomplete region and segment tables. In almost all cases a process does not need full region or segment tables. If a full region or segment table is needed it is reallocated to the full size.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-s390-7.diff (IBM)
+ linux-2.4.7-s390-8-iucv.diff (IBM)
+ linux-2.4.7-s390-9-extfix.diff (IBM)
+ linux-2.4.7-s390-10.diff (IBM)
+ linux-2.4.7-s390-11.diff (IBM)
+ linux-2.4.7-order2-5.diff (IBM), or on top of linux-2.4.7-timer-6.diff (IBM) if timer is required.


2003-02-20 OCO modules (kernel 2.4.7) for the "August 2001 stream"


2003-02-20 Utilities for the "August 2001 stream"

This version of the s390-tools consists out of the following accumulated patches:

s390-tools.tar.gz (IBM)
+ s390-tools-1.diff (IBM)
+ s390-tools-2.diff (IBM)
+ s390-tools-3.diff (IBM)
+ s390-tools-4.diff (IBM)
+ s390-tools-5.diff (IBM)

Besides these patches, the following changes are included in the s390-tools-1.0.6 package:

Description:
Wrong VTOC bit for large DASD
Symptom:
The z/OS tool IEHLIST fails on a CDL formatted 3390/9 DASD with rc 8.
Problem:
The DS4DOSBT bit in the FMT4 DSCB of the VTOC was not set for large DASD.
Solution:
Set DS4VTOCI in the FMT4 DSCB initially to 0xa0 instead to 0x20. This indicates an invalid FMT5 DSCB and to use the FMT7 DSCB (extended free space management)
Problem-ID:
1861
Description:
zgetdump does not complain if filesystem is full.
Symptom:
It looks like dump has been copied successfully, but in fact it is not complete.
Problem:
Error code of write() was not checked.
Solution:
Check error code and write error message.
Problem-ID:
1946
Description:
Added Multi Volume support for System Dump on 3590 tape devices.
Description:
Added shell script 'dbginfo.sh' (which collects information useful for debugging purposes) to s390-tools package.
Description:
Added tool 'tape390_display' to s390-tools package.

2002-12-19 OCO modules (kernel 2.4.17) for the "August 2001 stream"

The qdio and qeth 31-bit and 64-bit OCO-modules of 2002-12-19 are replacements for the 2002-08-16 recommended qdio and qeth modules.

Recommended OCO modules 31-bit (superseded)

Recommended OCO modules 64-bit (superseded)

Description:
Re-enable OSA features like broadcast after cable pull.
Symptom:
Broadcast doesn't work on OSD devices after cable pull.
Description:
Fix MAC decoding problem for VM Guest LAN interfaces (needs PTF UM30652, available for z/VM 4.3.0).
Symptom:
MAC address could not be determined for VM Guest LAN interfaces.
Description:
Removed message "adapter is using anycast or nocast. Using unicast instead."
Symptom:
A lot of messages "adapter is using anycast or nocast. Using unicast instead." showing up, possibly jamming the console.
Description:
Fix high load in many-to-one communication scenarios.
Symptom:
When multiple guests send traffic to one destination under VM LAN, the Linux load goes to 100%

2002-12-19 OCO modules (kernel 2.4.7) for the "August 2001 stream"

The qdio and qeth 31-bit and 64-bit OCO-modules of 2002-12-19 are replacements for the 2002-08-16 recommended qdio and qeth modules.

Recommended OCO modules 31-bit (superseded)

Recommended OCO modules 64-bit (superseded)

Description:
Re-enable OSA features like broadcast after cable pull.
Symptom:
Broadcast doesn't work on OSD devices after cable pull.
Description:
Fix MAC decoding problem for VM Guest LAN interfaces (needs PTF UM30652, available for z/VM 4.3.0).
Symptom:
MAC address could not be determined for VM Guest LAN interfaces.
Description:
Removed message "adapter is using anycast or nocast. Using unicast instead."
Symptom:
A lot of messages "adapter is using anycast or nocast. Using unicast instead." showing up, possibly jamming the console.
Description:
Fix high load in many-to-one communication scenarios.
Symptom:
When multiple guests send traffic to one destination under VM LAN, the Linux load goes to 100%

2002-11-25 kernel 2.4.17 for the "August 2001 stream"

Description:
Tape attach fails.
Symptom:
Linux hangs after a tape attach, or an attached tape is not recognized.
Problem:
Msch in enable_subchannel encounters a pending status first; a second msch succeeds, but the return code is still -EIO.
Solution:
Set the return code to 0 after a successful msch.
Description:
Unsolicited interrupts.
Symptom:
Dasd reports an unsolicited interrupt.
Problem:
The I/O layer detected a condition code 3 situation during a SetPGID and erroneously called dasd's interrupt handler.
Solution:
Don't call the device driver's interrupt handler when a "device/path not operational" situation occurs during an internal I/O.
Description:
Hang on 64 bit.
Symptom:
Possible hangs on 64 bit systems.
Problem:
Flags variable in read_dev_chars is too short.
Solution:
Change flags variable to unsigned long.
Description:
Linux hangs.
Symptom:
Possible hang when loading a device driver (not observed yet).
Problem:
Read_dev_chars and read_conf_data leave interrupts disabled on error.
Solution:
Do __restore_flags() in both cases
Description:
Path grouping fails.
Symptom:
Path groups are not correctly set, leading to "Unexpected error 0" messages in /proc/s390dbf/cio_msg/sprintf.
Problem:
Incorrect check for errors in DevicePathVerification.
Solution:
Correctly check for errors in DevicePathVerification.
Description:
Deferred cc 3 handling.
Symptom:
Linux fails to detect devices after 'not operational' messages.
Problem:
After a deferred cc 3 in SensePGID, Linux failed to try path grouping for other paths.
Solution:
Correctly retry after 'not operational' conditions.
Description:
LCS does not compile with gcc 3.2
Symptom:
Compile error in lcs.c
Problem:
lcs uses '#if BUG' (BUG is a kernel macro)
Solution:
Use '#if 0' instead

Everybody should apply this patch.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (see www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)
+ linux-2.4.17-s390-3.diff (IBM)
+ linux-2.4.17-s390-4-iucv.diff (IBM)
+ linux-2.4.17-s390-5.diff (IBM)


2002-11-25 kernel 2.4.7 for the "August 2001 stream"

Description:
Hangs after machine checks.
Symptom:
Linux hangs after a device is gone.
Problem:
S390_free_irq tried synchronous halt_IO on the subchannel, but no interrupt was reported back.
Solution:
Don't do synchronous halt_IO in s390_free_irq.
Description:
Tape attach fails.
Symptom:
Linux hangs after a tape attach, or an attached tape is not recognized.
Problem:
Msch in enable_subchannel encounters a pending status first; a second msch succeeds, but the return code is still -EIO.
Solution:
Set the return code to 0 after a successful msch.
Description:
Unsolicited interrupts.
Symptom:
Dasd reports an unsolicited interrupt.
Problem:
The I/O layer detected a condition code 3 situation during a SetPGID and erroneously called dasd's interrupt handler.
Solution:
Don't call the device driver's interrupt handler when a "device/path not operational" situation occurs during an internal I/O.
Description:
Hang on 64 bit.
Symptom:
Possible hangs on 64 bit systems.
Problem:
Flags variable in read_dev_chars is too short.
Solution:
Change flags variable to unsigned long.
Description:
Linux hangs.
Symptom:
Possible hang when loading a device driver (not observed yet).
Problem:
Read_dev_chars and read_conf_data leave interrupts disabled on error.
Solution:
Do __restore_flags() in both cases.
Description:
Path grouping fails.
Symptom:
Path groups are not correctly set, leading to "Unexpected error 0" messages in /proc/s390dbf/cio_msg/sprintf are "Unexpected error 0" messages.
Problem:
Incorrect check for errors in DevicePathVerification.
Solution:
Correctly check for errors in DevicePathVerification.
Description:
Deferred cc 3 handling.
Symptom:
Linux fails to detect devices after 'not operational' messages.
Problem:
After a deferred cc 3 in SensePGID or SetPGID, Linux failed to try path grouping for other paths.
Solution:
Correctly retry after 'not operational' conditions.
Description:
LCS does not compile with gcc 3.2
Symptom:
Compile error in lcs.c
Problem:
lcs uses '#if BUG' (BUG is a kernel macro)
Solution:
Use '#if 0' instead

Everybody should apply this patch.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-s390-7.diff (IBM)
+ linux-2.4.7-s390-8-iucv.diff (IBM)
+ linux-2.4.7-s390-9-extfix.diff (IBM)
+ linux-2.4.7-s390-10.diff (IBM)


2002-09-13 kernel 2.4.7 for the "August 2001 stream"

Description:
DIAG access to CMS reserved minidisks clashes with PFAULT support
Symptom:
Endlessly looping system.
Problem:
DIAG and PFAULT share the same external interrupt 0x2603. Because PFAULT is initialized before kmalloc works the registration code keeps a static buffer for the registration of the pfault interrupt handler. Since DIAG uses the same external interrupt number the same static buffer is used for both interrupt handlers. This create a loop in the interrupt chain causing the system to loop.
Solution:
Add two functions [un]register_early_external_interrupt and use these functions for early registration of external interrupts. The two new functions require the static buffer to be passed to them. This prevents that DIAG and PFAULT use the same static buffer.

Everybody should apply this patch.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-s390-7.diff (IBM)
+ linux-2.4.7-s390-8-iucv.diff (IBM)
+ linux-2.4.7-s390-9-extfix.diff (IBM)

  • linux-2.4.7-timer-5.tar.gz MD5 recommended (2002-09-13) (superseded)

    Release notes: (2002-09-13: adaption to above 2002-09-13 kernel-patch)
    On demand timer patch Category operating system. Contains a patch for the linux kernel 2.4.7 that will change the timing method from the regular 100 hz interrupts to on demand timer interrupts. This saves some cpu cycles in an idle linux image. The backdraw is that a busy linux image will do a small amount of additional work every time the switch between user mode and kernel mode is done. In short if you are running many images under VM the on demand timers are useful but you probably don't want to use it running under LPAR or native. The patch introduces a configuration option CONFIG_NO_HZ_TIMER that lets you choose between the old and the new behaviour. Note that you'll need different lcs and qeth modules if you use the no hz timer option.

    This linux-2.4.7-timer-5.tar.gz is a complete replacement for the already shipped timer patches:

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-s390-7.diff (IBM)
+ linux-2.4.7-s390-8-iucv.tar.gz (IBM)
+ linux-2.4.7-s390-9-extfix.diff (IBM)
+ linux-2.4.7-timer-5.diff (IBM)


2002-08-16 kernel 2.4.17 for the "August 2001 stream"

This is a backport of the latest fixes in the linux IUCV driver to linux 2.4.17.

Corrected 2002-09-18 to apply in the standard manner.

It addresses a patch by David Kennedy <dkennedy@linuxcare.com> which eliminates a race condition during initialization.

David's patch however, does introduce another SERIOUS problem: When running on a guest with more than one CPU it can CRASH YOUR VM!!!
This has been fixed with this patch.

Everybody should apply this patch.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (see www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)
+ linux-2.4.17-s390-3.diff (IBM)
+ linux-2.4.17-s390-4-iucv.diff (IBM)


2002-08-16 kernel 2.4.7 for the "August 2001 stream"

This is a backport of the latest fixes in the linux IUCV driver to kernel 2.4.7.

Corrected 2002-09-13 to apply in the standard manner.

It addresses a patch by David Kennedy <dkennedy@linuxcare.com> which eliminates a race condition during initialization.

David's patch however, does introduce another SERIOUS problem: When running on a guest with more than one CPU it can CRASH YOUR VM!!!
This has been fixed with this patch.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-s390-7.diff (IBM)
+ linux-2.4.7-s390-8-iucv.diff (IBM)


2002-08-16 OCO modules (kernel 2.4.17) for the "August 2001 stream"

The qdio and qeth 31-bit and 64-bit OCO-modules of 2002-08-16 are replacements for the 2002-06-17 recommended qdio and qeth modules.

Recommended OCO modules 31-bit (superseded)

Recommended OCO modules 64-bit (superseded)


2002-08-16 OCO modules (kernel 2.4.7) for the "August 2001 stream"

The qdio and qeth 31-bit and 64-bit OCO-modules of 2002-08-16 are replacements for the 2002-06-17 recommended qdio and qeth modules.

Recommended OCO modules 31-bit (superseded)

Recommended OCO modules 64-bit (superseded)


2002-07-25 Tool-chain for the "August 2001 stream"

This patch contains the following compiler bug fixes:

Description:
Literal pool overflow handling.
Symptom:
Compiler aborts with 'multiple literal pool' internal compiler error, or otherwise generates incorrect code for routines using >4K literals.
Problem:
The compiler uses a per-function literal pool to access immediate constants too large for the S/390 immediate instructions. This pool is limited to a size of 4 KB. Fortunately, nearly all routines do not exceed this limit, but some -usually automatically generated code- do.
To cope with this situation, the compiler tried to split the literal pool into multiple 'pool chunks', each smaller than 4 KB. The algorithms used to perform this split, however, suffered from several design flaws that could cause the compiler to abort (because it wouldn't find a proper place to split the pools) or else generate invalid code -especially when using -fpic/-fPIC- (because it split the pools at invalid places without noticing it).
Solution:
The whole literal pool handling was completely replaced for gcc 3.1.1 and above; the new algorithm solves all those problems. This patch backports the new literal pool overflow handling to the gcc 2.95.3 compiler.

You will need this patch only if you run into problems caused by literal pool overflows.

To create the complete compiler sources, the following patches need to be applied in sequence:

gcc-2.95.3.tar.gz (see gcc.gnu.org)
+ gcc-2.95.3-s390.diff (IBM)
+ gcc-2.95.3-s390-1.diff (IBM)
+ gcc-2.95.3-s390-2.diff (IBM)
+ gcc-2.95.3-s390-3.diff (IBM)
+ gcc-2.95.3-s390-4.diff (IBM)
+ gcc-2.95.3-s390-5.diff (IBM)

This patch contains the following binutils bug fixes:

Description:
Linker crashes.
Symptom:
The static link of some special object files crashes the linker.
Problem:
The final, static link of object files that do not contain any direct references to dynamic symbols but only indirect ones crashes the linker because the dynobj pointer and the got pointer are used but never initialised.
Solution:
Initialise the dynobj pointer if it is needed and avoid accessing the got section if it does not exists.

Everybody should apply this patch.

Note: You should apply the glibc-2.2.4-s390-3 patch to your system as well but you need to be careful with it. Please read the description for the "Undefined weak external" bug for details about this problem.

To create the complete binutils sources, the following patches need to be applied in sequence:

binutils-2.11.90.0.27.tar.gz (see ftp://www.kernel.org/pub/linux/devel/binutils/)
+ binutils-2.11.90.0.27-s390.diff (IBM)
+ binutils-2.11.90.0.27-s390-1.diff (IBM)
+ binutils-2.11.90.0.27-s390-2.diff (IBM)
+ binutils-2.11.90.0.27-s390-3.diff (IBM)
+ binutils-2.11.90.0.27-s390-4.diff (IBM)


2002-07-04 Tool-chain for the "August 2001 stream"

This patch contains the following binutils bug fixes:

Description:
Broken relocation sections.
Symptom:
Dynamic linker error message "unexpected reloc type" or program crashes / malfunctions.
Problem:
There are two problems in regard to the relocation sections. First hidden symbols are not excluded from the final link in all cases, dependent on the link order. Second the calculation of the size of the relocation sections is incorrect if hidden symbols have been excluded.
Solution:
Correct tests to exclude hidden symbols from the relocation sections in the final link and rework section allocation for .rela section to determine the correct size.

Everybody should apply this patch.

Note: You should apply the glibc-2.2.4-s390-3 patch to your system as well but you need to be careful with it. Please read undef-weak-bug for details about this problem.

To create the complete binutils sources, the following patches need to be applied in sequence:

binutils-2.11.90.0.27.tar.gz (see ftp://www.kernel.org/pub/linux/devel/binutils/)
+ binutils-2.11.90.0.27-s390.diff (IBM)
+ binutils-2.11.90.0.27-s390-1.diff (IBM)
+ binutils-2.11.90.0.27-s390-2.diff (IBM)
+ binutils-2.11.90.0.27-s390-3.diff (IBM)


2002-06-17 kernel 2.4.17 for the "August 2001 stream"

The 2002-06-17 timer patch supersedes the 2002-04-15 timer patch, which did not apply correctly.

On demand timer patch:
Category operating system. Contains a patch for the linux kernel 2.4.17 that changes the timing method from the regular 100 hz interrupts to on demand timer interrupts. This saves some cpu cycles in an idle linux image. The drawback is that a busy linux image will do a small amount of additional work every time the switch between user mode and kernel mode is done. In short if you are running many images under VM the on demand timers are useful but you probably don't want to use it running under LPAR or native. The patch introduces a configuration option CONFIG_NO_HZ_TIMER that lets you choose between the old and the new behavior. Note that you'll need different qdio, qeth, and z90crypt modules if you use the no hz timer option.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)
+ linux-2.4.17-s390-3.diff (IBM)
+ linux-2.4.17-timer-3.diff (IBM)


2002-06-17 OCO modules (kernel 2.4.7) for the "August 2001 stream"

The qdio and qeth 31-bit and 64-bit OCO-modules of 2002-06-17 are replacements for the 2002-03-01 recommended qdio and qeth modules (see below description).

Recommended OCO modules 31-bit (superseded)

Recommended OCO modules 64-bit (superseded)


2002-06-17: OSA-Express QDIO enhancement under VM

Gigabit Ethernet throughput (transactions per second) can potentially increase while potentially reducing the VM CP cost (CPU cycles per transaction) for Linux guests using Gigabit Ethernet or Fast Ethernet OSA-Express running QDIO under supported levels of VM, if the following requirements are installed:

Please refer to the OSA-Express QDIO performance enhanced in OSA-Express QDIO performance enhanced in consolidated Linux under z/VM environments document providing more details.


2002-06-12 kernel 2.4.17 for the "August 2001 stream"

This patch contains the following linux kernel bug fixes:

Description:
Memory management: dirty bit handling.
Symptom:
User process crashes.
Problem:
An mprotect operation on a dirty, private user page sets the _PAGE_ISCLEAN bit in the pte, effectivly removing the dirty bit. Under memory pressure changes in the now clean page get lost.
Solution:
Preserve the _PAGE_ISCLEAN bit in pte_modify.
Description:
Memory management: mprotect problem.
Symptom:
Writes to memory areas that have been writed protected with the mprotect system call do not cause segmentations faults.
Problem:
A check for the VM_WRITE bit in the page fault handler is missing.
Solution:
Add missing check.
Note:
The missing check has only been added to the 31 bit code but NOT to the 64 bit code. The reason is a bug in the 64 bit gcc 2.95.3 compiler that will generate relocations in .rodata section of shared libraries. There is code in the dynamic linker to cope with this situation but the dynamic linker itself may not contain such relocations. Replacing the kernel of a 64 bit system without fixing the .rodata problem in the dynamic linker would make the system unusable.
Description:
ptrace locking
Symptom:
Crashes in kernel space or kernel hangs while using debugging tools like strace or gdb.
Problem:
The traced process was not properly locked in sys_ptrace.
Solution:
Add get_task_struct/free_task_struct calls in sys_ptrace.
Description:
Daisy chaining of external interrupts.
Symptom:
Concurrent use of pfault and dasd diag causes kernel hangs.
Problem:
Pfault and dasd diag use the same static ext_int_info_t structure. This creates a loop in the ext_int_info_t chain for external interrupt 0x2603.
Solution:
Add [un]register_early_external_interrupt and make the kernel objects that are registering early pass a pointer to their static buffer.
Description:
Parallel make failures.
Symptom:
Make fails because of missing file/undefined symbols in entry.S.
Problem:
Parallel make can build entry.o before asm-offsets.h is present.
Solution:
Add dependency entry.S -> asm-offsets.h.
Description:
Floating point use in the 31 bit emulation.
Symptom:
Floating point register contents of 31-bit emu applications get corrupted.
Problem:
The 31-bit emu signal handler dispatch code clobbered floating point registers.
Solution:
Do not use floating point arithmetic in kernel space.
Description:
Dasdfmt ctrl-c problem.
Symptom:
ctrl-c during dasd formatting causes kernel panic.
Problem:
Request structures are accessed after being freed.
Solution:
Fix race condition in request handling.
Description:
Deadlocks in the dasd driver on the dev_level_lock.
Symptom:
Kernel hangs on adding / removing dasd devices.
Problem:
The linux-2.4.17-s390-2.diff introduced an additional lock to protect the list of devices. This lock is not properly freed in all places and did not fix the original problem.
Solution:
Remove the dev_level_lock.
Description:
Detection of VM reserved minidisks.
Symptom:
VM reserved minidisks do not get registered as diag disks if they are attached after ipl.
Problem:
Eckd is checked first and every reserved minidisk is accessed via the eckd discipline instead of the diag discipline.
Solution:
Let the diag discipline check first for VM reserved minidisks.
Description:
Bringup of eckd devices.
Symptom:
Kernel panic "Unable to mount root" or inaccessible eckd devices.
Problem:
Large device ranges trigger a race condition in the dasd initialization for eckd devices. If the completion interrupt for the format detection ccw arrives before the loop over all devices of the range is completed the affected dasd is not completety initialized.
Solution:
Fix retry condition in the device startup code.
Description:
Common io layer: path verification.
Symptom:
Linux fails to bring up devices after printing "became 'not operational' " messages for a certain path.
Problem:
SetPGID returned -EAGAIN to DevicePathVerification on deferred condition code 3 for a path, but DevicePathVerification didn't try SetPGID down the remaining paths and returned with an error.
Solution:
Fix return code handling in DevicePathVerification.
Description:
Common io layer: device freeing.
Symptom:
Linux hangs after a device is gone, or a link failed.
Problem:
s390_free_irq tried synchronous halt_IO on the subchannel, but no interrupt was reported back.
Solution:
Don't do synchronous halt_IO in s390_free_irq.

Everybody should apply this patch.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (see www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)
+ linux-2.4.17-s390-3.diff (IBM)


2002-06-04 Tool-chain for the "August 2001 stream"

This patch contains the following compiler bug fixes:

Description:
Use of LOAD ADDRESS vs. ADD for pointer computation.
Symptom:
Compiler generates incorrect code.
Problem:
In some cases, when compiling code that takes the address of a local stack variable near code involving conditions (if / while / ...), the generated code will be incorrect. This is caused by the compiler using an ADD instruction (which modifies the condition code) at a point where it expects a LOAD ADDRESS to be used (which preserves the condition code).
Solution:
Use LA to compute addresses of local variables.
Description:
Inline memcpy problem.
Symptom:
Compiler generates incorrect code.
Problem:
When generating code to implement memcpy inline, the compiler assumes in some cases incorrectly that after the memcpy completes, certain registers still hold the addresses pointing to the start of the source and/or target memory areas, although these registers were in fact modified by the inline memcpy code.
Solution:
Rewrite the corresponding insn patterns to remove the incorrect assumptions.
Description:
Dead code elimination of complex switch statements.
Symptom:
Compiler generates incorrect code.
Problem:
When the source code contains a complex switch statement (one that would be implemented using a jump target table), and *all* its cases prove to contain dead code (i.e. code that has no effect on subsequent computations and can be completely deleted by the compiler), and therfore the compiler decides to remove the whole switch statement, it will in some cases erroneously remove some of code *following* the switch statement as well.
Solution:
Emit barrier following the indirect jump insn.
Description:
Illegal address constants on 64-bit.
Symptom:
Internal compiler error "unrecognized insn".
Problem:
In some rare cases, the compiler would generate an illegal address constant, causing an ICE.
Solution:
Don't generate illegal address constants.

Everyone using the compiler should apply this patch.

To create the complete compiler sources, the following patches need to be applied in sequence:

gcc-2.95.3.tar.gz (see gcc.gnu.org)
+ gcc-2.95.3-s390.diff (IBM)
+ gcc-2.95.3-s390-1.diff (IBM)
+ gcc-2.95.3-s390-2.diff (IBM)
+ gcc-2.95.3-s390-3.diff (IBM)
+ gcc-2.95.3-s390-4.diff (IBM)


2002-04-30 kernel 2.4.17 for the "August 2001 stream"

This patch contains a dummy module that includes headers for all kernel types that the dump analysis tool lcrash needs. The kernel type information is used as input by the lcrash utility when analyzing system crash dumps or the live system. The dummy module is built together with the kernel image or simply with: 'make Kerntypes'. Everybody should apply this patch.
These changes do not affect the OCO-modules.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (see www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)
+ linux-2.4.17-s390-kerntypes.diff (IBM)


2002-04-15 kernel 2.4.17 for the "August 2001 stream"

This recommended patch contains the following linux kernel bug fixes

Description:
Console setup restrictions.
Symptom:
Unable to use a 3215/3270 device as console on an LPAR.
Problem:
The console setup code explicitly tests for VM or P/390 before it accepts a 3215 or 3270 console device.
Solution:
Remove machine type restrictions from conmode_setup.
Description:
Dasd driver.
Symptom:
Stress test with device attach/detach hangs the system.
Problem:
Concurrent changes to the states of dasd devices lead to inconsistencies.
Solution:
Add a lock that prevents concurrent changes of device state.
Description:
Dasd reserve/release timeout.
Symptom:
Kernel crashes in dasd reserve/release function.
Problem:
The reserve/release timeout can remove the reserve/release request anytime. This was not noticed in dasd_sleep_on_req.
Solution:
Recheck the state of the reserve/release request after the device lock was acquired.
Description:
Read-only status of dasd devices.
Symptom:
/proc/dasd/devices indicated reported read-only/read-write status for device that have been modified with the BLKROSET i/o control.
Problem:
The default BLKROSET i/o control implementation sets the read-only/read-write bit in the block device layer but the dasd driver has bits of his own.
Solution:
Implement a private BLKROSET i/o control for dasd that keeps the bits in the block device layer and in the dasd driver consistent.
Description:
Dasd device bringup.
Symptom:
The system crashes in dasd device bringup.
Problem:
The bottom half can be called early with a request on the block device queue. The bottom half requeues the request to the internal dasd queue although the device is in a state where this may not happen yet.
Solution:
Plug the device while it is initialized.
Description:
Diag discipline not working.
Symptom:
Dasd devices that are addressed with the diag discipline do not work.
Problem:
There are two different problems that prevent the diag discipline from working. 1) pfault and dasd diag use the same external interrupt number. If pfault is active the diag discipline never gets interrupts. 2) diag devices only get promoted to state ready but not to state online.
Solution:
Fix the two problems: 1) deliver external interrupts to all interrupt handlers with matching external interrupt number and let the interrupt handler filter out "their" requests. 2) do not return from dasd_set_device_level with -EAGAIN for diag devices.
Description:
31 bit emulation.
Symptom:
31 bit programs running in the 31 bit emulation under 64 bit linux do not work correctly.
Problem:
SVC emulation is incorrect in various aspects. 1) the 31 bit personality is missing, 2) emulation of sys_stime and sys_sysctl can fail because of incorrect 31/64 bit argument conversion, 3) emulation of MSGSND/MSGRCV ipc system call returned different results in error cases, 4) emulation of sys_shmctl uses an incorrect layout for IPC_64 type shared memory, 5) missing pointer conversion in sys_fcntl emulation and 6) emulation of old_getrlimit is incorrect.
Solution:
Add 31 bit personality and correct emulation of svcs.
Description:
Kernel compilation with gcc 3.1.
Symptom:
Kernel compilation with gcc version 3.1 fails.
Problem:
Some kernel code that used to work with gcc 2.95.3 is rejected by gcc 3.1.
Solution:
Fix the code so that gcc 3.1 accepts it.
Description:
Blanks in labels.
Symptom:
Devices with labels that contain blanks are not accessible over the fstab.
Problem:
It is impossible to specify a blank in a device label in /etc/fstab.
Solution:
Do not allow blanks in device labels.
Description:
Machine check enabling.
Symptom:
No or late machine check handling.
Problem:
The machine check enable bit in the PSW is not set while a processor sleeps in cpu_idle and is not set at all for 64 bit.
Solution:
Set the machine check bit in the relevant PSW masks.
Description:
Channel device layer.
Symptom:
None.
Problem:
It is not possible to specify multiple parameters with a single channel device configuration string.
Solution:
Allow multiple add_parms in the channel device configuration strings.
Description:
iucv inoperational after reboot.
Symptom:
The iucv interface does not work after a reboot.
Problem:
The shutdown of the iucv interface needs to be done on the same cpu that did the initialization.
Solution:
Remember which cpu did the initialization and call it to do the shutdown.
Description:
Panic loops.
Symptom:
Endless program check loop.
Problem:
If panic is called in interrupt while the console semaphore has already been acquired the processor enters an endless program check loop.
Solution:
Only do a down_trylock in console_unblank on the console semaphore instead of a down to avoid the scheduling in interrupt trap.
Description:
No sske optimization.
Symptom:
None.
Problem:
The sske avoidance optimization is not working because the same bit is used for _PAGE_MKCLEAN and _PAGE_ISCLEAN.
Solution:
Use a different bit for _PAGE_ISCLEAN.
Description:
Ptrace on 64 bit.
Symptom:
System crashes trying to strace a program.
Problem:
In resume the wrong offset is used to test if a program uses program event recording. Two side effects in the register usage are not taken into account.
Solution:
Fix offset and register use in entry.S.
Description:
Reboot failures.
Symptom:
Reboot either loops or end with disabled wait.
Problem:
Two problems. 1) the start subchannel on the reipl ccw can fail and 2) a cpu is deactivated but still holds a lock that is needed by the reipl function.
Solution:
Try to start the reipl ccw multiple times and force all cpus into a state where all locks that the reipl functions needs are free.
Description:
Common i/o layer.
Symptom:
Device inaccessible after chpid offline/online.
Problem:
Calculation of path group id depends on cpu id.
Solution:
Introduce a global path group id that is used as default for set path group id.
Description:
Common i/o layer.
Symptom:
Possible kernel oops writing to /proc/cio_ignore.
Problem:
The input string to /proc/cio_ignore is copied to a buffer that is one byte short.
Solution:
Fix the allocation for the buffer.
Description:
Backtrace over signal frames.
Symptom:
catchsegv can crash if the fault happens in a signal handler.
Problem:
The backchain in the signal frame is not setup.
Solution:
Set the backchain in the signal frame to point to the interrupted stack frame.
Description:
3270 device numbers.
Symptom:
The devices file system entries for a 3270 device with a 4 digit device number are incorrect.
Problem:
The output of 3270 device numbers is restricted to 3 digits.
Solution:
Allow 4 digits in the print statements of 3270 device numbers.
Description:
Type conversion in __put_user/__get_user.
Symptom:
System calls fail although the input is correct.
Problem:
__put_user/__get_user are not doing proper type conversion. If the user space pointer does not point to the same type as the variable given in the argument to __put_user/__get_user this leads to problems. This is especially true for the emulation of 31 bit system calls on 64 bit linux.
Solution:
Do proper type conversion like it is done in put_user/get_user.

Everybody should apply this patch.
These changes do not affect the OCO-modules.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (see www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)

Release notes: (2002-04-15: adaption to above 2002-04-15 kernel-patches)

On demand timer patch:
Category operating system. Contains a patch for the linux kernel 2.4.17 that changes the timing method from the regular 100 hz interrupts to on demand timer interrupts. This saves some cpu cycles in an idle linux image. The drawback is that a busy linux image will do a small amount of additional work every time the switch between user mode and kernel mode is done. In short if you are running many images under VM the on demand timers are useful but you probably don't want to use it running under LPAR or native. The patch introduces a configuration option CONFIG_NO_HZ_TIMER that lets you choose between the old and the new behavior. Note that you'll need different qdio, qeth, and z90crypt modules if you use the no hz timer option.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (see www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-s390-2.diff (IBM)
+ linux-2.4.17-timer-2.diff (IBM)


2002-04-15 kernel 2.4.7 for the "August 2001 stream"

This patch contains the following linux kernel bug fixes:

Description:
Console setup restrictions.
Symptom:
Unable to use a 3215/3270 device as console on an LPAR.
Problem:
The console setup code explicitly tests for VM or P/390 before it accepts a 3215 or 3270 console device.
Solution:
Remove machine type restrictions from conmode_setup.
Description:
Dasd driver.
Symptom:
Stress test with device attach/detach hangs the system.
Problem:
Concurrent changes to the states of dasd devices lead to inconsistencies.
Solution:
Add a lock that prevents concurrent changes of device state.
Description:
Read-only status of dasd devices.
Symptom:
/proc/dasd/devices indicated reported read-only/read-write status for device that have been modified with the BLKROSET i/o control.
Problem:
The default BLKROSET i/o control implementation sets the read-only/read-write bit in the block device layer but the dasd driver has bits of his own.
Solution:
Implement a private BLKROSET i/o control for dasd that keeps the bits in the block device layer and in the dasd driver consistent.
Description:
Dasd device bringup.
Symptom:
The system crashes in dasd device bringup.
Problem:
The bottom half can be called early with a request on the block device queue. The bottom half requeues the request to the internal dasd queue although the device is in a state where this may not happen yet.
Solution:
Plug the device while it is initialized.
Description:
Diag discipline not working.
Symptom:
Dasd devices that are addressed with the diag discipline do not work.
Problem:
There are two different problems that prevent the diag discipline from working. 1) pfault and dasd diag use the same external interrupt number. If pfault is active the diag discipline never gets interrupts. 2) diag devices only get promoted to state ready but not to state online.
Solution:
Fix the two problems: 1) deliver external interrupts to all interrupt handlers with matching external interrupt number and let the interrupt handler filter out "their" requests. 2) do not return from dasd_set_device_level with -EAGAIN for diag devices.
Description:
31 bit emulation.
Symptom:
31 bit programs running in the 31 bit emulation under 64 bit linux do not work correctly.
Problem:
SVC emulation is incorrect in various aspects. 1) the 31 bit personality is missing, 2) emulation of sys_stime and sys_sysctl can fail because of incorrect 31/64 bit argument conversion, 3) emulation of MSGSND/MSGRCV ipc system call returned different results in error cases, 4) emulation of sys_shmctl uses an incorrect layout for IPC_64 type shared memory, 5) missing pointer conversion in sys_fcntl emulation and 6) emulation of old_getrlimit is incorrect.
Solution:
Add 31 bit personality and correct emulation of svcs.
Description:
Kernel compilation with gcc 3.1.
Symptom:
Kernel compilation with gcc version 3.1 fails.
Problem:
Some kernel code that used to work with gcc 2.95.3 is rejected by gcc 3.1.
Solution:
Fix the code so that gcc 3.1 accepts it.
Description:
Machine check enabling.
Symptom:
No or late machine check handling.
Problem:
The bit for enabling machine checks in the PSW is not set while a processor sleeps in cpu_idle and is not set at all for 64 bit.
Solution:
Set the machine check bit in the relevant PSW masks.
Description:
Channel device layer.
Symptom:
None.
Problem:
It is not possible to specify multiple parameters with a single channel device configuration string.
Solution:
Allow multiple add_parms in the channel device configuration strings.
Description:
iucv inoperational after reboot.
Symptom:
The iucv interface does not work after a reboot.
Problem:
The shutdown of the iucv interface needs to be done on the same cpu that did the initialization.
Solution:
Remember which cpu did the initialization and call it to do the shutdown.
Description:
Reboot failures.
Symptom:
Reboot either loops or end with disabled wait.
Problem:
Two problems. 1) the start subchannel on the reipl ccw can fail and 2) a cpu is deactivated but still holds a lock that is needed by the reipl function.
Solution:
Try to start the reipl ccw multiple times and force all cpus into a state where all locks that the reipl functions needs are free.
Description:
Common i/o layer.
Symptom:
Device inaccessible after chpid offline/online.
Problem:
Calculation of path group id depends on cpu id.
Solution:
Introduce a global path group id that is used as default for set path group id.
Description:
Common i/o layer.
Symptom:
Possible kernel oops writing to /proc/cio_ignore.
Problem:
The input string to /proc/cio_ignore is copied to a buffer that is one byte short.
Solution:
Fix the allocation for the buffer.
Description:
Backtrace over signal frames.
Symptom:
catchsegv can crash if the fault happens in a signal handler.
Problem:
The backchain in the signal frame is not setup.
Solution:
Set the backchain in the signal frame to point to the interrupted stack frame.
Description:
3270 device numbers.
Symptom:
The devices file system entries for a 3270 device with a 4 digit device number are incorrect.
Problem:
The output of 3270 device numbers is restricted to 3 digits.
Solution:
Allow 4 digits in the print statements of 3270 device numbers.
Description:
Type conversion in __put_user/__get_user.
Symptom:
System calls fail although the input is correct.
Problem:
__put_user/__get_user are not doing proper type conversion. If the user space pointer does not point to the same type as the variable given in the argument to __put_user/__get_user this leads to problems. This is especially true for the emulation of 31 bit system calls on 64 bit linux.
Solution:
Do proper type conversion like it is done in put_user/get_user.

Everybody should apply this patch.
These changes do not affect the OCO-modules.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-s390-7.diff (IBM)

Release notes: (2002-04-15: adaption to above 2002-04-15 kernel-patches)

On demand timer patch:
Category operating system. Contains a patch for the linux kernel 2.4.7 that changes the timing method from the regular 100 hz interrupts to on demand timer interrupts. This saves some cpu cycles in an idle linux image. The drawback is that a busy linux image will do a small amount of additional work every time the switch between user mode and kernel mode is done. In short if you are running many images under VM the on demand timers are useful but you probably don't want to use it running under LPAR or native. The patch introduces a configuration option CONFIG_NO_HZ_TIMER that lets you choose between the old and the new behavior. Note that you'll need different qdio, qeth, and z90crypt modules if you use the no hz timer option.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-s390-7.diff (IBM)
+ linux-2.4.7-timer-4.diff (IBM)


2002-03-18 kernel 2.4.17 for the "August 2001 stream"

This recommended patch supersedes the recommended 2.4.17 "order 2 allocation relief" patch of 2002-02-05.

Description:
Order 2 allocation relief. (Applies to 64-bit, only)
Symptom:
Under stress and after long uptimes of a 64 bit system the error message "__alloc_pages: 2-order allocation failed." appears and either the fork of a new process fails or an active process dies.
Problem:
The order 2 allocation problem is based in the size of the region and segment tables as defined by the zSeries architecture. A full region or segment table in 64 bit mode takes 16 KB of contiguous real memory. The page allocation routines do not guarantee that a higher order allocation will succeed due to memory fragmentation.
Solution:
The order 2 allocation fix is supposed to reduce the number of order 2 allocations for the region and segment tables to a minimum. To do so it uses a feature of the architecture that allows to create incomplete region and segment tables. In almost all cases a process does not need full region or segment tables. If a full region or segment table is needed it is reallocated to the full size.

Important notices:

  • This patch is very S/390 specific, but doesn't break other architectures.
  • This patch does only work for a 64-bit Linux for zSeries kernel but can also be applied if you intend to build a 31-bit kernel.
  • This patch is now compatible with the "On-demand timer patch". You can now apply both patches to the same kernel.
  • Earlier versions of this patch required the use of special OCO modules. This is no longer the case with this patch: the regular OCO modules (for standard 100 Hz timer) can be used.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)
+ linux-2.4.17-order2-1.diff (IBM)


2002-03-18 Tool-chain for the "August 2001 stream"

This patch contains the following compiler bug fixes:

Description:
Exception handling and variable argument lists.
Symptom:
Application crashes when throwing an exception.
Problem:
In functions using variable argument lists, DWARF-2 information used by the exception handling unwinding code was incorrectly generated. This incorrect information could cause the exception handling runtime library to abort an application that was throwing an exception through a routine that uses variable arguments.
Solution:
Generate correct DWARF-2 unwind data in functions using a variable argument list.
Description:
Long long multiplication on 31-bit.
Symptom:
Internal compiler error.
Problem:
In some rare cases, the compiler would abort on certain code doing multiplication of 64-bit (long long) variables. This was caused by an S/390 backend instruction pattern containing a subreg expression that confused the frontend.
Solution:
Rewrite the corresponding insn pattern to avoid the abort.
Description:
64-bit instructions generated on 31-bit.
Symptom:
tmll instructions in 31-bit assembler code.
Problem:
In some rare cases, the compiler would emit instructions of the tmll family when compiling for the s390 31-bit target architecture, although these instructions exist only on 64-bit.
Solution:
Properly mark these instructions as 64-bit only.
Description:
Bug in common code (loop optimizer).
Symptom:
Incorrect code is generated.
Problem:
In some very rare cases the strength-reduction pass would generate incorrect code due to clobbering the condition code by moving instructions around.
Solution:
This particular sub-part of the strength-reduction pass was removed (as ineffective) in gcc 3.0 anyway, so we can just deactivate it for this release.

Everyone using the compiler should apply this patch.

To create the complete compiler sources, the following patches need to be applied in sequence:

gcc-2.95.3.tar.gz (see gcc.gnu.org)
+ gcc-2.95.3-s390.diff (IBM)
+ gcc-2.95.3-s390-1.diff (IBM)
+ gcc-2.95.3-s390-2.diff (IBM)
+ gcc-2.95.3-s390-3.diff (IBM)


2002-03-18 kernel 2.4.7 for the "August 2001 stream"

This patch supersedes the recommended 2.4.7 "order 2 allocation relief" patch of 2002-01-21.

Description:
Order 2 allocation relief. (Applies to 64-bit, only)
Symptom:
Under stress and after long uptimes of a 64 bit system the error message "__alloc_pages: 2-order allocation failed." appears and either the fork of a new process fails or an active process dies.
Problem:
The order 2 allocation problem is based in the size of the region and segment tables as defined by the zSeries architecture. A full region or segment table in 64 bit mode takes 16 KB of contiguous real memory. The page allocation routines do not guarantee that a higher order allocation will succeed due to memory fragmentation.
Solution:
The order 2 allocation fix is supposed to reduce the number of order 2 allocations for the region and segment tables to a minimum. To do so it uses a feature of the architecture that allows to create incomplete region and segment tables. In almost all cases a process does not need full region or segment tables. If a full region or segment table is needed it is reallocated to the full size.

Important notices:

  • This patch is very S/390 specific, but doesn't break other architectures.
  • This patch does only work for a 64-bit Linux for zSeries kernel but can also be applied if you intend to build a 31-bit kernel.
  • This patch is now compatible with the "On-demand timer patch". You can now apply both patches to the same kernel.
  • Earlier versions of this patch required the use of special OCO modules. This is no longer the case with this patch: the regular OCO modules (for standard 100 Hz timer) can be used.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)
+ linux-2.4.7-order2-4.diff (IBM)


2002-03-04 kernel 2.4.17 for the "August 2001 stream"

This patch contains the source code for the lcs device driver.

  • The LCS device driver (formerly available as OCO, only) is now provided in source-code form.
  • This version of the LCS-driver contains the source-code for the 2002-02-18 kernel 2.4.17 OCO-modules for 31- and 64-bit.
  • The lcs network driver supports OSA-2 Ethernet Token Ring, and OSA-Express Fast Ethernet in non-QDIO mode.
  • Documentation can be found in the Linux for S/390 & zSeries Device Driver and Installation Commands manuals.

Everybody should apply this patch.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)


2002-03-04 kernel 2.4.7 for the "August 2001 stream"

This patch contains the source code for the lcs device driver.

  • The LCS device driver (formerly available as OCO, only) is now provided in source-code form.
  • This version of the LCS-driver contains the source-code for the 2002-01-21 (same as 2001-12-12) kernel 2.4.7 OCO-modules for 31- and 64-bit.
  • The lcs network driver supports OSA-2 Ethernet Token Ring, and OSA-Express Fast Ethernet in non-QDIO mode.
  • Documentation can be found in the Linux for S/390 & zSeries Device Driver and Installation Commands manuals.

Everybody should apply this patch.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-s390-6-lcs.diff (IBM)


2002-03-01 OCO modules (kernel 2.4.7) for the "August 2001 stream"

Recommended OCO modules 31-bit

The qdio and qeth 31-bit and 64-bit OCO-modules of 2002-03-01 are replacements for the previously recommended (qdio and qeth) modules.

HiperSockets support for qdio and qeth

HiperSockets support for VM-guests is available on z/VM 4.2, only and and requires the application of the PTFs for the following APARs: VM62938 and VM63034.
Please check the VM service information for latest available updates: VM Info-APAR II12444 contains useful information for using Linux under VM.

OCO-modules qdio and qeth must be selected correctly for kernels with or without the "on-demand timer" patch applied.
On-demand timer 31-bit kernels now need: qdio-2.4.7-s390-8-timer.tar.gz, and qeth-2.4.7-s390-8-timer.tar.gz.
Standard 100 Hertz timer 31-bit kernels: qdio-2.4.7-s390-8.tar.gz, and qeth-2.4.7-s390-8.tar.gz.

Recommended OCO modules 64-bit

OCO-modules qdio and qeth must be selected correctly for kernels with or without the "on-demand timer" patch applied.
Note that the "order 2 allocation relief" no longer requires special OCOs.

HiperSockets support for qdio and qeth

HiperSockets support for VM-guests is available on z/VM 4.2, only and and requires the application of the PTFs for the following APARs: VM62938 and VM63034.
Please check the VM service information for latest available updates: VM Info-APAR II12444 contains useful information for using Linux under VM.

On-demand timer 64-bit kernels now need: qdio-2.4.7-s390x-8-timer.tar.gz, and qeth-2.4.7-s390x-8-timer.tar.gz
Standard 100 Hertz timer 64-bit kernels now need: qdio-2.4.7-s390x-8.tar.gz, and qeth-2.4.7-s390x-8.tar.gz


2002-02-28 Tool-chain for the "August 2001 stream"

The undefined weak external bug:

The symptom:
The undefined weak external bug will show up if an executable is linked with a relocation against an undefined weak external function which is defined at runtime through a dynamic object that was not part of the final link. This means the weak external gets defined either by an upgrade of a dynamic library or by the use of LD_PRELOAD. Most notably this happens with the upgrade of GNU C library from version 2.2.4 to 2.2.5. The symptom is that a program that ran fine with version 2.2.4 will crash on startup with version 2.2.5.
The cause:
This problem is caused by the combination of two bugs. One in the binutils and one in the GNU C library. The bug in the GNU C library 2.2.4 is that the symbols __register_frame, __register_frame_table, __deregister_frame, __register_frame_info, __deregister_frame_info, __frame_state_for and __register_frame_info_table do not have a version. A symbol without a version is local to the GNU C library which makes it undefined for all callers outside of the library. That is the point where the binutils bug comes into play. The crtbeginS.o object contains a R_390_PLT32DBL relocation to __register_frame_info. This relocation is replaced by a R_390_PC32DBL relocation because it refers to an undefined weak external function. This is wrong because the undefined function can be defined later either by an upgrade or by LD_PRELOAD. After the relocation was made pc relative the linker (correctly) turned this into a branch to 0. Therefore every program linked with a linker with this bug contains a call to 0. As long as __register_frame_info stays undefined this causes no problem because the function call is guarded by an if that test if the function address of __register_frame_info is zero. Function addresses comparisons are handled differently to function calls and are not replaced with compares to 0. So as soon as the weak function __register_frame_info is defined, the program crashes.
The fix:
To fix this problem the two problems needs to be addressed. The linker may not replace PLT function calls with pc relative calls and the GNU C library needs versions for the seven functions. The missing versions of the seven functions is a problem on its own which has to be fixed. Otherwise C++ exception handling does not work if the exception handling crosses different shared objects.
The update procedure:
To update an existing sytem several things have to be done in a specific order. First the binutils have to be replaced. Second EVERY program in the system needs a relink to remove the call to 0 that every program contains that is linked with crtbeginS.o. That means a rebuild of every program in the system! After the recompiles are done the GNU C library has to be replaced with one that contains the missing symbol versions. If the GNU C library is updated with the versions patch before all the executables in the system have been recompiled the system is rendered unusable!

This patch contains the following binutils bug fixes:

Description:
PLT call optimization problem.
Symptom:
64 bit programs crash after a glibc upgrade to 2.2.5.
Problem:
A call via the procedure link table (PLT) to an undefined weak external references gets optimized to a pc relative call by the linker. That in turn gets replaced by a call to 0 because the function is undefined. This turns out to be incorrect as soon as the weak function is defined. This is the case for the __register_frame_info symbol that wasn't exported from the glibc prior to version 2.2.5 but is exported starting with this version. The call to __register_frame_info is done from crtbeginS.o which is linked to every 64 bit binary. This means that every single 64 bit executable contains an incorrect call that lets the program crash as soon as a glibc is installed that exports the symbol __register_frame_info.
Solution:
Prevent pc relative optimzation for undefined weak external references.

Everybody should apply this patch.

Note: You should apply the glibc-2.2.4-s390-3 patch to your system as well but you need to be careful with it. Please read undef-weak-bug for details about this problem.

To create the complete binutils sources, the following patches need to be applied in sequence:

binutils-2.11.90.0.27.tar.gz (see ftp://www.kernel.org/pub/linux/devel/binutils/)
+ binutils-2.11.90.0.27-s390.diff (IBM)
+ binutils-2.11.90.0.27-s390-1.diff (IBM)
+ binutils-2.11.90.0.27-s390-2.diff (IBM)

This patch contains the following glibc bug fixes:

Description:
C++ exception handling on 64 bit doesn't work correctly.
Symptom:
C++ program crash or misbehave throwing exceptions.
Problem:
The versions for the seven symbols __register_frame, __register_frame_table, __deregister_frame, __register_frame_info, __deregister_frame_info, __frame_state_for and __register_frame_info_table concerning exception handling are missing for 64 bit.
Solution:
Add versions for the seven symbols for 64 bit.

Everybody should apply this patch.

Note: You need to be careful upgrading your system. This patch without the binutils-2.11.90.0.27-s390-2 patch and a recompile of all executables will break your system. Please read undef-weak-bug.txt for details about this problem.

To create the complete glibc sources, the following patches need to be applied in sequence:

glibc-2.2.4.tar.gz (see www.gnu.org/software/libc)
+ glibc-linuxthreads-2.2.4.tar.gz (see www.gnu.org/software/libc)
+ glibc-2.2.4-s390.diff (IBM)
+ glibc-2.2.4-s390-1.diff (IBM)
+ glibc-2.2.4-s390-2.diff (IBM)
+ glibc-2.2.4-s390-3.diff (IBM)


2002-02-27 Tool-chain for the "August 2001 stream"

This patch contains the following glibc bug fixes:

Description:
Pthread race conditions.
Symptom:
Hanging/crashing threads.
Problem:
The MEMORY_BARRIER definition is missing. This potentially creates race conditions because the compiler may schedule instructions past synchronisation points.
Solution:
Define MEMORY_BARRIER.
Description:
Profile counting on 31 bit does not work.
Symptom:
The profile counts for programs compiled with -g are zero.
Problem:
The high order bit is not removed from the profile address in profil_counter.
Solution:
Remove the high order bit for 31 bit addresses.
Description:
libSegFault does not work.
Symptom:
catchsegv crashes.
Problem:
The second parameter to register_dump in the REGISTER_DUMP macro is incorrect.
Solution:
Fix register_dump call.
Description:
Missing definition in resource.h.
Symptom:
Compile problems with pdksh.
Problem:
The RLIMIT_LOCKS definition is missing in resource.h.
Solution:
Add RLIMIT_LOCKS.

Everybody should apply this patch.

To create the complete glibc sources, the following patches need to be applied in sequence:

glibc-2.2.4.tar.gz (see www.gnu.org/software/libc)
+ glibc-linuxthreads-2.2.4.tar.gz (see www.gnu.org/software/libc)
+ glibc-2.2.4-s390.diff (IBM)
+ glibc-2.2.4-s390-1.diff (IBM)
+ glibc-2.2.4-s390-2.diff (IBM)


2002-02-26 Utilities for the "August 2001 stream"

This patch contains the following s390-tools bug fix:

Description:
dasd tools only working with one DASD API version.
Symptom:
The tools refuse to work with a different DASD API version. A 'API version mismatch' message is written.
Problem:
The tools are checking for the DASD API version and are only operating with one API version (specified at compile time).
Solution:
All tools are now able to handle the minimum DASD API version specified at compile time and all above DASD API versions.

Everybody should apply this patch.

To create the complete S/390 tools sources, the following patches need to be applied in sequence:

s390-tools.tar.gz (IBM)
+ s390-tools-1.diff (IBM)
+ s390-tools-2.diff (IBM)
+ s390-tools-3.diff (IBM)
+ s390-tools-4.diff (IBM)
+ s390-tools-5.diff (IBM)


2002-02-18 OCO modules (kernel 2.4.17) for the "August 2001 stream"

Recommended OCO modules 31-bit

The recommended lcs, qdio, qeth 31-bit kernel 2.4.17 OCO-modules of 2002-02-18 are functionally equivalent to the 2002-01-21 recommended kernel 2.4.7 OCO-modules.
On-demand timer 31-bit kernels need: lcs-2.4.17-s390-1-timer.tar.gz, qdio-2.4.17-s390-1-timer.tar.gz, and qeth-2.4.17-s390-1-timer.tar.gz.
Standard 100 Hertz timer 31-bit kernels need: lcs-2.4.17-s390-1.tar.gz, qdio-2.4.17-s390-1.tar.gz, and qeth-2.4.17-s390-1.tar.gz.

Recommended OCO modules 64-bit

The recommended lcs, qdio, qeth 64-bit kernel 2.4.17 OCO-modules of 2002-02-18 are functionally equivalent to the 2002-01-21 recommended kernel 2.4.7 OCO-modules.
On-demand timer 64-bit kernels need: lcs-2.4.17-s390x-1-timer.tar.gz, qdio-2.4.17-s390x-1-timer.tar.gz, and qeth-2.4.17-s390x-1-timer.tar.gz.
Standard 100 Hertz timer 64-bit kernels need: lcs-2.4.17-s390x-1.tar.gz, qdio-2.4.17-s390x-1.tar.gz, and qeth-2.4.17-s390x-1.tar.gz.


2002-02-05 kernel 2.4.17 for the "August 2001 stream"

The 2002-02-05 set of Linux Kernel version 2.4.17 recommended patches for Linux for S/390 and Linux for zSeries provides currency work: The current recommended kernel 2.4.7 code base has been adapted to kernel 2.4.17. This code has only been tested very rudimentarily and is provided for interested power users as part of our currency work.
Please note that the "on-demand-timer" and "order 2 allocation relief" patches also required adaptions (see below).
Furthermore the 31-bit and 64-bit OCO-modules lcs, qdio, qeth are provided functionally equivalent to the recommended 2002-01-21 kernel 2.4.7 OCO-modules.

It should be possible to build recommended drivers using:

and the recommended 31-bit and 64-bit OCO-modules lcs, qdio, qeth.

As we are not aware of any Kernel 2.4.17-specific restrictions, the kernel 2.4.7 Restrictions "August 2001 stream" also apply.
Please see the kernel 2.4 Documentation "August 2001 stream" page for the 31-bit and 64-bit manuals, which may be helpful.

  • linux-2.4.17-s390.tar.gz MD5 recommended (2002-02-05)

    Release notes:

    This patch contains the current recommended kernel 2.4.7 code base adapted to kernel 2.4.17.

    To create the complete linux kernel sources, the following patches need to be applied in sequence:

    linux-2.4.17.tar.gz (see www.kernel.org)
    + linux-2.4.17-s390.diff (IBM)

    linux-2.4.17-timer.tar.gz MD5 recommended On demand timer patch (2002-02-05) (superseded)

    Release notes:

    On demand timer patch:
    Category operating system. Contains a patch for the linux kernel 2.4.17 that changes the timing method from the regular 100 hz interrupts to on demand timer interrupts. This saves some cpu cycles in an idle linux image. The drawback is that a busy linux image will do a small amount of additional work every time the switch between user mode and kernel mode is done. In short if you are running many images under VM the on demand timers are useful but you probably don't want to use it running under LPAR or native. The patch introduces a configuration option CONFIG_NO_HZ_TIMER that lets you choose between the old and the new behavior. Note that you'll need different lcs, qdio, and qeth modules if you use the no hz timer option.

    To create the complete linux kernel sources, the following patches need to be applied in sequence:

    linux-2.4.17.tar.gz (see www.kernel.org)
    + linux-2.4.17-s390.diff (IBM)
    + linux-2.4.17-timer.diff (IBM)

  • linux-2.4.17-order2.tar.gz MD5 recommended Patch for "order 2 allocation relief" (2002-02-05) (superseded)

    This patch is an adaption of the 2002-02-05 kernel 2.4.7 "order 2 allocation relief" patch to kernel 2.4.17.

Description:
Order 2 allocation relief.
Symptom:
Under stress and after long uptimes of a 64 bit system the error message "__alloc_pages: 2-order allocation failed." appears and either the fork of a new process fails or an active process dies.
Problem:
The order 2 allocation problem is based in the size of the region and segment tables as defined by the zSeries architecture. A full region or segment table in 64 bit mode takes 16 KB of contiguous real memory. The page allocation routines do not guarantee that a higher order allocation will succeed due to memory fragmentation.
Solution:
The order 2 allocation fix is supposed to reduce the number of order 2 allocations for the region and segment tables to a minimum. To do so it uses a feature of the architecture that allows to create incomplete region and segment tables. In almost all cases a process does not need full region or segment tables. If a full region or segment table is needed it is reallocated to the full size.

Important notices:

  • This patch is very S/390 specific and breaks all other architectures.
  • This patch does only work for a 64-bit Linux for zSeries kernel and should not be applied if you intend to build a 31-bit kernel.
  • This patch is now compatible with the 2002-02-05 "on-demand timer" patch.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.17.tar.gz (www.kernel.org)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-order2.diff (IBM)


2002-02-05 OCO modules (kernel 2.4.17) for the "August 2001 stream"

Recommended OCO modules 31-bit (superseded)

The recommended lcs, qdio, qeth 31-bit kernel 2.4.17 OCO-modules of 2002-02-05 are functionally equivalent to the 2002-01-21 recommended kernel 2.4.7 OCO-modules.
On-demand timer 31-bit kernels need: lcs-2.4.17-s390-timer.tar.gz, qdio-2.4.17-s390-timer.tar.gz, and qeth-2.4.17-s390-timer.tar.gz.
Standard 100 Hertz timer 31-bit kernels need: lcs-2.4.17-s390.tar.gz, qdio-2.4.17-s390.tar.gz, and qeth-2.4.17-s390.tar.gz.

Recommended OCO modules 64-bit (superseded)

The recommended lcs, qdio, qeth 64-bit kernel 2.4.17 OCO-modules of 2002-02-05 are functionally equivalent to the 2002-01-21 recommended kernel 2.4.7 OCO-modules.
On-demand timer 64-bit kernels need: lcs-2.4.17-s390x-timer.tar.gz, qdio-2.4.17-s390x-timer.tar.gz, and qeth-2.4.17-s390x-timer.tar.gz.
Standard 100 Hertz timer 64-bit kernels need: lcs-2.4.17-s390x.tar.gz, qdio-2.4.17-s390x.tar.gz, and qeth-2.4.17-s390x.tar.gz.


2002-01-21 kernel 2.4.7 for the "August 2001 stream"

This patch contains the following linux kernel bug fixes:

Description:
Initial ramdisk problem.
Symptom:
Kernel fails to find a filesystem on an initial ramdisk if the root filesystem does not live on the ramdisk.
Problem:
The segment descriptor in the init thread points to the user space instead of pointing to the kernel space.
Solution:
Correct the segment descriptor.
Description:
Signal information incomplete.
Symptom:
The information in the siginfo_t on entry to a signal handler does not contain all information it should contain.
Problem:
The exception handlers do not pass a siginfo structure to the do_trap function. Therefore the si_code and the address of the fault are not passed to the user space signal handler.
Solution:
Create and pass siginfo structures to do_trap for the different signal handlers.
Description:
31 bit emulation of sys_select.
Symptom:
31 bit programs on 64 bit linux hang.
Problem:
The conversion of the struct timeval in sys32_select is done incorrectly. This leads to huge timeout values, causing the 31 bit programs to "hang".
Solution:
Correct the struct timeval conversion.
Description:
31-bit emulation of sys_semctl.
Symptom:
Problems with 31 bit programs on 64-bit Linux.
Problem:
The conversion of struct ipc64_perm was done incorrectly. This could lead to incorrect permission settings being passed to the sys_semctl system call.
Solution:
Correct the struct ipc64_perm conversion.
Description:
CMS minidisks on 64-bit.
Symptom:
On 64-bit Linux, CMS minidisks are not detected.
Problem:
The partition detection code contained code that was not portable to 64-bit. This caused CMS labels to be incorrectly parsed and therefore CMS minidisks were not detected.
Solution:
Fix partition detection.

In addition, the patch contains the following feature:

  • Add IOCTL translation support for the crypto driver to the 31-bit emulation layer. This allows accessing the crypto driver from 31-bit applications running in a 64-bit system. (See z90crypt 64-bit OCO-modules.)

Everybody should apply this patch.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)

Release notes:

On demand timer patch:
Category operating system. Contains a patch for the linux kernel 2.4.7 that changes the timing method from the regular 100 hz interrupts to on demand timer interrupts. This saves some cpu cycles in an idle linux image. The drawback is that a busy linux image will do a small amount of additional work every time the switch between user mode and kernel mode is done. In short if you are running many images under VM the on demand timers are useful but you probably don't want to use it running under LPAR or native. The patch introduces a configuration option CONFIG_NO_HZ_TIMER that lets you choose between the old and the new behavior. Note that you'll need different lcs, qdio, qeth, and z90crypt modules if you use the no hz timer option.
Important notice:
In earlier versions of the timer patch, kernels built with the patch applied but with CONFIG_NO_HZ_TIMER switched off were still incompatible with the regular OCO modules (and also to the timer-patch OCO modules). This problem is fixed in this version of the patch. If CONFIG_NO_HZ_TIMER is switched off, the kernel is now compatible with the regular OCO modules.
Note that the "order 2 allocation relief" patch for 64 bit is not compatible with the "on-demand timer" patch.

This patch is identical with the experimental 2.4.7 "order 2 allocation relief" patch from 2001-12-12. It has been moved from the experimental to the recommended state for 64 bit.

Description:
Order 2 allocation relief. (Applies to 64-bit, only)
Symptom:
Under stress and after long uptimes of a 64 bit system the error message "__alloc_pages: 2-order allocation failed." appears and either the fork of a new process fails or an active process dies.
Problem:
The order 2 allocation problem is based in the size of the region and segment tables as defined by the zSeries architecture. A full region or segment table in 64 bit mode takes 16 KB of contiguous real memory. The page allocation routines do not guarantee that a higher order allocation will succeed due to memory fragmentation.
Solution:
The order 2 allocation fix is supposed to reduce the number of order 2 allocations for the region and segment tables to a minimum. To do so it uses a feature of the architecture that allows to create incomplete region and segment tables. In almost all cases a process does not need full region or segment tables. If a full region or segment table is needed it is reallocated to the full size.

Important notices:

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)
+ linux-2.4.7-s390-5.diff (IBM)
+ linux-2.4.7-order2-3.diff (IBM)


2002-01-21 OCO modules (kernel 2.4.7) for the "August 2001 stream"

Recommended OCO modules 31-bit

The lcs, qdio, qeth 31-bit and 64-bit OCO-modules of 2002-01-21 are replacements for the previously recommended modules.

HiperSockets support for qdio and qeth

OCO-modules lcs, qdio,qeth, and z90crypt must be selected correctly for kernels with or without the 2002-01-21 "on-demand timer" patch applied.
On-demand timer 31-bit kernels with the 2002-01-21 patches now need: lcs-2.4.7-s390-6-timer.tar.gz, qdio-2.4.7-s390-7-timer.tar.gz, qeth-2.4.7-s390-7-timer.tar.gz, and z90crypt-2.4.7-s390-2-timer.tar.gz.
Standard 100 Hertz timer 31-bit kernels with the 2002-01-21 patches now need: lcs-2.4.7-s390-6.tar.gz, qdio-2.4.7-s390-7.tar.gz, qeth-2.4.7-s390-7.tar.gz, and z90crypt-2.4.7-s390-2.tar.gz.

Recommended OCO modules 64-bit (superseded)

OCO-modules lcs, qdio, qeth, and z90crypt must be selected correctly for kernels with or without the 2002-01-21 "on-demand timer" patch applied.
Note that the "order 2 allocation relief" patch is now recommended and furthermore no longer requires special OCOs.

HiperSockets support for qdio and qeth

On-demand timer 64-bit kernels with the 2002-01-21 patches now need: lcs-2.4.7-s390x-6-timer.tar.gz, qdio-2.4.7-s390x-7-timer.tar.gz, and qeth-2.4.7-s390x-7-timer.tar.gz
Standard 100 Hertz timer 64-bit kernels with the 2002-01-21 patches now need: lcs-2.4.7-s390x-6.tar.gz, qdio-2.4.7-s390x-7.tar.gz, and qeth-2.4.7-s390x-7.tar.gz


2001-12-12 Utilities for the "August 2001 stream"

This patch contains the following s390-tools bug fix:

Description:
fdasd: missing 390 data set name for big disks.
Symptom:
One of the 390 data set names, which exists for each partition, is missing for modell 9 DASDs.
Problem:
The modell 9 DASD needs a special freespace label within the VTOC. In this case the "last available FMT1 DSCB"-pointer wasn't set to the right label.
Solution:
This pointer is now set correctly.

Everybody should apply this patch.

To create the complete S/390 tools sources, the following patches need to be applied in sequence:

s390-tools.tar.gz (IBM)
+ s390-tools-1.diff (IBM)
+ s390-tools-2.diff (IBM)
+ s390-tools-3.diff (IBM)
+ s390-tools-4.diff (IBM)


2001-12-12 OCO modules (kernel 2.4.7) for the "August 2001 stream"

Recommended OCO modules 31-bit (superseded)

The lcs, qdio, qeth 31-bit and 64-bit OCO-modules of 2001-12-12 are replacements for the previously recommended modules.

HiperSockets support for qdio and qeth

OCO-modules lcs, qdio, and qeth must be selected correctly for kernels with or without the 2001-11-23 "on-demand timer" patch applied.
On-demand timer 31-bit kernels with the 2001-11-23 patches now need: lcs-2.4.7-s390-5-timer.tar.gz, qdio-2.4.7-s390-6-timer.tar.gz, and qeth-2.4.7-s390-6-timer.tar.gz.
Standard 100 Hertz timer 31-bit kernels with the 2001-11-23 patches now need: lcs-2.4.7-s390-5.tar.gz, qdio-2.4.7-s390-6.tar.gz, and qeth-2.4.7-s390-6.tar.gz.

Recommended OCO modules 64-bit (superseded)

OCO-modules lcs, qdio, and qeth must be selected correctly for kernels with or without the 2001-11-23 "on-demand timer" patch applied.

HiperSockets support for qdio and qeth

On-demand timer 64-bit kernels with the 2001-11-23 patches now need: lcs-2.4.7-s390x-5-timer.tar.gz, qdio-2.4.7-s390x-6-timer.tar.gz, and qeth-2.4.7-s390x-6-timer.tar.gz

Standard 100 Hertz timer 64-bit kernels with the 2001-11-23 patches now need: lcs-2.4.7-s390x-5.tar.gz, qdio-2.4.7-s390x-6.tar.gz, and qeth-2.4.7-s390x-6.tar.gz


2001-11-23 kernel 2.4.7 for the "August 2001 stream"

The 2001-11-23 set of Linux Kernel version 2.4.7 recommended patches for Linux for S/390 and Linux for zSeries deliver several fixes and updates.
Furthermore the 31-bit and 64-bit recommended OCO-modules lcs, qdio, qeth have been updated with bug-fixes.

Together with the 2001-11-09, 2001-10-12 and 2001-09-14 patches applied on top of the first set (2001-08-20) of kernel 2.4.7 recommended patches, Linux for S/390 31-bit distributions and Linux for zSeries 64-bit distributions can be built using:

and the updated recommended 31-bit and 64-bit OCO-modules lcs, qdio, qeth.

Please check out the Restrictions "August 2001 stream" page on Kernel 2.4.7.
Please refer to the Experimental "August 2001 stream" page for an experimental kernel 2.4.7 patch for 64-bit distributions and the matching 64-bit OCO modules.
Please see the kernel 2.4 Documentation "August 2001 stream" page for the 31-bit and 64-bit manuals.

"On-demand Timer"

Release notes:

This patch contains the following linux kernel bug fixes:

Description:
Compilation of sysinfo.
Symptom:
/proc/sysinfo is missing.
Problem:
The file that contains the implementation of the new /proc/sysinfo entry has not been added to the Makefile. Hence it is not compiled and /proc/sysinfo is missing in the running system.
Solution:
Add sysinfo.o to the s390 drivers Makefile.
Description:
Export dasd_device_from_kdev.
Symptom:
No symptom.
Problem:
A dasd module can't use the dasd_device_from_kdev function because it is inline and the symbol name is not exported. This function is needed if a dasd module wants to use dynamic i/o controls.
Solution:
Export symbol dasd_device_from_kdev.
Description:
A kernel built without the proc filesystem panics during boot.
Symptom:
When CONFIG_PROC_FS is not selected, the kernel will compile but panic during boot when trying to create a /proc entry in s390io.
Problem:
The common I/O layer tries to create /proc entries even though the proc filesystem is disabled.
Solution:
Exclude the proc filesystem interface functions from s390io if the proc filesystem is switched off.
Description:
Signal problem in the VFS layer.
Symptom:
Endless kernel loop.
Problem:
The signal info codes from the kernel header file siginfo.h miss some bits that are used internally to control the handling of the signal.
Solution:
Add the missing bits to the siginfo codes.
Description:
Network throughput problem with high cpu load.
Symptom:
CPU intensive workload slows down network traffic.
Problem:
The wakeup of a process does not cause a preemptive reschedule of the CPU intensive process due to a comparison problem between unsigned integers of different size.
Solution:
Fix the comparison so that the preemptive reschedule works.
Description:
CTC problem on machines with more that 2G memory.
Symptom:
Very slow data flow when using TCP/IP (e.g. ftp transfers).
Problem:
Usage of IDA lists with CTC did not work, resulting in a lot of dropped packets due to TCP checksum errors.
Solution:
Using memcpy to low memory transfer buffer instead of IDA lists.

Everybody should apply this patch.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)
+ linux-2.4.7-s390-4.diff (IBM)

Release notes:

On demand timer patch:
Category operating system. Contains a patch for the linux kernel 2.4.7 that changes the timing method from the regular 100 hz interrupts to on demand timer interrupts. This saves some cpu cycles in an idle linux image. The drawback is that a busy linux image will do a small amount of additional work every time the switch between user mode and kernel mode is done. In short if you are running many images under VM the on demand timers are useful but you probably don't want to use it running under LPAR or native. The patch introduces a configuration option CONFIG_NO_HZ_TIMER that lets you choose between the old and the new behavior. Note that you'll need different lcs, qdio, and qeth modules if you use the no hz timer option.


2001-11-23 OCO modules (kernel 2.4.7) for the "August 2001 stream"

Recommended OCO modules 31-bit (superseded)

The lcs, qdio, qeth 31-bit and 64-bit OCO-modules of 2001-11-23 are replacements for the previously recommended modules.

OCO-modules lcs, qdio, and qeth must be selected correctly for kernels with or without the 2001-11-23 "on-demand timer" patch applied.
On-demand timer 31-bit kernels with the 2001-11-23 patches now need: lcs-2.4.7-s390-4-timer.tar.gz, qdio-2.4.7-s390-5-timer.tar.gz, and qeth-2.4.7-s390-5-timer.tar.gz.
Standard 100 Hertz timer 31-bit kernels with the 2001-11-23 patches now need: lcs-2.4.7-s390-4.tar.gz, qdio-2.4.7-s390-5.tar.gz, and qeth-2.4.7-s390-5.tar.gz.

Recommended OCO modules 64-bit (superseded)

OCO-modules lcs, qdio, and qeth must be selected correctly for kernels with or without the 2001-11-23 "on-demand timer" patch applied.
On-demand timer 64-bit kernels with the 2001-11-23 patches now need: lcs-2.4.7-s390x-4-timer.tar.gz, qdio-2.4.7-s390x-5-timer.tar.gz, and qeth-2.4.7-s390x-5-timer.tar.gz
Standard 100 Hertz timer 64-bit kernels with the 2001-11-23 patches now need: lcs-2.4.7-s390x-4.tar.gz, qdio-2.4.7-s390x-5.tar.gz, and qeth-2.4.7-s390x-5.tar.gz


2001-11-09 kernel 2.4.7 for the "August 2001 stream"

The 2001-11-09 set of Linux Kernel version 2.4.7 and s390 tools recommended patches for Linux for S/390 and Linux for zSeries deliver several fixes and updates.
Furthermore the 31-bit and 64-bit recommended OCO-modules lcs, qdio, qeth have been updated with bug-fixes.

Together with the 2001-10-12 and 2001-09-14 patches applied on top of the first set (2001-08-20) of kernel 2.4.7 recommended patches, Linux for S/390 31-bit distributions and Linux for zSeries 64-bit distributions can be built using:

and the updated recommended 31-bit and 64-bit OCO-modules lcs, qdio, qeth.

Please check out the Restrictions "August 2001 stream" page on Kernel 2.4.7.
Please refer to the Experimental "August 2001 stream" page for an experimental kernel 2.4.7 patch for 64-bit distributions and the matching 64-bit OCO modules. An updated z90crypt 31-bit OCO module is also provided there.
Please see the kernel 2.4 Documentation "August 2001 stream" page for the 31-bit and 64-bit manuals.

"On-demand Timer"

Release notes:

This patch contains the following linux kernel bug fixes:

Description:
Reset of files in VM reader.
Symptom:
The files in the VM reader running on a P/390 are not resetted.
Problem:
The test that used to decide if a reset should be done is wrong if the system is running on a P/390.
Solution:
Make the decision if the reset should be done only dependent on the VM flag in the cpu id.
Description:
PFAULT on 31 bit.
Symptom:
No efficiency improvement with pfault on 31 bit.
Problem:
The check in the pfault interrupt handler for the pfault subcode is wrong. The interrupt handler is left without doing anything. The system doesn't crash but you won't see a benefit either.
Solution:
Fix the subcode check.
Description:
llseek in the 31 bit emulation.
Symptom:
31 bit programs running under the 31 bit emulation layer on a 64 bit system create huge files with size > 4GB.
Problem:
The llseek system call in the 31 bit emulation layer is converted incorrectly.
Solution:
Fix the conversion routine for llseek.
Description:
Locking problem in dasd driver.
Symptom:
Kernel crash after formatting a device.
Problem:
The function that cancels the format ccw in case of an error doesn't lock the dasd device structure properly. This is a race condition against the end of the i/o and can crash the system due to null pointer access.
Solution:
Properly lock the dasd device structures.
Description:
Block padding for the short blocks of the common disk layout.
Symptom:
The first few blocks of a dasd formatted for the common disk layout contain random data in the rear end of the block.
Problem:
The first few blocks of a dasd formatted with the common disk layout are physically shorter then the block size of the device. The linux buffer for these blocks contain random data in the suffix of the blocks that is not backed by phsical data.
Solution:
Pad the suffix of the short blocks with byte pattern 0xe5.
Description:
Channel device layer configuration.
Symptom:
Additional parameters after an "add_parms" statement are not recognized.
Problem:
After parsing the add_parms statement the input pointer is not moved to the next string.
Solution:
Move the next string after parsing the add_parms statement.
Description:
I/O layer doesn't deliver interrupts.
Symptom:
The device interrupt handler of a terminated ccw is not always called. For example the halt of the long running rewind of a tape device does not trigger the tape device interrupt handler.
Problem:
The expression if a device has ending status does not cover all cases.
Solution:
Correctly check for ending status.
Description:
System information.
Symptom:
None.
Problem:
A means to get information about the system configuration in the user space is needed. The store system information instruction is priviledged and can not be used from user space.
Solution:
Provide a proc file system entry that contains the data that can be extracted from the store system information instruction.
Description:
Busy loop in the partition detection
Symptom:
The system hangs in the partition detection.
Problem:
The skip of format 4/5/7 labels doesn't increase the number of the label block. This leads to a busy loop that reads the same block over and over again.
Solution:
Increase the block number for format 4/5/7 label blocks.

Everybody should apply this patch.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)
+ linux-2.4.7-s390-3.diff (IBM)


2001-11-09 Utilities for the "August 2001 stream"

This patch contains the new s390-tool dasdview, which could be used to display DASD and VTOC information or to dump the content of a DASD to the console. For more information see the dasdview man page.

In addition are there the following bug fixes:

Description:
fdasd: new menu entry.
Symptom:
There was no way to see the z/OS data set names.
Problem:
The mapping between partition number in the device node and the z/OS data set name could change in case you do some strange re-partitioning. There was no way to display this mapping.
Solution:
New fdasd menu entry 's' to show the mapping between partition number in the device node and the z/OS data set name.
Description:
fdasd: partition number in z/OS data set name.
Symptom:
Confusing mapping between partition number in the device node and the z/OS data set name.
Problem:
The partition number in the device node starts counting with "1"and the partition number in the z/OS data set name started counting with "0".
Solution:
Both start counting from "1" and older partitions will be converted automatically to the new numbering schema.
Description:
dasdfmt: cylinderwise formatting.
Symptom:
dasdfmt formats the disk cylinderwise if you are using the '-p' or '-m' option, otherwise the disk will be formatted as one big part.
Problem:
none.
Solution:
We will format cylinderwise in every case now.
Description:
dasdfmt: signal handler.
Symptom:
dasdfmt leaves the disk in the accepted state in case of an abruption (e.g. Ctrl+C).
Problem:
The disk is unusable until you reset it.
Solution:
A signal handler sets the DASD back to the 'not formatted' state in case of a abruption.

Everybody should apply this patch.

To create the complete S/390 tools sources, the following patches need to be applied in sequence:

s390-tools.tar.gz (IBM)
+ s390-tools-1.diff (IBM)
+ s390-tools-2.diff (IBM)
+ s390-tools-3.diff (IBM)


2001-11-09 OCO modules (kernel 2.4.7) for the "August 2001 stream"

Recommended OCO modules 31-bit (superseded)

The lcs, qdio, qeth 31-bit and 64-bit OCO-modules of 2001-11-09 are replacements for the previously recommended modules.

OCO-modules lcs, qdio, and qeth must be selected correctly for kernels with or without the 2001-10-12 "on-demand timer" patch applied.

On-demand timer 31-bit kernels with the 2001-11-09 patches now need: lcs-2.4.7-s390-3-timer.tar.gz, qdio-2.4.7-s390-4-timer.tar.gz, and qeth-2.4.7-s390-4-timer.tar.gz.
Standard 100 Hertz timer 31-bit kernels with the 2001-11-09 patches now need: lcs-2.4.7-s390-3.tar.gz, qdio-2.4.7-s390-4.tar.gz, and qeth-2.4.7-s390-4.tar.gz.

Recommended OCO modules 64-bit (superseded)

OCO-modules lcs, qdio, and qeth must be selected correctly for kernels with or without the 2001-10-12 "on-demand timer" patch applied.

On-demand timer 64-bit kernels with the 2001-11-09 patches now need: lcs-2.4.7-s390x-3-timer.tar.gz, qdio-2.4.7-s390x-4-timer.tar.gz, and qeth-2.4.7-s390x-4-timer.tar.gz
Standard 100 Hertz timer 64-bit kernels with the 2001-11-09 patches now need: lcs-2.4.7-s390x-3.tar.gz, qdio-2.4.7-s390x-4.tar.gz, and qeth-2.4.7-s390x-4.tar.gz


2001-10-12 kernel 2.4.7 for the "August 2001 stream"

This patch contains the following linux kernel bug fixes:

Description:
Pagex interrupts can overwrite program check information.
Symptom:
User program crashes.
Problem:
The pagex interrupt could overwrite the information in the lowcore about the last program check because interrupts are reenabled to early. The program check is then handled incorrectly after the pagex interrupt returns.
Solution:
Do not reenable the interrupts in the first level program check handler. Let the second level program handler decide when the interrupts should be reenabled.
Description:
Inline assembly contraints too weak for latest compiler.
Symptom:
Assembler error messages compiling the kernel.
Problem:
The contraints of some inline assemblies allow a full memory reference with offset, base and index register for instructions that only accept memory references with offset and base register.
Solution:
Reload the full memory reference to a register or use the "a" constraint in the inline assemblies.
Description:
bottom half scheduling.
Symptom:
Idle system load one instead of zero.
Problem:
The timer interrupt handler dosn't call irq_enter/irq_exit early enough causing the softirq daemon to be scheduled. The now runnable softirq daemon increases the load and is scheduled normally just to return immediatly. This only causes a slight increase in the cpu usage the load is not really one.
Solution:
Call irq_enter just after entering the timer interrupt handler and irq_exit just before leaving.
Description:
Missing symbol strstr.
Symptom:
The load of a module fails because of undefined symbol strstr.
Problem:
The strstr function is not exported by the kernel.
Solution:
Export the strstr function.
Description:
Dasd performance problem.
Symptom:
The dasd driver uses too much cpu.
Problem:
The profiling code to collect the information for /proc/dasd/statistics takes too much time.
Solution:
Deactivate the dasd profiling. To reenable it the DASD_PROFILE define needs to be set.
Description:
Proc interface for dynamic addition/removal of dasd devices.
Symptom:
Dynamic add/remove of dasd devices does not succeed.
Problem:
The /proc/dasd/devices interface doesn't accept strings ending with a newline.
Solution:
Strip newline from strings written to /proc/dasd/devices.
Description:
Stopping tape driver operations.
Symptom:
Kernel crashes after stopping tape operations.
Problem:
If a tape operations is canceled the tape i/o request is not stopped but the memory area that is used by the operation is freed. The reused memory can be clobbered by the still running i/o request.
Solution:
Wait uninterruptible for the end of tape i/o requests.
Description:
CTC i/o timeout problem.
Symptom:
Kernel message "kernel timer added twice at ...".
Problem:
The i/o timeout for the CTC channels is not deleted in all cases.
Solution:
Remove pending timer in the channel restart function.
Description:
TCP/IP problems with sockets in TIME_WAIT state.
Symptom:
Kernel crashes under heavy TCP/IP load.
Problem:
There are two problems in the common TCP/IP code with regard to the handling of sockets in the TIME_WAIT state. The first is a typo that causes the reference count of the wrong socket to be decremented and the second it a race condition. Both problems can lead to clobbered socket memory.
Solution:
Decrement reference count of the correct socket and avoid the race condition by increasing the reference count.

Everybody should apply this patch.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)
+ linux-2.4.7-s390-2.diff (IBM)

Release notes:

On demand timer patch
Category operating system. Contains a patch for the linux kernel 2.4.7 that will change the timing method from the regular 100 hz interrupts to on demand timer interrupts. This saves some cpu cycles in an idle linux image. The drawback is that a busy linux image will do a small amount of additional work every time the switch between user mode and kernel mode is done. In short if you are running many images under VM the on demand timers are useful but you probably don't want to use it running under LPAR or native. The patch introduces a configuration option CONFIG_NO_HZ_TIMER that lets you choose between the old and the new behavior. Note that you'll need different lcs and qeth modules if you use the no hz timer option.


2001-10-12 OCO modules (kernel 2.4.7) for the "August 2001 stream"

Recommended OCO modules 31-bit (superseded)

Recommended OCO modules 64-bit (superseded)


2001-10-12 Tool-chain for the "August 2001 stream"

Release notes:

This patch contains the following binutils bug fix:

Description:
Warnings about zero index or base registers misleading.
Symptom:
The assembler issues warnings about zero index or base registers.
Problem:
Explicitly specified zero index or base registers can indicate faulty statements because if the register 0 is used as part of an address 0 is added to the effective address instead of the content of register 0. Sometimes it is useful to get these warnings but in other cases there messages can be confusing.
Solution:
Add an option "-mwarn-areg-zero" that enables the warnings about zero index or base registers. Default is off.

The patch contains the following additions and changes:

  • Testcase library for the GNU assembler.
  • Automatic generation of the instruction table from s390-opc.txt.

Everybody should apply this patch.

To create the complete binutils sources, the following patches need to be applied in sequence:

binutils-2.11.90.0.27.tar.gz (see ftp://www.kernel.org/pub/linux/devel/binutils/)
+ binutils-2.11.90.0.27-s390.diff (IBM)
+ binutils-2.11.90.0.27-s390-1.diff (IBM)

This patch contains the following compiler bug fixes:

Description:
Incorrect use of LA (load address) instruction.
Symptom:
LA used to add integers.
Problem:
In some rare cases, the compiler would generate code using the LA instruction to perform an integer addition. However, the LA instruction does in fact do only a 31-bit addition, and hence can only be safely used to compute 31-bit addresses, not arbitrary 32-bit integers.
Solution:
Make sure that LA is never used unless it is known that the result of LA will be used as an address.
Description:
Bug in compiler common code (regmove).
Symptom:
Incorrect code is generated.
Problem:
In some rare cases, the compiler would generate code that clobbers incoming function arguments. This was caused by a bug in the regmove pass, which didn't properly check for that case.
Solution:
Fix regmove.
Description:
Bug in debug information generation.
Symptom:
Unresolved symbols when linking optimized code compiled with debug information.
Problem:
In some rare cases, when linking code compiled with both high optimization level and debug information, the debug data could contain symbol references to symbols that were not actually present in the code any more, because the optimizer had managed to completely eliminate them. This would cause unresolved symbol errors.

The problem would show up only for floating point variables that are constant throughout a function.

Solution:
Don't emit debug data for those variables.
Description:
Incorrect profiling code.
Symptom:
Function profiling does not work (31-bit only).
Problem:
The code emitted by the compiler when doing function profiling (gcc -p) was incorrect.
Solution:
Fix profiling code.
Description:
Inefficient code generation.
Symptom:
Performance regressions compared to gcc 2.95.2.
Problem:
In some cases, performance of code generated with the latest compiler was worse than performance of code generated with our gcc 2.95.2 based compilers. The reason for this is that the changes introduced to support better condition code handling, while having an overall positive effect on performance, could in some cases result in worse code because other parts of the optimizer were confused by the now more complex RTL code. In particular, this affected the instruction scheduler and the use of base + index register addressing modes.
Solution:
Improve performance in those cases by:

As it is not easily predictable which source code triggers the code generation bugs fixed here, everyone using the compiler should apply this patch.

To create the complete compiler sources, the following patches need to be applied in sequence:

gcc-2.95.3.tar.gz (see gcc.gnu.org)
+ gcc-2.95.3-s390.diff (IBM)
+ gcc-2.95.3-s390-1.diff (IBM)
+ gcc-2.95.3-s390-2.diff (IBM)

This patch contains the following glibc bug fixes:

Description:
Warnings about zero index or base registers misleading.
Symptom:
Endless loop or crashes in user programs that use string streams.
Problem:
Using sputback on a strstreambuf object and subsequently deleting it without reading the characters back would cause an invalid memory area to be freed. That can lead to crashed or endless loops.
Solution:
Switch back to correct memory area in destructor function for the strstreambuf object.
Description:
64 bit pthread long jump function broken.
Symptom:
pthread cleanup function not called on cancel.
Problem:
The unwinding of the stack to a previous location in the pthread long jump function fails because of an incorrect address comparison.
Solution:
Fix address comparison.

Everybody should apply this patch.

To create the complete glibc sources, the following patches need to be applied in sequence:

glibc-2.2.4.tar.gz (see www.gnu.org/software/libc)
+ glibc-linuxthreads-2.2.4.tar.gz (see www.gnu.org/software/libc)
+ glibc-2.2.4-s390.diff (IBM)


Utilities for the "August 2001 stream"

This patch contains the following s390-tools bug fixes:

Description:
s390-tools default install location.
Symptom:
The s390-tools binaries were installed into /bin.
Problem:
As system administration tools, the default install location for the s390-tools binaries should be /sbin, not /bin.
Solution:
Change default install location to /sbin.
Description:
fdasd creates invalid partitions.
Symptom:
Error message "BUG: overlapping free space extents in FMT5 DSCB!"
Problem:
fdasd miscalculated the partition borders if the option -c is used.
Solution:
Correct calculation.

Everybody should apply this patch.

To create the complete S/390 tools sources, the following patches need to be applied in sequence:

s390-tools.tar.gz (IBM)
+ s390-tools-1.diff (IBM)
+ s390-tools-2.diff (IBM)

Note:
There is a new lkcdutils version (4.0) which contains the dump analysis tool "lcrash" with Linux for zSeries support (64-bit). With this version of lcrash, it is possible to analyze 64-bit Linux for zSeries system memory dumps. You can download it at:
//lkcd.sourceforge.net/download/4.0/lkcdutils


2001-10-12 Debug tools for the "August 2001 stream"

This patch contains the following gdb bug fixes:

Description:
Incorrect stack frame analysis.
Symptom:
gdb doesn't show the (full) stack backtrace.
Problem:
In some cases, the stack frame analysis would get confused, causing gdb to not show the full stack backtrace.

The problem was especially noticable on 64-bit, and when backtracing out of a signal handler or glibc system call.

Solution:
Improved stack frame analysis.

You should apply this patch if you are experiencing problems with stack backtraces (for 64-bit support you should apply the patch in any case).

To create the complete gdb sources, the following patches need to be applied in sequence:

gdb-5.0.tar.gz (see sourceware.cygnus.com/gdb)
+ gdb-5.0-s390.diff (IBM)
+ gdb-5.0-s390-1.diff (IBM)
+ gdb-5.0-s390-2.diff (IBM)

This patch contains the following strace bug fix:

Description:
Follow-fork failed on 64-bit.
Symptom:
strace -f does not work on 64-bit.
Problem:
The follow-fork mechanism inserts an instruction into the target process. This was not correctly adapted to 64-bit.
Solution:
Fixed incorrect instruction.

You should apply this patch if you want to use strace on the 64-bit zSeries architecture.

To create the complete strace sources, the following patches need to be applied in sequence:

strace-4.2.20010119.tar.gz (RedHat 7.1)
+ strace-4.2.20010119-s390.diff (IBM)
+ strace-4.2.20010119-s390-1.diff (IBM)


2001-09-28 OCO modules (kernel 2.4.7) for the "August 2001 stream"

Recommended OCO modules (31-bit) - qdio and qeth device drivers (superseded)

The following network device drivers are compatible with the Linux kernel version 2.4.7 as of 2001-09-14 and are object code only.

HiperSockets support for qdio and qeth

The qdio and qeth OCO modules based on kernel level 2.4.7 now support HiperSockets as well as OSA-Express QDIO cards. The support of HiperSockets was tested for Linux for S/390 running under LPAR only.

In the Documentation "August 2001 stream" section you can find the Linux for S/390 Device Drivers and Installation Commands manual and the new HiperSockets Device Driver manual, which describe the use of these device drivers.

Configuration considerations:

Note: If you are using the linux-2.4.7-timer.diff and have the CONFIG_NO_HZ_TIMER option switched on, you will have to use the lcs or qeth module with the timer option (e.g. lcs-2.4.7-s390-timer.o instead of lcs-2.4.7-s390-1.o)

Restrictions for QDIO base support and OSA-Express Driver:

LCS driver

The LCS driver remains unchanged since 2001-09-14.

Experimental OCO modules (64-bit) - qdio and qeth device drivers (superseded)

The following experimental 64-bit device drivers are compatible with Linux kernel version 2.4.7 as of 2001-09-14 and are object code only.

The qdio and qeth OCO modules now also support HiperSockets for Linux for S/390 running under LPAR.

For configuration considerations refer to the corresponding 31-bit OCO modules as of 2001-09-28.

Note: If you are using the linux-2.4.7-timer.diff and have the CONFIG_NO_HZ_TIMER option switched on, you will have to use the modules with timer (e.g. qeth-2.4.7-s390x-2-timer.o instead of qeth-2.4.7-s390x-2.o).

Experimental OCO module (31-bit) - z90crypt device driver (superseded)

The z90crypt device driver provides an I/O-like interface to any PCI Cryptographic Coprocessors (PCICC) attached to an S/390. The only cryptographic function currently supported is RSA PKCS private key decrypt.

Installation and usage are described in the included README file. Note that unless your system has at least one PCICC, this driver does not work.


2001-09-14 kernel 2.4.7 for the "August 2001 stream"

Release notes:

This patch contains the following linux kernel bug fixes:

Description:
IUCV driver restrictions.
Symptom:
Only 20 IUCV connections can be defined.
Problem:
Static netdevice array only has room for 20 connections.
Solution:
Complete rework of the IUCV driver. Now it uses the same state machine approach like the CTC driver and dynamically allocates all structures.
Description:
Asynchronous interrupt kernel stack.
Symptom:
Kernel crashes under heavy load.
Problem:
With the new softirq scheme the kernel stack usage has increased significantly. In the worst case the kernel stack contains the stack frames for a system call, a program check, a softirq and a hard irq. If the kernel stack overflows the task structure is clobbered and this normally ends in a kernel crash.
Solution:
To reduce the kernel stack usage a second stack was introduced. This stack contains the stack frames of asynchronous interrupts and the stack frames used by execution of the softirq functions.
Description:
Memory detection routine.
Symptom:
Processes get killed with addressing exceptions.
Problem:
In the boot process the full range of addresses between the end of the kernel and the end of storage is added and later on unusable areas are recognized. The removal of these areas doesn't work and the areas are accessed as normal memory.
Solution:
Create a list of usable memory blocks early in the boot process and do not add the unusable memory in the first place.
Description:
SMP inter-processor communication.
Symptom:
Kernel crashes.
Problem:
The next pointer in the list of functions to be called on a processor might get corrupted if the storage of a list element is reused to early.
Solution:
Complete rework of smp_call_function to allow only for a single outstanding function call and add a lock to protect against concurrent uses.
Description:
Internal timestamps inexact.
Symptom:
Newer version of ping warn about "time of day goes back".
Problem:
The timestamps used in the socket buffers are created by a call over the function pointer do_get_fast_time. By default this pointer refers to a functions that just copies the content of xtime without adjusting it with the use of the hardware clock.
Solution:
Set the pointer do_get_fast_timer to a function that uses the tod clock to get precise time stamps.
Description:
IEEE emulation for tceb, tcdb and tcxb.
Symptom:
On machines without a real IEEE fpu the emulation warns about unimplemented instructions like tceb, tcdb, tcxb, diebr and didbr.
Problem:
The emulation functions for some IEEE instructions have not been implemented yet.
Solution:
Implement some of the missing IEEE emulation functions.
Note:
The two instructions diebr and didbr are still missing but the GNU C compiler is not using them right now.
Description:
Locking problems with module insertion/removal.
Symptom:
Process and/or kernel crashes.
Problem:
While modules are inserted/removed processes can crash if they are revolving page faults at the same time the module_list is changed.
Solution:
Get the modlist_lock before searching the exception tables for program checks.
Description:
Dynamic attach/detach of devices.
Symptom:
The dynamic attach of devices sometimes does not work.
Problem:
The enabling of a subchannel with msch can fail for the first try, the second try works.
Solution:
After the first msch do a stsch, check if the device really is enabled and retry if not.
Description:
Dasd statistics.
Symptom:
The information in /proc/dasd/statistics is incorrect.
Problem:
The dasd profiling information is collected after the processing for a request has finished, voiding the profiling information.
Solution:
Collect the profiling information before the request is ended.
Description:
Dasd autoprobe.
Symptom:
The removal of the dasd module inserted without parameter causes an oops.
Problem:
For autoprobe the detected dasds are not enabled and no request queue is allocated. The disable routine that is called when the module is removed tries to free the non-existent request queue.
Solution:
Add a check for this condition.
Description:
Dynamic dasd devices.
Symptom:
Attaching/detaching dasd devices from linux causes kernel crashes.
Problem:
Deactivation of a dasd device either by a set off or a machine check was not done correctly.
Solution:
Correct deactivation code.
Description:
Minidisk devices.
Symptom:
Using the minidisk discipline of the dasd driver can cause kernel crashes.
Problem:
The request queue is changed in the minidisk interrupt function without holding the device lock. A concurrent access to the request queue on a different processor can destroy the request list.
Solution:
Acquire the device lock in the interrupt function before modifying the request queue.
Description:
Debug area flush.
Symptom:
None.
Problem:
To analyse a problem it would be useful if the debug area can be flushed of old entries.
Solution:
Add an entry in the /proc filesystem that allows to flush the debug area.
Description:
Pfault handling.
Symptom:
Pfault does not improve the cpu usage of linux if VM starts paging linux guest memory.
Problem:
A check in the pfault interrupt routine for the pfault subcode is wrong. The processor resumes execution of the faulting process immediatly which causes another pfault interrupt until the maximum number of pfault interrupts is reached. Then the guest page fault is resolved synchronously.
Solution:
Fix the check.
Description:
Rebooting 64 bit linux under zVM doesn't work.
Symptom:
After all processes have been killed and all but the boot cpu have been deactivated linux stops without restarting.
Problem:
To reboot linux under VM the diagnose 8 is used to issue an IPL command to VM. The diagnose 8 is not yet capable of accessing memory above 2GB. The output buffer for the command was allocated on the kernel stack that can reside above 2GB if the machine has enough storage.
Solution:
Use a static output buffer for passing the command and protect against concurrent uses with a spinlock.
Description:
Socket time stamps in 31 bit programs under 64 bit linux.
Symptom:
31 bit programs get errors calling SIOCGSTAMP ioctl.
Problem:
An ioctl was missing in the 31 bit emulation layer.
Solution:
Add the iotcl.
Description:
stat64 call in 31 bit programs under 64 bit linux.
Symptom:
31 bit programs get wrong data calling stat64.
Problem:
The 31 bit emulation of stat64 used an incorrect stat64 structure layout.
Solution:
Use the correct stat64 structure.
Description:
Signal delivery in 31 bit programs under 64 bit linux.
Symptom:
31 bit programs are dumping their core.
Problem:
The delivery of a signal to a 31 bit program under 64 bit linux leads to segmentation faults because the signal handler was called in the 64 bit addressing mode.
Solution:
Set the correct mask for 31 bit addressing in the program status word when delivering signals.
Description:
CTC driver crashed with more then 2GB.
Symptom:
Kernel crashes if CTC is used with more then 2GB memory.
Problem:
The idal bit in the channel command words is handled incorrectly.
Solution:
Correctly set the idal bit.

Everybody should apply this patch.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (see www.kernel.org)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-1.diff (IBM)

  • linux-2.4.7-timer.tar.gz MD5 recommended (superseded)

    Release notes:

    On demand timer patch
    Category operating system. Contains a patch for the linux kernel 2.4.7 that will change the timing method from the regular 100 hz interrupts to on demand timer interrupts. This saves some cpu cycles in an idle linux image. The drawback is that a busy linux image will do a small amount of additional work every time the switch between user mode and kernel mode is done. In short if you are running many images under VM the on demand timers are useful but you probably don't want to use it running under LPAR or native. The patch introduces a configuration option CONFIG_NO_HZ_TIMER that lets you choose between the old and the new behavior. Note that you'll need different lcs and qeth modules if you use the no hz timer option.


2001-09-14 OCO modules (kernel 2.4.7) for the "August 2001 stream"

Experimental OCO modules (64-bit) (superseded)

The following experimental 64-bit device drivers are compatible with Linux kernel version 2.4.7 as of 2001-09-14 and are object code only. Documentation on their use can be found in the Documentation section.

Note: If you are using the linux-2.4.7-timer.diff and have the CONFIG_NO_HZ_TIMER option switched on, you will have to use lcs-2.4.7-s390x-timer.o module instead of lcs-2.4.7-s390x-1.o and qeth-2.4.7-s390x-timer.o instead of qeth-2.4.7-s390x-1.o.

Restrictions for QDIO base support and OSA-Express Gigabit Ethernet Driver:


2001-09-14 Tool-chain for the "August 2001 stream"

Release notes:

This patch contains the following binutils bug fix:

Description:
brxlg instruction syntax.
Symptom:
Message "Error: unsupported relocation type" is issued assembling brxlg.
Problem:
The order of the operands of brxlg was entered incorrectly in the instruction table of gas.
Solution:
Correct the order of the operands of brxlg.

Everybody using the 64 bit compiler dated 2001-08-18 should apply this patch. The brxlg is rarely used but some very big functions will require it.

To create the complete binutils sources, the following patches need to be applied in sequence:

binutils-2.11.90.0.27.tar.gz (see ftp://www.kernel.org/pub/linux/devel/binutils/)
+ binutils-2.11.90.0.27-s390.diff (IBM)
+ binutils-2.11.90.0.27-brxlg.diff (IBM)

Release notes:

This patch contains the following compiler bug fixes:

Description:
Bad prolog code with -mno-backchain option.
Symptom:
Incorrect prolog code is generated.
Problem:
Even with the -mno-backchain option, it is sometimes necessary to maintain a backchain, e.g. when the stack frame is too large. The check whether this is the case was wrong.
Solution:
Check for correct condition.
Description:
Bug in compiler common code (cse).
Symptom:
Incorrect code is generated.
Problem:
Due to a bug in the cse phase, under some (rare) circumstances it was possible that the compiler did not notice that a register was modified by an instruction, and hence generated invalid code. This can only occur at high optimization level, and has been noticed only in a single test case.
Solution:
Fix cse.
Description:
Wrong type definitions in the Fortran frontend for 64-bit.
Symptom:
The Fortran frontend and the Fortran libraries use inconsistent type definitions.
Problem:
The Fortran support libaries try to find out the sizes of the various integer data type by evaluating the ..._SIZE_TYPE macros in header files. This breaks on S/390, as e.g. LONG_SIZE_TYPE is not a compile-time constant (it depends on whether 32-bit or 64-bit code is being generated). As a result, when building the Fortran libraries for 64-bit, type definitions don't match what the Fortran compiler expects, causing a variety of run-time problems.
Solution:
Change the type definitions to work both on 32-bit and 64-bit.
Note:
This is just a workaround, not a proper fix. It is not guaranteed to work on non-S/390 architectures. This problem is fixed correctly in gcc 3.0.

As it is not easily predictable which source code triggers the code generation bugs fixed here, everyone using the compiler should apply this patch.

To create the complete compiler sources, the following patches need to be applied in sequence:

gcc-2.95.3.tar.gz (see gcc.gnu.org)
+ gcc-2.95.3-s390.diff (IBM)
+ gcc-2.95.3-s390-1.diff (IBM)


2001-09-14 Utilities for the "August 2001 stream"

Release notes:

This patch contains the following s390-tools bug fixes/improvements:

Description:
fdasd: VTOC format 5 DSCB support
Symptom:
OS/390 or z/OS cannot read free space information.
Problem:
The FMT5 DSCB written by fdasd was empty.
Solution:
Fdasd writes now a correct FMT5 DSCB containing free space information.
Description:
fdasd: VTOC format 7 DSCB support
Symptom:
OS/390 or z/OS cannot read free space information on large disks (>65535 tracks).
Problem:
The FMT7 DSCB was missing.
Solution:
Fdasd writes now in case of a large disk in addition to the FMT5 a FMT7 DSCB containing free space information.
Description:
fdasd: command line mode for one partition
Symptom:
None.
Problem:
Fdasd goes for every disk in interactive mode. You could not use scripts for a large amount of disks.
Solution:
The -a option of fdasd creates one big partition using the whole disk without switching in interactive mode.
Description:
fdasd: command line mode using a config file
Symptom:
None.
Problem:
Creating more than one partition in command line mode (e.g. using scripts).
Solution:
The -c option of fdasd uses a config file to create several partitions without switching in interactive mode.
Description:
fdasd: supress messages
Symptom:
None.
Problem:
Non-interactive mode of fdasd (-a or -c) produce to much output (e.g. using scripts)
Solution:
The -s option of fdasd to suppress messages.
Description:
fdasd: wrong OS/390 data set name
Symptom:
The data set name of the same partition has changed from an OS/390 point of view.
Problem:
Fdasd has changed the OS/390 data set name for a partition in case you delete and re-create a partition within the same fdasd session.
Solution:
The OS/390 data set name does not change anymore.
Description:
fdasd: OS/390 data set name contains blanks
Symptom:
OS/390 is not able to read the data set names created by fdasd.
Problem:
The volume serial contained in the data set name was filled up with blanks in case it had less than 6 characters.
Solution:
The OS/390 data set name contains no blanks anymore and can have different length, depending on the volser length.
Description:
fdasd: read-only disk access
Symptom:
Fdasd seems to write to a read-only disk, but doesn't really write to that disk.
Problem:
Fdasd doesn't complain about read-only disks, because the fwrite function calls returned wrong values.
Solution:
fdasd checks now for read-only disks and complains about them.
Description:
fdasd: wrong free space detection while adding partitions
Symptom:
Fdasd seems not to recognize values for new partitions within the range of existing partitions, but moves the value right behind the existing partition without saying anything.
Problem:
There was a message missing.
Solution:
Fdasd gives the user a message, in case it moves input values.
Description:
fdasd: re-create the whole VTOC
Symptom:
None.
Problem:
How to re-create the whole VTOC without deleting every single partition or in case the VTOC is corrupted.
Solution:
Fdasd got a new menu entry 'r', which re-creates the VTOC and deletes all partitions.
Description:
dasdfmt: VTOC format 7 DSCB support
Symptom:
OS/390 was not able to access large disks (>65536 trks) correctly.
Problem:
There was only a FMT5 DSCB containing free space information OS/390 needs in case of a large disk a FMT7 DSCB.
Solution:
Dasdfmt writes always a FMT5 DSCB and in case of a large disk in addition a FMT7 DSCB.
Description:
dasdfmt: formatting with a blksize >4096 or <512
Symptom:
The Disk remains in 'accepted' state and is no longer usable.
Problem:
The dasd driver returns error messages and forces dasdfmt to terminate.
Solution:
Dasdfmt checks now the given blksize and complains in case blksize > 4096 or blksize < 512.
Description:
dasdfmt: booting from a non-bootable disk
Symptom:
System hangs with a 'program interrupt loop'.
Problem:
Booting from a non-bootable disk results in a program interrupt loop.
Solution:
Dasdfmt writes now S/390 compatible boot straps while formatting to get a 'disabled wait' in case of booting from a non-bootable disk.
Description:
Hashmarks for dasdfmt
Symptom:
None.
Problem:
Format progress is not visible and progress bar option is not applicable for x3270 emulation.
Solution:
Prints a hashmark every x cylinders, where x is an optional parameter.
Description:
Progress bar for dasdfmt.
Symptom:
None.
Problem:
Format progress is not visible.
Solution:
Print a progress bar using the -p option. It is updated after each cylinder.
Description:
Multi volume support for system dump (tape 3480/90)
Symptom:
Dump is incomplete.
Problem:
The dump of a linux image won't fit on a single cartridge if the memory size of the image is bigger then the capacity of the cartridge.
Solution:
Allow dumping on several tape cartridges. The zgetdump tool can copy a multi volume dump to a file system in order to analyze it.
Description:
Tape device display support.
Symptom:
The end of the system dump process is hard to find out.
Problem:
The dump process stops by loading a disabled wait psw. This fact is only reflected on the SE where it can easily be overlooked.
Solution:
Use the tape display to indicate the dump progress.
Description:
64 bit support for dasd and tape dump.
Symptom:
The 31 bit dump records will only copy up to 2GB of system storage and the registers of all processors.
Note:
To get 64 bit enabled dump tools, the s390-tools packages needs to be compiled with the 64 bit tool chain.

Everybody should apply this patch.

To create the complete s390-tools sources, the following patches need to be applied in sequence:

s390-tools.tar.gz (IBM)
+ s390-tools-1.diff (IBM)


2001-09-14 Debug tools for the "August 2001 stream"

Release notes:

This patch contains the following gdb bug fix:

Description:
gdbserver support.
Problem:
Compiling a cross debugger for S/390 is not possible.
Solution:
Provide the support for cross debugging for S/390.
Note:
The gdbserver doesn't support debugging multithreaded applications on S/390 or any other platform. This patch also fixes the target signal remapping for all platforms (for example SIGUSR1 used to be deliveres as SIGBUS).

Everybody who wants to setup a gdbserver will need this patch.

To create the complete gdb sources, the following patches need to be applied in sequence:

gdb-5.0.tar.gz (see sourceware.cygnus.com/gdb)
+ gdb-5.0-s390.diff (IBM)
+ gdb-5.0-s390-1.diff (IBM)


2001-08-20 kernel 2.4.7 for the "August 2001 stream"

The following patch contains bug fixes and new features for the Linux kernel version 2.4.7. The summary of important changes:

linux-2.4.7-s390.tar.gz MD5 (2001-08-20)

  • linux-2.4.7 Kerntypes file

    This patch contains a dummy module that includes headers for all kernel types that the dump analysis tool lcrash needs. The kernel type information is used as input by the lcrash utility when analyzing system crash dumps or the live system. The dummy module is built together with the kernel image or simply with: 'make Kerntypes'.

To create the complete kernel sources, the following patches need to be applied in sequence:

linux-2.4.7.tar.gz (GPL)
+ linux-2.4.7-s390.diff (IBM)
+ linux-2.4.7-s390-kerntypes.diff (IBM)

linux-2.4.7-s390-kerntypes.tar.gz MD5 (2001-08-20)


2001-08-20 OCO modules (kernel 2.4.7) for the "August 2001 stream"

OCO modules (31-bit): (superseded)

These network device drivers are compatible with the Linux kernel version 2.4.7 and are object code only. Documentation on their use can be found in the Linux for S/390 device drivers manual in the Documentation section.

Restrictions for QDIO base support and OSA-Express Driver:

experimental OCO modules (64-bit): (superseded)

The following experimental 64-bit device drivers are compatible with Linux kernel version 2.4.7 and are object code only. Documentation on their use can be found in the Documentation section.

Restrictions for QDIO base support and OSA-Express Gigabit Ethernet Driver:


2001-08-20 Tool-chain for the "August 2001 stream"


2001-08-20 Utilities for the "August 2001 stream"

  • modutils

    Category operating system. Contains the Linux kernel module tools.

    For modutils-2.4.7 no patch needs to be applied for the S/390 backend.

  • s390 tools

    Category operating system. Contains the source tree of a set of utilities that replace "dasdfmt" and "silo" from the kernel source.

    The package contains:

    s390-tools.tar.gz MD5 (2001-08-20) (superseded)


2001-08-20 Debug tools for the "August 2001 stream"

Contact the IBM team

If you want to contact the Linux on System z IBM team refer to the Contact the Linux on System z IBM team page.