lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 12 Jul 2011 11:01:15 -0500 (CDT)
From:	Manoj Iyer <manoj.iyer@...onical.com>
To:	Chris Ball <cjb@...top.org>
cc:	Manoj Iyer <manoj.iyer@...onical.com>,
	linux-kernel@...r.kernel.org, jbarnes@...tuousgeek.org,
	matsumur@....ricoh.co.jp, linux-pci@...r.kernel.org,
	linux-mmc@...r.kernel.org
Subject: Re: [PATCH] mmc: Added quirks for Ricoh 1180:e823 lower base clock
 frequency


Chris,

Test System: ThinkPad X220 Tablet, using Sandisk 2GB Class 2 SD, I did not 
see any considerable change in read/write times. Also, tested a Transcend 
MMCPlus 2GB card, before the patch was applied it would not mount the 
card, and would cause IO errors on read/write, but after the patch it 
mounts and works correctly.

Linux u 3.0.0-4-generic-pae #5 SMP Mon Jul 11 20:26:49 UTC 2011 i686 
GNU/Linux

Dmesg outputs:
=== SD ===
[   44.510107] mmc0: new SD card at address 0002
[   44.510292] mmcblk0: mmc0:0002 00000 1.86 GiB
[   44.512408]  mmcblk0: p1
u@u:~/Documents$

=== MMC ===

[  726.510850] mmc0: card 0001 removed
[  731.688463] mmc0: error -110 whilst initialising MMC card
[  731.776506] mmc0: error -110 whilst initialising MMC card
[  731.864157] mmc0: new MMC card at address 0001
[  731.864611] mmcblk0: mmc0:0001 MMC    1.87 GiB
[  731.866047]  mmcblk0: p1
u@u:~/Documents$


============ BEFORE THE PATCH ===============
Sandisk 2GB Class2 SD
=============================================
=== WRITE ===
u@u:~$ ls -lh test.file
-rw-r--r-- 1 u u 10M 2011-07-12 10:19 test.file
u@u:~$ time cp test.file /media/E0FD-1813/copyto

real    0m0.480s
user    0m0.000s
sys     0m0.024s
u@u:~$ time cp test.file /media/E0FD-1813/copyto1

real    0m0.476s
user    0m0.000s
sys     0m0.028s
u@u:~$ time cp test.file /media/E0FD-1813/copyto2

real    0m0.484s
user    0m0.000s
sys     0m0.024s
u@u:~$ time cp test.file /media/E0FD-1813/copyto3

real    0m0.480s
user    0m0.000s
sys     0m0.020s
u@u:~$
u@u:~$ ls -lh /media/E0FD-1813/copyto*
-rw-r--r-- 1 u u 10M 2011-07-12 10:20 /media/E0FD-1813/copyto
-rw-r--r-- 1 u u 10M 2011-07-12 10:20 /media/E0FD-1813/copyto1
-rw-r--r-- 1 u u 10M 2011-07-12 10:20 /media/E0FD-1813/copyto2
-rw-r--r-- 1 u u 10M 2011-07-12 10:20 /media/E0FD-1813/copyto3
u@u:~$

=== READ ===
u@u:~$ time cp /media/E0FD-1813/copyto1 /tmp/copyfrom1

real    0m0.017s
user    0m0.000s
sys     0m0.016s
u@u:~$ time cp /media/E0FD-1813/copyto1 /tmp/copyfrom2

real    0m0.021s
user    0m0.004s
sys     0m0.020s
u@u:~$ time cp /media/E0FD-1813/copyto1 /tmp/copyfrom3

real    0m0.020s
user    0m0.000s
sys     0m0.016s
u@u:~$ time cp /media/E0FD-1813/copyto1 /tmp/copyfrom4

real    0m0.022s
user    0m0.000s
sys     0m0.020s
u@u:~$
u@u:~$ ls -lh /tmp/copyfrom*
-rw-r--r-- 1 u u 10M 2011-07-12 10:22 /tmp/copyfrom1
-rw-r--r-- 1 u u 10M 2011-07-12 10:22 /tmp/copyfrom2
-rw-r--r-- 1 u u 10M 2011-07-12 10:22 /tmp/copyfrom3
-rw-r--r-- 1 u u 10M 2011-07-12 10:22 /tmp/copyfrom4
u@u:~$

