From: Zhu Lingshan <lingshan.zhu@intel.com>
To: jasowang@redhat.com, mst@redhat.com
Cc: netdev@vger.kernel.org, Zhu Lingshan <lingshan.zhu@intel.com>
Subject: [PATCH 2/7] vDPA/ifcvf: introduce new helpers to set config vector and vq vectors
Date: Mon, 10 Jan 2022 13:18:46 +0800 [thread overview]
Message-ID: <20220110051851.84807-3-lingshan.zhu@intel.com> (raw)
In-Reply-To: <20220110051851.84807-1-lingshan.zhu@intel.com>
This commit introduces new helpers to set config vector
and vq vectors in virtio common config space.
Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com>
---
drivers/vdpa/ifcvf/ifcvf_base.c | 30 ++++++++++++++++++++++++++++++
drivers/vdpa/ifcvf/ifcvf_base.h | 2 ++
2 files changed, 32 insertions(+)
diff --git a/drivers/vdpa/ifcvf/ifcvf_base.c b/drivers/vdpa/ifcvf/ifcvf_base.c
index 0b5df4cfaf06..696a41560eaa 100644
--- a/drivers/vdpa/ifcvf/ifcvf_base.c
+++ b/drivers/vdpa/ifcvf/ifcvf_base.c
@@ -15,6 +15,36 @@ struct ifcvf_adapter *vf_to_adapter(struct ifcvf_hw *hw)
return container_of(hw, struct ifcvf_adapter, vf);
}
+int ifcvf_set_vq_vector(struct ifcvf_hw *hw, u16 qid, int vector)
+{
+ struct virtio_pci_common_cfg __iomem *cfg = hw->common_cfg;
+ struct ifcvf_adapter *ifcvf = vf_to_adapter(hw);
+
+ ifc_iowrite16(qid, &cfg->queue_select);
+ ifc_iowrite16(vector, &cfg->queue_msix_vector);
+ if (ifc_ioread16(&cfg->queue_msix_vector) == VIRTIO_MSI_NO_VECTOR) {
+ IFCVF_ERR(ifcvf->pdev, "No msix vector for queue %u\n", qid);
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+int ifcvf_set_config_vector(struct ifcvf_hw *hw, int vector)
+{
+ struct virtio_pci_common_cfg __iomem *cfg = hw->common_cfg;
+ struct ifcvf_adapter *ifcvf = vf_to_adapter(hw);
+
+ cfg = hw->common_cfg;
+ ifc_iowrite16(vector, &cfg->msix_config);
+ if (ifc_ioread16(&cfg->msix_config) == VIRTIO_MSI_NO_VECTOR) {
+ IFCVF_ERR(ifcvf->pdev, "No msix vector for device config\n");
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
static void __iomem *get_cap_addr(struct ifcvf_hw *hw,
struct virtio_pci_cap *cap)
{
diff --git a/drivers/vdpa/ifcvf/ifcvf_base.h b/drivers/vdpa/ifcvf/ifcvf_base.h
index c924a7673afb..1d5431040d7d 100644
--- a/drivers/vdpa/ifcvf/ifcvf_base.h
+++ b/drivers/vdpa/ifcvf/ifcvf_base.h
@@ -157,4 +157,6 @@ u16 ifcvf_get_vq_state(struct ifcvf_hw *hw, u16 qid);
int ifcvf_set_vq_state(struct ifcvf_hw *hw, u16 qid, u16 num);
struct ifcvf_adapter *vf_to_adapter(struct ifcvf_hw *hw);
int ifcvf_probed_virtio_net(struct ifcvf_hw *hw);
+int ifcvf_set_vq_vector(struct ifcvf_hw *hw, u16 qid, int vector);
+int ifcvf_set_config_vector(struct ifcvf_hw *hw, int vector);
#endif /* _IFCVF_H_ */
--
2.27.0
next prev parent reply other threads:[~2022-01-10 5:26 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-10 5:18 [PATCH 0/7] Supoort shared irq for virtqueues Zhu Lingshan
2022-01-10 5:18 ` [PATCH 1/7] vDPA/ifcvf: implement IO read/write helpers in the header file Zhu Lingshan
2022-01-10 5:18 ` Zhu Lingshan [this message]
2022-01-10 6:15 ` [PATCH 2/7] vDPA/ifcvf: introduce new helpers to set config vector and vq vectors Michael S. Tsirkin
2022-01-10 5:18 ` [PATCH 3/7] vDPA/ifcvf: implement device MSIX vector allocation helper Zhu Lingshan
2022-01-10 6:12 ` Michael S. Tsirkin
2022-01-10 5:18 ` [PATCH 4/7] vDPA/ifcvf: implement shared irq handlers for vqs Zhu Lingshan
2022-01-10 6:10 ` Michael S. Tsirkin
2022-01-10 5:18 ` [PATCH 5/7] vDPA/ifcvf: irq request helpers for both shared and per_vq irq Zhu Lingshan
2022-01-10 6:09 ` Michael S. Tsirkin
2022-01-10 5:18 ` [PATCH 6/7] vDPA/ifcvf: implement config interrupt request helper Zhu Lingshan
2022-01-10 6:07 ` Michael S. Tsirkin
2022-01-10 5:18 ` [PATCH 7/7] vDPA/ifcvf: improve irq requester, to handle per_vq/shared/config irq Zhu Lingshan
2022-01-10 6:04 ` Michael S. Tsirkin
[not found] ` <bc210134-4b1c-1b23-47f3-c90fb4b91b65@intel.com>
[not found] ` <d7610c1c-611f-86e2-5330-c4783db078f5@intel.com>
2022-01-13 9:52 ` Michael S. Tsirkin
2022-01-13 10:10 ` Zhu, Lingshan
2022-01-13 10:29 ` Michael S. Tsirkin
[not found] ` <7546243d-1561-51fb-55d3-fe0ff1651e48@intel.com>
2022-01-14 13:36 ` Michael S. Tsirkin
2022-01-18 3:07 ` Zhu, Lingshan
2022-01-18 8:07 ` Michael S. Tsirkin
2022-01-13 9:54 ` Michael S. Tsirkin
2022-01-10 6:05 ` [PATCH 0/7] Supoort shared irq for virtqueues Michael S. Tsirkin
2022-01-13 10:30 ` Michael S. Tsirkin
-- strict thread matches above, loose matches on Subject: below --
2022-01-10 5:19 Zhu Lingshan
2022-01-10 5:19 ` [PATCH 2/7] vDPA/ifcvf: introduce new helpers to set config vector and vq vectors Zhu Lingshan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220110051851.84807-3-lingshan.zhu@intel.com \
--to=lingshan.zhu@intel.com \
--cc=jasowang@redhat.com \
--cc=mst@redhat.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.