Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 7 Nov 2021 10:29:33 +0200
From:      Andriy Gapon <avg@FreeBSD.org>
To:        arm@FreeBSD.org
Subject:   Re: huge emmc speed regression
Message-ID:  <cfa6c548-ac7d-75a4-6d19-ef2b457f429e@FreeBSD.org>
In-Reply-To: <67e6166d-a870-da60-efd4-9bd59fefca71@FreeBSD.org>
References:  <812ab31a-ce6e-d8ac-3539-39e6b20a01df@FreeBSD.org> <67e6166d-a870-da60-efd4-9bd59fefca71@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 06/11/2021 13:05, Andriy Gapon wrote:
> On 06/11/2021 12:58, Andriy Gapon wrote:
>>
>> Upfront, I haven't tested the latest main / current yet.
>> I should really test it but that's porbably for the next weekend.

And yeah, this was already fixed in commit 4a331971d2f10 (Sep 29) by Jessica Clarke.

>> I see a huge emmc speed difference between the current from April 2021 and 
>> September 2021 (commit 5e79bba562bc303eed669dbd0d391b6c6a9c289b) on Orange Pi 
>> PC Plus using on-board eMMC card.  I use MMCCAM in both cases.
>>
>> In the old environment I see expected read speeds (with sequential dd) of 
>> around 40 MB/s.
>> In the new environment the speeds are around 300 KB/s (like a very good floppy 
>> disk of old).
>>
>> Some info from the old environment:
>> # camcontrol mmcsdcmd 2:0:0 -I
>> Host controller information
>> Host OCR: 0x300000
>> Min frequency: 400 KHz
>> Max frequency: 52 MHz
> [snip]
> 
>> Same command in the new environment looks a bit strange:
>> # camcontrol mmcsdcmd 2:0:0 -I
>> Host controller information
>> Host OCR: 0x300000
>> Min frequency: 400 KHz
>> Max frequency: 0 MHz
> [snip]
> 
> It seems that this is because the FDT does not have max-frequency property.
> The old mmc_fdt_parse() code would leave f_max alone in that case and it was set 
> to 52 MHz by the driver.
> However, the new code in mmc_fdt_parse(), or rather mmc_parse(), would reset 
> f_max to zero (despite the comment that was carried over):
> 
>          /*
>           * max-frequency is optional, drivers should tweak this value
>           * if it's not present based on the clock that the mmc controller
>           * operates on
>           */
>          max_freq = 0;
>          device_get_property(dev, "max-frequency", &max_freq, sizeof(uint64_t));
>          host->f_max = max_freq;
> 
> 


-- 
Andriy Gapon



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?cfa6c548-ac7d-75a4-6d19-ef2b457f429e>