linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mmc: block: Use the mmc host device index as the mmcblk device index
@ 2016-04-07  7:57 Ulf Hansson
  2016-04-07 12:07 ` Jaehoon Chung
  2016-04-12  6:59 ` Ulf Hansson
  0 siblings, 2 replies; 6+ messages in thread
From: Ulf Hansson @ 2016-04-07  7:57 UTC (permalink / raw)
  To: linux-mmc, Ulf Hansson
  Cc: Jaehoon Chung, Adrian Hunter, Jisheng Zhang, Peter Hurley,
	Laszlo Fiat, linux-kernel, Linus Torvalds, stable

Commit 520bd7a8b415 ("mmc: core: Optimize boot time by detecting cards
simultaneously") causes regressions for some platforms.

These platforms relies on fixed mmcblk device indexes, instead of
deploying the defacto standard with UUID/PARTUUID. In other words their
rootfs needs to be available at hardcoded paths, like /dev/mmcblk0p2.

Such guarantees have never been made by the kernel, but clearly the above
commit changes the behaviour. More precisely, because of that the order
changes of how cards becomes detected, so do their corresponding mmcblk
device indexes.

As the above commit significantly improves boot time for some platforms
(magnitude of seconds), let's avoid reverting this change but instead
restore the behaviour of how mmcblk device indexes becomes picked.

By using the same index for the mmcblk device as for the corresponding mmc
host device, the probe order of mmc host devices decides the index we get
for the mmcblk device.

For those platforms that suffers from a regression, one could expect that
this updated behaviour should be sufficient to meet their expectations of
"fixed" mmcblk device indexes.

Another side effect from this change, is that the same index is used for
the mmc host device, the mmcblk device and the mmc block queue. That
should clarify their relationship.

Reported-by: Peter Hurley <peter@hurleysoftware.com>
Reported-by: Laszlo Fiat <laszlo.fiat@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Fixes: 520bd7a8b415 ("mmc: core: Optimize boot time by detecting cards
simultaneously")
Cc: <stable@vger.kernel.org>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
---
 drivers/mmc/card/block.c | 18 +-----------------
 1 file changed, 1 insertion(+), 17 deletions(-)

diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
index 3bdbe50..8a0147d 100644
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -86,7 +86,6 @@ static int max_devices;
 
 /* TODO: Replace these with struct ida */
 static DECLARE_BITMAP(dev_use, MAX_DEVICES);
-static DECLARE_BITMAP(name_use, MAX_DEVICES);
 
 /*
  * There is one mmc_blk_data per slot.
@@ -105,7 +104,6 @@ struct mmc_blk_data {
 	unsigned int	usage;
 	unsigned int	read_only;
 	unsigned int	part_type;
-	unsigned int	name_idx;
 	unsigned int	reset_done;
 #define MMC_BLK_READ		BIT(0)
 #define MMC_BLK_WRITE		BIT(1)
@@ -2202,19 +2200,6 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
 		goto out;
 	}
 
-	/*
-	 * !subname implies we are creating main mmc_blk_data that will be
-	 * associated with mmc_card with dev_set_drvdata. Due to device
-	 * partitions, devidx will not coincide with a per-physical card
-	 * index anymore so we keep track of a name index.
-	 */
-	if (!subname) {
-		md->name_idx = find_first_zero_bit(name_use, max_devices);
-		__set_bit(md->name_idx, name_use);
-	} else
-		md->name_idx = ((struct mmc_blk_data *)
-				dev_to_disk(parent)->private_data)->name_idx;
-
 	md->area_type = area_type;
 
 	/*
@@ -2264,7 +2249,7 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
 	 */
 
 	snprintf(md->disk->disk_name, sizeof(md->disk->disk_name),
-		 "mmcblk%u%s", md->name_idx, subname ? subname : "");
+		 "mmcblk%u%s", card->host->index, subname ? subname : "");
 
 	if (mmc_card_mmc(card))
 		blk_queue_logical_block_size(md->queue.queue,
@@ -2418,7 +2403,6 @@ static void mmc_blk_remove_parts(struct mmc_card *card,
 	struct list_head *pos, *q;
 	struct mmc_blk_data *part_md;
 
-	__clear_bit(md->name_idx, name_use);
 	list_for_each_safe(pos, q, &md->part) {
 		part_md = list_entry(pos, struct mmc_blk_data, part);
 		list_del(pos);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] mmc: block: Use the mmc host device index as the mmcblk device index
  2016-04-07  7:57 [PATCH] mmc: block: Use the mmc host device index as the mmcblk device index Ulf Hansson
@ 2016-04-07 12:07 ` Jaehoon Chung
  2016-04-07 13:07   ` Ulf Hansson
  2016-04-12  6:59 ` Ulf Hansson
  1 sibling, 1 reply; 6+ messages in thread
From: Jaehoon Chung @ 2016-04-07 12:07 UTC (permalink / raw)
  To: Ulf Hansson, linux-mmc
  Cc: Adrian Hunter, Jisheng Zhang, Peter Hurley, Laszlo Fiat,
	linux-kernel, Linus Torvalds, stable

On 04/07/2016 04:57 PM, Ulf Hansson wrote:
> Commit 520bd7a8b415 ("mmc: core: Optimize boot time by detecting cards
> simultaneously") causes regressions for some platforms.
> 
> These platforms relies on fixed mmcblk device indexes, instead of
> deploying the defacto standard with UUID/PARTUUID. In other words their
> rootfs needs to be available at hardcoded paths, like /dev/mmcblk0p2.
> 
> Such guarantees have never been made by the kernel, but clearly the above
> commit changes the behaviour. More precisely, because of that the order
> changes of how cards becomes detected, so do their corresponding mmcblk
> device indexes.
> 
> As the above commit significantly improves boot time for some platforms
> (magnitude of seconds), let's avoid reverting this change but instead
> restore the behaviour of how mmcblk device indexes becomes picked.
> 
> By using the same index for the mmcblk device as for the corresponding mmc
> host device, the probe order of mmc host devices decides the index we get
> for the mmcblk device.
> 
> For those platforms that suffers from a regression, one could expect that
> this updated behaviour should be sufficient to meet their expectations of
> "fixed" mmcblk device indexes.
> 
> Another side effect from this change, is that the same index is used for
> the mmc host device, the mmcblk device and the mmc block queue. That
> should clarify their relationship.

I have tested with this patch..but there also are side-effects.
Exynos4 series has the two host controller..one is sdhci, one is dwmmc for eMMC.
In this case, dwmmc controller is probed after sdhci controller.

Then eMMC is always assigned to mmcblk1.

I think it's not good that make another problem for solving something.
It needs more discussion for this..

Best Regards,
Jaehoon Chung

> 
> Reported-by: Peter Hurley <peter@hurleysoftware.com>
> Reported-by: Laszlo Fiat <laszlo.fiat@gmail.com>
> Cc: Linus Torvalds <torvalds@linux-foundation.org>
> Fixes: 520bd7a8b415 ("mmc: core: Optimize boot time by detecting cards
> simultaneously")
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> ---
>  drivers/mmc/card/block.c | 18 +-----------------
>  1 file changed, 1 insertion(+), 17 deletions(-)
> 
> diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
> index 3bdbe50..8a0147d 100644
> --- a/drivers/mmc/card/block.c
> +++ b/drivers/mmc/card/block.c
> @@ -86,7 +86,6 @@ static int max_devices;
>  
>  /* TODO: Replace these with struct ida */
>  static DECLARE_BITMAP(dev_use, MAX_DEVICES);
> -static DECLARE_BITMAP(name_use, MAX_DEVICES);
>  
>  /*
>   * There is one mmc_blk_data per slot.
> @@ -105,7 +104,6 @@ struct mmc_blk_data {
>  	unsigned int	usage;
>  	unsigned int	read_only;
>  	unsigned int	part_type;
> -	unsigned int	name_idx;
>  	unsigned int	reset_done;
>  #define MMC_BLK_READ		BIT(0)
>  #define MMC_BLK_WRITE		BIT(1)
> @@ -2202,19 +2200,6 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
>  		goto out;
>  	}
>  
> -	/*
> -	 * !subname implies we are creating main mmc_blk_data that will be
> -	 * associated with mmc_card with dev_set_drvdata. Due to device
> -	 * partitions, devidx will not coincide with a per-physical card
> -	 * index anymore so we keep track of a name index.
> -	 */
> -	if (!subname) {
> -		md->name_idx = find_first_zero_bit(name_use, max_devices);
> -		__set_bit(md->name_idx, name_use);
> -	} else
> -		md->name_idx = ((struct mmc_blk_data *)
> -				dev_to_disk(parent)->private_data)->name_idx;
> -
>  	md->area_type = area_type;
>  
>  	/*
> @@ -2264,7 +2249,7 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
>  	 */
>  
>  	snprintf(md->disk->disk_name, sizeof(md->disk->disk_name),
> -		 "mmcblk%u%s", md->name_idx, subname ? subname : "");
> +		 "mmcblk%u%s", card->host->index, subname ? subname : "");
>  
>  	if (mmc_card_mmc(card))
>  		blk_queue_logical_block_size(md->queue.queue,
> @@ -2418,7 +2403,6 @@ static void mmc_blk_remove_parts(struct mmc_card *card,
>  	struct list_head *pos, *q;
>  	struct mmc_blk_data *part_md;
>  
> -	__clear_bit(md->name_idx, name_use);
>  	list_for_each_safe(pos, q, &md->part) {
>  		part_md = list_entry(pos, struct mmc_blk_data, part);
>  		list_del(pos);
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] mmc: block: Use the mmc host device index as the mmcblk device index
  2016-04-07 12:07 ` Jaehoon Chung
@ 2016-04-07 13:07   ` Ulf Hansson
  2016-04-14  1:25     ` Jaehoon Chung
  0 siblings, 1 reply; 6+ messages in thread
From: Ulf Hansson @ 2016-04-07 13:07 UTC (permalink / raw)
  To: Jaehoon Chung
  Cc: linux-mmc, Adrian Hunter, Jisheng Zhang, Peter Hurley,
	Laszlo Fiat, linux-kernel, Linus Torvalds, # 4.0+

On 7 April 2016 at 14:07, Jaehoon Chung <jh80.chung@samsung.com> wrote:
> On 04/07/2016 04:57 PM, Ulf Hansson wrote:
>> Commit 520bd7a8b415 ("mmc: core: Optimize boot time by detecting cards
>> simultaneously") causes regressions for some platforms.
>>
>> These platforms relies on fixed mmcblk device indexes, instead of
>> deploying the defacto standard with UUID/PARTUUID. In other words their
>> rootfs needs to be available at hardcoded paths, like /dev/mmcblk0p2.
>>
>> Such guarantees have never been made by the kernel, but clearly the above
>> commit changes the behaviour. More precisely, because of that the order
>> changes of how cards becomes detected, so do their corresponding mmcblk
>> device indexes.
>>
>> As the above commit significantly improves boot time for some platforms
>> (magnitude of seconds), let's avoid reverting this change but instead
>> restore the behaviour of how mmcblk device indexes becomes picked.
>>
>> By using the same index for the mmcblk device as for the corresponding mmc
>> host device, the probe order of mmc host devices decides the index we get
>> for the mmcblk device.
>>
>> For those platforms that suffers from a regression, one could expect that
>> this updated behaviour should be sufficient to meet their expectations of
>> "fixed" mmcblk device indexes.
>>
>> Another side effect from this change, is that the same index is used for
>> the mmc host device, the mmcblk device and the mmc block queue. That
>> should clarify their relationship.
>
> I have tested with this patch..but there also are side-effects.
> Exynos4 series has the two host controller..one is sdhci, one is dwmmc for eMMC.
> In this case, dwmmc controller is probed after sdhci controller.
>
> Then eMMC is always assigned to mmcblk1.

Okay, let me follow up with some questions.

1)
What is the sdhci controller used for?

2)
Are you seeing regressions for Exynos for this? I was under the
assumption that your vendor trees contained patches to deal with fixed
mmcblk ids?

3)
You proposed [1] recently to use aliases in DT to support fixed mmcblk
ids. I do realize that as UUID/PARTUUID sometimes can be a bit
cumbersome to use for an embedded system. Using aliases via DT seems
like a very good option. To implement that on top of $subject patch
should be quite easy to fix (I am happy to help with it). Would that
address your concerns?

>
> I think it's not good that make another problem for solving something.
> It needs more discussion for this..

Thanks for testing and your comments!

Kind regards
Uffe

[1]
http://www.spinics.net/lists/linux-mmc/msg35980.html

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] mmc: block: Use the mmc host device index as the mmcblk device index
  2016-04-07  7:57 [PATCH] mmc: block: Use the mmc host device index as the mmcblk device index Ulf Hansson
  2016-04-07 12:07 ` Jaehoon Chung
@ 2016-04-12  6:59 ` Ulf Hansson
  1 sibling, 0 replies; 6+ messages in thread
