diff options
author | Corey Swenson <cswenson@us.ibm.com> | 2018-03-09 00:27:54 -0600 |
---|---|---|
committer | William G. Hoffa <wghoffa@us.ibm.com> | 2018-03-20 18:29:47 -0400 |
commit | ed84b08afa873008e71fb617146e536d2e9fe9b3 (patch) | |
tree | e015fe122af99c85ba5c42ed048dd93dd1cbe7eb /src/kernel | |
parent | 0e69501ebe5b6e31e52cfb765bdeef1a219cf4e1 (diff) | |
download | talos-hostboot-ed84b08afa873008e71fb617146e536d2e9fe9b3.tar.gz talos-hostboot-ed84b08afa873008e71fb617146e536d2e9fe9b3.zip |
Inband SCOM clean up
- Addresses review comments from original commit
- Adds inband scom multicast workaround
Change-Id: Ia17a8e5359227691464f3552ded585ede771813b
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/55305
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: Prachi Gupta <pragupta@us.ibm.com>
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src/kernel')
-rw-r--r-- | src/kernel/machchk.C | 33 |
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); |