Over the weekend I kept tinkering with this NVME driver, because sometimes I am not good at work/life balance. Tidying up and an optimization Removed the no-longer-used nvme_io_txn() and dependencies on the hexdump utility library, leftover from early tests. Adjusted completion queue processing to only ring the doorbell that tells the hardware that the queue tail has advanced after draining the queue (thank you, Doug Gale, for pointing out this inefficiency in a comment on the CL).
This week I wrote a minimal NVME storage driver for Zircon. As usual, I used Gerrit as a place to backup my work-in-progress from time to time. The end results are a (possibly interesting) window into how I go from a zero to functional driver. The first section presents the very first shell of a driver I checked in. Each following section shows the diffs from the version preceeding it to that version of the driver.