Re: mmc0: Invalid maximum block size, assuming 512 bytes

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

 



On 02/02/16 12:12, Mason wrote:
> On 02/02/2016 09:58, Adrian Hunter wrote:
>> On 01/02/16 23:32, Mason wrote:
>>> On 22/01/2016 08:17, Mason wrote:
>>>
>>>> On 22/01/2016 03:07, Shawn Lin wrote:
>>>>
>>>>> On 2016/1/21 23:00, Mason wrote:
>>>>>
>>>>>> So that means I have to write code in
>>>>>> drivers/mmc/host/sdhci-of-arasan.c correct?
>>>>>
>>>>> It depends. If you think 512 block size if okay for you, leave it alone.
>>>>> Otherwise, add it in drivers/mmc/host/sdhci-of-arasan.c :)
>>>>
>>>> When I measured the read/write throughput to an attached
>>>> SD card, I got around 16 MB/s, and I thought raising the
>>>> block size might help with throughput?
>>>>
>>>> I'll test and report back.
>>>
>>> Haven't had time to test yet, but I wanted to ask experienced
>>> folks what to expect when raising the block size from 512 to
>>> 2048 bytes?
>>
>> mmc block driver sets block size to 512.
>>
>> What you are looking at is maximum block size.  SDIO uses bigger block
>> sizes, so it is useful for that.
> 
> You're right. I was looking at this block of code:
> 
> 	/*
> 	 * Maximum block size. This varies from controller to controller and
> 	 * is specified in the capabilities register.
> 	 */
> 	if (host->quirks & SDHCI_QUIRK_FORCE_BLK_SZ_2048) {
> 		mmc->max_blk_size = 2;
> 	} else {
> 		mmc->max_blk_size = (caps[0] & SDHCI_MAX_BLOCK_MASK) >>
> 				SDHCI_MAX_BLOCK_SHIFT;
> 		if (mmc->max_blk_size >= 3) {
> 			pr_warn("%s: Invalid maximum block size, assuming 512 bytes\n",
> 				mmc_hostname(mmc));
> 			mmc->max_blk_size = 0;
> 		}
> 	}
> 
> 	mmc->max_blk_size = 512 << mmc->max_blk_size;
> 
> 
> As Shawn pointed out, this was updated by commit 0633f654241
> 
> Author: Anton Vorontsov
> Date:   Tue Mar 17 00:14:03 2009 +0300
> 
>     sdhci: Add quirk for forcing maximum block size to 2048 bytes
>     
>     FSL eSDHC controllers can support maximum block size up to 4096 bytes,
>     the MBL (Maximum Block Length) field in the capabilities register
>     extended by one bit, and is set to 0x3.
>     
>     But the SDHCI core doesn't support blocks of 4096 bytes, and thus
>     forces blksz to the lowest value -- 512 bytes. With this patch we can
>     pin up the blksz to the maximum supported block size, i.e. 2048 bytes.
> 
> 
> But I'm wondering if the 2048-byte limitation in SDHCI core is
> still present?

The block size field of the Block Size register is only 12 bits, so yes.

> 
> I see some drivers apparently setting it to a higher value:
> 
> host/atmel-mci.c:	mmc->max_blk_size = 32768;
> host/dw_mmc.c:		mmc->max_blk_size = 65536;
> host/wbsd.c:		mmc->max_blk_size = 4087;

Sure, but not SDHCI.

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