]> git.baikalelectronics.ru Git - kernel.git/commitdiff
ACPI / EC: Remove non-root-caused busy polling quirks.
authorLv Zheng <lv.zheng@intel.com>
Fri, 15 May 2015 06:37:11 +0000 (14:37 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 15 May 2015 23:53:03 +0000 (01:53 +0200)
{ Update to correct 1 patch subject in the description }

We have fixed a lot of race issues in the EC driver recently.

The following commit introduces MSI udelay()/msleep() quirk to MSI laptops
to make EC firmware working for bug 12011 without root causing any EC
driver race issues:
  Commit: b66dc3e20b81de97dd88ac18ca6bd612d126d70a
  Subject: ACPI: EC: Add delay for slow MSI controller
  Commit: 5e769f7113e20b4366b69c2bf148ecaeebaea563
  Subject: ACPI: EC: Separate delays for MSI hardware

The following commit extends ECDT validation quirk to MSI laptops to make
EC driver locating EC registers properly for bug 12461:
  Commit: 51355e53cca1d8a27226cf39b71f94012c9b6c4d
  Subject: ACPI: EC: Always parse EC device
This is a different quirk than the MSI udelay()/msleep() quirk. This patch
keeps validating ECDT for only "Micro-Star MS-171F" as reported.

The following commit extends MSI udelay()/msleep() quirk to Quanta laptops
to make EC firmware working for bug 20242, there is no requirement to
validate ECDT for Quanta laptops:
  Commit: 698df446b2657ff3ae4a2fd6d09237cf0d5b24d4 Mon Sep 17 00:00:00 2001
  Subject: ACPI EC: enable MSI workaround for Quanta laptops

The following commit extends MSI udelay()/msleep() quirk to Clevo laptops
to make EC firmware working for bug 77431, there is no requirement to
validate ECDT for Clevo laptops:
  Commit: 20feb427370647cc073811f364b6f465abab55ba
  Subject: ACPI / EC: Add msi quirk for Clevo W350etq

All udelay()/msleep() quirks for MSI/Quanta/Clevo seem to be the wrong
fixes generated without fixing the EC driver race issues.
And even if it is not wrong, the guarding can be covered by the following
commits in wait polling mode:
  Commit: 33632a3e94036e1a04bc4d8638d2432ad7af9157
  Subject: ACPI / EC: Reduce ec_poll() by referencing the last register access timestamp.
  Commit: commit in the same series
  Subject: ACPI / EC: Fix and clean up register access guarding logics.
The only case that is not covered is the inter-transaction guarding. And
there is no evidence that we need the inter-transaction guarding upon
reading the noted bug entries.

So it is time to remove the quirks and let the users to try again. If there
is a regression, the only thing we need to do is to restore the
inter-transaction guarding for the reported platforms.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=12011
Link: https://bugzilla.kernel.org/show_bug.cgi?id=12461
Link: https://bugzilla.kernel.org/show_bug.cgi?id=20242
Link: https://bugzilla.kernel.org/show_bug.cgi?id=77431
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/ec.c

index 846e0617eb9b776eed9e115f8f984ba5698cdd13..149b5e7ee5c75aa35ee8498ef88e5a91420ccd65 100644 (file)
@@ -1269,15 +1269,6 @@ static int ec_validate_ecdt(const struct dmi_system_id *id)
        return 0;
 }
 
-/* EC firmware needs special polling mode, enable it */
-static int ec_use_busy_polling(const struct dmi_system_id *id)
-{
-       pr_debug("Detected the EC firmware requiring busy polling mode.\n");
-       ec_busy_polling = 1;
-       EC_FLAGS_VALIDATE_ECDT = 1;
-       return 0;
-}
-
 /*
  * Acer EC firmware refuses to respond QR_EC when SCI_EVT is not set, for
  * which case, we complete the QR_EC without issuing it to the firmware.
@@ -1320,29 +1311,9 @@ static struct dmi_system_id ec_dmi_table[] __initdata = {
        DMI_MATCH(DMI_BIOS_VENDOR, "COMPAL"),
        DMI_MATCH(DMI_BOARD_NAME, "JFL92") }, NULL},
        {
-       ec_use_busy_polling, "MSI hardware", {
-       DMI_MATCH(DMI_BIOS_VENDOR, "Micro-Star")}, NULL},
-       {
-       ec_use_busy_polling, "MSI hardware", {
-       DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star")}, NULL},
-       {
-       ec_use_busy_polling, "MSI hardware", {
-       DMI_MATCH(DMI_CHASSIS_VENDOR, "MICRO-Star")}, NULL},
-       {
-       ec_use_busy_polling, "MSI hardware", {
-       DMI_MATCH(DMI_CHASSIS_VENDOR, "MICRO-STAR")}, NULL},
-       {
-       ec_use_busy_polling, "Quanta hardware", {
-       DMI_MATCH(DMI_SYS_VENDOR, "Quanta"),
-       DMI_MATCH(DMI_PRODUCT_NAME, "TW8/SW8/DW8"),}, NULL},
-       {
-       ec_use_busy_polling, "Quanta hardware", {
-       DMI_MATCH(DMI_SYS_VENDOR, "Quanta"),
-       DMI_MATCH(DMI_PRODUCT_NAME, "TW9/SW9"),}, NULL},
-       {
-       ec_use_busy_polling, "Clevo W350etq", {
-       DMI_MATCH(DMI_SYS_VENDOR, "CLEVO CO."),
-       DMI_MATCH(DMI_PRODUCT_NAME, "W35_37ET"),}, NULL},
+       ec_validate_ecdt, "MSI MS-171F", {
+       DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star"),
+       DMI_MATCH(DMI_PRODUCT_NAME, "MS-171F"),}, NULL},
        {
        ec_validate_ecdt, "ASUS hardware", {
        DMI_MATCH(DMI_BIOS_VENDOR, "ASUS") }, NULL},