History log of /dragonfly/sys/bus/cam/cam_periph.c (Results 1 – 25 of 61)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: v6.2.1, v6.2.0, v6.3.0, v6.0.1, v6.0.0, v6.0.0rc1, v6.1.0, v5.8.3, v5.8.2, v5.8.1, v5.8.0, v5.9.0, v5.8.0rc1, v5.6.3, v5.6.2, v5.6.1, v5.6.0, v5.6.0rc1, v5.7.0, v5.4.3, v5.4.2
# aec00d32 05-Apr-2019 Matthew Dillon <dillon@apollo.backplane.com>

kernel - quiet repeated DA/CD probes for removable devices

* Don't print errors when repeated probes for cards in sdcard
readers fail, beyond the first instance.

* Fixes console spam when usb car

kernel - quiet repeated DA/CD probes for removable devices

* Don't print errors when repeated probes for cards in sdcard
readers fail, beyond the first instance.

* Fixes console spam when usb card readers are plugged in.

show more ...


# cec957e9 04-Mar-2019 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Change callout in struct ccb_hdr

* Change the callout declaration in struct ccb_hdr from an embedded
structure to a pointer, add padding to get the whole structure to its
original size

kernel - Change callout in struct ccb_hdr

* Change the callout declaration in struct ccb_hdr from an embedded
structure to a pointer, add padding to get the whole structure to its
original size (prior to the recent callout patch).

* This removes an improper ABI dependency on the kernel struct callout
structure which was causing 'camcontrol', and 'smartctl' (from
smartmontools) to fail.

Testing: dillon, tuxillo

show more ...


# fcf6efef 02-Mar-2019 Sascha Wildner <saw@online.de>

kernel: Remove numerous #include <sys/thread2.h>.

Most of them were added when we converted spl*() calls to
crit_enter()/crit_exit(), almost 14 years ago. We can now
remove a good chunk of them agai

kernel: Remove numerous #include <sys/thread2.h>.

Most of them were added when we converted spl*() calls to
crit_enter()/crit_exit(), almost 14 years ago. We can now
remove a good chunk of them again for where crit_*() are
no longer used.

I had to adjust some files that were relying on thread2.h
or headers that it includes coming in via other headers
that it was removed from.

show more ...


Revision tags: v5.4.1, v5.4.0, v5.5.0, v5.4.0rc1, v5.2.2, v5.2.1, v5.2.0, v5.3.0, v5.2.0rc
# a9f09b75 04-Feb-2018 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Fix CAM peripheral error handling

* cam_periph.c was bcopy()ing the *ENTIRE* saved ccb back to the
original when working through certain error results. This completely
destroys linked

kernel - Fix CAM peripheral error handling

* cam_periph.c was bcopy()ing the *ENTIRE* saved ccb back to the
original when working through certain error results. This completely
destroys linked list entry fields.

* Refactor by hacking a restore_ccb() function which does not copy
over the link list entry fields or the callout structure.

* Fixes panics with CDs, particularly audio CDs, and can also fix
other panics.

Panics are related to situations where an AHCI error or errors occur
while multiple CCBs are queued.

