Message ID | 4E56EA02.7020307@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Huang, Sorry for the delay in my response. Hurricane Irene delayed our testing a bit. I had to switch the 5620 CPUS I had for 5670s. After 4 days of running (it was usually about 2 before) I finally got this output in dmesg: [337296.365930] GHES: gar accessed: 0, 0xbf7b9370 [337296.365936] ACPI atomic read mem: addr 0xbf7b9370 mapped to ffffc90013ee8370 It is not mapped to 0 as expected, but it didn't crash now! Thanks, Rick > On 08/25/2011 11:47 PM, rick@microway.com wrote: >> Hi Huang, >> >> My new setup reproduced the panic. However I do not have any gar >> accessed >> messages on it. The gar mapped messages are in my previous email. Here >> is the latest call trace. There is no GHES output prior to it: >> > > That is wired. Can you try the patch attached? If my guessing is > correct, there will be no panic, but something as follow will be in dmesg: > > ACPI atomic read mem: addr 0xxxxx mapped to 0 > > Best Regards, > Huang Ying > -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
--- drivers/acpi/apei/ghes.c | 6 ++++++ drivers/acpi/atomicio.c | 4 ++++ 2 files changed, 10 insertions(+) --- a/drivers/acpi/apei/ghes.c +++ b/drivers/acpi/apei/ghes.c @@ -299,6 +299,9 @@ static struct ghes *ghes_new(struct acpi return ERR_PTR(-ENOMEM); ghes->generic = generic; rc = acpi_pre_map_gar(&generic->error_status_address); + pr_info(GHES_PFX "gar mapped: %d, 0x%llx\n", + generic->error_status_address.space_id, + generic->error_status_address.address); if (rc) goto err_free; error_block_length = generic->error_block_length; @@ -398,6 +401,9 @@ static int ghes_read_estatus(struct ghes u32 len; int rc; + pr_err(GHES_PFX "gar accessed: %d, 0x%llx\n", + g->error_status_address.space_id, + g->error_status_address.address); rc = acpi_atomic_read(&buf_paddr, &g->error_status_address); if (rc) { if (!silent && printk_ratelimit()) --- a/drivers/acpi/atomicio.c +++ b/drivers/acpi/atomicio.c @@ -270,6 +270,10 @@ static int acpi_atomic_read_mem(u64 padd rcu_read_lock(); addr = __acpi_ioremap_fast(paddr, width); + pr_err("ACPI atomic read mem: addr 0x%llx mapped to %p\n", + paddr, addr); + if (!addr) + return -EIO; switch (width) { case 8: *val = readb(addr);