Hi Philipp,
On 03/24/2017 09:47 AM, Philipp Kerling wrote:
Hi,
2017-03-21 (火) の 10:49 +0100 に Sebastian Sumpf さんは書きました:
Do you have any specific feature requests besides simple read/write?
Read/write with native command queuing support would suffice.
NCQ isn't directly applicable to NVMe, at least not in the SATA sense. NVMe has mandatory support for 65535 distinct submission queues into which you can each put 65536 commands that are executed in no particular order (i.e. possibly in parallel and as the controller sees fit, similarly to NCQ). For Genode, using one queue would probably be sufficient. This does mean that the NVMe driver has to make sure that if you e.g. get a write and then a read of the same address queued from an application, the read would have to be postponed until the write is completed since the NVMe controller does not guarantee in-order execution. Now that I think about it though, this also applies to SATA NCQ and is what I guess Ata_driver::overlap_check() is for in the AHCI driver.
Good research from your side here.
If the above is working, it would be interesting to investigate if there are features Genode could benefit from and maybe implement some. Additionally power management is always a topic.
Ok thanks, noted. Does Genode have support for ACPI device power state switching, particularly Runtime D3?
No, power management is still in its infancy. But this is a topic the Genode staff will have to work on.
NVMe also supports elaborate PM, some of which (e.g. automatic PM) could easily be integrated. The more involved stuff depends a lot on knowing the workload and requirements of the system (i.e. burstiness, priority of latency or throughput, ...), but that could be made into parameters provided to the driver.
Sounds good, looking forward to your proposal.
Sebastian