diff options
author | crgeddes <crgeddes@us.ibm.com> | 2017-07-18 13:12:19 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-07-26 13:31:43 -0400 |
commit | dee7ffab5ecdfcccd643125d9d5c94e1479d63a2 (patch) | |
tree | a7de7dd7eb0897b9226279a8d1b4b0df87bb010b /src/kernel | |
parent | e0e8a621a681d98d3ad0a3fb0a03abc203d3ca03 (diff) | |
download | talos-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.C | 8 |
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; } |