When multiple NVMe controllers are being initialized during spdk_nvme_probe(), we can overlap the hardware resets of all controllers to improve startup time. Rewrite the initialization sequence as a polling function, nvme_ctrlr_process_init(), that maintains a per-controller state machine to determine which initialization step is underway. Each step also has a timeout to ensure the process will terminate if the hardware is hung. Currently, only the hardware reset (toggling of CC.EN and waiting for CSTS.RDY) is done in parallel; the rest of initialization is done sequentially in nvme_ctrlr_start() as before. These steps could also be parallelized in a similar framework if measurements indicate that they take a significant amount of time. Change-Id: I02ce5863f1b5c13ad65ccd8be571085528d98bd5 Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com> |
||
---|---|---|
.. | ||
Makefile | ||
nvme_ctrlr_cmd.c | ||
nvme_ctrlr.c | ||
nvme_impl.h | ||
nvme_intel.c | ||
nvme_internal.h | ||
nvme_ns_cmd.c | ||
nvme_ns.c | ||
nvme_qpair.c | ||
nvme.c |