genode/repos/os/src/drivers/nvme
Norman Feske b078224753 Replace Genode::strncpy by Genode::copy_cstring
- Since Genode::strncpy is not 100% compatible with the POSIX
  strncpy function, better use a distinct name.

- Remove bogus return value from the function, easing the potential
  enforcement of mandatory return-value checks later.

Fixes #3752
2020-05-27 11:56:45 +02:00
..
README nvme_drv: add driver for NVMe storage devices 2018-04-19 12:38:22 +02:00
main.cc os: use Request_stream API in NVMe driver 2020-04-17 12:39:32 +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 Replace Genode::strncpy by Genode::copy_cstring 2020-05-27 11:56:45 +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>