#
df424515 |
| 14-Jul-2017 |
Warner Losh <imp@FreeBSD.org> |
This adds CAM pass(4) support for NVMe IO's. Applications indicate the IO type (Admin or NVM) using XPT op-codes XPT_NVME_ADMIN or XPT_NVME_IO.
Submitted by: Chuck Tuffli <chuck@tuffli.net> Differ
This adds CAM pass(4) support for NVMe IO's. Applications indicate the IO type (Admin or NVM) using XPT op-codes XPT_NVME_ADMIN or XPT_NVME_IO.
Submitted by: Chuck Tuffli <chuck@tuffli.net> Differential Revision: https://reviews.freebsd.org/D10247
show more ...
|
#
d2043ca3 |
| 14-Jul-2017 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r320573 through r320970.
|
#
a94a63f0 |
| 09-Jul-2017 |
Warner Losh <imp@FreeBSD.org> |
An MMC/SD/SDIO stack using CAM
Implement the MMC/SD/SDIO protocol within a CAM framework. CAM's flexible queueing will make it easier to write non-storage drivers than the legacy stack. SDIO drivers
An MMC/SD/SDIO stack using CAM
Implement the MMC/SD/SDIO protocol within a CAM framework. CAM's flexible queueing will make it easier to write non-storage drivers than the legacy stack. SDIO drivers from both the kernel and as userland daemons are possible, though much of that functionality will come later.
Some of the CAM integration isn't complete (there are sleeps in the device probe state machine, for example), but those minor issues can be improved in-tree more easily than out of tree and shouldn't gate progress on other fronts. Appologies to reviews if specific items have been overlooked.
Submitted by: Ilya Bakulin Reviewed by: emaste, imp, mav, adrian, ian Differential Review: https://reviews.freebsd.org/D4761
merge with first commit, various compile hacks.
show more ...
|
#
f6e653bb |
| 02-Jul-2017 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r320398 through r320572.
|
#
59fe7664 |
| 27-Jun-2017 |
Kenneth D. Merry <ken@FreeBSD.org> |
Fix a panic in camperiphfree().
If a peripheral driver (e.g. da, sa, cd) is added or removed from the peripheral driver list while an unrelated peripheral driver instance (e.g. da0, sa5, cd2) is goi
Fix a panic in camperiphfree().
If a peripheral driver (e.g. da, sa, cd) is added or removed from the peripheral driver list while an unrelated peripheral driver instance (e.g. da0, sa5, cd2) is going away and is inside camperiphfree(), we could dereference an invalid pointer.
When peripheral drivers are added or removed (see periphdriver_register() and periphdriver_unregister()), the peripheral driver array is resized and existing entries are moved.
Although we hold the topology lock while we traverse the peripheral driver list, we retain a pointer to the location of the peripheral driver pointer and then drop the topology lock. So we are still vulnerable to the list getting moved around while the lock is dropped.
To solve the problem, cache a copy of the peripheral driver pointer. If its storage location in the list changes while we have the lock dropped, it won't have any effect.
This doesn't solve the issue that peripheral drivers ("da", "cd", as opposed to individual instances like "da0", "cd0") are not generally part of a reference counting scheme to guard against deregistering them while there are instances active. The caller (generally the person unloading a module) has to be aware of active drivers and not unload something that is in use.
sys/cam/cam_periph.c: In camperiphfree(), cache a pointer to the peripheral driver instance to avoid holding a pointer to an invalid memory location in the event that the peripheral driver list changes while we have the topology lock dropped.
PR: kern/219701 Submitted by: avg MFC after: 3 days Sponsored by: Spectra Logic
show more ...
|
#
be27b311 |
| 04-May-2017 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r317503 through r317807.
|
#
da0d7209 |
| 03-May-2017 |
Scott Long <scottl@FreeBSD.org> |
Fix an unsafe malloc usage with sbufs.
Reported by: ken Sponsored by: Netflix
|
#
554491ff |
| 20-Apr-2017 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r316992 through r317215.
|
#
5d01277f |
| 19-Apr-2017 |
Scott Long <scottl@FreeBSD.org> |
Add infrastructure to the ATA and SCSI transports that supports using a driver-supplied sbuf for printing device discovery announcements. This helps ensure that messages to the console will be proper
Add infrastructure to the ATA and SCSI transports that supports using a driver-supplied sbuf for printing device discovery announcements. This helps ensure that messages to the console will be properly serialized (through sbuf_putbuf) and not be truncated and interleaved with other messages. The infrastructure mirrors the existing xpt_announce_periph() entry point and is opt-in for now. No content or formatting changes are visible to the operator other than the new coherency.
While here, eliminate the stack usage of the temporary announcement buffer in some of the drivers. It's moved to the softc for now, but future work will eliminate it entirely by making the code flow more linear. Future work will also address locking so that the sbufs can be dynamically sized.
The scsi_da, scs_cd, scsi_ses, and ata_da drivers are converted at this point, other drivers can be converted at a later date. A tunable+sysctl, kern.cam.announce_nosbuf, exists for testing purposes but will be removed later.
TODO: Eliminate all of the code duplication and temporary buffers. The old printf-based methods will be retired, and xpt_announce_periph() will just be a wrapper that uses a dynamically sized sbuf. This requires that the register and deregister paths be made malloc-safe, which they aren't currently.
Sponsored by: Netflix
show more ...
|
#
94173c3c |
| 07-Mar-2017 |
Alexander Motin <mav@FreeBSD.org> |
Add mechanism to unload CAM periph drivers.
For now it allows to unload CTL kernel module if there are no target-capable SIMs in CAM. As next step full teardown of CAM targets can be implemented.
|
#
d370fd1c |
| 14-Jan-2017 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r311940 through r312200.
|
#
4902e14d |
| 13-Jan-2017 |
Alexander Motin <mav@FreeBSD.org> |
Improve CAM_CDB_POINTER support.
MFC after: 2 weeks
|
#
a2b802ce |
| 02-Nov-2016 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r303250 through r308226.
|
#
8532d381 |
| 01-Nov-2016 |
Conrad Meyer <cem@FreeBSD.org> |
Add BUF_TRACKING and FULL_BUF_TRACKING buffer debugging
Upstream the BUF_TRACKING and FULL_BUF_TRACKING buffer debugging code. This can be handy in tracking down what code touched hung bios and bufs
Add BUF_TRACKING and FULL_BUF_TRACKING buffer debugging
Upstream the BUF_TRACKING and FULL_BUF_TRACKING buffer debugging code. This can be handy in tracking down what code touched hung bios and bufs last. The full history is especially useful, but adds enough bloat that it shouldn't be enabled in release builds.
Function names (or arbitrary string constants) are tracked in a fixed-size ring in bufs. Bios gain a pointer to the upper buf for tracking. SCSI CCBs gain a pointer to the upper bio for tracking.
Reviewed by: markj Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D8366
show more ...
|
#
242b2482 |
| 09-Oct-2016 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r306412 through r306905.
|
#
991b5d26 |
| 30-Sep-2016 |
Mark Johnston <markj@FreeBSD.org> |
cam_periph_ccbwait could return while ccb in progress
In cam_periph_runccb, cam_periph_ccbwait was using the value of the ccb pinfo.index and status fields to determine whether the ccb was done, but
cam_periph_ccbwait could return while ccb in progress
In cam_periph_runccb, cam_periph_ccbwait was using the value of the ccb pinfo.index and status fields to determine whether the ccb was done, but these fields are updated without a contending lock and could glitch into states that would be erroneously interpreted as done. Instead, have cam_periph_ccbwait look for the explicit result of the function cam_periph_done.
Submitted by: Ryan Libby <rlibby@gmail.com> Reviewed by: mav MFC after: 3 weeks Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D8020
show more ...
|
Revision tags: release/11.0.1, release/11.0.0 |
|
#
d002f039 |
| 08-Sep-2016 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r305431 through r305622.
|
#
cd375264 |
| 08-Sep-2016 |
Alexander Motin <mav@FreeBSD.org> |
Don't report to devd statuses that CAM doesn't consider errors.
Some statuses, such as "ATA pass through information available", are part part of absolutely normal operation and do not worth reporti
Don't report to devd statuses that CAM doesn't consider errors.
Some statuses, such as "ATA pass through information available", are part part of absolutely normal operation and do not worth reporting.
MFC after: 2 weeks
show more ...
|
#
cef367e6 |
| 17-May-2016 |
Eitan Adler <eadler@FreeBSD.org> |
Don't repeat the the word 'the'
(one manual change to fix grammar)
Confirmed With: db Approved by: secteam (not really, but this is a comment typo fix)
|
#
de482e7b |
| 03-May-2016 |
Scott Long <scottl@FreeBSD.org> |
Fix a memory leak in the devctl notify code.
Submitted by: markj MFC after: asap
|
#
1ffe5851 |
| 29-Apr-2016 |
Pedro F. Giffuni <pfg@FreeBSD.org> |
sys/cam: spelling fixes in comments.
No functional change.
|
#
e4cc6558 |
| 17-Apr-2016 |
Warner Losh <imp@FreeBSD.org> |
tag_action is not used at all in ata. It's set to 1 for ordered transactions, but that value isn't used. It's bogusly used to report in devstat, due to a cut and paste error from SCSI. Mark it as unu
tag_action is not used at all in ata. It's set to 1 for ordered transactions, but that value isn't used. It's bogusly used to report in devstat, due to a cut and paste error from SCSI. Mark it as unused in cam_fill_ataio. Reclaim the memory as a new ata_flags. In addition, tag_id and init_id are completely unused, so reclaim those as 'unused' now too. These were needlessly copied when ata was split from scsi.
This allows us, in the future, to create structures that can communicate AUXILIARY regsiter to the SIMs, which cannot be done now.
Differential Revision: https://reviews.freebsd.org/D5598
show more ...
|
#
0edd2576 |
| 16-Apr-2016 |
Glen Barber <gjb@FreeBSD.org> |
MFH
Sponsored by: The FreeBSD Foundation
|
#
a30ecd42 |
| 14-Apr-2016 |
Scott Long <scottl@FreeBSD.org> |
Add a devctl/devd notification conduit for CAM errors that happen at the periph level. When a relevant error is reported to the periph, some amplifying information is gathered, and the error and inf
Add a devctl/devd notification conduit for CAM errors that happen at the periph level. When a relevant error is reported to the periph, some amplifying information is gathered, and the error and information are fed to devctl with the attributes / keys system=CAM, subsystem=periph. The 'type' key will be either 'error' or 'timeout', and based on this, various other keys are also populated.
The purpose of this is to provide a concise mechanism for error reporting that is less noisy than the system console but higher in resolution and fidelity than simple sysctl counters. We will be using it at Netflix to populate a structured log and database to track errors and error trends across our world-wide population of drives.
Submitted by: imp, scottl Approved by: kenm MFC after: 3 days Sponsored by: Netflix Differential Revision: D5943
show more ...
|
Revision tags: release/10.3.0 |
|
#
11d38a57 |
| 28-Oct-2015 |
Baptiste Daroussin <bapt@FreeBSD.org> |
Merge from head
Sponsored by: Gandi.net
|