summaryrefslogtreecommitdiffstats
path: root/src/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/machchk.C33
1 files changed, 13 insertions, 20 deletions
diff --git a/src/kernel/machchk.C b/src/kernel/machchk.C
index 417b589c4..79edf4240 100644
--- a/src/kernel/machchk.C
+++ b/src/kernel/machchk.C
@@ -85,28 +85,21 @@ bool handleLoadUE(task_t* t)
uint64_t phys = VmmManager::findPhysicalAddress(vaddr);
- //Check if address is in IBSCOM MMIO Range.
- uint64_t ibAddrStart = 0;
- for(uint32_t l_groupId=0; l_groupId<4; l_groupId++)
+ // Check if address is in IBSCOM MMIO Range.
+ // Base mask bits are always set for ibscom.
+ // Combined mask bits could be set for ibscom.
+ // ~Combined mask bits can not be set for ibscom.
+ uint64_t combMask = MMIO_IBSCOM_BASE_MASK |
+ MMIO_IBSCOM_DMI_MASK |
+ MMIO_IBSCOM_CHIP_MASK |
+ MMIO_IBSCOM_GROUP_MASK;
+
+ if(((phys & MMIO_IBSCOM_BASE_MASK) == MMIO_IBSCOM_BASE_MASK) &&
+ ((phys & ~combMask) == 0))
{
- for(uint32_t l_chipId=0; l_chipId<4; l_chipId++)
- {
- ibAddrStart = computeMemoryMapOffset( MMIO_IBSCOM_BASE,
- l_groupId,
- l_chipId );
- if((phys >= ibAddrStart) &&
- (phys <= ibAddrStart + MMIO_IBSCOM_SIZE - 1))
- {
- ueMagicValue = MMIO_IBSCOM_UE_DETECTED;
- break;
- }
- }
- if(ueMagicValue == MMIO_IBSCOM_UE_DETECTED)
- {
- break;
- }
+ ueMagicValue = MMIO_IBSCOM_UE_DETECTED;
}
- if(ueMagicValue != MMIO_IBSCOM_UE_DETECTED)
+ else
{
printk("MachineCheck::handleUE: Unrecognized address %lx\n",
phys);
OpenPOWER on IntegriCloud