Received: by 2002:ab2:6857:0:b0:1ef:ffd0:ce49 with SMTP id l23csp2573228lqp; Mon, 25 Mar 2024 03:07:53 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXgqZLiQeQYRXTEL6PGWjFBb8jTDvstGYGlBPLfJq/snFJS1sKY6bPpY/yPieuPWu6liPBg1YhGSRhG/A38/lxnb2oq9qIcH6J+St1SaQ== X-Google-Smtp-Source: AGHT+IHCMv0aoZUyF6IqSQz1+w/LPohsUeas74JmEvW8C6uCZqHZX1z+iAc+57x1IJZ66xoc9FQ+ X-Received: by 2002:a05:620a:3185:b0:788:4e71:bd52 with SMTP id bi5-20020a05620a318500b007884e71bd52mr9584425qkb.60.1711361272856; Mon, 25 Mar 2024 03:07:52 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711361272; cv=pass; d=google.com; s=arc-20160816; b=CoI3R0yixqQFKksMxi8JsnnntZ1CMStqiv+a8R2hyEA7tJwM+/fjvfN3ydh+2dh88Y n3Bk79SMsNSNsUzaOCJzMu0jrDbS/FuYG/xr7NMC1AIY01TGYDH00sUs54ZjFZSuUuyX UDFzxlOvR4Srbs7uJrBmpNxZYc3BaEO1ZRT+gDpyT1r8j2NH9ni6Uw4gSVyrDEBS+t81 u7LZnggg3OtcPRBnOrUmSrI4YZdoNkVT7TWYpCNWZK3/xVt0jwVsPbeU5vAXFQUVgozw Lee6a+5z+zVAaZKleOccMo6Q/ODwcgmN6eNyQFovTsg5+sw/aCmYEF5h65qbrGR0YDIi /E0Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=EXjx5m1tXq8rTq6sJVKb6uEbdu18eMwXiQ9fzxeaIUU=; fh=UZBjq8x3IS5QFVi63dcFeSlw7nCVoeaE32RVP//6mHo=; b=URor2J2V2HszEcYm2C1OOcaVk7AJC1f35PwtYILIgog1pYWOEp67Ioz/HJWKdAsLVB U4WPvPphgLUf0GZCX/8ngwbWbRAbEJS3GNstFnw4QZBoT4k4lCJn9zlYflYMpl4RreKz bEy4RIvMPi2ubbjsPT/Zgn9nua2OKKbOO9EoEjJHrKAPClaKmx5PTon+zmxA9MFTJ3TN zX4v8+fUCiKtvLgjKi36CiZR2oLD7Won4L6tFm3shKCSvBXMUm9c8umUmwCCtFv3GFSO zg8lwHl1p7T8xR7YcKqX9TYGkId22ut3PsKDbbkjrxc5Eq/aTuwSmMNpyzXtrHxtLaat slbw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=diiEXJF8; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-116104-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-116104-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id v26-20020ae9e31a000000b00788312271f2si4970988qkf.472.2024.03.25.03.07.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Mar 2024 03:07:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-116104-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=diiEXJF8; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-116104-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-116104-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 5B8DA1C28112 for ; Mon, 25 Mar 2024 10:07:52 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B732B28DF81; Mon, 25 Mar 2024 03:31:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="diiEXJF8" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2033D27F095; Sun, 24 Mar 2024 23:39:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711323600; cv=none; b=cW+F+LRwKdjhsRrKW9hPkE6jJ/O9AiqFsOEmr0jLeXhZoHzrv9SgaOkbovTq1v2yONG43yqgLI7M7O4aNzzKcOrPpXzquNNE5WjFkQGAu2l/iPPtaRRmult14ITn/pVRbfsVyDSR192ZP5OamVxhg28bmmt1Ji0dHoTGto6ARlE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711323600; c=relaxed/simple; bh=XRGuTil339vx5L3x3APITUtg4LgUNQ85iCV4CT+4v1w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=V3wMG+GDkrbOIWbkXEIEAqIXJThyKeQlF108AEw3m66oyobmC2r1Cf5tT5pkXdEGXzWUR3YVf60ITnNx7Q8jWBxt/6vRx4bxb87gC/9fa7vfd12A1Mq+ox21oY/RCSJybmsgF9SUx6wX2avrncxg2DYDns+HkFUv9TTzFNEkVLA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=diiEXJF8; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 60A4BC433C7; Sun, 24 Mar 2024 23:39:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711323599; bh=XRGuTil339vx5L3x3APITUtg4LgUNQ85iCV4CT+4v1w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=diiEXJF80GVHrRfSWnrUBqjFSyPSYfufgi5SeoZ4fcSIemSc/ivorwepnjLQQKRHg H3iKDjvAYQOaiRnz3wsW1XBHswoMjfcSlUL2M1tvOuHMI4K+G2pHxlwD66xORcetBg wLdKuV7W6tlW9WX5oxkjkxlGlPTTvxmObMRNy+ArGHqLebFikF9aZzE8NWyZR3Jkbg BGaLj28k6g/JVQnj7MQX+y13foC1HhrZveakmD1X1v5lJ2Vo6V8oMrkMtTLC75MBXv Zff/51HJYTkJf9d2mmMX21aGzRFEgbPDj7gxdVafrHRkGIKpJL7DqZCw0jDhr2/f6w 3WRfnC2FyqydA== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Subbaraya Sundeep , "David S . Miller" , Sasha Levin Subject: [PATCH 5.15 305/317] octeontx2-af: Use separate handlers for interrupts Date: Sun, 24 Mar 2024 19:34:45 -0400 Message-ID: <20240324233458.1352854-306-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240324233458.1352854-1-sashal@kernel.org> References: <20240324233458.1352854-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit From: Subbaraya Sundeep [ Upstream commit 50e60de381c342008c0956fd762e1c26408f372c ] For PF to AF interrupt vector and VF to AF vector same interrupt handler is registered which is causing race condition. When two interrupts are raised to two CPUs at same time then two cores serve same event corrupting the data. Fixes: 7304ac4567bc ("octeontx2-af: Add mailbox IRQ and msg handlers") Signed-off-by: Subbaraya Sundeep Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/marvell/octeontx2/af/rvu.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu.c index f64509b1d120c..bac42e0065c6c 100644 --- a/drivers/net/ethernet/marvell/octeontx2/af/rvu.c +++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu.c @@ -2435,10 +2435,9 @@ static void rvu_queue_work(struct mbox_wq_info *mw, int first, } } -static irqreturn_t rvu_mbox_intr_handler(int irq, void *rvu_irq) +static irqreturn_t rvu_mbox_pf_intr_handler(int irq, void *rvu_irq) { struct rvu *rvu = (struct rvu *)rvu_irq; - int vfs = rvu->vfs; u64 intr; intr = rvu_read64(rvu, BLKADDR_RVUM, RVU_AF_PFAF_MBOX_INT); @@ -2452,6 +2451,18 @@ static irqreturn_t rvu_mbox_intr_handler(int irq, void *rvu_irq) rvu_queue_work(&rvu->afpf_wq_info, 0, rvu->hw->total_pfs, intr); + return IRQ_HANDLED; +} + +static irqreturn_t rvu_mbox_intr_handler(int irq, void *rvu_irq) +{ + struct rvu *rvu = (struct rvu *)rvu_irq; + int vfs = rvu->vfs; + u64 intr; + + /* Sync with mbox memory region */ + rmb(); + /* Handle VF interrupts */ if (vfs > 64) { intr = rvupf_read64(rvu, RVU_PF_VFPF_MBOX_INTX(1)); @@ -2779,7 +2790,7 @@ static int rvu_register_interrupts(struct rvu *rvu) /* Register mailbox interrupt handler */ sprintf(&rvu->irq_name[RVU_AF_INT_VEC_MBOX * NAME_SIZE], "RVUAF Mbox"); ret = request_irq(pci_irq_vector(rvu->pdev, RVU_AF_INT_VEC_MBOX), - rvu_mbox_intr_handler, 0, + rvu_mbox_pf_intr_handler, 0, &rvu->irq_name[RVU_AF_INT_VEC_MBOX * NAME_SIZE], rvu); if (ret) { dev_err(rvu->dev, -- 2.43.0