ada(4) and ahci(4) quirk printing

Jeremy Chadwick jdc at koitsu.org
Tue Apr 23 11:47:23 UTC 2013



On Tue, Apr 23, 2013 at 12:33:09PM +0100, Steven Hartland wrote:
> 
> ----- Original Message ----- From: "Alexander Motin"
> <mav at FreeBSD.org>
> To: "Jeremy Chadwick" <jdc at koitsu.org>
> Cc: "Kenneth Merry" <ken at freebsd.org>; <freebsd-stable at freebsd.org>
> Sent: Tuesday, April 23, 2013 10:29 AM
> Subject: Re: ada(4) and ahci(4) quirk printing
> 
> 
> >On 23.04.2013 12:26, Jeremy Chadwick wrote:
> >>On Tue, Apr 23, 2013 at 10:44:57AM +0300, Alexander Motin wrote:
> >>>On 22.04.2013 08:14, Jeremy Chadwick wrote:
> >>>>I've written the following patches and done the following testing (see
> >>>>the results.*.txt files):
> >>>>
> >>>>http://jdc.koitsu.org/freebsd/quirk_printing/
> >>>>
> >>>>Important: these are against stable/9 r249715.
> >>>>
> >>>>Folks are welcome to try these; I've tested about as best as I can.
> >>>>
> >>>>Questions/comments for Alexander and Kenneth:
> >>>>
> >>>>1. I'm not sure if the location of where I added the printf() code is
> >>>>correct or not,
> >>>
> >>>It seems fine for me.
> >>>
> >>>>2. Not sure if loader.conf(5) forced-quirks would show up here or not,
> >>>
> >>>As I see, they will.
> >>>
> >>>>3. It would be nice to have the same for SCSI da(4).  I took a stab at
> >>>>this but the printing code I wrote never got called (or the quirks entry
> >>>>I added wasn't right, not sure which),
> >>>>
> >>>>4. I strongly believe quirk printing should be shown *without* verbose
> >>>>booting.  I say this because I noticed some of the CAPAB printf()s only
> >>>>get shown if bootverbose is true.  In fact, it's what prompted me to
> >>>>open PR 178040 ("My Intel 320 and 510-series SSDs don't show 4K quirks,
> >>>>yet advertise 512 logical and physical in IDENTIFY?!  PR time!").
> >>>
> >>>Let me disagree. bootverbose keeps dmesg readable for average user,
> >>>while quirks are specific driver workarounds and their names may
> >>>confuse more then really help. If every driver print its quirks,
> >>>dmesg would be two times bigger. There is bootverbose for it.
> >>
> >>I'm willing to bend on this assuming that userland has a way to display
> >>the quirks.  I've already had one user contact me off-list stating that
> >>displaying of quirks is useful to them, but *without* bootverbose
> >>(because bootverbose shows too much information for them to have to sift
> >>through).  And display of quirks (or in this case) was what prompted me
> >>to create PR 178040, since I had just *assumed* FreeBSD had 4K quirks in
> >>place for both models of SSDs.
> >>
> >>I think sysctl would be an ideal place for this.  Is it possible to
> >>export active device quirks to sysctl (say kern.cam.ada.X.quirks),
> >>read-only, and preferably as a string (same printf() style used)?  Or
> >>does that introduce complexities?
> >>
> >>If we can't reach an agreement, I'm happy to wrap the relevant bits with
> >>an "if (bootverbose)", but I really feel users should have some way to
> >>see this information outside of bootverbose.
> >
> >Both da and ada drivers already have sysctl's. It should be
> >trivial to add one more, especially if just numeric.
> 
> Wouldn't camcontrol be a better place for this?

1) Not possible at this time -- the ADA_Q_* quirks are not exported to
userland (i.e. /usr/include), only the kernel.  camcontrol's source only
relies on things in userland.

2) Assuming #1 is addressed: where would it go?  You can't put it under
"camcontrol identify" because all (I repeat: ALL) that information comes
from ATA IDENTIFY and thus would be extremely misleading.  (Same goes
for SCSI's INQUIRY stuff).  Which leads me to...

3) I'm never thrilled about adding new commands to camcontrol given
how enormous that thing is to begin with.  :-)  I also imagine something
like "camcontrol quirks" might lead people to think it lets you adjust
quirks in real-time (nope -- read-only, tunable-only).  And that leads
me to...

4) camcontrol wouldn't address the need/interest for ahci(4) quirks to
be made available.

All of these things combined do lead me to believe sysctl is the better
place for this.

P.S. -- I just noticed that our USB layer prints device quirks
regardless of bootverbose -- instead it's based on kernel option
USB_DEBUG, which is enabled in GENERIC.  Hooray for inconsistency.

-- 
| Jeremy Chadwick                                   jdc at koitsu.org |
| UNIX Systems Administrator                http://jdc.koitsu.org/ |
| Mountain View, CA, US                                            |
| Making life hard for others since 1977.             PGP 4BD6C0CB |


More information about the freebsd-stable mailing list