All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: SD card reads corrupted (JMicron card reader)
@ 2011-01-25 19:12 Mikko Vinni
  0 siblings, 0 replies; 2+ messages in thread
From: Mikko Vinni @ 2011-01-25 19:12 UTC (permalink / raw)
  To: linux-mmc, Chris Ball; +Cc: linux-kernel

Hi,

Follow up to the original message: I have been trying to bisect the problem,
but haven't determined a definitely "good" kernel yet. The problem certainly
manifests itself on 2.6.36.3 when the config is straight from Arch Linux's
kernel26-headers 2.6.36.3-1 package. If I disable staging drivers (via
CONFIG_STAGING_EXCLUDE_BUILD=y), the problem goes away. Very
annoying to notice that after half a dozen kernel compiles.

Anyway, I have two versions of the 2.6.36.3 kernel+modules, one with
staging drivers (bad) and one without (good). If I take the vmlinuz and
System.map files from the good version and put them together with
the bad modules, it works. So, something in the main kernel instead of
the modules, I assume, but what could be changing there with the staging
switch to cause such a specific problem? In the config all the staging
drivers are set to be modules.

Mikko



----- Original Message ----
> From: Mikko Vinni
> To: linux-mmc; Chris Ball
> Sent: Thu, January 20, 2011 11:04:23 PM
> Subject: SD card reads corrupted (JMicron card reader)
> 
> Hi,
> 
> I have an HP Pavilion dv5 laptop, which has an integrated memory card  reader
> (labeled with "SD*MS/Pro*MMC*XD) and appearing with lspci  as:
> 
> 0a:00.1 System peripheral: JMicron Technology Corp. SD/MMC Host  Controller
> 0a:00.2 SD Host controller: JMicron Technology Corp. Standard SD  Host 
>Controller
> 0a:00.3 System peripheral: JMicron Technology Corp. MS Host  Controller
> 0a:00.4 System peripheral: JMicron Technology Corp. xD Host  Controller
> 
> I have mainly used a 1 GB SD card from puremedia, but I have  seen the problem
> with another card as well. Basically, if I try to read image  files from the 
>card 
>
> using the
> card reader, the images come out corrupted  (having the card inside a Canon 
>Ixus 
>
> camera and reading the images via a USB  cable works).
> 
> The logs don't seem to contain anything  suspicious:
> 
> [ 1262.957504] sdhci: Secure Digital Host Controller  Interface driver
> [ 1262.957511] sdhci: Copyright(c) Pierre Ossman
> [  1262.962070] sdhci-pci 0000:0a:00.1: SDHCI controller found [197b:2382] (rev 
>
> 0)
> [ 1262.962105] sdhci-pci 0000:0a:00.1: PCI INT A -> GSI 18 (level,  low) -> IRQ 
>
> 18
> [ 1262.962275] sdhci-pci 0000:0a:00.1: setting latency  timer to 64
> [ 1262.963721] Registered led device: mmc0::
> [ 1262.964075]  mmc0: SDHCI controller on PCI [0000:0a:00.1] using DMA
> [ 1262.964110]  sdhci-pci 0000:0a:00.2: SDHCI controller found [197b:2381] (rev 
>
> 0)
> [  1262.964137] sdhci-pci 0000:0a:00.2: PCI INT A -> GSI 18 (level, low) ->  
>IRQ 
>
> 18
> [ 1262.964158] sdhci-pci 0000:0a:00.2: Refusing to bind to  secondary 
>interface.
> [ 1262.964170] sdhci-pci 0000:0a:00.2: PCI INT A  disabled
> [ 1266.834763] mmc0: new SD card at address 1234
> [ 1266.924222]  mmcblk0: mmc0:1234 SD01G 972 MiB 
> [ 1266.925586]  mmcblk0: p1
> [  2575.746579] mmc0: card 1234 removed
> [ 3544.629621] loop: module loaded
> [  4747.394461] mmc0: new SD card at address 1234
> [ 4747.394793] mmcblk0:  mmc0:1234 SD01G 972 MiB 
> [ 4747.396090]  mmcblk0: p1
> [ 5075.523021]  mmc0: card 1234 removed
> 
> I transferred some text files to the card and  back to see if there's some 
> regularity
> in the corruption, but it varies.  For example, of 100 files of varying sizes 
> (largest 98KB),
> at one point  11 files might be corrupted, and after umount/mount maybe 6.
> 
> I copied the  memory card file system to a file; loop mounting that file 
system
> gives one  stable (but corrupted) view of the files, so I suppose it's not a 
>file
> system  (vfat) issue, but something with the hardware.
> 
> Currently I am using a  custom 2.6.37 kernel (on 64 bit Arch Linux up to date), 
>
> but
> I have seen  corrupted images coming from the card reader on several previous
> kernels as  well.
> 
> Is there something I could test or some specific information I  should 
provide?
> 
> Here is one example of the corruption I am talking  about:
> - the source file 49.txt consists of  lines
> 0049-0001
> 0049-0002
> 0049-0003
> ...
> 0049-2399
> 0049-2400
> 0049-2401
> 
> The  file is exactly 24010 bytes long.
> 
> After transferring that file to the SD  card and back (via the card reader) and 
>
> taking a diff, the differences  are:
> 
> @@ -407,1995 +407,1992 @@
>  0049-0407
>  0049-0408
>   0049-0409
> -0049-0410
> -0049-0411
> -0049-0412
> ... (all lines in between  removed; each line is 10  bytes)
> -0049-2399
> -0049-2400
> -0049-2401
> +0049-00049-0001
> +0049-0002
> +0049-0003
> ...  (all lines in between  added)
> +0049-0408
> +0049-0409
> +0049-00049-0001
> +0049-0002
> +0049-0003
> ...
> +0049-0408
> +0049-0409
> +0049-00049-0001
> +0049-0002
> +0049-0003
> ...
> +0049-0407
> +0049-0408
> +0049-0409
> +0049-00049-0001
> +0049-0002
> +0049-0003
> ...
> +0049-0407
> +0049-0408
> +0049-0409
> +0049-00049-0001
> +0049-0002
> +0049-0003
> ...
> +0049-0351
> +0049-0352
> +0049-0353
> 
> Also  the corrupted file is exactly 24010 bytes long. In this case there seems
> to  be a chunk of 4096 bytes repeating. I'm in no way expert, but if  somebody
> thinks it's good to see if the other test files also contain similar  chunks of 
>
> 4096
> bytes, I can go through them or post them  here.
> 
> 
> Any help would be  appreciated.
> 
> Mikko


      

^ permalink raw reply	[flat|nested] 2+ messages in thread

* SD card reads corrupted (JMicron card reader)
@ 2011-01-20 21:04 Mikko Vinni
  0 siblings, 0 replies; 2+ messages in thread
From: Mikko Vinni @ 2011-01-20 21:04 UTC (permalink / raw)
  To: linux-mmc, Chris Ball

Hi,

I have an HP Pavilion dv5 laptop, which has an integrated memory card reader
(labeled with "SD*MS/Pro*MMC*XD) and appearing with lspci as:

0a:00.1 System peripheral: JMicron Technology Corp. SD/MMC Host Controller
0a:00.2 SD Host controller: JMicron Technology Corp. Standard SD Host Controller
0a:00.3 System peripheral: JMicron Technology Corp. MS Host Controller
0a:00.4 System peripheral: JMicron Technology Corp. xD Host Controller

I have mainly used a 1 GB SD card from puremedia, but I have seen the problem
with another card as well. Basically, if I try to read image files from the card 
using the
card reader, the images come out corrupted (having the card inside a Canon Ixus 
camera and reading the images via a USB cable works).

The logs don't seem to contain anything suspicious:

[ 1262.957504] sdhci: Secure Digital Host Controller Interface driver
[ 1262.957511] sdhci: Copyright(c) Pierre Ossman
[ 1262.962070] sdhci-pci 0000:0a:00.1: SDHCI controller found [197b:2382] (rev 
0)
[ 1262.962105] sdhci-pci 0000:0a:00.1: PCI INT A -> GSI 18 (level, low) -> IRQ 
18
[ 1262.962275] sdhci-pci 0000:0a:00.1: setting latency timer to 64
[ 1262.963721] Registered led device: mmc0::
[ 1262.964075] mmc0: SDHCI controller on PCI [0000:0a:00.1] using DMA
[ 1262.964110] sdhci-pci 0000:0a:00.2: SDHCI controller found [197b:2381] (rev 
0)
[ 1262.964137] sdhci-pci 0000:0a:00.2: PCI INT A -> GSI 18 (level, low) -> IRQ 
18
[ 1262.964158] sdhci-pci 0000:0a:00.2: Refusing to bind to secondary interface.
[ 1262.964170] sdhci-pci 0000:0a:00.2: PCI INT A disabled
[ 1266.834763] mmc0: new SD card at address 1234
[ 1266.924222] mmcblk0: mmc0:1234 SD01G 972 MiB 
[ 1266.925586]  mmcblk0: p1
[ 2575.746579] mmc0: card 1234 removed
[ 3544.629621] loop: module loaded
[ 4747.394461] mmc0: new SD card at address 1234
[ 4747.394793] mmcblk0: mmc0:1234 SD01G 972 MiB 
[ 4747.396090]  mmcblk0: p1
[ 5075.523021] mmc0: card 1234 removed

I transferred some text files to the card and back to see if there's some 
regularity
in the corruption, but it varies. For example, of 100 files of varying sizes 
(largest 98KB),
at one point 11 files might be corrupted, and after umount/mount maybe 6.

I copied the memory card file system to a file; loop mounting that file system
gives one stable (but corrupted) view of the files, so I suppose it's not a file
system (vfat) issue, but something with the hardware.

Currently I am using a custom 2.6.37 kernel (on 64 bit Arch Linux up to date), 
but
I have seen corrupted images coming from the card reader on several previous
kernels as well.

Is there something I could test or some specific information I should provide?

Here is one example of the corruption I am talking about:
- the source file 49.txt consists of lines
0049-0001
0049-0002
0049-0003
...
0049-2399
0049-2400
0049-2401

The file is exactly 24010 bytes long.

After transferring that file to the SD card and back (via the card reader) and 
taking a diff, the differences are:

@@ -407,1995 +407,1992 @@
 0049-0407
 0049-0408
 0049-0409
-0049-0410
-0049-0411
-0049-0412
... (all lines in between removed; each line is 10 bytes)
-0049-2399
-0049-2400
-0049-2401
+0049-00049-0001
+0049-0002
+0049-0003
... (all lines in between added)
+0049-0408
+0049-0409
+0049-00049-0001
+0049-0002
+0049-0003
...
+0049-0408
+0049-0409
+0049-00049-0001
+0049-0002
+0049-0003
...
+0049-0407
+0049-0408
+0049-0409
+0049-00049-0001
+0049-0002
+0049-0003
...
+0049-0407
+0049-0408
+0049-0409
+0049-00049-0001
+0049-0002
+0049-0003
...
+0049-0351
+0049-0352
+0049-0353

Also the corrupted file is exactly 24010 bytes long. In this case there seems
to be a chunk of 4096 bytes repeating. I'm in no way expert, but if somebody
thinks it's good to see if the other test files also contain similar chunks of 
4096
bytes, I can go through them or post them here.


Any help would be appreciated.

Mikko



      

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-01-25 19:12 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-25 19:12 SD card reads corrupted (JMicron card reader) Mikko Vinni
  -- strict thread matches above, loose matches on Subject: below --
2011-01-20 21:04 Mikko Vinni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.