Home | History | Annotate | Download | only in ata
History log of /src/sys/dev/ata/atareg.h
RevisionDateAuthorComments
 1.46  05-Jul-2022  andvar s/retrys/retries/ in comments.
 1.45  15-May-2020  jdolecek remove unused atacmd_tostatq()
 1.44  07-Oct-2017  jdolecek Merge support for SATA NCQ (Native Command Queueing) from jdolecek-ncq branch

ATA subsystem was changed to support several outstanding commands, and use
NCQ xfers if supported by both the controller and the disk, including NCQ
error recovery. Set NCQ high priority for BPRIO_TIMECRITICAL xfers
if supported. Added FUA support.

Done some work towards MP-safe, all ATA code tsleep()/wakeup() replaced
by condvars, and switched most code from spl* to mutexes (separate
wd(4) and ata channel lock).

Introduced new option WD_CHAOS_MONKEY to facilitate testing of error
handling, fixed several uncovered issues. Also fixed several problems
with kernel dump to wd(4) disk.

Tested with ahcisata(4), mvsata(4), siisata(4), piixide(4) on amd64,
with and without port multiplier, both disk and ATAPI devices; other
drivers and archs mechanically adjusted and compile-tested. NCQ is
supported for ahcisata(4) and siisata(4) for any controller, for
mvsata(4) only Gen IIe ones for now. Also enabled ATAPI support in
mvsata(4).

Thanks to Matt Thomas for initial ATA infrastructure patch, and
Jonathan A.Kollasch for siisata(4) NCQ changes and general testing.

Also fixes PR kern/43169 (wd(4)); and PR kern/11811, PR kern/47041,
PR kern/51979 (kernel dump)
 1.43  30-Oct-2013  drochner branches: 1.43.18;
-recognize CF cards by the magic value in inquiry data
-kill CFG_ATAPI_MASK, didn't see anything in the specs supporting
that it exists
 1.42  09-Jan-2013  riastradh branches: 1.42.2;
Name the ATA SECURITY commands.
 1.41  19-Oct-2012  drochner Implement experimental support to pass notifications that a file
was deleted from the filesystem to the disk driver, commonly
known as "discard" or "trim".
fs/driver support is in ffs and ata wd for now.
This is what was posted here:
http://mail-index.netbsd.org/tech-kern/2012/02/28/msg012813.html
with minor cleanup, and the global switch replaced by a mount option.
 1.40  24-Oct-2011  jakllsch branches: 1.40.2; 1.40.12;
SATA_SIGNAL_GEN3 definition for Serial ATA capabilities word in
IDENTIFY DEVICE structure.
 1.39  24-Oct-2011  jakllsch Add defines for SET FEATURES for the SATA, PUIS and AAM feature sets.
 1.38  25-Jan-2010  jakllsch Add some more elements to struct ataparams.

These mostly concern the new Long Physical Sectors
and Long Logical Sectors feature sets.

Information from a draft of ACS-2, with some additional
in-between members and bits being borrowed from OpenBSD.

There's lots more in ACS-2 we could add, but for the most
part it would be superfluous.

XXX: Some elements marked as reserved no longer are,
and some elements we still reference are now obsolete.
 1.37  22-Jan-2010  jakllsch Correct an error in previous commit.
 1.36  21-Jan-2010  jakllsch Convert to C99 types. Make whitespace more consistent.
 1.35  10-Jan-2010  tsutsui Provide atacmd_to48() in case of #if defined(_STANDALONE) too
because standalone wdc driver in cobalt bootloader requires it
for LBA48 support.
 1.34  19-Oct-2009  bouyer Remove closes 3 & 4 from my licence. Lots of thanks to Soren Jacobsen
for the booring work !
 1.33  08-Jun-2009  jakllsch Add atap_max_lba member to ataparams for LBA48 Maximum Address. From OpenBSD.
While here, renumber some __reserved member names to be sequential.
Also, add a member for the World Wide Name.

Use atap_max_lba in wd.c instead of offsets into a __reserved member.
 1.32  25-Dec-2007  perry branches: 1.32.10; 1.32.20; 1.32.24; 1.32.28;
Convert many of the uses of __attribute__ to equivalent
__packed, __unused and __dead macros from cdefs.h
 1.31  18-Nov-2007  christos branches: 1.31.2; 1.31.6;
From Marco Trillo (marcotrillo at gmail dot com):
Add Advanced power management in atactl(8)
 1.30  21-Aug-2007  bouyer branches: 1.30.2; 1.30.6; 1.30.8;
Improved SATA support, from Jonathan A. Kollasch in PR bin/36772:
* use full 5-bit command queue depth that SATA supports
* decode SATA bits
 1.29  16-Nov-2006  christos branches: 1.29.8; 1.29.18; 1.29.22;
__unused removal on arguments; approved by core.
 1.28  30-Sep-2006  itohy A little effort against kernel bloat....
Exclude ATA DMA support if no ATA DMA capable drivers are compiled in.
 1.27  24-Sep-2006  xtraeme Typo: WCDD_SECURITY_FREEZE -> WDCC_SECURITY_FREEZE

