powerpc-utils/powerpc-utils-1.3.8-4b2d10942e2d964ecc1fe58c9460c34993ff10be.patch
DistroBaker 63fa0e2f5d Merged update from upstream sources
This is an automated DistroBaker update from upstream sources.
If you do not know what this is about or would like to opt out,
contact the OSCI team.

Source: https://src.fedoraproject.org/rpms/powerpc-utils.git#f30d899cbaa5b5b3ef786cf680814bf2621d4193
2020-12-22 11:44:11 +00:00

163 lines
5.3 KiB
Diff

commit 4b2d10942e2d964ecc1fe58c9460c34993ff10be
Author: Mingming Cao <mmc@linux.vnet.ibm.com>
Date: Thu Nov 19 21:38:24 2020 -0800
Disable vnic as backup vdevice for migratable SR_IOV
In version 1.0 we only allow configure ibmveth as
migritable SR_IOV backup vdevice. When ibmvnic become
more stablized we will enable vnic as backup.
Signed-off-by: Mingming Cao <mmc@linux.vnet.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/scripts/hcnmgr b/scripts/hcnmgr
index 1135a85..0c09d8c 100644
--- a/scripts/hcnmgr
+++ b/scripts/hcnmgr
@@ -37,6 +37,8 @@ DRC_INDEX=0
DEVNAME=""
MODE=""
PHYSLOC=""
+VIO_TYPE=""
+VNIC_SPT=""
# Usage statements
usage() {
@@ -80,6 +82,7 @@ E_EPERM=1 # Platform not supported
E_BUSY=16 # Device busy
E_ENODEV=19 # Failed get device name
E_NOMODULE=5 # Failed to load bonding module
+E_INVAL_DEV=6 # Vdevice not supported
E_ENETUNREACH=101 # No network management command nmcli
#
@@ -93,19 +96,22 @@ err() {
case $eno in
"$E_INVAL")
- e_mesg="$HCNCMD:error code $eno, hybrid network ID HCNID does not exist"
+ e_mesg="$HCNCMD:error code $eno, Hybrid network ID HCNID does not exist"
+ ;;
+ "$E_INVAL_DEV")
+ e_mesg="$HCNCMD:error code $eno, Backing vdevice not supported"
;;
"$E_EPERM")
- e_mesg="$HCNCMD:error code $eno, platform is not supported"
+ e_mesg="$HCNCMD:error code $eno, Platform is not supported"
;;
"$E_BUSY")
- e_mesg="$HCNCMD:error code $eno, network device busy, no backup device"
+ e_mesg="$HCNCMD:error code $eno, Network device busy, no backup device"
;;
"$E_ENODEV")
- e_mesg="$HCNCMD:error code $eno, failed to find device or get device name"
+ e_mesg="$HCNCMD:error code $eno, Failed to find device or get device name"
;;
"$E_NOMODULE")
- e_mesg="$HCNCMD:error code $eno, failed to load bonding module"
+ e_mesg="$HCNCMD:error code $eno, Failed to load bonding module"
;;
"$E_ENETUNREACH")
e_mesg="$HCNCMD:error code $eno, nmcli command not installed"
@@ -147,6 +153,7 @@ hcnlog() {
esac
}
+
# function search_dev:
# Given DRX_INDEX, Search for device-tree, looking for migratable SR_IOV
# backend vnic or ibmveth device to configure hybrid network
@@ -171,6 +178,7 @@ search_dev() {
if [ -e "$dev"/ibm,hcn-id ] && get_dev_hcn "$dev"; then
hcnlog DEBUG "search_dev: found device "
hcnlog DEBUG "search_dev: exit"
+ VIO_TYPE="SRIOV"
return $E_SUCCESS
fi
done
@@ -184,6 +192,7 @@ search_dev() {
if [[ $index == "$1" ]]; then
hcnlog DEBUG "found matching drc_index $index in $dev"
if [ -e "$dev"/ibm,hcn-id ] && get_dev_hcn "$dev"; then
+ VIO_TYPE="VNIC"
hcnlog DEBUG "search_dev: found device "
hcnlog DEBUG "search_dev: exit"
return $E_SUCCESS
@@ -201,6 +210,7 @@ search_dev() {
if [ -e "$dev"/ibm,hcn-id ] && get_dev_hcn "$dev"; then
hcnlog DEBUG "search_dev: found device "
hcnlog DEBUG "search_dev: exit"
+ VIO_TYPE="L_LAN"
return $E_SUCCESS
fi
fi
@@ -340,6 +350,10 @@ do_config_vdevice() {
cfghcn() {
hcnlog DEBUG "cfghcn: enter $1"
search_dev "$1"
+ if [[ $VIO_TYPE == "VNIC" && $VNIC_SPT == "OFF" ]]; then
+ hcnlog WARN "Backing device $VIO_TYPE for Migratable VF is not supported in hcnmgr version $VERSION"
+ err $E_INVAL_DEV
+ fi
do_config_vdevice
return $E_SUCCESS
}
@@ -512,23 +526,10 @@ scanhcn() {
done
done
- hcnlog DEBUG "search vnic device with ibm,hcn-id propterty......"
+ hcnlog DEBUG "search ibmveth device with ibm,hcn-id propterty......"
# Look at every vNIC device with ibm,hcn-id propterty
# join or create bond for this hcnid if not exist, add vnic device as
# slave for this bond accosiated with hcnid, if not already to
- for dev in "$DT_PATH"/vdevice/vnic*; do
- [ -d "$dev" ] || continue
- if [ -e "$dev"/ibm,hcn-id ] && get_dev_hcn "$dev"; then
- hcnlog DEBUG "scanhcn found vnic device with hcnid "
- hcnlog INFO "scanhcn configure HCN and vnic device"
- do_config_vdevice
- fi
- done
-
- # Look at every veth device with ibm,hcn-id propterty
- # join or create bond for this hcnid if not exist, add ibmveth device as
- # slave for this bond accosiated with hcnid, if not already to
- hcnlog DEBUG "search ibmveth device with ibm,hcn-id propterty......"
for dev in "$DT_PATH"/vdevice/l-lan*; do
[ -d "$dev" ] || continue
if [ -e "$dev"/ibm,hcn-id ] && get_dev_hcn "$dev"; then
@@ -538,6 +539,21 @@ scanhcn() {
fi
done
+ if [[ $VNIC_SPT != "OFF" ]]; then
+ hcnlog DEBUG "search vnic device with ibm,hcn-id propterty......"
+ # Look at every vNIC device with ibm,hcn-id propterty
+ # join or create bond for this hcnid if not exist, add vnic device as
+ # slave for this bond accosiated with hcnid, if not already to
+ for dev in "$DT_PATH"/vdevice/vnic*; do
+ [ -d "$dev" ] || continue
+ if [ -e "$dev"/ibm,hcn-id ] && get_dev_hcn "$dev"; then
+ hcnlog DEBUG "scanhcn found vnic device with hcnid "
+ hcnlog INFO "scanhcn configure HCN and vnic device"
+ do_config_vdevice
+ fi
+ done
+ fi
+
# Next clean up dead connections left from orgitinal LPAR after inactive miration
# list of all HCN ids
@@ -583,6 +599,9 @@ fi
if ! nmcli --version >/dev/null 2>&1; then
err $E_ENETUNREACH
fi
+if [[ $VERSION == "1.0" ]]; then
+ VNIC_SPT="OFF"
+fi
#Validate bonding module is loaded
if ! lsmod | grep -q bonding; then