<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src-test/sys/dev/nvme/nvme.c, branch main</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src-test/atom?h=main</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src-test/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test/'/>
<updated>2020-11-12T20:20:43Z</updated>
<entry>
<title>Fix panic if NVMe is detached before the intrhook call.</title>
<updated>2020-11-12T20:20:43Z</updated>
<author>
<name>Alexander Motin</name>
<email>mav@FreeBSD.org</email>
</author>
<published>2020-11-12T20:20:43Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test/commit/?id=46fbd8004fbd88a0f385003f5b02458ce666400e'/>
<id>urn:sha1:46fbd8004fbd88a0f385003f5b02458ce666400e</id>
<content type='text'>
MFC after:	1 week
Sponsored by:	iXsystems, Inc.
</content>
</entry>
<entry>
<title>nvme: change namei_request_zone into a malloc type</title>
<updated>2020-11-05T21:44:58Z</updated>
<author>
<name>Mateusz Guzik</name>
<email>mjg@FreeBSD.org</email>
</author>
<published>2020-11-05T21:44:58Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test/commit/?id=71460dfcb275f0a2a20b39a332b0e1149c6e7e3f'/>
<id>urn:sha1:71460dfcb275f0a2a20b39a332b0e1149c6e7e3f</id>
<content type='text'>
Both the size (128 bytes) and ephemeral nature of allocations make it a great
fit for malloc.

A dedicated zone unnecessarily avoids sharing buckets with 128-byte objects.

Reviewed by:	imp
Differential Revision:	https://reviews.freebsd.org/D27103
</content>
</entry>
<entry>
<title>nvme: clean up empty lines in .c and .h files</title>
<updated>2020-09-01T22:03:10Z</updated>
<author>
<name>Mateusz Guzik</name>
<email>mjg@FreeBSD.org</email>
</author>
<published>2020-09-01T22:03:10Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test/commit/?id=d87b31e159cb313dad1049e91943dcdd479f2b2d'/>
<id>urn:sha1:d87b31e159cb313dad1049e91943dcdd479f2b2d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix various Coverity-detected errors in nvme driver</title>
<updated>2020-05-02T20:47:58Z</updated>
<author>
<name>David Bright</name>
<email>dab@FreeBSD.org</email>
</author>
<published>2020-05-02T20:47:58Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test/commit/?id=4053f8ac4de7a978fe215f25e45469e512a2c7bb'/>
<id>urn:sha1:4053f8ac4de7a978fe215f25e45469e512a2c7bb</id>
<content type='text'>
This fixes several Coverity-detected errors in the nvme driver.

CIDs addressed: 1008344, 1009377, 1009380, 1193740, 1305470, 1403975,
1403980

Reviewed by:	imp@, vangyzen@
MFC after:	5 days
Sponsored by:	Dell EMC Isilon
Differential Revision:	https://reviews.freebsd.org/D24532
</content>
</entry>
<entry>
<title>Add KASSERT to ensure sane nsid.</title>
<updated>2020-05-01T21:24:19Z</updated>
<author>
<name>Warner Losh</name>
<email>imp@FreeBSD.org</email>
</author>
<published>2020-05-01T21:24:19Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test/commit/?id=d5cc572ce6009993fb3c4f6c887194b9ec3c9815'/>
<id>urn:sha1:d5cc572ce6009993fb3c4f6c887194b9ec3c9815</id>
<content type='text'>
All callers are currently filtering bad nsid to this function,
however, we'll have undefined behavior if that's not true. Add the
KASSERT to prevent that.
</content>
</entry>
<entry>
<title>Move reset to the interrutp processing stage</title>
<updated>2019-12-11T22:51:02Z</updated>
<author>
<name>Warner Losh</name>
<email>imp@FreeBSD.org</email>
</author>
<published>2019-12-11T22:51:02Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test/commit/?id=66e5985084a03bab06e5451d3fc606f955dfdfc8'/>
<id>urn:sha1:66e5985084a03bab06e5451d3fc606f955dfdfc8</id>
<content type='text'>
This trims the boot time a bit more for AWS and other platforms that have nvme
drives. There's no reason too do this inline. This has been in my tree a while,
but IIRC I talked to Jim Harris about this at one of our face to face meetings.

