From: Hans de Goede <hdegoede@redhat.com>
To: Shinichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Cc: "platform-driver-x86@vger.kernel.org"
<platform-driver-x86@vger.kernel.org>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
"danilrybakov249@gmail.com" <danilrybakov249@gmail.com>,
"Lukas Wunner" <lukas@wunner.de>,
"Klara Modin" <klarasmodin@gmail.com>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>
Subject: Re: [PATCH v2] platform/x86: p2sb: Defer P2SB device scan when P2SB device has func 0
Date: Mon, 4 Mar 2024 14:59:57 +0100 [thread overview]
Message-ID: <8afa1f78-8b89-4bbc-95e5-35eea76356e4@redhat.com> (raw)
In-Reply-To: <2c3gyhvwncqgfa6t3tb6fj3fk3nkbzpmlgfyzwjgwmmlnhxssu@d25ihdnpwado>
Hi,
On 3/4/24 1:13 PM, Shinichiro Kawasaki wrote:
> On Mar 04, 2024 / 12:04, Hans de Goede wrote:
> ...
>> So the p2sb_bar(devfn=0) call actually only happens on Goldmont from:
>>
>> 3) mfd/lpc_ich for pinctrl devfn = 0
>>
>> and then only when the ACPI tables fail to properly describe the GPIO
>> controllers as ACPI devices, if the GPIO controllers are described
>> in ACPI, which they are on the ASUS VivoBook D540NV-GQ065T then that
>> call gets skipped.
>>
>> So on the ASUS VivoBook D540NV-GQ065T p2sb_bar(devfn=0) gets never
>> called. Which explains why not caching it fixes things. I assume that this
>> laptop just seems not likes the P2SB is touched at all and by not caching
>> the BAR for the P2SB it ends up not getting touched at all.
>
> Thanks for sharing the insights.
Looking closer at the actual unhiding I don't think accessing func 0
is the problem. The unhiding is always done on function 0 even when
retreiving the bar for function 2 (the SPI function).
So taking that into account, as mentioned in the bugzilla, I think
the problem is probing the other functions (1, 3-7) by calling
pci_scan_single_device() on them.
I have prepared an alternative fix based on this and asked
Danilrybakov to test that in the bugzilla.
(and also posted it as a RFC to the list)
>> This also means that likely the P2SB devfn itself generally speaking is
>> often not touched on Goldmont platforms. So we can avoid the lockdep
>> issue on PCI bus rescan there by caching the SPI controller
>> PCI_DEVFN(13, 2) devfn from fs_initcall(), since that will be the only
>> devfn for which p2sb_bar() will get called (except on hw with the
>> GPIO controller missing from the ACPI tables which should be rare).
>
> Oh, this sounds a great idea.
>
>>
>> I have prepared a follow up patch to your v3 to cache the
>> SPI controller devfn instead of the P2SB devfn at fs_initcall()
>> time. I'll post this shortly and I'll also ask the bug reporter
>> to test the combination of our 2 patches.
>
> Thanks a lot. Looking forward to the results.
Since I already had the follow-up patch to your v3 implementing
this ready I've also send this to the list as RFC.
I hope the patch to only cache 13,0 + 13,2 at fs_initcall()
time works. Then we still avoid all possible deadlock /
lockdep scenarios which would be nice.
Regards,
Hans
next prev parent reply other threads:[~2024-03-04 14:00 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-02 1:28 [PATCH v2] platform/x86: p2sb: Defer P2SB device scan when P2SB device has func 0 Shin'ichiro Kawasaki
2024-03-02 7:28 ` Shinichiro Kawasaki
2024-03-02 11:43 ` Hans de Goede
2024-03-02 23:37 ` Shinichiro Kawasaki
2024-03-03 19:35 ` Hans de Goede
2024-03-04 3:19 ` Shinichiro Kawasaki
2024-03-04 9:55 ` Hans de Goede
2024-03-04 11:04 ` Hans de Goede
2024-03-04 12:13 ` Shinichiro Kawasaki
2024-03-04 13:59 ` Hans de Goede [this message]
2024-03-04 14:09 ` Andy Shevchenko
2024-03-04 14:16 ` Hans de Goede
2024-03-04 14:17 ` Andy Shevchenko
2024-03-04 14:20 ` Andy Shevchenko
2024-03-04 14:24 ` Hans de Goede
2024-03-04 14:35 ` Andy Shevchenko
2024-03-04 14:39 ` Hans de Goede
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=8afa1f78-8b89-4bbc-95e5-35eea76356e4@redhat.com \
--to=hdegoede@redhat.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=danilrybakov249@gmail.com \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=klarasmodin@gmail.com \
--cc=linux-pci@vger.kernel.org \
--cc=lukas@wunner.de \
--cc=platform-driver-x86@vger.kernel.org \
--cc=shinichiro.kawasaki@wdc.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox