Compare commits

..

No commits in common. "c8" and "imports/c9-beta/powerpc-utils-1.3.10-5.el9" have entirely different histories.

10 changed files with 537 additions and 443 deletions

1
.powerpc-utils.metadata Normal file
View File

@ -0,0 +1 @@
4596fced545f3c751ff2665663baaed0db7ab7ce SOURCES/powerpc-utils-1.3.10.tar.gz

View File

@ -1,84 +0,0 @@
commit 73ba26c1240a25e7699449e82cfc09dad10fed80
Author: Sathvika Vasireddy <sv@linux.ibm.com>
Date: Fri Dec 9 15:26:46 2022 +0530
lparstat: Fix negative values seen while running lparstat with -E option
Negative values are seen while running lparstat with -E option.
This is because delta_purr value is less than delta_idle_purr.
Given that these values are read from different sources, a
small variation in the values is possible. So, in such cases,
round down delta_idle_purr to delta_purr.
Without this patch:
=====
System Configuration
type=Dedicated mode=Capped smt=8 lcpu=240 mem=67033290112 kB cpus=0
ent=240.00
---Actual--- -Normalized-
%busy %idle Frequency %busy %idle
------ ------ ------------- ------ ------
-0.03 100.02 3.93GHz[111%] 0.01 110.97
0.00 100.00 3.93GHz[111%] 0.01 110.99
-0.04 100.03 3.93GHz[111%] 0.01 110.98
0.06 99.95 3.93GHz[111%] 0.01 110.99
0.02 99.98 3.93GHz[111%] 0.01 110.99
=====
With this patch:
=====
System Configuration
type=Dedicated mode=Capped smt=8 lcpu=240 mem=67033290112 kB cpus=0
ent=240.00
---Actual--- -Normalized-
%busy %idle Frequency %busy %idle
------ ------ ------------- ------ ------
0.03 99.96 3.93GHz[111%] 0.01 110.98
0.00 100.00 3.93GHz[111%] 0.01 110.99
0.03 99.97 3.93GHz[111%] 0.01 110.99
0.00 100.00 3.93GHz[111%] 0.01 110.99
0.09 99.90 3.93GHz[111%] 0.01 110.99
=====
Reported-by: Shirisha Ganta <shirisha.ganta1@ibm.com>
Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/src/lparstat.c b/src/lparstat.c
index 31a4ee8..eebba1f 100644
--- a/src/lparstat.c
+++ b/src/lparstat.c
@@ -492,6 +492,15 @@ void get_cpu_util_purr(struct sysentry *unused_se, char *buf)
delta_purr = get_delta_value("purr");
delta_idle_purr = get_delta_value("idle_purr");
+ /*
+ * Given that these values are read from different
+ * sources (purr from lparcfg and idle_purr from sysfs),
+ * a small variation in the values is possible.
+ * In such cases, round down delta_idle_purr to delta_purr.
+ */
+ if (delta_idle_purr > delta_purr)
+ delta_idle_purr = delta_purr;
+
physc = (delta_purr - delta_idle_purr) / delta_tb;
physc *= 100.00;
@@ -507,6 +516,15 @@ void get_cpu_idle_purr(struct sysentry *unused_se, char *buf)
delta_purr = get_delta_value("purr");
delta_idle_purr = get_delta_value("idle_purr");
+ /*
+ * Given that these values are read from different
+ * sources (purr from lparcfg and idle_purr from sysfs),
+ * a small variation in the values is possible.
+ * In such cases, round down delta_idle_purr to delta_purr.
+ */
+ if (delta_idle_purr > delta_purr)
+ delta_idle_purr = delta_purr;
+
physc = (delta_purr - delta_idle_purr) / delta_tb;
idle = (delta_purr / delta_tb) - physc;
idle *= 100.00;

View File

