Skip to content

Commit bc53956

Browse files
Lv Zhengrafaeljw
authored andcommitted
ACPI / EC: Remove wrong ECDT correction quirks
Our Windows probe result shows that EC._REG is evaluated after evaluating all _INI/_STA control methods. With boot EC always switched in acpi_ec_dsdt_probe(), we can see that as long as there is no EC opregion accesses in the MLC (module level code, AML code out of any control methods) and in _INI/_STA, there is no need to make sure that ECDT must be correct. Bugs of 9399/12461 were reported against an order issue that BAT0/1._STA evaluations contain EC accesses while the ECDT setting is wrong. >From the acpidump output posted on bug 9399, we can see that it is actually a different issue. In this table, if EC._REG is not executed, EC accesses will be done in a platform specific manner. As we've already ensured not to execute EC._REG during the eary stage, we can remove the quirks for bug 9399. From the acpidump output posted on bug 12461, we can see that it still needs the quirk. In this table, EC._REG flags a named object whose default value is One, thus BAT1._STA surely should invoke EC accesses whatever we invoke EC._REG or not. We have to keep the quirk for it before we can root cause the issue. Signed-off-by: Lv Zheng <lv.zheng@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
1 parent fd6231e commit bc53956

File tree

1 file changed

+5
-16
lines changed

1 file changed

+5
-16
lines changed

drivers/acpi/ec.c

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1530,6 +1530,11 @@ static int ec_clear_on_resume(const struct dmi_system_id *id)
15301530
return 0;
15311531
}
15321532

1533+
/*
1534+
* Some ECDTs contain wrong register addresses.
1535+
* MSI MS-171F
1536+
* https://bugzilla.kernel.org/show_bug.cgi?id=12461
1537+
*/
15331538
static int ec_correct_ecdt(const struct dmi_system_id *id)
15341539
{
15351540
pr_debug("Detected system needing ECDT address correction.\n");
@@ -1538,16 +1543,6 @@ static int ec_correct_ecdt(const struct dmi_system_id *id)
15381543
}
15391544

15401545
static struct dmi_system_id ec_dmi_table[] __initdata = {
1541-
{
1542-
ec_correct_ecdt, "Asus L4R", {
1543-
DMI_MATCH(DMI_BIOS_VERSION, "1008.006"),
1544-
DMI_MATCH(DMI_PRODUCT_NAME, "L4R"),
1545-
DMI_MATCH(DMI_BOARD_NAME, "L4R") }, NULL},
1546-
{
1547-
ec_correct_ecdt, "Asus M6R", {
1548-
DMI_MATCH(DMI_BIOS_VERSION, "0207"),
1549-
DMI_MATCH(DMI_PRODUCT_NAME, "M6R"),
1550-
DMI_MATCH(DMI_BOARD_NAME, "M6R") }, NULL},
15511546
{
15521547
ec_correct_ecdt, "MSI MS-171F", {
15531548
DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star"),
@@ -1590,12 +1585,6 @@ int __init acpi_ec_ecdt_probe(void)
15901585

15911586
pr_info("EC description table is found, configuring boot EC\n");
15921587
if (EC_FLAGS_CORRECT_ECDT) {
1593-
/*
1594-
* Asus L4R, Asus M6R
1595-
* https://bugzilla.kernel.org/show_bug.cgi?id=9399
1596-
* MSI MS-171F
1597-
* https://bugzilla.kernel.org/show_bug.cgi?id=12461
1598-
*/
15991588
ec->command_addr = ecdt_ptr->data.address;
16001589
ec->data_addr = ecdt_ptr->control.address;
16011590
} else {

0 commit comments

Comments
 (0)