summaryrefslogtreecommitdiffstats
path: root/sys/dev/ata/ata-queue.c
Commit message (Collapse)AuthorAgeFilesLines
* Reset timeout when we are back from interrupt.sos2004-12-081-0/+3
|
* Correct logical error, result was that retries wasn't always made butsos2004-12-081-1/+2
| | | | failure reported instead.
* Do not retry on requests that has lost thier device during reinit.sos2004-10-201-8/+5
| | | | | | | Should fix hangs on IBM's etc with the fake slave problem. MFC: asap
* Cosmeticssos2004-10-191-6/+2
|
* Refine locking so it covers the "running" variable as well.sos2004-10-131-68/+71
| | | | Adjust comments etc to fit the new locking system.
* Fix the PC98 lockups on boot.sos2004-10-061-9/+8
| | | | | The interchannel locking for PC98 needed to be updated to match the rest of the locking in ATA.
* Remove the old ATA_*LOCK_CH macros that used atomic ops and usesos2004-09-261-114/+111
| | | | | | | | | | | | | mutexes instead. This closes the last (known) race issues in ATA which should fix the various hangs etc seen on heavy loaded systems. Change from using timeout functions to using callout functions in the timeout code. This together with above closes the race that could happen if timeout and device interrupt occured simultaniously. Also fix the possible recursion in ata_reinit() on very dodgy devices that could take us down in the probe.
* Fix the handling of "inflight" requests when doing reinit's.sos2004-08-271-2/+21
| | | | | | Add missing untimeout that would get lost in handling of some error situations, and caused what looked like random timeouts afterwards when the timeout fired.
* Workaround devices that responds with registers as *both* master & slave,sos2004-08-221-2/+10
| | | | but fail utterly when we try to talk to the "fake" device.
* Improve (hopefully) on the workaround code for devices that doesn'tsos2004-08-161-13/+13
| | | | | interrupt when command is done, ie some ATAPI CD drives with no media loaded.
* Close a race in ata_reinit().sos2004-08-091-3/+0
|
* Try to narrow down the race window on HW that does not have ways tosos2004-08-051-14/+14
| | | | poll for which channel actually pulled the irq line.
* Use the right cmd+errorcode if we are in autosense/not.sos2004-06-011-2/+3
|
* Only set and report error if not set already.sos2004-06-011-1/+1
|
* Spring cleanup of macrossos2004-04-301-1/+1
|
* Add support for the Promise command sequencer present on all modern Promisesos2004-04-131-2/+3
| | | | | | | | | | | | | | | | | controllers (PDC203** PDC206**). This also adds preliminary support for the Promise SX4/SX4000 but *only* as a "normal" Promise ATA controller (ATA RAID's are supported though but only RAID0, RAID1 and RAID0+1). This cuts off yet another 5-8% of the command overhead on promise controllers, making them the fastest we have ever had support for. Work is now continuing to add support for this in ATA RAID, to accellerate ATA RAID quite a bit on these controllers, and especially the SX4/SX4000 series as they have quite a few tricks in there.. This commit also adds a few fixes to the SATA code needed for proper support.
* Add support for detaching PCI controllers.sos2004-03-151-0/+33
| | | | | | This adds support for cardbus ATA/SATA controllers. I get roughly the same transfer speeds as on true PCI controllers. Nice to be able to add a couble of "real" disks to a laptop :)
* If being verbose in the autosense code, print the original error.sos2004-03-021-4/+2
|
* Report the original command on failures that causes auto sense.sos2004-03-021-4/+6
| | | | Keep the ATA_R_QUIET flag if set during autosense.
* Issue a request sense command automagically when ATAPI commands failsos2004-02-281-36/+62
| | | | with a valid sense key.
* Dont use the bio_taskqueue if we are in timeout.sos2004-02-171-2/+2
| | | | | Use taskqueue_thread rather than taskqueue_swi (maybe we should have a taskqueue_ata).
* Commit simple workarounf for the "LiteOn" hang on boot problem.sos2004-02-061-0/+1
| | | | | | This allows the system to boot so I can get the world out of my mailbox and get some work done to figure out what this mess is all about.
* Be more robust in the probe. We dont want to get into a loop withsos2004-01-301-13/+28
| | | | | reinitting when we try to identify devices. If they dont interrupt on identify we retry once. If this fails we simply ignore that device.
* Use the biotask functionality in GEOM to put finished requests onsos2004-01-281-14/+20
| | | | | | | instead of taskqueue_swi. This shaves from 1 to 10% of the overhead. Overhaul the locking once more, there was a few possible races that are now closed.
* Fix breakage on timeout/retries. The bug cause a sema to be leaked sosos2004-01-191-21/+23
| | | | that the calling process would newer wakeup.
* Use UMA instead of plain malloc for getting ATA request storage.sos2004-01-141-27/+6
| | | | | | | This gives +10% performance on simple tests, so definitly worth it. A few percent more could be had by not using M_ZERO'd alloc's, but we then need to clear fields all over the place to be safe, and that was deemed not worth the trouble (and it makes life dangerous).
* Always return ENOMEM if ata_request_alloc fails so GEOM can dtrt.sos2004-01-121-4/+4
|
* Overhaul of the timeout/reinit framework. This should clear up mostsos2004-01-111-90/+154
| | | | | | | | | | | | of the leftovers from the old version that really doesn't work anymore. Add a reset function for host-end of the ATA channel. This is needed for the SiI3112 in order to whack it back to reality if a device locks up the SATA interface (thereby preventing that we can reset the device). The result is that ATA now recovers from the timeouts that happens with the SiI3112A and more or less all disks based on old PATA electronics with a Marvell PATA->SATA converter. This includes lots of the popular SATA dongles and the WDC Raptor disks..
* Fix compilation on 64bit archs.sos2003-12-161-1/+1
|
* Print the LBA on failing R/W commands.sos2003-12-151-5/+7
|
* If just gcc could make up its mind...sos2003-10-201-1/+1
|
* Only announce ECC errors when its only that.sos2003-10-201-2/+2
|
* Reintroduce the "recovered from lost interrupt" code, but in a newsos2003-10-141-6/+7
| | | | | | (hopefully) panic safe way. Why the interrupts are lost is still a mystery, to me at least.
* Avoid potential race on ATA_R_DONE.sos2003-10-121-2/+3
|
* Improve timeout handling and reporting.sos2003-10-071-6/+22
|
* Always check the sensekey field on ATAPI returnssos2003-09-191-1/+4
| | | | Add INQUIRY to cmd2str.
* Properly handle error code returns from the lower levels ATAPI code.sos2003-09-181-14/+14
|
* Make sure to call start when retrying.sos2003-08-281-1/+2
|
* Unify prototypes.sos2003-08-251-3/+3
| | | | Cosmetics.
* Use __FBSDID().obrien2003-08-241-2/+3
| | | | Also some minor style cleanups.
* This is a major rework of the ATA driver (ATAng)sos2003-08-241-0/+471
Restructure the way ATA/ATAPI commands are processed, use a common ata_request structure for both. This centralises the way requests are handled so locking is much easier to handle. The driver is now layered much more cleanly to seperate the lowlevel HW access so it can be tailored to specific controllers without touching the upper layers. This is needed to support some of the newer semi-intelligent ATA controllers showing up. The top level drivers (disk, ATAPI devices) are more or less still the same with just corrections to use the new interface. Pull ATA out from under Gaint now that locking can be done in a sane way. Add support for a the National Geode SC1100. Thanks to Soekris engineering for sponsoring a Soekris 4801 to make this support. Fixed alot of small bugs in the chipset code for various chips now we are around in that corner anyways.
OpenPOWER on IntegriCloud