| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
better devices. This can be disabled on a per-device basis using quirks as
well.
This also handles the case where there is actually no connected LUN 0
(which can definitely be the case for storage arrays).
Reviewed by: scsi@
MFC after: 1 month
Notes:
svn path=/head/; revision=208911
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
for REPORT and SET TARGET PORT GROUP commands (foundations for future work).
Regularize opcodes to be upper case hex.
Pick *one* of tab or space after #define (tab) and stick with that.
MFC after: 2 weeks
Notes:
svn path=/head/; revision=208905
|
|
|
|
|
|
|
|
|
| |
Pointy Hat To: Me
MFC after: 2 Week
X-MFC: 208896
Notes:
svn path=/head/; revision=208900
|
|
|
|
|
|
|
| |
for a da unit and create a sysctl OID for it.
Notes:
svn path=/head/; revision=208896
|
|
|
|
|
|
|
|
|
| |
Found with: Coverity Prevent(tm)
CID: 2986
MFC after: 4 days
Notes:
svn path=/head/; revision=208800
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
whole bus (XPT_SCAN_BUS) and a single lun on that bus (XPT_SCAN_LUN).
It's less resource comsumptive than scanning a whole bus when the
caller knows only one target has changes.
Reviewed by: scsi@
Sponsored by: Panasas
MFC after: 1 month
Notes:
svn path=/head/; revision=208582
|
|
|
|
|
|
|
|
|
|
| |
reason.
Reviewed by: mav
MFC after: 3 days
Notes:
svn path=/head/; revision=208348
|
|
|
|
|
|
|
|
|
|
|
| |
previously submitted was wrong.
Point hat: mjacob
X-MFC: 207933
MFC after: 1 week
Notes:
svn path=/head/; revision=207938
|
|
|
|
|
|
|
|
|
|
| |
solution.
Sponsored by: Panasas
MFC after: 1 week
Notes:
svn path=/head/; revision=207933
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
d_mediasize
CD_FLAG_VALID_TOC is not required for setting those media properties.
PR: kern/145385
Submitted by: Juergen Lock <nox@jelal.kn-bremen.de>
a slightly different version
Tested by: Pavel Sukhoy <sukhoy@ripn.net>,
Markus Wild <m.wild@cybernet.ch>,
Juergen Lock <nox@jelal.kn-bremen.de>,
uqs
MFC after: 1 week
Notes:
svn path=/head/; revision=206648
|
|
|
|
|
|
|
| |
race conditions in callbacks/downcalls.
Notes:
svn path=/head/; revision=206112
|
|
|
|
|
|
|
| |
MFC after: 1 week
Notes:
svn path=/head/; revision=206029
|
|
|
|
|
|
|
| |
MFC after: 1 month
Notes:
svn path=/head/; revision=205252
|
|
|
|
| |
Notes:
svn path=/head/; revision=204220
|
|
|
|
| |
Notes:
svn path=/head/; revision=203931
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
|
|
| |
Submitted by: Marc Balmer <marc@msys.ch>
MFC after: 1 week
Notes:
svn path=/head/; revision=201758
|
|
|
|
|
|
|
| |
from geom_disk. Dulicate call causes wrong queue depth and busy accounting.
Notes:
svn path=/head/; revision=200668
|
|
|
|
|
|
|
| |
Many SIMs doesn't fill maxio field yet.
Notes:
svn path=/head/; revision=200295
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce ATA_CAM kernel option, turning ata(4) controller drivers into
cam(4) interface modules. When enabled, this options deprecates all ata(4)
peripheral drivers (ad, acd, ...) and interfaces and allows cam(4) drivers
(ada, cd, ...) and interfaces to be natively used instead.
As side effect of this, ata(4) mode setting code was completely rewritten
to make controller API more strict and permit above change. While doing
this, SATA revision was separated from PATA mode. It allows DMA-incapable
SATA devices to operate and makes hw.ata.atapi_dma tunable work again.
Also allow ata(4) controller drivers (except some specific or broken ones)
to handle larger data transfers. Previous constraint of 64K was artificial
and is not really required by PCI ATA BM specification or hardware.
Submitted by: nwitehorn (powerpc part)
Notes:
svn path=/head/; revision=200171
|
|
|
|
|
|
|
| |
Submitted by: Jaakko Heinonen
Notes:
svn path=/head/; revision=200036
|
|
|
|
|
|
|
| |
Fix several device freeze counting bugs.
Notes:
svn path=/head/; revision=199279
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Remove CAM_PERIPH_POLLED flag. It is broken by design. Polling can't be
periph flag. May be SIM, may be CCB, but now it works fine just without it.
- Remove check unused for at least five years. If we will ever have non-BIO
devices in CAM, this check is smallest of what we will need.
- If several controllers complete requests same time, call swi_sched()
only once.
Notes:
svn path=/head/; revision=198899
|
|
|
|
|
|
|
|
| |
disk is first probed. dagetcapacity is called whenever the disk is opened from
geom via d_open(), a zero sector size will cause geom to panic later on.
Notes:
svn path=/head/; revision=198832
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix reference counting bug, when device unreferenced before then
invalidated. To do it, do not handle validity flag as another
reference, but explicitly modify reference count each time flag is
modified.
Discovered by: thompsa
Notes:
svn path=/head/; revision=198748
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Reduce code duplication in ATA XPT and PMP driver.
- Move PIO size setting from ada driver to ATA XPT. It is XPT business
to negotiate transfer details. ada driver is now stateless.
- Report PIO size to SIM. It is required for correct PATA SIM operation.
- Tune PMP scan timings. It workarounds some problems with SiI.
- If reset hapens during PMP initialization - restart it.
- Introduce early-initialized periph drivers, which are used during initial
scan process. Use it for xpt, probe, aprobe and pmp. It gives pmp chance
to finish scan before mountroot and numerate devices in right order.
Notes:
svn path=/head/; revision=198708
|
|
|
|
| |
Notes:
svn path=/head/; revision=198382
|
|
|
|
| |
Notes:
svn path=/head/; revision=198381
|
|
|
|
|
|
|
|
|
|
| |
PR: 138376
Submitted by: Patroklos Argyroudis <argp@census-labs.com>
Reviewed by: scottl
MFC after: 1 week
Notes:
svn path=/head/; revision=198356
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
allocations M_NOWAIT so that we don't try and sleep with a nested non-sleepable
lock.
This makes the userland scsi_target begin to function again.
Obtained from: Sean Bruno
MFC after: 1 month
Notes:
svn path=/head/; revision=197332
|
|
|
|
|
|
|
|
|
| |
Obtained from: Mac OS X
Sponsored by: Apple Inc.
MFC after: 3 weeks
Notes:
svn path=/head/; revision=197134
|
|
|
|
|
|
|
| |
Submitted by: phk
Notes:
svn path=/head/; revision=196983
|
|
|
|
|
|
|
| |
know better than to commit with a cat in the area.
Notes:
svn path=/head/; revision=196970
|
|
|
|
| |
Notes:
svn path=/head/; revision=196969
|
|
|
|
|
|
|
|
| |
No objections from: scottl
Obtained from: Wheel Sp. z o.o. (http://www.wheel.pl)
Notes:
svn path=/head/; revision=196824
|
|
|
|
|
|
|
|
|
|
|
|
| |
to attach without these quirks applied.
PR: usb/137035
URL: http://lists.freebsd.org/pipermail/freebsd-current/2009-August/010852.html
Reported by: Henri Hennebert <hlh@restart.be>, Andrey V. Elsukov <bu7cher@yandex.ru>
MFC after: 1 week
Notes:
svn path=/head/; revision=196568
|
|
|
|
|
|
|
|
|
| |
in comments and printfs to match new function names after refacoring.
Approved by: re
Notes:
svn path=/head/; revision=195688
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
page_list using the matching malloc type for the allocation.
Approved by: re
Reviewed by: scottl [1]
MFC after: 1 week
[1] Original patch was against xpt_cam.c, prior to the cam refactoring.
Notes:
svn path=/head/; revision=195685
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
modularize it so that new transports can be created.
Add a transport for SATA
Add a periph+protocol layer for ATA
Add a driver for AHCI-compliant hardware.
Add a maxio field to CAM so that drivers can advertise their max
I/O capability. Modify various drivers so that they are insulated
from the value of MAXPHYS.
The new ATA/SATA code supports AHCI-compliant hardware, and will override
the classic ATA driver if it is loaded as a module at boot time or compiled
into the kernel. The stack now support NCQ (tagged queueing) for increased
performance on modern SATA drives. It also supports port multipliers.
ATA drives are accessed via 'ada' device nodes. ATAPI drives are
accessed via 'cd' device nodes. They can all be enumerated and manipulated
via camcontrol, just like SCSI drives. SCSI commands are not translated to
their ATA equivalents; ATA native commands are used throughout the entire
stack, including camcontrol. See the camcontrol manpage for further
details. Testing this code may require that you update your fstab, and
possibly modify your BIOS to enable AHCI functionality, if available.
This code is very experimental at the moment. The userland ABI/API has
changed, so applications will need to be recompiled. It may change
further in the near future. The 'ada' device name may also change as
more infrastructure is completed in this project. The goal is to
eventually put all CAM busses and devices until newbus, allowing for
interesting topology and management options.
Few functional changes will be seen with existing SCSI/SAS/FC drivers,
though the userland ABI has still changed. In the future, transports
specific modules for SAS and FC may appear in order to better support
the topologies and capabilities of these technologies.
The modularization of CAM and the addition of the ATA/SATA modules is
meant to break CAM out of the mold of being specific to SCSI, letting it
grow to be a framework for arbitrary transports and protocols. It also
allows drivers to be written to support discrete hardware without
jeopardizing the stability of non-related hardware. While only an AHCI
driver is provided now, a Silicon Image driver is also in the works.
Drivers for ICH1-4, ICH5-6, PIIX, classic IDE, and any other hardware
is possible and encouraged. Help with new transports is also encouraged.
Submitted by: scottl, mav
Approved by: re
Notes:
svn path=/head/; revision=195534
|
|
|
|
|
|
|
|
|
|
|
| |
Note that this does not actually enable full-range i/o requests for
64 architectures, and is done now to update KBI only.
Tested by: pho
Reviewed by: jhb, bde (as part of the review of the bigger patch)
Notes:
svn path=/head/; revision=194990
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
vnode interlock to protect the knote fields [1]. The locking assumes
that shared vnode lock is held, thus we get exclusive access to knote
either by exclusive vnode lock protection, or by shared vnode lock +
vnode interlock.
Do not use kl_locked() method to assert either lock ownership or the
fact that curthread does not own the lock. For shared locks, ownership
is not recorded, e.g. VOP_ISLOCKED can return LK_SHARED for the shared
lock not owned by curthread, causing false positives in kqueue subsystem
assertions about knlist lock.
Remove kl_locked method from knlist lock vector, and add two separate
assertion methods kl_assert_locked and kl_assert_unlocked, that are
supposed to use proper asserts. Change knlist_init accordingly.
Add convenience function knlist_init_mtx to reduce number of arguments
for typical knlist initialization.
Submitted by: jhb [1]
Noted by: jhb [2]
Reviewed by: jhb
Tested by: rnoland
Notes:
svn path=/head/; revision=193951
|
|
|
|
|
|
|
|
| |
Found with: Coverity Prevent(tm)
CID: 3667
Notes:
svn path=/head/; revision=192019
|
|
|
|
|
|
|
|
|
| |
Found with: Coverity Prevent(tm)
CID: 3936, 3937
Reviewed by: scottl@
Notes:
svn path=/head/; revision=192015
|
|
|
|
|
|
|
|
|
| |
The device index number stored in the unit number of sa(4) devices is
only used to print debug messages. Get rid of this index number and use
devtoname() to just print the entire device name.
Notes:
svn path=/head/; revision=191304
|
|
|
|
| |
Notes:
svn path=/head/; revision=191243
|
|
|
|
|
|
|
|
|
|
| |
freed while the periph lock is not held. While here, wait until after
freeing the softc before reacquiring the periph lock.
Tested by: sbruno
Notes:
svn path=/head/; revision=188503
|
|
|
|
|
|
|
| |
Submitted by: rdivacky
Notes:
svn path=/head/; revision=188458
|
|
|
|
|
|
|
|
|
| |
Submitted by: Christoph Mallon christoph.mallon@gmx.de
Reviewed by: kib (as part of a larger patch)
MFC after: 2 weeks
Notes:
svn path=/head/; revision=187957
|
|
|
|
|
|
|
|
|
|
|
| |
Reviewed by: scottl
Approved by: rwatson (mentor)
Sponsored by: FreeBSD Foundation
Found with: Coverity Prevent(tm)
CID: 2908
Notes:
svn path=/head/; revision=187651
|