History log of /src/sys/dev/ata/satafis_subr.c |
Revision | | Date | Author | Comments |
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
|