2004-05-18 kernel 2.6.5 bug fix patch 02 ("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-02-april2004.tar.gz / MD5 ... accumulated patch, recommended (2004-05-18)

linux-2.6.5-s390-02-april2004-patches.tar.gz / MD5 ... per-problem-patches, recommended (2004-05-18)

These patches contain the following linux kernel bug fixes:

Description:
cio: DASDs not available after set online.
Symptom:
Certain types of dasds can not be used when attempting to set them online.
Problem:
Some DASDs support SensePGID, but not SetPGID. The common I/O layer nevertheless tries SetPGID on every path and eventually switches off every path, making the device not available.
Solution:
If SetPGID returns with command reject both for multi path and single path operation, consider path grouping not supported and just set the device online.
Problem-ID:
-
Description:
dasd: I/O errors during DASD device qualification.
Symptom:
ERP unsuccessful message followed by I/O error.
Problem:
erp_requests are not recovered because the "DASD_CQR_FLAGS_USE_ERP" is not set by default.
Solution:
Set the flag for erp_requests by default.
Problem-ID:
-
Description:
dasd: I/O errors during DASD device qualification.
Symptom:
I/O errors while vary on/off channel path.
Problem:
If CIO returns -EIO for a ccw_device_start (e.g. because of channel path re-detection), the current I/O is set to failed. This leads to an immediate I/O error.
Solution:
Keep the request in status QUEUED to enable retries and use higher default retry counter.
Problem-ID:
-
Description:
iucv: allow removal of a netiucv device.
Symptom:
netiucv devices can be added, but not removed.
Problem:
netiucv devices can only be removed by a module unload.
Solution:
new attribute /sys/bus/iucv/drivers/netiucv/remove; if an iucv device name is written into this attribute, and the device is in state STOPPED, the device is removed from the sysfs-tree.
Problem-ID:
-
Description:
kernel: per-cpu variables in 64 bit modules.
Symptom:
The load of the ipv6 modules on a 64 bit system with more than 4GB of main memory crashes the kernel.
Problem:
A statically defined per-cpu variable in a kernel modules is accessed by use of the "larl" instruction. The range of the instruction is +- 4GB. Because of this the access to such a variable only works if the kernel image and the kernel modules are no more then 4GB apart.
Solution:
Force the use of a 64 bit relocation to access statically defined per-cpu variables.
Problem-ID:
-
Note:
applicable for 64-bit Linux, only
Description:
kernel: ptrace information incorrect.
Symptom:
Some versions of gdb do not work.
Problem:
The per process ptrace information isn't stored to the task structure correctly.
Solution:
Fix storing of the ptrace information.
Problem-ID:
-
Description:
lcs: LCS interface cannot be initialized.
Symptom:
System hangs during startup when initializing a LCS interface.
Problem:
When IP multicast addresses are registered, the lcs card's lock was used for synchronization. The scope of this lock is too large.
Solution:
Don't use card->lock. Introduced card->ipm_lock to synchronize multicast lists.
Problem-ID:
-
Description:
lcs: net_device reference counting problem.
Symptom:
Trying to do an rmmod lcs or ungrouping an lcs device results in a hanging session with messages "waiting for ... to become free" displayed.
Problem:
An in_dev_put was missing in multicast address list handling.
Solution:
Added the missing in_dev_put.
Problem-ID:
-

Description:
lcs: null-pointer dereference failure after unsuccessful set_online.
Symptom:
If setting an LCS card online fails, the next try to set the card online results in a null-pointer dereference.
Problem:
Card's IO buffers are freed if lcs_detect returns an error.
Solution:
Do not call lcs_cleanup_card in case of errors in lcs_new_device. This allows for trying to set an LCS card online multiple times. lcs_cleanup_card is called in lcs_remove_device which is sufficient for freeing allocated memory.
Problem-ID:
-

Description:
qeth: HiperSockets device naming problem.
Symptom:
Invalid hsi device names (e.g. hsi-1) may be assigned. After removing a hsi device it may happen that the next new hsi device gets a name that is already assigned to another hsi device, which will fail.
Problem:
Internal hsi device name book keeping broken.
Solution:
Use stack's device naming. Set device name of hsi device to "hsi%d" -> stack will assign next free number for hsi device.
Problem-ID:
-

Description:
qeth: bad cable pull/cable plug behavior.
Symptom:
After a cable pull debug messages are displayed. After re-plugging of cable network does not work.
Problem:
Debug messages were caused by calling a sleeping function from an atomic context. Network did not work after re-plugging cable because IP addresses need to be registered on the card again, which we did not do.
Solution:
Changed behaviour in response to STOPLAN/STARTLAN commands. Do not call dev_close/dev_open any more. Call netif_carrier_off/.._on instead. At receipt of STARTLAN command re-register all IP addresses.
Problem-ID:
-

Description:
qeth: broadcast filtering not set up correctly.
Symptom:
Filtering of broadcasts does not work correctly. Broadcast capability is not reflected in /proc/qeth.
Problem:
OSA broadcast filtering was not set up correct in qeth_start_ipa_broadcast. An IPA_CMD_ASS_ENABLE command was missing. Also, there was no distinction between broadcast with/without echo in card->info.broadcast_capable.
Solution:
Added missing IPA command call. Added distinction between broadcast with/without echo. Adapted qeth_proc.c.
Problem-ID:
-

Description:
qeth: change of SIOC definitions for qetharp.
Symptom:
Definitions socket ioctls used by qetharp have changed.
Problem:
s390-tools qetharp and qeth driver must use same SIOC definitions.
Solution:
Adapted SIOC definitions.
Problem-ID:
-

Description:
qeth: incomplete version string of qeth module.
Symptom:
An incomplete version string is displayed when loading the qeth module.
Problem:
Not all files belonging to qeth have a revision string defined.
Solution:
Add missing revision string definitions.
Problem-ID:
-

Description:
qeth: incorrect handling of buffer_count sysfs attribute.
Symptom:
Decimal values piped into buffer_count are treated as hex values. In addition, changing the buffer_count of a qeth card leads to a hanging network connection and addressing exception.
Problem:
The first symptom is caused by wrong number base used in simple_strtoul. Second symptom is due to not freeing and re-allocating QDIO buffers at offline/online.
Solution:
Fixed number base for simple_strtoul in qeth_dev_bufcnt_store. Check new buffer_count value. If it is different from the old one, call qeth_realloc_buffer_pool -> buffers will be freshly allocated using the new buffer_count.
Problem-ID:
-

Description:
qeth: incorrect handling of ipa_takeover/enable attribute.
Symptom:
The above attribute has no effect on enabling takeover at card setup time.
Problem:
Takeover enabled/disabled flags are always taken from a static array, no matter if ipa_takeover is enabled or not.
Solution:
Remove static initialization of ipa_takeover. Introduced function qeth_init_func_level.
Problem-ID:
-

Description:
qeth: memory leak when doing query ARP.
Symptom:
When doing query ARP (qetharp -nq) there is a memory leak of 4K.
Problem:
Memory buffer allocated for query data is not freed after query ARP command completes.
Solution:
Do not allocate buffer at all. We already have io buffers of size 4K. OSA card can copy ARP data to these buffers.
Problem-ID:
-

Description:
qeth: purge ARP cache IPA command gets timeout.
Symptom:
When doing a qetharp -p after adding a big number of static ARP entries to an OSA card, the purge ARP cache command times out. qetharp says "Timer expired". Furthermore, unclear error messages are displayed for ARP commands.
Problem:
When very many ARP entries are added the purge command can take a long time to complete. For this case the timeout used in send_control_data was too small. Improved ARP error messages.
Solution:
Use bigger timeout for IPA commands.
Problem-ID:
-

Description:
qeth: session hangs when removing a vlan device.
Symptom:
When doing a vconfig rem to remove a vlan device the session can hang waiting for references on the vlan device to be released.
Problem:
We keep references for all skbs that are related to outbound qdio buffers. These references are free as soon as we get a PCI for these buffers. Because of our PCI avoidance algorithm we do not get PCIs for each single buffer. As a result, skb references are not freed immediately.
Solution:
On removal of vlan device release all skbs that are enqueued in our qdio buffers.
Problem-ID:
-

Description:
zfcp: Error recovery stall when waiting for completion of exchange data configuration.
Symptom:
System hangs.
Problem:
When the zfcp error recovery retries exchange data configuration, the corresponding error recovery action structure is not enqueued anymore in the running list which leads to a missing wake up event for the error recovery thread when the command completes.
Solution:
Always enqueue corresponding error recovery structure in running list of error recovery.
Problem-ID:
-

Description:
zfcp: Infinite retry of SCSI commands.
Symptom:
System hangs.
Problem:
If a machine check indicates that an FCP adapter is not available anymore, the zfcp lldd did not shut down the adapter internally. Under certain circumstances this can lead to a state where SCSI commands are always returned with return code SCSI_MLQUEUE_HOST_BUSY to the SCSI midlayer. The result is that the commands will be retried infinitely.
Solution:
Shutdown adapter internally.
Problem-ID:
-

Description:
zfcp: kernel config text and help change.
Symptom:
Old kernel configuration text and missing kernel configuration help text for zfcp
Problem:
-
Solution:
Update
Problem-ID:
-

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)

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.