Linux kernel version 2.4.17 recommended downloads

This page contains the kernel version 2.4.17 recommended downloads. Note that these downloads were experimental until 2002-04-30.

These recommended 2.4.17 downloads on this page are functionally equivalent to the recommended 2.4.7 downloads released until 2002-04-15.

With the recommended 2.4.17 downloads on this page, Linux for S/390 31-bit distributions and Linux for zSeries 64-bit distributions can be built using:

The recommended 2.4.17 downloads of this page were tested with the "old" tool-chain , utilities and debug tools available on the linux 2.4.7 recommended page:

Refer to the linux 2.4.17 documentation page for matching documentation.

Note that the new functions introduced with the "May 2002 stream" (kernel 2.4.17-nf experimental 2002-04-30, kernel 2.4.17-may2002 recommended 2002-05-31) are not available on this combination of levels. The "May 2002 stream" is parallel to this recommended kernel 2.4.17 path.

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

Linux kernel version 2.4.17 recommended downloads
Date Component Downloadable
2002-06-17 Jun17 2002 patch

Recommended OCO modules 31-bit

Recommended OCO modules 64-bit
linux-2.4.17-timer-3

qdio(2) and qeth(2) for standard and "on-demand" timer.
qdio(2) and qeth(2) for standard and "on-demand" timer.
2002-06-12 Jun12 2002 patch linux-2.4.17-s390-3
2002-04-30 Apr30 2002 patch linux-2.4.17-s390-kerntypes
2002-04-15 Apr15 2002 patches linux-2.4.17-s390-2
linux-2.4.17-timer-2 (superseded)
2002-03-18 Mar 18 "order2 allocation relief" patch linux-2.4.17-order2-1
2002-03-04 Mar 04 lcs patch linux-2.4.17-s390-1-lcs
2002-02-18 Recommended OCO modules 31-bit




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

lcs(1) and z90crypt(1) for standard and "on-demand" timer.
qdio(1) and qeth(1) for standard and "on-demand" timer. (superseded)
2002-02-05 Feb05 2002 patches




Recommended OCO modules 31-bit


Recommended OCO modules 64-bit
linux-2.4.17-s390
linux-2.4.17-timer (superseded) linux-2.4.17-order2 (superseded)


lcs, qdio, qeth, and z90crypt for standard and "on-demand" timer. (superseded)

lcs, qdio, qeth, and z90crypt for standard and "on-demand" timer. (superseded)

2002-06-17 OCO modules

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

Recommended OCO modules 31-bit

Recommended OCO modules 64-bit

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 follwing requirements are installed:

2002-06-17 timer patch

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 (original kernel source)
+ 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-12 kernel patch

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 early registrators 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-04-30 kerntypes patch

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 (original kernel source)
+ 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 and timer patches

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 (original kernel source)
+ 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 (original kernel source)
+ 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-03-18 patch

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:

To create the complete linux kernel sources, the following patches need to be applied in sequence:
linux-2.4.17.tar.gz (original kernel source)
+ 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-04 patch

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

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 (original kernel source)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-s390-1-lcs.diff (IBM)

2002-02-18 drop

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 patches

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 also apply.

Please see the kernel 2.4 Documentation page for the 31-bit and 64-bit manuals, which may be helpful.

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 (original kernel source)
+ linux-2.4.17-s390.diff (IBM)

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 (original kernel source)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-timer.diff (IBM)

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:

To create the complete linux kernel sources, the following patches need to be applied in sequence:
linux-2.4.17.tar.gz (original kernel source)
+ linux-2.4.17-s390.diff (IBM)
+ linux-2.4.17-order2.diff (IBM)

Recommended OCO modules 31-bit

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

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.

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.