2022-12-01 09:47:41

by Wenchao Chen

[permalink] [raw]
Subject: [PATCH] mmc: sdhci-sprd: remove prefer asynchronous probe

The prefer asynchronous probe affects the order of device probes.

Fixes: d86472ae8b20 ("mmc: Set PROBE_PREFER_ASYNCHRONOUS for drivers that existed in v5.4")
Signed-off-by: Wenchao Chen <[email protected]>
---
drivers/mmc/host/sdhci-sprd.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/drivers/mmc/host/sdhci-sprd.c b/drivers/mmc/host/sdhci-sprd.c
index b92a408f138d..bf8df727e95e 100644
--- a/drivers/mmc/host/sdhci-sprd.c
+++ b/drivers/mmc/host/sdhci-sprd.c
@@ -801,7 +801,6 @@ static struct platform_driver sdhci_sprd_driver = {
.remove = sdhci_sprd_remove,
.driver = {
.name = "sdhci_sprd_r11",
- .probe_type = PROBE_PREFER_ASYNCHRONOUS,
.of_match_table = sdhci_sprd_of_match,
.pm = &sdhci_sprd_pm_ops,
},
--
2.17.1


2022-12-01 11:41:36

by Ulf Hansson

[permalink] [raw]
Subject: Re: [PATCH] mmc: sdhci-sprd: remove prefer asynchronous probe

On Thu, 1 Dec 2022 at 10:12, Wenchao Chen <[email protected]> wrote:
>
> The prefer asynchronous probe affects the order of device probes.

Is there a problem with this? If so, can you elaborate on what kind of problems?

>
> Fixes: d86472ae8b20 ("mmc: Set PROBE_PREFER_ASYNCHRONOUS for drivers that existed in v5.4")
> Signed-off-by: Wenchao Chen <[email protected]>

Kind regards
Uffe

> ---
> drivers/mmc/host/sdhci-sprd.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/mmc/host/sdhci-sprd.c b/drivers/mmc/host/sdhci-sprd.c
> index b92a408f138d..bf8df727e95e 100644
> --- a/drivers/mmc/host/sdhci-sprd.c
> +++ b/drivers/mmc/host/sdhci-sprd.c
> @@ -801,7 +801,6 @@ static struct platform_driver sdhci_sprd_driver = {
> .remove = sdhci_sprd_remove,
> .driver = {
> .name = "sdhci_sprd_r11",
> - .probe_type = PROBE_PREFER_ASYNCHRONOUS,
> .of_match_table = sdhci_sprd_of_match,
> .pm = &sdhci_sprd_pm_ops,
> },
> --
> 2.17.1
>

2022-12-02 02:54:16

by Wenchao Chen

[permalink] [raw]
Subject: Re: [PATCH] mmc: sdhci-sprd: remove prefer asynchronous probe

On Thu, Dec 1, 2022 at 6:41 PM Ulf Hansson <[email protected]> wrote:
>
> On Thu, 1 Dec 2022 at 10:12, Wenchao Chen <[email protected]> wrote:
> >
> > The prefer asynchronous probe affects the order of device probes.
>
> Is there a problem with this? If so, can you elaborate on what kind of problems?
>

Hi Uffe
dts:
sdio0: sdio@71100000 {
...
bus-width = <4>;
no-sdio;
no-mmc;
...
}; // SD Host(Device: SD CARD)

sdio3: sdio@71400000 {
...
bus-width = <8>;
non-removable;
no-sdio;
no-sd;
...
}; // eMMC Host(Device: eMMC)

According to the order of DTS: sdio0: sdio@71100000 is MMC0, sdio3:
sdio@71400000 is MMC1.
Log:
[ 1.714617][ T11] mmc1: SDHCI controller on 71400000.sdio
[71400000.sdio] using ADMA 64-bit
[ 1.715276][ T9] mmc0: SDHCI controller on 71100000.sdio
[71100000.sdio] using ADMA 64-bit
[ 1.884525][ T75] mmc1: Host Software Queue enabled
[ 1.890965][ T75] mmc1: new HS400 Enhanced strobe MMC card at address 0001

But set prefer_asynchronous_probe, sometimes there will be sdio0:
sdio@71100000 is MMC1, sdio3: sdio@71400000 is MMC0.
Log:
[ 1.619888][ T68] mmc0: SDHCI controller on 71400000.sdio
[71400000.sdio] using ADMA 64-bit
[ 1.620534][ T9] mmc1: SDHCI controller on 71100000.sdio
[71100000.sdio] using ADMA 64-bit
[ 1.792570][ T77] mmc0: Host Software Queue enabled
[ 1.799532][ T77] mmc0: new HS400 Enhanced strobe MMC card at address 0001

We use emmc as rootfs (without ramfs or initfs), but with SD card
inserted and not inserted, the partition name of emmc is different, we
need to fix this partition name.

> >
> > Fixes: d86472ae8b20 ("mmc: Set PROBE_PREFER_ASYNCHRONOUS for drivers that existed in v5.4")
> > Signed-off-by: Wenchao Chen <[email protected]>
>
> Kind regards
> Uffe
>
> > ---
> > drivers/mmc/host/sdhci-sprd.c | 1 -
> > 1 file changed, 1 deletion(-)
> >
> > diff --git a/drivers/mmc/host/sdhci-sprd.c b/drivers/mmc/host/sdhci-sprd.c
> > index b92a408f138d..bf8df727e95e 100644
> > --- a/drivers/mmc/host/sdhci-sprd.c
> > +++ b/drivers/mmc/host/sdhci-sprd.c
> > @@ -801,7 +801,6 @@ static struct platform_driver sdhci_sprd_driver = {
> > .remove = sdhci_sprd_remove,
> > .driver = {
> > .name = "sdhci_sprd_r11",
> > - .probe_type = PROBE_PREFER_ASYNCHRONOUS,
> > .of_match_table = sdhci_sprd_of_match,
> > .pm = &sdhci_sprd_pm_ops,
> > },
> > --
> > 2.17.1
> >

2022-12-07 13:21:17

by Ulf Hansson

[permalink] [raw]
Subject: Re: [PATCH] mmc: sdhci-sprd: remove prefer asynchronous probe

On Fri, 2 Dec 2022 at 03:41, Wenchao Chen <[email protected]> wrote:
>
> On Thu, Dec 1, 2022 at 6:41 PM Ulf Hansson <[email protected]> wrote:
> >
> > On Thu, 1 Dec 2022 at 10:12, Wenchao Chen <[email protected]> wrote:
> > >
> > > The prefer asynchronous probe affects the order of device probes.
> >
> > Is there a problem with this? If so, can you elaborate on what kind of problems?
> >
>
> Hi Uffe
> dts:
> sdio0: sdio@71100000 {
> ...
> bus-width = <4>;
> no-sdio;
> no-mmc;
> ...
> }; // SD Host(Device: SD CARD)
>
> sdio3: sdio@71400000 {
> ...
> bus-width = <8>;
> non-removable;
> no-sdio;
> no-sd;
> ...
> }; // eMMC Host(Device: eMMC)
>
> According to the order of DTS: sdio0: sdio@71100000 is MMC0, sdio3:
> sdio@71400000 is MMC1.
> Log:
> [ 1.714617][ T11] mmc1: SDHCI controller on 71400000.sdio
> [71400000.sdio] using ADMA 64-bit
> [ 1.715276][ T9] mmc0: SDHCI controller on 71100000.sdio
> [71100000.sdio] using ADMA 64-bit
> [ 1.884525][ T75] mmc1: Host Software Queue enabled
> [ 1.890965][ T75] mmc1: new HS400 Enhanced strobe MMC card at address 0001
>
> But set prefer_asynchronous_probe, sometimes there will be sdio0:
> sdio@71100000 is MMC1, sdio3: sdio@71400000 is MMC0.
> Log:
> [ 1.619888][ T68] mmc0: SDHCI controller on 71400000.sdio
> [71400000.sdio] using ADMA 64-bit
> [ 1.620534][ T9] mmc1: SDHCI controller on 71100000.sdio
> [71100000.sdio] using ADMA 64-bit
> [ 1.792570][ T77] mmc0: Host Software Queue enabled
> [ 1.799532][ T77] mmc0: new HS400 Enhanced strobe MMC card at address 0001

Neither the order of the nodes in DT or dropping
PROBE_PREFER_ASYNCHRONOUS provides the guarantees that you suggest
above. In fact, that has never been the case for eMMC/SD cards.

>
> We use emmc as rootfs (without ramfs or initfs), but with SD card
> inserted and not inserted, the partition name of emmc is different, we
> need to fix this partition name.

If you can't use PARTUUID/UUID, which is certainly the preferred
solution - you may also assign a fixed index mmcN to an MMC host
controller and its corresponding mmcblk[n] devices, by defining an
alias in the /aliases device tree node.

[...]

Kind regards
Uffe

2022-12-09 06:50:24

by Wenchao Chen

[permalink] [raw]
Subject: Re: [PATCH] mmc: sdhci-sprd: remove prefer asynchronous probe

On Wed, Dec 7, 2022 at 8:50 PM Ulf Hansson <[email protected]> wrote:
>
> On Fri, 2 Dec 2022 at 03:41, Wenchao Chen <[email protected]> wrote:
> >
> > On Thu, Dec 1, 2022 at 6:41 PM Ulf Hansson <[email protected]> wrote:
> > >
> > > On Thu, 1 Dec 2022 at 10:12, Wenchao Chen <[email protected]> wrote:
> > > >
> > > > The prefer asynchronous probe affects the order of device probes.
> > >
> > > Is there a problem with this? If so, can you elaborate on what kind of problems?
> > >
> >
> > Hi Uffe
> > dts:
> > sdio0: sdio@71100000 {
> > ...
> > bus-width = <4>;
> > no-sdio;
> > no-mmc;
> > ...
> > }; // SD Host(Device: SD CARD)
> >
> > sdio3: sdio@71400000 {
> > ...
> > bus-width = <8>;
> > non-removable;
> > no-sdio;
> > no-sd;
> > ...
> > }; // eMMC Host(Device: eMMC)
> >
> > According to the order of DTS: sdio0: sdio@71100000 is MMC0, sdio3:
> > sdio@71400000 is MMC1.
> > Log:
> > [ 1.714617][ T11] mmc1: SDHCI controller on 71400000.sdio
> > [71400000.sdio] using ADMA 64-bit
> > [ 1.715276][ T9] mmc0: SDHCI controller on 71100000.sdio
> > [71100000.sdio] using ADMA 64-bit
> > [ 1.884525][ T75] mmc1: Host Software Queue enabled
> > [ 1.890965][ T75] mmc1: new HS400 Enhanced strobe MMC card at address 0001
> >
> > But set prefer_asynchronous_probe, sometimes there will be sdio0:
> > sdio@71100000 is MMC1, sdio3: sdio@71400000 is MMC0.
> > Log:
> > [ 1.619888][ T68] mmc0: SDHCI controller on 71400000.sdio
> > [71400000.sdio] using ADMA 64-bit
> > [ 1.620534][ T9] mmc1: SDHCI controller on 71100000.sdio
> > [71100000.sdio] using ADMA 64-bit
> > [ 1.792570][ T77] mmc0: Host Software Queue enabled
> > [ 1.799532][ T77] mmc0: new HS400 Enhanced strobe MMC card at address 0001
>
> Neither the order of the nodes in DT or dropping
> PROBE_PREFER_ASYNCHRONOUS provides the guarantees that you suggest
> above. In fact, that has never been the case for eMMC/SD cards.
>
> >
> > We use emmc as rootfs (without ramfs or initfs), but with SD card
> > inserted and not inserted, the partition name of emmc is different, we
> > need to fix this partition name.
>
> If you can't use PARTUUID/UUID, which is certainly the preferred
> solution - you may also assign a fixed index mmcN to an MMC host
> controller and its corresponding mmcblk[n] devices, by defining an
> alias in the /aliases device tree node.
>

You're right.

aliases {
...
mmc0 = &sdio3;
mmc1 = &sdio0;
...
};

Thank you very much.

> [...]
>
> Kind regards
> Uffe