mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "KONDO KAZUMA(近藤 和真)" <kazuma-kondo@nec.com>
To: "Rafael J. Wysocki (Intel)" <rafael@kernel.org>
Cc: "bhelgaas@google.com" <bhelgaas@google.com>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] ACPI: PCI: Avoid misleading _OSC messages for non-PCIe host bridges without _OSC
Date: Wed, 5 Aug 2026 11:28:05 +0000	[thread overview]
Message-ID: <d0355280-96dc-4e5e-bfd3-f0c3f77acfa3@nec.com> (raw)
In-Reply-To: <CAJZ5v0iNndQe9q4sK-4b6ZBH3ZRPTE+6eTiNQRwVdtazi=KvCQ@mail.gmail.com>

Hello,

On 2026/08/03 20:47, Rafael J. Wysocki (Intel) wrote:
> On Mon, Aug 3, 2026 at 12:05 PM KONDO KAZUMA(近藤 和真)
> <kazuma-kondo@nec.com> wrote:
>>
>> Hello,
>>
>> I received review comments from Sashiko:
>> https://sashiko.dev/#/patchset/20260731090820.493064-1-kazuma-kondo@nec.com?part=1
>>
>> On 2026/07/31 18:21, sashiko-bot@kernel.org wrote:
>>> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
>>> - [High] Early return bypasses ASPM disablement for non-PCIe and CXL host bridges without _OSC, causing an undocumented functional change and potential instability
>>> --
>>>
>>> --- Patch [1]: [PATCH] ACPI: PCI: Avoid misleading _OSC messages for non-PCIe host bridges without _OSC ---
>>> commit e68d29f653a1c34f8b7b08baaa548e2ff2d3663f
>>> Author: KONDO KAZUMA( $B6aF#!!OB?? (B) <kazuma-kondo@nec.com>
>>>
>>> ACPI: PCI: Avoid misleading _OSC messages for non-PCIe host bridges without _OSC
>>>
>>> This patch skips _OSC negotiation for non-PCIe host bridges that do not define
>>> an _OSC method before attempting to evaluate it. It aims to prevent misleading
>>> messages in the logs on some Intel servers where the OS appears to negotiate
>>> with the platform despite the lack of an _OSC method.
>>>
>>> Link: https://lore.kernel.org/linux-acpi/d0be949d-0e21-472e-a44b-cedb1dd8695d@nec.com/
>>>
>>>> diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
>>>> index 4c06c3ffd0cbb..3a24d018436b4 100644
>>>> --- a/drivers/acpi/pci_root.c
>>>> +++ b/drivers/acpi/pci_root.c
>>>> @@ -574,6 +574,12 @@ static void negotiate_os_control(struct acpi_pci_root *root, int *no_aspm)
>>>>              return;
>>>>      }
>>>>
>>>> +    /* _OSC is optional for PCI host bridges */
>>>> +    if (!is_pcie(root) && !acpi_has_method(handle, "_OSC")) {
>>>> +            dev_dbg(&device->dev, "_OSC: negotiation skipped (method not present for non-PCIe host bridge)\n");
>>>> +            return;
>>>> +    }
>>>> +
>>>
>>> [Severity: High]
>>> Does this early return unintentionally skip disabling ASPM for these host
>>> bridges?
>>>
>>> The commit message states this change produces no functional issues and only
>>> removes misleading messages. However, before this patch, if the _OSC method
>>> was missing, the function would proceed, fail the negotiation, and fall
>>> through to the failure path where *no_aspm = 1 is unconditionally set.
>>>
>>> By returning early here, it looks like *no_aspm = 1 is completely bypassed
>>> for legacy host bridges.
>>>
>>> Additionally, is_pcie() only checks for ACPI_BRIDGE_TYPE_PCIE. Could this
>>> cause CXL host bridges (ACPI_BRIDGE_TYPE_CXL) to evaluate to false here?
>>> If a CXL bridge lacks an _OSC method, it would take this early return and skip
>>> ASPM disablement entirely, which could leave ASPM enabled inappropriately
>>> without firmware negotiation.
>>
>> I think Sashiko's review is reasonable. According to [1], unless the
>> platform explicitly grants the OS control over ASPM via _OSC, the OS
>> should not change the ASPM state configured by the platform.
> 
> Though ASPM only is a thing for PCIe, isn't it?

You're right. I was trying to understand the rationale for disabling
ASPM when _OSC negotiation is skipped, but it appears that I have been
looking at this the wrong way.

> 
>> Also, as described in [2], if CXL 1.1 hosts do not publish a CXL _OSC,
>> the OS should fall back to the PCIe _OSC (just as acpi_pci_query_osc()
>> does).
>>
>> So, negotiate_os_control() should skip _OSC negotiation only when a
>> legacy PCI host bridge does not have _OSC. For example:
>>
>>         /* _OSC is optional for PCI host bridges */
> 
> The comment above is somewhat redundant IMO.
> 
>>         if (!is_pcie(root) && !is_cxl(root) &&
>>             !acpi_has_method(handle, "_OSC")) {
>>                 dev_dbg(&device->dev, "_OSC: negotiation skipped (method not present for legacy PCI host bridge)\n");
> 
> Please make the comment say "Skipping a non-PCIe root without _OSC" or similar.
> 
>>
>>                 /*
>>                  * Disable ASPM unless the OS has been granted control over it
>>                  * via _OSC.
>>                  */
>>                 *no_aspm = 1;
> 
> So I agree that setting *no_aspm to 1 in this case is a good idea, but
> the comment above is slightly misleading.

Thank you for your advice! I'll fix the debug message and the comment.

Thanks,
Kazuma

> 
> I would just make it say "No ASPM for non-PCI host bridges" or equivalent.
> 
>>                 return;
>>         }
>>
>> If I have misunderstood anything, please let me know.

      reply	other threads:[~2026-08-05 11:28 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-31  9:09 KONDO KAZUMA(近藤 和真)
     [not found] ` <20260731092147.B7C531F00A3F@smtp.kernel.org>
2026-08-03 10:05   ` KONDO KAZUMA(近藤 和真)
2026-08-03 11:47     ` Rafael J. Wysocki (Intel)
2026-08-05 11:28       ` KONDO KAZUMA(近藤 和真) [this message]

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=d0355280-96dc-4e5e-bfd3-f0c3f77acfa3@nec.com \
    --to=kazuma-kondo@nec.com \
    --cc=bhelgaas@google.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=rafael@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®