[Skiboot] [PATCH] pci: recheck pci nvram hacks on fast-reboot
Oliver O'Halloran
oohall at gmail.com
Tue Aug 20 20:31:38 AEST 2019
Sometimes it's useful to fiddle with some of the PCI NVRAM options that
we have. Currently this is mostly for enabling and disabling pci-tracing
mode, but having a common place for this stuff is a good idea.
Signed-off-by: Oliver O'Halloran <oohall at gmail.com>
---
core/fast-reboot.c | 3 +++
core/init.c | 5 ++++-
hw/phb4.c | 2 --
include/pci.h | 5 ++++-
4 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/core/fast-reboot.c b/core/fast-reboot.c
index ed5f54671692..9631eb96d072 100644
--- a/core/fast-reboot.c
+++ b/core/fast-reboot.c
@@ -433,6 +433,9 @@ void __noreturn fast_reboot_entry(void)
psi_irq_reset();
}
+ /* update pci nvram settings */
+ pci_nvram_init();
+
/* Remove all PCI devices */
if (pci_reset()) {
prlog(PR_NOTICE, "RESET: Fast reboot failed to reset PCI\n");
diff --git a/core/init.c b/core/init.c
index 60871d36a7f6..8d455230fc18 100644
--- a/core/init.c
+++ b/core/init.c
@@ -48,6 +48,7 @@
enum proc_gen proc_gen;
unsigned int pcie_max_link_speed;
+bool pci_tracing;
bool verbose_eeh;
extern const char version[];
@@ -844,7 +845,7 @@ static void per_thread_sanity_checks(void)
assert(cpu->state != cpu_state_no_cpu);
}
-static void pci_nvram_init(void)
+void pci_nvram_init(void)
{
const char *nvram_speed;
@@ -860,6 +861,8 @@ static void pci_nvram_init(void)
prlog(PR_NOTICE, "PHB: NVRAM set max link speed to GEN%i\n",
pcie_max_link_speed);
}
+
+ pci_tracing = nvram_query_eq_safe("pci-tracing", "true");
}
static uint32_t mem_csum(void *_p, void *_e)
diff --git a/hw/phb4.c b/hw/phb4.c
index c932cf980fd7..3c71427aef2f 100644
--- a/hw/phb4.c
+++ b/hw/phb4.c
@@ -138,7 +138,6 @@ static void phb4_init_hw(struct phb4 *p);
#define PHB4_CAN_STORE_EOI(p) XIVE_STORE_EOI_ENABLED
-static bool pci_tracing;
static bool pci_eeh_mmio;
static bool pci_retry_all;
static int rx_err_max = PHB4_RX_ERR_MAX;
@@ -5946,7 +5945,6 @@ void probe_phb4(void)
struct dt_node *np;
const char *s;
- pci_tracing = nvram_query_eq_safe("pci-tracing", "true");
pci_eeh_mmio = !nvram_query_eq_dangerous("pci-eeh-mmio", "disabled");
pci_retry_all = nvram_query_eq_dangerous("pci-retry-all", "true");
s = nvram_query_dangerous("phb-rx-err-max");
diff --git a/include/pci.h b/include/pci.h
index 220d6b187f5f..dcd354a7cfef 100644
--- a/include/pci.h
+++ b/include/pci.h
@@ -356,8 +356,11 @@ enum phb_type {
phb_type_npu_v3,
};
-
+/* Generic PCI NVRAM flags */
extern bool verbose_eeh;
+extern bool pci_tracing;
+
+void pci_nvram_init(void);
struct phb {
struct dt_node *dt_node;
--
2.21.0
More information about the Skiboot
mailing list