Compare commits

..

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

24 changed files with 2017 additions and 507 deletions

1
.powerpc-utils.metadata Normal file
View File

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

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

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,265 +1,26 @@
diff -up powerpc-utils-1.3.5/man/pseries_platform.8.me powerpc-utils-1.3.5/man/pseries_platform.8 diff -up powerpc-utils-1.3.10/Makefile.am.than powerpc-utils-1.3.10/Makefile.am
--- powerpc-utils-1.3.5/man/pseries_platform.8.me 2018-11-29 16:50:07.601034729 +0100 --- powerpc-utils-1.3.10/Makefile.am.than 2023-11-27 22:07:33.391345328 +0100
+++ powerpc-utils-1.3.5/man/pseries_platform.8 2018-11-29 16:50:07.601034729 +0100 +++ powerpc-utils-1.3.10/Makefile.am 2023-11-27 22:06:38.715373360 +0100
@@ -0,0 +1,11 @@ @@ -26,6 +26,16 @@ sbin_SCRIPTS = \
+.\" scripts/hcnmgr
+.\" Copyright (C) 2015 International Business Machines
+.\" man_MANS = \
+.TH pseries_platform 8 "September 2015" Linux "Linux on Power Service Tools" + man/lsdevinfo.8 \
+.SH NAME + man/rtas_event_decode.8 \
+pseries_platform \- identify the platform and display the name of platform + man/ls-vdev.8 \
+.SH SYNOPSIS + man/lsprop.8 \
+.B /usr/bin/pseries_platform + man/ls-veth.8 \
+ + man/nvsetenv.8 \
+.SH DESCRIPTION + man/ls-vscsi.8 \
+The \fIpseries_platform\fR tool can identify the platform and display the name of platform. + man/pseries_platform.8 \
diff -up powerpc-utils-1.2.15/man/lsdevinfo.8.man powerpc-utils-1.2.15/man/lsdevinfo.8 + man/update_flash_nv.8 \
--- powerpc-utils-1.2.15/man/lsdevinfo.8.man 2013-01-16 15:31:13.886591137 +0100 + man/hcnmgr.8 \
+++ powerpc-utils-1.2.15/man/lsdevinfo.8 2013-01-16 15:31:13.886591137 +0100 man/activate_firmware.8 \
@@ -0,0 +1,39 @@ man/rtas_ibm_get_vpd.8 \
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36. man/uesensor.8 \
+.TH LSDEVINFO "8" "October 2010" "Linux" "Linux on Power Service Tools" diff -up powerpc-utils-1.3.10/man/hcnmgr.8.than powerpc-utils-1.3.10/man/hcnmgr.8
+.SH NAME --- powerpc-utils-1.3.10/man/hcnmgr.8.than 2023-11-27 22:05:20.283979110 +0100
+lsdevinfo - information on Virtual devices +++ powerpc-utils-1.3.10/man/hcnmgr.8 2023-11-27 22:05:20.283979110 +0100
+
+.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
@@ -0,0 +1,47 @@ @@ -0,0 +1,47 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. +.\" 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" +.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>. +was written by Mingming Cao <mingming.cao@ibm.com>.
+.PP +.PP
+This manual page was written by Than Ngo <than@redhat.com>. +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 diff -up powerpc-utils-1.3.10/man/lsdevinfo.8.than powerpc-utils-1.3.10/man/lsdevinfo.8
--- powerpc-utils-1.3.5/man/update_flash_nv.8.me 2018-11-29 16:49:51.344987106 +0100 --- powerpc-utils-1.3.10/man/lsdevinfo.8.than 2023-11-27 22:05:20.282979092 +0100
+++ powerpc-utils-1.3.5/man/update_flash_nv.8 2018-11-29 16:49:42.589961458 +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 @@ @@ -0,0 +1,15 @@
+.\" +.\"
+.\" Copyright (C) 2015 International Business Machines +.\" 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 +.SH SEE ALSO
+update_flash(8). +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,47 @@
commit d604cc779741c29cbdc8da97cbfc1512fd21fc1b
Author: Likhitha Korrapati <likhitha@linux.ibm.com>
Date: Fri Aug 11 00:41:14 2023 -0500
nvram man page and --help output are not in sync
The nvram man page and the output from --help option are not in
sync and few of the options are missing in man page.
The options that are missing are ascii, dump, nvram-size, zero.
These options are added through the commit ids [1], [2].
This patch adds the above missing options to the nvram.
[1] https://github.com/ibm-power-utilities/powerpc-utils/commit/0e09f4e2898e7dea556479b018a7f4bf12108099
[2] https://github.com/ibm-power-utilities/powerpc-utils/commit/976dbe9bb7b01b135cac3e7bbd1dce0cdc88636a
Signed-off-by: Likhitha Korrapati <likhitha@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/man/nvram.8 b/man/nvram.8
index 2938e34..6071712 100644
--- a/man/nvram.8
+++ b/man/nvram.8
@@ -67,6 +67,22 @@ be more verbose.
\fB\--help
print usage information including other low level options useful for
debugging nvram.
+.TP
+\fB\--ascii \fIname
+print partition contents as ASCII text
+.TP
+\fB\--dump \fIname
+raw dump of partition (use --partitions to see names)
+.TP
+\fB\--nvram-size
+specify size of nvram data, must in multiples of 16 Bytes (for repair
+operations)
+.TP
+\fB\--unzip \fIname
+decompress and print compressed data from partition
+.TP
+\fB\--zero | 0 \fR
+terminate config pairs with a NULL character
.SH FILES
/dev/nvram
.SH AUTHOR

