2005-06-23 kernel 2.6.5 bug fix patch 23 ("April 2004")

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

linux-2.6.5-s390-23-april2004.tar.gz / MD5 ... accumulated patch, recommended (2005-06-23)

linux-2.6.5-s390-23-april2004-patches.tar.gz / MD5 ... per-problem-patches, recommended (2005-06-23)

These patches contain the following linux kernel bug fixes:

Description:
claw: Performance fixes.
Symptom:
Slow claw performance in Packed Mode.
Problem:
Packed skb is held too long in hard start xmit routine.
Solution:
Ship skb to device as soon as possible.
Problem-ID:
16383
Description:
dasd: FBA I/O error on heavily loaded systems.
Symptom:
I/O error on a FBA device in heavy load situations.
Problem:
FBA discipline does not use re-tries and therefore a request fails after first unsuccessful attempt. Since re-tries are necessary in some rare conditions (e.g CIO path recovery) a tiny amount of re-tries are reasonable.
Solution:
Do some error recovery re-tries for FBA requests.
Problem-ID:
16378
Description:
kernel: SIGP external call order code performance.
Symptom:
Processes that communicate via semaphore operations are running slowly if executed in an LPAR environment with dedicated CPUs.
Problem:
The kernel uses the SIGP external call order code to signal other CPUs. When running with dedicated CPUs external calls do not get delivered immediately but within a fixed polling intervall. This can lead to delays where the system appears to do nothing.
Solution:
Use SIGP emergency call which gets delivered immediately.
Problem-ID:
14397
Description:
kernel: 3270 tty output.
Symptom:
The 3270 driver prints garbage on the 3270 tty view.
Problem:
The new style tty write function that is used for kernel version > 2.6.9 is not compatible with kernel version 2.6.5. The new style tty write function misses the from_user argument which indicates that the output string is coming from the user address space. Without it the 3270 driver tries to print strings located in the kernel address space.
Solution:
Revert to the old style tty write function semantics with the additional from_user argument and do proper user copy.
Problem-ID:
15746
Description:
qeth: Loss of static routes after recovery.
Symptom:
After a user-initiated or card-initiated recovery, the static routes for the network device are deleted.
Problem:
During recovery, dev_close() is called, which deletes the route entries.
Solution:
Call qeth_stop() instead of dev_close() in case of a recovery.
Problem-ID:
16545
Description:
qeth: TSO (TCP Segmentation Offload, "Large Send") causes program check on OSA devices.
Symptom:
Qeth related network devices running in TSO mode cause program checks on OSA devices. After the device is recovered the network stack stops sending TSO packets.
Problem:
OSA is able to handle 60K in one QDIO buffer. However network stack is able to send TSO packets larger than 60K. Regardless of hardware limitation we try to send network packets anyway which results in program check.
Solution:
Fix calculation of required QDIO buffer elements and discard packet if it exceeds the maximum element number.
Problem-ID:
16304
Description:
qeth: kernel panic after module unload.
Symptom:
After the qeth module has been unloaded, a kernel panic (illegal operation: 0001) occurs. The problem does not occur on every module unload: The occurrence is random.
Problem:
The qeth driver overwrites the default arp_constructor, which initializes a 'struct neighbor' object. For the 'ops' pointer of the neigbor object, an 'ops' structure is used, which is allocated by qeth with kmalloc() during module initialization. During the module unload process of qeth, this ops structure is freed with kfree().
There is a garbage collector (dst_run_gc), which asynchronously erases unused neighbor objects from time to time. During the neighbor destruction callbacks (which are defined in the 'ops' field) are called. When the qeth module has been unloaded at this time and the freed 'ops' structure has been reused by the kernel, the callback pointers are invalid and a kernel panic occurs.
Solution:
Export standard kernel 'arp_direct_ops' and use them instead of the allocated qeth ops. This ensures that the 'ops' structure is still valid, if the qeth module has been unloaded.
Problem-ID:
15662
Description:
qeth: qeth problems when using >= 4GB mem in 64bit mode.
Symptom:
When >= 4GB of memory are used in 64bit mode, qeth devices may not be able to transfer data.
Problem:
QDIO queue structures allocated in high memory areas are not accessible by OSA.
Solution:
Allocate QDIO queue structures in DMA area.
Problem-ID:
16541
Note:
Applicable for 64-bit Linux, only.
Description:
qeth: qetharp "Operation not supported" on non-layer2 Guest-LAN.
Symptom:
Response: "Unsuccessful: Operation not supported".
Problem:
Command "qetharp -q eth2" does not return a list of IP-/MAC-addresses for Guest-LAN devices.
Solution:
Re-enable qeth_arp_query() processing for Guest-LAN devices.
Problem-ID:
15802
Description:
qeth:Second try of setting group device online fails after the first one has failed with IDX_TERMINATE.
Symptom:
Trying to use a Guest-LAN device which is not coupled causes an IDX_TERMINATE when trying to set the qeth group device online. After coupling the Guest-LAN device to a valid VM Guest-LAN the second try of setting the qeth group device online also fails.
Problem:
After receiving IDX_TERMINATE, qeth still has an outstanding read CCW on the read channel. That means that read channel (read ccw device) will stay online. Trying to set qeth group device online after successfully coupling Guest-LAN device will fail since trying to set read CCW device online will return with error code as it is still online. Thus qeth's set_online routine fails and system has to be rebooted to get Guest-LAN device usable and running again.
Solution:
On failure clear all channels prior to setting them offline.
Problem-ID:
16090
Description:
qeth: Setting large_send attribute with value TSO or EDDP causes kernel oops.
Symptom:
Set large_send attribute with EDDP or TSO before the very first online results in kernel oops.
Problem:
Using netif_stop_queue with a NULL pointer is not applicable. Before the very first online setting of a qeth ccwgroup device we have no net_device structure but try to use it when setting large_send attribute.
Solution:
If net_device is not allocated just set large_send and return without using any net_device related functions.
Problem-ID:
16539

