From: Lukas Wunner <lukas@wunner.de>
To: Mario Limonciello <superm1@kernel.org>
Cc: mario.limonciello@amd.com, bhelgaas@google.com,
linux-pci@vger.kernel.org,
"Rafael J. Wysocki" <rafael@kernel.org>,
Mika Westerberg <mika.westerberg@linux.intel.com>
Subject: Re: [PATCH 2/4] PCI: Fix runtime PM usage count underflow
Date: Mon, 9 Jun 2025 17:16:33 +0200 [thread overview]
Message-ID: <aEb60TkaaLZ3kKIT@wunner.de> (raw)
In-Reply-To: <20250609020223.269407-3-superm1@kernel.org>
[cc += Rafael, Mika]
On Sun, Jun 08, 2025 at 08:58:02PM -0500, Mario Limonciello wrote:
> From: Mario Limonciello <mario.limonciello@amd.com>
>
> When a USB4 dock is unplugged the PCIe bridge it's connected to will
> remove issue a "Link Down" and "Card not detected event". The PCI core
Nit: s/remove//
> will treat this as a surprise hotplug event and unconfigure all downstream
> devices. This involves setting the device error state to
> `pci_channel_io_perm_failure`.
>
> When PCI core gets to the point that the device is removed using
> pci_device_remove() the runtime count has already been decremented and
> so calling pm_runtime_put_sync() will cause an underflow.
Where has it been decremented? I think this needs to be identified
and a Fixes tag added.
> --- a/drivers/pci/pci-driver.c
> +++ b/drivers/pci/pci-driver.c
> @@ -479,7 +479,8 @@ static void pci_device_remove(struct device *dev)
> pci_iov_remove(pci_dev);
>
> /* Undo the runtime PM settings in local_pci_probe() */
> - pm_runtime_put_sync(dev);
> + if (pci_dev->error_state != pci_channel_io_perm_failure)
> + pm_runtime_put_sync(dev);
Usually pci_dev_is_disconnected() is used in lieu of checking for
the error_state directly.
Thanks,
Lukas
next prev parent reply other threads:[~2025-06-09 15:16 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-09 1:58 [PATCH 0/4] Don't make noise about disconnected USB4 devices Mario Limonciello
2025-06-09 1:58 ` [PATCH 1/4] PCI: Don't show errors on inaccessible PCI devices Mario Limonciello
2025-06-09 15:09 ` Lukas Wunner
2025-06-09 15:41 ` Mario Limonciello
2025-06-09 1:58 ` [PATCH 2/4] PCI: Fix runtime PM usage count underflow Mario Limonciello
2025-06-09 15:16 ` Lukas Wunner [this message]
2025-06-09 1:58 ` [PATCH 3/4] usb: xhci: Avoid showing errors during surprise removal Mario Limonciello
2025-06-09 12:42 ` Mathias Nyman
2025-06-09 13:07 ` Mario Limonciello
2025-06-09 14:52 ` Mathias Nyman
2025-06-09 1:58 ` [PATCH 4/4] usb: xhci: Avoid showing warnings for dying controller Mario Limonciello
2025-06-09 12:47 ` Mathias Nyman
2025-06-09 9:19 ` [PATCH 0/4] Don't make noise about disconnected USB4 devices Michał Pecio
2025-06-09 13:05 ` Mario Limonciello
2025-06-09 15:20 ` Lukas Wunner
-- strict thread matches above, loose matches on Subject: below --
2025-06-09 2:04 [PATCH 1/4] PCI: Don't show errors on inaccessible PCI devices Mario Limonciello
2025-06-09 2:04 ` [PATCH 2/4] PCI: Fix runtime PM usage count underflow 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=aEb60TkaaLZ3kKIT@wunner.de \
--to=lukas@wunner.de \
--cc=bhelgaas@google.com \
--cc=linux-pci@vger.kernel.org \
--cc=mario.limonciello@amd.com \
--cc=mika.westerberg@linux.intel.com \
--cc=rafael@kernel.org \
--cc=superm1@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.