Lines Matching refs:qid

72 static int pds_vdpa_set_vq_address(struct vdpa_device *vdpa_dev, u16 qid,  in pds_vdpa_set_vq_address()  argument
77 pdsv->vqs[qid].desc_addr = desc_addr; in pds_vdpa_set_vq_address()
78 pdsv->vqs[qid].avail_addr = driver_addr; in pds_vdpa_set_vq_address()
79 pdsv->vqs[qid].used_addr = device_addr; in pds_vdpa_set_vq_address()
84 static void pds_vdpa_set_vq_num(struct vdpa_device *vdpa_dev, u16 qid, u32 num) in pds_vdpa_set_vq_num() argument
88 pdsv->vqs[qid].q_len = num; in pds_vdpa_set_vq_num()
91 static void pds_vdpa_kick_vq(struct vdpa_device *vdpa_dev, u16 qid) in pds_vdpa_kick_vq() argument
95 iowrite16(qid, pdsv->vqs[qid].notify); in pds_vdpa_kick_vq()
98 static void pds_vdpa_set_vq_cb(struct vdpa_device *vdpa_dev, u16 qid, in pds_vdpa_set_vq_cb() argument
103 pdsv->vqs[qid].event_cb = *cb; in pds_vdpa_set_vq_cb()
117 static void pds_vdpa_release_irq(struct pds_vdpa_device *pdsv, int qid) in pds_vdpa_release_irq() argument
119 if (pdsv->vqs[qid].irq == VIRTIO_MSI_NO_VECTOR) in pds_vdpa_release_irq()
122 free_irq(pdsv->vqs[qid].irq, &pdsv->vqs[qid]); in pds_vdpa_release_irq()
123 pdsv->vqs[qid].irq = VIRTIO_MSI_NO_VECTOR; in pds_vdpa_release_irq()
126 static void pds_vdpa_set_vq_ready(struct vdpa_device *vdpa_dev, u16 qid, bool ready) in pds_vdpa_set_vq_ready() argument
135 __func__, qid, pdsv->vqs[qid].ready, ready); in pds_vdpa_set_vq_ready()
136 if (ready == pdsv->vqs[qid].ready) in pds_vdpa_set_vq_ready()
148 err = pds_vdpa_cmd_init_vq(pdsv, qid, invert_idx, &pdsv->vqs[qid]); in pds_vdpa_set_vq_ready()
151 qid, ERR_PTR(err)); in pds_vdpa_set_vq_ready()
155 err = pds_vdpa_cmd_reset_vq(pdsv, qid, invert_idx, &pdsv->vqs[qid]); in pds_vdpa_set_vq_ready()
158 __func__, qid, ERR_PTR(err)); in pds_vdpa_set_vq_ready()
161 pdsv->vqs[qid].ready = ready; in pds_vdpa_set_vq_ready()
164 static bool pds_vdpa_get_vq_ready(struct vdpa_device *vdpa_dev, u16 qid) in pds_vdpa_get_vq_ready() argument
168 return pdsv->vqs[qid].ready; in pds_vdpa_get_vq_ready()
171 static int pds_vdpa_set_vq_state(struct vdpa_device *vdpa_dev, u16 qid, in pds_vdpa_set_vq_state() argument
181 if (pdsv->vqs[qid].ready) { in pds_vdpa_set_vq_state()
215 pdsv->vqs[qid].avail_idx = avail; in pds_vdpa_set_vq_state()
216 pdsv->vqs[qid].used_idx = used; in pds_vdpa_set_vq_state()
221 static int pds_vdpa_get_vq_state(struct vdpa_device *vdpa_dev, u16 qid, in pds_vdpa_get_vq_state() argument
231 if (pdsv->vqs[qid].ready) { in pds_vdpa_get_vq_state()
236 avail = pdsv->vqs[qid].avail_idx; in pds_vdpa_get_vq_state()
237 used = pdsv->vqs[qid].used_idx; in pds_vdpa_get_vq_state()
257 pds_vdpa_get_vq_notification(struct vdpa_device *vdpa_dev, u16 qid) in pds_vdpa_get_vq_notification() argument
263 area.addr = pdsv->vqs[qid].notify_pa; in pds_vdpa_get_vq_notification()
274 static int pds_vdpa_get_vq_irq(struct vdpa_device *vdpa_dev, u16 qid) in pds_vdpa_get_vq_irq() argument
278 return pdsv->vqs[qid].irq; in pds_vdpa_get_vq_irq()
386 int max_vq, nintrs, qid, err; in pds_vdpa_request_irqs() local
397 for (qid = 0; qid < pdsv->num_vqs; ++qid) { in pds_vdpa_request_irqs()
398 int irq = pci_irq_vector(pdev, qid); in pds_vdpa_request_irqs()
400 snprintf(pdsv->vqs[qid].irq_name, sizeof(pdsv->vqs[qid].irq_name), in pds_vdpa_request_irqs()
401 "vdpa-%s-%d", dev_name(dev), qid); in pds_vdpa_request_irqs()
404 pdsv->vqs[qid].irq_name, in pds_vdpa_request_irqs()
405 &pdsv->vqs[qid]); in pds_vdpa_request_irqs()
408 __func__, qid, ERR_PTR(err)); in pds_vdpa_request_irqs()
412 pdsv->vqs[qid].irq = irq; in pds_vdpa_request_irqs()
420 while (qid--) in pds_vdpa_request_irqs()
421 pds_vdpa_release_irq(pdsv, qid); in pds_vdpa_request_irqs()
434 int qid; in pds_vdpa_release_irqs() local
439 for (qid = 0; qid < pdsv->num_vqs; qid++) in pds_vdpa_release_irqs()
440 pds_vdpa_release_irq(pdsv, qid); in pds_vdpa_release_irqs()
488 static void pds_vdpa_init_vqs_entry(struct pds_vdpa_device *pdsv, int qid, in pds_vdpa_init_vqs_entry() argument
491 memset(&pdsv->vqs[qid], 0, sizeof(pdsv->vqs[0])); in pds_vdpa_init_vqs_entry()
492 pdsv->vqs[qid].qid = qid; in pds_vdpa_init_vqs_entry()
493 pdsv->vqs[qid].pdsv = pdsv; in pds_vdpa_init_vqs_entry()
494 pdsv->vqs[qid].ready = false; in pds_vdpa_init_vqs_entry()
495 pdsv->vqs[qid].irq = VIRTIO_MSI_NO_VECTOR; in pds_vdpa_init_vqs_entry()
496 pdsv->vqs[qid].notify = notify; in pds_vdpa_init_vqs_entry()