Home | History | Annotate | Download | only in ic
History log of /src/sys/dev/ic/ahcisatareg.h
RevisionDateAuthorComments
 1.17  07-Jan-2025  andvar fix various typos in commments.
 1.16  24-Jul-2021  andvar Fix all remaining typos, mainly in comments but also in few definitions and log messages, reported by me in PR kern/54889.
Also fixed some additional typos in comments, found on review of same files or typos.
 1.15  14-Jan-2019  jdolecek branches: 1.15.16;
fix typo in comment
 1.14  03-Dec-2018  jdolecek fix typo in comment, NFC
 1.13  07-Oct-2017  jdolecek branches: 1.13.2; 1.13.4;
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.12  17-Oct-2012  matt branches: 1.12.26;
Fix an errant define.
 1.11  02-Nov-2011  jakllsch branches: 1.11.2; 1.11.12;
Additionally apply __aligned(8) to all __packed hardware data structures.
(The hardware actually requires much larger alignment on these structures
(128 to 1024 bytes), but 8 is big enough for the compiler to generate more
efficient code on strict alignment architectures.)
 1.10  20-Aug-2011  jakllsch Add new CAP2 and BOHC registers.
 1.9  20-Aug-2011  jakllsch Adjust and add AHCI_CAP_IS values.
 1.8  20-Aug-2011  jakllsch Rework version printout to be more future proof.
Rework features printout using snprintb.
 1.7  20-Jul-2010  jakllsch Prepare ahcisata(4) to work with 64-bit bus_dma_tag_t.
 1.6  20-Jul-2010  jakllsch Convert ahcisata(4) to C99 exact-width integer types.
 1.5  19-Oct-2009  bouyer branches: 1.5.2; 1.5.4;
Remove closes 3 & 4 from my licence. Lots of thanks to Soren Jacobsen
for the booring work !
 1.4  25-Jan-2008  xtraeme branches: 1.4.10; 1.4.28;
Make it print the correct version for AHCI 1.2 controllers.
 1.3  25-Dec-2007  perry Convert many of the uses of __attribute__ to equivalent
__packed, __unused and __dead macros from cdefs.h
 1.2  16-Sep-2007  bouyer branches: 1.2.6; 1.2.8; 1.2.12;
Fix various error handling bugs:
- the value of the ATA error register would be computed wrongly, leading to
bogus error values reported to wd(4)
- the channel would not always be restarted after an error, so the next
command would not be handled by the controller
- a timeout condition would not be properly reported to wd(4), leading
to a short transfer instead of a reset/retry
these bugs would cause a AHCI SATA channel to be stalled (no more command
processed) after a "ID not found" or "Aborted command" error reported by the
drive.
 1.1  12-May-2007  bouyer branches: 1.1.2; 1.1.4; 1.1.6; 1.1.12; 1.1.14; 1.1.16; 1.1.18; 1.1.20;