Everybody should apply this patch.

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

linux-2.6.5.tar.gz (see www.kernel.org/pub/linux/kernel/v2.6)
+ linux-2.6.5-s390-base-april2004.diff (IBM)
+ linux-2.6.5-s390-01-april2004.diff (IBM)
+ xipfs612 (see linuxvm.org/patches/index.html)
+ xipfs622 (see linuxvm.org/patches/index.html)
+ linux-2.6.5-s390-02-april2004.diff (IBM)
+ linux-2.6.5-s390-03-april2004.diff (IBM)
+ single threaded workqueue patch (see marc.theaimsgroup.com/?l=bk-commits-head&m=108305028322900&q=raw)
+ linux-2.6.5-s390-04-april2004.diff (IBM)
+ linux-2.6.5-s390-05-april2004.diff (IBM)
+ linux-2.6.5-s390-06-april2004.diff (IBM)
+ linux-2.6.5-s390-07-april2004.diff (IBM)
+ linux-2.6.5-s390-08-april2004.diff (IBM)
+ linux-2.6.5-s390-09-april2004.diff (IBM)
+ linux-2.6.5-s390-10-april2004.diff (IBM)
+ linux-2.6.5-s390-11-april2004.diff (IBM)
+ linux-2.6.5-s390-12-april2004.diff (IBM)
+ linux-2.6.5-s390-13-april2004.diff (IBM)
+ linux-2.6.5-s390-14-april2004.diff (IBM)
+ linux-2.6.5-s390-15-april2004.diff (IBM)
+ linux-2.6.5-s390-16-april2004.diff (IBM)
+ linux-2.6.5-s390-17-april2004.diff (IBM)
+ linux-2.6.5-s390-18-april2004.diff (IBM)
+ linux-2.6.5-s390-19-april2004.diff (IBM)
+ linux-2.6.5-s390-20-april2004.diff (IBM)
+ linux-2.6.5-s390-21-april2004.diff (IBM)
+ linux-2.6.5-s390-22-april2004.diff (IBM)
+ linux-2.6.5-s390-23-april2004.diff (IBM)

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.