#
54521a6f |
|
30-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
cam: Remove prototype for cam_sim_alloc_dev The implementation was removed in dcd5dea96509, but the prototype was not. Correct that oversight. Fixes: dcd5dea96509 Sponsored by: Netflix
|
#
95ee2897 |
|
16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: two-line .h pattern Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/
|
#
7af2f2c8 |
|
24-Jul-2023 |
Warner Losh <imp@FreeBSD.org> |
cam: Migrate to modern uintXX_t from u_intXX_t As per https://lists.freebsd.org/archives/freebsd-scsi/2023-July/000257.html move to the modern uintXX_t. MFC After: 3 days Sponsored by: Netflix
|
#
4d846d26 |
|
10-May-2023 |
Warner Losh <imp@FreeBSD.org> |
spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD The SPDX folks have obsoleted the BSD-2-Clause-FreeBSD identifier. Catch up to that fact and revert to their recommended match of BSD-2-Clause. Discussed with: pfg MFC After: 3 days Sponsored by: Netflix
|
#
9f0febd6 |
|
28-Jun-2021 |
Warner Losh <imp@FreeBSD.org> |
cam_sim: remove unused sim_doneq member Its use was removed in 227d67aa54 by mav when locking was revamped. Reviewed by: scottl@, mav@ Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D30890
|
#
dcd5dea9 |
|
28-Jun-2021 |
Warner Losh <imp@FreeBSD.org> |
cam: delete cam_sim_alloc_dev cam_sim_alloc_dev was only used internally by the MMC system. That has been convered to using xpt_path_device() and has stopped using this interface, so this can be retired. Reviewed by: scottl@, mav@ Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D30858
|
#
6c481342 |
|
25-May-2021 |
Warner Losh <imp@FreeBSD.org> |
cam: Remove CAM_SIM_LOCK/UNLOCK macros, they are unused. Sponsored by: Netflix Reviewed by: mav@ Differential Revision: https://reviews.freebsd.org/D30384
|
#
28027f28 |
|
25-May-2021 |
Warner Losh <imp@FreeBSD.org> |
cam: remove sim callout Nothing is using the sim callout to unfreeze the queue. Remove it to simplify the SIM. This was introduced in the original CAM commit in 1998 but setting the CAM_SIM_REL_TIMEOUT_PENDING flag was removed in 1999 in commit 87cfaf0e1fbd which reworked how bus reset worked. That work was merged just after 3.2R was released. Remove the unused residuals. Sponsored by: Netflix Reviewed by: scottl@, mav@ Differential Revision: https://reviews.freebsd.org/D30383
|
#
447b3557 |
|
11-Feb-2021 |
John Baldwin <jhb@FreeBSD.org> |
cam: Permit non-pollable sims. Some CAM sim drivers do not support polling (notably iscsi(4)). Rather than using a no-op poll routine that always times out requests, permit a SIM to set a NULL poll callback. cam_periph_runccb() will fail polled requests non-pollable sims immediately as if they had timed out. Reviewed by: scottl, mav (earlier version) Reviewed by: imp MFC after: 2 weeks Sponsored by: Chelsio Differential Revision: https://reviews.freebsd.org/D28453
|
#
2ce5eef6 |
|
03-Jan-2021 |
Mark Johnston <markj@FreeBSD.org> |
cam: Remove Giant handling from cam_sim_alloc() There are no non-MPSAFE SIM drivers left in the tree, verified with coccinelle. Reviewed by: scottl, imp Differential Revision: https://reviews.freebsd.org/D27853
|
#
27dcd3d9 |
|
01-Sep-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
cam: clean up empty lines in .c and .h files
|
#
e6db0f04 |
|
11-Mar-2020 |
Warner Losh <imp@FreeBSD.org> |
Remove redundantly repetitive static __inline forward function declarations. We typically don't use them elsewhere in the kernel, and they aren't needed here: the actual functions are a few lines away and aren't mutually recursive.
|
#
0b4da9c8 |
|
09-Jan-2020 |
Warner Losh <imp@FreeBSD.org> |
Const-poison the cam_sim_* convenience accessor functions. These don't modify the cam_sim, so make that parameter const.
|
#
6e40542a |
|
08-Jun-2019 |
Bjoern A. Zeeb <bz@FreeBSD.org> |
Introduce sim_dev and cam_sim_alloc_dev(). Add cam_sim_alloc_dev() as a wrapper to cam_sim_alloc() which takes a device_t instead of the unit_number (which we can derive from the dev again). Add device_t sim_dev to struct cam_sim. It will be used to pass through the bus for cases when both sides of CAM speak newbus already and we want to link them (yet make the calls through CAM for now). SDIO will be the first consumer of this. For that make use of cam_sim_alloc_dev() in sdhci under MMCCAM. This will also allow people to start iterating more on the idea to newbus-ify CAM without changing 50+ device drivers from the start. Also to be clear there are callers to cam_sim_alloc() which do not have a device_t (e.g., XPT) or provide their own unit number so we cannot simply switch the KPI entirely. Submitted by: kibab (original idea, see https://reviews.freebsd.org/D12467) Reviewed by: imp, chuck MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D19746
|
#
bec9534d |
|
27-Nov-2017 |
Pedro F. Giffuni <pfg@FreeBSD.org> |
sys/cam: further adoption of SPDX licensing ID tags. Mainly focus on files that use BSD 2-Clause license, however the tool I was using misidentified many licenses so this was mostly a manual - error prone - task. The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts.
|
#
227d67aa |
|
20-Oct-2013 |
Alexander Motin <mav@FreeBSD.org> |
Merge CAM locking changes from the projects/camlock branch to radically reduce lock congestion and improve SMP scalability of the SCSI/ATA stack, preparing the ground for the coming next GEOM direct dispatch support. Replace big per-SIM locks with bunch of smaller ones: - per-LUN locks to protect device and peripheral drivers state; - per-target locks to protect list of LUNs on target; - per-bus locks to protect reference counting; - per-send queue locks to protect queue of CCBs to be sent; - per-done queue locks to protect queue of completed CCBs; - remaining per-SIM locks now protect only HBA driver internals. While holding LUN lock it is allowed (while not recommended for performance reasons) to take SIM lock. The opposite acquisition order is forbidden. All the other locks are leaf locks, that can be taken anywhere, but should not be cascaded. Many functions, such as: xpt_action(), xpt_done(), xpt_async(), xpt_create_path(), etc. are no longer require (but allow) SIM lock to be held. To keep compatibility and solve cases where SIM lock can't be dropped, all xpt_async() calls in addition to xpt_done() calls are queued to completion threads for async processing in clean environment without SIM lock held. Instead of single CAM SWI thread, used for commands completion processing before, use multiple (depending on number of CPUs) threads. Load balanced between them using "hash" of the device B:T:L address. HBA drivers that can drop SIM lock during completion processing and have sufficient number of completion threads to efficiently scale to multiple CPUs can use new function xpt_done_direct() to avoid extra context switch. Make ahci(4) driver to use this mechanism depending on hardware setup. Sponsored by: iXsystems, Inc. MFC after: 2 months
|
#
4b387081 |
|
07-Apr-2013 |
Alexander Motin <mav@FreeBSD.org> |
Remove extra semicolons from CAM_SIM_[UN]LOCK() macros.
|
#
711f6613 |
|
12-May-2012 |
Alexander Motin <mav@FreeBSD.org> |
Add two functions xpt_batch_start() and xpt_batch_done() to the CAM SIM KPI 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
|
#
4a612489 |
|
17-Nov-2011 |
Alexander Motin <mav@FreeBSD.org> |
Introduce CAM_SIM_POLLED SIM flag, indicating that it works in polling mode. It blocks CAM SWI usage on requests completion, unneeded because of polling and denied during kernel dumping because of blocked scheduler. Before r198899 there was periph flag CAM_PERIPH_POLLED, but that was wrong, because there is whole SIM is polled or handled by SWI, not a single periph. Tested by: kib MFC after: 1 month
|
#
a7d5f7eb |
|
19-Oct-2010 |
Jamie Gritton <jamie@FreeBSD.org> |
A new jail(8) with a configuration file, to replace the work currently done by /etc/rc.d/jail.
|
#
d13994ce |
|
22-Dec-2008 |
Scott Long <scottl@FreeBSD.org> |
Fix a comment to reflect what really happens.
|
#
fa6099fd |
|
16-Dec-2008 |
Edward Tomasz Napierala <trasz@FreeBSD.org> |
Add SIM refcounting. This is slightly different from what DragonFly does - in DragonFly, it's cam_sim_release() what actually frees the SIM; cam_sim_free does nothing more than calling cam_sim_release(). Here, we drain in cam_sim_free, waiting for refcount to drop to zero. We cannot do the same think DragonFly does, because after cam_sim_free returns, client would destroy the sim->mtx, and CAM would trip over an initialized mutex. Reviewed by: scottl Approved by: rwatson (mentor) Sponsored by: FreeBSD Foundation
|
#
d7f03759 |
|
19-Oct-2008 |
Ulf Lilleengen <lulf@FreeBSD.org> |
- Import the HEAD csup code which is the basis for the cvsmode work.
|
#
9758cc83 |
|
19-Apr-2007 |
Scott Long <scottl@FreeBSD.org> |
Split the camisr into per-SIM done queues. This optimizes the locking a little bit and allows for direct dispatch of the doneq from certain contexts that would otherwise face recursive locking problems.
|
#
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 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.
|
#
898b0535 |
|
05-Jan-2005 |
Warner Losh <imp@FreeBSD.org> |
Start each of the license/copyright comments with /*-
|
#
e2138fee |
|
23-Jan-2001 |
John Baldwin <jhb@FreeBSD.org> |
Const'ify cam_sim.sim_name to quiet warnings. Reviewed by: -scsi
|
#
c4473420 |
|
28-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 consistant with the other BSD's who made this change quite some time ago. More commits to come.
|
#
c3aac50f |
|
27-Aug-1999 |
Peter Wemm <peter@FreeBSD.org> |
$Id$ -> $FreeBSD$
|
#
9deea857 |
|
06-May-1999 |
Kenneth D. Merry <ken@FreeBSD.org> |
Add a number of interrelated CAM feature enhancements and bug fixes. NOTE: These changes will require recompilation of any userland applications, like cdrecord, xmcd, etc., that use the CAM passthrough interface. A make world is recommended. camcontrol.[c8]: - We now support two new commands, "tags" and "negotiate". - The tags commands allows users to view the number of tagged openings for a device as well as a number of other related parameters, and it allows users to set tagged openings for a device. - The negotiate command allows users to enable and disable disconnection and tagged queueing, set sync rates, offsets and bus width. Note that not all of those features are available for all controllers. Only the adv, ahc, and ncr drivers fully support all of the features at this point. Some cards do not allow the setting of sync rates, offsets and the like, and some of the drivers don't have any facilities to do so. Some drivers, like the adw driver, only support enabling or disabling sync negotiation, but do not support setting sync rates. - new description in the camcontrol man page of how to format a disk - cleanup of the camcontrol inquiry command - add support in the 'devlist' command for skipping unconfigured devices if -v was not specified on the command line. - make use of the new base_transfer_speed in the path inquiry CCB. - fix CCB bzero cases cam_xpt.c, cam_sim.[ch], cam_ccb.h: - new flags on many CCB function codes to designate whether they're non-immediate, use a user-supplied CCB, and can only be passed from userland programs via the xpt device. Use these flags in the transport layer and pass driver to categorize CCBs. - new flag in the transport layer device matching code for device nodes that indicates whether a device is unconfigured - bump the CAM version from 0x10 to 0x11 - Change the CAM ioctls to use the version as their group code, so we can force users to recompile code even when the CCB size doesn't change. - add + fill in a new value in the path inquiry CCB, base_transfer_speed. Remove a corresponding field from the cam_sim structure, and add code to every SIM to set this field to the proper value. - Fix the set transfer settings code in the transport layer. scsi_cd.c: - make some variables volatile instead of just casting them in various places - fix a race condition in the changer code - attach unless we get a "logical unit not supported" error. This should fix all of the cases where people have devices that return weird errors when they don't have media in the drive. scsi_da.c: - attach unless we get a "logical unit not supported" error scsi_pass.c: - for immediate CCBs, just malloc a CCB to send the user request in. This gets rid of the 'held' count problem in camcontrol tags. scsi_pass.h: - change the CAM ioctls to use the CAM version as their group code. adv driver: - Allow changing the sync rate and offset separately. adw driver - Allow changing the sync rate and offset separately. aha driver: - Don't return CAM_REQ_CMP for SET_TRAN_SETTINGS CCBs. ahc driver: - Allow setting offset and sync rate separately bt driver: - Don't return CAM_REQ_CMP for SET_TRAN_SETTINGS CCBs. NCR driver: - Fix the ultra/ultra 2 negotiation bug - allow setting both the sync rate and offset separately Other HBA drivers: - Put code in to set the base_transfer_speed field for XPT_GET_TRAN_SETTINGS CCBs. Reviewed by: gibbs, mjacob (isp), imp (aha)
|
#
8b8a9b1d |
|
15-Sep-1998 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
CAM Transport Layer (XPT). Submitted by: The CAM Team
|