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.
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)