@ -1,46 +0,0 @@
commit dee15756bcb287ccf39a904be07c90107b13844b
Author: Laurent Dufour <ldufour@linux.ibm.com>
Date: Wed May 3 10:50:15 2023 +0200
lparstat: Fix offline threads uninitialized entries
When some threads are offline, lparstat -E is failing like that:
$ ppc64_cpu --info # CPU 20 is offline
Core 0: 0* 1* 2* 3* 4* 5* 6* 7*
Core 1: 8* 9* 10* 11* 12* 13* 14* 15*
Core 2: 16* 17* 18* 19* 20 21* 22* 23*
Core 3: 24* 25* 26* 27* 28* 29* 30* 31*
Core 4: 32* 33* 34* 35* 36* 37* 38* 39*
Core 5: 40* 41* 42* 43* 44* 45* 46* 47*
$ lparstat -E
Failed to read /sys/devices/system/cpu/cpu0/spurr
The message is complaining about CPU0 but the real issue is that in
parse_sysfs_values() the test cpu_sysfs_fds[i].spurr >= 0 is valid even if
the entry has not been initialized (cpu_sysfs_fds is alloc cleared). So
if the number of threads online seen in assign_cpu_sysfs_fds is lower than
threads_in_system, the loop in parse_sysfs_values() will read uninitialized
entry, where .cpu=0.
To prevent that, unset entries in the cpu_sysfs_fds should have the spurr
fd set to -1.
Signed-off-by: Laurent Dufour <ldufour@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/src/lparstat.c b/src/lparstat.c
index a9e7bce..d2fdb3f 100644
--- a/src/lparstat.c
+++ b/src/lparstat.c
@@ -163,6 +163,10 @@ static int assign_cpu_sysfs_fds(int threads_in_system)
cpu_idx++;
}
+ /* Mark extra slots for offline threads unset, see parse_sysfs_values */
+ for (; cpu_idx < threads_in_system; cpu_idx++)
+ cpu_sysfs_fds[cpu_idx].spurr = -1;
+
return 0;
error:
fprintf(stderr, "Failed to open %s: %s\n",

View File

@ -1,93 +0,0 @@
commit b2672fa3d462217ccd057a2cd307af2448e78757
Author: Laurent Dufour <ldufour@linux.ibm.com>
Date: Wed May 3 10:50:14 2023 +0200
lparstat: report mixed SMT state
when SMT state is mixed like this one (CPU 4 is offline):
$ ppc64_cpu --info
Core 0: 0* 1* 2* 3* 4 5* 6* 7*
Core 1: 8* 9* 10* 11* 12* 13* 14* 15*
Core 2: 16* 17* 18* 19* 20* 21* 22* 23*
Core 3: 24* 25* 26* 27* 28* 29* 30* 31*
Core 4: 32* 33* 34* 35* 36* 37* 38* 39*
Core 5: 40* 41* 42* 43* 44* 45* 46* 47*
$ ppc64_cpu --smt
SMT=7: 0
SMT=8: 1-5
ppc64_cpu --smt is handling that nicely but lparstat failed reporting the
SMT state:
$ /usr/sbin/lparstat
Failed to get smt state
System Configuration
type=Dedicated mode=Capped smt=Capped lcpu=6 mem=65969728 kB cpus=0 ent=6.00
%user %sys %wait %idle physc %entc lbusy app vcsw phint
----- ----- ----- ----- ----- ----- ----- ----- ----- -----
0.02 0.01 0.00 99.97 3.41 56.83 0.02 0.00 4061778 156
Makes lparstat reporting "smt=mixed" in that case.
__do_smt is now returning 0 when the SMT state is mixed instead of -1 which
is also reported when an error is detected.
This doesn't change the call made by ppc64_cpu which is using
print_smt_state=true and so is expecting a returned value equal to 0 or -1.
With that patch applied, lparstat print that in the above case:
$lparstat
System Configuration
type=Dedicated mode=Capped smt=Mixed lcpu=6 mem=65969728 kB cpus=0 ent=6.00
%user %sys %wait %idle physc %entc lbusy app vcsw phint
----- ----- ----- ----- ----- ----- ----- ----- ----- -----
0.01 0.01 0.00 99.97 3.43 57.17 0.02 0.00 4105654 156
Signed-off-by: Laurent Dufour <ldufour@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/src/common/cpu_info_helpers.c b/src/common/cpu_info_helpers.c
index 925f220..c05d96d 100644
--- a/src/common/cpu_info_helpers.c
+++ b/src/common/cpu_info_helpers.c
@@ -245,7 +245,7 @@ int __do_smt(bool numeric, int cpus_in_system, int threads_per_cpu,
if (smt_state == 0)
smt_state = thread + 1;
else if (smt_state > 0)
- smt_state = -1; /* mix of SMT modes */
+ smt_state = 0; /* mix of SMT modes */
}
}
@@ -257,7 +257,7 @@ int __do_smt(bool numeric, int cpus_in_system, int threads_per_cpu,
printf("SMT=1\n");
else
printf("SMT is off\n");
- } else if (smt_state == -1) {
+ } else if (smt_state == 0) {
for (thread = 0; thread < threads_per_cpu; thread++) {
if (CPU_COUNT_S(cpu_state_size,
cpu_states[thread])) {
diff --git a/src/lparstat.c b/src/lparstat.c
index eebba1f..a9e7bce 100644
--- a/src/lparstat.c
+++ b/src/lparstat.c
@@ -884,13 +884,15 @@ void get_smt_mode(struct sysentry *se, char *buf)
}
smt_state = parse_smt_state();
- if (smt_state < 0) {
+ if (smt_state == -1) {
fprintf(stderr, "Failed to get smt state\n");
return;
}
if (smt_state == 1)
sprintf(buf, "Off");
+ else if (smt_state == 0)
+ sprintf(buf, "Mixed");
else
sprintf(buf, "%d", smt_state);
}

View File

@ -0,0 +1,110 @@
commit 2fbd7c1ff428e534d80f60e03501d625ab594eca
Author: Wen Xiong <wenxiong@linux.ibm.com>
Date: Wed Jun 15 13:05:51 2022 -0500
ofpathname: Fix several issues in nvmf boot/install support
This patch fixes several issues in boot/install over nvme-over-fc
device support.
- change cntlid to ffff
- add devnisd from sysfs
- add subsysnqn
Signed-off-by: Wen Xiong <wenxiong@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/scripts/ofpathname b/scripts/ofpathname
index b1d6b09..33d7702 100755
--- a/scripts/ofpathname
+++ b/scripts/ofpathname
@@ -773,8 +773,7 @@ l2of_nvmf()
t_wwpn="${t_wwpn#0x}"
t_wwpn="${t_wwpn%,*}"
nqn=`$CAT $PWD/subsysnqn`
- cntlid_dec=`$CAT $PWD/cntlid`
- cntlid=`echo "obase=16; $cntlid_dec" |bc`
+ cntlid=`echo ffff`
if [[ -n $h_wwpn ]]; then
for f in `$FIND /sys/devices -name "port_name"`; do
sys_wwpn=`$CAT $f 2>/dev/null`
@@ -808,6 +807,9 @@ l2of_nvmf()
if [[ ${#res} = 0 ]]; then
OF_PATH=""
else
+ goto_dir $res
+ devnsid=`$CAT $PWD/nsid | tr -d '\000'`
+ devnsid=`echo "obase=16; $devnsid" |bc`
OF_PATH="$OF_PATH/namespace@$devnsid"
fi
fi
@@ -818,6 +820,8 @@ l2of_nvmf()
if [[ ${#res} = 0 ]]; then
OF_PATH=""
else
+ goto_dir $res
+ devpart=`$CAT $PWD/partition | tr -d '\000'`
OF_PATH="${OF_PATH}:${devpart}"
fi
fi
@@ -1826,8 +1830,7 @@ of2l_nvmf()
ctrl_name=`echo $DEVNAME | cut -d "/" -f 5`
OF_WWPN=${ctrl_name%,*}
OF_WWPN=${OF_WWPN#*@}
- of_cntlid=${ctrl_name%%:*}
- of_cntlid=${of_cntlid#*,}
+ OF_NQN=`echo $ctrl_name | cut -d "=" -f 2`
# set partition number only if ':' is present
case "${nsid_part}" in
*:*)
@@ -1835,6 +1838,7 @@ of2l_nvmf()
;;
esac
local dir
+ local found=0
for dir in `$FIND /sys/devices/virtual/nvme-fabrics -name "nvme[0-9]*"`; do
cd $dir
@@ -1844,10 +1848,9 @@ of2l_nvmf()
t_wwpn="${t_wwpn%,*}"
h_wwpn=`$CAT $PWD/address | cut -f 5 -d "-"`
h_wwpn="${h_wwpn#0x}"
- cntlid_dec=`$CAT $PWD/cntlid 2>/dev/null`
- cntlid=`echo "obase=16; $cntlid_dec" |bc`
+ nqn=`$CAT $PWD/subsysnqn`
if [[ $t_wwpn = $OF_WWPN ]] && \
- [[ $cntlid == $of_cntlid ]]; then
+ [[ $nqn == $OF_NQN ]]; then
for f in `$FIND /sys/devices -name "port_name"`; do
sys_wwpn=`$CAT $f 2>/dev/null`
sys_wwpn="${sys_wwpn#0x}"
@@ -1871,14 +1874,23 @@ of2l_nvmf()
fi
fi
done
+
if [[ -n $LOGICAL_DEVNAME ]] && \
[[ -n $nsid ]]; then
- res=`$FIND /sys/devices/virtual -name ${LOGICAL_DEVNAME}n${nsid}`
- if [[ ${#res} = 0 ]]; then
- LOGICAL_DEVNAME=''
- else
- LOGICAL_DEVNAME="${LOGICAL_DEVNAME}n${nsid}"
- fi
+ for dir in `$FIND /sys/block -name "${LOGICAL_DEVNAME}n[0-9]*"`; do
+ cd $dir
+
+ local devnsid=`$CAT ./nsid 2>/dev/null`
+ devnsid=`echo "obase=16; $devnsid" |bc`
+ if [[ $devnsid = $nsid ]]; then
+ found=1
+ LOGICAL_DEVNAME="${dir##*/}"
+ break
+ fi
+ done
+ if [[ $found -eq 0 ]]; then
+ LOGICAL_DEVNAME=""
+ fi
fi
if [[ -n $LOGICAL_DEVNAME ]] && \

View File

@ -0,0 +1,131 @@
commit c015807d5bef0ebdeaf99883793173f2b636e740
Author: Wen Xiong <wenxiong@linux.ibm.com>
Date: Wed Jun 15 13:05:18 2022 -0500
bootlist: Add install/boot support for nvmf devices
This patch adds the boot/installation support for nvme-over-fc devices.
It can set nvmf device as boot device in both of logical device name
and open firmware device path name.
Signed-off-by: Wen Xiong <wenxiong@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/scripts/bootlist b/scripts/bootlist
index b5cfbd9..1929f65 100755
--- a/scripts/bootlist
+++ b/scripts/bootlist
@@ -22,6 +22,7 @@
OFPATHNAME=/usr/sbin/ofpathname
NVRAM=/usr/sbin/nvram
+FIND=/usr/bin/find
PSERIES_PLATFORM=$(dirname $0)/pseries_platform
#
@@ -288,6 +289,63 @@ dm_to_part()
done
}
+# is_nvmf_device
+# Check to see if this is a nvmf device
+#
+is_nvmf_device()
+{
+ local res
+
+ res=`$FIND /sys/devices/virtual/nvme-fabrics -name $1 2>/dev/null`
+ if [[ ${#res} = 0 ]]; then
+ echo "no"
+ else
+ echo "yes"
+ fi
+}
+
+# get_link
+# return the directory path that a link points to.
+# The only parameter is the link name.
+#
+get_link()
+{
+ local ln_name=$1;
+
+ echo `ls -l $ln_name 2>/dev/null | awk -F"->" '{print $2}'`
+}
+
+add_nvmf()
+{
+ local DEVNAME=$1
+
+ ctrl_name=$DEVNAME
+ local startctr=$ctr
+
+ local dir
+ for dir in `$FIND /sys/devices/virtual/nvme-fabrics -name "$ctrl_name"`; do
+ cd $dir
+ link=`get_link "device"`
+ cd $link
+ for slave in $PWD/*; do
+ slavedev=${slave##*/}
+ if [[ "$slavedev" == nvme[0-9]* ]] ; then
+ cd $slave
+ res=`$FIND . -name "${ctrl_name}*"`
+ if [[ ${#res} != 0 ]]; then
+ LOGICAL_NAMES[$ctr]=${slavedev}
+ ctr=$[$ctr + 1]
+ fi
+ fi
+ done
+ done
+
+ if [[ "$startctr" = "$ctr" ]] ; then
+ LOGICAL_NAMES[$ctr]=$1
+ ctr=$[$ctr + 1]
+ fi
+}
+
add_logical()
{
local DEVNAME=$1
@@ -432,7 +490,30 @@ while [[ -n $1 ]]; do
exit -1
else
# add this element to the array
- add_logical $1
+ if [[ "$1" == *"dm-"* ]] ; then
+ add_logical $1
+ else
+ if [[ "$1" == *"nvme-of"* ]]; then
+ ctrl_name=`get_logical_device_name $1`
+ else
+ ctrl_name=$1
+ ctrl_name=${ctrl_name##*/}
+ fi
+ ctrl_name="${ctrl_name%n[0-9]*}"
+ is_nvmf=$(is_nvmf_device $ctrl_name)
+ if [[ $is_nvmf = "yes" ]]; then
+ if [[ "$1" == *"nvme-of"* ]]; then
+ master_of_path=$1
+ else
+ master_of_path=`get_of_device_name $1`
+ fi
+ namespace_base=${master_of_path##*/}
+ DEVTYPE="nvme-of"
+ add_nvmf $ctrl_name
+ else
+ add_logical $1
+ fi
+ fi
fi
shift
@@ -453,6 +534,9 @@ if [[ ${#LOGICAL_NAMES[*]} -ne 0 ]]; then
if [[ -z ${OF_DEVPATH[$ctr]} ]]; then
# See if this is an OF pathname
OF_DEVPATH[$ctr]=`get_of_device_name ${LOGICAL_NAMES[$ctr]}`
+ if [[ $DEVTYPE = "nvme-of" ]]; then
+ OF_DEVPATH[$ctr]=${OF_DEVPATH[$ctr]}/$namespace_base
+ fi
else
OF_DEVPATH[$ctr]=${LOGICAL_NAMES[$ctr]}
fi

View File

@ -1,93 +0,0 @@
commit f4c2b0d142f623e7dd28a5d685e446d41be75601
Author: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Date: Thu Aug 25 12:19:27 2022 +0530
lparstat: Fix display of mode for dedicated-donating partition
From the lparstat man page:
mode
Indicates whether the partition processor capacity is capped or uncapped
allowing it to consume idle cycles from the shared pool. Dedicated LPAR
is capped or donating.
However, on a dedicated partition, lparstat always displays the mode as
'Capped' today. Fix this by using 'DedDonMode' field from lparcfg for
determining the cycle donation status of a dedicated partition.
On a dedicated-donating partition:
$ grep -e shared -e DedDonMode -e capped /proc/powerpc/lparcfg
DedDonMode=1
capped=1
shared_processor_mode=0
Before this patch:
$ lparstat
System Configuration
type=Dedicated mode=Capped smt=8 lcpu=1 mem=3335424 kB cpus=0 ent=1.00
After this patch:
$ lparstat
System Configuration
type=Dedicated mode=Donating smt=8 lcpu=1 mem=3335424 kB cpus=0 ent=1.00
Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Reviewed-by: Nathan Lynch <nathanl@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/src/lparstat.c b/src/lparstat.c
index 0b30fc9..e998e8c 100644
--- a/src/lparstat.c
+++ b/src/lparstat.c
@@ -718,6 +718,16 @@ void get_capped_mode(struct sysentry *se, char *buf)
sprintf(buf, "%s", value);
}
+void get_dedicated_mode(struct sysentry *se, char *buf)
+{
+ const char *value = "Capped";
+
+ if (se->value[0] == '1')
+ value = "Donating";
+
+ sprintf(buf, "%s", value);
+}
+
void get_percent_entry(struct sysentry *se, char *buf)
{
float value;
@@ -1057,7 +1067,10 @@ void print_system_configuration(void)
get_sysdata("shared_processor_mode", &descr, value);
offset = sprintf(buf, "type=%s ", value);
sprintf(type, "%s", value);
- get_sysdata("capped", &descr, value);
+ if (!strcmp(value, "Dedicated"))
+ get_sysdata("DedDonMode", &descr, value);
+ else
+ get_sysdata("capped", &descr, value);
offset += sprintf(buf + offset, "mode=%s ", value);
get_sysdata("smt_state", &descr, value);
offset += sprintf(buf + offset, "smt=%s ", value);
diff --git a/src/lparstat.h b/src/lparstat.h
index 26ed4ba..b7c88e9 100644
--- a/src/lparstat.h
+++ b/src/lparstat.h
@@ -47,6 +47,7 @@ typedef struct cpu_sysfs_file_desc cpu_sysfs_fd;
extern void get_smt_state(struct sysentry *, char *);
extern void get_capped_mode(struct sysentry *, char *);
+extern void get_dedicated_mode(struct sysentry *, char *);
extern void get_memory_mode(struct sysentry *, char *);
extern void get_percent_entry(struct sysentry *, char *);
extern void get_phys_cpu_percentage(struct sysentry *, char *);
@@ -110,7 +111,8 @@ struct sysentry system_data[] = {
{.name = "DesVarCapWt",
.descr = "Desired Variable Capacity Weight"},
{.name = "DedDonMode",
- .descr = "Dedicated Donation Mode"},
+ .descr = "Dedicated Donation Mode",
+ .get = &get_dedicated_mode},
{.name = "partition_entitled_capacity",
.descr = "Partition Entitled Capacity"},
{.name = "system_active_processors",

View File

@ -0,0 +1,40 @@
commit 04e5c9646296e1f12048723bba4cee663c3f74ed
Author: Wen Xiong <wenxiong@linux.ibm.com>
Date: Thu Dec 1 05:22:37 2022 -0600
ofpathname: Handle nsid as hex in nvmf boot/install support
Didn't handle nsid correctly in nvmf boot/install support.
Need to handle it as hexadecimal number
For example,
/pci@800000020000132/fibre-channel@0,1/nvme-of/controller@50050768101935e5,ffff
:nqn=nqn.1986-03.com.ibm:nvme:2145.0000020420006CEA/namespace@26c
26c should be a hexadecimal number.
Signed-off-by: Wen Xiong <wenxiong@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/scripts/ofpathname b/scripts/ofpathname
index c576fb8..3abe4d1 100755
--- a/scripts/ofpathname
+++ b/scripts/ofpathname
@@ -809,7 +809,7 @@ l2of_nvmf()
else
goto_dir $res
devnsid=`$CAT $PWD/nsid | tr -d '\000'`
- devnsid=`echo "obase=16; $devnsid" |bc`
+ devnsid=$(printf "%x" $devnsid)
OF_PATH="$OF_PATH/namespace@$devnsid"
fi
fi
@@ -1886,7 +1886,7 @@ of2l_nvmf()
for dev_name in `$FIND /sys/block -name "${ana_name##*/}n[0-9]*"`; do
cd $dev_name
local devnsid=`$CAT ./nsid 2>/dev/null`
- devnsid=`echo "obase=16; $devnsid" |bc`
+ devnsid=$(printf "%x" $devnsid)
if [[ $devnsid = $nsid ]]; then
found=1
NS_ID="${dev_name##*n}"

View File

@ -0,0 +1,118 @@
commit 3847a1c25a640394c4afd2b8938ad21190bf5dbe
Author: Wen Xiong <wenxiong@linux.ibm.com>
Date: Fri Oct 28 09:20:38 2022 -0500
Support multiple dev paths for a nvmf boot device
This patch adds the support for multiple dev/of paths with a nvmf boot dev
# bootlist -m normal -o nvme1n4
nvme1n4
nvme3n4
nvme5n4
nvme6n4
# bootlist -m normal -o
nvme1n4
nvme3n4
nvme5n4
nvme6n4
# bootlist -m normal -r
/pci@800000020000017/fibre-channel@0/nvme-of/controller@50050768101935e5,ffff:nqn=nqn.1986-03.com.ibm:nvme:2145.0000020420006CEA/namespace@147
/pci@800000020000017/fibre-channel@0/nvme-of/controller@5005076810193675,ffff:nqn=nqn.1986-03.com.ibm:nvme:2145.0000020420006CEA/namespace@147
/pci@800000020000017/fibre-channel@0,1/nvme-of/controller@5005076810193675,ffff:nqn=nqn.1986-03.com.ibm:nvme:2145.0000020420006CEA/namespace@147
/pci@800000020000017/fibre-channel@0,1/nvme-of/controller@50050768101935e5,ffff:nqn=nqn.1986-03.com.ibm:nvme:2145.0000020420006CEA/namespace@147
Signed-off-by: Wen Xiong <wenxiong@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/scripts/bootlist b/scripts/bootlist
index 1929f65..cc8718e 100755
--- a/scripts/bootlist
+++ b/scripts/bootlist
@@ -327,16 +327,10 @@ add_nvmf()
cd $dir
link=`get_link "device"`
cd $link
- for slave in $PWD/*; do
- slavedev=${slave##*/}
- if [[ "$slavedev" == nvme[0-9]* ]] ; then
- cd $slave
- res=`$FIND . -name "${ctrl_name}*"`
- if [[ ${#res} != 0 ]]; then
- LOGICAL_NAMES[$ctr]=${slavedev}
- ctr=$[$ctr + 1]
- fi
- fi
+ for slave in `ls -d $PWD/nvme*`; do
+ slavedev=${slave##*/}
+ LOGICAL_NAMES[$ctr]=${slavedev}
+ ctr=$[$ctr + 1]
done
done
@@ -502,11 +496,17 @@ while [[ -n $1 ]]; do
ctrl_name="${ctrl_name%n[0-9]*}"
is_nvmf=$(is_nvmf_device $ctrl_name)
if [[ $is_nvmf = "yes" ]]; then
- if [[ "$1" == *"nvme-of"* ]]; then
- master_of_path=$1
- else
- master_of_path=`get_of_device_name $1`
- fi
+ if [[ "$1" == *"nvme-of"* ]]; then
+ master_of_path=$1
+ else
+ master_of_path=`get_of_device_name $1`
+ fi
+
+ if [[ -z $master_of_path ]]; then
+ echo "Device $1 does not appear to be valid." >&2
+ exit 1
+ fi
+
namespace_base=${master_of_path##*/}
DEVTYPE="nvme-of"
add_nvmf $ctrl_name
diff --git a/scripts/ofpathname b/scripts/ofpathname
index 33d7702..c576fb8 100755
--- a/scripts/ofpathname
+++ b/scripts/ofpathname
@@ -1875,19 +1875,28 @@ of2l_nvmf()
fi
done
+ local ana_dir
if [[ -n $LOGICAL_DEVNAME ]] && \
[[ -n $nsid ]]; then
- for dir in `$FIND /sys/block -name "${LOGICAL_DEVNAME}n[0-9]*"`; do
- cd $dir
-
- local devnsid=`$CAT ./nsid 2>/dev/null`
- devnsid=`echo "obase=16; $devnsid" |bc`
- if [[ $devnsid = $nsid ]]; then
- found=1
- LOGICAL_DEVNAME="${dir##*/}"
- break
- fi
+ for ana_dir in `$FIND /sys/devices/virtual/nvme-fabrics -name "$LOGICAL_DEVNAME"`; do
+ cd $ana_dir
+ link=`get_link "device"`
+ cd $link
+ for ana_name in `ls -d $PWD/nvme*`; do
+ for dev_name in `$FIND /sys/block -name "${ana_name##*/}n[0-9]*"`; do
+ cd $dev_name
+ local devnsid=`$CAT ./nsid 2>/dev/null`
+ devnsid=`echo "obase=16; $devnsid" |bc`
+ if [[ $devnsid = $nsid ]]; then
+ found=1
+ NS_ID="${dev_name##*n}"
+ LOGICAL_DEVNAME="${LOGICAL_DEVNAME}n${NS_ID}"
+ break
+ fi
+ done
+ done
done
+
if [[ $found -eq 0 ]]; then
LOGICAL_DEVNAME=""
fi

View File

@ -1,44 +1,40 @@
Name: powerpc-utils
Version: 1.3.10
Release: 6%{?dist}
Summary: PERL-based scripts for maintaining and servicing PowerPC systems
Name: powerpc-utils
Version: 1.3.10
Release: 5%{?dist}
Summary: PERL-based scripts for maintaining and servicing PowerPC systems
Group: System Environment/Base
License: GPLv2
URL: https://github.com/ibm-power-utilities/powerpc-utils
Source0: https://github.com/ibm-power-utilities/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz
Source1: nx-gzip.udev
Patch0: powerpc-utils-1.3.10-manpages.patch
Patch1: powerpc-utils-1.3.10-distro.patch
License: GPLv2
URL: https://github.com/ibm-power-utilities/powerpc-utils
Source0: https://github.com/ibm-power-utilities/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz
Source1: nx-gzip.udev
Patch0: powerpc-utils-1.3.10-manpages.patch
Patch1: powerpc-utils-1.3.10-distro.patch
# bz#2121470, Fix lsslot -c mem output when using 4GB LMB size
Patch3: powerpc-utils-b1b9e7-LMB_size_4GB.patch
Patch4: powerpc-utils-e1f1de-lmb_address_in_hexadecimal.patch
Patch5: powerpc-utils-fix_setting_primary_slave_across_reboots.patch
Patch6: powerpc-utils-f4c2b0-fix_display_of_mode_for_dedicated_donating_partition.patch
Patch3: powerpc-utils-b1b9e7-LMB_size_4GB.patch
Patch4: powerpc-utils-e1f1de-lmb_address_in_hexadecimal.patch
# bz#2110129, Add NVMf-FC boot support for Power - powerpc-utils
Patch5: powerpc-utils-c01580-add_NVMf-FC_boot_support_part1.patch
Patch6: powerpc-utils-2fbd7c-add_NVMf-FC_boot_support_part2.patch
Patch7: powerpc-utils-git3847a1-support_multiple_dev_paths_for_a_nvmf_boot_device.patch
Patch8: powerpc-utils-git04e5c9-handle_nsid_as_hex.patch
Patch9: powerpc-utils-fix_setting_primary_slave_across_reboots.patch
# lparstat: Fix-negative-values-seen-while-running-lpar
Patch10: powerpc-utils-1.3.10-lparstat-Fix-negative-values-seen-while-running-lpar.patch
# report-mixed-SMT-state
Patch11: powerpc-utils-1.3.10-lparstat-report-mixed-SMT-state.patch
# Fix-offline-threads-uninitialized-entries
Patch12: powerpc-utils-1.3.10-lparstat-Fix-offline-threads-uninitialized-entries.patch
ExclusiveArch: ppc %{power64}
ExclusiveArch: ppc %{power64}
BuildRequires: gcc
BuildRequires: make
BuildRequires: automake
BuildRequires: doxygen
BuildRequires: zlib-devel
BuildRequires: librtas-devel >= 1.4.0
BuildRequires: libservicelog-devel >= 1.0.1-2
BuildRequires: perl-generators
BuildRequires: systemd
BuildRequires: numactl-devel
BuildRequires: gcc
BuildRequires: make
BuildRequires: automake
BuildRequires: doxygen
BuildRequires: zlib-devel
BuildRequires: librtas-devel >= 1.4.0
BuildRequires: libservicelog-devel >= 1.0.1-2
BuildRequires: perl-generators
BuildRequires: systemd
BuildRequires: numactl-devel
# rtas_dump explicit dependency
Requires: perl(Data::Dumper)
Requires: %{name}-core = %{version}-%{release}
Requires: perl(Data::Dumper)
Requires: %{name}-core = %{version}-%{release}
%description
PERL-based scripts for maintaining and servicing PowerPC systems.
@ -51,13 +47,20 @@ Requires(preun): systemd
Requires(postun): systemd
Requires: kmod
Requires: which
Requires: gawk
Requires: bc
Requires: findutils
Requires: grep
Requires: sed
Requires: systemd-udev
Requires: coreutils
Requires: /usr/bin/awk
Requires: /usr/bin/basename
Requires: /usr/bin/bc
Requires: /usr/bin/cat
Requires: /usr/bin/cut
Requires: /usr/bin/echo
Requires: /usr/bin/find
Requires: /bin/grep
Requires: /usr/bin/head
Requires: /usr/bin/ls
Requires: /usr/bin/sed
Requires: /usr/bin/tr
Requires: /usr/bin/udevadm
%description core
Core utilities for maintaining and servicing PowerPC systems.
@ -66,7 +69,6 @@ Core utilities for maintaining and servicing PowerPC systems.
%prep
%autosetup -p1
%build
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
./autogen.sh
@ -87,7 +89,7 @@ rm -rf $RPM_BUILD_ROOT/usr/share/doc/packages/powerpc-utils
rm -f $RPM_BUILD_ROOT%{_pkgdocdir}/COPYING
# install udev rule for the nx-gzip accelerator
install -pDm 644 %{SOURCE1} %{buildroot}%{_udevrulesdir}/90-nx-gzip.rules
install -pDm 644 %{SOURCE1} %{buildroot}%{_udevrulesdir}/90-nx-gzip.rules
# remove init script and perl script. They are deprecated
rm -rf $RPM_BUILD_ROOT/etc/init.d/ibmvscsis.sh $RPM_BUILD_ROOT/usr/sbin/vscsisadmin
@ -203,121 +205,129 @@ systemctl enable hcn-init.service >/dev/null 2>&1 || :
%{_mandir}/man8/drmgr.8*
%{_mandir}/man8/lparnumascore.8*
%changelog
* Wed Jul 26 2023 Than Ngo <than@redhat.com> - 1.3.10-6
- Fix negative values seen while running lpar
- Fix lparstat error with mixed SMT state
Resolves: #2225135
* Mon Dec 12 2022 Than Ngo <than@redhat.com> - 1.3.10-5
- Resolves: #2125152, HNV bond fails to come up with sriov interface as active slave
* Sat Jun 17 2023 Than Ngo <than@redhat.com> - 1.3.10-5
- Resolves: #2207649, Add udev rule for the nx-gzip in to the core subpackage
* Thu Dec 08 2022 Than Ngo <than@redhat.com> - 1.3.10-4
- Resolves: #2150698, handle nsid of nvmf device as hexadecimal number
- Resolves: #2150697, setup multiple device path for a nvmf boot device
* Tue Apr 25 2023 Than Ngo <than@redhat.com> - 1.3.10-4
- Resolves: #2166871, lparstat showing incorrect mode in a dedicated-donating LPAR
* Thu Nov 03 2022 Than Ngo <than@redhat.com> - 1.3.10-3
- Resolves: #2111991, Add udev rule for the nx-gzip in to the core subpackage
- Resolves: #2121470, Fix lsslot -c mem output when using 4GB LMB size
- Resolves: #2110129, Add NVMf-FC boot support for Power
* Mon Nov 28 2022 Than Ngo <than@redhat.com> - 1.3.10-3
- Resolves: #2148878, HNV bond fails to come up with sriov interface as active slave
* Fri Oct 21 2022 Than Ngo <than@redhat.com> - 1.3.10-2
- Resolves: #2121481, Fix lsslot -c mem output when using 4GB LMB size
* Mon Jun 06 2022 Than Ngo <than@redhat.com> - 1.3.10-2
- Related: #2089106, install smt.state as config file
* Mon Jun 06 2022 Than Ngo <than@redhat.com> - 1.3.10-1
- Resolves: #2051330, Linux Hybrid Network Virtualization update
- Resolves: #2083469, smtstate --save command failed
- Resolves: #1920964, P10 Power Mode Reporting
- Resolves: #2050893, Linux Hybrid Network Virtualizatio
- Resolves: #2065169, bootloader fails to update boot order after OS install
- Resolves: #2071862, Fix NM HNV setting primary slave
- Resolves: #2089106, smtstate --save command failed
* Fri May 13 2022 Than Ngo <than@redhat.com> - 1.3.9-3
- Resolves: #2059459, add new DRC type description strings for latest PCIe slot types
- Resolves: #2078514, Fix NM HNV setting primary slave
- Resolves: #2083469, smtstate test failed as smtstate --save command failed
* Fri Jan 14 2022 Than Ngo <than@redhat.com> - 1.3.9-6
- Resolves: #2039201, santize devspec output of a newline if one is present
* Thu Dec 09 2021 Than Ngo <than@redhat.com> - 1.3.9-1
- Resolves: #2028690, rebase to 1.3.9
* Tue Dec 07 2021 Than Ngo <than@redhat.com> - 1.3.9-5
- Resolves: #2024038 - HNV interface fails to configure when added in lpar shutdown state
* Thu Dec 02 2021 Than Ngo <than@redhat.com> - 1.3.8-10
- Related: #2022225, increase release
* Thu Nov 11 2021 Than Ngo <than@redhat.com> - 1.3.9-4
- enable support vnic as backend for HNV interface
- fixed hexdump format
Resolves: #2022235
* Thu Nov 11 2021 Than Ngo <than@redhat.com> - 1.3.8-9
- Resolves: #2022225, enable support vnic as backend for HNV interfaces
* Wed Oct 20 2021 Than Ngo <than@redhat.com> - 1.3.9-3
- Resolves: #2014916, marked smt.state as %%ghost
* Thu Oct 07 2021 Than Ngo <than@redhat.com> - 1.3.8-8
- lsdevinfo: optimize criteria filtering
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 1.3.9-2
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Fri Jul 16 2021 Than Ngo <than@redhat.com> - 1.3.8-7
- Related: #1938420, Fix checking HCNID array size at boot time
* Mon Jul 19 2021 Than Ngo <than@redhat.com> - 1.3.9-1
- Resolves: #1873868, rebase to 1.3.9
* Thu Apr 01 2021 Than Ngo <than@redhat.com> - 1.3.8-6
- Resolves: #1935658, New lparstat -x option to report the security flavor
- Resolves: #1953818, Use od instead xxd
- Resolves: #1938420, rebase patch fix_boot-time_bonding_interface_cleanup_and_avoid_use_ifcfg
- Resolves: #1940358, ppc64_cpu --help does not list --version as an option
- Resolves: #1951068, take care of NUMA topology when removing memory (DLPAR)
* Fri Jun 11 2021 Than Ngo <than@redhat.com> - 1.3.8-9
- Resolves: #1937038, New lparstat -x option to report the security flavor
- Use od instead xxd
- rebase patch fix_boot-time_bonding_interface_cleanup_and_avoid_use_ifcfg
- ppc64_cpu --help does not list --version as an option
- take care of NUMA topology when removing memory (DLPAR)
* Wed Feb 03 2021 Than Ngo <than@redhat.com> - 1.3.8-5
- Resolves: #1924150, Fix boot-time bonding interface cleanup and avoid use ifcfg
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1.3.8-8
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Mon Dec 21 2020 Than Ngo <than@redhat.com> - 1.3.8-4
- Resolves: #1909526, additional patches to support Linux Hybrid Network Virtualization
- Resolves: #1909135, move commands that dont depend on perl to core subpackage
* Mon Feb 08 2021 Than Ngo <than@redhat.com> - 1.3.8-7
- updated hcnmgr manpage
* Tue Oct 06 2020 Than Ngo <than@redhat.com> - 1.3.8-3
- Resolves: #1868474, ofpathname: Use NVMe controller physical nsid
- Resolves: #1885532, sys_ident: Skip length field from search
* Mon Feb 08 2021 Than Ngo <than@redhat.com> - 1.3.8-6
- Fix boot-time bonding interface cleanup and avoid use ifcfg
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.8-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Tue Dec 22 2020 Than Ngo <than@redhat.com> - 1.3.8-4
- additional patches to support Linux Hybrid Network Virtualization
- move commands that dont depend on perl to core subpackage
- update hcnmgr patch
- sys_ident: Skip length field from search
- ofpathname: Use NVMe controller physical nsid
* Thu Oct 01 2020 Than Ngo <than@redhat.com> - 1.3.8-3
- add hcnmgr man page
* Thu Oct 01 2020 Than Ngo <than@redhat.com> - 1.3.8-2
- Related: #1853297, add missing hcnmgr manpage and Req on which
- clean up systemd service
* Thu Oct 01 2020 Than Ngo <than@redhat.com> - 1.3.8-1
- Resolves: #1853297, rebase to 1.3.8
- Resolves: #1802181, SR-IOV - Linux Hybrid Network Virtualization
- Resolves: #1844421, Include vcpustat
* Fri Sep 04 2020 Than Ngo <than@redhat.com> - 1.3.8-1
- update to 1.3.8
* Wed Jun 24 2020 Than Ngo <than@redhat.com> - 1.3.6-11
- Resolves: #1847604, ofpathname: failed to boot
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.7-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Fri Jun 19 2020 Than Ngo <than@redhat.com> - 1.3.6-10
- Resolves: #1848839, update lparstat man page with -E option
* Thu Jul 09 2020 Than Ngo <than@redhat.com> - 1.3.7-6
- Track and expose idle PURR and SPURR ticks
- ofpathname: speed up l2of_scsi()
- ofpathname: failed to boot
- update lparstat man page with -E option
- enable support for ibm,drc-info property
* Fri May 22 2020 Than Ngo <than@redhat.com> - 1.3.6-9
- Resolves: #1837751, ofpathname: speed up l2of_scsi()
* Sat Mar 28 2020 Than Ngo <than@redhat.com> - 1.3.7-5
- move drmgr in core to avoid pulling in Perl
* Fri May 15 2020 Than Ngo <than@redhat.com> - 1.3.6-8
- Related: #1783285, update the patches V4
* Mon Mar 09 2020 Than Ngo <than@redhat.com> - 1.3.7-4
- update_flash_nv: fixup null byte command substitution warning
- drmgr: Fix segfault when running 'drmgr -c pmig -h'
* Wed May 13 2020 Than Ngo <than@redhat.com> - 1.3.6-7
- Resolves: #1783285, Track and expose idle PURR and SPURR ticks
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.7-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Wed Mar 25 2020 Than Ngo <than@redhat.com> - 1.3.6-6
- Resolves: #1819566 - move drmgr in core to avoid pulling in Perl
- Resolves: #1806870 - ignored null byte in input
- Resolves: #1779197 - enable support for ibm,drc-info property
* Thu Dec 19 2019 Than Ngo <than@redhat.com> - 1.3.7-2
- add systemd service to set default system SMT mode
* Wed Dec 04 2019 Than Ngo <than@redhat.com> - 1.3.6-5
- Resolves: #1779257, Safe bootlist update
* Wed Dec 18 2019 Than Ngo <than@redhat.com> - 1.3.7-1
- update to 1.3.7
* Wed Jul 24 2019 Than Ngo <than@redhat.com> - 1.3.6-4
- Resolves: #1719372 - wrong disk gets booted after installation
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.6-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Fri Jun 07 2019 Than Ngo <than@redhat.com> - 1.3.6-3
- Resolves: #1718254, improve handling of errors from subsidiary scripts
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Wed Jun 05 2019 Than Ngo <than@redhat.com> - 1.3.6-2
- Resolves: #1716425, lparstat and update_flash fixes
* Wed Jan 16 2019 Than Ngo <than@redhat.com> - 1.3.6-1
- update to 1.3.6
* Mon Apr 01 2019 Than Ngo <than@redhat.com> - 1.3.6-1
- Resolves: #1666618, rebase to 1.3.6
* Fri Nov 30 2018 Than Ngo <than@redhat.com> - 1.3.5-4
- install missing pseries_platform and update_flash_nv man pages
* Tue Dec 04 2018 Than Ngo <than@redhat.com> - 1.3.5-5
- Related: #1655903, add missing man pages
* Thu Nov 29 2018 Than Ngo <than@redhat.com> - 1.3.5-3
- added pseries_platform and update_flash_nv man pages
* Tue Dec 04 2018 Than Ngo <than@redhat.com> - 1.3.5-4
- Resolves: #1655903, lsslot -c mem is not displaying any information
* Tue Nov 27 2018 Than Ngo <than@redhat.com> - 1.3.5-3
- Resolves: #1653621, fix to display logical name using bootlist -o option
* Sat Nov 10 2018 Than Ngo <than@redhat.com> - 1.3.5-2
- fix metadate issue detected by rpmdiff
Related: #1608172
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Mon Jun 18 2018 Dan Horák <dan[at]danny.cz> - 1.3.5-1
- Rebased to 1.3.5