summaryrefslogtreecommitdiffstats
path: root/src/kernel
diff options
context:
space:
mode:
authorcrgeddes <crgeddes@us.ibm.com>2017-07-18 13:12:19 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-07-26 13:31:43 -0400
commitdee7ffab5ecdfcccd643125d9d5c94e1479d63a2 (patch)
treea7de7dd7eb0897b9226279a8d1b4b0df87bb010b /src/kernel
parente0e8a621a681d98d3ad0a3fb0a03abc203d3ca03 (diff)
downloadtalos-hostboot-dee7ffab5ecdfcccd643125d9d5c94e1479d63a2.tar.gz
talos-hostboot-dee7ffab5ecdfcccd643125d9d5c94e1479d63a2.zip
Update kernel/exeception.C to handle cresp for loads
Previously two bits were covering SLB type machine checks. One of those bits now represents cresp load machine checks. This commit makes it so that cresp load machine checks no longer go down the SLB handling path. Also adds in some more printks for the next developer. RTC: 156832 Change-Id: I3e03601f20b85dc9dec9c5fc2319c28472c03240 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/43354 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Martin Gloff <mgloff@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/exception.C8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/kernel/exception.C b/src/kernel/exception.C
index 781e7941d..0ece19a63 100644
--- a/src/kernel/exception.C
+++ b/src/kernel/exception.C
@@ -308,13 +308,15 @@ void kernel_execute_softpatch()
const uint64_t EXCEPTION_MSR_PR_BIT_MASK = 0x0000000000004000;
const uint64_t EXCEPTION_SRR1_LOADSTORE_ERR = 0x0000000000200000;
const uint64_t EXCEPTION_DSISR_LD_UE_INTERRUPT = 0x0000000000008000;
-const uint64_t EXCEPTION_DSISR_SLB_ERRORS = 0x00000000000000C0;
+const uint64_t EXCEPTION_DSISR_SLB_ERRORS = 0x0000000000000080;
extern "C"
void kernel_execute_machine_check()
{
task_t* t = TaskManager::getCurrentTask();
+ printk("Machine Check Occurred!\n");
+
//PR (bit 49) = 0 indicates hypervisor mode
// Which indicates kernel mode in Hostboot env.
if(!(getSRR1() & EXCEPTION_MSR_PR_BIT_MASK))
@@ -334,14 +336,17 @@ void kernel_execute_machine_check()
// Error in load/store.
if (getSRR1() & EXCEPTION_SRR1_LOADSTORE_ERR)
{
+ printk("found a loadstore err!\n");
// SUE on load instruction.
if (getDSISR() & EXCEPTION_DSISR_LD_UE_INTERRUPT)
{
+ printk("handling Load UE exception..\n");
handled = Kernel::MachineCheck::handleLoadUE(t);
}
// SLB parity or multi-hit.
else if (getDSISR() & EXCEPTION_DSISR_SLB_ERRORS)
{
+ printk("handling SLB exception..\n");
handled = Kernel::MachineCheck::handleSLB(t);
}
}
@@ -368,6 +373,7 @@ void kernel_execute_machine_check()
case SRR1_ERR_IFU_SLB_P:
case SRR1_ERR_IFU_SLB_MH:
case SRR1_ERR_IFU_SLB_MHP:
+ printk("handling Load SLB ... \n");
handled = Kernel::MachineCheck::handleSLB(t);
break;
}
OpenPOWER on IntegriCloud