diff options
| -rw-r--r-- | drivers/edac/mce_amd.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/drivers/edac/mce_amd.c b/drivers/edac/mce_amd.c index 60d5d9f4dfee..3c161672a84b 100644 --- a/drivers/edac/mce_amd.c +++ b/drivers/edac/mce_amd.c | |||
| @@ -339,19 +339,27 @@ wrong_bu_mce: | |||
| 339 | 339 | ||
| 340 | static void amd_decode_ls_mce(struct mce *m) | 340 | static void amd_decode_ls_mce(struct mce *m) |
| 341 | { | 341 | { |
| 342 | u32 ec = m->status & 0xffff; | 342 | u16 ec = m->status & 0xffff; |
| 343 | u32 xec = (m->status >> 16) & 0xf; | 343 | u8 xec = (m->status >> 16) & 0xf; |
| 344 | |||
| 345 | if (boot_cpu_data.x86 == 0x14) { | ||
| 346 | pr_emerg("You shouldn't be seeing an LS MCE on this cpu family," | ||
| 347 | " please report on LKML.\n"); | ||
| 348 | return; | ||
| 349 | } | ||
| 344 | 350 | ||
| 345 | pr_emerg(HW_ERR "Load Store Error"); | 351 | pr_emerg(HW_ERR "Load Store Error"); |
| 346 | 352 | ||
| 347 | if (xec == 0x0) { | 353 | if (xec == 0x0) { |
| 348 | u8 rrrr = (ec >> 4) & 0xf; | 354 | u8 r4 = (ec >> 4) & 0xf; |
| 349 | 355 | ||
| 350 | if (!BUS_ERROR(ec) || (rrrr != 0x3 && rrrr != 0x4)) | 356 | if (!BUS_ERROR(ec) || (r4 != R4_DRD && r4 != R4_DWR)) |
| 351 | goto wrong_ls_mce; | 357 | goto wrong_ls_mce; |
| 352 | 358 | ||
| 353 | pr_cont(" during %s.\n", RRRR_MSG(ec)); | 359 | pr_cont(" during %s.\n", RRRR_MSG(ec)); |
| 354 | } | 360 | } else |
| 361 | goto wrong_ls_mce; | ||
| 362 | |||
| 355 | return; | 363 | return; |
| 356 | 364 | ||
| 357 | wrong_ls_mce: | 365 | wrong_ls_mce: |
