IDE quirk
Jamie Guinan
guinan at bluebutton.com
Thu Jul 6 13:47:32 EST 2000
I've been tinkering with the IDE drive on my MBX board.
The path to the drive goes,
MPC821 <----> QSpan PCI Bridge <----> WinBond W83C553F <===> Drive
I have things semi-working, but there is a problem with writing
to the drive. If I do a raw dump into /dev/hda, say using the
2.2.13 kernel "README" file,
# dd if=README of=/dev/hda
(that file is about 26 blocks long (13k)) it *appears* to write fine,
but there is a problem. If I read back 2MB of data, I will see what
I wrote,
# dd if=/dev/hda of=RES01 bs=1k count=2000
(examine on host NFS system)
00000000: 094c 696e 7578 206b 6572 6e65 6c20 7265 .Linux kernel re
00000010: 6c65 6173 6520 322e 322e 7878 0a0a 5468 lease 2.2.xx..Th
00000020: 6573 6520 6172 6520 7468 6520 7265 6c65 ese are the rele
...
but if I repeat the read, I see the following,
# dd if=/dev/hda of=RES02 bs=1k count=2000
00000000: 094c 0000 7578 0000 6572 0000 6c20 0000 .L..ux..er..l ..
00000010: 6c65 0000 6520 0000 322e 0000 0a0a 0000 le..e ..2.......
00000020: 6573 0000 6172 0000 7468 0000 7265 0000 es..ar..th..re..
Every other halfword does not "stick" on the drive. I confirmed this
by reading the data back with EPPCBug's "iop" command. I believe that in
the first case above, the data was being read out of the drive cache
and/or Linux buffer cache so it looked fine, but after reading back 2MB
the drive cache (/Linux buffer cache) gets flushed so the real data is
being pulled in. The drive cache is only 58KB.
Reading/writing sectors with "iop" works fine on this system under
EPPCBug (data sticks between cold boots), so I believe that the data
path is Ok.
So I'm trying to figure out what is preventing the data from "commiting"
to the hard drive under Linux. I went as far as printk'ing the
bytes and register contents in
arch/ppc/kernel/m8xx_setup.c:m8xx_ide_outsw()
and everything looks fine just before it hits the disk with ide_outsw().
I'll keep digging, but if anyone knows any magic to get this to behave
properly, please share. I'm going to look at PIO mode settings next...
Info:
MontaVista 2.2.13 kernel with hacks to bring IDE alive.
MontaVista CDK target image NFS root directory, /dev/hda* entries
created manually.
gcc version 2.95.2 19991024 (release), built from raw sources.
I can post test programs/debug output if that would help. There
is just so much I figured I'd wait for some intial feedback before
posting any of it.
Thanks,
-Jamie
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-embedded
mailing list