Compare commits

...

No commits in common. "c8" and "c9-beta" have entirely different histories.
c8 ... c9-beta

22 changed files with 2061 additions and 373 deletions

View File

@ -0,0 +1,171 @@
From edf7ee0e03e60140bcbe34ec458e1361678a5dd2 Mon Sep 17 00:00:00 2001
From: Wen Xiong <wenxiong@linux.ibm.com>
Date: Thu, 25 Jan 2024 23:49:21 -0500
Subject: [PATCH] scripts/bootlist: Support multiple dev paths for a nvme boot
device
Multipath splitter drawer is going to support two physical paths for
each nvme device.
This patch adds the support for multiple device/of paths for a nvme boot
device.
For example,
U50EE.001.WZS000E-P3-C1-R1 U.2 PCI-E capable, Rev 4, 4x lanes with 2x
lanes connected 0581:10:00.0
U50EE.001.WZS000E-P3-C1-R2 U.2 PCI-E capable, Rev 4, 4x lanes with 2x
lanes connected 0521:10:00.0
nvme-subsys1 -
NQN=nqn.1994-11.com.samsung:nvme:PM1735a:2.5-inch:S6RUNE0R900042
hostnqn=nqn.2014-08.org.nvmexpress:uuid:3c6c1ace-e9b1-4a17-8ff0-6a84d3dd15f4
iopolicy=numa
\
+- nvme1 pcie 0523:20:00.0 live
+- nvme0 pcie 0583:20:00.0 live
Node Generic SN Model
Namespace Usage Format FW Rev
--------------------- --------------------- --------------------
---------------------------------------- ----------
-------------------------- ---------------- --------
/dev/nvme1n1 /dev/ng1n1 S6RUNE0R900042 1.6TB
NVMe Gen4 U.2 SSD III 0x1 1.60 TB / 1.60 TB
4 KiB + 0 B REV.SN66
nvme0
nvme1n1
/pci@800000020000583/pci1014,6bc@0/namespace@1
/pci@800000020000523/pci1014,6bc@0/namespace@1
Signed-off-by: Wen Xiong <wenxiong@linux.ibm.com>
---
scripts/bootlist | 80 +++++++++++++++++++++++++++++++++++++++---------
1 file changed, 66 insertions(+), 14 deletions(-)
diff --git a/scripts/bootlist b/scripts/bootlist
index cc8718e..dcb5c00 100755
--- a/scripts/bootlist
+++ b/scripts/bootlist
@@ -304,6 +304,21 @@ is_nvmf_device()
fi
}
+# is_multipath_nvme_device
+# Check to see if this is a multipath nvme device
+#
+is_multipath_nvme_device()
+{
+ local res
+
+ res=`$FIND /sys/devices/virtual/nvme-subsystem -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.
@@ -340,6 +355,32 @@ add_nvmf()
fi
}
+add_multipath_nvme()
+{
+ local DEVNAME=$1
+
+ ctrl_name=$DEVNAME
+ local startctr=$ctr
+
+ local dir
+ for dir in `$FIND /sys/devices/virtual/nvme-subsystem -name "$ctrl_name"`; do
+ cd $dir
+ cd ..
+ for slave in `ls -d $PWD/nvme*`; do
+ slavedev=${slave##*/}
+ if [[ "$slavedev" != *nvme*n* ]] ; then
+ LOGICAL_NAMES[$ctr]=${slavedev}
+ ctr=$[$ctr + 1]
+ fi
+ done
+ done
+
+ if [[ "$startctr" = "$ctr" ]] ; then
+ LOGICAL_NAMES[$ctr]=$1
+ ctr=$[$ctr + 1]
+ fi
+}
+
add_logical()
{
local DEVNAME=$1
@@ -487,31 +528,40 @@ while [[ -n $1 ]]; do
if [[ "$1" == *"dm-"* ]] ; then
add_logical $1
else
- if [[ "$1" == *"nvme-of"* ]]; then
+ if [[ "$1" == *"nvme-of"* ]] || [[ "$1" == *"namespace"* ]]; then
ctrl_name=`get_logical_device_name $1`
+ master_of_path=$1
else
ctrl_name=$1
ctrl_name=${ctrl_name##*/}
+ 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
+
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 [[ -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
else
- add_logical $1
+ is_multipath_nvme=$(is_multipath_nvme_device $ctrl_name)
+ if [[ $is_multipath_nvme = "yes" ]]; then
+ if [[ "$master_of_path" == *namespace* ]] ; then
+ namespace_base=${master_of_path##*/}
+ else
+ echo "Device $1 does not appear to be valid." >&2
+ exit 1
+ fi
+ DEVTYPE="multi-nvme"
+ add_multipath_nvme $ctrl_name
+ else
+ add_logical $1
+ fi
fi
fi
fi
@@ -534,8 +584,10 @@ 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
+ if [[ $DEVTYPE = "nvme-of" ]] || [[ $DEVTYPE = "multi-nvme" ]]; then
OF_DEVPATH[$ctr]=${OF_DEVPATH[$ctr]}/$namespace_base
+ else
+ OF_DEVPATH[$ctr]=${OF_DEVPATH[$ctr]}
fi
else
OF_DEVPATH[$ctr]=${LOGICAL_NAMES[$ctr]}
--
2.35.3

1
SOURCES/nx-gzip.udev Normal file
View File

@ -0,0 +1 @@
KERNEL=="nx-gzip", MODE="0666"

View File

@ -0,0 +1,46 @@
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

@ -0,0 +1,93 @@
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

@ -1,265 +1,26 @@
diff -up powerpc-utils-1.3.5/man/pseries_platform.8.me powerpc-utils-1.3.5/man/pseries_platform.8
--- powerpc-utils-1.3.5/man/pseries_platform.8.me 2018-11-29 16:50:07.601034729 +0100
+++ powerpc-utils-1.3.5/man/pseries_platform.8 2018-11-29 16:50:07.601034729 +0100
@@ -0,0 +1,11 @@
+.\"
+.\" Copyright (C) 2015 International Business Machines
+.\"
+.TH pseries_platform 8 "September 2015" Linux "Linux on Power Service Tools"
+.SH NAME
+pseries_platform \- identify the platform and display the name of platform
+.SH SYNOPSIS
+.B /usr/bin/pseries_platform
+
+.SH DESCRIPTION
+The \fIpseries_platform\fR tool can identify the platform and display the name of platform.
diff -up powerpc-utils-1.2.15/man/lsdevinfo.8.man powerpc-utils-1.2.15/man/lsdevinfo.8
--- powerpc-utils-1.2.15/man/lsdevinfo.8.man 2013-01-16 15:31:13.886591137 +0100
+++ powerpc-utils-1.2.15/man/lsdevinfo.8 2013-01-16 15:31:13.886591137 +0100
@@ -0,0 +1,39 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36.
+.TH LSDEVINFO "8" "October 2010" "Linux" "Linux on Power Service Tools"
+.SH NAME
+lsdevinfo - information on Virtual devices
+
+.SH SYNOPSIS
+.B lsdevinfo
+[\fI-q criteria\fR] [\fI-F format\fR] [\fI-R\fR] [\fI-c\fR] [\fI-h\fR]
+
+.SH DESCRIPTION
+Provide information on Virtual devices
+.PP
+
+.SH OPTIONS
+.TP
+\fB\-q\fR criteria
+Specifies a criteria to select which devices are to be displayed.
+.TP
+\fB\-F\fR format
+Specifies the set of attributes to be displayed.
+.TP
+\fB\-R\fR
+Recursively display children of selected devices
+.TP
+\fB\-c\fR
+Display output as a comma separated list for each device.
+.TP
+\fB\-V\fR
+Display version information and exit
+.TP
+\fB\-h\fR
+Display help information and exit
+
+.SH AUTHOR
+.B lsdevinfo
+was written by Santiago Leon <sleon@ec.ibm.com>.
+.PP
+This manual page was written by Roman Rakus <rrakus@redhat.com>.
+
diff -up powerpc-utils-1.2.15/man/lsprop.8.man powerpc-utils-1.2.15/man/lsprop.8
--- powerpc-utils-1.2.15/man/lsprop.8.man 2013-01-16 15:31:13.886591137 +0100
+++ powerpc-utils-1.2.15/man/lsprop.8 2013-01-16 15:31:13.886591137 +0100
@@ -0,0 +1,42 @@
+.TH LSPROP "8" "Sep 2010" "Linux" "Linux on Power Service Tools"
+.SH NAME
+lsprop \- list properties
+.SH SYNOPSIS
+.B lsprop
+.RB [ \-R ]
+.RB [ \-m
+.IR max-bytes ]
+.RB [ \-w
+.IR num-words ]
+.RI [ FILE .\|.\|.]
+.SH OVERVIEW
+.B lsprop
+program is a member of the ppc64-utils suite of utils.
+Use it to list properties
+
+.SH DESCRIPTION
+.B lsprop
+displays properties for
+.IR FILE s
+like Open Firmware
+.I .properties
+word.
+If the
+.I FILE
+is not set, the current directory is used.
+
+.SH OPTIONS
+.TP
+.B \-R
+Process recursively
+.TP
+.BI \-m " max-bytes"
+Read only first
+.I max-bytes
+bytes from the
+.IR FILE s
+.TP
+.BI \-w " num-words"
+Display up to
+.I num-words
+words per line
diff -up powerpc-utils-1.2.15/man/ls-vdev.8.man powerpc-utils-1.2.15/man/ls-vdev.8
--- powerpc-utils-1.2.15/man/ls-vdev.8.man 2013-01-16 15:31:13.886591137 +0100
+++ powerpc-utils-1.2.15/man/ls-vdev.8 2013-01-16 15:31:13.886591137 +0100
@@ -0,0 +1,25 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36.
+.TH LS-VDEV "8" "October 2010" "Linux" "Linux on Power Service Tools"
+.SH NAME
+ls-vdev \- information on Virtual SCSI adapters and devices
+.SH SYNOPSIS
+.BR ls-vdev " [" \-h " | " -V ]
+
+.SH DESCRIPTION
+Provide information on Virtual SCSI adapters and devices
+.PP
+
+.SH OPTIONS
+.TP
+\fB\-V\fR
+Display version information and exit
+.TP
+\fB\-h\fR
+Display help information and exit
+.PP
+
+.SH AUTHOR
+.B ls-vdev
+was written by Brian King <brking@linux.vnet.ibm.com>.
+.PP
+This manual page was written by Roman Rakus <rrakus@redhat.com>.
diff -up powerpc-utils-1.2.15/man/ls-veth.8.man powerpc-utils-1.2.15/man/ls-veth.8
--- powerpc-utils-1.2.15/man/ls-veth.8.man 2013-01-16 15:31:13.887591102 +0100
+++ powerpc-utils-1.2.15/man/ls-veth.8 2013-01-16 15:31:13.887591102 +0100
@@ -0,0 +1,25 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36.
+.TH LS-VETH "8" "October 2010" "Linux" "Linux on Power Service Tools"
+.SH NAME
+ls-veth \- information on Virtual Ethernet devices
+.SH SYNOPSIS
+.BR ls-veth " [" \-h " | " -V ]
+
+.SH DESCRIPTION
+Provide information on Virtual Ethernet devices
+.PP
+
+.SH OPTIONS
+.TP
+\fB\-V\fR
+Display version information and exit
+.TP
+\fB\-h\fR
+Display help information and exit
+.PP
+
+.SH AUTHOR
+.B ls-veth
+was written by Brian King <brking@linux.vnet.ibm.com>.
+.PP
+This manual page was written by Roman Rakus <rrakus@redhat.com>.
diff -up powerpc-utils-1.2.15/man/ls-vscsi.8.man powerpc-utils-1.2.15/man/ls-vscsi.8
--- powerpc-utils-1.2.15/man/ls-vscsi.8.man 2013-01-16 15:31:13.887591102 +0100
+++ powerpc-utils-1.2.15/man/ls-vscsi.8 2013-01-16 15:31:13.887591102 +0100
@@ -0,0 +1,25 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36.
+.TH LS-VSCSI "8" "October 2010" "Linux" "Linux on Power Service Tools"
+.SH NAME
+ls-vscsi \- information on Virtual devices
+.SH SYNOPSIS
+.BR ls-vscsi " [" \-h " | " -V ]
+
+.SH DESCRIPTION
+Provide information on Virtual devices
+.PP
+
+.SH OPTIONS
+.TP
+\fB\-V\fR
+Display version information and exit
+.TP
+\fB\-h\fR
+Display help information and exit
+.PP
+
+.SH AUTHOR
+.B ls-vscsi
+was written by Brian King <brking@linux.vnet.ibm.com>.
+.PP
+This manual page was written by Roman Rakus <rrakus@redhat.com>.
diff -up powerpc-utils-1.2.15/man/nvsetenv.8.man powerpc-utils-1.2.15/man/nvsetenv.8
--- powerpc-utils-1.2.15/man/nvsetenv.8.man 2013-01-16 15:31:13.887591102 +0100
+++ powerpc-utils-1.2.15/man/nvsetenv.8 2013-01-16 15:31:13.887591102 +0100
@@ -0,0 +1,29 @@
+.TH NVSETENV "8" "Oct 2010" "Linux" "Linux on Power Service Tools"
+.SH NAME
+nvsetenv \- wrapper to invoke nvram
+
+.SH SYNOPSIS
+.B nvsetenv
+[ ARG1 ] [ ARG2 ]
+
+.SH DESCRIPTION
+.B nvsetenv
+is just a wrapper to invoke nvram
+
+.SH OPTIONS
+
+Without any argument, nvsetenv calls
+.I nvram --print-config
+
+With one argument
+.IR ARG1 ,
+nvsetenv calls
+.I nvram --print-config=ARG1
+
+With two arguments
+.IR "ARG1 ARG2" ,
+nvsetenv calls
+.I nvram --update-config ARG1=ARG2
+
+.SH "SEE ALSO"
+.IR nvram (8)
diff -up powerpc-utils-1.2.15/man/rtas_event_decode.8.man powerpc-utils-1.2.15/man/rtas_event_decode.8
--- powerpc-utils-1.2.15/man/rtas_event_decode.8.man 2013-01-16 15:31:13.888591067 +0100
+++ powerpc-utils-1.2.15/man/rtas_event_decode.8 2013-01-16 15:31:13.888591067 +0100
@@ -0,0 +1,31 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36.
+.TH RTAS_EVENT_DECODE 8 "September 2010" "Linux" "Linux on Power Service Tools"
+.SH NAME
+\fBrtas_event_decode\fP - RTAS message decoder
+.SH SYNOPSIS
+.B rtas_event_decode
+[\fI-dv\fR] [\fI-n eventnum\fR] [\fI-w width\fR]
+.SH DESCRIPTION
+RTAS messages are placed in the syslog encoded in a binary
+format, and are unreadable. This tool will take exactly one
+message, parse it, and spit out the human-readable equivalent.
+This program expects ascii data on stdin.
+
+This tool is mostly meant to be used in conjuction with the
+rtas_dump shell script, which provides a suitable user
+interface.
+
+.SH OPTIONS
+.TP
+.B \-d
+dump the raw RTAS event
+.TP
+.BI \-n " eventnum"
+event number of the RTAS event being dumped
+.TP
+.B \-v
+verbose, print all details, not just header
+.TP
+.BI \-w " width"
+limit the output to the specified width, default width is 80 characters. The width must be > 0 and < 1024.
+
diff -up powerpc-utils-1.3.8/man/hcnmgr.8.me powerpc-utils-1.3.8/man/hcnmgr.8
--- powerpc-utils-1.3.8/man/hcnmgr.8.me 2021-02-08 13:18:50.115407652 +0100
+++ powerpc-utils-1.3.8/man/hcnmgr.8 2021-02-08 13:18:43.734322981 +0100
diff -up powerpc-utils-1.3.10/Makefile.am.than powerpc-utils-1.3.10/Makefile.am
--- powerpc-utils-1.3.10/Makefile.am.than 2023-11-27 22:07:33.391345328 +0100
+++ powerpc-utils-1.3.10/Makefile.am 2023-11-27 22:06:38.715373360 +0100
@@ -26,6 +26,16 @@ sbin_SCRIPTS = \
scripts/hcnmgr
man_MANS = \
+ man/lsdevinfo.8 \
+ man/rtas_event_decode.8 \
+ man/ls-vdev.8 \
+ man/lsprop.8 \
+ man/ls-veth.8 \
+ man/nvsetenv.8 \
+ man/ls-vscsi.8 \
+ man/pseries_platform.8 \
+ man/update_flash_nv.8 \
+ man/hcnmgr.8 \
man/activate_firmware.8 \
man/rtas_ibm_get_vpd.8 \
man/uesensor.8 \
diff -up powerpc-utils-1.3.10/man/hcnmgr.8.than powerpc-utils-1.3.10/man/hcnmgr.8
--- powerpc-utils-1.3.10/man/hcnmgr.8.than 2023-11-27 22:05:20.283979110 +0100
+++ powerpc-utils-1.3.10/man/hcnmgr.8 2023-11-27 22:05:20.283979110 +0100
@@ -0,0 +1,47 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
+.TH HCNMGR "1" "hcnmgr contains a set of commands to support migratable SR_IOV logical port." "hcnmgr"
@ -308,9 +69,268 @@ diff -up powerpc-utils-1.3.8/man/hcnmgr.8.me powerpc-utils-1.3.8/man/hcnmgr.8
+was written by Mingming Cao <mingming.cao@ibm.com>.
+.PP
+This manual page was written by Than Ngo <than@redhat.com>.
diff -up powerpc-utils-1.3.5/man/update_flash_nv.8.me powerpc-utils-1.3.5/man/update_flash_nv.8
--- powerpc-utils-1.3.5/man/update_flash_nv.8.me 2018-11-29 16:49:51.344987106 +0100
+++ powerpc-utils-1.3.5/man/update_flash_nv.8 2018-11-29 16:49:42.589961458 +0100
diff -up powerpc-utils-1.3.10/man/lsdevinfo.8.than powerpc-utils-1.3.10/man/lsdevinfo.8
--- powerpc-utils-1.3.10/man/lsdevinfo.8.than 2023-11-27 22:05:20.282979092 +0100
+++ powerpc-utils-1.3.10/man/lsdevinfo.8 2023-11-27 22:05:20.282979092 +0100
@@ -0,0 +1,39 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36.
+.TH LSDEVINFO "8" "October 2010" "Linux" "Linux on Power Service Tools"
+.SH NAME
+lsdevinfo - information on Virtual devices
+
+.SH SYNOPSIS
+.B lsdevinfo
+[\fI-q criteria\fR] [\fI-F format\fR] [\fI-R\fR] [\fI-c\fR] [\fI-h\fR]
+
+.SH DESCRIPTION
+Provide information on Virtual devices
+.PP
+
+.SH OPTIONS
+.TP
+\fB\-q\fR criteria
+Specifies a criteria to select which devices are to be displayed.
+.TP
+\fB\-F\fR format
+Specifies the set of attributes to be displayed.
+.TP
+\fB\-R\fR
+Recursively display children of selected devices
+.TP
+\fB\-c\fR
+Display output as a comma separated list for each device.
+.TP
+\fB\-V\fR
+Display version information and exit
+.TP
+\fB\-h\fR
+Display help information and exit
+
+.SH AUTHOR
+.B lsdevinfo
+was written by Santiago Leon <sleon@ec.ibm.com>.
+.PP
+This manual page was written by Roman Rakus <rrakus@redhat.com>.
+
diff -up powerpc-utils-1.3.10/man/lsprop.8.than powerpc-utils-1.3.10/man/lsprop.8
--- powerpc-utils-1.3.10/man/lsprop.8.than 2023-11-27 22:05:20.283979110 +0100
+++ powerpc-utils-1.3.10/man/lsprop.8 2023-11-27 22:05:20.283979110 +0100
@@ -0,0 +1,42 @@
+.TH LSPROP "8" "Sep 2010" "Linux" "Linux on Power Service Tools"
+.SH NAME
+lsprop \- list properties
+.SH SYNOPSIS
+.B lsprop
+.RB [ \-R ]
+.RB [ \-m
+.IR max-bytes ]
+.RB [ \-w
+.IR num-words ]
+.RI [ FILE .\|.\|.]
+.SH OVERVIEW
+.B lsprop
+program is a member of the ppc64-utils suite of utils.
+Use it to list properties
+
+.SH DESCRIPTION
+.B lsprop
+displays properties for
+.IR FILE s
+like Open Firmware
+.I .properties
+word.
+If the
+.I FILE
+is not set, the current directory is used.
+
+.SH OPTIONS
+.TP
+.B \-R
+Process recursively
+.TP
+.BI \-m " max-bytes"
+Read only first
+.I max-bytes
+bytes from the
+.IR FILE s
+.TP
+.BI \-w " num-words"
+Display up to
+.I num-words
+words per line
diff -up powerpc-utils-1.3.10/man/ls-vdev.8.than powerpc-utils-1.3.10/man/ls-vdev.8
--- powerpc-utils-1.3.10/man/ls-vdev.8.than 2023-11-27 22:05:20.283979110 +0100
+++ powerpc-utils-1.3.10/man/ls-vdev.8 2023-11-27 22:05:20.283979110 +0100
@@ -0,0 +1,25 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36.
+.TH LS-VDEV "8" "October 2010" "Linux" "Linux on Power Service Tools"
+.SH NAME
+ls-vdev \- information on Virtual SCSI adapters and devices
+.SH SYNOPSIS
+.BR ls-vdev " [" \-h " | " -V ]
+
+.SH DESCRIPTION
+Provide information on Virtual SCSI adapters and devices
+.PP
+
+.SH OPTIONS
+.TP
+\fB\-V\fR
+Display version information and exit
+.TP
+\fB\-h\fR
+Display help information and exit
+.PP
+
+.SH AUTHOR
+.B ls-vdev
+was written by Brian King <brking@linux.vnet.ibm.com>.
+.PP
+This manual page was written by Roman Rakus <rrakus@redhat.com>.
diff -up powerpc-utils-1.3.10/man/ls-veth.8.than powerpc-utils-1.3.10/man/ls-veth.8
--- powerpc-utils-1.3.10/man/ls-veth.8.than 2023-11-27 22:05:20.283979110 +0100
+++ powerpc-utils-1.3.10/man/ls-veth.8 2023-11-27 22:05:20.283979110 +0100
@@ -0,0 +1,25 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36.
+.TH LS-VETH "8" "October 2010" "Linux" "Linux on Power Service Tools"
+.SH NAME
+ls-veth \- information on Virtual Ethernet devices
+.SH SYNOPSIS
+.BR ls-veth " [" \-h " | " -V ]
+
+.SH DESCRIPTION
+Provide information on Virtual Ethernet devices
+.PP
+
+.SH OPTIONS
+.TP
+\fB\-V\fR
+Display version information and exit
+.TP
+\fB\-h\fR
+Display help information and exit
+.PP
+
+.SH AUTHOR
+.B ls-veth
+was written by Brian King <brking@linux.vnet.ibm.com>.
+.PP
+This manual page was written by Roman Rakus <rrakus@redhat.com>.
diff -up powerpc-utils-1.3.10/man/ls-vscsi.8.than powerpc-utils-1.3.10/man/ls-vscsi.8
--- powerpc-utils-1.3.10/man/ls-vscsi.8.than 2023-11-27 22:05:20.283979110 +0100
+++ powerpc-utils-1.3.10/man/ls-vscsi.8 2023-11-27 22:05:20.283979110 +0100
@@ -0,0 +1,25 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36.
+.TH LS-VSCSI "8" "October 2010" "Linux" "Linux on Power Service Tools"
+.SH NAME
+ls-vscsi \- information on Virtual devices
+.SH SYNOPSIS
+.BR ls-vscsi " [" \-h " | " -V ]
+
+.SH DESCRIPTION
+Provide information on Virtual devices
+.PP
+
+.SH OPTIONS
+.TP
+\fB\-V\fR
+Display version information and exit
+.TP
+\fB\-h\fR
+Display help information and exit
+.PP
+
+.SH AUTHOR
+.B ls-vscsi
+was written by Brian King <brking@linux.vnet.ibm.com>.
+.PP
+This manual page was written by Roman Rakus <rrakus@redhat.com>.
diff -up powerpc-utils-1.3.10/man/nvsetenv.8.than powerpc-utils-1.3.10/man/nvsetenv.8
--- powerpc-utils-1.3.10/man/nvsetenv.8.than 2023-11-27 22:05:20.283979110 +0100
+++ powerpc-utils-1.3.10/man/nvsetenv.8 2023-11-27 22:05:20.283979110 +0100
@@ -0,0 +1,29 @@
+.TH NVSETENV "8" "Oct 2010" "Linux" "Linux on Power Service Tools"
+.SH NAME
+nvsetenv \- wrapper to invoke nvram
+
+.SH SYNOPSIS
+.B nvsetenv
+[ ARG1 ] [ ARG2 ]
+
+.SH DESCRIPTION
+.B nvsetenv
+is just a wrapper to invoke nvram
+
+.SH OPTIONS
+
+Without any argument, nvsetenv calls
+.I nvram --print-config
+
+With one argument
+.IR ARG1 ,
+nvsetenv calls
+.I nvram --print-config=ARG1
+
+With two arguments
+.IR "ARG1 ARG2" ,
+nvsetenv calls
+.I nvram --update-config ARG1=ARG2
+
+.SH "SEE ALSO"
+.IR nvram (8)
diff -up powerpc-utils-1.3.10/man/pseries_platform.8.than powerpc-utils-1.3.10/man/pseries_platform.8
--- powerpc-utils-1.3.10/man/pseries_platform.8.than 2023-11-27 22:05:20.282979092 +0100
+++ powerpc-utils-1.3.10/man/pseries_platform.8 2023-11-27 22:05:20.282979092 +0100
@@ -0,0 +1,11 @@
+.\"
+.\" Copyright (C) 2015 International Business Machines
+.\"
+.TH pseries_platform 8 "September 2015" Linux "Linux on Power Service Tools"
+.SH NAME
+pseries_platform \- identify the platform and display the name of platform
+.SH SYNOPSIS
+.B /usr/bin/pseries_platform
+
+.SH DESCRIPTION
+The \fIpseries_platform\fR tool can identify the platform and display the name of platform.
diff -up powerpc-utils-1.3.10/man/rtas_event_decode.8.than powerpc-utils-1.3.10/man/rtas_event_decode.8
--- powerpc-utils-1.3.10/man/rtas_event_decode.8.than 2023-11-27 22:05:20.283979110 +0100
+++ powerpc-utils-1.3.10/man/rtas_event_decode.8 2023-11-27 22:05:20.283979110 +0100
@@ -0,0 +1,31 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36.
+.TH RTAS_EVENT_DECODE 8 "September 2010" "Linux" "Linux on Power Service Tools"
+.SH NAME
+\fBrtas_event_decode\fP - RTAS message decoder
+.SH SYNOPSIS
+.B rtas_event_decode
+[\fI-dv\fR] [\fI-n eventnum\fR] [\fI-w width\fR]
+.SH DESCRIPTION
+RTAS messages are placed in the syslog encoded in a binary
+format, and are unreadable. This tool will take exactly one
+message, parse it, and spit out the human-readable equivalent.
+This program expects ascii data on stdin.
+
+This tool is mostly meant to be used in conjuction with the
+rtas_dump shell script, which provides a suitable user
+interface.
+
+.SH OPTIONS
+.TP
+.B \-d
+dump the raw RTAS event
+.TP
+.BI \-n " eventnum"
+event number of the RTAS event being dumped
+.TP
+.B \-v
+verbose, print all details, not just header
+.TP
+.BI \-w " width"
+limit the output to the specified width, default width is 80 characters. The width must be > 0 and < 1024.
+
diff -up powerpc-utils-1.3.10/man/update_flash_nv.8.than powerpc-utils-1.3.10/man/update_flash_nv.8
--- powerpc-utils-1.3.10/man/update_flash_nv.8.than 2023-11-27 22:05:20.283979110 +0100
+++ powerpc-utils-1.3.10/man/update_flash_nv.8 2023-11-27 22:05:20.283979110 +0100
@@ -0,0 +1,15 @@
+.\"
+.\" Copyright (C) 2015 International Business Machines
@ -327,25 +347,3 @@ diff -up powerpc-utils-1.3.5/man/update_flash_nv.8.me powerpc-utils-1.3.5/man/up
+.SH SEE ALSO
+update_flash(8).
+
diff -up powerpc-utils-1.3.10/Makefile.am.me powerpc-utils-1.3.10/Makefile.am
--- powerpc-utils-1.3.10/Makefile.am.me 2022-06-03 12:35:01.335312481 +0200
+++ powerpc-utils-1.3.10/Makefile.am 2022-06-03 12:46:42.460763120 +0200
@@ -48,7 +48,17 @@ man_MANS = \
man/vcpustat.8 \
man/rtas_dbg.8 \
man/drmgr.8 \
- man/lparnumascore.8
+ man/lparnumascore.8 \
+ man/lsdevinfo.8 \
+ man/rtas_event_decode.8 \
+ man/ls-vdev.8 \
+ man/lsprop.8 \
+ man/ls-veth.8 \
+ man/nvsetenv.8 \
+ man/ls-vscsi.8 \
+ man/pseries_platform.8 \
+ man/update_flash_nv.8 \
+ man/hcnmgr.8
EXTRA_DIST += $(bin_SCRIPTS) $(sbin_SCRIPTS) $(man_MANS)

View File

@ -0,0 +1,34 @@
commit 1ac96f8ab7c27095be90eb2e69ae57e8b43eccbe
Author: Laurent Dufour <ldufour@linux.ibm.com>
Date: Fri Sep 16 18:39:13 2022 +0200
drmgr/pmig: remove deprecated call to refrsrc IBM.ManagementServer
As Nathan reported while reviewing this series:
This RSCT doc indicates that the IBM.ManagementServer resource class has
been superseded:
https://www.ibm.com/docs/en/rsct/3.2?topic=security-management-domain-configuration
Removing that deprecated call in this series because it is conflicting with
a following patch. The system returned value is stored in rc to prevent
compilation error (due to warning if system returned value is not read).
Suggested-by: Nathan Lynch <nathanl@linux.ibm.com>
Signed-off-by: Laurent Dufour <ldufour@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/src/drmgr/drmig_chrp_pmig.c b/src/drmgr/drmig_chrp_pmig.c
index 94cb49a..f78ff15 100644
--- a/src/drmgr/drmig_chrp_pmig.c
+++ b/src/drmgr/drmig_chrp_pmig.c
@@ -753,8 +753,5 @@ int drmig_chrp_pmig(void)
post_mobility_update();
- say(DEBUG, "Refreshing RMC via refrsrc\n");
- rc = system("/usr/sbin/rsct/bin/refrsrc IBM.ManagementServer");
-
return 0;
}

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,79 @@
commit 372599ed28d65a79d4c3b3405a8e04034eb58e09
Author: Laurent Dufour <ldufour@linux.ibm.com>
Date: Fri Sep 16 18:39:15 2022 +0200
drmgr: introduce a DRC type name table
So that there is only one place to convert the name of the drc to the type
of drc and vice versa.
Signed-off-by: Laurent Dufour <ldufour@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/src/drmgr/common.c b/src/drmgr/common.c
index 622cfaf..12af756 100644
--- a/src/drmgr/common.c
+++ b/src/drmgr/common.c
@@ -52,6 +52,21 @@ char *remove_slot_fname = REMOVE_SLOT_FNAME;
static int dr_lock_fd = 0;
static long dr_timeout;
+#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+
+static char *drc_type_str[] = {
+ [DRC_TYPE_NONE] = "unknwon",
+ [DRC_TYPE_PCI] = "pci",
+ [DRC_TYPE_SLOT] = "slot",
+ [DRC_TYPE_PHB] = "phb",
+ [DRC_TYPE_CPU] = "cpu",
+ [DRC_TYPE_MEM] = "mem",
+ [DRC_TYPE_PORT] = "port",
+ [DRC_TYPE_HIBERNATE] = "phib",
+ [DRC_TYPE_MIGRATION] = "pmig",
+ [DRC_TYPE_ACC] = "acc",
+};
+
/**
* set_output level
* @brief Common routine to set the output level
@@ -1521,35 +1536,12 @@ int do_kernel_dlpar_common(const char *cmd, int cmdlen, int silent_error)
enum drc_type to_drc_type(const char *arg)
{
- if (!strncmp(arg, "pci", 3))
- return DRC_TYPE_PCI;
-
- if (!strncmp(arg, "slot", 4))
- return DRC_TYPE_SLOT;
-
- if (!strncmp(arg, "phb", 3))
- return DRC_TYPE_PHB;
-
- if (!strncmp(arg, "cpu", 3))
- return DRC_TYPE_CPU;
-
- if (!strncmp(arg, "mem", 3))
- return DRC_TYPE_MEM;
+ enum drc_type i;
- if (!strncmp(arg, "port", 4))
- return DRC_TYPE_PORT;
-
- if (!strncmp(arg, "phib", 4))
- return DRC_TYPE_HIBERNATE;
-
- if (!strncmp(arg, "pmig", 4))
- return DRC_TYPE_MIGRATION;
-
- /*
- * Accelerator
- */
- if (!strncmp(arg, "acc", 3))
- return DRC_TYPE_ACC;
+ for (i = DRC_TYPE_NONE + 1; i < ARRAY_SIZE(drc_type_str); i++) {
+ if (!strcmp(arg, drc_type_str[i]))
+ return i;
+ }
return DRC_TYPE_NONE;
}

View File

@ -0,0 +1,36 @@
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

@ -0,0 +1,120 @@
commit 7698adc945372e901c2bc3f7066a5a1c219bf1d8
Author: Laurent Dufour <ldufour@linux.ibm.com>
Date: Fri Sep 16 18:39:18 2022 +0200
drmgr: add the drmgr-hooks man file.
This man page describe the various drmgr's hooks.
Signed-off-by: Laurent Dufour <ldufour@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/Makefile.am b/Makefile.am
index ba7a3c5..5c0ca3c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -48,6 +48,7 @@ man_MANS = \
man/vcpustat.8 \
man/rtas_dbg.8 \
man/drmgr.8 \
+ man/drmgr-hooks.8 \
man/lparnumascore.8
EXTRA_DIST += $(bin_SCRIPTS) $(sbin_SCRIPTS) $(man_MANS)
diff --git a/man/drmgr-hooks.8 b/man/drmgr-hooks.8
new file mode 100644
index 0000000..621e4f0
--- /dev/null
+++ b/man/drmgr-hooks.8
@@ -0,0 +1,82 @@
+.\"
+.\" Copyright (C) 2022 International Business Machines
+.\"
+.TH DRMGR-HOOKS 8 "May 24, 2022" Linux "Linux on Power Service Tools"
+.SH NAME
+drmgr\-hooks \- Hooks run by drmgr
+.SH DESCRIPTION
+When
+.B drmgr
+is run to perform PowerVM Dynamic Logical Partitioning (DLPAR) operations,
+a set of hooks may be triggered to validate, and, or be aware of the incoming operation.
+.P
+Not all the DLPAR operations are providing hook calls.
+Currently only the LPAR Migration operation (LPM) is concerned.
+.P
+The hooks are executable files stored in a directory named "DRC TYPE" in
+.IR /etc/drmgr.d/ .
+For instance, hooks run when a LPAR migration is done are stored in
+.IR /etc/drmgr.d/pmig .
+.P
+Hook files can be symbolic links to executable files. All the hooks can be stored in
+.IR /etc/drmgr.d
+and linked into multiple directories to provide multiple DRC type's hooks.
+.SH ARGUMENTS
+.P
+Hooks are called without any arguments but with at least these 2 environment variable set:
+.TP
+.BI "DRC_TYPE"
+The Dynamic reconfiguration connector type to act upon from the following list:
+.BR pmig ", " pci ", " cpu ", " mem ", " port ", " slot ", " phb "."
+.TP
+.BI "PHASE"
+The phase of the operation from the following list:
+.BR check ", " undocheck ", " pre ", " post "."
+.SH LPAR MIGRATION
+.P
+When a LPAR migration is initiated the
+.B check
+phase is first triggered. Hooks called at check phase may returned a non zero value to prevent the migration operation to happen.
+The error messages displayed in
+.BR STDOUT " or " STDERR
+would be reported to the end user through the HMC.
+.P
+If the
+.B check
+phase has failed, because at least one hook has returned a non null value, the
+.B undocheck
+phase is launched. Return value for the
+.B
+undocheck
+phase is ignored.
+.P
+If the
+.B check
+phase succeeded, the
+.BR pre " and later " post
+phases are triggered. Returned values for these 2 phases are ignored, and the
+.B post
+phase is triggered even if the LPM operation has failed.
+.SH ENVIRONMENT
+.P
+The drmgr's hooks are called while holding the DLPAR lock, so any other
+DLPAR operation initiated from a hook is expected to fail.
+.P
+The hooks standard input
+.B STDIN
+is redirected to
+.I /dev/null
+while STDOUT and STDERR are redirected to pipes.
+The outputs done in these pipes are reported to the end user when a hook has returned an error value and that error value is not ignored (e.g in the LPM, the
+.B check
+phase but not the
+.BR pre "or " post
+phase)
+.P
+Except the variables specified in the ARGUMENTS section, all the environment variables are unset before calling the hook.
+.SH FILES
+.IR /etc/drmgr.d/pmig/
+.SH AUTHOR
+Laurent Dufour <ldufour@linux.ibm.com>
+.SH SEE ALSO
+.BR drmgr (8)
diff --git a/man/drmgr.8 b/man/drmgr.8
index 09944bd..f40136b 100644
--- a/man/drmgr.8
+++ b/man/drmgr.8
@@ -158,3 +158,4 @@ was written by IBM Corporation
.SH SEE ALSO
.BR lsslot "(8)"
+.BR drmgr-hooks "(8)"

View File

@ -0,0 +1,33 @@
commit 8a7aa61c5f520df03e53e6f7e1d63b7d5c432376
Author: Wen Xiong <wenxiong@linux.ibm.com>
Date: Wed Nov 15 14:37:43 2023 -0600
powerpc-utils/scripts/ofpathname: handle nsid of nvme device as hex number
Installation fails if nsid of nvme device is greater than 10.
The patch fixes the issue and handle nsid of nvme ad a hex 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 3abe4d1..833d03f 100755
--- a/scripts/ofpathname
+++ b/scripts/ofpathname
@@ -722,6 +722,7 @@ l2of_nvme()
err $ERR_NO_OFPATH
fi
+ devnsid=$(printf "%x" $devnsid)
OF_PATH="$OF_PATH/$devtype@$devnsid"
# No partition (pZ) specified.
@@ -1798,6 +1799,7 @@ of2l_nvme()
cd $dir
local devnsid=`$CAT ./nsid 2>/dev/null`
+ devnsid=$(printf "%x" $devnsid)
if [[ $devnsid = $nsid ]]; then
LOGICAL_DEVNAME="${dir##*/}"
break

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

@ -0,0 +1,36 @@
commit c3ce3040ea9ed49345756136d61eb402e32402e8
Author: Laurent Dufour <ldufour@linux.ibm.com>
Date: Fri Sep 16 18:39:12 2022 +0200
drmgr/pmig: remove unused code
The original system id is read but never used, so remove that useless code.
Remove also an unjustified sleep(5) call.
Reviewed-by: Nathan Lynch <nathanl@linux.ibm.com>
Signed-off-by: Laurent Dufour <ldufour@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/src/drmgr/drmig_chrp_pmig.c b/src/drmgr/drmig_chrp_pmig.c
index 569eeb6..94cb49a 100644
--- a/src/drmgr/drmig_chrp_pmig.c
+++ b/src/drmgr/drmig_chrp_pmig.c
@@ -695,7 +695,6 @@ void post_mobility_update(void)
int drmig_chrp_pmig(void)
{
int rc;
- char sys_src[20];
uint64_t stream_val;
/* Ensure that this partition is migratable/mobile */
@@ -732,10 +731,6 @@ int drmig_chrp_pmig(void)
say(ERROR, "Invalid streamid specified: %s\n", strerror(errno));
return -1;
}
-
- /* Get the ID of the original system, for later logging */
- get_str_attribute(OFDT_BASE, "system-id", sys_src, 20);
- sleep(5);
/* Now do the actual migration */
do {

View File

@ -0,0 +1,93 @@
commit d0bc79aedaf76eff09a5d1f399da09561a4d4d7d
Author: Laurent Dufour <ldufour@linux.ibm.com>
Date: Fri Sep 16 18:39:17 2022 +0200
drmgr: introducing the LPM hooks
There are 3 hooks run when an LPM is performed:
1. check before the LPM is really initiated
1 bis. undocheck if check failed.
2. pre just before entering the switch over
3. post at the end of the LPM operation
Only the check hook's return status is taken in account. If the check hook
return value is different from 0, the LPM is aborted and the outputs of the
check hook are reported to the end user through the HMC.
In the case at least one check hook returned a non zero status, the
undocheck event is run (for all the hooks), and the pre and post events are
not triggered.
The post event is triggered even if the LPM operation has failed.
Signed-off-by: Laurent Dufour <ldufour@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/src/drmgr/drmig_chrp_pmig.c b/src/drmgr/drmig_chrp_pmig.c
index f78ff15..f169fa5 100644
--- a/src/drmgr/drmig_chrp_pmig.c
+++ b/src/drmgr/drmig_chrp_pmig.c
@@ -691,11 +691,15 @@ void post_mobility_update(void)
devtree_update();
}
}
-
+
int drmig_chrp_pmig(void)
{
int rc;
uint64_t stream_val;
+ enum drc_type drc_type = DRC_TYPE_NONE;
+
+ if (usr_action == MIGRATE)
+ drc_type = DRC_TYPE_MIGRATION;
/* Ensure that this partition is migratable/mobile */
if (! pmig_capable()) {
@@ -704,14 +708,11 @@ int drmig_chrp_pmig(void)
return -1;
}
- /* Today we do no pre-checks for migratability. The only check
- * we could do is whether the "ibm,suspend-me" RTAS call exists.
- * But if it doesn't, the firmware level doesn't support migration,
- * in which case why the heck are we being invoked anyways.
- */
- if (strcmp(usr_p_option, "check") == 0) {
- say(DEBUG, "check: Nothing to do...\n");
- return 0;
+ if (usr_action == MIGRATE && (strcmp(usr_p_option, "check") == 0)) {
+ rc = run_hooks(drc_type, HOOK_CHECK);
+ if (rc)
+ run_hooks(drc_type, HOOK_UNDOCHECK);
+ return rc;
}
/* The only other command is pre, any other command is invalid */
@@ -734,6 +735,9 @@ int drmig_chrp_pmig(void)
/* Now do the actual migration */
do {
+ if (usr_action == MIGRATE)
+ run_hooks(drc_type, HOOK_PRE);
+
if (usr_action == MIGRATE)
rc = do_migration(stream_val);
else if (usr_action == HIBERNATE)
@@ -748,10 +752,12 @@ int drmig_chrp_pmig(void)
syslog(LOG_LOCAL0 | LOG_INFO, "drmgr: %s rc %d\n",
(usr_action == MIGRATE ? "migration" : "hibernation"), rc);
- if (rc)
- return rc;
- post_mobility_update();
+ if (!rc)
+ post_mobility_update();
- return 0;
+ /* Post hook is called even if the migration has failed */
+ if (usr_action == MIGRATE)
+ run_hooks(drc_type, HOOK_POST);
+ return rc;
}

View File

@ -0,0 +1,219 @@
commit e0928dc5e5375591a4cff6ffabc6063771288f59
Author: Laurent Dufour <ldufour@linux.ibm.com>
Date: Fri Sep 16 18:39:16 2022 +0200
drmgr: introducing the hook framework
The hook framework run in a sequence any executable file found in the
relevant directory (/etc/drmgr.d/<DRC TYPE NAME>/)
The hook are run according to the versionsort()'s output order.
The hook inherits from drmgr its standard I/O streams. All others file
descriptor should have the close on exec flag set to ensure they will be
closed when executing an hook.
The hooks are run with no arguments, arguments are passed through
environment variable.
The inherited environment is cleaned and 2 environment variables
are set:
- DRC_TYPE containing the DRC type string
- PHASE containing the current phase
There are 4 known phases: check, undocheck, pre and post.
The hook's run is recorded in the drmgr's log, so blocking hook could be
identified.
Signed-off-by: Laurent Dufour <ldufour@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/src/drmgr/common.c b/src/drmgr/common.c
index 12af756..9cd91d1 100644
--- a/src/drmgr/common.c
+++ b/src/drmgr/common.c
@@ -49,6 +49,8 @@ char *remove_slot_fname = REMOVE_SLOT_FNAME;
#define SYSFS_DLPAR_FILE "/sys/kernel/dlpar"
+#define DR_SCRIPT_DIR "/etc/drmgr.d"
+
static int dr_lock_fd = 0;
static long dr_timeout;
@@ -67,6 +69,13 @@ static char *drc_type_str[] = {
[DRC_TYPE_ACC] = "acc",
};
+static char *hook_phase_name[] = {
+ [HOOK_CHECK] = "check",
+ [HOOK_UNDOCHECK] = "undocheck",
+ [HOOK_PRE] = "pre",
+ [HOOK_POST] = "post",
+};
+
/**
* set_output level
* @brief Common routine to set the output level
@@ -1546,3 +1555,138 @@ enum drc_type to_drc_type(const char *arg)
return DRC_TYPE_NONE;
}
+static int run_one_hook(enum drc_type drc_type, enum hook_phase phase,
+ const char *name)
+{
+ int rc;
+ pid_t child;
+
+ fflush(NULL);
+ child = fork();
+ if (child == -1) {
+ say(ERROR, "Can't fork to run a hook: %s\n", strerror(errno));
+ return -1;
+ }
+
+ if (child) {
+ /* Father side */
+ while (waitpid(child, &rc, 0) == -1) {
+ if (errno == EINTR)
+ continue;
+ say(ERROR, "waitpid error: %s\n", strerror(errno));
+ return -1;
+ }
+
+ if (WIFSIGNALED(rc)) {
+ say(INFO, "hook '%s' terminated by signal %d\n",
+ name, WTERMSIG(rc));
+ rc = 1;
+ } else {
+ rc = WEXITSTATUS(rc);
+ say(INFO, "hook '%s' exited with status %d\n",
+ name, rc);
+ }
+ return rc;
+ }
+
+
+ /* Child side */
+ say(DEBUG, "Running hook '%s' for phase %s (PID=%d)\n",
+ name, hook_phase_name[phase], getpid());
+
+ if (chdir("/")) {
+ say(ERROR, "Can't change working directory to / : %s\n",
+ strerror(errno));
+ exit(255);
+ }
+
+ if (clearenv() ||
+ setenv("DRC_TYPE", drc_type_str[drc_type], 1) ||
+ setenv("PHASE", hook_phase_name[phase], 1)) {
+ say(ERROR, "Can't set environment variables: %s\n",
+ strerror(errno));
+ exit(255);
+ }
+
+ execl(name, name, (char *)NULL);
+ say(ERROR, "Can't exec hook %s : %s\n", strerror(errno));
+ exit(255);
+}
+
+static int is_file_or_link(const struct dirent *entry)
+{
+ if ((entry->d_type == DT_REG) || (entry->d_type == DT_LNK))
+ return 1;
+ return 0;
+}
+
+/*
+ * Run all executable hooks found in a given directory.
+ * Return 0 if all run script have returned 0 status.
+ */
+int run_hooks(enum drc_type drc_type, enum hook_phase phase)
+{
+ int rc = 0, fdd, num, i;
+ DIR *dir;
+ struct dirent **entries = NULL;
+
+ /* Sanity check */
+ if (drc_type <= DRC_TYPE_NONE || drc_type >= ARRAY_SIZE(drc_type_str)) {
+ say(ERROR, "Invalid DRC TYPE detected (%d)\n", drc_type);
+ return -1;
+ }
+
+ if (phase < HOOK_CHECK || phase > HOOK_POST) {
+ say(ERROR, "Invalid hook phase %d\n", phase);
+ return -1;
+ }
+
+ dir = opendir(DR_SCRIPT_DIR);
+ if (dir == NULL) {
+ if (errno == ENOENT)
+ return 0;
+ say(ERROR, "Can't open %s: %s\n", DR_SCRIPT_DIR,
+ strerror(errno));
+ return -1;
+ }
+
+ fdd = dirfd(dir);
+ num = scandirat(fdd, drc_type_str[drc_type], &entries,
+ is_file_or_link, versionsort);
+ closedir(dir);
+
+ for (i = 0; i < num; i++) {
+ struct stat st;
+ struct dirent *entry = entries[i];
+ char *name;
+
+ if (asprintf(&name, "%s/%s/%s", DR_SCRIPT_DIR,
+ drc_type_str[drc_type], entry->d_name) == -1) {
+ say(ERROR,
+ "Can't allocate filename string (%zd bytes)\n",
+ strlen(DR_SCRIPT_DIR) + 1 +
+ strlen(drc_type_str[drc_type]) + 1 +
+ strlen(entry->d_name) + 1);
+ rc = 1;
+ free(entry);
+ continue;
+ }
+
+ /*
+ * Report error only in the case the hook itself fails.
+ * Any other error (file is not executable etc.) is ignored.
+ */
+ if (stat(name, &st))
+ say(WARN, "Can't stat file %s: %s\n",
+ name, strerror(errno));
+ else if (S_ISREG(st.st_mode) && (st.st_mode & S_IXUSR) &&
+ run_one_hook(drc_type, phase, name))
+ rc = 1;
+
+ free(name);
+ free(entry);
+ }
+
+ free(entries);
+ return rc;
+}
diff --git a/src/drmgr/dr.h b/src/drmgr/dr.h
index 58fdb5c..5526c29 100644
--- a/src/drmgr/dr.h
+++ b/src/drmgr/dr.h
@@ -70,6 +70,8 @@ enum drc_type {DRC_TYPE_NONE, DRC_TYPE_PCI, DRC_TYPE_SLOT, DRC_TYPE_PHB,
DRC_TYPE_CPU, DRC_TYPE_MEM, DRC_TYPE_PORT,
DRC_TYPE_HIBERNATE, DRC_TYPE_MIGRATION, DRC_TYPE_ACC};
+enum hook_phase {HOOK_CHECK, HOOK_UNDOCHECK, HOOK_PRE, HOOK_POST};
+
extern enum drmgr_action usr_action;
extern int display_capabilities;
extern int usr_slot_identification;
@@ -133,6 +135,8 @@ void print_dlpar_capabilities(void);
void set_output_level(int);
+int run_hooks(enum drc_type drc_type, enum hook_phase phase);
+
#define DR_BUF_SZ 256
int drslot_chrp_slot(void);

View File

@ -0,0 +1,47 @@
commit f2a4619ef6be747f53e5f631f8b23b5edb9bb023
Author: Laurent Dufour <ldufour@linux.ibm.com>
Date: Fri Sep 16 18:39:14 2022 +0200
drmgr: prevent file descriptor to be inherited when execing a child
When a file descriptor is opened and remain opened, the O_CLOEXEC should be
set so execed children are not inheriting it.
There is no need for file descriptor opened and closed immediately, like in
probe_cpu().
Reviewed-by: Nathan Lynch <nathanl@linux.ibm.com>
Signed-off-by: Laurent Dufour <ldufour@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/src/drmgr/common.c b/src/drmgr/common.c
index 393a997..622cfaf 100644
--- a/src/drmgr/common.c
+++ b/src/drmgr/common.c
@@ -174,7 +174,7 @@ inline int dr_init(void)
}
- log_fd = open(DR_LOG_PATH, O_RDWR | O_CREAT | O_APPEND,
+ log_fd = open(DR_LOG_PATH, O_RDWR | O_CREAT | O_APPEND | O_CLOEXEC,
S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
if (log_fd == -1) {
log_fd = 0;
@@ -314,7 +314,7 @@ int dr_lock(void)
mode_t old_mode;
old_mode = umask(0);
- dr_lock_fd = open(DR_LOCK_FILE, O_RDWR | O_CREAT,
+ dr_lock_fd = open(DR_LOCK_FILE, O_RDWR | O_CREAT | O_CLOEXEC,
S_IRUSR | S_IRGRP | S_IROTH);
if (dr_lock_fd < 0)
return -1;
@@ -1496,7 +1496,7 @@ int do_kernel_dlpar_common(const char *cmd, int cmdlen, int silent_error)
/* write to file */
if (fd == -1) {
- fd = open(SYSFS_DLPAR_FILE, O_WRONLY);
+ fd = open(SYSFS_DLPAR_FILE, O_WRONLY | O_CLOEXEC);
if (fd < 0) {
say(ERROR,
"Could not open %s to initiate DLPAR request\n",

View File

@ -0,0 +1,55 @@
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

@ -0,0 +1,70 @@
commit 9caa77e4477a73064a6deea253fd3faea32648fb
Author: Likhitha Korrapati <likhitha@linux.ibm.com>
Date: Fri Nov 17 01:42:29 2023 -0500
rtas_dbg: Fix the large negative values in rtas_dbg
without the patch:
[root@xxx powerpc-utils]# rtas_dbg -l ibm,rks-hcalls
Could not get rtas token for ibm,indicator-0002
Could not get rtas token for ibm,integrated-stop-self
Could not get rtas token for ibm,indicator-9005
Could not get rtas token for ibm,extended-os-term
Could not get rtas token for ibm,indicator-0001
Could not get rtas token for ibm,sensor-0009
Could not get rtas token for ibm,recoverable-epow3
Could not get rtas token for ibm,sensor-9005
Could not get rtas token for ibm,change-msix-capable
Could not get rtas token for ibm,sensor-0005
Could not get rtas token for ibm,sensor-0001
ibm,rks-hcalls -536870912
The large negatives values are due to incompatible format(%d).
The data type of the token variable is uint32_t.This patch
modifies the format(%u) to align with its data type(uint32_t).
with the patch:
[root@xxx powerpc-utils]# ./src/rtas_dbg -l ibm,rks-hcalls
Could not get rtas token for ibm,indicator-0002
Could not get rtas token for ibm,integrated-stop-self
Could not get rtas token for ibm,indicator-9005
Could not get rtas token for ibm,extended-os-term
Could not get rtas token for ibm,indicator-0001
Could not get rtas token for ibm,sensor-0009
Could not get rtas token for ibm,recoverable-epow3
Could not get rtas token for ibm,sensor-9005
Could not get rtas token for ibm,change-msix-capable
Could not get rtas token for ibm,sensor-0005
Could not get rtas token for ibm,sensor-0001
ibm,rks-hcalls 3758096384
Reported-by: Shirisha Ganta <shirisha@linux.ibm.com>
Signed-off-by: Likhitha Korrapati <likhitha@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/src/rtas_dbg.c b/src/rtas_dbg.c
index ebc7474..6c7854a 100644
--- a/src/rtas_dbg.c
+++ b/src/rtas_dbg.c
@@ -200,10 +200,10 @@ void print_rtas_tokens(struct rtas_token *tok, struct rtas_token *tok_list)
struct rtas_token *t;
if (tok)
- printf("%-40s%d\n", tok->name, tok->token);
+ printf("%-40s%u\n", tok->name, tok->token);
else {
for (t = tok_list; t; t = t->next)
- printf("%-40s%d\n", t->name, t->token);
+ printf("%-40s%u\n", t->name, t->token);
}
}
@@ -217,7 +217,7 @@ int set_rtas_dbg(struct rtas_token *tok)
args.nret = htobe32(1);
args.args[0] = htobe32(tok->token);
- printf("Enabling rtas debug for %s (%d)\n", tok->name, tok->token);
+ printf("Enabling rtas debug for %s (%u)\n", tok->name, tok->token);
rc = rtas(&args);

View File

@ -0,0 +1,65 @@
commit 46c524be975a108d2b8d1cadb95003b9c2670c8e
Author: Laurent Dufour <ldufour@linux.ibm.com>
Date: Thu Jun 29 16:41:37 2023 +0200
ppc64_cpu: Support partial SMT level through SYS FS smt/control files
The next kernel release will support partial SMT level [1] though the SYS
FS file "devices/system/cpu/smt/control". This allows the SMT level to be
recorded in the kernel. With the current SMT level stored in the kernel,
when a new CPU is added, only the necessary threads are brought online.
The legacy way to active threads through the SYS FS files
'devices/system/cpu/cpu<n>/online', is still used in the case the new SYS
FS API is not available. This allows compatibility with the previous kernel
versions.
[1] https://lore.kernel.org/linuxppc-dev/20230705145143.40545-1-ldufour@linux.ibm.com/
Signed-off-by: Laurent Dufour <ldufour@linux.ibm.com>
diff --git a/src/ppc64_cpu.c b/src/ppc64_cpu.c
index 5fdf86a..c33a293 100644
--- a/src/ppc64_cpu.c
+++ b/src/ppc64_cpu.c
@@ -56,6 +56,8 @@
#define DIAGNOSTICS_RUN_MODE 42
#define CPU_OFFLINE -1
+#define SYS_SMT_CONTROL "/sys/devices/system/cpu/smt/control"
+
#ifdef HAVE_LINUX_PERF_EVENT_H
struct cpu_freq {
int offline;
@@ -360,6 +362,20 @@ static int is_dscr_capable(void)
return 0;
}
+/*
+ * Depends on kernel's CONFIG_HOTPLUG_CPU
+ */
+static int set_smt_control(int smt_state)
+{
+ if (set_attribute(SYS_SMT_CONTROL, "%d", smt_state)) {
+ /* Silently ignore kernel not supporting this feature */
+ if (errno != ENODEV)
+ perror(SYS_SMT_CONTROL);
+ return -1;
+ }
+ return 0;
+}
+
static int do_smt(char *state, bool numeric)
{
int rc = 0;
@@ -388,7 +404,9 @@ static int do_smt(char *state, bool numeric)
return -1;
}
- rc = set_smt_state(smt_state);
+ /* Try using smt/control if failing, fall back to the legacy way */
+ if (set_smt_control(smt_state))
+ rc = set_smt_state(smt_state);
}
return rc;

View File

@ -1,18 +1,56 @@
Name: powerpc-utils
Version: 1.3.10
Release: 3%{?dist}
Release: 10%{?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
# 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
# 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 display of mode for dedicated-donating partition
Patch10: powerpc-utils-f4c2b0-fix_display_of_mode_for_dedicated_donating_partition.patch
# lparstat: Fix negative values seen while running lparstat with -E option
Patch11: powerpc-utils-73ba26-lparstat-fix_negative_values.patch
# report-mixed-SMT-state
Patch12: powerpc-utils-1.3.10-lparstat-report-mixed-SMT-state.patch
# Fix-offline-threads-uninitialized-entries
Patch13: powerpc-utils-1.3.10-lparstat-Fix-offline-threads-uninitialized-entries.patch
# ppc64_cpu: Support partial SMT level through SYS FS smt/control files
Patch14: powerpc-utils-support_partial_SMT_level_through_SYS_FS.patch
# new hook mechanism has been introduced in powerpc-utils allowing application to be aware of the ongoing LPM
patch15: powerpc-utils-c3ce3040ea9ed49345756136d61eb402e32402e8.patch
patch16: powerpc-utils-1ac96f8ab7c27095be90eb2e69ae57e8b43eccbe.patch
Patch17: powerpc-utils-f2a4619ef6be747f53e5f631f8b23b5edb9bb023.patch
Patch18: powerpc-utils-372599ed28d65a79d4c3b3405a8e04034eb58e09.patch
Patch19: powerpc-utils-e0928dc5e5375591a4cff6ffabc6063771288f59.patch
Patch20: powerpc-utils-d0bc79aedaf76eff09a5d1f399da09561a4d4d7d.patch
Patch21: powerpc-utils-7698adc945372e901c2bc3f7066a5a1c219bf1d8.patch
# lpar can't boot up after installation if nsid of nvme device is greater than 10.
Patch22: powerpc-utils-8a7aa61c5f520df03e53e6f7e1d63b7d5c432376.patch
# rtas_dbg -l returns large negativ value
Patch23: powerpc-utils-rtas_dbg_return_negativ_value.patch
# Support multiple dev paths for a nvme boot device
Patch24: 0001-scripts-bootlist-Support-multiple-dev-paths-for-a-nv.patch
ExclusiveArch: ppc %{power64}
@ -42,13 +80,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.
@ -57,7 +102,6 @@ Core utilities for maintaining and servicing PowerPC systems.
%prep
%autosetup -p1
%build
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
./autogen.sh
@ -77,6 +121,9 @@ install $RPM_BUILD_ROOT/usr/share/doc/packages/powerpc-utils/* -t $RPM_BUILD_ROO
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
# 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
@ -90,6 +137,9 @@ ln -s serv_config.8 %{buildroot}%{_mandir}/man8/uspchrp.8
# deprecated, use sosreport instead
rm -f $RPM_BUILD_ROOT%{_sbindir}/snap $RPM_BUILD_ROOT%{_mandir}/man8/snap.8*
# add hierachy /etc/drmgr.d/pmig
mkdir -p $RPM_BUILD_ROOT/etc/drmgr.d/pmig
%post core
%systemd_post hcn-init.service
# update the smt.state file with current SMT
@ -117,6 +167,7 @@ systemctl enable hcn-init.service >/dev/null 2>&1 || :
%files core
%license COPYING
%dir %{_localstatedir}/lib/powerpc-utils
%dir /etc/drmgr.d/pmig
%config(noreplace) %{_localstatedir}/lib/powerpc-utils/smt.state
%{_unitdir}/smtstate.service
%{_unitdir}/smt_off.service
@ -157,6 +208,7 @@ systemctl enable hcn-init.service >/dev/null 2>&1 || :
%{_sbindir}/pseries_platform
%{_sbindir}/drmgr
%{_sbindir}/lparnumascore
%{_udevrulesdir}/90-nx-gzip.rules
%{_mandir}/man1/amsstat.1*
%{_mandir}/man5/lparcfg.5*
%{_mandir}/man8/activate_firmware.8*
@ -188,112 +240,153 @@ systemctl enable hcn-init.service >/dev/null 2>&1 || :
%{_mandir}/man8/nvram.8*
%{_mandir}/man8/ofpathname.8*
%{_mandir}/man8/drmgr.8*
%{_mandir}/man8/drmgr-hooks.8*
%{_mandir}/man8/lparnumascore.8*
%changelog
* 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
%changelog
* Tue Jan 30 2024 Than Ngo <than@redhat.com> - 1.3.10-10
- Resolves: RHEL-22830, Support multiple dev paths for a nvme boot device
* Wed Jan 10 2024 Than Ngo <than@redhat.com> - 1.3.10-9
- Resolves: RHEL-20350, getting larger Negative value while running rtas_dbg -l
- Resolves: RHEL-19076, installation fails if nsid of nvme device is greater than 10
- Resolves: RHEL-11456, add new /etc/drmgr.d/pmig hierarchy
* Mon Nov 27 2023 Than Ngo <than@redhat.com> - 1.3.10-8
- Resolves: RHEL-16045, Support partial SMT level through SYS FS smt/control files
- Resolves: RHEL-11456, LPM hooks
* Wed Jul 26 2023 Than Ngo <than@redhat.com> - 1.3.10-7
- Fix negative values seen while running lpar
- Fix lparstat error with mixed SMT state
Resolves: #2225371
* Wed May 10 2023 Than Ngo <than@redhat.com> - 1.3.10-6
- Resolves: #2166870, lparstat: Fix display of mode for dedicated-donating partition
- Resolves: #2169269, lparstat: Fix negative values seen while running lparstat with -E option
* 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
* 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
* 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 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