aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/apei/apei-base.c
diff options
context:
space:
mode:
authorHuang Ying <ying.huang@intel.com>2011-12-08 11:25:47 +0800
committerLen Brown <len.brown@intel.com>2012-01-17 03:54:38 -0500
commitfdea163d8c17ba08814142259a467ba3e899010d (patch)
treea512e00b3e569a2ce5d5456bcc8ef9a30020075f /drivers/acpi/apei/apei-base.c
parent76da3fb3575e39fb23b2c072997ccd1187a2ce9d (diff)
downloadkernel_goldelico_gta04-fdea163d8c17ba08814142259a467ba3e899010d.zip
kernel_goldelico_gta04-fdea163d8c17ba08814142259a467ba3e899010d.tar.gz
kernel_goldelico_gta04-fdea163d8c17ba08814142259a467ba3e899010d.tar.bz2
ACPI, APEI, EINJ, Fix resource conflict on some machine
Some APEI firmware implementation will access injected address specified in param1 to trigger the error when injecting memory error. This will cause resource conflict with RAM. On one of our testing machine, if injecting at memory address 0x10000000, the following error will be reported in dmesg: APEI: Can not request iomem region <0000000010000000-0000000010000008> for GARs. This patch removes the injecting memory address range from trigger table resources to avoid conflict. Signed-off-by: Huang Ying <ying.huang@intel.com> Tested-by: Tony Luck <tony.luck@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/apei/apei-base.c')
-rw-r--r--drivers/acpi/apei/apei-base.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/acpi/apei/apei-base.c b/drivers/acpi/apei/apei-base.c
index 3492896..f2c5062 100644
--- a/drivers/acpi/apei/apei-base.c
+++ b/drivers/acpi/apei/apei-base.c
@@ -421,6 +421,17 @@ static int apei_resources_merge(struct apei_resources *resources1,
return 0;
}
+int apei_resources_add(struct apei_resources *resources,
+ unsigned long start, unsigned long size,
+ bool iomem)
+{
+ if (iomem)
+ return apei_res_add(&resources->iomem, start, size);
+ else
+ return apei_res_add(&resources->ioport, start, size);
+}
+EXPORT_SYMBOL_GPL(apei_resources_add);
+
/*
* EINJ has two groups of GARs (EINJ table entry and trigger table
* entry), so common resources are subtracted from the trigger table