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

linux-2.6.5-s390-06-april2004-patches.tar.gz / MD5 ... per-problem-patches, recommended (2004-07-30)

These patches contain the following linux kernel bug fixes:

Description:
cio: Fix re-registration of disconnected ccw devices.
Symptom:
When a device disappears and goes into disconnected state, a different device appearing at the same subchannel is not detected correctly, possibly causing a system crash.
Problem:
The CCW device ID of the new device is not read again, so the channel subsystem driver still expects the previous one to be there.
Solution:
Re-order checking and setting of the CCW device ID.
Problem-ID:
9945
Description:
cio: fix channel path vary on for disconnected devices.
Symptom:
A ccw device does not recover after disabled channel paths are re-enabled on the service element.
Problem:
The service element does not notify the operating system for enabling channel paths.
Solution:
Add more guesswork.
Problem-ID:
9971
Description:
cio: improved handling of unsolicited interrupts.
Symptom:
Exceptional device conditions are not detected correctly, resulting in unexpected behavior of the device driver.
Problem:
A device deferred condition code 1 should always be reported as solicited, but is detected as unsolicited. After an unsolicited unit check without concurrent sense data, no sense data is reported to the driver.
Solution:
Move the check for unsolicited interrupts to a proper place.
Problem-ID:
9973
Description:
dasd: Endless re-try leads to busy / unresponsive system.
Symptom:
Endless re-try loop is blocking I/O for a device.
Problem:
Only ERP re-tries are using the retry counter (modify and check). All others (e.g. caused by the missing interrupt handler) did not. This sometimes leads to endless re-try loops for this device.
Solution:
Set and check the re-try counter in start_IO for all requests.
Problem-ID:
9795
Description:
dasd: Enhanced IRB handling.
Symptom:
Rare I/O error postings due to memory pressure.
Problem:
Unnecessary kmalloc in dasd int_handler to store the IRB. This might prevent ERP handling because of allocation failure.
Solution:
Integrate the irb struct directly into the ccw_request structure.
Problem-ID:
9792
Description:
dasd: Enhanced quality of DASD statistics.
Symptom:
Less precise statistics in some rare ERP conditions.
Problem:
Buildclock was not filled for some ERP requests.
Solution:
Fill the buildclock.
Problem-ID:
9793
Description:
dasd: RACE in state change interrupt handling.
Symptom:
Data consistency problems and 'invalid status' message.
Problem:
The state change handler was called via work queue. In rare cases the next request was started prior to the state change handling, and the currently started request was reset to status queued by the handler.
Solution:
Handle state changes directly in interrupt handler.
Problem-ID:
9788
Description:
dasd: RACE in terminate I/O handling after request timeout.
Symptom:
Data integrity problems and 'invalid status' message.
Problem:
After term_IO the request was posted with I/O error and the related interrupt was handled as unexpected.
Solution:
Retry the terminated I/O and wait for the interrupt.
Problem-ID:
9791
Description:
iucv: missing symbolic links for iucv in sysfs.
Symptom:
Missing links for driver and device in /sys/class/net/iucv0.
Problem:
Even though an iucv interface is active, the symbolic links mentioned below are missing.
Solution:
Add missing symbolic links for configured iucv interfaces: /sys/bus/iucv/drivers/netiucv/netiucv<n> netiucv<n> -> ../../../../devices/iucv/netiucv<n> /sys/class/net/iucv<n>/device device -> ../../../devices/iucv/netiucv<n> /sys/class/net/iucv<n>/driver driver -> ../../../bus/iucv/drivers/netiucv<n>
Problem-ID:
9936
Description:
iucv: pathid mismatch for multiple iucv connections.
Symptom:
Lost IUCV-connections, if a further 'Connection Pending' request arrives. Message 'iucv0: IR pathid 1 does not match original pathid 0' in dmesg.
Problem:
Bug in handler scan in case of a 'Connection Pending' interrupt.
Solution:
Reset handler variable h to NULL if scanned handler does not match.
Problem-ID:
9759
Description:
kernel: critical section cleanup in: entry.S
Symptom:
Kernel oops.
Problem:
The problem state check in the asynchronous interrupt entry code is done before the critical section cleanup. If an asynchronous interruption comes in before the kernel stack has been set up, %r15 contains a user stack pointer. But the address check to find out if the asynchronous interrupt stack pointer need to get loaded, relies on the fact, that %r15 contains a kernel stack pointer.
Solution:
Restructure the critical section cleanup code to make it possible to do the cleanup before the registers have been saved to the kernel or asynchronous interrupt stack.
Problem-ID:
9979
Description:
kernel: makefile problem.
Symptom:
Make clean fails.
Problem:
The makefile in arch/s390 contains a rule for the non-existent oprofile subfolder. Because of this make clean fails.
Solution:
Remove oprofile rul from arch/s390/Makefile.
Problem-ID:
-
Description:
qeth and lcs: qeth built as module can not be loaded.
Symptom:
If qeth/lcs is built as a loadable module, it can not be loaded due to unresolved symbols.
Problem:
Net/ipv6/mcast.c does not export register_multicast6_notifier and unregister_multicast6_notifier.
Solution:
Added missing EXPORT_SYMBOL statements.
Problem-ID:
9632
Description:
qeth: IP Assist commands get timeout after long system uptime.
Symptom:
After a system and its qeth device have been up for a long time and a lot of IP Assists have been issued, a following IP Assist request may end up in a timeout.
Problem:
For our internal book-keeping of IPA sequence numbers we used u32 variables, and an int in qeth_reply. In IPA PDUs the seqno field is only 2 bytes. As a result, we could not match received IPA PDUs to replies in our command waiter list as soon as our IPA seqno got larger than 216.
Solution:
Set type ipa in struct qeth_seqno to u16. Use an unsigned int for seqno in struct qeth_reply so the comparison in send_control_data_cb works. Note: seqno in qeth_reply must be 32 bits, because we want to be able to encode QETH_IDC_COMMAND_SEQNO there.
Problem-ID:
9631
Description:
qeth: too many qeth_reg_ip kernel threads when registering hundreds of ip addresses.
Symptom:
Registering hundreds of ip addresses causes hundreds of waiting kernel threads
Problem:
Creating hundreds of useless kernel threads is just wasteful.
Solution:
Do not start a new kernel thread for every new ip address to be registered/deleted, when one kernel thread is already running, it is enough to start yet another thread and put it into the wait queue for the remaining IP addresses.
Problem-ID:
9634
Description:
qdio: lost initiative for OSA under LPAR.
Symptom:
Connection hangs over OSA cards under LPAR; HiperSockets traffic starts the OSA traffic again.
Problem:
Indication of operating system doing processing not appropriate for OSA.
Solution:
Use NOT_INIT state for previous buffers when scanning the SLSB.
Problem-ID:
9567
Description:
sclp: console causes system to hang.
Symptom:
Under certain types of console I/O stress (i.e. when a lot of console messages are generated by several CPUs at the same time), the system may hang.
Problem:
The handling of BUSY and NOT OPERATIONAL states of the SCLP interface is incorrect.
Solution:
Fixed handling of BUSY and NOT OPERATIONAL states.
Problem-ID:
9819
Description:
tape: Use of debug feature can produce kernel Oops.
Symptom:
Accessing the sprintf file after a previously loaded module was unloaded, will give a kernel Oops.
Problem:
The sprintf view references strings in the modules data space. Unloading a discipline will invalidate pointers of messages produced by this discipline.
Solution:
Create separate debug areas for core and discipline modules.
Problem-ID:
9569
Note:
If you apply this patch you need as a minimum the 2004-07-30 version of the tape_3590 OCO module "tape_3590-2.6.5-s390(x)-01-april2004.tar.gz".
Description:
z90crypt: Error messages during loading of z90crypt.
Symptom:
Extraneous message when loading z90crypt, if no devices are present.
Problem:
Extra messages are issued on 31-bit z90crypt when no devices are defined to LPAR/guest.
Solution:
Clean up messages to be clearer. Also, three fixes in domain handling, which will prevent exceptions on 64-bit found in domain testing.
Problem-ID:
10223
Description:
z90crypt: checking of domain parameter is missing.
Symptom:
z90crypt loads even when invalid domain is specified.
Problem:
Missing check of domain parameter.
Solution:
Add the necessary check.
Problem-ID:
9851
Description:
zfcp: Error recovery does not finish after a cable to ESS ("Shark") is unplugged.
Symptom:
When a cable to an ESS is unplugged/plugged, error recovery would never being completed.
Problem:
If an ELS request is not processed by adapter, ZFCP does not do any action to recover a link.
Solution:
Force re-open of port, if link test procedure failed.
Problem-ID:
9824
Description:
zfcp: System hang on adapter detach.
Symptom:
System hangs.
Problem:
Race between calls of qdio_shutdown and do_QDIO. This can lead to enqueued requests for an adapter, which is detached instead of returning the requests with error code.
Solution:
Eliminate race.
Problem-ID:
9757
Description:
zfcp: Wrong return code of fsf_req_create.
Symptom:
Addressing exception, system hangs.
Problem:
If QDIO queues are shut down fsf_req_create may return with a NULL pointer, but a return code which indicates, that this pointer is actually pointing to a valid structure.
Solution:
Set return code correctly.
Problem-ID:
10200

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)

Note: If you apply the above patches, you need as a minimum the 2004-07-30 version of the tape_3590 OCO module "tape_3590-2.6.5-s390(x)-01-april2004.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.