hw/nvme: split nvme_init_sq/nvme_init_cq into helpers
We will make a benefit from this split in later patches. Reviewed-by: Klaus Jensen <k.jensen@samsung.com> Acked-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Alexander Mikhalitsyn <aleksandr.mikhalitsyn@futurfusion.io> Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
Alexander Mikhalitsyn committed
Jun 11, 2026 at 20:08 UTC
77c2c3eb01d0a218c3e03fdb5c609424a76496de
1 file changed
+37
-22
hw/nvme/ctrl.c
+37
-22
@@ -4869,18 +4869,14 @@ static uint16_t nvme_del_sq(NvmeCtrl *n, NvmeRequest *req)
4869
return NVME_SUCCESS;
4870
}
4871
4872
-static void nvme_init_sq(NvmeSQueue *sq, NvmeCtrl *n, uint64_t dma_addr,
4873
- uint16_t sqid, uint16_t cqid, uint16_t size)
4872
+static void __nvme_init_sq(NvmeSQueue *sq)
4873
{
4874
+ NvmeCtrl *n = sq->ctrl;
4875
+ uint16_t sqid = sq->sqid;
4876
+ uint16_t cqid = sq->cqid;
4877
int i;
4878
NvmeCQueue *cq;
4879
4878
- sq->ctrl = n;
4879
- sq->dma_addr = dma_addr;
4880
- sq->sqid = sqid;
4881
- sq->size = size;
4882
- sq->cqid = cqid;
4883
- sq->head = sq->tail = 0;
4880
sq->io_req = g_new0(NvmeRequest, sq->size);
4881
4882
QTAILQ_INIT(&sq->req_list);
@@ -4910,6 +4906,18 @@ static void nvme_init_sq(NvmeSQueue *sq, NvmeCtrl *n, uint64_t dma_addr,
4906
n->sq[sqid] = sq;
4907
}
4908
4909
+static void nvme_init_sq(NvmeSQueue *sq, NvmeCtrl *n, uint64_t dma_addr,
4910
+ uint16_t sqid, uint16_t cqid, uint16_t size)
4911
+{
4912
+ sq->ctrl = n;
4913
+ sq->dma_addr = dma_addr;
4914
+ sq->sqid = sqid;
4915
+ sq->size = size;
4916
+ sq->cqid = cqid;
4917
+ sq->head = sq->tail = 0;
4918
+ __nvme_init_sq(sq);
4919
+}
4920
+
4921
static uint16_t nvme_create_sq(NvmeCtrl *n, NvmeRequest *req)
4922
{
4923
NvmeSQueue *sq;
@@ -5570,25 +5578,16 @@ static uint16_t nvme_del_cq(NvmeCtrl *n, NvmeRequest *req)
5578
return NVME_SUCCESS;
5579
}
5580
5573
-static void nvme_init_cq(NvmeCQueue *cq, NvmeCtrl *n, uint64_t dma_addr,
5574
- uint16_t cqid, uint16_t vector, uint16_t size,
5575
- uint16_t irq_enabled)
5581
+static void __nvme_init_cq(NvmeCQueue *cq)
5582
{
5583
+ NvmeCtrl *n = cq->ctrl;
5584
PCIDevice *pci = PCI_DEVICE(n);
5585
+ uint16_t cqid = cq->cqid;
5586
5579
- if (msix_present(pci) && irq_enabled) {
5580
- msix_vector_use(pci, vector);
5587
+ if (msix_present(pci) && cq->irq_enabled) {
5588
+ msix_vector_use(pci, cq->vector);
5589
}
5590
5583
- cq->ctrl = n;
5584
- cq->cqid = cqid;
5585
- cq->size = size;
5586
- cq->dma_addr = dma_addr;
5587
- cq->phase = 1;
5588
- cq->irq_enabled = irq_enabled;
5589
- cq->vector = vector;
5590
- cq->head = cq->tail = 0;
5591
- QTAILQ_INIT(&cq->req_list);
5591
QTAILQ_INIT(&cq->sq_list);
5592
if (n->dbbuf_enabled) {
5593
cq->db_addr = n->dbbuf_dbs + (cqid << 3) + (1 << 2);
@@ -5605,6 +5604,22 @@ static void nvme_init_cq(NvmeCQueue *cq, NvmeCtrl *n, uint64_t dma_addr,
5604
&DEVICE(cq->ctrl)->mem_reentrancy_guard);
5605
}
5606
5607
+static void nvme_init_cq(NvmeCQueue *cq, NvmeCtrl *n, uint64_t dma_addr,
5608
+ uint16_t cqid, uint16_t vector, uint16_t size,
5609
+ uint16_t irq_enabled)
5610
+{
5611
+ cq->ctrl = n;
5612
+ cq->cqid = cqid;
5613
+ cq->size = size;
5614
+ cq->dma_addr = dma_addr;
5615
+ cq->phase = 1;
5616
+ cq->irq_enabled = irq_enabled;
5617
+ cq->vector = vector;
5618
+ cq->head = cq->tail = 0;
5619
+ QTAILQ_INIT(&cq->req_list);
5620
+ __nvme_init_cq(cq);
5621
+}
5622
+
5623
static uint16_t nvme_create_cq(NvmeCtrl *n, NvmeRequest *req)
5624
{
5625
NvmeCQueue *cq;