FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Redhat > Fedora Development

 
 
LinkBack Thread Tools
 
Old 02-11-2010, 07:11 PM
David Cantrell
 
Default Use lsznet.raw from s390utils package (#563548).

The lsznet.raw and controlunits.sh files are now part of the s390-tools
project, which is in the s390utils package. Remove our copies and make
sure we use the ones from the s390utils package.
---
loader/Makefile.am | 2 +-
loader/controlunits.sh | 104 -----------------
loader/linuxrc.s390 | 10 +-
loader/lsznet.raw | 286 ------------------------------------------------
scripts/mk-images | 9 +-
scripts/upd-instroot | 2 +
6 files changed, 13 insertions(+), 400 deletions(-)
delete mode 100644 loader/controlunits.sh
delete mode 100644 loader/lsznet.raw

diff --git a/loader/Makefile.am b/loader/Makefile.am
index cfb7c7b..4d063bb 100644
--- a/loader/Makefile.am
+++ b/loader/Makefile.am
@@ -27,7 +27,7 @@ noinst_HEADERS = *.h

if IS_S390
boot_PROGRAMS += shutdown
-dist_boot_SCRIPTS = linuxrc.s390 lsznet.raw controlunits.sh
+dist_boot_SCRIPTS = linuxrc.s390
else
boot_PROGRAMS += init
endif
diff --git a/loader/controlunits.sh b/loader/controlunits.sh
deleted file mode 100644
index 5364d76..0000000
--- a/loader/controlunits.sh
+++ /dev/null
@@ -1,104 +0,0 @@
-# controlunits.sh: define some common control unit mappings
-# Copyright (C) IBM Corp. 2009
-# Author: Steffen Maier <maier@de.ibm.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License only.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-# The arrays (among other things) should be adapted, if any of those device
-# drivers start supporting different CU types/models.
-
-# The following combinations of control unit type and model were taken from the
-# Linux network device drivers for s390 on 2008-06-09 from Linux 2.6.25.4.
-# The list (among other things) should be adapted, if any of those device
-# drivers start supporting different CU types/models.
-# (Alternatively, the list could be generated by reading the modaliases
-# directly out of the device driver modules:
-# modinfo qeth/cu3088 | fgrep 'alias:'
-# However, this would still require a list of device driver modules.)
-readonly -a CU=(
- 1731/01
- 1731/05
- 3088/08
- 3088/1f
- 3088/1e
- 3088/01
- 3088/60
- 3088/61
-)
-
-# $CU_CARDTYPE array is the only one which may contain entries with spaces
-readonly -a CU_CARDTYPE=(
- "OSA (QDIO)"
- "HiperSocket"
- "CTC adapter"
- "escon channel"
- "ficon channel"
- "LCS p390"
- "LCS OSA"
- "LCS CLAW"
-)
-
-readonly -a CU_DEVDRV=(
- qeth
- qeth
- ctcm
- ctcm
- ctcm
- lcs
- lcs
- lcs
-)
-
-readonly -a CU_DEVNAME=(
- eth
- hsi
- ctc
- ctc
- ctc
- eth
- eth
- eth
-)
-
-readonly -a CU_GROUPCHANNELS=(
- 3
- 3
- 2
- 2
- 2
- 2
- 2
- 2
-)
-
-readonly -a CHPIDTYPES=(
- [0x10]=OSE
- [0x11]=OSD
- [0x24]=IQD
-)
-
-# Searches for a match of argument 1 on the array $CU and sets $cu_idx
-# to the matched array index on success.
-# Returns 0 on success, 1 on failure.
-function search_cu() {
- local scu=$1
- local i
- for ((i=0; i < ${#CU[@]}; i++)); do
- if [ "$scu" == "${CU[i]}" ]; then
- cu_idx=$i
- return 0
- fi
- done
- return 1
-}
diff --git a/loader/linuxrc.s390 b/loader/linuxrc.s390
index 6a8d2c2..258d1e7 100644
--- a/loader/linuxrc.s390
+++ b/loader/linuxrc.s390
@@ -31,7 +31,7 @@
# - udevadm and udevd need to be there
# - have /etc/udev/udev.conf with at least one comment line as content
# - if necessary, have udev rules
-# - copy lsznet.raw and controlunits.sh to initrd
+# - lsznet.raw and znetcontrolunits from s390utils-base in /lib/s390-tools
# - pack kernel modules and module-init-tools (no longer use busybox for that)
# - "multi on" in /etc/host.conf [RH bugs 486457,486461,483244]

@@ -351,18 +351,14 @@ function udev_setup() {
declare -a nettable

function read_lsznet_output() {
- #local lsznet_output=/tmp/lsznet.raw
- #lsznet.raw > $lsznet_output
count=0
local line
while read line; do
nettable[$count]="$line"
count=$((count + 1))
- #done < $lsznet_output
- #rm -f $lsznet_output
# using the more sophisticated process substitution instead of temp file
# requires the symlink /dev/fd -> /proc/self/fd => createDevices
- done < <(lsznet)
+ done < <(/lib/s390-tools/lsznet.raw)
}

function print_nettable() {
@@ -515,7 +511,7 @@ declare -r BUSIDFORMAT=[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]
declare -r IDFORMAT=$PREFIXFORMAT.$SSIDFORMAT.$BUSIDFORMAT
declare -r SUBCHANNEL_TYPE_IO=0

-. /sbin/controlunits
+. /lib/s390-tools/znetcontrolunits

function cardtype2cleartext() {
local cardtype=$1
diff --git a/loader/lsznet.raw b/loader/lsznet.raw
deleted file mode 100644
index a954153..0000000
--- a/loader/lsznet.raw
+++ /dev/null
@@ -1,286 +0,0 @@
-#! /bin/bash
-
-# lsznet.raw: list sensible network device hardware setups for Linux on s390(x)
-# Copyright (C) IBM Corp. 2008,2009
-# Author: Steffen Maier <maier@de.ibm.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License only.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-readonly SYSFS=/sys
-# DEBUG=0 turns off debugging. >=1 means increasing debugging.
-readonly DEBUG=0
-
-# nothing to be changed below here
-
-export TEXTDOMAIN=lsznet.raw
-
-readonly CMD=${0##*/}
-
-function error() {
- echo $"$CMD: ERROR: $*" 1>&2
- exit 1;
-}
-
-# currently requires bash version 3.0 or later
-# (this seems reasonable since bash-3.0 has been shipped with
-# RHEL 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7;
-# bash-3.1 with RHEL 5.0, 5.1; and bash-3.2 with RHEL 5.2)
-if [ ${BASH_VERSINFO[0]} -lt 3 -o
- ${BASH_VERSINFO[1]} -lt 0 ]; then
- error $"only works with BASH version 3.0 or later (current version used is ${BASH_VERSION})"
-fi
-
-# the script was designed for Linux kernel 2.6 and might work with newer ones
-kernel_version=$(uname -r)
-IFS=.
-read krn_ver krn_patch krn_foo <<< "$kernel_version"
-unset IFS
-if [ $krn_ver -lt 2 -o $krn_patch -lt 6 ]; then
- error $"only works for kernel versions 2.6 or probably later"
-fi
-
-. /sbin/controlunits
-
-readonly PREFIXFORMAT=[[:xdigit:]]*
-readonly SSIDFORMAT=[0-3]
-readonly BUSIDFORMAT=[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]
-readonly IDFORMAT=$PREFIXFORMAT.$SSIDFORMAT.$BUSIDFORMAT
-readonly SUBCHANNEL_TYPE_IO=0
-
-function debug() {
- level=$1
- shift
- [ $DEBUG -ge $level ] && echo "$*" 1>&2
-}
-
-# Returns symbolic name of CHPID type in $chpidtype_symbolic,
-# if an entry in the array $CHPIDTYPES has been found at index of argument 1.
-# Returns "?" otherwise.
-# Always succeeds and returns 0.
-function search_chpt() {
- local chpidtype_number=$1
- chpidtype_symbolic=${CHPIDTYPES[$((0x$chpidtype_number))]}
- if [ "$chpidtype_symbolic" == "" ]; then
- chpidtype_symbolic="?"
- fi
- return 0
-}
-
-# build_list:
-#
-# Prints list on standard output consisting of all subchannels and
-# ccwdevices whose control unit type/model match supported network
-# device types on s390. Each matching entry is accompanied with
-# (almost all) corresponding attributes.
-#
-function build_list() {
- # use /sys/devices/css*/ for startpath
- readonly STARTPATH=$SYSFS/devices
- # change to base directory so path globbing length with find is minimal
- cd $STARTPATH
- # fail out gracefully, if there is not expected sysfs environment
- # (could even fail out near the top, if $(uname -m) != s390x)
- csses=css$PREFIXFORMAT
- for d in $csses; do
- [ -d $d ] || exit
- done
- find $csses -name "$IDFORMAT" |
- while read dir; do
- debug 6 " examining sysfs directory $dir"
- # must not use $...FORMAT (file globs) here since this is a regex:
- [[ "$dir" =~ ^css([[:xdigit:]]+)/([[:xdigit:]]+.[0-3].[[:xdigit:]]{4})/([[:xdigit:]]+.[0-3].[[:xdigit:]]{4})$ ]]
- case $? in
- 0)
- # string matched the pattern
- debug 6 " ${BASH_REMATCH[@]}"
- prefix=${BASH_REMATCH[1]}
- subch=${BASH_REMATCH[2]}
- devbusid=${BASH_REMATCH[3]}
- subch_p=css$prefix/$subch
- dev_p=$subch_p/$devbusid
- debug 6 " $subch_p $dev_p"
- ;;
- 1)
- # string did not match the pattern
- continue
- ;;
- 2)
- error $"syntax error in regex of match operator =~, code needs to be fixed"
- ;;
- *)
- error $"unexpected return code of regex match operator =~, code needs to be fixed"
- ;;
- esac
- debug 5 " sysfs directory matched regex $dir"
- # skip non-I/O-subchannels, i.e. chsc and message subchannels
- if [ -f $subch_p/type ]; then
- read type < $subch_p/type
- if [ $type != $SUBCHANNEL_TYPE_IO ]; then
- debug 3 " skip non-I/O subchannel"
- continue
- fi
- fi
- # get subchannel information...
- # ATTENTION: hex values from sysfs are WITHOUT leading 0x prefix!
- read chpid_list < $subch_p/chpids
- read -a chpids <<< "$chpid_list"
- if [ ${#chpids[@]} -ne 8 ]; then
- error $"sysfs reported ${#chpids[@]} CHPIDs instead of expected 8"
- fi
- read pim pam pom foo < $subch_p/pimpampom
- pimchpidZ=""
- local chp
- for ((chp=0; chp < 8; chp++)); do
- mask=$((0x80 >> chp))
- if (( 0x$pim & $mask )); then
- pimchpidZ=${pimchpidZ}${chpids[chp]}
- else
- pimchpidZ=${pimchpidZ}"ZZ"
- fi
- done
- # get device information...
- read cutype < $dev_p/cutype
- read active < $dev_p/online
- # skip already active subchannels and those that are already in a
- # ccwgroup and thus not available any more:
- [ $active == "1" ] && continue
- [ -h $dev_p/group_device ] && continue
- # get chpid information...
- pimchpids=${pimchpidZ//ZZ/}
- [ $pimchpids == "" ] && continue
- # Taking the first 2 hex digits as CHPID relies somewhat on the fact
- # that network adaptors don't use multipathing and only have one CHP.
- # Anyway it's OK since we're only interested in CHPID type and I guess
- # this should be equal for all possible multipaths to the same device.
- chpid=${pimchpids:0:2}
- chpid_p=css$prefix/chp$prefix.$chpid
- read chptype < $chpid_p/type
- # filter and output...
- if search_cu $cutype; then
- if [ "${CU_DEVDRV[$cu_idx]}" == "ctc" ]; then
- # assume CTC are mostly virtual and ignore chpid from sysfs
- chpidtype_symbolic="-"
- else
- search_chpt $chptype
- fi
- echo $pimchpids $devbusid $STARTPATH/$dev_p $cutype $chpidtype_symbolic $chptype ${CU_DEVDRV[$cu_idx]} ${CU_DEVNAME[$cu_idx]} ${CU_GROUPCHANNELS[$cu_idx]} $cu_idx ${CU_CARDTYPE[$cu_idx]}
- else
- debug 5 " skip non-network device $devbusid CU $cutype"
- fi
- done
-}
-
-# search_groups:
-#
-# Prints enumeration list on standard output consisting of possible
-# hardware configurations (ccwgroups) for network devices on s390.
-# Each configuration suggestion includes corresponding attributes
-# that are of potential interest for the user and fit in a fixed column
-# table on an 80 column screen.
-#
-# PRECONDITION: Standard input has to be stably sorted by device bus IDs and
-# then by CHPIDs, i.e. grouped by CHPIDs.
-#
-function search_groups() {
- local w_prefix w_ssid w_devno
- local d_prefix d_ssid d_devno
- local prefix ssid devno x
- local chp devbusid dev_p cutype chpidtypename chptype devdrv devname groupchs cu_idx cardtype
- # remembered last state variables for possible ccwgroup:
- local r_prefix="Z"
- local r_ssid="Z"
- local r_devno="ZZZZ"
- local r_chp="ZZ"
- local r_cutype="ZZZZ/ZZ"
- local count=0
- local item=1
- local skipped=0
- # currently unused are: dev_p,chptype, cu_idx.
- while read chp devbusid dev_p cutype chpidtypename chptype devdrv devname groupchs cu_idx cardtype; do
- debug 1 " # $chp $devbusid $dev_p $cutype $chpidtypename $chptype $devdrv $devname $groupchs $cu_idx $cardtype"
- IFS=.
- read prefix ssid devno x <<< "$devbusid"
- unset IFS
- if [ $r_chp != $chp
- -o $r_prefix != $prefix
- -o $r_ssid != $ssid
- -o $r_cutype != $cutype ]; then
- # restart with new read channel info and remember it
- r_prefix=$prefix
- r_ssid=$ssid
- r_devno=$devno
- r_chp=$chp
- r_cutype=$cutype
- count=1
- debug 2 " INFO: restart on different CHPID or prefix or CUtype/model"
- continue
- fi
- count=$((count + 1))
- if [ $count -eq 2 ]; then
- # about to check if write channel is one above read channel
- if [ $((0x$devno)) -ne $((0x$r_devno + 1)) ]; then
- # start with new read channel info
- r_prefix=$prefix
- r_ssid=$ssid
- r_devno=$devno
- r_chp=$chp
- r_cutype=$cutype
- count=1
- skipped=$((skipped + 1))
- # unimplemented possible packed channel usage option:
- # remember unused channels for later use as data channel
- debug 2 " INFO: restart on unmatching read channel"
- continue
- fi
- w_prefix=$prefix
- w_ssid=$ssid
- w_devno=$devno
- elif [ $count -eq 3 ]; then
- # remember data channel info
- d_prefix=$prefix
- d_ssid=$ssid
- d_devno=$devno
- fi
- debug 2 " INFO: groupchs=$groupchs count=$count"
- if [ $count -ne $groupchs ]; then
- debug 2 " INFO: skip"
- continue
- fi
- # found possible ccwgroup
- case $count in
- 2)
- chlist=$r_prefix.$r_ssid.$r_devno,$w_prefix.$w_ssi d.$w_devno
- ;;
- 3)
- chlist=$r_prefix.$r_ssid.$r_devno,$w_prefix.$w_ssi d.$w_devno,$d_prefix.$d_ssid.$d_devno
- ;;
- *)
- error $"unknown number of channels for group, code needs to be fixed"
- ;;
- esac
- echo $item $cutype $chp $chpidtypename $devdrv $devname $chlist "$cardtype"
- item=$((item + 1))
- # restart after successful detection
- r_prefix="Z"
- count=0
- done
- debug 1 " STATISTIC: skipped $skipped devnos because of unmatching read channel"
-}
-
-build_list |
-# stable sort by device bus IDs and then by CHPIDs => grouped by CHPIDs
-# (sorting only works since keys are fixed no. of digits with leading zeros!)
-sort -s -k 1,1 -k 2,2 |
-#cat ; exit # move at desired line and uncomment to see intermediate output
-search_groups
diff --git a/scripts/mk-images b/scripts/mk-images
index eaf6270..92121b9 100755
--- a/scripts/mk-images
+++ b/scripts/mk-images
@@ -605,6 +605,13 @@ makeinitrd() {
instbin $IMGPATH /usr/sbin/$cmd $MBD_DIR /sbin/$cmd
done

+ # lsznet requirements
+ mkdir -p $MBD_DIR/lib/s390-tools
+ for lsznetbin in lsznet.raw znetcontrolunits ; do
+ target="/lib/s390-tools/$lsznetbin"
+ instbin $IMGPATH $target $MBD_DIR $target
+ done
+
# required for lsznet
instbin $IMGPATH /usr/bin/sort $MBD_DIR /sbin/sort

@@ -648,8 +655,6 @@ makeinitrd() {
else
instbin $IMGPATH ${LOADERBINDIR##$IMGPATH}/shutdown $MBD_DIR /sbin/shutdown
instbin $IMGPATH /usr/lib/anaconda-runtime/loader/linuxrc.s390 $MBD_DIR /sbin/init
- instbin $IMGPATH /usr/lib/anaconda-runtime/loader/lsznet.raw $MBD_DIR /sbin/lsznet
- instbin $IMGPATH /usr/lib/anaconda-runtime/loader/controlunits.sh $MBD_DIR /sbin/controlunits
instbin $IMGPATH /usr/sbin/dasdfmt $MBD_DIR /sbin/dasdfmt
fi

diff --git a/scripts/upd-instroot b/scripts/upd-instroot
index a6c65ee..ec57f31 100755
--- a/scripts/upd-instroot
+++ b/scripts/upd-instroot
@@ -711,6 +711,8 @@ bin/tar
bin/uname
bin/vi
lib/modules/ibm
+lib/s390-tools/lsznet.raw
+lib/s390-tools/znetcontrolunits
lib/security
sbin/arp
sbin/cmsfscat
--
1.6.6

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 
Old 02-11-2010, 07:50 PM
Steffen Maier
 
Default Use lsznet.raw from s390utils package (#563548).

Looks good.

On 02/11/2010 09:11 PM, David Cantrell wrote:
> The lsznet.raw and controlunits.sh files are now part of the s390-tools
> project, which is in the s390utils package. Remove our copies and make
> sure we use the ones from the s390utils package.
> ---
> loader/Makefile.am | 2 +-
> loader/controlunits.sh | 104 -----------------
> loader/linuxrc.s390 | 10 +-
> loader/lsznet.raw | 286 ------------------------------------------------
> scripts/mk-images | 9 +-
> scripts/upd-instroot | 2 +
> 6 files changed, 13 insertions(+), 400 deletions(-)
> delete mode 100644 loader/controlunits.sh
> delete mode 100644 loader/lsznet.raw
>
> diff --git a/loader/Makefile.am b/loader/Makefile.am
> index cfb7c7b..4d063bb 100644
> --- a/loader/Makefile.am
> +++ b/loader/Makefile.am
> @@ -27,7 +27,7 @@ noinst_HEADERS = *.h
>
> if IS_S390
> boot_PROGRAMS += shutdown
> -dist_boot_SCRIPTS = linuxrc.s390 lsznet.raw controlunits.sh
> +dist_boot_SCRIPTS = linuxrc.s390
> else
> boot_PROGRAMS += init
> endif
> diff --git a/loader/controlunits.sh b/loader/controlunits.sh
> deleted file mode 100644
> index 5364d76..0000000
> --- a/loader/controlunits.sh
> +++ /dev/null
> @@ -1,104 +0,0 @@
> -# controlunits.sh: define some common control unit mappings
> -# Copyright (C) IBM Corp. 2009
> -# Author: Steffen Maier <maier@de.ibm.com>
> -#
> -# This program is free software; you can redistribute it and/or modify
> -# it under the terms of the GNU General Public License as published by
> -# the Free Software Foundation; version 2 of the License only.
> -#
> -# This program is distributed in the hope that it will be useful,
> -# but WITHOUT ANY WARRANTY; without even the implied warranty of
> -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> -# GNU General Public License for more details.
> -#
> -# You should have received a copy of the GNU General Public License
> -# along with this program; if not, write to the Free Software
> -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
> -
> -# The arrays (among other things) should be adapted, if any of those device
> -# drivers start supporting different CU types/models.
> -
> -# The following combinations of control unit type and model were taken from the
> -# Linux network device drivers for s390 on 2008-06-09 from Linux 2.6.25.4.
> -# The list (among other things) should be adapted, if any of those device
> -# drivers start supporting different CU types/models.
> -# (Alternatively, the list could be generated by reading the modaliases
> -# directly out of the device driver modules:
> -# modinfo qeth/cu3088 | fgrep 'alias:'
> -# However, this would still require a list of device driver modules.)
> -readonly -a CU=(
> - 1731/01
> - 1731/05
> - 3088/08
> - 3088/1f
> - 3088/1e
> - 3088/01
> - 3088/60
> - 3088/61
> -)
> -
> -# $CU_CARDTYPE array is the only one which may contain entries with spaces
> -readonly -a CU_CARDTYPE=(
> - "OSA (QDIO)"
> - "HiperSocket"
> - "CTC adapter"
> - "escon channel"
> - "ficon channel"
> - "LCS p390"
> - "LCS OSA"
> - "LCS CLAW"
> -)
> -
> -readonly -a CU_DEVDRV=(
> - qeth
> - qeth
> - ctcm
> - ctcm
> - ctcm
> - lcs
> - lcs
> - lcs
> -)
> -
> -readonly -a CU_DEVNAME=(
> - eth
> - hsi
> - ctc
> - ctc
> - ctc
> - eth
> - eth
> - eth
> -)
> -
> -readonly -a CU_GROUPCHANNELS=(
> - 3
> - 3
> - 2
> - 2
> - 2
> - 2
> - 2
> - 2
> -)
> -
> -readonly -a CHPIDTYPES=(
> - [0x10]=OSE
> - [0x11]=OSD
> - [0x24]=IQD
> -)
> -
> -# Searches for a match of argument 1 on the array $CU and sets $cu_idx
> -# to the matched array index on success.
> -# Returns 0 on success, 1 on failure.
> -function search_cu() {
> - local scu=$1
> - local i
> - for ((i=0; i < ${#CU[@]}; i++)); do
> - if [ "$scu" == "${CU[i]}" ]; then
> - cu_idx=$i
> - return 0
> - fi
> - done
> - return 1
> -}
> diff --git a/loader/linuxrc.s390 b/loader/linuxrc.s390
> index 6a8d2c2..258d1e7 100644
> --- a/loader/linuxrc.s390
> +++ b/loader/linuxrc.s390
> @@ -31,7 +31,7 @@
> # - udevadm and udevd need to be there
> # - have /etc/udev/udev.conf with at least one comment line as content
> # - if necessary, have udev rules
> -# - copy lsznet.raw and controlunits.sh to initrd
> +# - lsznet.raw and znetcontrolunits from s390utils-base in /lib/s390-tools
> # - pack kernel modules and module-init-tools (no longer use busybox for that)
> # - "multi on" in /etc/host.conf [RH bugs 486457,486461,483244]
>
> @@ -351,18 +351,14 @@ function udev_setup() {
> declare -a nettable
>
> function read_lsznet_output() {
> - #local lsznet_output=/tmp/lsznet.raw
> - #lsznet.raw > $lsznet_output
> count=0
> local line
> while read line; do
> nettable[$count]="$line"
> count=$((count + 1))
> - #done < $lsznet_output
> - #rm -f $lsznet_output
> # using the more sophisticated process substitution instead of temp file
> # requires the symlink /dev/fd -> /proc/self/fd => createDevices
> - done < <(lsznet)
> + done < <(/lib/s390-tools/lsznet.raw)
> }
>
> function print_nettable() {
> @@ -515,7 +511,7 @@ declare -r BUSIDFORMAT=[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]
> declare -r IDFORMAT=$PREFIXFORMAT.$SSIDFORMAT.$BUSIDFORMAT
> declare -r SUBCHANNEL_TYPE_IO=0
>
> -. /sbin/controlunits
> +. /lib/s390-tools/znetcontrolunits
>
> function cardtype2cleartext() {
> local cardtype=$1
> diff --git a/loader/lsznet.raw b/loader/lsznet.raw
> deleted file mode 100644
> index a954153..0000000
> --- a/loader/lsznet.raw
> +++ /dev/null
> @@ -1,286 +0,0 @@
> -#! /bin/bash
> -
> -# lsznet.raw: list sensible network device hardware setups for Linux on s390(x)
> -# Copyright (C) IBM Corp. 2008,2009
> -# Author: Steffen Maier <maier@de.ibm.com>
> -#
> -# This program is free software; you can redistribute it and/or modify
> -# it under the terms of the GNU General Public License as published by
> -# the Free Software Foundation; version 2 of the License only.
> -#
> -# This program is distributed in the hope that it will be useful,
> -# but WITHOUT ANY WARRANTY; without even the implied warranty of
> -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> -# GNU General Public License for more details.
> -#
> -# You should have received a copy of the GNU General Public License
> -# along with this program; if not, write to the Free Software
> -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
> -
> -readonly SYSFS=/sys
> -# DEBUG=0 turns off debugging. >=1 means increasing debugging.
> -readonly DEBUG=0
> -
> -# nothing to be changed below here
> -
> -export TEXTDOMAIN=lsznet.raw
> -
> -readonly CMD=${0##*/}
> -
> -function error() {
> - echo $"$CMD: ERROR: $*" 1>&2
> - exit 1;
> -}
> -
> -# currently requires bash version 3.0 or later
> -# (this seems reasonable since bash-3.0 has been shipped with
> -# RHEL 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7;
> -# bash-3.1 with RHEL 5.0, 5.1; and bash-3.2 with RHEL 5.2)
> -if [ ${BASH_VERSINFO[0]} -lt 3 -o
> - ${BASH_VERSINFO[1]} -lt 0 ]; then
> - error $"only works with BASH version 3.0 or later (current version used is ${BASH_VERSION})"
> -fi
> -
> -# the script was designed for Linux kernel 2.6 and might work with newer ones
> -kernel_version=$(uname -r)
> -IFS=.
> -read krn_ver krn_patch krn_foo <<< "$kernel_version"
> -unset IFS
> -if [ $krn_ver -lt 2 -o $krn_patch -lt 6 ]; then
> - error $"only works for kernel versions 2.6 or probably later"
> -fi
> -
> -. /sbin/controlunits
> -
> -readonly PREFIXFORMAT=[[:xdigit:]]*
> -readonly SSIDFORMAT=[0-3]
> -readonly BUSIDFORMAT=[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]
> -readonly IDFORMAT=$PREFIXFORMAT.$SSIDFORMAT.$BUSIDFORMAT
> -readonly SUBCHANNEL_TYPE_IO=0
> -
> -function debug() {
> - level=$1
> - shift
> - [ $DEBUG -ge $level ] && echo "$*" 1>&2
> -}
> -
> -# Returns symbolic name of CHPID type in $chpidtype_symbolic,
> -# if an entry in the array $CHPIDTYPES has been found at index of argument 1.
> -# Returns "?" otherwise.
> -# Always succeeds and returns 0.
> -function search_chpt() {
> - local chpidtype_number=$1
> - chpidtype_symbolic=${CHPIDTYPES[$((0x$chpidtype_number))]}
> - if [ "$chpidtype_symbolic" == "" ]; then
> - chpidtype_symbolic="?"
> - fi
> - return 0
> -}
> -
> -# build_list:
> -#
> -# Prints list on standard output consisting of all subchannels and
> -# ccwdevices whose control unit type/model match supported network
> -# device types on s390. Each matching entry is accompanied with
> -# (almost all) corresponding attributes.
> -#
> -function build_list() {
> - # use /sys/devices/css*/ for startpath
> - readonly STARTPATH=$SYSFS/devices
> - # change to base directory so path globbing length with find is minimal
> - cd $STARTPATH
> - # fail out gracefully, if there is not expected sysfs environment
> - # (could even fail out near the top, if $(uname -m) != s390x)
> - csses=css$PREFIXFORMAT
> - for d in $csses; do
> - [ -d $d ] || exit
> - done
> - find $csses -name "$IDFORMAT" |
> - while read dir; do
> - debug 6 " examining sysfs directory $dir"
> - # must not use $...FORMAT (file globs) here since this is a regex:
> - [[ "$dir" =~ ^css([[:xdigit:]]+)/([[:xdigit:]]+.[0-3].[[:xdigit:]]{4})/([[:xdigit:]]+.[0-3].[[:xdigit:]]{4})$ ]]
> - case $? in
> - 0)
> - # string matched the pattern
> - debug 6 " ${BASH_REMATCH[@]}"
> - prefix=${BASH_REMATCH[1]}
> - subch=${BASH_REMATCH[2]}
> - devbusid=${BASH_REMATCH[3]}
> - subch_p=css$prefix/$subch
> - dev_p=$subch_p/$devbusid
> - debug 6 " $subch_p $dev_p"
> - ;;
> - 1)
> - # string did not match the pattern
> - continue
> - ;;
> - 2)
> - error $"syntax error in regex of match operator =~, code needs to be fixed"
> - ;;
> - *)
> - error $"unexpected return code of regex match operator =~, code needs to be fixed"
> - ;;
> - esac
> - debug 5 " sysfs directory matched regex $dir"
> - # skip non-I/O-subchannels, i.e. chsc and message subchannels
> - if [ -f $subch_p/type ]; then
> - read type < $subch_p/type
> - if [ $type != $SUBCHANNEL_TYPE_IO ]; then
> - debug 3 " skip non-I/O subchannel"
> - continue
> - fi
> - fi
> - # get subchannel information...
> - # ATTENTION: hex values from sysfs are WITHOUT leading 0x prefix!
> - read chpid_list < $subch_p/chpids
> - read -a chpids <<< "$chpid_list"
> - if [ ${#chpids[@]} -ne 8 ]; then
> - error $"sysfs reported ${#chpids[@]} CHPIDs instead of expected 8"
> - fi
> - read pim pam pom foo < $subch_p/pimpampom
> - pimchpidZ=""
> - local chp
> - for ((chp=0; chp < 8; chp++)); do
> - mask=$((0x80 >> chp))
> - if (( 0x$pim & $mask )); then
> - pimchpidZ=${pimchpidZ}${chpids[chp]}
> - else
> - pimchpidZ=${pimchpidZ}"ZZ"
> - fi
> - done
> - # get device information...
> - read cutype < $dev_p/cutype
> - read active < $dev_p/online
> - # skip already active subchannels and those that are already in a
> - # ccwgroup and thus not available any more:
> - [ $active == "1" ] && continue
> - [ -h $dev_p/group_device ] && continue
> - # get chpid information...
> - pimchpids=${pimchpidZ//ZZ/}
> - [ $pimchpids == "" ] && continue
> - # Taking the first 2 hex digits as CHPID relies somewhat on the fact
> - # that network adaptors don't use multipathing and only have one CHP.
> - # Anyway it's OK since we're only interested in CHPID type and I guess
> - # this should be equal for all possible multipaths to the same device.
> - chpid=${pimchpids:0:2}
> - chpid_p=css$prefix/chp$prefix.$chpid
> - read chptype < $chpid_p/type
> - # filter and output...
> - if search_cu $cutype; then
> - if [ "${CU_DEVDRV[$cu_idx]}" == "ctc" ]; then
> - # assume CTC are mostly virtual and ignore chpid from sysfs
> - chpidtype_symbolic="-"
> - else
> - search_chpt $chptype
> - fi
> - echo $pimchpids $devbusid $STARTPATH/$dev_p $cutype $chpidtype_symbolic $chptype ${CU_DEVDRV[$cu_idx]} ${CU_DEVNAME[$cu_idx]} ${CU_GROUPCHANNELS[$cu_idx]} $cu_idx ${CU_CARDTYPE[$cu_idx]}
> - else
> - debug 5 " skip non-network device $devbusid CU $cutype"
> - fi
> - done
> -}
> -
> -# search_groups:
> -#
> -# Prints enumeration list on standard output consisting of possible
> -# hardware configurations (ccwgroups) for network devices on s390.
> -# Each configuration suggestion includes corresponding attributes
> -# that are of potential interest for the user and fit in a fixed column
> -# table on an 80 column screen.
> -#
> -# PRECONDITION: Standard input has to be stably sorted by device bus IDs and
> -# then by CHPIDs, i.e. grouped by CHPIDs.
> -#
> -function search_groups() {
> - local w_prefix w_ssid w_devno
> - local d_prefix d_ssid d_devno
> - local prefix ssid devno x
> - local chp devbusid dev_p cutype chpidtypename chptype devdrv devname groupchs cu_idx cardtype
> - # remembered last state variables for possible ccwgroup:
> - local r_prefix="Z"
> - local r_ssid="Z"
> - local r_devno="ZZZZ"
> - local r_chp="ZZ"
> - local r_cutype="ZZZZ/ZZ"
> - local count=0
> - local item=1
> - local skipped=0
> - # currently unused are: dev_p,chptype, cu_idx.
> - while read chp devbusid dev_p cutype chpidtypename chptype devdrv devname groupchs cu_idx cardtype; do
> - debug 1 " # $chp $devbusid $dev_p $cutype $chpidtypename $chptype $devdrv $devname $groupchs $cu_idx $cardtype"
> - IFS=.
> - read prefix ssid devno x <<< "$devbusid"
> - unset IFS
> - if [ $r_chp != $chp
> - -o $r_prefix != $prefix
> - -o $r_ssid != $ssid
> - -o $r_cutype != $cutype ]; then
> - # restart with new read channel info and remember it
> - r_prefix=$prefix
> - r_ssid=$ssid
> - r_devno=$devno
> - r_chp=$chp
> - r_cutype=$cutype
> - count=1
> - debug 2 " INFO: restart on different CHPID or prefix or CUtype/model"
> - continue
> - fi
> - count=$((count + 1))
> - if [ $count -eq 2 ]; then
> - # about to check if write channel is one above read channel
> - if [ $((0x$devno)) -ne $((0x$r_devno + 1)) ]; then
> - # start with new read channel info
> - r_prefix=$prefix
> - r_ssid=$ssid
> - r_devno=$devno
> - r_chp=$chp
> - r_cutype=$cutype
> - count=1
> - skipped=$((skipped + 1))
> - # unimplemented possible packed channel usage option:
> - # remember unused channels for later use as data channel
> - debug 2 " INFO: restart on unmatching read channel"
> - continue
> - fi
> - w_prefix=$prefix
> - w_ssid=$ssid
> - w_devno=$devno
> - elif [ $count -eq 3 ]; then
> - # remember data channel info
> - d_prefix=$prefix
> - d_ssid=$ssid
> - d_devno=$devno
> - fi
> - debug 2 " INFO: groupchs=$groupchs count=$count"
> - if [ $count -ne $groupchs ]; then
> - debug 2 " INFO: skip"
> - continue
> - fi
> - # found possible ccwgroup
> - case $count in
> - 2)
> - chlist=$r_prefix.$r_ssid.$r_devno,$w_prefix.$w_ssi d.$w_devno
> - ;;
> - 3)
> - chlist=$r_prefix.$r_ssid.$r_devno,$w_prefix.$w_ssi d.$w_devno,$d_prefix.$d_ssid.$d_devno
> - ;;
> - *)
> - error $"unknown number of channels for group, code needs to be fixed"
> - ;;
> - esac
> - echo $item $cutype $chp $chpidtypename $devdrv $devname $chlist "$cardtype"
> - item=$((item + 1))
> - # restart after successful detection
> - r_prefix="Z"
> - count=0
> - done
> - debug 1 " STATISTIC: skipped $skipped devnos because of unmatching read channel"
> -}
> -
> -build_list |
> -# stable sort by device bus IDs and then by CHPIDs => grouped by CHPIDs
> -# (sorting only works since keys are fixed no. of digits with leading zeros!)
> -sort -s -k 1,1 -k 2,2 |
> -#cat ; exit # move at desired line and uncomment to see intermediate output
> -search_groups
> diff --git a/scripts/mk-images b/scripts/mk-images
> index eaf6270..92121b9 100755
> --- a/scripts/mk-images
> +++ b/scripts/mk-images
> @@ -605,6 +605,13 @@ makeinitrd() {
> instbin $IMGPATH /usr/sbin/$cmd $MBD_DIR /sbin/$cmd
> done
>
> + # lsznet requirements
> + mkdir -p $MBD_DIR/lib/s390-tools
> + for lsznetbin in lsznet.raw znetcontrolunits ; do
> + target="/lib/s390-tools/$lsznetbin"
> + instbin $IMGPATH $target $MBD_DIR $target
> + done
> +
> # required for lsznet
> instbin $IMGPATH /usr/bin/sort $MBD_DIR /sbin/sort
>
> @@ -648,8 +655,6 @@ makeinitrd() {
> else
> instbin $IMGPATH ${LOADERBINDIR##$IMGPATH}/shutdown $MBD_DIR /sbin/shutdown
> instbin $IMGPATH /usr/lib/anaconda-runtime/loader/linuxrc.s390 $MBD_DIR /sbin/init
> - instbin $IMGPATH /usr/lib/anaconda-runtime/loader/lsznet.raw $MBD_DIR /sbin/lsznet
> - instbin $IMGPATH /usr/lib/anaconda-runtime/loader/controlunits.sh $MBD_DIR /sbin/controlunits
> instbin $IMGPATH /usr/sbin/dasdfmt $MBD_DIR /sbin/dasdfmt
> fi
>
> diff --git a/scripts/upd-instroot b/scripts/upd-instroot
> index a6c65ee..ec57f31 100755
> --- a/scripts/upd-instroot
> +++ b/scripts/upd-instroot
> @@ -711,6 +711,8 @@ bin/tar
> bin/uname
> bin/vi
> lib/modules/ibm
> +lib/s390-tools/lsznet.raw
> +lib/s390-tools/znetcontrolunits
> lib/security
> sbin/arp
> sbin/cmsfscat

Steffen

Linux on System z Development

IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294


_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 

Thread Tools




All times are GMT. The time now is 09:18 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright ©2007 - 2008, www.linux-archive.org