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.
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.
If there are no devices, we will no longer set
z90crypt.domain_established to 1 after probe_crypto_domain.
If z90crypt.domain_established is not set to 1, we will not
attempt find_crypto_devices in refresh_z90crypt, which avoids the
side effect of taking exceptions testing devices when domain is
autodetect (-1).
Better kernel warning messages when an ambiguous domain is
detected and when no devices can be found to determine the
domain.
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".