From: Lorenzo Pieralisi <lpieralisi@kernel.org>
To: Dexuan Cui <decui@microsoft.com>
Cc: bhelgaas@google.com, davem@davemloft.net, edumazet@google.com,
haiyangz@microsoft.com, jakeo@microsoft.com, kuba@kernel.org,
kw@linux.com, kys@microsoft.com, leon@kernel.org,
linux-pci@vger.kernel.org, mikelley@microsoft.com,
pabeni@redhat.com, robh@kernel.org, saeedm@nvidia.com,
wei.liu@kernel.org, longli@microsoft.com, boqun.feng@gmail.com,
ssengar@microsoft.com, helgaas@kernel.org,
linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-rdma@vger.kernel.org, netdev@vger.kernel.org,
josete@microsoft.com, stable@vger.kernel.org
Subject: Re: [PATCH v3 6/6] PCI: hv: Use async probing to reduce boot time
Date: Wed, 10 May 2023 10:23:28 +0200 [thread overview]
Message-ID: <ZFtUgCVaneGVKBsW@lpieralisi> (raw)
In-Reply-To: <20230420024037.5921-7-decui@microsoft.com>
On Wed, Apr 19, 2023 at 07:40:37PM -0700, Dexuan Cui wrote:
> Commit 414428c5da1c ("PCI: hv: Lock PCI bus on device eject") added
> pci_lock_rescan_remove() and pci_unlock_rescan_remove() in
> create_root_hv_pci_bus() and in hv_eject_device_work() to address the
> race between create_root_hv_pci_bus() and hv_eject_device_work(), but it
> turns that grabing the pci_rescan_remove_lock mutex is not enough:
> refer to the earlier fix "PCI: hv: Add a per-bus mutex state_lock".
This is meaningless for a commit log reader, there is nothing to
refer to.
> Now with hbus->state_lock and other fixes, the race is resolved, so
"other fixes" is meaningless too.
Explain the problem and how you fix it (this patch should be split
because the Subject does not represent what you are doing precisely,
see below).
> remove pci_{lock,unlock}_rescan_remove() in create_root_hv_pci_bus():
> this removes the serialization in hv_pci_probe() and hence allows
> async-probing (PROBE_PREFER_ASYNCHRONOUS) to work.
>
> Add the async-probing flag to hv_pci_drv.
Adding the asynchronous probing should be a separate patch and
I don't think you should send it to stable kernels straight away
because a) it is not a fix b) it can trigger further regressions.
> pci_{lock,unlock}_rescan_remove() in hv_eject_device_work() and in
> hv_pci_remove() are still kept: according to the comment before
> drivers/pci/probe.c: static DEFINE_MUTEX(pci_rescan_remove_lock),
> "PCI device removal routines should always be executed under this mutex".
This patch should be split, first thing is to fix and document what
you are changing for pci_{lock,unlock}_rescan_remove() then add
asynchronous probing.
Lorenzo
> Signed-off-by: Dexuan Cui <decui@microsoft.com>
> Reviewed-by: Michael Kelley <mikelley@microsoft.com>
> Reviewed-by: Long Li <longli@microsoft.com>
> Cc: stable@vger.kernel.org
> ---
>
> v2:
> No change to the patch body.
> Improved the commit message [Michael Kelley]
> Added Cc:stable
>
> v3:
> Added Michael's and Long Li's Reviewed-by.
> Fixed a typo in the commit message: grubing -> grabing [Thanks, Michael!]
>
> drivers/pci/controller/pci-hyperv.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c
> index 3ae2f99dea8c2..2ea2b1b8a4c9a 100644
> --- a/drivers/pci/controller/pci-hyperv.c
> +++ b/drivers/pci/controller/pci-hyperv.c
> @@ -2312,12 +2312,16 @@ static int create_root_hv_pci_bus(struct hv_pcibus_device *hbus)
> if (error)
> return error;
>
> - pci_lock_rescan_remove();
> + /*
> + * pci_lock_rescan_remove() and pci_unlock_rescan_remove() are
> + * unnecessary here, because we hold the hbus->state_lock, meaning
> + * hv_eject_device_work() and pci_devices_present_work() can't race
> + * with create_root_hv_pci_bus().
> + */
> hv_pci_assign_numa_node(hbus);
> pci_bus_assign_resources(bridge->bus);
> hv_pci_assign_slots(hbus);
> pci_bus_add_devices(bridge->bus);
> - pci_unlock_rescan_remove();
> hbus->state = hv_pcibus_installed;
> return 0;
> }
> @@ -4003,6 +4007,9 @@ static struct hv_driver hv_pci_drv = {
> .remove = hv_pci_remove,
> .suspend = hv_pci_suspend,
> .resume = hv_pci_resume,
> + .driver = {
> + .probe_type = PROBE_PREFER_ASYNCHRONOUS,
> + },
> };
>
> static void __exit exit_hv_pci_drv(void)
> --
> 2.25.1
>
next prev parent reply other threads:[~2023-05-10 8:23 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-20 2:40 [PATCH v3 0/6] pci-hyper: Fix race condition bugs for fast device hotplug Dexuan Cui
2023-04-20 2:40 ` [PATCH v3 1/6] PCI: hv: Fix a race condition bug in hv_pci_query_relations() Dexuan Cui
2023-05-25 8:14 ` Lorenzo Pieralisi
2023-06-15 3:55 ` Dexuan Cui
2023-04-20 2:40 ` [PATCH v3 2/6] PCI: hv: Fix a race condition in hv_irq_unmask() that can cause panic Dexuan Cui
2023-05-25 10:15 ` Lorenzo Pieralisi
2023-06-15 4:27 ` Dexuan Cui
2023-04-20 2:40 ` [PATCH v3 3/6] PCI: hv: Remove the useless hv_pcichild_state from struct hv_pci_dev Dexuan Cui
2023-05-25 8:16 ` Lorenzo Pieralisi
2023-06-15 4:36 ` Dexuan Cui
2023-04-20 2:40 ` [PATCH v3 4/6] Revert "PCI: hv: Fix a timing issue which causes kdump to fail occasionally" Dexuan Cui
2023-05-25 8:22 ` Lorenzo Pieralisi
2023-06-15 4:41 ` Dexuan Cui
2023-04-20 2:40 ` [PATCH v3 5/6] PCI: hv: Add a per-bus mutex state_lock Dexuan Cui
2023-05-25 8:27 ` Lorenzo Pieralisi
2023-04-20 2:40 ` [PATCH v3 6/6] PCI: hv: Use async probing to reduce boot time Dexuan Cui
2023-04-23 19:11 ` Simon Horman
2023-04-24 20:50 ` Dexuan Cui
2023-05-10 8:23 ` Lorenzo Pieralisi [this message]
2023-05-10 17:12 ` Dexuan Cui
2023-05-17 0:02 ` Dexuan Cui
2023-05-23 19:30 ` Dexuan Cui
2023-04-21 2:04 ` [PATCH v3 0/6] pci-hyper: Fix race condition bugs for fast device hotplug Dexuan Cui
2023-04-21 22:23 ` Dexuan Cui
2023-05-08 16:52 ` Wei Liu
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=ZFtUgCVaneGVKBsW@lpieralisi \
--to=lpieralisi@kernel.org \
--cc=bhelgaas@google.com \
--cc=boqun.feng@gmail.com \
--cc=davem@davemloft.net \
--cc=decui@microsoft.com \
--cc=edumazet@google.com \
--cc=haiyangz@microsoft.com \
--cc=helgaas@kernel.org \
--cc=jakeo@microsoft.com \
--cc=josete@microsoft.com \
--cc=kuba@kernel.org \
--cc=kw@linux.com \
--cc=kys@microsoft.com \
--cc=leon@kernel.org \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=longli@microsoft.com \
--cc=mikelley@microsoft.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=robh@kernel.org \
--cc=saeedm@nvidia.com \
--cc=ssengar@microsoft.com \
--cc=stable@vger.kernel.org \
--cc=wei.liu@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;
as well as URLs for NNTP newsgroup(s).