9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: Alex Ivanov <gnidorah@p0n4ik.tk>
To: Erik Quanstrom <quanstro@quanstro.net>
Cc: 9fans@9fans.net
Subject: [9fans] sdkw - SATA drive detection broken (was ARM and u-boot)
Date: Sun,  9 Mar 2014 12:34:38 +0400	[thread overview]
Message-ID: <009CEB4D-869E-49D3-AD6F-9D78772CB270@p0n4ik.tk> (raw)

> well, good luck.  there's a sata driver in 9atom. 

> - erik 

Hi, Eric et al.

Thanks for the driver! :) I however have problem using it.

My device is a HP t5325 which is almost the same as any other 88F6281 *plug:

"Plan 9 from Bell Labs

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 A1; arm926ej-s arch v5te rev 2.1 part 131
#S/sd0: sata ii 2 ports
#l0: 88e1116: 100Mbps port 0xf1072000 irq 11: f4ce4623eb6a
#l1: ether1116: init mii failure
#u/uspurious irqbridge interrupt: 00000010
sb/ep1.0: ehci: port 0XF1050100 irq 19
504M memory: 52M kernel data, 452M user, 1959M swap
root is from (tcp)[tcp]: filesystem IP address[no default]:"

There is an internal SATA flash drive connected to a 1st port of Marvell SATAHC and while NetBSD, for example, is able to recognize it:

"mvsata0 at mvsoc0 unit 0 offset 0x80000-0x87fff irq 21: Marvell Serial-ATA Host Controller (SATAHC)
mvsata0: GenIIe, 1hc, 2port/hc
atabus0 at mvsata0 channel 0
atabus1 at mvsata0 channel 1
mvsata0 port 0: device present, speed: 3.0Gb/s
wd0 at atabus0 drive 0
wd0: <SM224>
wd0: 463 MB, 942 cyl, 16 head, 63 sec, 512 bytes/sect x 949536 sectors»

Plan 9 isn’t (as you see from it's kmesg).

I’ve did an initial debug and found that SATA device detection never works. To compare this with NetBSD, i’ve added a code with identical meaning to an early stages (prior of doing of anything else; i’ve snarf pasted even register bits for sure) of both Plan 9 and NetBSD drivers (sdkw.c and mvsata_mv.c accordingly) and here are the results. I’m including info about port 1 only, as port 2 has no devices.

Busaddrs going the same on both systems:
Port_addr 0xf1082000
SStatus_addr 0xf1082300
SErr_addr 0xf1082304
Sctl_addr 0xf1082308

As well as initial state of registers:
1)
Sctl 0x00000004
SErr: 0x04000000

SStatus: 0x00000004
det: PHY offline
ipm: no device connected

Next doing hard reset:
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).

2)
Sctl: 0x00000301
SErr: 0x04000000

SStatus: 0x00000000
det: no device present
ipm: no device connected

Device detection should work after this:
d->reg[Sctl] = 3*Aipm | 0*Aspd | 0*Adet;

And here is the wreck:

3)
Sctl: 0x00000300

NetBSD:
SErr: 0x14010000

SStatus: 0x00000123
det: device present, speed: 3.0Gb/s
ipm: ACTIVE state

Plan 9:
SErr: 0x04000000

SStatus: 0x00000000
det: no device present
ipm: no device connected

Not changed at all… WTF?

Another case where IPM is active (occurs from time to time) is even stranger:
1)
Sctl 0x00000004
SErr: 0x04000000

SStatus: 0x00000104
det: PHY offline
ipm: ACTIVE state

2)
Sctl: 0x00000301

NetBSD:
Err: 0x14000000

SStatus: 0x00000100
det: no device present
ipm: ACTIVE state

Plan 9:
SErr: 0x04000000

SStatus: 0x00000101
det: device connected, but communication not established
ipm: ACTIVE state

3)
Sctl: 0x00000300

NetBSD:
SErr: 0x14010000

SStatus: 0x00000123
det: device present, speed: 3.0Gb/s
ipm: ACTIVE state

Plan 9:
SErr: 0x04000000

SStatus: 0x00000101
det: device connected, but communication not established
ipm: ACTIVE state

So, any ideas?
What i’ve already tried:
1) Put the code in another place of Plan 9, like USB driver. Results are the same;
2) Put delays and coherence() here and there. Doesn’t help, though i doubt it’s a sync issue;
3) If i fool sdkw to make it think it found the device, i’m getting an error from upper the stack, like it can’t speak with device or so… So i twice doubt it’s a sync issue, and it’s more likely SATA controller doesn’t work by some reason.

Sigh :(
Maybe NetBSD SoC driver code does some init, which Plan 9 doesn’t?

Thanks for any help!


             reply	other threads:[~2014-03-09  8:34 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-09  8:34 Alex Ivanov [this message]
2014-03-12  0:22 ` Steve Simon
2014-03-12 15:31   ` Alex Ivanov
2014-03-12 16:53     ` Steve Simon
2014-03-13  5:36       ` Alex Ivanov
2014-03-13  8:20         ` Steve Simon
2014-03-13 11:16         ` erik quanstrom
2014-03-13 11:59           ` Alex Ivanov
2014-03-13 12:11             ` erik quanstrom
2014-03-15 10:37               ` Alex Ivanov
2014-03-15 15:21                 ` erik quanstrom
2014-03-09 14:11 erik quanstrom
2014-03-11  8:08 ` Alex Ivanov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=009CEB4D-869E-49D3-AD6F-9D78772CB270@p0n4ik.tk \
    --to=gnidorah@p0n4ik.tk \
    --cc=9fans@9fans.net \
    --cc=quanstro@quanstro.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).