mfd: lpc_ich: Fix a 3.5 kernel regression for iTCO_wdt driver (Closes: #686040)
svn path=/dists/trunk/linux/; revision=19355
This commit is contained in:
parent
3b89cc45a2
commit
14c53a8fe5
|
@ -3,6 +3,10 @@ linux (3.5.3-1~experimental.1) UNRELEASED; urgency=low
|
||||||
* New upstream stable update:
|
* New upstream stable update:
|
||||||
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.5.3
|
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.5.3
|
||||||
|
|
||||||
|
[ Ben Hutchings ]
|
||||||
|
* mfd: lpc_ich: Fix a 3.5 kernel regression for iTCO_wdt driver
|
||||||
|
(Closes: #686040)
|
||||||
|
|
||||||
-- Ben Hutchings <ben@decadent.org.uk> Mon, 27 Aug 2012 17:22:33 -0700
|
-- Ben Hutchings <ben@decadent.org.uk> Mon, 27 Aug 2012 17:22:33 -0700
|
||||||
|
|
||||||
linux (3.5.2-1~experimental.1) experimental; urgency=low
|
linux (3.5.2-1~experimental.1) experimental; urgency=low
|
||||||
|
|
91
debian/patches/bugfix/x86/mfd-lpc_ich-Fix-a-3.5-kernel-regression-for-iTCO_wdt.patch
vendored
Normal file
91
debian/patches/bugfix/x86/mfd-lpc_ich-Fix-a-3.5-kernel-regression-for-iTCO_wdt.patch
vendored
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
From: Feng Tang <feng.tang@intel.com>
|
||||||
|
Date: Thu, 16 Aug 2012 15:50:10 +0800
|
||||||
|
Subject: mfd: lpc_ich: Fix a 3.5 kernel regression for iTCO_wdt driver
|
||||||
|
|
||||||
|
commit 092369efbd6ef6b4a215741ce9f65446bf45beff upstream.
|
||||||
|
|
||||||
|
There are many reports (including 2 of my machines) that iTCO_wdt watchdog
|
||||||
|
driver fails to be initialized in 3.5 kernel with error message like:
|
||||||
|
|
||||||
|
[ 5.265175] ACPI Warning: 0x00001060-0x0000107f SystemIO conflicts with Region \_SB_.PCI0.LPCB.TCOI 1 (20120320/utaddress-251)
|
||||||
|
[ 5.265192] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
|
||||||
|
[ 5.265206] lpc_ich: Resource conflict(s) found affecting iTCO_wdt
|
||||||
|
|
||||||
|
The root cause the iTCO_wdt driver in 3.4 probes the HW IO resource from
|
||||||
|
LPC's PCI config space, while in 3.5 kernel it relies on lpc_ich driver
|
||||||
|
for the probe, which adds a new acpi_check_resource_conflict() check, and
|
||||||
|
give up the probe if there is any conflict with ACPI.
|
||||||
|
|
||||||
|
Fix it by removing all the checks for iTCO_wdt to keep the same behavior as
|
||||||
|
3.4 kernel.
|
||||||
|
https://bugzilla.kernel.org/show_bug.cgi?id=44991
|
||||||
|
|
||||||
|
Actually the same check could be removed for the gpio-ich in lpc_ich.c,
|
||||||
|
but I'm not sure if it will cause problems.
|
||||||
|
|
||||||
|
Signed-off-by: Feng Tang <feng.tang@intel.com>
|
||||||
|
Cc: Aaron Sierra <asierra@xes-inc.com>
|
||||||
|
Cc: Wim Van Sebroeck <wim@iguana.be>
|
||||||
|
Cc: Len Brown <len.brown@intel.com>
|
||||||
|
Cc: Bob Moore <robert.moore@intel.com>
|
||||||
|
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
|
||||||
|
---
|
||||||
|
drivers/mfd/lpc_ich.c | 20 +-------------------
|
||||||
|
1 file changed, 1 insertion(+), 19 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/mfd/lpc_ich.c b/drivers/mfd/lpc_ich.c
|
||||||
|
index 027cc8f..a05fdfc 100644
|
||||||
|
--- a/drivers/mfd/lpc_ich.c
|
||||||
|
+++ b/drivers/mfd/lpc_ich.c
|
||||||
|
@@ -765,7 +765,6 @@ static int __devinit lpc_ich_init_wdt(struct pci_dev *dev,
|
||||||
|
u32 base_addr_cfg;
|
||||||
|
u32 base_addr;
|
||||||
|
int ret;
|
||||||
|
- bool acpi_conflict = false;
|
||||||
|
struct resource *res;
|
||||||
|
|
||||||
|
/* Setup power management base register */
|
||||||
|
@@ -780,20 +779,11 @@ static int __devinit lpc_ich_init_wdt(struct pci_dev *dev,
|
||||||
|
res = wdt_io_res(ICH_RES_IO_TCO);
|
||||||
|
res->start = base_addr + ACPIBASE_TCO_OFF;
|
||||||
|
res->end = base_addr + ACPIBASE_TCO_END;
|
||||||
|
- ret = acpi_check_resource_conflict(res);
|
||||||
|
- if (ret) {
|
||||||
|
- acpi_conflict = true;
|
||||||
|
- goto wdt_done;
|
||||||
|
- }
|
||||||
|
|
||||||
|
res = wdt_io_res(ICH_RES_IO_SMI);
|
||||||
|
res->start = base_addr + ACPIBASE_SMI_OFF;
|
||||||
|
res->end = base_addr + ACPIBASE_SMI_END;
|
||||||
|
- ret = acpi_check_resource_conflict(res);
|
||||||
|
- if (ret) {
|
||||||
|
- acpi_conflict = true;
|
||||||
|
- goto wdt_done;
|
||||||
|
- }
|
||||||
|
+
|
||||||
|
lpc_ich_enable_acpi_space(dev);
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -813,11 +803,6 @@ static int __devinit lpc_ich_init_wdt(struct pci_dev *dev,
|
||||||
|
res = wdt_mem_res(ICH_RES_MEM_GCS);
|
||||||
|
res->start = base_addr + ACPIBASE_GCS_OFF;
|
||||||
|
res->end = base_addr + ACPIBASE_GCS_END;
|
||||||
|
- ret = acpi_check_resource_conflict(res);
|
||||||
|
- if (ret) {
|
||||||
|
- acpi_conflict = true;
|
||||||
|
- goto wdt_done;
|
||||||
|
- }
|
||||||
|
}
|
||||||
|
|
||||||
|
lpc_ich_finalize_cell(&lpc_ich_cells[LPC_WDT], id);
|
||||||
|
@@ -825,9 +810,6 @@ static int __devinit lpc_ich_init_wdt(struct pci_dev *dev,
|
||||||
|
1, NULL, 0);
|
||||||
|
|
||||||
|
wdt_done:
|
||||||
|
- if (acpi_conflict)
|
||||||
|
- pr_warn("Resource conflict(s) found affecting %s\n",
|
||||||
|
- lpc_ich_cells[LPC_WDT].name);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
|
@ -57,3 +57,4 @@ bugfix/all/hwmon-applesmc-Shorten-minimum-wait-time.patch
|
||||||
bugfix/all/hwmon-applesmc-Allow-negative-temperature-values.patch
|
bugfix/all/hwmon-applesmc-Allow-negative-temperature-values.patch
|
||||||
bugfix/all/hwmon-applesmc-Ignore-some-temperature-registers.patch
|
bugfix/all/hwmon-applesmc-Ignore-some-temperature-registers.patch
|
||||||
bugfix/all/hwmon-applesmc-Decode-and-act-on-read-write-status-c.patch
|
bugfix/all/hwmon-applesmc-Decode-and-act-on-read-write-status-c.patch
|
||||||
|
bugfix/x86/mfd-lpc_ich-Fix-a-3.5-kernel-regression-for-iTCO_wdt.patch
|
||||||
|
|
Loading…
Reference in New Issue