* Also always initialize the state tracking field for various scsi
periphals to ensure that stale data does not result in improper
processing in scsi/*.c's *done() functions.

Reported-by: htse

show more ...


Revision tags: v5.0.2
# 4a2f1c82 02-Dec-2017 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Fix CAM unit allocation race

* Fix an issue where multiple targets can sometimes allocate the
same unit when probed asynchronously. The search and insertion
functions were being indepe

kernel - Fix CAM unit allocation race

* Fix an issue where multiple targets can sometimes allocate the
same unit when probed asynchronously. The search and insertion
functions were being independently locked.

show more ...


Revision tags: v5.0.1, v5.0.0, v5.0.0rc2
# 8158299a 30-Sep-2017 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Remove B_MALLOC

* Remove B_MALLOC buffer support. All primary buffer cache buffer
operations should now use pages. B_VMIO is required for all
vnode-centric operations like allocbuf(),

kernel - Remove B_MALLOC

* Remove B_MALLOC buffer support. All primary buffer cache buffer
operations should now use pages. B_VMIO is required for all
vnode-centric operations like allocbuf(), but does not have to be set
for nominal I/O.

* Remove vm_hold_load_pages() and vm_hold_free_pages(). This code was
used to support mapping ad-hoc data buffers into buf structures, but
the only remaining use case in the CAM periph code can just use
getpbuf_mem() instead. So this code is no longer used.

show more ...


Revision tags: v5.1.0, v5.0.0rc1, v4.8.1, v4.8.0, v4.6.2, v4.9.0, v4.8.0rc
# 2bf3efbc 22-Feb-2017 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Add missing bus lock to CAM

* cam_periph_alloc() was missing a bus lock / unlock sequence around
a list operation.


# 1647c7bd 16-Feb-2017 Sascha Wildner <saw@online.de>

kernel: Fix the type of 'cmd' in various ioctl functions (int -> u_long).

These were all found by clang's -Wswitch option.


# 43931787 27-Jan-2017 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Remove direct mapping of user buffers to CAM

* Remove direct mappings, always bounce. Nothing uses this code any
more and vmapbuf/vunmapbuf are about to go away, so just bounce.


Revision tags: v4.6.1, v4.6.0, v4.6.0rc2, v4.6.0rc, v4.7.0, v4.4.3, v4.4.2, v4.4.1, v4.4.0, v4.5.0, v4.4.0rc, v4.2.4, v4.3.1, v4.2.3, v4.2.1, v4.2.0, v4.0.6, v4.3.0, v4.2.0rc, v4.0.5, v4.0.4, v4.0.3
# f86988f7 14-Jan-2015 Sepherosa Ziehau <sephe@dragonflybsd.org>

cam: Disable verbose "Unretryable error" log for probe pseudo device.

Discussed-with: swildner@


Revision tags: v4.0.2, v4.0.1, v4.0.0, v4.0.0rc3, v4.0.0rc2, v4.0.0rc, v4.1.0, v3.8.2, v3.8.1, v3.6.3, v3.8.0, v3.8.0rc2, v3.9.0, v3.8.0rc, v3.6.2, v3.6.1, v3.6.0, v3.7.1, v3.6.0rc, v3.7.0, v3.4.3, v3.4.2, v3.4.0, v3.4.1, v3.4.0rc, v3.5.0
# 30a6375a 05-Jan-2013 François Tigeot <ftigeot@wolfpond.org>

kernel: Sync resource_string_value() with FreeBSD


Revision tags: v3.2.2, v3.2.1, v3.2.0, v3.3.0, v3.0.3
# d83666e0 22-Mar-2012 François Tigeot <ftigeot@wolfpond.org>

Kernel - Completely remove DFLTPHYS

* There is no need to have two different macros define the maximum
allowed IO size for low-level operations; replace DFLTPHYS by
MAXPHYS in the entire kernel.

Kernel - Completely remove DFLTPHYS

* There is no need to have two different macros define the maximum
allowed IO size for low-level operations; replace DFLTPHYS by
MAXPHYS in the entire kernel.

* Old drivers typically used DFLTPHYS without a second thought,
assuming it would always be the same value; they may have hard
limitations and break if bigger I/O sizes are suddenly used.
Be sure to explicitely limit their maximum allowed I/O size to
64KB and keep them working.

show more ...


Revision tags: v3.0.2, v3.0.1, v3.1.0, v3.0.0
# 86d7f5d3 26-Nov-2011 John Marino <draco@marino.st>

Initial import of binutils 2.22 on the new vendor branch

Future versions of binutils will also reside on this branch rather
than continuing to create new binutils branches for each new version.


Revision tags: v2.12.0, v2.13.0, v2.10.1, v2.11.0, v2.10.0, v2.9.1, v2.8.2, v2.8.1, v2.8.0, v2.9.0, v2.6.3, v2.7.3, v2.6.2, v2.7.2, v2.7.1, v2.6.1, v2.7.0, v2.6.0, v2.5.1, v2.4.1
# f627566b 30-Sep-2009 Matthew Dillon <dillon@apollo.backplane.com>

CAM - Fix missing SIM lock in cam_periph_release()

* When releasing the last reference on a CAM peripheral which has been
marked invalid, the peripheral is then freed. Freeing the peripheral
re

CAM - Fix missing SIM lock in cam_periph_release()

* When releasing the last reference on a CAM peripheral which has been
marked invalid, the peripheral is then freed. Freeing the peripheral
requires the SIM lock.

Go through necessary tribulations to acquire the SIM lock. The lock order
is important (SIM lock first, XPT lock second), and the SIM lock may or
may not already be held by the thread.

* The bug could cause a crash after burning a CD as the CD becomes invalid
after the burn completes in order to reload its state.

show more ...


Revision tags: v2.5.0, v2.4.0, v2.3.2
# c6a64e8b 25-Jun-2009 Matthew Dillon <dillon@apollo.backplane.com>

CAM - Auto unit number start based on device

If no SCSI devices are wired CAM now automatically starts any umass sim
attachments at unit #8 instead of unit #0. This reduces interference
between usb

CAM - Auto unit number start based on device

If no SCSI devices are wired CAM now automatically starts any umass sim
attachments at unit #8 instead of unit #0. This reduces interference
between usb mass storage attachments and ahci/sili attachments. Otherwise
the usb mass storage can steal "da0" away from ahci/sili.

show more ...


Revision tags: v2.3.1, v2.2.1, v2.2.0, v2.3.0
# 969f6a6d 16-Jan-2009 Matthew Dillon <dillon@apollo.backplane.com>

Add code similar to what was done in physio to use a bounce buffer
if user data supplied to the CAM pass-throug device is not 16-byte aligned.
The user data was previously unconditionally vmapbuf()'d

Add code similar to what was done in physio to use a bounce buffer
if user data supplied to the CAM pass-throug device is not 16-byte aligned.
The user data was previously unconditionally vmapbuf()'d and the unaligned
pointer passed through to the device layer, causing NATA to barf badly on
SATA devices.

This fixes numerous dvd burning issues on SATA-based DVD burners.

Reported-by: Hasso Tepper <hasso@estpak.ee>

show more ...


Revision tags: v2.1.1, v2.0.1
# 2d19cdd3 18-Jul-2008 Matthew Dillon <dillon@dragonflybsd.org>

Fix multiple bugs in CAM related devices which go away unexpectedly. This
fixes numerous panics when pulling a USB mass media device in the midst of
heavy I/O.

* The SIM lock was being unlocked via

Fix multiple bugs in CAM related devices which go away unexpectedly. This
fixes numerous panics when pulling a USB mass media device in the midst of
heavy I/O.

* The SIM lock was being unlocked via the periph->sim path after periph
was unheld. periph can become free and blow up the unlock, so get
the sim into a local variable first, then release periph.

* The code which waits for CCB completion needs to be a while loop, not
an if. It worked anyway, but wasn't very robust.

* Add CAM_SIM_DEREGISTERED to flag when a sim is undergoing deregistration.

* Beef up cam_dead_sim so it works more like a real sim.

* Properly install &cam_dead_sim in the device and periph structures
related to a SCSI bus, when deregistering the bus.

* Disallow the addition of new devices when deregistering a bus.

* NULL out periph->softc when freeing it.

show more ...


# 1c8b7a9a 18-May-2008 Peter Avalos <pavalos@dragonflybsd.org>

Sync CAM with FreeBSD using lockmgr locks instead of mutexes.
Note: This is mostly a code sync with FreeBSD which improves stability
in addition to the items listed below. This provides a framework

Sync CAM with FreeBSD using lockmgr locks instead of mutexes.
Note: This is mostly a code sync with FreeBSD which improves stability
in addition to the items listed below. This provides a framework for
releasing the mplock, but for now it's still there.

Add an xpt_print function to reduce most of the xpt_print_path/printf
pairs. Convert the core code to use it.

Initial cut at Basic Domain Validation.

Make cam_xpt's pronouncements match camcontrol (Tagged -> Command) Queueing.

Pay attention to return value from xpt_bus_register in xpt_init.

Add an xpt_rescan function and a thread that will field rescan requests.
The purpose of this is to allow a SIM (or other entities) to request a bus
rescan and have it then fielded in a different (process) context from the
caller.

Check the return value from cam_periph_acquire.

Drop the periph/sim lock when calling disk_destroy().

Drop the topology lock before calling the periph oninvalidate and dtor
vectors.

For the XPT_SASYNC_CB operation, only decouple the broadcast to the bus
and device lists instead of decoupling the whole operation. This avoids
problems with SIMs going away.

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.

Zero the CCBs when mallocing them.

Only schedule the xpt_finishconfig_task once.

Eliminate the use of M_TEMP.

Add a helper function for registering async callbacks.

Release the bus reference that is acquired when doing a CAMIOCOMMAND ioctl.

Zero scsi_readcapacity allocations so we can really tell if there has
been data returned.

Remove duplicate includes and fix typos.

Add a bunch of definitions and structures to support newer drivers.

When probing a newly found device, don't automatically assume that the
device supports retrieving a serial number. Instead, first query the
list of VPD pages it does support, and only query the serial number if
it's supported, else silently move on. This eliminates a lot of noise
during verbose booting, and will likely eliminate the need for most
NOSERIAL quirks.

Reduce diffs from FreeBSD.

Obtained-from: FreeBSD

show more ...


# ebf745a7 02-Dec-2007 Peter Avalos <pavalos@dragonflybsd.org>

Put a bit of hysteresis into both BUSY SCSI status returns
and CAM_RESRC_UNAVAIL returns. Delay a tunable amount for
either between retries.

This came up because the MPT IOC was returning "IOC out o

Put a bit of hysteresis into both BUSY SCSI status returns
and CAM_RESRC_UNAVAIL returns. Delay a tunable amount for
either between retries.

This came up because the MPT IOC was returning "IOC out of
resources" for some FreeBSD users and this caused a CAM_RESRC_UNAVAIL
return. Putting a bit of delay between retries helped them
out.

Obtained-from: FreeBSD

show more ...


# baa93599 01-Dec-2007 Peter Avalos <pavalos@dragonflybsd.org>

There should be no need to retry when the CCB status code is
CAM_LUN_INVALID or CAM_TID_INVALID.

This avoids crashes in camisr() when umass devices are
unplugged during probing.

Obtained-from: Free

There should be no need to retry when the CCB status code is
CAM_LUN_INVALID or CAM_TID_INVALID.

This avoids crashes in camisr() when umass devices are
unplugged during probing.

Obtained-from: FreeBSD

show more ...


# bc6e3c73 01-Dec-2007 Peter Avalos <pavalos@dragonflybsd.org>

Fine-grained malloc statistics - replace some M_DEVBUF with module-specific
types.

Obtained-from: FreeBSD


# 1495c68b 28-Nov-2007 Peter Avalos <pavalos@dragonflybsd.org>

Fix typo in comment.

Obtained-from: FreeBSD


# dfd7c4a6 26-Nov-2007 Peter Avalos <pavalos@dragonflybsd.org>

Don't be so chatty when performing manual sense.

Obtained-from: FreeBSD


# 7a367ab7 26-Nov-2007 Peter Avalos <pavalos@dragonflybsd.org>

In camperiphdone(), make sure we check for fatal errors and bail out
instead of retrying them blindly.

Obtained-from: FreeBSD


# a3429859 26-Nov-2007 Peter Avalos <pavalos@dragonflybsd.org>

(camperiphdone): When the cam_periph layer performs sense recovery,
completion of recovery is indicated by positioning the CAM_AUTOSNS_VALID
bit in the status field of the CCB, not in the flags fie

(camperiphdone): When the cam_periph layer performs sense recovery,
completion of recovery is indicated by positioning the CAM_AUTOSNS_VALID
bit in the status field of the CCB, not in the flags field.
This fixes an endless loop of sense recovery actions.

Obtained-from: FreeBSD

show more ...


123