Use pause() instead of DELAY() when polling for completion of admin
commands during controller initialization. DELAY() does not work here during config_intrhook context - we need to explicitly relinquish the CPU for the admin command completion to get processed. Sponsored by: Intel Reported by: Adam Brooks <adam.j.brooks@intel.com> Reviewed by: carl MFC after: 3 days
This commit is contained in:
parent
e8f25c6266
commit
8e0ac13f5a
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=253438
@ -455,7 +455,7 @@ nvme_ctrlr_identify(struct nvme_controller *ctrlr)
|
||||
nvme_ctrlr_cmd_identify_controller(ctrlr, &ctrlr->cdata,
|
||||
nvme_completion_poll_cb, &status);
|
||||
while (status.done == FALSE)
|
||||
DELAY(5);
|
||||
pause("nvme", 1);
|
||||
if (nvme_completion_is_error(&status.cpl)) {
|
||||
nvme_printf(ctrlr, "nvme_identify_controller failed!\n");
|
||||
return (ENXIO);
|
||||
@ -487,7 +487,7 @@ nvme_ctrlr_set_num_qpairs(struct nvme_controller *ctrlr)
|
||||
nvme_ctrlr_cmd_set_num_queues(ctrlr, ctrlr->num_io_queues,
|
||||
nvme_completion_poll_cb, &status);
|
||||
while (status.done == FALSE)
|
||||
DELAY(5);
|
||||
pause("nvme", 1);
|
||||
if (nvme_completion_is_error(&status.cpl)) {
|
||||
nvme_printf(ctrlr, "nvme_set_num_queues failed!\n");
|
||||
return (ENXIO);
|
||||
@ -540,7 +540,7 @@ nvme_ctrlr_create_qpairs(struct nvme_controller *ctrlr)
|
||||
nvme_ctrlr_cmd_create_io_cq(ctrlr, qpair, qpair->vector,
|
||||
nvme_completion_poll_cb, &status);
|
||||
while (status.done == FALSE)
|
||||
DELAY(5);
|
||||
pause("nvme", 1);
|
||||
if (nvme_completion_is_error(&status.cpl)) {
|
||||
nvme_printf(ctrlr, "nvme_create_io_cq failed!\n");
|
||||
return (ENXIO);
|
||||
@ -550,7 +550,7 @@ nvme_ctrlr_create_qpairs(struct nvme_controller *ctrlr)
|
||||
nvme_ctrlr_cmd_create_io_sq(qpair->ctrlr, qpair,
|
||||
nvme_completion_poll_cb, &status);
|
||||
while (status.done == FALSE)
|
||||
DELAY(5);
|
||||
pause("nvme", 1);
|
||||
if (nvme_completion_is_error(&status.cpl)) {
|
||||
nvme_printf(ctrlr, "nvme_create_io_sq failed!\n");
|
||||
return (ENXIO);
|
||||
|
Loading…
Reference in New Issue
Block a user