开发者

ALIX 2D13, linux kernel error "serial number revalidation" using Compact Flash and Harddisk

i'm building a linux based firmare for an alix 2d13 using crosstools-ng, for the toolchain, buildroot, for the root filesystem, and vanilla kernel ... for the kernel.

I need to use compact flash and harddisk but, when i connect them to the alix, i get a really weird error:

[    1.072380] ata1.00: CFA: CF Card, Ver2.34, max UDMA/100
[    1.077738] ata1.00: 7880544 sectors, multi 0: LBA
[    1.082670] ata1.00: limited to UDMA/33 due to 40-wire cable
[    1.096260] ata1.00: serial number mismatch '6EB10703040700582043' != '6EB1p703040700582043'
[    1.104738] ata1.00: revalidation failed (errno=-19)
[    1.109740] ata1.00: limiting speed to UDMA/33:PIO3
.
.
.
[    6.209775] ata1.00: serial number开发者_StackOverflow mismatch '6EB10703040700582043' != '6EB1p703040700582043'
[    6.218324] ata1.00: revalidation failed (errno=-19)
[    6.222235] ata1.00: disabled

All works fine if i detach the harddisk from alix. hdparm output is:

Model=CF Card                                 , FwRev=Ver2.34 , SerialNo=6EB10703040700582043
Config={ HardSect NotMFM Fixed DTR>10Mbs }
RawCHS=7818/16/63, TrkSize=32256, SectSize=512, ECCbytes=4
BuffType=(2) DualPort, BuffSize=1kB, MaxMultSect=1, MultSect=?1?
CurCHS=7818/16/63, CurSects=7880544, LBA=yes, LBAsects=7880544
IORDY=yes, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes:  pio0 pio1 pio2 pio3 pio4
DMA modes:  mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 *udma2
AdvancedPM=no

And alix configuration is (C) CHS mode L LBA mode W HDD wait V HDD slave U UDMA enable

I tried using pata_amd and pata_cs5536 but the result is the same.

Full kernel output is here http://pastebin.com/7wcvEdRG


You have a hardware problem or serious misconfiguration, where bits are getting scrambled between the device and host.

When the kernel tries to read the serial number from the drive (using an ATA identify device command), one of the bytes gets a bit flipped. Note that the bad character 'p' (0x70) is only one bit different from '0' (0x30).

It's likely that scrambling identify data is the least of your problems-- read/write data is probably unreliable as well.

If this only happens when you have two devices attached to the same ribbon cable, either one of two things is true:

  1. The two devices are causing signal integrity problems when sharing the bus. Check all of your jumper settings. If everything else is correct, either find another device, a better cable, or give up and don't put them on the same cable.
  2. Your kernel is misconfiguring the ATA controller when both devices are present.
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