Home | History | Annotate | Download | only in ata
History log of /src/sys/dev/ata/satafis_subr.c
RevisionDateAuthorComments
 1.9  15-Aug-2019  gson Set the ATAPI "BYTE COUNT LIMIT" field in the SATA case like we
already do in the ATA case, to make NetBSD work with the virtual
SATA CD-ROM of "qemu-system-i386 -machine q35". Fixes PR kern/54389.
OK mlelstv.
 1.8  07-Oct-2017  jdolecek branches: 1.8.4; 1.8.10;
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.7  22-Jul-2012  jakllsch branches: 1.7.2; 1.7.28;
SATA uses the head portion of the device register in the command protocol for
port multiplier register access. Thus, in the LBA48 case, pass the complete
r(hd|dh)_dh byte back and forth to the upper layers. (This is irrelevant in
the LBA28/CHS code path for what should be obvious reasons.)
 1.6  24-Jan-2012  jakllsch Rework struct ata_command to support LBA28 and LBA48-protocol commands.
Implement 28- and 48-bit command issuance and parameter read-back in the
various ATA host drivers. Add LBA28-protocol support to ATAIOCCOMMAND ioctl.
 1.5  07-Apr-2010  jakllsch branches: 1.5.2; 1.5.10; 1.5.14;
satafis:
- Add function to parse RDH FIS for use in implementing AT_READREG.
- Correct and clean up some structure definitions.
- Sprinkle a bit of const.
- Remove dependency on <dev/ic/wdcreg.h>, WDCTL_4BIT doesn't seem
to be specified by any recent ATA standard, and it seems to make
no difference in practice.
- Stop using WDSD_IBM, these bits have been obsolete since before SATA.

siisata:
- Implement AT_READREG.
- Reap now-unneeded <dev/ic/wdcreg.h>.
- Whitespace and slight debug code cleanup.
- Some possibly-uncessary code reordering.

ahcisata:
- Implement AT_READREG.
- Reap now-unneeded <dev/ic/wdcreg.h>.
 1.4  19-Oct-2009  bouyer branches: 1.4.2; 1.4.4;
Remove closes 3 & 4 from my licence. Lots of thanks to Soren Jacobsen
for the booring work !
 1.3  04-Jul-2009  jakllsch branches: 1.3.2;
Further corrections for siisata.

Reset ch_status and ch_error at the beginning of any operation.

The chip only writes the RDH FIS to the SRAM when the error bit is
set in a RDH FIS (per the datasheet). Thus, satafis_sdb_parse() is
replaced with satafis_rhd_parse(). A valid FIS type field seems to
not be written to the SRAM, so don't bother checking it for the
correct magic.

Additionally, append 2009 to copyright year set, and remove
obsolete CVS Id lines from when this was in my repository.
 1.2  17-Jun-2009  jakllsch branches: 1.2.2;
Use abstracted FIS code for ahcisata(4). Have the FIS code pre-zero the FIS.
 1.1  17-Jun-2009  jakllsch ahcisata(4) and siisata(4) use similar SATA FIS functions, share them.
 1.2.2.5  11-Aug-2010  yamt sync with head.
 1.2.2.4  11-Mar-2010  yamt sync with head
 1.2.2.3  18-Jul-2009  yamt sync with head.
 1.2.2.2  20-Jun-2009  yamt sync with head
 1.2.2.1  17-Jun-2009  yamt file satafis_subr.c was added on branch yamt-nfs-mp on 2009-06-20 07:20:20 +0000
 1.3.2.4  28-Sep-2009  snj Pull up following revision(s) (requested by jakllsch in ticket #1023):
sys/dev/ata/satafis_subr.c: revision 1.3
sys/dev/ata/satafisvar.h: revision 1.2
sys/dev/ic/siisata.c: revision 1.7
sys/dev/ic/siisatareg.h: revision 1.4
Further corrections for siisata.
Reset ch_status and ch_error at the beginning of any operation.
The chip only writes the RDH FIS to the SRAM when the error bit is
set in a RDH FIS (per the datasheet). Thus, satafis_sdb_parse() is
replaced with satafis_rhd_parse(). A valid FIS type field seems to
not be written to the SRAM, so don't bother checking it for the
correct magic.
Additionally, append 2009 to copyright year set, and remove
obsolete CVS Id lines from when this was in my repository.
 1.3.2.3  28-Sep-2009  snj Pull up following revision(s) (requested by jakllsch in ticket #1023):
sys/dev/ata/satafis_subr.c: revision 1.2
Have the FIS code pre-zero the FIS.
 1.3.2.2  28-Sep-2009  snj Pull up following revision(s) (requested by jakllsch in ticket #1023):
sys/conf/files: revision 1.947
sys/dev/ata/files.ata: revision 1.21
sys/dev/ata/satafis_subr.c: revision 1.1
sys/dev/ata/satafisreg.h: revision 1.1
sys/dev/ata/satafisvar.h: revision 1.1
ahcisata(4) and siisata(4) use similar SATA FIS functions, share them.
 1.3.2.1  04-Jul-2009  snj file satafis_subr.c was added on branch netbsd-5 on 2009-09-28 00:13:02 +0000
 1.4.4.1  30-May-2010  rmind sync with head
 1.4.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.5.14.1  18-Feb-2012  mrg merge to -current.
 1.5.10.2  30-Oct-2012  yamt sync with head
 1.5.10.1  17-Apr-2012  yamt sync with head
 1.5.2.3  24-Mar-2014  matt Merge satafis changes from HEAD for ahcisata
 1.5.2.2  21-Apr-2010  matt sync to netbsd-5
 1.5.2.1  07-Apr-2010  matt file satafis_subr.c was added on branch matt-nb5-mips64 on 2010-04-21 00:27:34 +0000
 1.7.28.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.7.28.2  19-Apr-2017  jdolecek adjust ata code to support more than one active command, including the
timeout handling, add support for NCQ commands

move probe for NCQ and number of tags to middle layer, negotiate mutual
support between drive and controller

implement NCQ support in ahci(4)
 1.7.28.1  15-Apr-2017  jdolecek make ata_xfer's allocated as part of ata_queue and make it include ata_bio;
they are pre-allocated on attach and ata_get_xfer() now never sleep, drop the
pool

modify wd(4) to file the bio requests using the xfers and hence
make it possible to have more than one active I/O request in flight;
ata_bio callback doesn't need to allocate any memory any more,
require it to never return ATACMD_TRY_AGAIN

move lp, badsect, multi from ata_bio to ata_drive_datas, as they are per-drive,
not per transfer

drop unused drv atac_claim_hw/atac_free_hw hooks, and also drop again ata_bio
c_hwslot
 1.7.2.1  03-Dec-2017  jdolecek update from HEAD
 1.8.10.1  05-Sep-2019  martin Pull up following revision(s) (requested by gson in ticket #179):

sys/dev/ata/satafis_subr.c: revision 1.9

Set the ATAPI "BYTE COUNT LIMIT" field in the SATA case like we
already do in the ATA case, to make NetBSD work with the virtual
SATA CD-ROM of "qemu-system-i386 -machine q35". Fixes PR kern/54389.

OK mlelstv.
 1.8.4.1  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411

RSS XML Feed