File drmgr-load-rpadlpar_io-on-C-as-well.patch of Package powerpc-utils.8401
From 93bf5ade0d35392b342a5a8c9f56c9c5d3e957db Mon Sep 17 00:00:00 2001
From: Michal Suchanek <msuchanek@suse.de>
Date: Thu, 30 Nov 2017 18:14:11 +0100
Subject: [PATCH] drmgr: load rpadlpar_io on -C as well
References: bnc#1064039, bsc#1070113
Users do drmgr -C to verify their system.
However, -C does not select any hotplug type, and the rpadlpar_io kernel
module is loaded only when hotplug type pci, phb or slot is selected.
Make display_capabilities global and check it in check_kmods()
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
---
src/drmgr/common.c | 4 ++--
src/drmgr/dr.h | 1 +
src/drmgr/drmgr.c | 1 -
src/drmgr/options.c | 3 +++
4 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/drmgr/common.c b/src/drmgr/common.c
index f91ad82bc9b3..6e892652be68 100644
--- a/src/drmgr/common.c
+++ b/src/drmgr/common.c
@@ -114,13 +114,13 @@ static int check_kmods(void)
/* We only need to do this for PHB/SLOT/PCI operations */
if (usr_drc_type != DRC_TYPE_PCI && usr_drc_type != DRC_TYPE_PHB &&
- usr_drc_type != DRC_TYPE_SLOT)
+ usr_drc_type != DRC_TYPE_SLOT && !display_capabilities)
return 0;
/* We don't use rpadlar_io/rpaphp for PCI operations run with the
* -v / virtio flag, which relies on generic PCI rescan instead
*/
- if (usr_drc_type == DRC_TYPE_PCI && pci_virtio)
+ if (usr_drc_type == DRC_TYPE_PCI && pci_virtio && !display_capabilities)
return 0;
/* Before checking for dlpar capability, we need to ensure that
diff --git a/src/drmgr/dr.h b/src/drmgr/dr.h
index 93785b646377..d5295808afb5 100644
--- a/src/drmgr/dr.h
+++ b/src/drmgr/dr.h
@@ -68,6 +68,7 @@ enum drc_type {DRC_TYPE_NONE, DRC_TYPE_PCI, DRC_TYPE_SLOT, DRC_TYPE_PHB,
DRC_TYPE_HIBERNATE, DRC_TYPE_MIGRATION};
extern enum drmgr_action usr_action;
+extern int display_capabilities;
extern int usr_slot_identification;
extern int usr_timeout;
extern char *usr_drc_name;
diff --git a/src/drmgr/drmgr.c b/src/drmgr/drmgr.c
index 6777e7fe23ee..09e842720acf 100644
--- a/src/drmgr/drmgr.c
+++ b/src/drmgr/drmgr.c
@@ -38,7 +38,6 @@ int output_level = 1; /* default to lowest output level */
int log_fd = 0;
int action_cnt = 0;
-static int display_capabilities = 0;
static int handle_prrn_event = 0;
static int display_usage = 0;
diff --git a/src/drmgr/options.c b/src/drmgr/options.c
index 1ace27dd5547..eae6c9013092 100644
--- a/src/drmgr/options.c
+++ b/src/drmgr/options.c
@@ -21,6 +21,9 @@
/* Global User Specifications */
enum drmgr_action usr_action = NONE;
+/* the init routines may need to know this to enable all features */
+int display_capabilities = 0;
+
/* default is to do slot identification, unless the drmgr -I
* option is specified.
*/
--
2.13.6