#
849f9ac3 |
| 03-Sep-2024 |
Zhenlei Huang <zlei@FreeBSD.org> |
mpi3mr(4): Stop checking for failures from malloc(M_WAITOK)
MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D45852
|
#
8d3c3b52 |
| 06-Jun-2024 |
Chandrakanth patil <chandrakanth.patil@broadcom.com> |
mpi3mr: Track IO per target counter during queue poll with local variable
Reviewed by: imp Approved by: imp Differential revision: https://reviews.freebsd.org/D44494
|
#
3f3a1554 |
| 06-Jun-2024 |
Chandrakanth patil <chandrakanth.patil@broadcom.com> |
mpi3mr: Divert large WriteSame IOs to firmware if unmap and ndob bits are set
Firmware advertises the transfer lenght for writesame commands to driver during init. So for any writesame IOs with ndob
mpi3mr: Divert large WriteSame IOs to firmware if unmap and ndob bits are set
Firmware advertises the transfer lenght for writesame commands to driver during init. So for any writesame IOs with ndob and unmap bit set and transfer lengh is greater than the max write same length specified by the firmware, then direct those commands to firmware instead of hardware otherwise hardware will break.
Reviewed by: imp Approved by: imp Differential revision: https://reviews.freebsd.org/D44452
show more ...
|
Revision tags: release/14.1.0 |
|
#
945c3ce4 |
| 19-Mar-2024 |
Chandrakanth patil <chandrakanth.patil@broadcom.com> |
mpi3mr: copyright year update to 2024
Reviewed by: imp Approved by: imp Differential revision: https://reviews.freebsd.org/D44429
|
#
baabb919 |
| 19-Mar-2024 |
Chandrakanth patil <chandrakanth.patil@broadcom.com> |
mpi3mr: mpi headers update to latest
Reviewed by: imp Approved by: imp Differential revision: https://reviews.freebsd.org/D44428
|
#
3012fa8f |
| 19-Mar-2024 |
Chandrakanth patil <chandrakanth.patil@broadcom.com> |
mpi3mr: Adding FreeBSD OS Type to Fault/Reset Reason Code
The driver is modified to add FreeBSD OS type in the upper nibble of the fault/reset reason code for appropriate qualification of the reason
mpi3mr: Adding FreeBSD OS Type to Fault/Reset Reason Code
The driver is modified to add FreeBSD OS type in the upper nibble of the fault/reset reason code for appropriate qualification of the reason code.
Reviewed by: imp Approved by: imp Differential revision: https://reviews.freebsd.org/D44427
show more ...
|
#
571f1d06 |
| 14-Mar-2024 |
Chandrakanth patil <chandrakanth.patil@broadcom.com> |
mpi3mr: Decrement per controller and per target counter post reset
Post controller reset, If any device removal events arrive, and if there are any outstanding IOs then the driver will unnecessarily
mpi3mr: Decrement per controller and per target counter post reset
Post controller reset, If any device removal events arrive, and if there are any outstanding IOs then the driver will unnecessarily wait in the loop for 30 seconds before removing the device from the OS.
reset target outstanding IO counter and controller outstanding IO counter and remove the redundant wait loop.
Reviewed by: imp Approved by: imp Differential revision: https://reviews.freebsd.org/D44424
show more ...
|
#
701d776c |
| 14-Mar-2024 |
Chandrakanth patil <chandrakanth.patil@broadcom.com> |
mpi3mr: poll reply queue and add MPI3MR_DEV_REMOVE_HS_COMPLETED flag
An outstanding IO counter per target check has been added before deleting the target from the OS which will poll the reply queue
mpi3mr: poll reply queue and add MPI3MR_DEV_REMOVE_HS_COMPLETED flag
An outstanding IO counter per target check has been added before deleting the target from the OS which will poll the reply queue if there are any outstanding IOs are found.
A new flag, named "MPI3MR_DEV_REMOVE_HS_COMPLETED," is added. If a remove event for a target occurs and before the deletion of the target resource if the add event for another target arrives reusing the same target ID then this flag will prevent the removal of the target reference. This flag ensures synchronization between the interrupt top and bottom half during target removal and addition events.
Reviewed by: imp Approved by: imp Differential revision: https://reviews.freebsd.org/D44423
show more ...
|
Revision tags: release/13.3.0 |
|
#
34f0a01b |
| 11-Dec-2023 |
Warner Losh <imp@FreeBSD.org> |
mpi3mr: Fix confusion over | and &
Use sc->mpi3mr_debug & MPI3MR_IOT over the | version to test if a bit is set.
CID: 1529718 Sponsored by: Netflix
|
#
2361a005 |
| 29-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
mpi3mr: Replace can't happen DataLength == 0 with an assert
Replace the test for DataLength == 0 with an assert. It can't happen, but an assert doesn't hurt. Emacs removed some trailing white space
mpi3mr: Replace can't happen DataLength == 0 with an assert
Replace the test for DataLength == 0 with an assert. It can't happen, but an assert doesn't hurt. Emacs removed some trailing white space too.
Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D42807
show more ...
|
#
ee7c431c |
| 29-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
mpi3mr: Trivial trailing white space reduction
Sponsored by: Netflix
|
#
3208a189 |
| 29-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
mpi3mr: Fix EINPROGRESS errors hanging the card
Move enqueueing of commands to bus_dmamap_load_ccb callback
Fix fundamental difference between FreeBSD and Linux. On Linux, your dma load callback al
mpi3mr: Fix EINPROGRESS errors hanging the card
Move enqueueing of commands to bus_dmamap_load_ccb callback
Fix fundamental difference between FreeBSD and Linux. On Linux, your dma load callback always happends before it returns, so drivers are written to load the map, then submit to hardware. On FreeBSD, the callback may be deferred and return EINPROGRESS. This means the callback is responsible for queueing the request to the hardware is done after the SGL list is created. Make a number of interrelated cahnages:
At the end of mpi3mr_prepare_sgls, add a call to mpi3mr_enqueue_request.
Split the hardware submission out from the end of mpi3mr_action_scsiio and move it into a new routine mpi3mr_enqueue_request.
Move all error completion from the end of mpi3mr_action_scsiio to where the error is detected. We cannot pass errors back from the mpi3mr_enqueue_request to do this on a 'failed' mpi3mr in a centralized place (since it has to be fire and forget).
Add comments about zero length SGLs never making it into mpi3mr_prepare_sgls. Keep the code there for the moment, but we only set cm->data to non-NULL when scsiio_req->DataLength is not zero. So the datalength can't be zero and we can't send the zero SGLs.
Add commentts about other "impossible" tests in mpi3mr_prepare_sgls that really should be simple asserts of some flavor.
Eliminate cm->error_code, since we can't pass data back from the mpi3mr_prepare_sgl callback anymore.
In mpi3mr_map_request, call mpi3mr_enqueue_request for the no data case. This seems to work even though we've not done the special zero length handling that was in mpi3mr_prepare_sgls, giving further evidence to it not actually being needed. This is needed for SCSI CDBs that have no data to pass to the drive like TEST UNIT READY.
With this change, and the prior ones, we're now able to run with mpi3mr on 128GB systems and very heavy disk load (so many buffers land > 4GB: the driver instructs busdma to never use memory abouve 4GB, which may be too conservative, but an issue for another time).
Sponsored by: Netflix Reviewed by: sumit.saxena_broadcom.com, mav, jhb Differential Revision: https://reviews.freebsd.org/D42543
show more ...
|
#
cf8c2323 |
| 29-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
mpi3mr: Cleaup setting of status in processing scsiio requests
More uniformly use mpi3mr_set_ccbstatus in mpi3mr_action_scsiio. The routine mostly used it, but also has setting of status by hand. I
mpi3mr: Cleaup setting of status in processing scsiio requests
More uniformly use mpi3mr_set_ccbstatus in mpi3mr_action_scsiio. The routine mostly used it, but also has setting of status by hand. In those cases where we want to error out the request, use this routine.
As part of this, move setting CAM_SIM_QUEUED later in the function to when we're sure it's been queued. Remove the places we clear it before this.
Sponsored by: Netflix Reviewed by: mav, jhb Differential Revision: https://reviews.freebsd.org/D42542
show more ...
|
#
1cfd0111 |
| 29-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
mpi3mr: Only set callout_owned when we create a timeout
Since we assume there's a timeout to cancel when this is true, only set it true when we set the timeout. Otherwise we may try to cancel a time
mpi3mr: Only set callout_owned when we create a timeout
Since we assume there's a timeout to cancel when this is true, only set it true when we set the timeout. Otherwise we may try to cancel a timeout when there's been an error in submission.
Sponsored by: Netflix Reviewed by: mav Differential Revision: https://reviews.freebsd.org/D42541
show more ...
|
#
e2b27df9 |
| 29-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
mpi3mr: Minor style fix
Fold two lines to make this more readable.
Sponsored by: Netflix Reviewed by: mav, jhb Differential Revision: https://reviews.freebsd.org/D42540
|
#
fdafd315 |
| 24-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Automated cleanup of cdefs and other formatting
Apply the following automated changes to try to eliminate no-longer-needed sys/cdefs.h includes as well as now-empty blank lines in a row.
Remov
sys: Automated cleanup of cdefs and other formatting
Apply the following automated changes to try to eliminate no-longer-needed sys/cdefs.h includes as well as now-empty blank lines in a row.
Remove /^#if.*\n#endif.*\n#include\s+<sys/cdefs.h>.*\n/ Remove /\n+#include\s+<sys/cdefs.h>.*\n+#if.*\n#endif.*\n+/ Remove /\n+#if.*\n#endif.*\n+/ Remove /^#if.*\n#endif.*\n/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/types.h>/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/param.h>/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/capsicum.h>/
Sponsored by: Netflix
show more ...
|
Revision tags: release/14.0.0 |
|
#
685dc743 |
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
#
2d1d418e |
| 15-Jun-2023 |
Sumit Saxena <sumit.saxena@broadcom.com> |
mpi3mr: 3rd Generation Tri-Mode NVMe/SAS/SATA MegaRaid / eHBA
This is Broadcom's mpi3mr driver for FreeBSD version 8.6.0.2.0. The mpi3mr driver supports Broadcom SAS4116-based cards in the 9600 seri
mpi3mr: 3rd Generation Tri-Mode NVMe/SAS/SATA MegaRaid / eHBA
This is Broadcom's mpi3mr driver for FreeBSD version 8.6.0.2.0. The mpi3mr driver supports Broadcom SAS4116-based cards in the 9600 series: 9670W-16i, 9670-24i, 9660-16i, 9620-16i, 9600-24i, 9600-16i, 9600W-16e, 9600-16e, 9600-8i8e.
Initially only available as a module and on amd64/arm64, since that's how it has been tested to date. Future commits will add it to the kernel build and may expand the architectures it is supported on.
Co-authored-by: Chandrakanth Patil <chandrakanth.patil@broadcom.com> Feedback-by: ken (prior versions) Reviewed-by: imp RelNotes: yes Differential-Revision: https://reviews.freebsd.org/D36771 Differential-Revision: https://reviews.freebsd.org/D36772
show more ...
|