============ AFTER THE PATCH =============
Sandisk 2GB Class2 SD
==========================================

=== WRITE ===
u@u:~$ time cp ./test.file /media/E0FD-1813/copyto1

real    0m0.757s
user    0m0.000s
sys     0m0.044s
u@u:~$ time cp ./test.file /media/E0FD-1813/copyto2

real    0m0.488s
user    0m0.004s
sys     0m0.020s
u@u:~$ time cp ./test.file /media/E0FD-1813/copyto3

real    0m0.484s
user    0m0.004s
sys     0m0.024s
u@u:~$ time cp ./test.file /media/E0FD-1813/copyto4

real    0m0.486s
user    0m0.000s
sys     0m0.024s
u@u:~$ ls -lh /media/E0FD-1813/
copyto1      copyto2      copyto3      copyto4      .Trash-1001/
u@u:~$ ls -lh /media/E0FD-1813/copyto*
-rw-r--r-- 1 u u 10M 2011-07-12 10:30 /media/E0FD-1813/copyto1
-rw-r--r-- 1 u u 10M 2011-07-12 10:30 /media/E0FD-1813/copyto2
-rw-r--r-- 1 u u 10M 2011-07-12 10:30 /media/E0FD-1813/copyto3
-rw-r--r-- 1 u u 10M 2011-07-12 10:30 /media/E0FD-1813/copyto4
u@u:~$

=== READ ===
u@u:~$ time cp /media/E0FD-1813/copyto1 /tmp/copyfrom1

real    0m0.020s
user    0m0.000s
sys     0m0.016s
u@u:~$ time cp /media/E0FD-1813/copyto1 /tmp/copyfrom2

real    0m0.020s
user    0m0.000s
sys     0m0.016s
u@u:~$ time cp /media/E0FD-1813/copyto1 /tmp/copyfrom3

real    0m0.020s
user    0m0.000s
sys     0m0.016s
u@u:~$ time cp /media/E0FD-1813/copyto1 /tmp/copyfrom4

real    0m0.015s
user    0m0.000s
sys     0m0.012s
u@u:~$ ls -lh /tmp/copyfrom*
-rw-r--r-- 1 u u 10M 2011-07-12 10:31 /tmp/copyfrom1
-rw-r--r-- 1 u u 10M 2011-07-12 10:31 /tmp/copyfrom2
-rw-r--r-- 1 u u 10M 2011-07-12 10:31 /tmp/copyfrom3
-rw-r--r-- 1 u u 10M 2011-07-12 10:31 /tmp/copyfrom4
u@u:~$


====== AFTER THE PATCH - MMC CARD ===========
Transcend MMC 2GB
=============================================

=== WRITE ===
u@u:~$ time cp test.file /media/New\ Volume/copyto1

real    0m0.557s
user    0m0.000s
sys     0m0.024s
u@u:~$ time cp test.file /media/New\ Volume/copyto2

real    0m0.581s
user    0m0.000s
sys     0m0.028s
u@u:~$ time cp test.file /media/New\ Volume/copyto3

real    0m0.581s
user    0m0.000s
sys     0m0.032s
u@u:~$ time cp test.file /media/New\ Volume/copyto4

real    0m0.585s
user    0m0.000s
sys     0m0.028s
u@u:~$ ls -lh /media/New\ Volume/copyto*
-rw-r--r-- 1 u u 10M 2011-07-12 10:42 /media/New Volume/copyto1
-rw-r--r-- 1 u u 10M 2011-07-12 10:42 /media/New Volume/copyto2
-rw-r--r-- 1 u u 10M 2011-07-12 10:42 /media/New Volume/copyto3
-rw-r--r-- 1 u u 10M 2011-07-12 10:42 /media/New Volume/copyto4
u@u:~$

=== READ ===
u@u:~$ time cp /media/New\ Volume/copyto1 /tmp/copyfrom1

real    0m0.154s
user    0m0.000s
sys     0m0.024s
u@u:~$ time cp /media/New\ Volume/copyto1 /tmp/copyfrom2

real    0m0.024s
user    0m0.000s
sys     0m0.020s
u@u:~$ time cp /media/New\ Volume/copyto1 /tmp/copyfrom3

real    0m0.024s
user    0m0.000s
sys     0m0.020s
u@u:~$ time cp /media/New\ Volume/copyto1 /tmp/copyfrom4

