Re: SD card reads corrupted (JMicron card reader)

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

 



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


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