NVMe: Difference between revisions

18 bytes added ,  2 months ago
m
Reverted edits by Xing1357 (talk) to last revision by Moltony112
[unchecked revision][unchecked revision]
No edit summary
m (Reverted edits by Xing1357 (talk) to last revision by Moltony112)
 
(3 intermediate revisions by 2 users not shown)
Line 1:
 
The [https://nvmexpress.org/specifications/ NVMe Specifications] can be found here.
 
Forum thread about this page [https://forum.osdev.org/viewtopic.php?f=8&t=36366 here].
 
== Overview ==
 
* NVMe controllers can be found as [[PCI]] devices with class code 1 and subclass code 8.
* Its registers are accessible through BAR 0 (it should be 64-bit memory IO).
* The controller processes commands submitted to it from "submission queues". The driver prepares commands in the queue's circular buffer in memory, and then updates the tail pointer register for the queue.
Line 125 ⟶ 120:
=== PRP ===
 
A PRP (physical region page) is a 64-bit physical memory address. It must be DWORD aligned. A list of PRPs is used in a data transfer to specific, where data is transferred from/to in memory. A PRP list is subject to the follow rules:
 
* The size of the region specified by a given PRP is the minimum of: the amount of data that can be transferred without crossing a page boundary; and the amount of data remaining to be transferred.
Line 245 ⟶ 240:
* Use the submission queue ID and command ID to work out which submitted command corresponds to this completion entry.
* Update the completion queue head doorbell register.
 
== See Also ==
 
=== External Links ===
 
The* [https://nvmexpress.org/specifications/ NVMe Specifications] can be found here.
 
=== Forum Threads ===
 
Forum thread about this page* [https://forum.osdev.org/viewtopic.php?f=8&t=36366 here].
 
[[Category:Storage]]
Anonymous user