#
24ebf566 |
| 19-Dec-2008 |
Edward Tomasz Napierala <trasz@FreeBSD.org> |
Periph driver fixes, second try.
Reviewed by: scottl Approved by: rwatson (mentor) Sponsored by: FreeBSD Foundation
|
Revision tags: release/6.4.0_cvs, release/6.4.0, release/7.0.0_cvs, release/7.0.0, release/6.3.0_cvs, release/6.3.0 |
|
#
11e4face |
| 20-Apr-2007 |
Scott Long <scottl@FreeBSD.org> |
Inline cam_periph_lock|unlock to make debugging easier. Use more CAM_SIM_LOCK() more uniformly.
|
#
2b83592f |
| 15-Apr-2007 |
Scott Long <scottl@FreeBSD.org> |
Remove Giant from CAM. Drivers (SIMs) now register a mutex that CAM will use to synchornize and protect all data objects that are used for that SIM. Drivers that are not yet MPSAFE register Giant a
Remove Giant from CAM. Drivers (SIMs) now register a mutex that CAM will use to synchornize and protect all data objects that are used for that SIM. Drivers that are not yet MPSAFE register Giant and operate as usual. RIght now, no drivers are MPSAFE, though a few will be changed in the coming week as this work settles down.
The driver API has changed, so all CAM drivers will need to be recompiled. The userland API has not changed, so tools like camcontrol do not need to be recompiled.
show more ...
|
Revision tags: release/6.2.0_cvs, release/6.2.0, release/5.5.0_cvs, release/5.5.0, release/6.1.0_cvs, release/6.1.0, release/6.0.0_cvs, release/6.0.0, release/5.4.0_cvs, release/5.4.0, release/4.11.0_cvs, release/4.11.0 |
|
#
898b0535 |
| 05-Jan-2005 |
Warner Losh <imp@FreeBSD.org> |
Start each of the license/copyright comments with /*-
|
Revision tags: release/5.3.0_cvs, release/5.3.0 |
|
#
2e8f0ae6 |
| 05-Oct-2004 |
Scott Long <scottl@FreeBSD.org> |
Remove the camnet swi and CAM_PERIPH_NET. It has never been used, and given that netowrk-over-scsi never really took off, there is little chance that it will ever be needed.
|
#
3e019dea |
| 15-Jul-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Do a pass over all modules in the kernel and make them return EOPNOTSUPP for unknown events.
A number of modules return EINVAL in this instance, and I have left those alone for now and instead taugh
Do a pass over all modules in the kernel and make them return EOPNOTSUPP for unknown events.
A number of modules return EINVAL in this instance, and I have left those alone for now and instead taught MOD_QUIESCE to accept this as "didn't do anything".
show more ...
|
Revision tags: release/4.10.0_cvs, release/4.10.0, release/5.2.1_cvs, release/5.2.1, release/5.2.0_cvs, release/5.2.0, release/4.9.0_cvs, release/4.9.0, release/5.1.0_cvs, release/5.1.0, release/4.8.0_cvs, release/4.8.0 |
|
#
60794e04 |
| 08-Mar-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Centralize the devstat handling for all GEOM disk device drivers in geom_disk.c.
As a side effect this makes a lot of #include <sys/devicestat.h> lines not needed and some biofinish() calls can be r
Centralize the devstat handling for all GEOM disk device drivers in geom_disk.c.
As a side effect this makes a lot of #include <sys/devicestat.h> lines not needed and some biofinish() calls can be reduced to biodone() again.
show more ...
|
Revision tags: release/5.0.0_cvs, release/5.0.0, release/4.7.0_cvs, release/4.6.2_cvs, release/4.6.2, release/4.6.1, release/4.6.0_cvs, release/4.5.0_cvs, release/4.4.0_cvs, release/4.3.0_cvs, release/4.3.0 |
|
#
0b7c27b9 |
| 07-Feb-2001 |
Peter Wemm <peter@FreeBSD.org> |
Change the peripheral driver list from a linker set to module driven driver registration. This should allow things like da, sa, cd etc to be in seperate KLD's to the cam core and make them preloadab
Change the peripheral driver list from a linker set to module driven driver registration. This should allow things like da, sa, cd etc to be in seperate KLD's to the cam core and make them preloadable.
show more ...
|
Revision tags: release/4.2.0, release/4.1.1_cvs, release/4.1.0, release/3.5.0_cvs |
|
#
e3975643 |
| 26-May-2000 |
Jake Burkholder <jake@FreeBSD.org> |
Back out the previous change to the queue(3) interface. It was not discussed and should probably not happen.
Requested by: msmith and others
|
#
740a1973 |
| 23-May-2000 |
Jake Burkholder <jake@FreeBSD.org> |
Change the way that the queue(3) structures are declared; don't assume that the type argument to *_HEAD and *_ENTRY is a struct.
Suggested by: phk Reviewed by: phk Approved by: mdodd
|
#
9a1c8571 |
| 07-May-2000 |
Nick Hibma <n_hibma@FreeBSD.org> |
*sigh* I must have been on something that night. Make xpt_periph an extern with the original in cam_xpt.c instead of replicating xpt_periph in all the sources using it (and hence not initialising it)
|
#
540d9130 |
| 03-Apr-2000 |
Nick Hibma <n_hibma@FreeBSD.org> |
Add a hack to cam that makes the cam_xpt available to the rest of the kernel. Justin agress that there is no other reasonable alternative to do automatic rescans on connect.
The problem is that when
Add a hack to cam that makes the cam_xpt available to the rest of the kernel. Justin agress that there is no other reasonable alternative to do automatic rescans on connect.
The problem is that when a new device attaches to a SIM (SCSI host controller) we need to send a XPT_SCAN_BUS command to the SIM using xpt_action. This requires however that there is a peripheral available to take the command (otherwise xpt_done and later bomb). The RESCAN ioctl uses the same periph.
This enables a USB mass storage drive to do an automatic rescan on connection of the drive.
The automatic dropping of a CAM entry on disconnection was already working (asynchronous event).
The next thing to do is find someone to commit a change to vpo to do the same thing. Just port umass_cam_rescan and friends across to that driver.
Approved by: gibbs
show more ...
|
Revision tags: release/4.0.0_cvs |
|
#
0cdabce0 |
| 15-Mar-2000 |
Nick Hibma <n_hibma@FreeBSD.org> |
Various typo's.
One minor nit. The speed was displayed wrong when below 1Mb/s.
|
#
c4473420 |
| 29-Dec-1999 |
Peter Wemm <peter@FreeBSD.org> |
Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" is an application space macro and the applications are supposed to be free to use it as they please (but cannot). This is cons
Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" is an application space macro and the applications are supposed to be free to use it as they please (but cannot). This is consistant with the other BSD's who made this change quite some time ago. More commits to come.
show more ...
|
Revision tags: release/3.4.0_cvs, release/3.3.0_cvs |
|
#
c3aac50f |
| 28-Aug-1999 |
Peter Wemm <peter@FreeBSD.org> |
$Id$ -> $FreeBSD$
|
Revision tags: release/3.2.0 |
|
#
87cfaf0e |
| 22-May-1999 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
Add the XPT_PATH_STATS and XPT_GDEV_STATS function codes. These ccb types allow the reporting of error counts and other statistics. Currently we provide information on the last BDR or bus reset as
Add the XPT_PATH_STATS and XPT_GDEV_STATS function codes. These ccb types allow the reporting of error counts and other statistics. Currently we provide information on the last BDR or bus reset as well as active transaction inforamtion, but this will be expanded as more information is added to aid in error recovery.
Use the 'last reset' information to better handle bus settle delays. Peripheral drivers now control whether a bus settle delay occurs and for how long. This allows target mode peripheral drivers to avoid having their device queue frozen by the XPT for what shoudl only be initiator type behavior.
Don't perform a bus reset if the target device is incapable of performing transfer negotiation (e.g. Fiber Channel).
If we don't perform a bus reset but the controller is capable of transfer negotiations, force negotiations on the first transaction to go to the device. This ensures that we aren't tripped up by a left over negotiation from the prom, BIOS, loader, etc.
Add a default async handler funstion to cam_periph.c to remove duplicated code in all initiator type peripheral drivers.
Allow mapping of XPT_CONT_TARGET_IO ccbs from userland. They are itentical to XPT_SCSI_IO ccbs as far as data mapping is concerned.
show more ...
|
Revision tags: release/3.1.0, release/3.0.0, release/2.2.8 |
|
#
ee9c90c7 |
| 23-Oct-1998 |
Kenneth D. Merry <ken@FreeBSD.org> |
Fix a problem with the way we handled device invalidation when attaching to a device failed.
In theory, the same steps that happen when we get an AC_LOST_DEVICE async notification should have been t
Fix a problem with the way we handled device invalidation when attaching to a device failed.
In theory, the same steps that happen when we get an AC_LOST_DEVICE async notification should have been taken when a driver fails to attach. In practice, that wasn't the case.
This only affected the da, cd and ch drivers, but the fix affects all peripheral drivers.
There were several possible problems: - In the da driver, we didn't remove the peripheral's softc from the da driver's linked list of softcs. Once the peripheral and softc got removed, we'd get a kernel panic the next time the timeout routine called dasendorderedtag(). - In the da, cd and possibly ch drivers, we didn't remove the peripheral's devstat structure from the devstat queue. Once the peripheral and softc were removed, this could cause a panic if anyone tried to access device statistics. (one component of the linked list wouldn't exist anymore) - In the cd driver, we didn't take the peripheral off the changer run queue if it was scheduled to run. In practice, it's highly unlikely, and maybe impossible that the peripheral would have been on the changer run queue at that stage of the probe process.
The fix is: - Add a new peripheral callback function (the "oninvalidate" function) that is called the first time cam_periph_invalidate() is called for a peripheral.
- Create new foooninvalidate() routines for each peripheral driver. This routine is always called at splsoftcam(), and contains all the stuff that used to be in the AC_LOST_DEVICE case of the async callback handler.
- Move the devstat cleanup call to the destructor/cleanup routines, since some of the drivers do I/O in their close routines.
- Make sure that when we're flushing the buffer queue, we traverse it at splbio().
- Add a check for the invalid flag in the pt driver's open routine.
Reviewed by: gibbs
show more ...
|
#
60a899a0 |
| 13-Oct-1998 |
Kenneth D. Merry <ken@FreeBSD.org> |
Fix a bug in the error recovery code. It was possible to have more than one error recovery action oustanding for a given peripheral.
This is bad for several reasons. The first problem is that the
Fix a bug in the error recovery code. It was possible to have more than one error recovery action oustanding for a given peripheral.
This is bad for several reasons. The first problem is that the error recovery actions would likely be to fix the same problem. (e.g., we queue 5 CCBs to a disk, and the first one comes back with 0x04,0x02. We start error recovery, and the second one comes back with the same status. Then the third one comes back, and so on. Each one causes the drive to get nailed with a start unit, when we really only need one.)
The other problem is that we only have space to store one CCB while we're doing error recovery. The subsequent error recovery actions that got started were over-writing the CCBs from previous error recovery actions, but we still tried to call the done routine N times for N error recovery actions. Each call to dadone() was done with the same CCB, though. So on the second one, we got a "biodone: buffer not busy" panic, since the buffer in question had already been through biodone().
In any case, this fixes things so that any any given time, there's only one error recovery action outstanding for any given peripheral driver.
Reviewed by: gibbs Reported by: Philippe Regnauld <regnauld@deepo.prosa.dk> [ Philippe wins the "bug finder of the week" award ]
show more ...
|
#
8b8a9b1d |
| 15-Sep-1998 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
CAM Transport Layer (XPT).
Submitted by: The CAM Team
|
#
83c5d981 |
| 28-Jan-2010 |
Alexander Motin <mav@FreeBSD.org> |
MFp4: Large set of CAM inprovements.
- 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
MFp4: Large set of CAM inprovements.
- 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.
show more ...
|
#
9199c09a |
| 06-Jan-2010 |
Warner Losh <imp@FreeBSD.org> |
Merge from head at r201628.
# This hasn't been tested, and there are at least three bad commits # that need to be backed out before the branch will be stable again.
|
#
21cc8587 |
| 06-Dec-2009 |
Alexander Motin <mav@FreeBSD.org> |
MFp4: If we panicked with SIM lock held, do not try to flush caches. Extra lock recursing will not make debugging easier.
|
#
874108ae |
| 12-Nov-2009 |
Oleksandr Tymoshenko <gonzo@FreeBSD.org> |
MFC @199204
|
#
efa575b6 |
| 04-Nov-2009 |
Alexander Motin <mav@FreeBSD.org> |
MFp4: - 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 yea
MFp4: - 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.
show more ...
|
#
1e637ba6 |
| 31-Oct-2009 |
Alexander Motin <mav@FreeBSD.org> |
MFp4: - 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
MFp4: - 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.
show more ...
|