Hummingboard SATA

Russell Haley russ.haley at
Sun Nov 15 06:16:11 UTC 2015

Hi Warner,

I am looking over the CAM code and it's relationship with ahci. There are
also bits of information about CAM around: a chapter in the Kong book, a
chapter in the developers handbook.

The file ahci.c, line 660 - ahci_ch_attach() - this seems to be where the
magic happens to attach the ahci driver to the CAM system.  Specifically
line 754 "cam_sim_alloc()".

What I am not seeing is the relationship to the ata_da.c code.  I noticed
that my drive wasn't listed in the ata_da.c,  ada_quirk_table. I don't know
anything about quirks but imagine that this is an optional item?

I think I am done reviewing the code for now and will move back to ddb and
figure out how to examine the kernel checking for devices (read: no idea
what I am doing). If anyone has any pointers on how to hook into the probe
or attach methods using the debugger, or even any good scripts, I'd be



On Wed, Nov 11, 2015 at 9:39 PM, Warner Losh <imp at> wrote:

> On Wed, Nov 11, 2015 at 10:22 PM, Russell Haley <russ.haley at>
> wrote:
>> Hello again,
>> I have started looking at SATA support in FreeBSD by first reading the man
>> pages and then examining the code. The Joseph Kong book is helping
>> considerably to understand the structures.
>> I see that there are three drivers in play: ahci, ada and ata. Man
>> indicates that ahci takes precedence in driver selection. *Is that the
>> driver for Arm and the Hummingboard?*
> ata is out of the picture now. It never really was used on arm.
> ahci is likely the driver you want, though I'm not sure what a Hummingboard
> is. A quick google search suggests it is a imx6 board. That's good news
> because FreeBSD has an attachment.
> ahci is what's call a CAM SIM. This means that it will create the ata xpt
> (handled
> in sys/cam/ata/ata_xpt.c). The XPT then enumerates the transport and finds
> the
> sata drives, which wind up getting assigned the ada PERIPH driver (handled
> by
> sys/cam/ata/ata_da.c).
> Chances are very good you have a problem with the ahci driver and/or
> how that driver is connected / sets up the iMX6 SoC sata hardware.
>> What I can't seem to find is any direction on getting a debugger hooked up
>> to driver code. Do I use gdb somehow, or do I use the kernel debugger? I'm
>> going back over the Developers handbook again.
> I'd start with ddb.
>> I also don't understand how to boot with the -d option. When is this
>> entered? I have used the sysctl to enter the debugger and poked around
>> but it doesn't mean much yet.
>> sysctl debug.kdb.enter=1
> I don't think that the -d option is implemented on arm. Most of the ARM
> kernel config files have ALT_BREAK_TO_DEBUGGER defined, which means
> you'll need to send <CR> ~ ^B (that's hit return, hit the tilde key, hit
> control B).
> That will get you to the ddb prompt (db>). man 8 ddb for instructions on
> how to use it.
> Warner

More information about the freebsd-arm mailing list