#
01fc4883 |
|
13-May-2024 |
John Baldwin <jhb@FreeBSD.org> |
nvme: Use strlcpy instead of strncpy to ensure termination Reviewed by: dab, imp Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D45152
|
#
fe52c338 |
|
06-Mar-2024 |
Warner Losh <imp@FreeBSD.org> |
nvme_sim: Add comment about the is_failed test We only see a request with a failed controller while we're in the process of failing the controller. Add a comment to that effect. Sponsored by: Netflix
|
#
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. 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
|
#
685dc743 |
|
16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
#
63b0c00e |
|
07-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
nvme: Update comment Fix comment to note we should grab additional data from the error log page, but don't currently (it's inclear if we should do that here and other places in nvd that want it, or if we should let nvd / the nda periph make the request). Sponsored by: Netflix Reviewed by: chuck, mav, jhb Differential Revision: https://reviews.freebsd.org/D41315
|
#
774ab87c |
|
20-Jul-2023 |
Warner Losh <imp@FreeBSD.org> |
cam: Add CAM_NVME_STATUS_ERROR error code Add CAM_NVME_STATUS_ERROR error code. Flag all NVME commands that completed with an error status as CAM_NVME_STATUS_ERROR (a new value) instaead of CAM_REQ_CMP_ERR. This indicates to the upper layers of CAM that the 'cpl' field for nvmeio CCBs is valid and can be examined for error recovery, if desired. No functional change. nda will still see these as errors, call ndaerror() to get the error recovery action, etc. cam_periph_error will select the same case as before (even w/o the change, though the change makes it explicit). Sponsored by: Netflix Reviewed by: chuck, mav, jhb Differential Revision: https://reviews.freebsd.org/D41085
|
#
9c2203a6 |
|
26-Jun-2023 |
John Baldwin <jhb@FreeBSD.org> |
nvme: Tidy up transfer rate settings in XPT_GET_TRAN_SETTINGS. - Replace a magic number with CTS_NVME_VALID_SPEC. - Set the transport and protocol versions the same as for XPT_PATH_INQ. Probably we shouldn't bother with setting the version in the 'spec' member of ccb_trans_settings_nvme at all and use the transport and/or protocol version field instead. Reviewed by: chuck, imp Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D40616
|
#
8f079322 |
|
06-Dec-2021 |
Warner Losh <imp@FreeBSD.org> |
nvme_sim: Only report PCI related stats when we can For AHCI attached devices, we report the location and identification information of the AHCI controller that we're attached to. We also don't reprot link speed in that case, since we can't get to the PCIe config space registers to find that out. Sponsored by: Netflix Reviewed by: mav Differential Revision: https://reviews.freebsd.org/D33287
|
#
4b977e6d |
|
17-Sep-2021 |
Warner Losh <imp@FreeBSD.org> |
nvme/nda: Fail all nvme I/Os after controller fails Once the controller has failed, fail all I/O w/o sending it to the device. The reset of the nvme driver won't schedule any I/O to the failed device, and the controller is in an indeterminate state and can't accept I/O. Fail both at the top end of the sim and the bottom end. Don't bother queueing up the I/O for failure in a different task. Reviewed by: chuck Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D31341
|
#
97dc595d |
|
12-Aug-2020 |
Alexander Motin <mav@FreeBSD.org> |
Report cpi->hba_* for nda(4) because why not. MFC after: 1 week
|
#
950475ca |
|
01-May-2020 |
Warner Losh <imp@FreeBSD.org> |
Rename ns notification function... This function is called whenever the namespace is added, deleted or changes. Update the name to reflect that. No functional change.
|
#
9cde7894 |
|
30-Apr-2020 |
Warner Losh <imp@FreeBSD.org> |
Move / reword a comment. Explain what we're doing with mapping CAM's notion of a LUN to NVMe's notion of a namespace.
|
#
027d0612 |
|
29-Apr-2020 |
Warner Losh <imp@FreeBSD.org> |
Return the nvmeX device associated with the ndaX device. Add the nvmeX device to the XPT_PATH_INQ nvme specific information. while one could figure this out by looking up the domain:bus:slot:function, it's a lot easier to have the SIM set it directly since the sim knows this.
|
#
b1f14710 |
|
07-Jun-2019 |
Chuck Tuffli <chuck@FreeBSD.org> |
Fix nda(4) PCIe link status output Differentiate between PCI Express Endpoint devices and Root Complex Integrated Endpoints in the nda driver. The Link Status and Capability registers are not valid for Integrated Endpoints and should not be displayed. The bhyve emulated NVMe device will advertise as being an Integrated Endpoint. Reviewed by: imp Approved byL imp (mentor) Differential Revision: https://reviews.freebsd.org/D20282
|
#
52467047 |
|
04-Feb-2019 |
Warner Losh <imp@FreeBSD.org> |
Regularize the Netflix copyright Use recent best practices for Copyright form at the top of the license: 1. Remove all the All Rights Reserved clauses on our stuff. Where we piggybacked others, use a separate line to make things clear. 2. Use "Netflix, Inc." everywhere. 3. Use a single line for the copyright for grep friendliness. 4. Use date ranges in all places for our stuff. Approved by: Netflix Legal (who gave me the form), adrian@ (pmc files)
|
#
511662d0 |
|
24-Dec-2018 |
Alexander Motin <mav@FreeBSD.org> |
Remove CAM SIM lock from NVMe SIM. CAM does not require SIM lock since FreeBSD 10.4, and NVMe code never required it at all, using per-queue locks instead. This formally allows parallel request submission in CAM mode as much as single per-device and per-queue locks of CAM allow. MFC after: 1 month
|
#
f439e3a4 |
|
24-May-2018 |
Alexander Motin <mav@FreeBSD.org> |
Refactor NVMe CAM integration. - Remove layering violation, when NVMe SIM code accessed CAM internal device structures to set pointers on controller and namespace data. Instead make NVMe XPT probe fetch the data directly from hardware. - Cleanup NVMe SIM code, fixing support for multiple namespaces per controller (reporting them as LUNs) and adding controller detach support and run-time namespace change notifications. - Add initial support for namespace change async events. So far only in CAM mode, but it allows run-time namespace arrival and departure. - Add missing nvme_notify_fail_consumers() call on controller detach. Together with previous changes this allows NVMe device detach/unplug. Non-CAM mode still requires a lot of love to stay on par, but at least CAM mode code should not stay in the way so much, becoming much more self-sufficient. Reviewed by: imp MFC after: 1 month Sponsored by: iXsystems, Inc.
|
#
041f49ae |
|
09-May-2018 |
Warner Losh <imp@FreeBSD.org> |
Remove the 'All Rights Reserved' clause from some of the stuff I've done for Netflix, since I'm in the neighborhood.
|
#
7e5f6f25 |
|
17-Jan-2018 |
Warner Losh <imp@FreeBSD.org> |
Move setting of CAM_SIM_QUEUED to before we actually submit it to the hardware. Setting it after is racy, and we can lose the race on a heavily loaded system. Reviewed by: scottl@, gallatin@ Sponsored by: Netflix
|
#
4484c8f5 |
|
20-Dec-2017 |
Warner Losh <imp@FreeBSD.org> |
Return domain, bus, slot, and function for the transport settings in PATH_INQ requests for nvme. Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D13546
|
#
eab9d0a8 |
|
14-Nov-2017 |
Warner Losh <imp@FreeBSD.org> |
Inline pcie_link_{status,caps} where needed. Remove them as they aren't really needed and I don't want to document them. Suggested by: jhb@ Sponsored by: Netflix
|
#
4e3b2744 |
|
13-Nov-2017 |
Warner Losh <imp@FreeBSD.org> |
Provide link speed data in XPT_GET_TRAN_SETTINGS. Provide full version information for that and XPT_PATH_INQ. Provide macros to encode/decode major/minor versions. Read the link speed and lane count to compute the base_transfer_speed for XPT_PATH_INQ. Sponsored by: Netflix
|
#
29431e54 |
|
15-Oct-2017 |
Warner Losh <imp@FreeBSD.org> |
Use nvme_ctrlr_poll instead of nvme_ctrlr_intx_handler since it is more general and doesn't try to access registers that may be undefined when the card is in MSIX mode. This change, along with r324630, r324631, r324632, makes nda crash dumps work again. Previously, they only worked on CPU 0 when the stack garbage was just so. Sponsored by: Netflix Suggested by: scottl@ (who provided earlier version of the patch)
|
#
cfb43eb1 |
|
27-Sep-2017 |
Warner Losh <imp@FreeBSD.org> |
Tweak performance of nda completions Use xpt_done_direct in preference to xpt_done when completing a successful I/O. Continue to use xpt_done when there's an error, or for completion of the submission of a CCB. This eliminates a context switch to the cam_doneq thread. Sponsored by: Netflix Suggested by: scottl@
|
#
51977281 |
|
29-Aug-2017 |
Warner Losh <imp@FreeBSD.org> |
Add CAM/NVMe support for CAM_DATA_SG This adds support in pass(4) for data to be described with a scatter-gather list (sglist) to augment the existing (single) virtual address. Differential Revision: https://reviews.freebsd.org/D11361 Submitted by: Chuck Tuffli Reviewed by: imp@, scottl@, kenm@
|
#
c02565f9 |
|
28-Aug-2017 |
Warner Losh <imp@FreeBSD.org> |
Set the max transactions for NVMe drives better. Provided a better estimate for the number of transactions that can be pending at one time. This will be number of queues * number of trackers / 4, as suggested by Jim Harris. This gives a better estimate of the number of transactions that CAM should queue before applying back pressure. This should be revisted when we have real multi-queue support in CAM and the upper layers of the I/O stack. Sponsored by: Netflix
|
#
d0e75394 |
|
08-Aug-2017 |
Warner Losh <imp@FreeBSD.org> |
Use the correct queue depth for nda devices. Submitted by: Matt Williams
|
#
8a5d94f9 |
|
03-Aug-2017 |
Warner Losh <imp@FreeBSD.org> |
Make nvd vs nda choice boot-time rather than build-time Introduce hw.nvme.use_nvd tunable. This tunable allows both nvd and nda to be installed in the kernel, while allowing only one of them to create devices. This is an all-or-nothing setting, and you can't change it after boot-time. However, it will allow easier A/B testing. Differential Revision: https://reviews.freebsd.org/D11825
|
#
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> Differential Revision: https://reviews.freebsd.org/D10247
|
#
adc8145e |
|
19-Feb-2017 |
Warner Losh <imp@FreeBSD.org> |
Remove obsolete comment after prior rev.
|
#
950c5aca |
|
19-Feb-2017 |
Alexander Motin <mav@FreeBSD.org> |
Remove dead mentions of CAM target mode APIs from drivers. This makes grepping kernel for target mode implementation much easier.
|
#
d3c06026 |
|
04-Jan-2017 |
Ravi Pokala <rpokala@FreeBSD.org> |
In the same vein as r311350, fix whitespace in handling of XPT_PATH_INQ in several more drivers. Sponsored by: Panasas
|
#
4195c7de |
|
04-Jan-2017 |
Alan Somers <asomers@FreeBSD.org> |
Always null-terminate ccb_pathinq.(sim_vid|hba_vid|dev_name) The sim_vid, hba_vid, and dev_name fields of struct ccb_pathinq are fixed-length strings. AFAICT the only place they're read is in sbin/camcontrol/camcontrol.c, which assumes they'll be null-terminated. However, the kernel doesn't null-terminate them. A bunch of copy-pasted code uses strncpy to write them, and doesn't guarantee null-termination. For at least 4 drivers (mpr, mps, ciss, and hyperv), the hba_vid field actually overflows. You can see the result by doing "camcontrol negotiate da0 -v". This change null-terminates those fields everywhere they're set in the kernel. It also shortens a few strings to ensure they'll fit within the 16-character field. PR: 215474 Reported by: Coverity CID: 1009997 1010000 1010001 1010002 1010003 1010004 1010005 CID: 1331519 1010006 1215097 1010007 1288967 1010008 1306000 CID: 1211924 1010009 1010010 1010011 1010012 1010013 1010014 CID: 1147190 1010017 1010016 1010018 1216435 1010020 1010021 CID: 1010022 1009666 1018185 1010023 1010025 1010026 1010027 CID: 1010028 1010029 1010030 1010031 1010033 1018186 1018187 CID: 1010035 1010036 1010042 1010041 1010040 1010039 Reviewed by: imp, sephe, slm MFC after: 4 weeks Sponsored by: Spectra Logic Corp Differential Revision: https://reviews.freebsd.org/D9037 Differential Revision: https://reviews.freebsd.org/D9038
|
#
34dc8f1b |
|
28-Jul-2016 |
Warner Losh <imp@FreeBSD.org> |
Kill a few stray debug printfs.
|
#
3a31c31c |
|
20-Jul-2016 |
Warner Losh <imp@FreeBSD.org> |
Actually import nvme_sim so the CAM attachment for NVME (nda) actually works. MFC after: 1 week
|