From: Hans de Goede <hdegoede@redhat.com>
To: Mika Westerberg <mika.westerberg@linux.intel.com>
Cc: Mario Limonciello <mario.limonciello@outlook.com>,
Andreas Noever <andreas.noever@gmail.com>,
Michael Jamet <michael.jamet@intel.com>,
Yehezkel Bernat <YehezkelShB@gmail.com>,
linux-usb <linux-usb@vger.kernel.org>
Subject: Re: Disabling intel-wmi-thunderbolt on devices without Thunderbolt / detecting if a device has Thunderbolt
Date: Tue, 26 Oct 2021 12:34:33 +0200 [thread overview]
Message-ID: <46faa3fd-85bd-da33-42b5-9a40824e0b31@redhat.com> (raw)
In-Reply-To: <YXfCGtrtUiej2EZT@lahna>
Hi,
On 10/26/21 10:53, Mika Westerberg wrote:
> Hi,
>
> On Tue, Oct 26, 2021 at 10:17:53AM +0200, Hans de Goede wrote:
>> Hi,
>>
>> On 10/25/21 17:12, Mika Westerberg wrote:
>>> On Mon, Oct 25, 2021 at 04:54:41PM +0200, Hans de Goede wrote:
>>>>> Yes that's exactly what is supposed to happen that this attribute is made.
>>>>> What exactly happens when you write into it?
>>>>
>>>> The _SB.CGWR ACPI method gets called, with arguments coming from ACPI
>>>> settings stored in memory. Depending on those settings this function
>>>> either directly pokes some MMIO or tries to talk to an I2C GPIO
>>>> expander which is not present on the Surface Go, causing it to
>>>> MMIO poke an I2C controller which it should not touch.
>>>>
>>>> In either case the AML code ends up poking stuff it should not touch
>>>> and the entire force_power sysfs attribute should simply not be
>>>> there on devices without thunderbolt.
>>>
>>> That's right - it should not be there in the first place if there is no
>>> Thunderbolt controller on that thing.
>>>
>>> I guess most of the systems that have this actually do support
>>> Thunderbolt so maybe we can work this around by quirking all the Surface
>>> models in that driver?
>>
>> I was hoping that we could avoid this, but yes if there is no easy /
>> clean way to detect if there are any Thunderbolt controllers on the
>> system then a DMI table is necessary.
>
> Well, the force power thing is there just for this reason. It should
> only be present on systems using ACPI assisted PCIe hotplug for
> Thunderbolt devices. Apparantly some BIOS engineer forgot to remove it
> on Surface :( I need to check if it is present on recent reference
> BIOSes too. If it is then I'll report an internal sighting about this to
> get it removed.
>
> In theory we could also use a heuristic that if there is a TBT
> controller present when the driver probes it should fail the probe or
> so. Or even look for the PCI host bridge and if it got the PCIe hotplug
> capability from the BIOS (through _OSC negotiation) we can assume this
> system does not need the force power.
I think adding such heuristics might be a good thing to do, because
I suspect that this problem is much wider then just a couple of
surface devices.
One worry I have about this is probe ordering. We cannot assume the
entire PCI bus has been enumerated when the intel-wmi-thunderbolt's
probe() method runs. So that would mean doing something like
returning -EPROBE_DEFER if no thunderbolt controller is found and
then say 1 minute after boot return -ENODEV to get us of the
probe_deferal devices list...
IOW this is going to be ugly so for now I think a DMI list for the
devices where I want to make sure force_power does not poke the
GEXP device is best.
Regards,
Hans
next prev parent reply other threads:[~2021-10-26 10:34 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-25 13:48 Disabling intel-wmi-thunderbolt on devices without Thunderbolt / detecting if a device has Thunderbolt Hans de Goede
2021-10-25 14:46 ` Oliver Neukum
[not found] ` <PH0PR15MB4992B80415BE9BD4836CF336E1839@PH0PR15MB4992.namprd15.prod.outlook.com>
2021-10-25 14:54 ` Hans de Goede
2021-10-25 15:12 ` Mika Westerberg
2021-10-26 8:17 ` Hans de Goede
2021-10-26 8:53 ` Mika Westerberg
2021-10-26 10:34 ` Hans de Goede [this message]
2021-10-26 12:22 ` Mika Westerberg
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=46faa3fd-85bd-da33-42b5-9a40824e0b31@redhat.com \
--to=hdegoede@redhat.com \
--cc=YehezkelShB@gmail.com \
--cc=andreas.noever@gmail.com \
--cc=linux-usb@vger.kernel.org \
--cc=mario.limonciello@outlook.com \
--cc=michael.jamet@intel.com \
--cc=mika.westerberg@linux.intel.com \
/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.