genode/repos/os/src/drivers/nvme
Martin Stein 181c78d482 timeout: use uint64_t for all plain time values
This enforces the use of unsigned 64-bit values for time in the duration type,
the timeout framework, the timer session, the userland timer-drivers, and the
alarm framework on all platforms. The commit also adapts the code that uses
these tools accross all basic repositories (base, base-*, os. gems, libports,
ports, dde_*) to use unsigned 64-bit values for time as well as far as this
does not imply profound modifications.

Fixes #3208
2019-05-06 16:15:26 +02:00
..
README nvme_drv: add driver for NVMe storage devices 2018-04-19 12:38:22 +02:00
main.cc timeout: use uint64_t for all plain time values 2019-05-06 16:15:26 +02:00
pci.h nvme_drv: add driver for NVMe storage devices 2018-04-19 12:38:22 +02:00
target.mk nvme_drv: add driver for NVMe storage devices 2018-04-19 12:38:22 +02:00
util.h nvme_drv: add driver for NVMe storage devices 2018-04-19 12:38:22 +02:00

README

This directory contains the implementation of a NVMe driver component.


Brief
=====

The driver supports PCIe NVMe devices matching at least revision 1.1 of
the NVMe specification. For now it only supports one name space and uses
one completion and one submission queue to handle all I/O requests; one
request is limited to 1MiB of data. It lacks any name space management
functionality.


Configuration
=============

The following config illustrates how the driver is configured:

!<start name="nvme_drv">
!  <resource name="ram" quantum="8M"/>
!  <provides><service name="Block"/></provides>
!  <config>
!    <policy label_prefix="client1" writeable="yes"/>
!  </config>
!</start>


Report
======

The driver supports reporting of active name spaces, which can be enabled
via the configuration 'report' sub-node:

!<report namespace="yes"/>

The report structure is depicted by the following example:

!<controller model="QEMU NVMe Ctrl" serial="FNRD">
! <namespace id="0" block_count="32768" block_size="512"/>
!</controller>