Message ID | 1477974658-12589-1-git-send-email-jlee@suse.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
On 1 November 2016 at 12:30, Lee, Chun-Yi <joeyli.kernel@gmail.com> wrote: > > The AMW0_GUID1 wmi is not only found on Acer family but also other > machines like Lenovo, Fujitsu and Medion. In the past days, acer-wmi > driver handled those non-Acer machines by quirks list. > > But actually acer-wmi driver was loaded on any machines that have > AMW0_GUID1. This behavior is strange because those machines should > be supported by appropriate wmi drivers. e.g. fujitsu-laptop, > ideapad-laptop. > > So, This patch adds the logic to check the machine that has AMW0_GUID1 > should be in Acer/Packard Bell/Gateway white list. But, it still keeps > the quirk list of those supported non-acer machines for backward > compatible. > > Tested-by: Bjørn Mork <bjorn@mork.no> > Cc: Darren Hart <dvhart@infradead.org> > Signed-off-by: Lee, Chun-Yi <jlee@suse.com> Xiaomi Air 13.3 notebook suffers from the same issue, acer-wmi basically has no use on this machine. With your patch, acer-wmi no longer loads. Tested-by: Anthony Wong <anthony@ypwong.org> Thanks, Anthony -- To unsubscribe from this list: send the line "unsubscribe platform-driver-x86" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, Nov 03, 2016 at 11:40:15AM +0800, Anthony Wong wrote: > On 1 November 2016 at 12:30, Lee, Chun-Yi <joeyli.kernel@gmail.com> wrote: > > > > The AMW0_GUID1 wmi is not only found on Acer family but also other > > machines like Lenovo, Fujitsu and Medion. In the past days, acer-wmi > > driver handled those non-Acer machines by quirks list. > > > > But actually acer-wmi driver was loaded on any machines that have > > AMW0_GUID1. This behavior is strange because those machines should > > be supported by appropriate wmi drivers. e.g. fujitsu-laptop, > > ideapad-laptop. > > > > So, This patch adds the logic to check the machine that has AMW0_GUID1 > > should be in Acer/Packard Bell/Gateway white list. But, it still keeps > > the quirk list of those supported non-acer machines for backward > > compatible. > > > > Tested-by: Bjørn Mork <bjorn@mork.no> > > Cc: Darren Hart <dvhart@infradead.org> > > Signed-off-by: Lee, Chun-Yi <jlee@suse.com> > > Xiaomi Air 13.3 notebook suffers from the same issue, acer-wmi > basically has no use on this machine. With your patch, acer-wmi no > longer loads. > > Tested-by: Anthony Wong <anthony@ypwong.org> > > Thanks, > Anthony Thanks for your testing! Joey Lee -- To unsubscribe from this list: send the line "unsubscribe platform-driver-x86" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, Nov 03, 2016 at 11:40:15AM +0800, Anthony Wong wrote: > On 1 November 2016 at 12:30, Lee, Chun-Yi <joeyli.kernel@gmail.com> wrote: > > > > The AMW0_GUID1 wmi is not only found on Acer family but also other > > machines like Lenovo, Fujitsu and Medion. In the past days, acer-wmi > > driver handled those non-Acer machines by quirks list. > > > > But actually acer-wmi driver was loaded on any machines that have > > AMW0_GUID1. This behavior is strange because those machines should > > be supported by appropriate wmi drivers. e.g. fujitsu-laptop, > > ideapad-laptop. > > > > So, This patch adds the logic to check the machine that has AMW0_GUID1 > > should be in Acer/Packard Bell/Gateway white list. But, it still keeps > > the quirk list of those supported non-acer machines for backward > > compatible. > > > > Tested-by: Bjørn Mork <bjorn@mork.no> > > Cc: Darren Hart <dvhart@infradead.org> > > Signed-off-by: Lee, Chun-Yi <jlee@suse.com> > > Xiaomi Air 13.3 notebook suffers from the same issue, acer-wmi > basically has no use on this machine. With your patch, acer-wmi no > longer loads. > > Tested-by: Anthony Wong <anthony@ypwong.org> I've already pushed this to -next, but thank you for the confirmation.
diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c index 3bb3162..734f0da 100644 --- a/drivers/platform/x86/acer-wmi.c +++ b/drivers/platform/x86/acer-wmi.c @@ -355,6 +355,32 @@ static const struct dmi_system_id acer_blacklist[] __initconst = { {} }; +static const struct dmi_system_id amw0_whitelist[] __initconst = { + { + .ident = "Acer", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + }, + }, + { + .ident = "Gateway", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Gateway"), + }, + }, + { + .ident = "Packard Bell", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Packard Bell"), + }, + }, + {} +}; + +/* + * This quirk table is only for Acer/Gateway/Packard Bell family + * that those machines are supported by acer-wmi driver. + */ static const struct dmi_system_id acer_quirks[] __initconst = { { .callback = dmi_matched, @@ -464,6 +490,17 @@ static const struct dmi_system_id acer_quirks[] __initconst = { }, .driver_data = &quirk_acer_travelmate_2490, }, + {} +}; + +/* + * This quirk list is for those non-acer machines that have AMW0_GUID1 + * but supported by acer-wmi in past days. Keeping this quirk list here + * is only for backward compatible. Please do not add new machine to + * here anymore. Those non-acer machines should be supported by + * appropriate wmi drivers. + */ +static const struct dmi_system_id non_acer_quirks[] __initconst = { { .callback = dmi_matched, .ident = "Fujitsu Siemens Amilo Li 1718", @@ -598,6 +635,7 @@ static void __init find_quirks(void) { if (!force_series) { dmi_check_system(acer_quirks); + dmi_check_system(non_acer_quirks); } else if (force_series == 2490) { quirks = &quirk_acer_travelmate_2490; } @@ -2121,6 +2159,24 @@ static int __init acer_wmi_init(void) find_quirks(); /* + * The AMW0_GUID1 wmi is not only found on Acer family but also other + * machines like Lenovo, Fujitsu and Medion. In the past days, + * acer-wmi driver handled those non-Acer machines by quirks list. + * But actually acer-wmi driver was loaded on any machines that have + * AMW0_GUID1. This behavior is strange because those machines should + * be supported by appropriate wmi drivers. e.g. fujitsu-laptop, + * ideapad-laptop. So, here checks the machine that has AMW0_GUID1 + * should be in Acer/Gateway/Packard Bell white list, or it's already + * in the past quirk list. + */ + if (wmi_has_guid(AMW0_GUID1) && + !dmi_check_system(amw0_whitelist) && + quirks == &quirk_unknown) { + pr_err("Unsupported machine has AMW0_GUID1, unable to load\n"); + return -ENODEV; + } + + /* * Detect which ACPI-WMI interface we're using. */ if (wmi_has_guid(AMW0_GUID1) && wmi_has_guid(WMID_GUID1))