Re: APEI: Can not request iomem region for GARs
From: Bjorn Helgaas <bhelgaas@google.com>
Date: 2011-08-19 21:49:09
Also in:
lkml
Subsystem:
acpi, acpi apei, the rest · Maintainers:
"Rafael J. Wysocki", Linus Torvalds
On Tue, Aug 16, 2011 at 9:43 PM, Pavel Ivanov [off-list ref] wrote:
Ever since I switched from kernel 2.6.38 to 3.0 and later versions I always get the following error message on each boot: [ 2.844242] APEI: Can not request iomem region <00000000bf7b522a-00000000bf7b522c> for GARs. If it was only in dmesg I wouldn't even notice it. But it's always printed on the console which is kind of annoying. I don't quite understand what this message is about and couldn't find anything on the internet. Does this message mean some error that I could fix? If no, is there any way I can suppress it (besides lowering the error level of messages printed on console, of course)?
[+cc Huang Ying, APEI author] BIOS-e820: 00000000bf79e000 - 00000000bf7d0000 (ACPI NVS) APEI: Can not request iomem region <00000000bf7b522a-00000000bf7b522c> for GARs. This register is in the ACPI NVS region, which is type E820_NVS (not E820_RESERVED), so e820_reserve_resources() reserves it as IORESOURCE_BUSY. My guess is that Huang tested this on machines where the EINJ/ERST registers are in "reserved" regions, not ACPI NVS regions. The "reserved" regions are not marked IORESOURCE_BUSY. Huang, when you fix this, please include something like the following (mangled) patch so the error message is more consistent with other resource messages. Could you also remove the ERST/EINJ/HEST "Table is not found" messages? As far as I can tell, these tables are optional, and printing the message is confusing to users, e.g., https://bugs.launchpad.net/ubuntu/+source/linux/+bug/599715 Bjorn
diff --git a/drivers/acpi/apei/apei-base.c b/drivers/acpi/apei/apei-base.c
index 8041248..6f97b59 100644
--- a/drivers/acpi/apei/apei-base.c
+++ b/drivers/acpi/apei/apei-base.c@@ -460,9 +460,9 @@ int apei_resources_request(struct apei_resources *resources, desc); if (!r) { pr_err(APEI_PFX - "Can not request iomem region <%016llx-%016llx> for GARs.\n", + "can not request [mem %#010llx-%#010llx] for %s registers\n", (unsigned long long)res->start, - (unsigned long long)res->end); + (unsigned long long)res->end, desc); res_bak = res; goto err_unmap_iomem; }
@@ -472,9 +472,9 @@ int apei_resources_request(struct apei_resources *resources, r = request_region(res->start, res->end - res->start, desc); if (!r) { pr_err(APEI_PFX - "Can not request ioport region <%016llx-%016llx> for GARs.\n", + "can not request [io %#06llx-%#06llx] for %s registers\n", (unsigned long long)res->start, - (unsigned long long)res->end); + (unsigned long long)res->end, desc); res_bak = res; goto err_unmap_ioport; }