Linux Hardware Monitor development
 help / color / mirror / Atom feed
From: Jihong Min <hurryman2212@icloud.com>
To: Guenter Roeck <linux@roeck-us.net>,
	sashiko-reviews@lists.linux.dev,
	Jihong Min <hurryman2212@gmail.com>
Cc: linux-hwmon@vger.kernel.org, linux-pci@vger.kernel.org
Subject: Re: [PATCH v5 1/2] usb: xhci-pci: add AMD Promontory 21 PCI glue
Date: Thu, 14 May 2026 22:38:28 +0900	[thread overview]
Message-ID: <1f296d29-3d43-4dd3-b751-8a0892b4095a@icloud.com> (raw)
In-Reply-To: <110e9a0d-bc91-4959-8a7b-1a055d0b49f7@roeck-us.net>


On 5/14/26 10:20, Guenter Roeck wrote:
> On 5/13/26 17:40, sashiko-bot@kernel.org wrote:
>> Thank you for your contribution! Sashiko AI review found 2 potential 
>> issue(s) to consider:
>> - [High] The Kconfig dependency `depends on USB_XHCI_PCI=y` 
>> completely disables PROM21 support for systems where the core driver 
>> is built as a module.
>> - [Low] Signed integer overflow when calculating the auxiliary device 
>> ID.
>> -- 
>>
>> commit 20f4e35b2f88ebe2b8988b4f07fe7cc28199096b
>> Author: Jihong Min <hurryman2212@gmail.com>
>> Subject: usb: xhci-pci: add AMD Promontory 21 PCI glue
>>
>> This commit adds a small PCI glue driver for AMD Promontory 21 xHCI
>> controllers. It binds the controllers, delegates USB host operation to
>> the common xHCI PCI core, and creates an auxiliary device for optional
>> temperature sensor support.
>>
>>> diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
>>> --- a/drivers/usb/host/Kconfig
>>> +++ b/drivers/usb/host/Kconfig
>>
>> [ ... ]
>>
>>> @@ -42,6 +42,26 @@ config USB_XHCI_PCI
>>>       depends on USB_PCI
>>>       default y
>>>   +config USB_XHCI_PCI_PROM21
>>> +    bool "AMD Promontory 21 xHCI PCI support"
>>> +    depends on X86
>>> +    depends on USB_XHCI_PCI=y
>>
>> Does depending strictly on USB_XHCI_PCI=y cause a configuration 
>> regression
>> for most distributions where the core driver is configured as a module?
>>
>> The driver source appears fully capable of being built as a module, 
>> using
>> module-related macros and module_pci_driver().
>>
>> If the intent is to prevent an early boot mismatch where xhci-pci is
>> built-in but the PROM21 glue is a module, could this instead be a 
>> tristate
>> option using depends on USB_XHCI_PCI and depends on !(USB_XHCI_PCI=y 
>> && m)?
>> This would enforce the boot constraint while preserving support for 
>> modular
>> kernel builds.
>>
>
> That makes sense to me. That would be stronger than using default (which
> was my idea of dealing with the problem). Restricting the code to 
> USB_XHCI_PCI=y
> seems to be a bit extreme.

Hi Guenter,

I looked more closely at the Kconfig part of the Sashiko suggestion.

The concern itself is valid: the v5 dependency on USB_XHCI_PCI=y is too
strict because it prevents the PROM21 PCI glue from being built when
USB_XHCI_PCI=m.

However, I do not think the suggested expression works as intended:

   depends on !(USB_XHCI_PCI=y && m)

With Kconfig tristate logic, `m` is a tristate literal, not "this symbol is
being built as a module". If USB_XHCI_PCI=y, then:

   USB_XHCI_PCI=y && m  => m
   !(USB_XHCI_PCI=y && m) => m

So the dependency becomes `m`, which limits USB_XHCI_PCI_PROM21 to `m` 
instead
of allowing `y`. That is the opposite of what we need for the built-in
xhci-pci case.

