| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Return PROTO_ATA protocol in response to XPT_PATH_INQ.
smartmontools uses it to identify ATA devices and I don't know any other
place now where it is important. It could probably use XPT_GDEV_TYPE
instead for more accurate protocol information, but let it live for now.
Reported by: matthew
MFC after: 3 days
Notes:
svn path=/head/; revision=236847
|
|
|
|
|
|
|
|
|
|
| |
until transport will do some probe actions (at least soft reset).
Make ATA/SATA SIMs to not report bogus and confusing PROTO_ATA protocol.
Make ATA/SATA transport to fill that gap by reporting protocol to SIM with
XPT_SET_TRAN_SETTINGS and patching XPT_GET_TRAN_SETTINGS results if needed.
Notes:
svn path=/head/; revision=236666
|
|
|
|
|
|
|
|
|
|
|
|
| |
to allow drivers to handle request completion directly without passing
them to the CAM SWI thread removing extra context switch.
Modify all ATA/SATA drivers to use them.
Reviewed by: gibbs, ken
MFC after: 2 weeks
Notes:
svn path=/head/; revision=235333
|
|
|
|
|
|
|
|
| |
Suggested by: jhb @ and marius @
MFC after: 1 week
Notes:
svn path=/head/; revision=227849
|
|
|
|
|
|
|
|
|
|
|
| |
to kern/subr_bus.c. Simplify this function so that it no longer
depends on malloc() to execute. Identify a few other places where
it makes sense to use device_delete_all_children().
MFC after: 1 week
Notes:
svn path=/head/; revision=227701
|
|
|
|
|
|
|
| |
This means that their use is restricted to a single C file.
Notes:
svn path=/head/; revision=227293
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(SEMB) is unable to communicate to Storage Enclosure Processor (SEP), in
response to hard and soft resets it should among other things return value
0x7F in Status register. The weird side is that it means DRQ bit set, which
tells that reset request is not completed. It would be fine if SEMB was the
only device on port. But if SEMB connected to PMP or built into it, it may
block access to other devices sharing same SATA port.
Make some tunings/fixes to soft-reset handling to workaround the issue:
- ahci(4): request CLO on the port after soft reset to ignore DRQ bit;
- siis(4): gracefully reinitialize port after soft reset timeout (hardware
doesn't detect reset request completion in this case);
- mvs(4): if PMP is used, send dummy soft-reset to the PMP port to make it
clear DRQ bit for us.
For now this makes quirks in ata_pmp.c, hiding SEMB ports of SiI3726/SiI4726
PMPs, less important. Further, if hardware permit, I hope to implement real
SEMB support.
Notes:
svn path=/head/; revision=222285
|
|
|
|
| |
Notes:
svn path=/head/; revision=220830
|
|
|
|
|
|
|
|
| |
in no more then 10ms. If we detected no device presence within that time,
there is no reason to wait longer.
Notes:
svn path=/head/; revision=220829
|
|
|
|
| |
Notes:
svn path=/head/; revision=220822
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- make SATA SIMs announce capabilities to handle SDB with Notification bit;
- make PMP driver honor this SIMs capability;
- make SATA XPT to negotiate and enable this feature for ATAPI devices.
This feature allows supporting SATA ATAPI devices to inform system about
some events happened, that may require attention. In my case this allows
LG GH22LS50 SATA DVR-RW drive to report tray open/close events. Events
reported to CAM in form of AC_SCSI_AEN async. Further they could be used
as a hints for checking device status and reporting media change to upper
layers, for example, via spoiling mechanism of GEOM.
Notes:
svn path=/head/; revision=220602
|
|
|
|
|
|
|
|
|
|
| |
controller port readiness (that should set just after PHY ready signal),
reduce wait time from 10s to 1s before trying more aggressive reset method.
This should improve system responsibility in some failure conditions.
Notes:
svn path=/head/; revision=220591
|
|
|
|
|
|
|
|
| |
Fix device freeze leak on recovery request (READ LOG, REQUEST SENSE)
failure.
Notes:
svn path=/head/; revision=220566
|
|
|
|
| |
Notes:
svn path=/head/; revision=217883
|
|
|
|
|
|
|
| |
Expose that functionality to led(4) OR-ing it with regular LED activity.
Notes:
svn path=/head/; revision=217877
|
|
|
|
|
|
|
| |
I/O length on underruns, that often happens for some SCSI commands.
Notes:
svn path=/head/; revision=214988
|
|
|
|
| |
Notes:
svn path=/head/; revision=214325
|
|
|
|
|
|
|
|
|
|
| |
port multiplier some command triggers false positive timeout, but then
completes normally.
MFC after: 2 weeks
Notes:
svn path=/head/; revision=212732
|
|
|
|
|
|
|
|
| |
GEOM. This information needed for proper soft-RAID's on-disk metadata
reading and writing.
Notes:
svn path=/head/; revision=210471
|
|
|
|
|
|
|
|
| |
Found with: Coverity Prevent(tm)
CID: 4196
Notes:
svn path=/head/; revision=208817
|
|
|
|
|
|
|
|
| |
Found with: Coverity Prevent(tm)
CID: 3477
Notes:
svn path=/head/; revision=208816
|
|
|
|
| |
Notes:
svn path=/head/; revision=208414
|
|
|
|
| |
Notes:
svn path=/head/; revision=208410
|
|
|
|
|
|
|
| |
and reset it on resume.
Notes:
svn path=/head/; revision=208393
|
|
|
|
|
|
|
|
|
|
| |
- device initiated power management (some devices support only this way);
- Automatic Partial to Slumber Transition (more power saving);
- DMA auto-activation (expected to slightly improve performance).
More features could be added later, when hardware supports.
Notes:
svn path=/head/; revision=207499
|
|
|
|
| |
Notes:
svn path=/head/; revision=207431
|
|
|
|
|
|
|
|
|
| |
Now SiI3124 with siis(4) successfully works on sparc64 (SunBlade 100).
H/W donated by: Gheorghe Ardelean
Notes:
svn path=/head/; revision=206652
|
|
|
|
| |
Notes:
svn path=/head/; revision=205358
|
|
|
|
|
|
|
|
| |
After last running command completed, give commands in timeout state
second time.
Notes:
svn path=/head/; revision=203870
|
|
|
|
| |
Notes:
svn path=/head/; revision=203529
|
|
|
|
|
|
|
|
| |
- Make ATA XPT to reject longer SCSI CDBs then supported by device, or
any SCSI CDBs, if device doesn't support ATAPI.
Notes:
svn path=/head/; revision=203376
|
|
|
|
| |
Notes:
svn path=/head/; revision=203165
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Unify bus reset/probe sequence. Whenever bus attached at boot or later,
CAM will automatically reset and scan it. It allows to remove duplicate
code from many drivers.
- Any bus, attached before CAM completed it's boot-time initialization,
will equally join to the process, delaying boot if needed.
- New kern.cam.boot_delay loader tunable should help controllers that
are still unable to register their buses in time (such as slow USB/
PCCard/ CardBus devices), by adding one more event to wait on boot.
- To allow synchronization between different CAM levels, concept of
requests priorities was extended. Priorities now split between several
"run levels". Device can be freezed at specified level, allowing higher
priority requests to pass. For example, no payload requests allowed,
until PMP driver enable port. ATA XPT negotiate transfer parameters,
periph driver configure caching and so on.
- Frozen requests are no more counted by request allocation scheduler.
It fixes deadlocks, when frozen low priority payload requests occupying
slots, required by higher levels to manage theit execution.
- Two last changes were holding proper ATA reinitialization and error
recovery implementation. Now it is done: SATA controllers and Port
Multipliers now implement automatic hot-plug and should correctly
recover from timeouts and bus resets.
- Improve SCSI error recovery for devices on buses without automatic sense
reporting, such as ATAPI or USB. For example, it allows CAM to wait, while
CD drive loads disk, instead of immediately return error status.
- Decapitalize diagnostic messages and make them more readable and sensible.
- Teach PMP driver to limit maximum speed on fan-out ports.
- Make boot wait for PMP scan completes, and make rescan more reliable.
- Fix pass driver, to return CCB to user level in case of error.
- Increase number of retries in cd driver, as device may return several UAs.
Notes:
svn path=/head/; revision=203108
|
|
|
|
|
|
|
|
|
| |
get required command protocol. But they have no idea about new commands,
such as DATA SET MANAGEMENT (TRIM). As soon as this info any way provided
by CAM, give controller specific instructions.
Notes:
svn path=/head/; revision=201222
|
|
|
|
|
|
|
| |
It gives those beasts additional 10% of write bandwidth.
Notes:
svn path=/head/; revision=200291
|
|
|
|
|
|
|
|
|
| |
It makes MSI working there. Later (and cheaper) PCIe chips (3132/3531)
still randomly crashing system in few seconds of high MSI rates, generating
something inaporopriate, like NMI or "Fatal trap 30".
Notes:
svn path=/head/; revision=200223
|
|
|
|
|
|
|
| |
there without it as good as possible.
Notes:
svn path=/head/; revision=200217
|
|
|
|
|
|
|
| |
Improve ATA mode/SATA revision control.
Notes:
svn path=/head/; revision=199821
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Extend XPT-SIM transfer settings control API. Now it allows to report to
SATA SIM number of tags supported by each device, implement ATA mode and
SATA revision negotiation for both SATA and PATA SIMs.
- Make ahci(4) and siis(4) to use submitted maximum tag number, when
scheduling requests. It allows to support NCQ on devices with lower tags
count then controller supports.
- Make PMP driver to report attached devices connection speeds.
- Implement ATA mode negotiation between user settings, device and
controller capabilities.
Notes:
svn path=/head/; revision=199747
|
|
|
|
|
|
|
| |
and works fine in practice.
Notes:
svn path=/head/; revision=199333
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Move tagged queueing control from ADA to ATA XPT. It allows to control
device command queue length correctly. First step to support < 32 tags.
- Limit queue for non-tagged devices by 2 slots for ahci(4) and siis(4).
- Implement quirk matching for ATA devices.
- Move xpt_schedule_dev_sendq() from header to source file.
- Move delayed queue shrinking to the more expected place - element freeing.
- Remove some SCSIsms in ATA.
Notes:
svn path=/head/; revision=199178
|
|
|
|
|
|
|
| |
Organize device IDs and add some more of them.
Notes:
svn path=/head/; revision=199132
|
|
|
|
|
|
|
|
| |
algorithm as done in ahci(4). This saves some CPU time on high request
rates.
Notes:
svn path=/head/; revision=198896
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Rework timeout handling, to make it more graceful for devices sharing
controller port (with PMP). Wait for other commands completion/timeout
before initiating recovery.
- Handle timeouts and fatal errors with port hard-reset. The rest of
recovery will be done by XPT on receiving async event. More gracefull
per-device soft-reset recovery can be implemented later.
Notes:
svn path=/head/; revision=198852
|
|
|
|
| |
Notes:
svn path=/head/; revision=198426
|
|
|
|
|
|
|
|
| |
Report real max_target = 15. SIM doesn't need to know that target 15 is PMP.
It is XPT business.
Notes:
svn path=/head/; revision=198322
|
|
|
|
|
|
|
| |
Freeze device queue on error to permit periph driver to do proper recovery.
Notes:
svn path=/head/; revision=198321
|
|
|
|
|
|
|
|
|
| |
XXX_end_transaction().
Submitted by: avg
Notes:
svn path=/head/; revision=197838
|
|
|
|
|
|
|
|
| |
- Add SNTF support.
- Do not report meaningless transport/protocol versions.
Notes:
svn path=/head/; revision=196655
|
|
Driver supports Serial ATA and ATAPI devices, Port Multipliers
(including FIS-based switching), hardware command queues (31 command
per port) and Native Command Queuing. This is probably the second on
popularity, after AHCI, type of SATA2 controllers, that benefits from
using CAM, because of hardware command queuing support.
Approved by: re (kib)
Notes:
svn path=/head/; revision=195801
|