View File

@ -0,0 +1,47 @@
commit 3f72b8326a2fc9a9dffb4b31d0ce3abf12e24751
Author: Likhitha Korrapati <likhitha@linux.ibm.com>
Date: Thu Jan 25 15:44:02 2024 +0530
powerpc/nvram: fix segmentation fault issue in print-config
print-config option in nvram results in segmentation fault when the
user provides a very large value.
without the patch:
[root@xxx powerpc-utils]# nvram --print-config=real-mode?
true
[root@xxx powerpc-utils]# nvram --print-config=$(perl -e 'p
rint "A"x1000000')
Segmentation fault (core dumped)
The Segmentation fault occurs because the code tries to access memory
beyond the bounds of the data at index varlen. varlen is the length of
the string provided by the user.
This patch adds a condition to check whether the length of the data is
greater than varlen to prevent accessing out of bounds.
with the patch:
[root@xxx powerpc-utils]# ./src/nvram --print-config=real-m
ode?
true
[root@xxx powerpc-utils]# ./src/nvram --print-config=$(perl
-e 'print "A"x1000000')
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/nvram.c b/src/nvram.c
index f051e9c..095e747 100644
--- a/src/nvram.c
+++ b/src/nvram.c
@@ -1280,7 +1280,7 @@ print_of_config(struct nvram *nvram, char *config_var, char *pname,
data = (char *)phead + sizeof(*phead);
while (*data != '\0') {
- if ((data[varlen] == '=') &&
+ if (strlen(data) > varlen && (data[varlen] == '=') &&
strncmp(config_var, data, varlen) == 0) {
printf("%s%c", data + varlen + 1, terminator);
rc = 0;

View File

@ -0,0 +1,51 @@
commit a6d31caf4eaa453d3ec879f02163b3a515789b85
Author: Likhitha Korrapati <likhitha@linux.ibm.com>
Date: Mon Sep 11 05:23:37 2023 -0500
powerpc/nvram: Fix Segmentation fault issue in nvram-size.
nvram-size option results in segmentation fault when the user
specifies value larger than the default nvram size
Without the patch:
[root@xxx ~]# nvram --nvram-size 1048592
nvram: WARNING: expected 1048592 bytes, but only read 15360!
Segmentation fault (core dumped)
Segmentation fault is caused because the phead->length is becoming 0.
And because of this the p_start doesn't get updated which makes the
while loop run infinitely resulting in segmentation fault.
This patch adds a condition check for phead->length to avoid infinite
while loop.
With the patch:
[root@xxx src]# ./nvram --nvram-size 1048592
./nvram: WARNING: expected 1048592 bytes, but only read 15360!
[root@xxx src]# ./nvram --nvram-size 268435456
./nvram: WARNING: expected 268435456 bytes, but only read 15360!
[root@xxx src]#
Reported-by: Shirisha Ganta <shirisha@linux.ibm.com>
Signed-off-by: Likhitha Korrapati <likhitha@linux.ibm.com>
[tyreld: fixed up else block]
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/src/nvram.c b/src/nvram.c
index 095e747..1987c3d 100644
--- a/src/nvram.c
+++ b/src/nvram.c
@@ -460,8 +460,12 @@ nvram_parse_partitions(struct nvram *nvram)
c_sum = checksum(phead);
if (c_sum != phead->checksum)
warn_msg("this partition checksum should be %02x!\n", c_sum);
- phead->length = be16toh(phead->length);
- p_start += phead->length * NVRAM_BLOCK_SIZE;
+ if (phead->length != 0) {
+ phead->length = be16toh(phead->length);
+ p_start += phead->length * NVRAM_BLOCK_SIZE;
+ } else {
+ break;
+ }
}
if (verbose)

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

@ -1,41 +1,3 @@
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 diff --git a/src/lparstat.c b/src/lparstat.c
index 0b30fc9..e998e8c 100644 index 0b30fc9..e998e8c 100644
--- a/src/lparstat.c --- a/src/lparstat.c

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,27 +1,68 @@
Name: powerpc-utils Name: powerpc-utils
Version: 1.3.10 Version: 1.3.10
Release: 6%{?dist} Release: 11%{?dist}
Summary: PERL-based scripts for maintaining and servicing PowerPC systems Summary: PERL-based scripts for maintaining and servicing PowerPC systems
Group: System Environment/Base
License: GPLv2 License: GPLv2
URL: https://github.com/ibm-power-utilities/powerpc-utils URL: https://github.com/ibm-power-utilities/powerpc-utils
Source0: https://github.com/ibm-power-utilities/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz Source0: https://github.com/ibm-power-utilities/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz
Source1: nx-gzip.udev Source1: nx-gzip.udev
Patch0: powerpc-utils-1.3.10-manpages.patch Patch0: powerpc-utils-1.3.10-manpages.patch
Patch1: powerpc-utils-1.3.10-distro.patch Patch1: powerpc-utils-1.3.10-distro.patch
# bz#2121470, Fix lsslot -c mem output when using 4GB LMB size # bz#2121470, Fix lsslot -c mem output when using 4GB LMB size
Patch3: powerpc-utils-b1b9e7-LMB_size_4GB.patch Patch3: powerpc-utils-b1b9e7-LMB_size_4GB.patch
Patch4: powerpc-utils-e1f1de-lmb_address_in_hexadecimal.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
# lparstat: Fix-negative-values-seen-while-running-lpar # bz#2110129, Add NVMf-FC boot support for Power - powerpc-utils
Patch10: powerpc-utils-1.3.10-lparstat-Fix-negative-values-seen-while-running-lpar.patch 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 # report-mixed-SMT-state
Patch11: powerpc-utils-1.3.10-lparstat-report-mixed-SMT-state.patch Patch12: powerpc-utils-1.3.10-lparstat-report-mixed-SMT-state.patch
# Fix-offline-threads-uninitialized-entries # Fix-offline-threads-uninitialized-entries
Patch12: powerpc-utils-1.3.10-lparstat-Fix-offline-threads-uninitialized-entries.patch 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
# segault when running nvram --print-config
Patch25: powerpc-utils-1.3.10-nvram-print-config-crash.patch
# segault when running nvram --nvram-size 268435456
Patch26: powerpc-utils-1.3.10-nvram-size-crash.patch
# nvram help page and man page are not in sync
Patch27: powerpc-utils-1.3.10-nvram-manpage.patch
ExclusiveArch: ppc %{power64} ExclusiveArch: ppc %{power64}
@ -51,13 +92,20 @@ Requires(preun): systemd
Requires(postun): systemd Requires(postun): systemd
Requires: kmod Requires: kmod
Requires: which Requires: which
Requires: gawk Requires: /usr/bin/awk
Requires: bc Requires: /usr/bin/basename
Requires: findutils Requires: /usr/bin/bc
Requires: grep Requires: /usr/bin/cat
Requires: sed Requires: /usr/bin/cut
Requires: systemd-udev Requires: /usr/bin/echo
Requires: coreutils 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 %description core
Core utilities for maintaining and servicing PowerPC systems. Core utilities for maintaining and servicing PowerPC systems.
@ -66,7 +114,6 @@ Core utilities for maintaining and servicing PowerPC systems.
%prep %prep
%autosetup -p1 %autosetup -p1
%build %build
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
./autogen.sh ./autogen.sh
@ -102,6 +149,9 @@ ln -s serv_config.8 %{buildroot}%{_mandir}/man8/uspchrp.8
# deprecated, use sosreport instead # deprecated, use sosreport instead
rm -f $RPM_BUILD_ROOT%{_sbindir}/snap $RPM_BUILD_ROOT%{_mandir}/man8/snap.8* 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 %post core
%systemd_post hcn-init.service %systemd_post hcn-init.service
# update the smt.state file with current SMT # update the smt.state file with current SMT
@ -129,7 +179,8 @@ systemctl enable hcn-init.service >/dev/null 2>&1 || :
%files core %files core
%license COPYING %license COPYING
%dir %{_localstatedir}/lib/powerpc-utils %dir %{_localstatedir}/lib/powerpc-utils
%config(noreplace) %{_localstatedir}/lib/powerpc-utils/smt.state %dir /etc/drmgr.d/pmig
%verify(not md5 size mtime) %config(noreplace) %{_localstatedir}/lib/powerpc-utils/smt.state
%{_unitdir}/smtstate.service %{_unitdir}/smtstate.service
%{_unitdir}/smt_off.service %{_unitdir}/smt_off.service
%{_unitdir}/hcn-init.service %{_unitdir}/hcn-init.service
@ -201,123 +252,158 @@ systemctl enable hcn-init.service >/dev/null 2>&1 || :
%{_mandir}/man8/nvram.8* %{_mandir}/man8/nvram.8*
%{_mandir}/man8/ofpathname.8* %{_mandir}/man8/ofpathname.8*
%{_mandir}/man8/drmgr.8* %{_mandir}/man8/drmgr.8*
%{_mandir}/man8/drmgr-hooks.8*
%{_mandir}/man8/lparnumascore.8* %{_mandir}/man8/lparnumascore.8*
%changelog %changelog
* Wed Jul 26 2023 Than Ngo <than@redhat.com> - 1.3.10-6 * Sat Jun 29 2024 Than Ngo <than@redhat.com> - 1.3.10-11
- Resolves: RHEL-23620, nvram help page and man page are not in sync
- Resolves: RHEL-23619, segault when running nvram --nvram-size 268435456
- Resolves: RHEL-23624, segault when running nvram --print-config
* 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 negative values seen while running lpar
- Fix lparstat error with mixed SMT state - Fix lparstat error with mixed SMT state
Resolves: #2225135 Resolves: #2225371
* Sat Jun 17 2023 Than Ngo <than@redhat.com> - 1.3.10-5 * Wed May 10 2023 Than Ngo <than@redhat.com> - 1.3.10-6
- Resolves: #2207649, Add udev rule for the nx-gzip in to the core subpackage - Resolves: #2166870, lparstat: Fix display of mode for dedicated-donating partition
- Resolves: #2169269, lparstat: Fix negative values seen while running lparstat with -E option
* Tue Apr 25 2023 Than Ngo <than@redhat.com> - 1.3.10-4 * Mon Dec 12 2022 Than Ngo <than@redhat.com> - 1.3.10-5
- Resolves: #2166871, lparstat showing incorrect mode in a dedicated-donating LPAR - Resolves: #2125152, HNV bond fails to come up with sriov interface as active slave
* Mon Nov 28 2022 Than Ngo <than@redhat.com> - 1.3.10-3 * Thu Dec 08 2022 Than Ngo <than@redhat.com> - 1.3.10-4
- Resolves: #2148878, HNV bond fails to come up with sriov interface as active slave - Resolves: #2150698, handle nsid of nvmf device as hexadecimal number
- Resolves: #2150697, setup multiple device path for a nvmf boot device
* Fri Oct 21 2022 Than Ngo <than@redhat.com> - 1.3.10-2 * Thu Nov 03 2022 Than Ngo <than@redhat.com> - 1.3.10-3
- Resolves: #2121481, Fix lsslot -c mem output when using 4GB LMB size - 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 * Mon Jun 06 2022 Than Ngo <than@redhat.com> - 1.3.10-1
- Resolves: #2051330, Linux Hybrid Network Virtualization update - Resolves: #1920964, P10 Power Mode Reporting
- Resolves: #2083469, smtstate --save command failed - 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 * Fri Jan 14 2022 Than Ngo <than@redhat.com> - 1.3.9-6
- Resolves: #2059459, add new DRC type description strings for latest PCIe slot types - Resolves: #2039201, santize devspec output of a newline if one is present
- Resolves: #2078514, Fix NM HNV setting primary slave
- Resolves: #2083469, smtstate test failed as smtstate --save command failed
* Thu Dec 09 2021 Than Ngo <than@redhat.com> - 1.3.9-1 * Tue Dec 07 2021 Than Ngo <than@redhat.com> - 1.3.9-5
- Resolves: #2028690, rebase to 1.3.9 - 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 * Thu Nov 11 2021 Than Ngo <than@redhat.com> - 1.3.9-4
- Related: #2022225, increase release - 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 * Wed Oct 20 2021 Than Ngo <than@redhat.com> - 1.3.9-3
- Resolves: #2022225, enable support vnic as backend for HNV interfaces - Resolves: #2014916, marked smt.state as %%ghost
* Thu Oct 07 2021 Than Ngo <than@redhat.com> - 1.3.8-8 * Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 1.3.9-2
- lsdevinfo: optimize criteria filtering - 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 * Mon Jul 19 2021 Than Ngo <than@redhat.com> - 1.3.9-1
- Related: #1938420, Fix checking HCNID array size at boot time - Resolves: #1873868, rebase to 1.3.9
* Thu Apr 01 2021 Than Ngo <than@redhat.com> - 1.3.8-6 * Fri Jun 11 2021 Than Ngo <than@redhat.com> - 1.3.8-9
- Resolves: #1935658, New lparstat -x option to report the security flavor - Resolves: #1937038, New lparstat -x option to report the security flavor
- Resolves: #1953818, Use od instead xxd - Use od instead xxd
- Resolves: #1938420, rebase patch fix_boot-time_bonding_interface_cleanup_and_avoid_use_ifcfg - rebase patch fix_boot-time_bonding_interface_cleanup_and_avoid_use_ifcfg
- Resolves: #1940358, ppc64_cpu --help does not list --version as an option - ppc64_cpu --help does not list --version as an option
- Resolves: #1951068, take care of NUMA topology when removing memory (DLPAR) - take care of NUMA topology when removing memory (DLPAR)
* Wed Feb 03 2021 Than Ngo <than@redhat.com> - 1.3.8-5 * Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1.3.8-8
- Resolves: #1924150, Fix boot-time bonding interface cleanup and avoid use ifcfg - 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 * Mon Feb 08 2021 Than Ngo <than@redhat.com> - 1.3.8-7
- Resolves: #1909526, additional patches to support Linux Hybrid Network Virtualization - updated hcnmgr manpage
- Resolves: #1909135, move commands that dont depend on perl to core subpackage
* Tue Oct 06 2020 Than Ngo <than@redhat.com> - 1.3.8-3 * Mon Feb 08 2021 Than Ngo <than@redhat.com> - 1.3.8-6
- Resolves: #1868474, ofpathname: Use NVMe controller physical nsid - Fix boot-time bonding interface cleanup and avoid use ifcfg
- Resolves: #1885532, sys_ident: Skip length field from search
* 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 * 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 * Fri Sep 04 2020 Than Ngo <than@redhat.com> - 1.3.8-1
- Resolves: #1853297, rebase to 1.3.8 - update to 1.3.8
- Resolves: #1802181, SR-IOV - Linux Hybrid Network Virtualization
- Resolves: #1844421, Include vcpustat
* Wed Jun 24 2020 Than Ngo <than@redhat.com> - 1.3.6-11 * Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.7-7
- Resolves: #1847604, ofpathname: failed to boot - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Fri Jun 19 2020 Than Ngo <than@redhat.com> - 1.3.6-10 * Thu Jul 09 2020 Than Ngo <than@redhat.com> - 1.3.7-6
- Resolves: #1848839, update lparstat man page with -E option - 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 * Sat Mar 28 2020 Than Ngo <than@redhat.com> - 1.3.7-5
- Resolves: #1837751, ofpathname: speed up l2of_scsi() - move drmgr in core to avoid pulling in Perl
* Fri May 15 2020 Than Ngo <than@redhat.com> - 1.3.6-8 * Mon Mar 09 2020 Than Ngo <than@redhat.com> - 1.3.7-4
- Related: #1783285, update the patches V4 - 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 * Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.7-3
- Resolves: #1783285, Track and expose idle PURR and SPURR ticks - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Wed Mar 25 2020 Than Ngo <than@redhat.com> - 1.3.6-6 * Thu Dec 19 2019 Than Ngo <than@redhat.com> - 1.3.7-2
- Resolves: #1819566 - move drmgr in core to avoid pulling in Perl - add systemd service to set default system SMT mode
- Resolves: #1806870 - ignored null byte in input
- Resolves: #1779197 - enable support for ibm,drc-info property
* Wed Dec 04 2019 Than Ngo <than@redhat.com> - 1.3.6-5 * Wed Dec 18 2019 Than Ngo <than@redhat.com> - 1.3.7-1
- Resolves: #1779257, Safe bootlist update - update to 1.3.7
* Wed Jul 24 2019 Than Ngo <than@redhat.com> - 1.3.6-4 * Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.6-3
- Resolves: #1719372 - wrong disk gets booted after installation - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Fri Jun 07 2019 Than Ngo <than@redhat.com> - 1.3.6-3 * Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.6-2
- Resolves: #1718254, improve handling of errors from subsidiary scripts - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Wed Jun 05 2019 Than Ngo <than@redhat.com> - 1.3.6-2 * Wed Jan 16 2019 Than Ngo <than@redhat.com> - 1.3.6-1
- Resolves: #1716425, lparstat and update_flash fixes - update to 1.3.6
* Mon Apr 01 2019 Than Ngo <than@redhat.com> - 1.3.6-1 * Fri Nov 30 2018 Than Ngo <than@redhat.com> - 1.3.5-4
- Resolves: #1666618, rebase to 1.3.6 - install missing pseries_platform and update_flash_nv man pages
* Tue Dec 04 2018 Than Ngo <than@redhat.com> - 1.3.5-5 * Thu Nov 29 2018 Than Ngo <than@redhat.com> - 1.3.5-3
- Related: #1655903, add missing man pages - added pseries_platform and update_flash_nv man pages
* Tue Dec 04 2018 Than Ngo <than@redhat.com> - 1.3.5-4 * Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.5-2
- Resolves: #1655903, lsslot -c mem is not displaying any information - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* 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
* Mon Jun 18 2018 Dan Horák <dan[at]danny.cz> - 1.3.5-1 * Mon Jun 18 2018 Dan Horák <dan[at]danny.cz> - 1.3.5-1
- Rebased to 1.3.5 - Rebased to 1.3.5