MFC After: 2 weeks
</content>
</entry>
<entry>
<title>Implement nvme suspend / resume for pci attachment</title>
<updated>2019-09-03T15:26:11Z</updated>
<author>
<name>Warner Losh</name>
<email>imp@FreeBSD.org</email>
</author>
<published>2019-09-03T15:26:11Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test/commit/?id=4d5475613eda7c766896873dc7b7158e60fb9c58'/>
<id>urn:sha1:4d5475613eda7c766896873dc7b7158e60fb9c58</id>
<content type='text'>
When we suspend, we need to properly shutdown the NVME controller. The
controller may go into D3 state (or may have the power removed), and
to properly flush the metadata to non-volatile RAM, we must complete a
normal shutdown. This consists of deleting the I/O queues and setting
the shutodown bit. We have to do some extra stuff to make sure we
reset the software state of the queues as well.

On resume, we have to reset the card twice, for reasons described in
the attach funcion. Once we've done that, we can restart the card. If
any of this fails, we'll fail the NVMe card, just like we do when a
reset fails.

Set is_resetting for the duration of the suspend / resume. This keeps
the reset taskqueue from running a concurrent reset, and also is
needed to prevent any hw completions from queueing more I/O to the
card. Pass resetting flag to nvme_ctrlr_start. It doesn't need to get
that from the global state of the ctrlr. Wait for any pending reset to
finish. All queued I/O will get sent to the hardware as part of
nvme_ctrlr_start(), though the upper layers shouldn't send any
down. Disabling the qpairs is the other failsafe to ensure all I/O is
queued.

Rename nvme_ctrlr_destory_qpairs to nvme_ctrlr_delete_qpairs to avoid
confusion with all the other destroy functions.  It just removes the
queues in hardware, while the other _destroy_ functions tear down
driver data structures.

Split parts of the hardware reset function up so that I can
do part of the reset in suspsend. Split out the software disabling
of the qpairs into nvme_ctrlr_disable_qpairs.

Finally, fix a couple of spelling errors in comments related to
this.

Relnotes: Yes
MFC After: 1 week
Reviewed by: scottl@ (prior version)
Differential Revision: https://reviews.freebsd.org/D21493
</content>
</entry>
<entry>
<title>It turns out the duplication is only mostly harmless.</title>
<updated>2019-08-23T22:52:58Z</updated>
<author>
<name>Warner Losh</name>
<email>imp@FreeBSD.org</email>
</author>
<published>2019-08-23T22:52:58Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test/commit/?id=5f9e856e3a0ded0b1c45f42d3b93a4a5c695eb74'/>
<id>urn:sha1:5f9e856e3a0ded0b1c45f42d3b93a4a5c695eb74</id>
<content type='text'>
While it worked with the kenrel, it wasn't working with the loader.
It failed to handle dependencies correctly. The reason for that is
that we never created a nvme module with the DRIVER_MODULE, but
instead a nvme_pci and nvme_ahci module. Create a real nvme module
that nvd can be dependent on so it can import the nvme symbols it
needs from there.

Arguably, nvd should just be a simple child of nvme, but transitioning
to that (and winning that argument given why it was done this way) is
beyond the scope of this change.

Reviewed by: jhb@
Differential Revision: https://reviews.freebsd.org/D21382
</content>
</entry>
<entry>
<title>Remove stray line that was duplicated.</title>
<updated>2019-08-22T02:53:51Z</updated>
<author>
<name>Warner Losh</name>
<email>imp@FreeBSD.org</email>
</author>
<published>2019-08-22T02:53:51Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test/commit/?id=acc48026b3019fe25360d781c6eb0a118cf2935b'/>
<id>urn:sha1:acc48026b3019fe25360d781c6eb0a118cf2935b</id>
<content type='text'>
Noticed by: rpokala@
</content>
</entry>
<entry>
<title>Separate the pci attachment from the rest of nvme</title>
<updated>2019-08-21T22:17:55Z</updated>
<author>
<name>Warner Losh</name>
<email>imp@FreeBSD.org</email>
</author>
<published>2019-08-21T22:17:55Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test/commit/?id=f182f928dba2089ceb897191e546f32362035ddc'/>
<id>urn:sha1:f182f928dba2089ceb897191e546f32362035ddc</id>
<content type='text'>
Nvme drives can be attached in a number of different ways. Separate out the PCI
attachment so that we can have other attachment types, like ahci and various
types of NVMeoF.

Submitted by: cognet@
</content>
</entry>
</feed>
