genode/repos/os
Josef Söntgen 150d143755 os: use Request_stream API in NVMe driver
As a result of the API change the memory handling could be simplified.
Since the Block session dataspace is now directly used for DMA, we
actually only have to provide the memory for setting up PRP lists for
large requests (for the moment more than 8 KiB of data).

As we limit the maximum data transfer length to 2 MiB, we get by with
just a page per request. Those memory is allocated beforehand for the
maximum number of I/O requests, which got bumbed to 512 entries. Since
not all NVMe controllers support such large a maximum data transfer
length and this many entries, especially older ones, the values are
capped according to the properties of the controller during
initialization. (The memory demands of the component are around 3 MiB
due to setting up for the common case, even if a particular controller
is only able to make use of less.)

(Although there are controllers whose maximum memory page size is more
than 4K, the driver is hardcoded to solely use 4K pages.)

In addition to those changes, the driver now supports the 'SYNC' and
'TRIM' operations of the Block session by using the NVMe 'FLUSH' and
'WRITE_ZEROS' commands.

Fixes #3702.
2020-04-17 12:39:32 +02:00
..
doc Remove obsolete RAM/CAP services from run scripts 2017-05-31 13:16:22 +02:00
include os/vfs.h: fix possible nullptr dereference 2020-03-26 11:38:56 +01:00
lib os: add sandbox lib to api/os 2020-02-20 12:11:22 +01:00
recipes depot: update recipe hashes 2020-03-26 11:39:02 +01:00
run os: use Request_stream API in NVMe driver 2020-04-17 12:39:32 +02:00
src os: use Request_stream API in NVMe driver 2020-04-17 12:39:32 +02:00
xsd timeout_types.xsd: Minutes type 2019-08-21 12:37:02 +02:00
README API documentation refinements 2017-05-31 13:16:21 +02:00

This source-code repository contains genuine low-level OS components and
interfaces of Genode. It solely depends on the framework's base API.