@samitouri / QOSamiQemu / commits / 77c2c3eb01

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;