|
@@ -436,6 +436,21 @@ static u32 get_block_address(unsigned int cpu, u32 current_addr, u32 low, u32 hi
|
|
|
{
|
|
|
u32 addr = 0, offset = 0;
|
|
|
|
|
|
+ if ((bank >= mca_cfg.banks) || (block >= NR_BLOCKS))
|
|
|
+ return addr;
|
|
|
+
|
|
|
+ /* Get address from already initialized block. */
|
|
|
+ if (per_cpu(threshold_banks, cpu)) {
|
|
|
+ struct threshold_bank *bankp = per_cpu(threshold_banks, cpu)[bank];
|
|
|
+
|
|
|
+ if (bankp && bankp->blocks) {
|
|
|
+ struct threshold_block *blockp = &bankp->blocks[block];
|
|
|
+
|
|
|
+ if (blockp)
|
|
|
+ return blockp->address;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (mce_flags.smca) {
|
|
|
if (smca_get_bank_type(bank) == SMCA_RESERVED)
|
|
|
return addr;
|