Noticed by Sergey Svishchev.
 1.26  16-Feb-2006  perry branches: 1.26.14; 1.26.16;
Change "inline" back to "__inline" in .h files -- C99 is still too
new, and some apps compile things in C89 mode. C89 keywords stay.

As per core@.
 1.25  24-Dec-2005  perry branches: 1.25.2; 1.25.4; 1.25.6;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.24  11-Dec-2005  christos merge ktrace-lwp.
 1.23  12-Apr-2005  drochner branches: 1.23.2;
add definition for "security freeze"
 1.22  27-Feb-2005  perry branches: 1.22.2;
nuke trailing whitespace
 1.21  23-Aug-2004  he branches: 1.21.4; 1.21.6;
Put an #ifdef _KERNEL around inline functions using panic().
Fixes compile problem for the atactl program for the vax target.
 1.20  21-Aug-2004  thorpej - Move to48() to atareg.h and rename it atacmd_to48().
- Add an atacmd_tosataq() that converts a 32-bit command to a Native
SATA Queued command.
 1.19  12-Aug-2004  thorpej Add SATA queued read/write commands.
 1.18  03-May-2004  bouyer When using LBA48, use Flush cache extended command if supported.
From Christos Zoulas in PR 25366, with minor adjustements from me.
 1.17  14-Mar-2004  wiz branches: 1.17.2;
It's extension, not extention. From Miod Vallat (miod at online fr).
 1.16  30-Dec-2003  thorpej Move the register definitions for ATA Task File registers to atareg.h;
they are also used by controllers that do not map the registers into the
system address space, and are thus distinct from the "controller" registers.
 1.15  30-Dec-2003  thorpej SMART info is logically part of the register set; move it from atavar.h
to atareg.h
 1.14  30-Nov-2003  yamt add definitions of new feature bits.
 1.13  30-Nov-2003  yamt - rename WDC_CAP_LBA48 to ATA_CMD2_LBA48.