The combinations I think we want are:

   USB_XHCI_PCI=y  -> USB_XHCI_PCI_PROM21=y or n, but not m
   USB_XHCI_PCI=m  -> USB_XHCI_PCI_PROM21=m or n
   USB_XHCI_PCI=n  -> USB_XHCI_PCI_PROM21=n

I see a few possible ways to handle this:

1. Keep USB_XHCI_PCI_PROM21 as a visible tristate:

      config USB_XHCI_PCI_PROM21
        tristate "AMD Promontory 21 xHCI PCI support"
        depends on X86
        depends on USB_XHCI_PCI
        default USB_XHCI_PCI
        select AUXILIARY_BUS

    This supports USB_XHCI_PCI=m, but it still lets a user select the unsafe
    USB_XHCI_PCI=y / USB_XHCI_PCI_PROM21=m combination.

2. Keep it visible and rely on help text to warn users not to select `m` 
when
    USB_XHCI_PCI=y.

    This is simple, but it does not actually prevent the bad combination.

3. Use IS_REACHABLE() in xhci-pci.c instead of IS_ENABLED().

    That would prevent built-in xhci-pci from rejecting PROM21 devices 
when the
    PROM21 glue is only available as a module. However, it also means the
    PROM21 glue/hwmon path would not be used in that configuration 
unless the
    PCI device is rebound later, so I do not think it is ideal.

4. Make USB_XHCI_PCI_PROM21 a hidden tristate that follows USB_XHCI_PCI:

      config USB_XHCI_PCI_PROM21
        tristate
        depends on X86
        depends on USB_XHCI_PCI
        default USB_XHCI_PCI
        select AUXILIARY_BUS

    Then the value follows the common xhci-pci driver:

      USB_XHCI_PCI=y  -> USB_XHCI_PCI_PROM21=y
      USB_XHCI_PCI=m  -> USB_XHCI_PCI_PROM21=m
      USB_XHCI_PCI=n  -> USB_XHCI_PCI_PROM21=n

    This prevents the unsafe y/m split while still supporting modular
    USB_XHCI_PCI builds. The actual user-visible sensor option remains
    SENSORS_PROM21_XHCI.

My current preference is option 4, because the PROM21 PCI glue is not 
really a
user-facing feature by itself. It exists so the common xhci-pci driver 
can hand
PROM21 devices to the PROM21-specific glue and so the optional hwmon 
driver can
bind through the auxiliary device. The user-visible part remains the hwmon
sensor driver.

Does that sound reasonable to you, or would you prefer one of the other
approaches?

Thanks,
Jihong


  reply	other threads:[~2026-05-14 13:38 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-12 21:39 [PATCH v5 0/2] AMD Promontory 21 xHCI temperature sensor support Jihong Min
2026-05-12 21:39 ` [PATCH v5 1/2] usb: xhci-pci: add AMD Promontory 21 PCI glue Jihong Min
2026-05-14  0:40   ` sashiko-bot
2026-05-14  1:20     ` Guenter Roeck
2026-05-14 13:38       ` Jihong Min [this message]
2026-05-14 13:44         ` Jihong Min
2026-05-15  1:49           ` Guenter Roeck
2026-05-14 14:29       ` Jihong Min
2026-05-14 19:22         ` Guenter Roeck
2026-05-12 21:39 ` [PATCH v5 2/2] hwmon: add AMD Promontory 21 xHCI temperature sensor support Jihong Min
2026-05-14  1:00   ` sashiko-bot
2026-05-14  1:13     ` Guenter Roeck
2026-05-12 21:49 ` [PATCH v5 0/2] " Jihong Min
2026-05-13 14:48 ` Mario Limonciello

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=1f296d29-3d43-4dd3-b751-8a0892b4095a@icloud.com \
    --to=hurryman2212@icloud.com \
    --cc=hurryman2212@gmail.com \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=sashiko-reviews@lists.linux.dev \
    /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