From 240f26001382001974fff7d62367e58df3f7b1db Mon Sep 17 00:00:00 2001 From: Bill Hoffa Date: Mon, 10 Apr 2017 14:43:51 -0500 Subject: Include HUID of failed Proc in TI data for certain SBE errors - Include a generic error pipleline for other future error scenarios to leverage this functionality Change-Id: Icc1399ee93157c7106d394944a3355285a8cd830 RTC: 171865 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/39072 Reviewed-by: Martin Gloff Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Tested-by: FSP CI Jenkins Reviewed-by: Prachi Gupta Reviewed-by: Daniel M. Crowell --- src/kernel/cpumgr.C | 4 ++-- src/kernel/misc.C | 5 +++-- src/kernel/syscall.C | 5 +++-- src/kernel/terminate.C | 7 +++++-- 4 files changed, 13 insertions(+), 8 deletions(-) (limited to 'src/kernel') diff --git a/src/kernel/cpumgr.C b/src/kernel/cpumgr.C index f7cb25961..e6c8348f5 100644 --- a/src/kernel/cpumgr.C +++ b/src/kernel/cpumgr.C @@ -109,7 +109,7 @@ void CpuManager::init_slave_smp(cpu_t* cpu) Singleton::instance().startSlaveCPU(cpu); } -void CpuManager::requestShutdown(uint64_t i_status) +void CpuManager::requestShutdown(uint64_t i_status, uint32_t i_error_data) { cv_shutdown_status = i_status; __sync_synchronize(); @@ -129,7 +129,7 @@ void CpuManager::requestShutdown(uint64_t i_status) } else { - termWriteSRC(TI_SHUTDOWN,i_status, 0); + termWriteSRC(TI_SHUTDOWN,i_status, 0, i_error_data); } printk("TI initiated on all threads (shutdown)\n"); diff --git a/src/kernel/misc.C b/src/kernel/misc.C index 9c7ec7883..963c0a75c 100644 --- a/src/kernel/misc.C +++ b/src/kernel/misc.C @@ -54,10 +54,11 @@ KernelIpc::start_payload_data_area_t KernelIpc::start_payload_data_area; namespace KernelMisc { - uint64_t g_payload_base = 0; + uint64_t g_payload_base = 0; uint64_t g_payload_entry = 0; - uint64_t g_payload_data = 0; + uint64_t g_payload_data = 0; uint64_t g_masterHBInstance = 0xfffffffffffffffful; + uint32_t g_error_data = 0; void shutdown() { diff --git a/src/kernel/syscall.C b/src/kernel/syscall.C index 44edff61a..adef18afe 100644 --- a/src/kernel/syscall.C +++ b/src/kernel/syscall.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2010,2016 */ +/* Contributors Listed Below - COPYRIGHT 2010,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -690,7 +690,8 @@ namespace Systemcalls KernelMisc::g_payload_entry = static_cast(TASK_GETARG2(t)); KernelMisc::g_payload_data = static_cast(TASK_GETARG3(t)); KernelMisc::g_masterHBInstance= static_cast(TASK_GETARG4(t)); - CpuManager::requestShutdown(status); + KernelMisc::g_error_data= static_cast(TASK_GETARG5(t)); + CpuManager::requestShutdown(status, KernelMisc::g_error_data); TASK_SETRTN(t, 0); } diff --git a/src/kernel/terminate.C b/src/kernel/terminate.C index 9b3fb7278..c39f2924c 100644 --- a/src/kernel/terminate.C +++ b/src/kernel/terminate.C @@ -66,11 +66,14 @@ void termWritePlid(uint16_t i_source, uint32_t plid) kernel_TIDataArea.plid = plid; } -void termWriteSRC(uint16_t i_source, uint16_t i_reasoncode,uint64_t i_failAddr) +void termWriteSRC(uint16_t i_source, uint16_t i_reasoncode,uint64_t i_failAddr, + uint32_t i_error_data) { - // Update the TI structure with the type of TI and who called. + // Update the TI structure with the type of TI, who called, + // and extra error data (if applicable, otherwise 0) kernel_TIDataArea.type = TI_WITH_SRC; kernel_TIDataArea.source = i_source; + kernel_TIDataArea.error_data = i_error_data; // Update TID data area with the SRC info we have avail kernel_TIDataArea.src.ID = 0xBC; -- cgit v1.2.3