From: joeyli <jlee@suse.com>
To: "Bjørn Mork" <bjorn@mork.no>
Cc: platform-driver-x86@vger.kernel.org
Subject: Re: acer-wmi auto-loaded on a Lenovo Thinkpad X1 Carbon 4th gen
Date: Sun, 21 Aug 2016 09:15:18 +0800 [thread overview]
Message-ID: <20160821011518.GA3740@linux-rxt1.site> (raw)
In-Reply-To: <87k2fr7erw.fsf@miraculix.mork.no>
Hi Bjørn,
Sorry for my delay because I stuck on other issues.
On Mon, Aug 08, 2016 at 12:09:55PM +0200, Bjørn Mork wrote:
> joeyli <jlee@suse.com> writes:
>
[...snip]
>
> Sorry for the delay. Just back from vacation. I took a quick peek at
> the driver and I don't think you need that dump. The DSDT is completely
> irrelevant. The driver will match and load on that generic WMI UUID,
> and this code ensures that it successfully probes regardless of DSDT:
>
>
> static acpi_status __init acer_wmi_get_handle_cb(acpi_handle ah, u32 level,
> void *ctx, void **retval)
> {
> *(acpi_handle *)retval = ah;
> return AE_OK;
> }
>
> static int __init acer_wmi_get_handle(const char *name, const char *prop,
> acpi_handle *ah)
> {
> acpi_status status;
> acpi_handle handle;
>
> BUG_ON(!name || !ah);
>
> handle = NULL;
> status = acpi_get_devices(prop, acer_wmi_get_handle_cb,
> (void *)name, &handle);
>
> if (ACPI_SUCCESS(status)) {
> *ah = handle;
> return 0;
> } else {
> return -ENODEV;
> }
> }
>
>
> Since acer_wmi_get_handle_cb() doesn't actually test anything, this will
> just return an arbitrary handle regardless of the value of *prop.
>
>
OK! Understood!
> > Then I want to add HID to the norfkill_ids list in acer-wmi to avoid that
> > it loaded on your Lenovo machine like LEN0068.
>
> I see that this has been done before when this bug has been reported.
> Sorry, but I believe that solution is plain wrong. You are papering
> over a more fundamental problem.
>
> Solve the *real* problems in the driver instead:
> 1) "67C3371D-95A3-4C37-BB61-DD47B491DAAB"
> >>
> >> as can be seen:
> >>
> >> bjorn@miraculix:~$ ls -l /sys/devices/virtual/wmi/67C3371D-95A3-4C37-BB61-DD47B491DAAB
> >> total 0
> >> -r--r--r-- 1 root root 4096 Jul 14 23:10 modalias
> >> drwxr-xr-x 2 root root 0 Jul 14 23:10 power
> >> lrwxrwxrwx 1 root root 0 Jul 14 23:10 subsystem -> ../../../../class/wmi
> >> -rw-r--r-- 1 root root 4096 Jul 14 23:10 uevent
> >>
> >>
> >> But I sort of doubt there is an Acer specific device here. Maybe this
> >> is a generic accelerometer interface? Or is there something else going
> >> on?
> >>
> >> The input device created by the driver just just returns -EPERM when I
> >> try to open it, so I don't think this actually works as-is:
> >>
> >> root@miraculix:/tmp# cat /dev/input/event8
> >> cat: /dev/input/event8: Operation not permitted
> >>
> >>
> >> And it does seem a little weird that a Thinkpad should need an Acer
> >> specific platform driver anyway.... thinkpad_acpi is of course handling
> >> all(?) the Thinkpad specifics as expected.
> >>
> >>
> >> Bjørn
> >
> > Could you please check that what does the _HID of HKEY device in your DSDT?
> >
> > or please attached your acpidump data to me:
> > # acpidump > acpidump.raw
>
> Sorry for the delay. Just back from vacation. I took a quick peek at
> the driver and I don't think you need that dump. The DSDT is completely
> irrelevant. The driver will match and load on that generic WMI UUID,
> and this code ensures that it successfully probes regardless of DSDT:
>
>
> static acpi_status __init acer_wmi_get_handle_cb(acpi_handle ah, u32 level,
> void *ctx, void **retval)
> {
> *(acpi_handle *)retval = ah;
> return AE_OK;
> }
>
> static int __init acer_wmi_get_handle(const char *name, const char *prop,
> acpi_handle *ah)
> {
> acpi_status status;
> acpi_handle handle;
>
> BUG_ON(!name || !ah);
>
> handle = NULL;
> status = acpi_get_devices(prop, acer_wmi_get_handle_cb,
> (void *)name, &handle);
>
> if (ACPI_SUCCESS(status)) {
> *ah = handle;
> return 0;
> } else {
> return -ENODEV;
> }
> }
>
>
> Since acer_wmi_get_handle_cb() doesn't actually test anything, this will
> just return an arbitrary handle regardless of the value of *prop.
>
>
> > Then I want to add HID to the norfkill_ids list in acer-wmi to avoid that
> > it loaded on your Lenovo machine like LEN0068.
>
> I see that this has been done before when this bug has been reported.
> Sorry, but I believe that solution is plain wrong. You are papering
> over a more fundamental problem.
>
> Solve the *real* problems in the driver instead:
> 1) "67C3371D-95A3-4C37-BB61-DD47B491DAAB" is not an Acer specific GUID
> and should probably never have been used to match Acer specific
> devices. The fact that it happens to work for some aribitrary laptop is
> not sufficient.
>
> 2) the "get_handle" code shown above is broken. If it works for some
> specific DSDT, then that is just pure luck.
>
> These things should be fixed ASAP, and backported to stable. The driver
> as it is will probably both load and probe successfully on a large
> number of systems it has no business messing with.
>
>
> > Then, thinkpad_acpi needs to support this _HID.
>
> No. Looking further at this, I don't think so. There is no indication
> that there is any relation between that WMI ID and any of the hardware
> functions supported by the acer-wmi driver. So there is no reason to
> believe that any of the matched Lenovo laptops have the same hardware
> functions.
>
>
>
> Bjørn
>
I have a question about removed 67C3371D-95A3-4C37-BB61-DD47B491DAAB. It
already in acer-wmi a long time since Carlos contributed this driver in
2008.
Does it possible cause regression on some laptops if we removed this GUID
support in acer-wmi?
Thanks a lot!
Joey Lee
next prev parent reply other threads:[~2016-08-21 1:15 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-14 21:39 acer-wmi auto-loaded on a Lenovo Thinkpad X1 Carbon 4th gen Bjørn Mork
2016-07-19 4:55 ` joeyli
2016-08-08 10:09 ` Bjørn Mork
2016-08-21 1:15 ` joeyli [this message]
2016-08-21 11:58 ` Bjørn Mork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160821011518.GA3740@linux-rxt1.site \
--to=jlee@suse.com \
--cc=bjorn@mork.no \
--cc=platform-driver-x86@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.