Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp3673298imu; Fri, 18 Jan 2019 14:57:57 -0800 (PST) X-Google-Smtp-Source: ALg8bN5MXGkzZKNp4zzSiR+ZG59WqEm5y7sTNQc8lDW074JhY2EMxr5Dl1o+Xzz+Mk7IZJ78pUSW X-Received: by 2002:a63:4e15:: with SMTP id c21mr19670877pgb.50.1547852277194; Fri, 18 Jan 2019 14:57:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547852277; cv=none; d=google.com; s=arc-20160816; b=i4Pr5c/4RF8TfYcqj2TwTpG27Gzt6Zrise7eCnHLL5HvRBHl5a1S1FAdAjKQwELskb IsWUTDOQCYqIb7McF6J8ZyMHj5iIuEndSJciX7iZgq0Mvdh29cdK8CLVj0KQOGFLO9OU N1AOY/T8ztukFvvtG9V2R0pKOTY9d1IAPqTozwvzMN/coXa2zCs8B8tNNO65d9qjQIPu mBmZST4xKe4fO/KRrIIJWMshb7lovsDPnOXuRMPnwAU20JkWm9BiouCY8T9l4Jkh0Z3E bokpB+1VkxhiyjGEn6pBD0x8y3hXGWJqgdCGkQNmg0zJSHekcmvifPa2fNlp9JzQk0QW CJ9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version; bh=auZQbowt5s5QjzxAiRB8oW0KegrxKItGnAZm7hbf3L8=; b=untsAGnoSA+UCa2blHaQrxmzIWq155bQOe8U+HU6kRNc4IMfytHrZqQ3RLdI7PeEL9 r4y6dOipL6lMcA+YBG/GGS7UkVdgPLC2hCbzxWECNWkuTx42Oj5/MsWevefSZTR6XFYl 8oPWHmPBKnVKUAvgH3o0aJLFADxW0Dz1BCagJUEgTylxY5jF34DagUfJpBw9jMJVDjiJ 3T3q2XOKscoWNCBWndZG+0zJIWA9UAVWBCaKxUpA1QzkaoCQ2n9jF/1YYiTkZjvVmazQ +HONYU3dmvcYjikNM1qoaeuC6C9D2+CKylXxHQGLpgwuNZO26RUb5tMHk9qES1Foghst 22ng== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o184si5707900pgo.591.2019.01.18.14.57.36; Fri, 18 Jan 2019 14:57:57 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729941AbfARW4R (ORCPT + 99 others); Fri, 18 Jan 2019 17:56:17 -0500 Received: from mail-oi1-f195.google.com ([209.85.167.195]:46464 "EHLO mail-oi1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729709AbfARW4Q (ORCPT ); Fri, 18 Jan 2019 17:56:16 -0500 Received: by mail-oi1-f195.google.com with SMTP id x202so10225900oif.13; Fri, 18 Jan 2019 14:56:16 -0800 (PST) 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=auZQbowt5s5QjzxAiRB8oW0KegrxKItGnAZm7hbf3L8=; b=dT4LxWLCnA1dVJbGh1Ju4VNfA3ilwRkwgOgxcOIh2oWgkBhdiaT9vwxnAmZ+ricxje DWaTnhSbV3u5HDVC79wJ8x20vbKfHDJcQpIYGHC/cICcpZkerslsGgBzd9GuOotfcajw ECeq1ak81j8VXoFlbWyBybd60/ul8PtuawUs1y8LBY17RYphknPFlrqYf8weRY7KPBIM zfutkajcCYVt2jcrkKcIasVInsK8FTaXP+5xUMgiq9ASAss5oUl3L4sDAjqOsjAQ1xsl NEzAaj2e3sJ5Z4s7Z6HzKE4RjK7Fuh+4QThrFr/CtFPevcqmbWCMTc76uOv8saYDDSkf ueBg== X-Gm-Message-State: AJcUukfjSd0h9oPveT99P9AuEyGzjC2+YLLzkXM486QdnfbOdSv8r1/L sw/q4QB3jGnRNlIgoLSlvFHmFw5A X-Received: by 2002:aca:ab53:: with SMTP id u80mr1298691oie.261.1547852175561; Fri, 18 Jan 2019 14:56:15 -0800 (PST) Received: from mail-oi1-f180.google.com (mail-oi1-f180.google.com. [209.85.167.180]) by smtp.gmail.com with ESMTPSA id q131sm2840267oih.1.2019.01.18.14.56.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 18 Jan 2019 14:56:15 -0800 (PST) Received: by mail-oi1-f180.google.com with SMTP id r62so10291218oie.1; Fri, 18 Jan 2019 14:56:15 -0800 (PST) X-Received: by 2002:aca:31cb:: with SMTP id x194mr1775720oix.213.1547852174889; Fri, 18 Jan 2019 14:56:14 -0800 (PST) MIME-Version: 1.0 References: <1545403302-22475-1-git-send-email-madalin.bucur@nxp.com> In-Reply-To: <1545403302-22475-1-git-send-email-madalin.bucur@nxp.com> From: Li Yang Date: Fri, 18 Jan 2019 16:56:03 -0600 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] soc: fsl: qbman: avoid race in clearing QMan interrupt To: madalin.bucur@nxp.com Cc: "moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE" , Netdev , Roy Pledge , lkml , linuxppc-dev , David Miller Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Dec 21, 2018 at 8:43 AM Madalin Bucur wrote: > > By clearing all interrupt sources, not only those that > already occurred, the existing code may acknowledge by > mistake interrupts that occurred after the code checks > for them. > > Signed-off-by: Madalin Bucur > Signed-off-by: Roy Pledge Applied for fix. Thanks. Suggest to forward it to stable@vger.kernel.org after merged into Linus' tree. It would be better to add "Cc: stable@vger.kernel.org" in the commit message for similar patches next time. Regards, Leo > --- > drivers/soc/fsl/qbman/qman.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/drivers/soc/fsl/qbman/qman.c b/drivers/soc/fsl/qbman/qman.c > index 52c153cd795a..636f83f781f5 100644 > --- a/drivers/soc/fsl/qbman/qman.c > +++ b/drivers/soc/fsl/qbman/qman.c > @@ -1143,18 +1143,19 @@ static void qm_mr_process_task(struct work_struct *work); > static irqreturn_t portal_isr(int irq, void *ptr) > { > struct qman_portal *p = ptr; > - > - u32 clear = QM_DQAVAIL_MASK | p->irq_sources; > u32 is = qm_in(&p->p, QM_REG_ISR) & p->irq_sources; > + u32 clear = 0; > > if (unlikely(!is)) > return IRQ_NONE; > > /* DQRR-handling if it's interrupt-driven */ > - if (is & QM_PIRQ_DQRI) > + if (is & QM_PIRQ_DQRI) { > __poll_portal_fast(p, QMAN_POLL_LIMIT); > + clear = QM_DQAVAIL_MASK | QM_PIRQ_DQRI; > + } > /* Handling of anything else that's interrupt-driven */ > - clear |= __poll_portal_slow(p, is); > + clear |= __poll_portal_slow(p, is) & QM_PIRQ_SLOW; > qm_out(&p->p, QM_REG_ISR, clear); > return IRQ_HANDLED; > } > -- > 2.1.0 >