real    0m0.022s
user    0m0.000s
sys     0m0.020s
u@u:~$ time cp /media/New\ Volume/copyto2 /tmp/copyfrom5

real    0m0.020s
user    0m0.000s
sys     0m0.016s
u@u:~$ ls -lh /tmp/copyfrom*
-rw-r--r-- 1 u u 10M 2011-07-12 10:44 /tmp/copyfrom1
-rw-r--r-- 1 u u 10M 2011-07-12 10:44 /tmp/copyfrom2
-rw-r--r-- 1 u u 10M 2011-07-12 10:44 /tmp/copyfrom3
-rw-r--r-- 1 u u 10M 2011-07-12 10:44 /tmp/copyfrom4
-rw-r--r-- 1 u u 10M 2011-07-12 10:44 /tmp/copyfrom5
u@u:~$



On Mon, 11 Jul 2011, Chris Ball wrote:

> Hi Manoj, adding linux-mmc@,
>
> On Mon, Jul 11 2011, Manoj Iyer wrote:
>> Ricoh 1180:e823 does not recognize certain types of SD/MMC cards.
>> Lowering the SD base clock frequency from 200Mhz to 50Mhz fixes
>> this issue. This solution was suggest by Koji Matsumuro, Ricoh
>> Company,Ltd.
>>
>> BugLink: http://launchpad.net/bugs/773524
>> Signed-off-by: Manoj Iyer <manoj.iyer@...onical.com>
>> Tested-by: Daniel Manrique <daniel.manrique@...onical.com>
>> Cc: Koji Matsumuro <matsumur@....ricoh.co.jp>
>> ---
>>  drivers/pci/quirks.c |   24 ++++++++++++++++++++++++
>>  1 files changed, 24 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
>> index 02145e9..fe5bffa 100644
>> --- a/drivers/pci/quirks.c
>> +++ b/drivers/pci/quirks.c
>> @@ -2758,6 +2758,30 @@ static void ricoh_mmc_fixup_r5c832(struct pci_dev *dev)
>>
>>  	dev_notice(&dev->dev, "proprietary Ricoh MMC controller disabled (via firewire function)\n");
>>  	dev_notice(&dev->dev, "MMC cards are now supported by standard SDHCI controller\n");
>> +
>> +	/*
>> +	 * RICOH 0xe823 SD/MMC card reader fails to recognize
>> +	 * certain types of SD/MMC cards. Lowering the SD base
>> +	 * clock frequency from 200Mhz to 50Mhz fixes this issue.
>> +	 *
>> +	 * 0x150 - SD2.0 mode enable for changing base clock
>> +	 *	   frequency to 50Mhz
>> +	 * 0xe1  - Base clock frequency
>> +	 * 0x32  - 50Mhz new clock frequency
>> +	 * 0xf9  - Key register for 0x150
>> +	 * 0xfc  - key register for 0xe1
>> +	 */
>> +	if (dev->device == PCI_DEVICE_ID_RICOH_R5CE823) {
>> +		pci_write_config_byte(dev, 0xf9, 0xfc);
>> +		pci_write_config_byte(dev, 0x150, 0x10);
>> +		pci_write_config_byte(dev, 0xf9, 0x00);
>> +		pci_write_config_byte(dev, 0xfc, 0x01);
>> +		pci_write_config_byte(dev, 0xe1, 0x32);
>> +		pci_write_config_byte(dev, 0xfc, 0x00);
>> +
>> +		dev_notice(&dev->dev, "Controller base frequency changed to 50Mhz)\n");
>
> There's an erroneous ")" in this string; I'll replace it with a "." if
> this patch goes in via my tree.  Also, let's make it "MMC controller"
> instead of just "Controller".
>
>> +	}
>> +
>>  }
>>  DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5C832, ricoh_mmc_fixup_r5c832);
>>  DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5C832, ricoh_mmc_fixup_r5c832);
>
> Have you checked to see how SD I/O performance differs after this change?
>
> (If this is significant, perhaps we want to try lowering the frequency
> only after a card starts returning errors, since some cards work fine
> at the higher frequency.)
>
> Thanks,
>
> - Chris.
> -- 
> Chris Ball   <cjb@...top.org>   <http://printf.net/>
> One Laptop Per Child
>
>

--
====================
Manoj Iyer
Ubuntu/Canonical
Hardware Enablement
====================
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists