All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yuval Shaia <yuval.shaia-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
To: Adit Ranadive <aditr-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
Cc: "dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org"
	<dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	"linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	pv-drivers <pv-drivers-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>,
	Bryan Tan <bryantan-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>,
	"Jorgen S. Hansen"
	<jhansen-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>,
	Aditya Sarwade <asarwade-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH v1 for-rc] RDMA/vmw_pvrdma: Report CQ missed events
Date: Fri, 11 Aug 2017 00:01:03 +0300	[thread overview]
Message-ID: <20170810210103.GA9201@yuvallap> (raw)
In-Reply-To: <306A2D1C-3070-4BFA-B532-D5020F5D185A-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>

On Thu, Aug 10, 2017 at 08:55:42PM +0000, Adit Ranadive wrote:
> On 8/10/17, 1:02 PM, "Yuval Shaia" <yuval.shaia-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org> wrote:
> > On Thu, Aug 10, 2017 at 12:05:02PM -0700, Adit Ranadive wrote:
> > > From: Bryan Tan <bryantan-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
> > > 
> > > There is a chance of a race between arming the CQ and receiving
> > > completions. By reporting CQ missed events any ULPs should poll
> > > again to get the completions.
> > > 
> > > Fixes: 29c8d9eba550 ("IB: Add vmw_pvrdma driver")
> > > Acked-by: Aditya Sarwade <asarwade-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
> > > Signed-off-by: Bryan Tan <bryantan-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
> > > Signed-off-by: Adit Ranadive <aditr-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
> > > ---
> > > v0 -> v1:
> > >  - Check for invalid ring index.
> > > ---
> > >  drivers/infiniband/hw/vmw_pvrdma/pvrdma_cq.c | 17 ++++++++++++++++-
> > >  1 file changed, 16 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_cq.c b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_cq.c
> > > index 69bda61..90aa326 100644
> > > --- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_cq.c
> > > +++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_cq.c
> > > @@ -65,13 +65,28 @@ int pvrdma_req_notify_cq(struct ib_cq *ibcq,
> > >  	struct pvrdma_dev *dev = to_vdev(ibcq->device);
> > >  	struct pvrdma_cq *cq = to_vcq(ibcq);
> > >  	u32 val = cq->cq_handle;
> > > +	unsigned long flags;
> > > +	int has_data = 0;
> > >  
> > >  	val |= (notify_flags & IB_CQ_SOLICITED_MASK) == IB_CQ_SOLICITED ?
> > >  		PVRDMA_UAR_CQ_ARM_SOL : PVRDMA_UAR_CQ_ARM;
> > >  
> > > +	spin_lock_irqsave(&cq->cq_lock, flags);
> > > +
> > >  	pvrdma_write_uar_cq(dev, val);
> > >  
> > > -	return 0;
> > > +	if (notify_flags & IB_CQ_REPORT_MISSED_EVENTS) {
> > > +		unsigned int head;
> > > +
> > > +		has_data = pvrdma_idx_ring_has_data(&cq->ring_state->rx,
> > > +						    cq->ibcq.cqe, &head);
> > > +		if (unlikely(has_data == PVRDMA_INVALID_IDX))
> > > +			dev_err(&dev->pdev->dev, "CQ ring state invalid\n");
> > 
> > I see the point of checking the return value but per my understanding, and
> > correct me if i'm wrong, this rare case points to a corrupted ring which
> > can happen *only* in case of a bug so it is not "error" by nature.
> > If this is correct then i don't see the point of having this "question" on
> > every call to ib_notify_cq.
> > 
> > Do you agree to move this check to pvrdma_idx_ring_has_data and even make
> > the function use BUG_ON?
> 
> I'll concede that while it points to a corrupted ring (through a device bug, 
> memory corruption) but we want to report it as a device error to maintain
> consistency in our driver and give ULPs a chance to clean up. Also, the compiler
> optimization should help here.

Great, i understand that.
So, at least can you consider moving this dev_err into
pvrdma_idx_ring_has_data so callers do not need to handle errors?

btw, same apply to pvrdma_idx_ring_has_space

> 
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2017-08-10 21:01 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-10 19:05 [PATCH v1 for-rc] RDMA/vmw_pvrdma: Report CQ missed events Adit Ranadive
     [not found] ` <1502391902-5674-1-git-send-email-aditr-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
2017-08-10 20:02   ` Yuval Shaia
2017-08-10 20:55     ` Adit Ranadive
     [not found]       ` <306A2D1C-3070-4BFA-B532-D5020F5D185A-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
2017-08-10 21:01         ` Yuval Shaia [this message]
2017-08-10 21:26           ` Adit Ranadive
     [not found]             ` <B2047B7A-49AA-4899-86F9-E80039033662-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
2017-08-10 21:33               ` Yuval Shaia
2017-08-16 14:59                 ` Doug Ledford
     [not found]                   ` <1502895592.33760.8.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-08-30 15:31                     ` [Pv-drivers] " Steven Rostedt

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=20170810210103.GA9201@yuvallap \
    --to=yuval.shaia-qhclzuegtsvqt0dzr+alfa@public.gmane.org \
    --cc=aditr-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org \
    --cc=asarwade-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org \
    --cc=bryantan-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org \
    --cc=dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=jhansen-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=pv-drivers-pghWNbHTmq7QT0dZR+AlfA@public.gmane.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.