mirror of
https://github.com/genodelabs/genode.git
synced 2025-01-07 14:28:44 +00:00
0339318572
This patch extends the 'Platform_session::alloc_dma_buffer' interface with a 'Cache' argument that corresponds to the argument accepted by 'Ram_allocator::alloc', which is used by the platform driver under the hood. Since the x86 platform driver used to be hardwired to allocate DMA buffers as UNCACHED, I adjusted all drivers by specifying the UNCACHED argument. Right now, this is needed as a hint for core to steer the allocation of I/O page tables. Once we eliminate the need for such hints (by introducing an explicit 'Region_map::attach_dma' operation), we can revisit the drivers individually because cached DMA buffers should generally be fine on the x86 architecture. Issue #2243 |
||
---|---|---|
.. | ||
main.cc | ||
pci.h | ||
README | ||
target.mk | ||
util.h |
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>