diff options
author | David Cantrell <dcantrell@redhat.com> | 2008-10-16 12:06:27 -1000 |
---|---|---|
committer | David Cantrell <dcantrell@redhat.com> | 2008-10-16 12:06:27 -1000 |
commit | 2f5a347309af0f93b6653cb6cd662982a711cc69 (patch) | |
tree | 06ef5bcb62ffbe6b7d7d2d3076963bf31ebb703d /loader/linuxrc.s390 | |
parent | a0552881a0d4089baca65b6e059854cab668f271 (diff) | |
download | anaconda-2f5a347309af0f93b6653cb6cd662982a711cc69.tar.gz anaconda-2f5a347309af0f93b6653cb6cd662982a711cc69.tar.xz anaconda-2f5a347309af0f93b6653cb6cd662982a711cc69.zip |
Enable CCW devices used for installation (#253075)
IBM had requested that on s390x we add the cio_ignore=all parameter
to the default boot file. Well, cio_ignore all except for the 3270
terminal. The motivation for this change was to decrease device
discovery time on systems with thousands of subchannels.
The fix was only part of the solution. When you use cio_ignore to
disable everything, you need to explicitly free the device from
cio_ignore and then enable it using the magic of /sbin/chccwdev.
This patch adds the un-ignore capability to linuxrc.s390.
Diffstat (limited to 'loader/linuxrc.s390')
-rw-r--r-- | loader/linuxrc.s390 | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/loader/linuxrc.s390 b/loader/linuxrc.s390 index 395364795..90c739f5a 100644 --- a/loader/linuxrc.s390 +++ b/loader/linuxrc.s390 @@ -157,6 +157,15 @@ setupdevice() echo $"SUBCHANNELS or NETTYPE empty, cannot continue." exit 1 fi + + if [ -r /proc/cio_ignore ]; then + # enable subchannels + for subchannel in ${SUBCHANNELS//,/ } ; do + echo free $subchannel > /proc/cio_ignore + /sbin/chccwdev -e $subchannel + done + fi + SYSDIR=${SUBCHANNELS//,*/} # get first subchannel. This is where the device can be brought online sysecho /sys/bus/ccwgroup/drivers/${NETTYPE}/group "$SUBCHANNELS" if [ -n "$PORTNAME" ]; then @@ -566,10 +575,25 @@ if [ -z "$DASD" ]; then read DASD fi if [ -n "$DASD" ]; then - echo "DASD=$DASD" > /tmp/dasd_ports + # enable DASD devices + if [ -r /proc/cio_ignore ]; then + for dev in ${DASD//,/ } ; do + echo free $dev > /proc/cio_ignore + /sbin/chccwdev -e $dev + done + fi + + echo "DASD=$DASD" > /tmp/dasd_ports fi for i in ${!FCP_*}; do + # enable FCP devices + if [ -r /proc/cio_ignore ]; then + dev="$(echo ${!i} | cut -d ' ' -f 1)" + echo free $dev > /proc/cio_ignore + /sbin/chccwdev -e $dev + fi + echo "${!i}" >> /tmp/fcpconfig done |