summaryrefslogtreecommitdiffstats
path: root/loader/linuxrc.s390
diff options
context:
space:
mode:
authorDavid Cantrell <dcantrell@redhat.com>2008-10-16 12:06:27 -1000
committerDavid Cantrell <dcantrell@redhat.com>2008-10-16 12:06:27 -1000
commit2f5a347309af0f93b6653cb6cd662982a711cc69 (patch)
tree06ef5bcb62ffbe6b7d7d2d3076963bf31ebb703d /loader/linuxrc.s390
parenta0552881a0d4089baca65b6e059854cab668f271 (diff)
downloadanaconda-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.s39026
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