From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4A494A051C; Fri, 26 Jun 2020 17:16:32 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1A3011C1C0; Fri, 26 Jun 2020 17:16:32 +0200 (CEST) Received: from mail-io1-f68.google.com (mail-io1-f68.google.com [209.85.166.68]) by dpdk.org (Postfix) with ESMTP id BB8EE1C1BE for ; Fri, 26 Jun 2020 17:16:30 +0200 (CEST) Received: by mail-io1-f68.google.com with SMTP id o5so10164135iow.8 for ; Fri, 26 Jun 2020 08:16:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=iUxyyFw90zlFYA3Z88ypuHt+8HLHUIorhx9kBjmeg30=; b=mOtP+jd/16aZ8HhIGuk2xGEeSMPzLP/SHy7phTyC9ejACpkOi9P3hxIcGV0S05WiPu JGHW/N9BYAbKX9gHAYYkZB2izAFD089CBlNXcBylGS7hOLuAmWnK2JDvjQxMgKbvBdqt oNHjRbEftt357gSOKpxg+oPHXqfBG3J54rLn1NibQ4/tMP3EOAyav0qwxSF5Dt95Cuna rPCg1ZYtVzOXANU7bVuIOsuUaNYZNgtNNVYMDx/p+W3K06g/huxmq7DyfTrXzziD59Jv J8cFw9518Ocj+sSyNJbZPD0q/WSZo82ZsCHEknseJSCtiO5lTCmY9p3ESG/CJR15g7cA t0wA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=iUxyyFw90zlFYA3Z88ypuHt+8HLHUIorhx9kBjmeg30=; b=B7VMqze34vrnWyNbDLbaqYaeAE9ic8exOfTHvPLRMkmb7TbtUk4UOylpx47is9SLiX TQqqr8Y505aWT2FCma+lDQYsR2rT9VeooLNd+URGRuIEasMN2t72Q2UPprQmEY5wd04A KCbHIZK+YyWYBHGEsmeZuTamFRqXWNwOp5HT4x/bhCzGIQ855HGdCcSusU7dM2G6CmrI qFRHm/TVfWVkLLzucBbVjW2f9YgiY9odSg0wFr76N4eFijaBpZfR6Np2tr6mQP0XiBOx +17lswnATQEziZx8JMTRjN1zcxaebMaWkWKRxwK53WW1GLZpkpgeIde2i+49dqJTMBF5 w0jQ== X-Gm-Message-State: AOAM531hgW6U4iu+HMbEukdfjjpoJmREWa0jQop35yf61MIF8Ddx/X/U 6cN+6r3yKvyZUd+8MmXYZGKK1blJmALeeRjeUek= X-Google-Smtp-Source: ABdhPJziR212Um4vXWhLa2yKIjGoA5sBdVEPtmL22ReRUEGGRcu7aOM7XbhLOkLYT6aciuREWTLzanABxddtS7xEs7Y= X-Received: by 2002:a6b:b344:: with SMTP id c65mr4049002iof.123.1593184590031; Fri, 26 Jun 2020 08:16:30 -0700 (PDT) MIME-Version: 1.0 References: <20200611072605.472-1-ndabilpuram@marvell.com> In-Reply-To: <20200611072605.472-1-ndabilpuram@marvell.com> From: Jerin Jacob Date: Fri, 26 Jun 2020 20:46:14 +0530 Message-ID: To: Nithin Dabilpuram , Thomas Monjalon Cc: Jerin Jacob , dpdk-dev Content-Type: text/plain; charset="UTF-8" Subject: Re: [dpdk-dev] [PATCH] common/octeontx2: retry intr callback unregister X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Thu, Jun 11, 2020 at 1:06 PM Nithin Dabilpuram wrote: > > Interrupt callback unregister can fail with -EAGAIN > when interrupt handler is active in interrupt thread. > Hence retry before reporting a failure or proceeding further. > > Signed-off-by: Nithin Dabilpuram Acked-by: Jerin Jacob Delegating to Thomas as it belongs to common/octeontx2. > --- > drivers/common/octeontx2/otx2_irq.c | 19 +++++++++++++++++-- > 1 file changed, 17 insertions(+), 2 deletions(-) > > diff --git a/drivers/common/octeontx2/otx2_irq.c b/drivers/common/octeontx2/otx2_irq.c > index fa3206a..c0137ff 100644 > --- a/drivers/common/octeontx2/otx2_irq.c > +++ b/drivers/common/octeontx2/otx2_irq.c > @@ -193,6 +193,8 @@ otx2_unregister_irq(struct rte_intr_handle *intr_handle, > rte_intr_callback_fn cb, void *data, unsigned int vec) > { > struct rte_intr_handle tmp_handle; > + uint8_t retries = 5; /* 5 ms */ > + int rc; > > if (vec > intr_handle->max_intr) { > otx2_err("Error unregistering MSI-X interrupts vec:%d > %d", > @@ -205,8 +207,21 @@ otx2_unregister_irq(struct rte_intr_handle *intr_handle, > if (tmp_handle.fd == -1) > return; > > - /* Un-register callback func from eal lib */ > - rte_intr_callback_unregister(&tmp_handle, cb, data); > + do { > + /* Un-register callback func from eal lib */ > + rc = rte_intr_callback_unregister(&tmp_handle, cb, data); > + /* Retry only if -EAGAIN */ > + if (rc != -EAGAIN) > + break; > + rte_delay_ms(1); > + retries--; > + } while (retries); > + > + if (rc < 0) { > + otx2_err("Error unregistering MSI-X intr vec %d cb, rc=%d", > + vec, rc); > + return; > + } > > otx2_base_dbg("Disable vector:0x%x for vfio (efds: %d, max:%d)", > vec, intr_handle->nb_efd, intr_handle->max_intr); > -- > 2.8.4 >