Re: [PATCH] mmc: subtract boot sectors from disk size for eMMC 4.3+ devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Apr 28, 2011 at 1:00 PM, Colin Cross <ccross@xxxxxxxxxx> wrote:
> On Thu, Apr 28, 2011 at 3:33 AM, Linus Walleij <linus.walleij@xxxxxxxxxx> wrote:
>> 2011/3/5 Linus Walleij <linus.walleij@xxxxxxxxxxxxxx>:
>>
>>> This patch is a squash of patches from Gary King and Ulf
>>> Hansson done in Android trees, hopefully fixing the issue properly.
>>>
>>> The csd sector count reported by eMMC 4.3+ cards includes the boot
>>> partition size; subtract this from the size reported to the disk
>>> since the boot partition is inaccessible.
>>
>> I'm trying to get somewhere with this.
>>
>> AFAICT reading the spec it does not say anything about the
>> boot sectors being subtracted from the pool of available sectors,
>> i.e. either you set these sectors aside permanently or you do not
>> support the feature.
>>
>> So the behaviour fixed in this patch should be a per-card quirk,
>> not generic.
>>
>> Then this:
>>
>>> +                       /* size is in 256K chunks, i.e. 512 sectors each */
>>> +                       boot_sectors = ext_csd[EXT_CSD_BOOT_SIZE_MULTI] * 512;
>>
>> This is not what the spec says. It states that the size is
>> in 128KB chunks, so the correct code shoul be:
>>
>> boot_sectors = ext_csd[EXT_CSD_BOOT_SIZE_MULTI] * 256;
>>
>> Any comments on this? I guess it's been working, the
>> patch prent in the Android kernels simply remove twice as
>> many sectors as required from the card sector pool :-/
>
> This patch was dropped from the Android tree, it is clearly not
> correct for all eMMC devices.  We have worked around the problem on
> the affected by letting the bootloader tell us where it put the GPT
> near the end of the device, in which case the actual size of the
> device becomes irrelevant.
>
> I'm not convinced that any eMMC chip has this problem, it may have
> just been confusion on the part of nVidia caused by their bootloader's
> "logical block" addressing system, where the boot sectors are
> addressed as 0, and the regular area starts at sizeof(boot sector).
> The off-by-two error may have been caused by the affected eMMC having
> two boot sectors.
>
> I would suggest forgetting about this patch unless someone can prove
> that there is a device that fails to write at the end.

Plus as far as linux-mmc tree, the boot size calculation is now
correct for enabling the boot hardware partitions as separate logical
devices...
All the cards I've tested (granted, wasn't too many) handled boot
partitions correctly, and the user partition area size never included
the boot partitions.

So I think we can forget about Gary's patch. For broken hardware we
now have the quirk hooks in block.c to work around this if said broken
hardware actually exists...

A
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux