From: Jeff Garzik <jeff@garzik.org>
To: James Bottomley <James.Bottomley@SteelEye.com>
Cc: linux-scsi@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] Broadcom 8603 SAS/SATA driver, rough draft
Date: Sun, 23 Sep 2007 19:43:13 -0400 [thread overview]
Message-ID: <46F6FA11.2070501@garzik.org> (raw)
In-Reply-To: <1190588723.3378.25.camel@localhost.localdomain>
James Bottomley wrote:
> On Sun, 2007-09-23 at 00:04 -0400, Jeff Garzik wrote:
>> Rather than sitting on this for far too long, I wanted to go ahead and
>> get this out there. I heard some chips might be trickling out into
>> public hands.
>
> The first thing to note is about the specs and the pre-production
> hardware: the Linux Foundation has mechanism to get both into the hands
> of interested developers; if you can point me to contacts, I can at
> least get the NDA documentation programme ball rolling.
Well, are there interested, motivated, skilled developers with time? :)
Otherwise it's a moot point.
>> This is a bare bones Broadcom 8603 SAS+SATA driver, attempting to use
>> the vaunted libsas. Notes:
>
> I wouldn't call it "vaunted" but it's been a fun project.
That was sarcasm :)
libsas is a big 'ole pain, that I'm finding has many aic94xx-isms buried
in the lib.
>> * A quick glance at the FIXMEs will tell you obviously doesn't work.
>
> The first thing I really noted is that SMP and STP protocol support is
> stubbed out ... you really can't do anything other than direct device
> connection without them.
That's sorta the way I read the hardware docs, too.
I have some engineering questions pending with Broadcom, but from my
read, SMP and STP don't seem supported.
>> * The hardware is quite simple and straightforward and easy to program
>> in an efficient way: each SAS port has a command queue (DMA ring) and
>> a response queue (DMA ring). Or if in SATA mode, just a command
>> queue.
>
> That's not such a bad way of doing it ... it pretty much mimics the wire
> protocol, which is simply frame in/frame out for SAS.
Yep. The hardware (on my end of the spectrum) seems to be moving
towards forcing software to generate all "packets," except (a) data
frames [generated via DMA engine] or (b) special frames that need to
modify the software-generate frame.
>> * The SAS/SATA negotiation is largely out of our hands. The silicon
>> does its thing, and then tells us what type of device connected. We
>> are then expected to switch the port to either SAS mode or SATA mode,
>> accordingly.
>>
>> * There is no firmware or anything. Just DMA and register bitbanging.
>> We have plenty of low-level control.
>>
>> * The state of SAS/SATA integration is perpetually pathetic. Updates
>> in this area are likely. There's a rumor Brian King @ IBM may look
>> into this area too.
>>
>> * This driver pretty much completely lacks exception handling.
>
> I also note there's a slight nomenclature issue which will trip up SAS
> people. All through the driver, you seem to use the word "port" to
> refer to a physical phy. the struct bs_port seems to actually be a phy
> descriptor ... unless there's some missing phy<->port setup logic that
> will be in the final driver? The trouble is that phys and ports are
> distinct (and not equivalent) objects in SAS.
Nomemclature came straight from the hardware docs, I'm afraid.
Comparing with the Marvell hardware, I can see how (with Marvell) wide
ports can be set up, and the port/phy distinction is easily programmable
depending on the situation.
Not so with BCM8603.
The only places where the docs mention SMP and STP at all is in the SAS
outgoing DMA descriptor docs, when you fill in connection type. The
_only_ other mention of SMP or STP at all is a note saying neither is
supported. So, even the docs contradict themselves, but overall I have
the feeling that SMP/STP are out of my hands.
I wonder if Broadcom's interface is born out of the closed RAID-on-chip
product that this is descended from.
Hopefully more knowledge will be gained soon, as I debug simple SAS and
SATA device plug/unplug, and ask Broadcom questions.
>> As an aside, I am also writing a driver for Marvell chips that behave
>> quite similarly to this chip. It seems the future of storage might look
>> like these Broadcom and Marvell SAS+SATA DMA ring interfaces, in the
>> volume marketspace at least.
>
> If you have a contact here too, I can get the LF NDA and hardware
> programmes rolling.
Same response as at the top :) Marvell is actually better at responding
than Broadcom, but I'm quite reluctant to make /another/ introduction
(already did so for one hacker) that leads nowhere.
Jeff
next prev parent reply other threads:[~2007-09-23 23:43 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-23 4:04 [PATCH] Broadcom 8603 SAS/SATA driver, rough draft Jeff Garzik
2007-09-23 21:59 ` Douglas Gilbert
2007-09-23 23:33 ` Jeff Garzik
2007-09-23 23:46 ` Jeff Garzik
2007-09-23 23:47 ` Jeff Garzik
2007-09-23 23:05 ` James Bottomley
2007-09-23 23:43 ` Jeff Garzik [this message]
2007-09-23 23:59 ` James Bottomley
2007-09-24 0:14 ` Jeff Garzik
2007-09-24 14:06 ` James Bottomley
2007-09-24 15:30 ` Jeff Garzik
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=46F6FA11.2070501@garzik.org \
--to=jeff@garzik.org \
--cc=James.Bottomley@SteelEye.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
/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