Split the ahcisata driver in pci front-end and bus-independant back-end.
 1.1.20.5  04-Feb-2008  yamt sync with head.
 1.1.20.4  21-Jan-2008  yamt sync with head
 1.1.20.3  27-Oct-2007  yamt sync with head.
 1.1.20.2  03-Sep-2007  yamt sync with head.
 1.1.20.1  12-May-2007  yamt file ahcisatareg.h was added on branch yamt-lazymbuf on 2007-09-03 14:34:14 +0000
 1.1.18.3  23-Sep-2007  wrstuden Sync with somewhat-recent netbsd-4.
 1.1.18.2  03-Sep-2007  wrstuden Sync w/ NetBSD-4-RC_1
 1.1.18.1  12-May-2007  wrstuden file ahcisatareg.h was added on branch wrstuden-fixsa on 2007-09-03 07:04:22 +0000
 1.1.16.3  16-Sep-2007  xtraeme Pull up following revision(s) (requested by bouyer in ticket #882):
sys/dev/ic/ahcisata_core.c: revision 1.5
sys/dev/ic/ahcisatareg.h: revision 1.2

Fix various error handling bugs:
- the value of the ATA error register would be computed wrongly, leading to
bogus error values reported to wd(4)
- the channel would not always be restarted after an error, so the next
command would not be handled by the controller
- a timeout condition would not be properly reported to wd(4), leading
to a short transfer instead of a reset/retry
these bugs would cause a AHCI SATA channel to be stalled (no more command
processed) after a "ID not found" or "Aborted command" error reported by the
drive.
 1.1.16.2  31-Aug-2007  pavel Pull up following revision(s) (requested by bouyer in ticket #678):
distrib/sets/lists/man/mi: revision 1.1001
doc/CHANGES: revision 1.853 via patch
share/man/man4/Makefile: revision 1.428
share/man/man4/jmide.4: revision 1.1
sys/arch/amd64/conf/GENERIC: revision 1.143
sys/arch/amd64/conf/INSTALL: revision 1.69
sys/arch/i386/conf/GENERIC: revision 1.827
sys/arch/i386/conf/INSTALL_LARGE: revision 1.2 via patch
sys/arch/i386/conf/XEN2_DOM0: revision 1.26
sys/conf/files: revision 1.844 via patch
sys/dev/ic/ahcisata_core.c: revision 1.1 via patch
sys/dev/ic/ahcisata_core.c: revision 1.3
sys/dev/ic/ahcisatareg.h: revision 1.1
sys/dev/ic/ahcisatavar.h: revision 1.1
sys/dev/pci/ahcisata.c: delete
sys/dev/pci/ahcisatareg.h: delete
sys/dev/pci/ahcisata_pci.c: revision 1.1
sys/dev/pci/files.pci: revision 1.287-1.288
sys/dev/pci/jmide.c: revision 1.1-1.2
sys/dev/pci/jmide_reg.h: revision 1.1
sys/dev/pci/pcidevs: revision 1.878
Add JMicron Technology vendor ID, and their current PCIe SATA/PATA
controllers.

Split the ahcisata driver in pci front-end and bus-independant back-end.
add jmide(4), a driver for the JMicron Technology JMB36x PCIe to SATA II/PATA
controllers. These controllers can be found on add-on PCIe cards, or
on some motherboards to provide the PATA connectivity (e.g. some intel
ICH8-based motherboards).
Thanks to JMicron Technology for providing me documentation and
different sample boards for this work.

Move mapping of AHCI register so that jmide knows if it fails, and avoids
calling ahci_intr() (which would cause a panic).
Try to use the pciide function for SATA drives if attaching ahci fails (this
doesn't seems to work though, it may be BIOS dependant).
Thanks to Gary Duzan for testing multiple pacthes.

We're not ready to handle ATAPI yet so just claim there's no drive to the
upper layer. This should work around a NULL pointer dereference when
an ATAPI device is detected on a AHCI device.
 1.1.16.1  12-May-2007  pavel file ahcisatareg.h was added on branch netbsd-4 on 2007-08-31 20:09:23 +0000
 1.1.14.3  23-Mar-2008  matt sync with HEAD
 1.1.14.2  09-Jan-2008  matt sync with HEAD
 1.1.14.1  06-Nov-2007  matt sync with HEAD
 1.1.12.1  02-Oct-2007  joerg Sync with HEAD.
 1.1.6.2  11-Jul-2007  mjf Sync with head.
 1.1.6.1  12-May-2007  mjf file ahcisatareg.h was added on branch mjf-ufs-trans on 2007-07-11 20:05:38 +0000
 1.1.4.3  09-Oct-2007  ad Sync with head.
 1.1.4.2  09-Jun-2007  ad Sync with head.
 1.1.4.1  12-May-2007  ad file ahcisatareg.h was added on branch vmlocking on 2007-06-09 21:37:13 +0000
 1.1.2.2  17-May-2007  yamt sync with head.
 1.1.2.1  12-May-2007  yamt file ahcisatareg.h was added on branch yamt-idlelwp on 2007-05-17 13:41:25 +0000
 1.2.12.1  02-Jan-2008  bouyer Sync with HEAD
 1.2.8.1  26-Dec-2007  ad Sync with head.
 1.2.6.1  18-Feb-2008  mjf Sync with HEAD.
 1.4.28.1  24-Mar-2014  matt Merge needed changes from HEAD for cubie
 1.4.10.2  11-Aug-2010  yamt sync with head.
 1.4.10.1  11-Mar-2010  yamt sync with head
 1.5.4.1  05-Mar-2011  rmind sync with head
 1.5.2.1  17-Aug-2010  uebayasi Sync with HEAD.
 1.11.12.3  03-Dec-2017  jdolecek update from HEAD
 1.11.12.2  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.11.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.11.2.1  30-Oct-2012  yamt sync with head
 1.12.26.2  29-Jul-2017  jdolecek fix AHCI_P_CMD_CCS_SHIFT - must shift only by 8, otherwise the result would
be always 0
 1.12.26.1  19-Jul-2017  jdolecek update error handling:
- switch to ata_timeout()
- stop using ch_status/ch_error for passing state/error, stop setting
ATACH_IRQ_WAIT in ch_flags; pass the state via the last parameter
to c_intr() routine
- add NCQ recovery and KILL_REQUEUE
- only call atastart() in c_intr() if there was no error

ahcisata-specific tweaks:
- add some handling for PM in the error recovery using FBS register,
according to spec it should be independant of actual FBSS feature; untested
as my hw doesn't support PM
 1.13.4.1  10-Jun-2019  christos Sync with HEAD
 1.13.2.2  18-Jan-2019  pgoyette Synch with HEAD
 1.13.2.1  26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.15.16.1  01-Aug-2021  thorpej Sync with HEAD.

RSS XML Feed