[PATCH] PCI: rockchip-host: Enable async probe by default

Bjorn Helgaas helgaas at kernel.org
Mon Nov 9 12:22:02 PST 2026


On Tue, Nov 03, 2026 at 06:07:35AM +0000, Igor Velkov wrote:
> The probe waits for the link to come up, and with an empty slot it
> holds the deferred-probe worker for about 0.7 s. On ROCK Pi 4 with
> UHS-I enabled for the SD card, the I/O-domain driver then binds only
> after the card has switched to 1.8 V, and tuning fails ("All phases
> bad!").

I don't know what the SD card has to do with PCIe.  Seems like there's
some SD issue, and making PCIe async happens to avoid it?  Sounds
fragile to me.

Other changes like c0e1eb441b1d justify it by allowing other drivers
to load in parallel to reduce boot time, which is a good reason.  But
apparently here it makes a functional difference as well, which feels
sketchy.  E.g., what other drivers need to use async probe to avoid
similar issues?

> Probe asynchronously, as commit c0e1eb441b1d ("PCI: qcom: Enable async
> probe by default") does for the Qualcomm host driver. This does not
> order the I/O domain before dw_mmc in general; an explicit dependency
> was proposed in [1] and not merged.
> 
> Link: https://lore.kernel.org/all/20230904115816.1237684-1-s.hauer@pengutronix.de/ [1]
> Signed-off-by: Igor Velkov <iav at iav.lv>
> ---
> Tested on v7.3.1 with the Armbian rockchip64 config (PCIE_ROCKCHIP_HOST=y):
> - ROCK Pi 4A, empty slot, UHS-I DT change posted separately: SDR104 on
>   3 of 3 cold boots; without this patch tuning fails.
> - Kobol Helios64, JMB585 in the slot: link, SATA and disk reads OK
>   over 3 cold boots and a reboot.
> ---
>  drivers/pci/controller/pcie-rockchip-host.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/pci/controller/pcie-rockchip-host.c b/drivers/pci/controller/pcie-rockchip-host.c
> index 5b071bdc4f90..1e1556e436b8 100644
> --- a/drivers/pci/controller/pcie-rockchip-host.c
> +++ b/drivers/pci/controller/pcie-rockchip-host.c
> @@ -1027,6 +1027,7 @@ static struct platform_driver rockchip_pcie_driver = {
>  		.name = "rockchip-pcie",
>  		.of_match_table = rockchip_pcie_of_match,
>  		.pm = &rockchip_pcie_pm_ops,
> +		.probe_type = PROBE_PREFER_ASYNCHRONOUS,
>  	},
>  	.probe = rockchip_pcie_probe,
>  	.remove = rockchip_pcie_remove,
> 
> ---
> base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
> change-id: 20261103-rockchip-pcie-async-42c1c3863617
> 
> Best regards,
> -- 
> Igor Velkov <iav at iav.lv>
> 



More information about the Linux-rockchip mailing list