Resolves: RHEL-16045, Support partial SMT level through SYS FS smt/control files

Resolves: RHEL-11456, LPM hooks
This commit is contained in:
Than Ngo 2023-11-28 10:00:36 +01:00
parent 3438b55ded
commit 5aa234473f
10 changed files with 1023 additions and 308 deletions

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,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,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,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,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,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,32 +1,51 @@
Name: powerpc-utils Name: powerpc-utils
Version: 1.3.10 Version: 1.3.10
Release: 7%{?dist} Release: 8%{?dist}
Summary: PERL-based scripts for maintaining and servicing PowerPC systems Summary: PERL-based scripts for maintaining and servicing PowerPC systems
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
# bz#2110129, Add NVMf-FC boot support for Power - powerpc-utils # bz#2110129, Add NVMf-FC boot support for Power - powerpc-utils
Patch5: powerpc-utils-c01580-add_NVMf-FC_boot_support_part1.patch Patch5: powerpc-utils-c01580-add_NVMf-FC_boot_support_part1.patch
Patch6: powerpc-utils-2fbd7c-add_NVMf-FC_boot_support_part2.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 Patch7: powerpc-utils-git3847a1-support_multiple_dev_paths_for_a_nvmf_boot_device.patch
Patch8: powerpc-utils-git04e5c9-handle_nsid_as_hex.patch Patch8: powerpc-utils-git04e5c9-handle_nsid_as_hex.patch
Patch9: powerpc-utils-fix_setting_primary_slave_across_reboots.patch Patch9: powerpc-utils-fix_setting_primary_slave_across_reboots.patch
# lparstat: Fix display of mode for dedicated-donating partition # lparstat: Fix display of mode for dedicated-donating partition
Patch10: powerpc-utils-f4c2b0-fix_display_of_mode_for_dedicated_donating_partition.patch Patch10: powerpc-utils-f4c2b0-fix_display_of_mode_for_dedicated_donating_partition.patch
# lparstat: Fix negative values seen while running lparstat with -E option # lparstat: Fix negative values seen while running lparstat with -E option
Patch11: powerpc-utils-73ba26-lparstat-fix_negative_values.patch Patch11: powerpc-utils-73ba26-lparstat-fix_negative_values.patch
# report-mixed-SMT-state # report-mixed-SMT-state
Patch12: 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
Patch13: 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
ExclusiveArch: ppc %{power64} ExclusiveArch: ppc %{power64}
BuildRequires: gcc BuildRequires: gcc
@ -211,10 +230,15 @@ 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
* 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 * 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