| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
failure reported instead.
|
|
|
|
|
|
|
| |
Should fix hangs on IBM's etc with the fake slave problem.
MFC:
asap
|
| |
|
|
|
|
| |
Adjust comments etc to fit the new locking system.
|
|
|
|
|
| |
The interchannel locking for PC98 needed to be updated to match the
rest of the locking in ATA.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
but fail utterly when we try to talk to the "fake" device.
|
|
|
|
|
| |
interrupt when command is done, ie some ATAPI CD drives with no
media loaded.
|
| |
|
|
|
|
| |
poll for which channel actually pulled the irq line.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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 :)
|
| |
|
|
|
|
| |
Keep the ATA_R_QUIET flag if set during autosense.
|
|
|
|
| |
with a valid sense key.
|
|
|
|
|
| |
Use taskqueue_thread rather than taskqueue_swi (maybe we should have
a taskqueue_ata).
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
reinitting when we try to identify devices. If they dont interrupt
on identify we retry once. If this fails we simply ignore that device.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
that the calling process would newer wakeup.
|
|
|
|
|
|
|
| |
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).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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..
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
(hopefully) panic safe way.
Why the interrupts are lost is still a mystery, to me at least.
|
| |
|
| |
|
|
|
|
| |
Add INQUIRY to cmd2str.
|
| |
|
| |
|
|
|
|
| |
Cosmetics.
|
|
|
|
| |
Also some minor style cleanups.
|
|
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.
|