From: Ulf Hansson @ 2016-04-12  6:59 UTC (permalink / raw)
  To: linux-mmc, Ulf Hansson
  Cc: Jaehoon Chung, Adrian Hunter, Jisheng Zhang, Peter Hurley,
	Laszlo Fiat, linux-kernel, Linus Torvalds, # 4.0+

On 7 April 2016 at 09:57, Ulf Hansson <ulf.hansson@linaro.org> wrote:
> Commit 520bd7a8b415 ("mmc: core: Optimize boot time by detecting cards
> simultaneously") causes regressions for some platforms.
>
> These platforms relies on fixed mmcblk device indexes, instead of
> deploying the defacto standard with UUID/PARTUUID. In other words their
> rootfs needs to be available at hardcoded paths, like /dev/mmcblk0p2.
>
> Such guarantees have never been made by the kernel, but clearly the above
> commit changes the behaviour. More precisely, because of that the order
> changes of how cards becomes detected, so do their corresponding mmcblk
> device indexes.
>
> As the above commit significantly improves boot time for some platforms
> (magnitude of seconds), let's avoid reverting this change but instead
> restore the behaviour of how mmcblk device indexes becomes picked.
>
> By using the same index for the mmcblk device as for the corresponding mmc
> host device, the probe order of mmc host devices decides the index we get
> for the mmcblk device.
>
> For those platforms that suffers from a regression, one could expect that
> this updated behaviour should be sufficient to meet their expectations of
> "fixed" mmcblk device indexes.
>
> Another side effect from this change, is that the same index is used for
> the mmc host device, the mmcblk device and the mmc block queue. That
> should clarify their relationship.
>
> Reported-by: Peter Hurley <peter@hurleysoftware.com>
> Reported-by: Laszlo Fiat <laszlo.fiat@gmail.com>
> Cc: Linus Torvalds <torvalds@linux-foundation.org>
> Fixes: 520bd7a8b415 ("mmc: core: Optimize boot time by detecting cards
> simultaneously")
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>

To get this more thoroughly tested in linux-next, I have applied this
for my next branch.

I will be monitoring test reports from kernelci, but of course I
appreciate also any other feedback on this.

Kind regards
Uffe

> ---
>  drivers/mmc/card/block.c | 18 +-----------------
>  1 file changed, 1 insertion(+), 17 deletions(-)
>
> diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
> index 3bdbe50..8a0147d 100644
> --- a/drivers/mmc/card/block.c
> +++ b/drivers/mmc/card/block.c
> @@ -86,7 +86,6 @@ static int max_devices;
>
>  /* TODO: Replace these with struct ida */
>  static DECLARE_BITMAP(dev_use, MAX_DEVICES);
> -static DECLARE_BITMAP(name_use, MAX_DEVICES);
>
>  /*
>   * There is one mmc_blk_data per slot.
> @@ -105,7 +104,6 @@ struct mmc_blk_data {
>         unsigned int    usage;
>         unsigned int    read_only;
>         unsigned int    part_type;
> -       unsigned int    name_idx;
>         unsigned int    reset_done;
>  #define MMC_BLK_READ           BIT(0)
>  #define MMC_BLK_WRITE          BIT(1)
> @@ -2202,19 +2200,6 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
>                 goto out;
>         }
>
> -       /*
> -        * !subname implies we are creating main mmc_blk_data that will be
> -        * associated with mmc_card with dev_set_drvdata. Due to device
> -        * partitions, devidx will not coincide with a per-physical card
> -        * index anymore so we keep track of a name index.
> -        */
> -       if (!subname) {
> -               md->name_idx = find_first_zero_bit(name_use, max_devices);
> -               __set_bit(md->name_idx, name_use);
> -       } else
> -               md->name_idx = ((struct mmc_blk_data *)
> -                               dev_to_disk(parent)->private_data)->name_idx;
> -
>         md->area_type = area_type;
>
>         /*
> @@ -2264,7 +2249,7 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
>          */
>
>         snprintf(md->disk->disk_name, sizeof(md->disk->disk_name),
> -                "mmcblk%u%s", md->name_idx, subname ? subname : "");
> +                "mmcblk%u%s", card->host->index, subname ? subname : "");
>
>         if (mmc_card_mmc(card))
>                 blk_queue_logical_block_size(md->queue.queue,
> @@ -2418,7 +2403,6 @@ static void mmc_blk_remove_parts(struct mmc_card *card,
>         struct list_head *pos, *q;
>         struct mmc_blk_data *part_md;
>
> -       __clear_bit(md->name_idx, name_use);
>         list_for_each_safe(pos, q, &md->part) {
>                 part_md = list_entry(pos, struct mmc_blk_data, part);
>                 list_del(pos);
> --
> 1.9.1
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] mmc: block: Use the mmc host device index as the mmcblk device index
  2016-04-07 13:07   ` Ulf Hansson
@ 2016-04-14  1:25     ` Jaehoon Chung
  2016-04-14  7:26       ` Ulf Hansson
  0 siblings, 1 reply; 6+ messages in thread
From: Jaehoon Chung @ 2016-04-14  1:25 UTC (permalink / raw)
  To: Ulf Hansson
  Cc: linux-mmc, Adrian Hunter, Jisheng Zhang, Peter Hurley,
	Laszlo Fiat, linux-kernel, Linus Torvalds, # 4.0+

Hi Ulf,

Sorry for replying late.

On 04/07/2016 10:07 PM, Ulf Hansson wrote:
> On 7 April 2016 at 14:07, Jaehoon Chung <jh80.chung@samsung.com> wrote:
>> On 04/07/2016 04:57 PM, Ulf Hansson wrote:
>>> Commit 520bd7a8b415 ("mmc: core: Optimize boot time by detecting cards
>>> simultaneously") causes regressions for some platforms.
>>>
>>> These platforms relies on fixed mmcblk device indexes, instead of
>>> deploying the defacto standard with UUID/PARTUUID. In other words their
>>> rootfs needs to be available at hardcoded paths, like /dev/mmcblk0p2.
>>>
>>> Such guarantees have never been made by the kernel, but clearly the above
>>> commit changes the behaviour. More precisely, because of that the order
>>> changes of how cards becomes detected, so do their corresponding mmcblk
>>> device indexes.
>>>
>>> As the above commit significantly improves boot time for some platforms
>>> (magnitude of seconds), let's avoid reverting this change but instead
>>> restore the behaviour of how mmcblk device indexes becomes picked.
>>>
>>> By using the same index for the mmcblk device as for the corresponding mmc
>>> host device, the probe order of mmc host devices decides the index we get
>>> for the mmcblk device.
>>>
>>> For those platforms that suffers from a regression, one could expect that
>>> this updated behaviour should be sufficient to meet their expectations of
>>> "fixed" mmcblk device indexes.
>>>
>>> Another side effect from this change, is that the same index is used for
>>> the mmc host device, the mmcblk device and the mmc block queue. That
>>> should clarify their relationship.
>>
>> I have tested with this patch..but there also are side-effects.
>> Exynos4 series has the two host controller..one is sdhci, one is dwmmc for eMMC.
>> In this case, dwmmc controller is probed after sdhci controller.
>>
>> Then eMMC is always assigned to mmcblk1.
> 
> Okay, let me follow up with some questions.
> 
> 1)
> What is the sdhci controller used for?

Some of Exynos4 series have two MMC host controller. 
As i mentioned, one is sdhci, other is dwmmc.

sdhci controller can be used for eMMC/SD/SDIO. (emmc, T-flash, WiFi)
And dwmmc controller can be only used for eMMC.

It can choose which controller user uses.
In normal, i recommend the dwmmc controller is used for eMMC.
(There are some reason..I/O performance, and functionality.)

> 
> 2)
> Are you seeing regressions for Exynos for this? I was under the
> assumption that your vendor trees contained patches to deal with fixed
> mmcblk ids?

Actually not...but i need to check more..in vendor tress.

> 
> 3)
> You proposed [1] recently to use aliases in DT to support fixed mmcblk
> ids. I do realize that as UUID/PARTUUID sometimes can be a bit
> cumbersome to use for an embedded system. Using aliases via DT seems
> like a very good option. To implement that on top of $subject patch
> should be quite easy to fix (I am happy to help with it). Would that
> address your concerns?

I saw this patch was applied in your repository..So i will test with your tree.
In normal case, i think it's not problem...but i remembered there is a rare case about removable case.
I will try to test with all cases..:)

Best Regards,
Jaehoon Chung

> 
>>
>> I think it's not good that make another problem for solving something.
>> It needs more discussion for this..
> 
> Thanks for testing and your comments!
> 
> Kind regards
> Uffe
> 
> [1]
> http://www.spinics.net/lists/linux-mmc/msg35980.html
> 
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] mmc: block: Use the mmc host device index as the mmcblk device index
  2016-04-14  1:25     ` Jaehoon Chung
@ 2016-04-14  7:26       ` Ulf Hansson
  0 siblings, 0 replies; 6+ messages in thread
From: Ulf Hansson @ 2016-04-14  7:26 UTC (permalink / raw)
  To: Jaehoon Chung
  Cc: linux-mmc, Adrian Hunter, Jisheng Zhang, Peter Hurley,
	Laszlo Fiat, linux-kernel, Linus Torvalds, # 4.0+

On 14 April 2016 at 03:25, Jaehoon Chung <jh80.chung@samsung.com> wrote:
> Hi Ulf,
>
> Sorry for replying late.
>
> On 04/07/2016 10:07 PM, Ulf Hansson wrote:
>> On 7 April 2016 at 14:07, Jaehoon Chung <jh80.chung@samsung.com> wrote:
>>> On 04/07/2016 04:57 PM, Ulf Hansson wrote:
>>>> Commit 520bd7a8b415 ("mmc: core: Optimize boot time by detecting cards
>>>> simultaneously") causes regressions for some platforms.
>>>>
>>>> These platforms relies on fixed mmcblk device indexes, instead of
>>>> deploying the defacto standard with UUID/PARTUUID. In other words their
>>>> rootfs needs to be available at hardcoded paths, like /dev/mmcblk0p2.
>>>>
>>>> Such guarantees have never been made by the kernel, but clearly the above
>>>> commit changes the behaviour. More precisely, because of that the order
>>>> changes of how cards becomes detected, so do their corresponding mmcblk
>>>> device indexes.
>>>>
>>>> As the above commit significantly improves boot time for some platforms
>>>> (magnitude of seconds), let's avoid reverting this change but instead
>>>> restore the behaviour of how mmcblk device indexes becomes picked.
>>>>
>>>> By using the same index for the mmcblk device as for the corresponding mmc
>>>> host device, the probe order of mmc host devices decides the index we get
>>>> for the mmcblk device.
>>>>
>>>> For those platforms that suffers from a regression, one could expect that
>>>> this updated behaviour should be sufficient to meet their expectations of
>>>> "fixed" mmcblk device indexes.
>>>>
>>>> Another side effect from this change, is that the same index is used for
>>>> the mmc host device, the mmcblk device and the mmc block queue. That
>>>> should clarify their relationship.
>>>
>>> I have tested with this patch..but there also are side-effects.
>>> Exynos4 series has the two host controller..one is sdhci, one is dwmmc for eMMC.
>>> In this case, dwmmc controller is probed after sdhci controller.
>>>
>>> Then eMMC is always assigned to mmcblk1.
>>
>> Okay, let me follow up with some questions.
>>
>> 1)
>> What is the sdhci controller used for?
>
> Some of Exynos4 series have two MMC host controller.
> As i mentioned, one is sdhci, other is dwmmc.
>
> sdhci controller can be used for eMMC/SD/SDIO. (emmc, T-flash, WiFi)

I see. So it seems the SDHCI controller can have SD cards (then
assuming those can be removable).

Prior commit 520bd7a8b415 ("mmc: core: Optimize boot time by detecting
cards simultaneously"), the picked mmcblk device index that
corresponded to the dwmmc controller, depended on whether the SD card
was inserted at boot or not.

My point is then, that fixed paths to the rootfs would work only for
one of the two scenarios; 1) The SD card is inserted at boot. 2) The
SD card isn't inserted at boot.

> And dwmmc controller can be only used for eMMC.
>
> It can choose which controller user uses.
> In normal, i recommend the dwmmc controller is used for eMMC.
> (There are some reason..I/O performance, and functionality.)
>
>>
>> 2)
>> Are you seeing regressions for Exynos for this? I was under the
>> assumption that your vendor trees contained patches to deal with fixed
>> mmcblk ids?
>
> Actually not...but i need to check more..in vendor tress.

Okay, thanks!

>
>>
>> 3)
>> You proposed [1] recently to use aliases in DT to support fixed mmcblk
>> ids. I do realize that as UUID/PARTUUID sometimes can be a bit
>> cumbersome to use for an embedded system. Using aliases via DT seems
>> like a very good option. To implement that on top of $subject patch
>> should be quite easy to fix (I am happy to help with it). Would that
>> address your concerns?
>
> I saw this patch was applied in your repository..So i will test with your tree.
> In normal case, i think it's not problem...but i remembered there is a rare case about removable case.
> I will try to test with all cases..:)

Okay, thanks for all you help!

[...]

Kind regards
Uffe

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-04-14  7:26 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-07  7:57 [PATCH] mmc: block: Use the mmc host device index as the mmcblk device index Ulf Hansson
2016-04-07 12:07 ` Jaehoon Chung
2016-04-07 13:07   ` Ulf Hansson
2016-04-14  1:25     ` Jaehoon Chung
2016-04-14  7:26       ` Ulf Hansson
2016-04-12  6:59 ` Ulf Hansson

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).