09 марта 2014 г., в 18:11, erik quanstrom <quans...@quanstro.net> написал(а):
Erik, thanks for the quick answer! > this is fun. i wrote this driver a long time ago. but all the little > quirks (even of the documentation) come back quickly. i put > the kernel i'm running up on 9atom you can download them > @ > http://ftp.9atom.org/other/9plug > http://ftp.9atom.org/other/s9plug > or > 9fs atom; fcp /n/atom/ftp/*9plug /some/where > > please try that kernel and let me know. since the driver > does hotplugging, it might be after you've connected to the file > server that you get a connection. Are these ones differ from those built from source after unrolling of 9atom.iso.bz2? Sry, but i’m a total Plan 9 noob and can’t set a working file+auth server. Any guides i was followed were either misleading or wrong at some step. Anyway, since i’m never getting Spresent bit in Sstatus (no matter how much time passed after the boot), status change will not ever come. > > also try unplugging the usb devices. Have them unplugged all the time. BTW, anyone plans to work on USB flash storage support, so we can just use some USB drives to boot from? > the host bridge error is > omnious. often a host bridge error will screw up multiple devices. So it may be a culprit? > > here's the results i get > > kw# cat /dev/kmesg > 127 holes free > 009a9000 03be5000 52674560 > 52674560 bytes free > l1 D: 16384 bytes, 4 ways 128 sets 32 bytes/line; write-through only > l1 I: 16384 bytes, 4 ways 128 sets 32 bytes/line; write-back type `reg > 7 ops, format C' (016) possible > l2 cache: 256K or 512K: 4 ways, 32-byte lines, write-back, sdram only > cpu0: 1200MHz ARM Marvell 88F6281 A0; arm926ej-s arch v5te rev 2.1 part > 131 > #S/sd0: sata ii 2 ports > #F0: kwnand: Hy27UF084G2M 536,870,912 bytes pagesize 2048 erasesize > 131,072 spares per page 64 > #l0: 88e1116: 1000Mbps port 0xf1072000 irq 11 tu 1514: 00504301db37 > #l1: 88e1116: 1000Mbps port 0xf1076000 irq 15 tu 1514: 00504301db38 > #u/usb/ep1.0: ehci: port 0xf1050100 irq 19 > preallocate 16384 x 4096 KB 0x03be5000-0x07be5000 > 504M memory: 52M kernel data, 452M user, 0M swap > usb/hub... version...time... > > init: starting /bin/rc > kw# sd01: status: 000 -> 123: new > sd01: llba 78,165,360 sectors > INTEL SSDSA2M040G2GC 2CV102HD CVGB03800093040NGN [newdrive] > > > kw# cat /dev/sd00/ctl > inquiry > state null > sig 00000000 > link down > sstatus 00000000 > serror 00000000 > sctl 00000300 > isr 00804000 > icfg 009b7095 > ifccr 00000000 > geometry 0 0 > > > kw# cat /dev/sd01/ctl > inquiry INTEL SSDSA2M040G2GC > state ready > sig 01010101 > model INTEL SSDSA2M040G2GC > serial CVGB03800093040NGN > firm 2CV102HD > wwn 50015179593f82f0 > tler 5000 > link up > sstatus 00000123 > serror 14010000 > sctl 00000300 > isr 00404034 > icfg 009b7095 > ifccr 00000000 > geometry 78165360 512 > part data 0 78165360 > > you mention that the first thing you do is this > > d->reg[Sctl] = 3*Aipm | 0*Aspd | Adet; (I’m omitting | 3*Aspm as it > done in NetBSD, though the results are bad even with it). > > this doesn't jive with the sata spec (the ahci spec, which for the S registers > mirrors it, is more accessible). it may be beneficial to read the spec. > the actions that need to be done are > 1. clear the Serror register (sdkw:1228) > 2. set the Icfg register (sdkw:1229) > (the setting of emphasis was a guess and could be wrong for > your device. it may also vary by device.) > 3. reset the phy. this is a 3 step process in linkrst() > a) turn on device detection > b) wait 1ms (unsure of this timing, it could be longer) > c) turn off device detection > > 3*Aspm requests transition to active state. if you get bad results > by turning the device on, then something else is wrong. :-) > > in fact you mention that Sctl = 300, which means that the device > is asleep. (Iactive|Isleepy if you follow pc/ahci.h) > >> Not changed at all… WTF? > > you must clear the error register first. You’re absolutely right, but i’m in the same situation (status = 0) even with the whole init routine, which your driver does. > (the setting of emphasis was a guess and could be wrong for > your device. it may also vary by device.) I will check it. > b) wait 1ms (unsure of this timing, it could be longer) Not my case. Already tried to bump this delay. Ok… I will trace everything when using proper initialization, but i doubt it will clear anything, since i was not followed SATA spec, and did just a device probe, and while this didn’t work on Plan 9, it worked on NetBSD. Maybe it that host bridge issue? > >> Maybe NetBSD SoC driver code does some init, which Plan 9 doesn’t? > > i don't think that's it. > > - erik > Alex