- remove WDC_CAP_QUEUE. (there's already ATA_CMD2_RWQ.)

as discussed on tech-kern@.
 1.12  26-Nov-2003  yamt remove ATA_CMD2_SMART, which seems wrong and isn't used.
 1.11  02-Nov-2003  wiz Fix two typos. From Tom Cosgrove via jmc@openbsd.
 1.10  23-Sep-2003  skd Additional definitions as per SATA specifications.
Approved by Manuel Bouyer.
 1.9  05-Aug-2002  soren branches: 1.9.6;
Add ATA SMART reporting support from Ben Collver in kern/12787.
 1.8  13-Jan-2002  christos branches: 1.8.8; 1.8.10;
Add LBA48 support based on patches from Keisuke YOSHIDA. KNF a bit while
I am there.
 1.7  05-Jul-2001  toshii branches: 1.7.2;
Fix typo. s/extention/extension/
 1.6  29-Mar-2000  augustss branches: 1.6.6;
Fix a couple of misspelled comments.
 1.5  18-Jan-1999  bouyer branches: 1.5.2; 1.5.8;
move wd.c:print_wderror() to ata.c:ata_perror().
In wdc_probe_caps() add code to guess the ATA revision supported (if
ATA4 if Ultra-DMA, ATA2 if PIO mode > 2). We can't rely on param.atap_ata_major
here, at last one Ultra-DMA drive claims to support only ATA-3.
Use the ATA version in ata_perror(), and to try a flush cache command
in a shutdown hook for IDE drives.
 1.4  01-Dec-1998  tsubai struct ataparam has endian dependence, so add big-endian case.
 1.3  18-Nov-1998  kenh Don't protect this with #ifdef _KERNEL
 1.2  12-Oct-1998  bouyer Merge bouyer-ide
 1.1  04-Jun-1998  bouyer branches: 1.1.2;
file atareg.h was initially added on branch bouyer-ide.
 1.1.2.1  04-Jun-1998  bouyer Commit changes to the IDE system in a branch. This allows a better separation
between higth-level and low-level (i.e. registers read/write) and generalize
the queue for all commands. This also add supports for IDE DMA.
 1.5.8.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.5.2.1  07-Jul-2000  he Apply patch (requested by bouyer):
Add support for the following PCIIDE controllers:
o AMD 756
o CMD PCI0648 and PCI0649
o Hightpoint HPT366
o OPTi 82c621 (and a few of its derivatives)
o Promise Ultra/33 and Ultra/66
o Intel 82801 (ICH/ICH0)
Also fix PR#10437 (detect more ATAPI devices).
 1.6.6.3  13-Aug-2002  nathanw Catch up to -current.
 1.6.6.2  28-Feb-2002  nathanw Catch up to -current.
 1.6.6.1  24-Aug-2001  nathanw Catch up with -current.
 1.7.2.2  06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.7.2.1  11-Feb-2002  jdolecek Sync w/ -current.
 1.8.10.1  14-May-2004  jdc Pull up revision 1.14 via patch (requested by bouyer in ticket #1690)

add definitions of new feature bits.
 1.8.8.1  29-Aug-2002  gehenna catch up with -current.
 1.9.6.7  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.9.6.6  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.9.6.5  21-Sep-2004  skrll Fix the sync with head I botched.
 1.9.6.4  18-Sep-2004  skrll Sync with HEAD.
 1.9.6.3  25-Aug-2004  skrll Sync with HEAD.
 1.9.6.2  12-Aug-2004  skrll Sync with HEAD.
 1.9.6.1  03-Aug-2004  skrll Sync with HEAD
 1.17.2.1  09-May-2004  jdc Pull up revision 1.18 (requested by bouyer in ticket #262)

When using LBA48, use Flush cache extended command if supported.
From Christos Zoulas in PR 25366, with minor adjustements from me.
 1.21.6.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.21.4.1  29-Apr-2005  kent sync with -current
 1.22.2.1  15-Apr-2005  tron Pull up revision 1.23 (requested by drochner in ticket #156):
add definition for "security freeze"
 1.23.2.4  21-Jan-2008  yamt sync with head
 1.23.2.3  07-Dec-2007  yamt sync with head
 1.23.2.2  03-Sep-2007  yamt sync with head.
 1.23.2.1  30-Dec-2006  yamt sync with head.
 1.25.6.1  22-Apr-2006  simonb Sync with head.
 1.25.4.1  09-Sep-2006  rpaulo sync with head
 1.25.2.1  18-Feb-2006  yamt sync with head.
 1.26.16.2  10-Dec-2006  yamt sync with head.
 1.26.16.1  22-Oct-2006  yamt sync with head
 1.26.14.1  18-Nov-2006  ad Sync with head.
 1.29.22.2  21-Nov-2007  joerg Sync with HEAD.
 1.29.22.1  03-Sep-2007  jmcneill Sync with HEAD.
 1.29.18.1  03-Sep-2007  skrll Sync with HEAD.
 1.29.8.1  09-Oct-2007  ad Sync with head.
 1.30.8.2  18-Feb-2008  mjf Sync with HEAD.
 1.30.8.1  19-Nov-2007  mjf Sync with HEAD.
 1.30.6.1  18-Nov-2007  bouyer Sync with HEAD
 1.30.2.1  09-Jan-2008  matt sync with HEAD
 1.31.6.1  02-Jan-2008  bouyer Sync with HEAD
 1.31.2.1  26-Dec-2007  ad Sync with head.
 1.32.28.1  21-Apr-2010  matt sync to netbsd-5
 1.32.24.1  23-Jul-2009  jym Sync with HEAD.
 1.32.20.1  10-Jan-2010  snj Pull up following revision(s) (requested by dsl in ticket #1231):
sys/dev/ata/atareg.h: revision 1.33
sys/dev/ata/wd.c: revision 1.378
Add atap_max_lba member to ataparams for LBA48 Maximum Address. From OpenBSD.
While here, renumber some __reserved member names to be sequential.
Also, add a member for the World Wide Name.
Use atap_max_lba in wd.c instead of offsets into a __reserved member.
 1.32.10.2  11-Mar-2010  yamt sync with head
 1.32.10.1  20-Jun-2009  yamt sync with head
 1.40.12.5  03-Dec-2017  jdolecek update from HEAD
 1.40.12.4  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.40.12.3  25-Feb-2013  tls resync with head
 1.40.12.2  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.40.12.1  09-Oct-2012  bouyer Support transfers of up to MACHINE_MAXPHYS in all pciide variants, and ahci.
wd(4) limits its maxphys depending on the drives's capability (64k sectors
for LBA48, 256 sectors for LBA and 128 sectors for older devices).

I assumed all pciide controllers could do MACHINE_MAXPHYS transfers, but
this may not be true. The capabilities of each controller variants should be
looked at more closely.
 1.40.2.3  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.40.2.2  23-Jan-2013  yamt sync with head
 1.40.2.1  30-Oct-2012  yamt sync with head
 1.42.2.1  18-May-2014  rmind sync with head
 1.43.18.3  19-Jul-2017  jdolecek tighen and expand error handling, mostly for NCQ use cases:
- make retry timeout callout per xfer, i.e. retry separately
- zero whole bio struct on retry to avoid more stale state
- add a REQUEUE option, which doesn't bump retry count
- add ata_read_log_ext_ncq() for NCQ recovery
- adjust logic for activating xfers - allow next command only when
it's for same drive, several concurrent are only supported when HBA
and driver support FIS-based switching
- add new ata_timeout() which handles race between callout_stop()
and the invokation, add appropriate handling on deactivate/free paths
- stop using ch_status/ch_error in non-wdc code; later it will be dropped
completely
 1.43.18.2  24-Apr-2017  jdolecek set NCQ priority field to 'high' for BPRIO_TIMECRITICAL transfers if drive
supports it
 1.43.18.1  19-Apr-2017  jdolecek add ATA FUA support

RSS XML Feed