From: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
To: Yuval Shaia <yuval.shaia@oracle.com>,
dmitry.fleytman@gmail.com, jasowang@redhat.com,
eblake@redhat.com, armbru@redhat.com, pbonzini@redhat.com,
qemu-devel@nongnu.org, shamir.rabinovitch@oracle.com
Subject: Re: [Qemu-devel] [PATCH v2 02/22] hw/rdma: Add ability to force notification without re-arm
Date: Sat, 10 Nov 2018 19:56:30 +0200 [thread overview]
Message-ID: <da7d3de1-319f-f9e1-aff6-43a865ce24e6@gmail.com> (raw)
In-Reply-To: <20181108160818.5485-3-yuval.shaia@oracle.com>
On 11/8/18 6:07 PM, Yuval Shaia wrote:
> Upon completion of incoming packet the device pushes CQE to driver's RX
> ring and notify the driver (msix).
> While for data-path incoming packets the driver needs the ability to
> control whether it wished to receive interrupts or not, for control-path
> packets such as incoming MAD the driver needs to be notified anyway, it
> even do not need to re-arm the notification bit.
>
> Enhance the notification field to support this.
>
> Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
> ---
> hw/rdma/rdma_rm.c | 12 ++++++++++--
> hw/rdma/rdma_rm_defs.h | 8 +++++++-
> hw/rdma/vmw/pvrdma_qp_ops.c | 6 ++++--
> 3 files changed, 21 insertions(+), 5 deletions(-)
>
> diff --git a/hw/rdma/rdma_rm.c b/hw/rdma/rdma_rm.c
> index 8d59a42cd1..4f10fcabcc 100644
> --- a/hw/rdma/rdma_rm.c
> +++ b/hw/rdma/rdma_rm.c
> @@ -263,7 +263,7 @@ int rdma_rm_alloc_cq(RdmaDeviceResources *dev_res, RdmaBackendDev *backend_dev,
> }
>
> cq->opaque = opaque;
> - cq->notify = false;
> + cq->notify = CNT_CLEAR;
>
> rc = rdma_backend_create_cq(backend_dev, &cq->backend_cq, cqe);
> if (rc) {
> @@ -291,7 +291,10 @@ void rdma_rm_req_notify_cq(RdmaDeviceResources *dev_res, uint32_t cq_handle,
> return;
> }
>
> - cq->notify = notify;
> + if (cq->notify != CNT_SET) {
> + cq->notify = notify ? CNT_ARM : CNT_CLEAR;
> + }
> +
> pr_dbg("notify=%d\n", cq->notify);
> }
>
> @@ -349,6 +352,11 @@ int rdma_rm_alloc_qp(RdmaDeviceResources *dev_res, uint32_t pd_handle,
> return -EINVAL;
> }
>
> + if (qp_type == IBV_QPT_GSI) {
> + scq->notify = CNT_SET;
> + rcq->notify = CNT_SET;
> + }
> +
> qp = res_tbl_alloc(&dev_res->qp_tbl, &rm_qpn);
> if (!qp) {
> return -ENOMEM;
> diff --git a/hw/rdma/rdma_rm_defs.h b/hw/rdma/rdma_rm_defs.h
> index 7228151239..9b399063d3 100644
> --- a/hw/rdma/rdma_rm_defs.h
> +++ b/hw/rdma/rdma_rm_defs.h
> @@ -49,10 +49,16 @@ typedef struct RdmaRmPD {
> uint32_t ctx_handle;
> } RdmaRmPD;
>
> +typedef enum CQNotificationType {
> + CNT_CLEAR,
> + CNT_ARM,
> + CNT_SET,
> +} CQNotificationType;
> +
> typedef struct RdmaRmCQ {
> RdmaBackendCQ backend_cq;
> void *opaque;
> - bool notify;
> + CQNotificationType notify;
> } RdmaRmCQ;
>
> /* MR (DMA region) */
> diff --git a/hw/rdma/vmw/pvrdma_qp_ops.c b/hw/rdma/vmw/pvrdma_qp_ops.c
> index c668afd0ed..762700a205 100644
> --- a/hw/rdma/vmw/pvrdma_qp_ops.c
> +++ b/hw/rdma/vmw/pvrdma_qp_ops.c
> @@ -89,8 +89,10 @@ static int pvrdma_post_cqe(PVRDMADev *dev, uint32_t cq_handle,
> pvrdma_ring_write_inc(&dev->dsr_info.cq);
>
> pr_dbg("cq->notify=%d\n", cq->notify);
> - if (cq->notify) {
> - cq->notify = false;
> + if (cq->notify != CNT_CLEAR) {
> + if (cq->notify == CNT_ARM) {
> + cq->notify = CNT_CLEAR;
> + }
> post_interrupt(dev, INTR_VEC_CMD_COMPLETION_Q);
> }
>
Reviewed-by: Marcel Apfelbaum<marcel.apfelbaum@gmail.com>
Thanks,
Marcel
next prev parent reply other threads:[~2018-11-10 19:02 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-08 16:07 [Qemu-devel] [PATCH v2 00/22] Add support for RDMA MAD Yuval Shaia
2018-11-08 16:07 ` [Qemu-devel] [PATCH v2 01/22] contrib/rdmacm-mux: Add implementation of RDMA User MAD multiplexer Yuval Shaia
2018-11-10 20:10 ` Shamir Rabinovitch
2018-11-11 7:38 ` Yuval Shaia
2018-11-08 16:07 ` [Qemu-devel] [PATCH v2 02/22] hw/rdma: Add ability to force notification without re-arm Yuval Shaia
2018-11-10 17:56 ` Marcel Apfelbaum [this message]
2018-11-08 16:07 ` [Qemu-devel] [PATCH v2 03/22] hw/rdma: Return qpn 1 if ibqp is NULL Yuval Shaia
2018-11-10 17:59 ` Marcel Apfelbaum
2018-11-11 9:12 ` Yuval Shaia
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 04/22] hw/rdma: Abort send-op if fail to create addr handler Yuval Shaia
2018-11-10 17:59 ` Marcel Apfelbaum
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 05/22] hw/rdma: Add support for MAD packets Yuval Shaia
2018-11-10 18:15 ` Marcel Apfelbaum
2018-11-11 10:31 ` Yuval Shaia
2018-11-17 11:35 ` Marcel Apfelbaum
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 06/22] hw/pvrdma: Make function reset_device return void Yuval Shaia
2018-11-10 18:17 ` Marcel Apfelbaum
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 07/22] hw/pvrdma: Make default pkey 0xFFFF Yuval Shaia
2018-11-10 18:17 ` Marcel Apfelbaum
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 08/22] hw/pvrdma: Set the correct opcode for recv completion Yuval Shaia
2018-11-10 18:18 ` Marcel Apfelbaum
2018-11-11 8:43 ` Yuval Shaia
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 09/22] hw/pvrdma: Set the correct opcode for send completion Yuval Shaia
2018-11-10 18:21 ` Marcel Apfelbaum
2018-11-11 8:04 ` Yuval Shaia
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 10/22] json: Define new QMP message for pvrdma Yuval Shaia
2018-11-10 18:25 ` Marcel Apfelbaum
2018-11-11 7:50 ` Yuval Shaia
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 11/22] hw/pvrdma: Add support to allow guest to configure GID table Yuval Shaia
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 12/22] vmxnet3: Move some definitions to header file Yuval Shaia
2018-11-12 13:56 ` Dmitry Fleytman
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 13/22] hw/pvrdma: Make sure PCI function 0 is vmxnet3 Yuval Shaia
2018-11-10 18:27 ` Marcel Apfelbaum
2018-11-11 7:45 ` Yuval Shaia
2018-11-17 11:41 ` Marcel Apfelbaum
2018-11-18 9:16 ` Yuval Shaia
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 14/22] hw/rdma: Initialize node_guid from vmxnet3 mac address Yuval Shaia
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 15/22] hw/pvrdma: Make device state depend on Ethernet function state Yuval Shaia
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 16/22] hw/pvrdma: Fill all CQE fields Yuval Shaia
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 17/22] hw/pvrdma: Fill error code in command's response Yuval Shaia
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 18/22] hw/rdma: Remove unneeded code that handles more that one port Yuval Shaia
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 19/22] vl: Introduce shutdown_notifiers Yuval Shaia
2018-11-08 16:26 ` Cornelia Huck
2018-11-08 20:45 ` Yuval Shaia
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 20/22] hw/pvrdma: Clean device's resource when system is shutdown Yuval Shaia
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 21/22] rdma: Do not use bitmap_zero_extend to fee bitmap Yuval Shaia
2018-11-08 16:08 ` [Qemu-devel] [PATCH v2 22/22] rdma: Do not call rdma_backend_del_gid on an empty gid Yuval Shaia
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=da7d3de1-319f-f9e1-aff6-43a865ce24e6@gmail.com \
--to=marcel.apfelbaum@gmail.com \
--cc=armbru@redhat.com \
--cc=dmitry.fleytman@gmail.com \
--cc=eblake@redhat.com \
--cc=jasowang@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=shamir.rabinovitch@oracle.com \
--cc=yuval.shaia@oracle.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).