History log of /src/sys/dev/ic/mvsatavar.h |
Revision | | Date | Author | Comments |
1.5 |
| 22-Oct-2018 |
jdolecek | Merge jdolecek-ncqfixes branch
- ata_xfer's are dynamicall allocated as needed using a pool, no longer limited to number of possible openings supported by controller; dump and recovery paths use dedicated pre-allocated storage - moved callouts and condvars from ata_xfer to queue or channel, so that ata_xfer does not need special initialization - slot allocation now done when xfer is being activated, uncoupled from memory allocation; active slots are no longer tracked by controller code - channel and drive reset is done always via the atabus thread, and now executes with channel locked the whole time - NCQ recovery moved to shared function, and run via the thread also - added some workarounds for buggy error recovery AHCI emulation in QEMU and Parallels
designed to primarily fix kern/52614, but might also help with kern/47041 and kern/53183
|
1.4 |
| 31-Aug-2018 |
jdolecek | branches: 1.4.2; constify mvsata_pci_products[]
|
1.3 |
| 07-Oct-2017 |
jdolecek | branches: 1.3.2; 1.3.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.2 |
| 13-Jul-2010 |
kiyohara | branches: 1.2.18; 1.2.48; Move to pci/mvsata_pci.c (marvell/mvsata_mv.c) splitting mvsata_products[]. mvsata(4) uses these to match.
|
1.1 |
| 27-Jul-2009 |
kiyohara | branches: 1.1.2; 1.1.4; 1.1.6; Support Marvell Hercules-I/II SATA Controllers.
|
1.1.6.1 |
| 05-Mar-2011 |
rmind | sync with head
|
1.1.4.1 |
| 17-Aug-2010 |
uebayasi | Sync with HEAD.
|
1.1.2.3 |
| 11-Aug-2010 |
yamt | sync with head.
|
1.1.2.2 |
| 19-Aug-2009 |
yamt | sync with head.
|
1.1.2.1 |
| 27-Jul-2009 |
yamt | file mvsatavar.h was added on branch yamt-nfs-mp on 2009-08-19 18:47:07 +0000
|
1.2.48.4 |
| 12-Aug-2017 |
jdolecek | add NCQ error recovery for mvsata(4)
fix wait flags for mvsata_bio_start(), AT_* constants are only valid for cmd
change the debug logging to similar form as ahcisata/siisata, so it's easier to selectively show
|
1.2.48.3 |
| 01-Aug-2017 |
jdolecek | fix logic bug in processing of finished commands - mask of active commands can change during the loop as c_intr() callback can queue new commands, so the interrupt routine should only mark as finished those which were actually active before the loop started; otherwise the code marked as finished commands which were just started, and being executed by HBA, leading to all sorts of data corruption
while here mark the active mask volatile, as it is modified from interrupt context
this fixes for good the random crashes, short reads, and fatal command errors which I've been tracing down for past couple weeks
thanks to Jonathan (jakllsch@) for testing, and a script to easily triggered the condition, and led to this bug being finally found and squashed
|
1.2.48.2 |
| 24-Jun-2017 |
jdolecek | fix dump on mvsata - there was misplaced mvsata_bio_intr() call causing diagnostic panic, and we also need to switch controller to appropriate DMA mode (NCQ vs. non-NCQ DMA)
while here, also reduce delay for the polled command wait to 100 us, same as siisata(4) and ahcisata(4)
|
1.2.48.1 |
| 09-Jun-2017 |
jdolecek | fix the driver to work again - switch to using tag from xfer, adjust to framework changes (queue dynamically allocated), and do not store pointer to xfer inside internal structures
unhide the ATAPI code and fix to compile, keep it disabled however
no indended functional changes, logic kept as close as possible to what was there before; tested with Adaptec 1430SA (88SX7042)
|
1.2.18.1 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
1.3.4.1 |
| 10-Jun-2019 |
christos | Sync with HEAD
|
1.3.2.2 |
| 26-Nov-2018 |
pgoyette | Sync with HEAD, resolve a couple of conflicts
|
1.3.2.1 |
| 06-Sep-2018 |
pgoyette | Sync with HEAD
Resolve a couple of conflicts (result of the uimin/uimax changes)
|
1.4.2.1 |
| 11-Oct-2018 |
jdolecek | refactor shared parts of the SATA error recovery into new function ata_recovery_resume() and use for ahcisata/siisata/mvsata, also replace per-controller hold/unhold with generic version
move the shared recovery code into separate file ata_recovery.c
|