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

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

 



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?

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;

Regards.

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