From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CA0C5C5AC7A for ; Fri, 7 Aug 2026 10:55:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=nRJI2Id35stbc9UUeijWXZUbEDaggOYw7TZt58Y6FBQ=; b=S7dXmwEFKhLf6U6fefCS/StUtp 5/cMmL+Tjx268twULi5um+XY8/vQiRMmThc+z3X2sq/QLtKEZ9P2hyVuFCgGjxhEJ4GE/Nh5zwVCW hu8yQVd0JmAFNf03rdzJJ45dU7kWtDMSCg3jqLK3I8KAR541cyIBaHsmKG4d1LxQGNZNLGDIwW835 K9Q8tlFv1ZoJ358JB2/JpGenON/2w26qllQZs0oCPS1eM/dq9QVWtBRWOwqxqvAuz/KZCmG70ilVL xy0t2DW3N3SXZNdNZ+icK6fErdD1BgMDZqX6olW9ol/yK9iBAKcu0O8tAjyNuaFvUugzOqR4lFGaa JYU8/pjw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wsIEn-00000007lWy-1AkV; Fri, 07 Aug 2026 10:55:41 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wsIEj-00000007lTX-3jt1 for linux-arm-kernel@lists.infradead.org; Fri, 07 Aug 2026 10:55:40 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 5A4B91A9A; Fri, 7 Aug 2026 03:55:33 -0700 (PDT) Received: from e142021.fritz.box (usa-sjc-mx-foss1.foss.arm.com [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B5A9F3F9A2; Fri, 7 Aug 2026 03:55:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1786100137; bh=vfefnqkd2ibXnBQ39xPLFHlObQHT5faJOCUx8RwI9Uw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NJLcpWZd0yyCWt+0YwWUhwMkIFiskDK7vlgo+lTmRFAkph4IVDOw0Htc4/caIzYVp jV0Qyg466N+9mexIHtzaSoJZLDzKDyiDzDVcIHRwaV94Zh+z2SIvkmVQ2kKG/B9cGB B0/8psmLEI4Q0sHuEgEdhwlUOmlMbNQ8RHM38Ze4= From: Andre Przywara To: Lorenzo Pieralisi , Hanjun Guo , Sudeep Holla , Catalin Marinas , Will Deacon , "Rafael J . Wysocki" , Len Brown , James Morse , Ben Horgan , Reinette Chatre , Fenghua Yu Cc: Jonathan Cameron , Srivathsa L Rao , Ganapatrao Kulkarni , Trilok Soni , Srinivas Ramana , Niyas Sait , Lee Trager , Ritwick Sharma , Gavin Shan , linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v9 08/12] arm_mpam: propagate MSC access errors for interrupt control Date: Fri, 7 Aug 2026 12:54:47 +0200 Message-ID: <20260807105451.3728284-9-andre.przywara@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260807105451.3728284-1-andre.przywara@arm.com> References: <20260807105451.3728284-1-andre.przywara@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260807_035538_020663_AD15B95E X-CRM114-Status: GOOD ( 12.68 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Allow the functions dealing with interrupt registration and enablement to check for and return errors, and propagate MSC read and write errors from the lower level up. This does not cover the IRQ handler yet, as this needs some more attention. Signed-off-by: Andre Przywara --- drivers/resctrl/mpam_devices.c | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/drivers/resctrl/mpam_devices.c b/drivers/resctrl/mpam_devices.c index 49239b15a27f..1b07f7765f96 100644 --- a/drivers/resctrl/mpam_devices.c +++ b/drivers/resctrl/mpam_devices.c @@ -1105,7 +1105,9 @@ static int mpam_msc_hw_probe(struct mpam_msc *msc) } /* Clear any stale errors */ - mpam_msc_clear_esr(msc); + ret = mpam_msc_clear_esr(msc); + if (ret) + return ret; spin_lock(&partid_max_lock); mpam_partid_max = min(mpam_partid_max, msc->partid_max); @@ -2660,9 +2662,7 @@ static int mpam_enable_msc_ecr(void *_msc) { struct mpam_msc *msc = _msc; - __mpam_write_reg(msc, MPAMF_ECR, MPAMF_ECR_INTEN); - - return 0; + return __mpam_write_reg(msc, MPAMF_ECR, MPAMF_ECR_INTEN); } /* This can run in mpam_disable(), and the interrupt handler on the same CPU */ @@ -2670,9 +2670,7 @@ static int mpam_disable_msc_ecr(void *_msc) { struct mpam_msc *msc = _msc; - __mpam_write_reg(msc, MPAMF_ECR, 0); - - return 0; + return __mpam_write_reg(msc, MPAMF_ECR, 0); } static irqreturn_t __mpam_irq_handler(int irq, struct mpam_msc *msc) @@ -2769,11 +2767,13 @@ static int mpam_register_irqs(void) return err; } - mutex_lock(&msc->error_irq_lock); - msc->error_irq_req = true; - mpam_touch_msc(msc, mpam_enable_msc_ecr, msc); - msc->error_irq_hw_enabled = true; - mutex_unlock(&msc->error_irq_lock); + scoped_guard(mutex, &msc->error_irq_lock) { + msc->error_irq_req = true; + err = mpam_touch_msc(msc, mpam_enable_msc_ecr, msc); + if (err) + return err; + msc->error_irq_hw_enabled = true; + } } return 0; @@ -2792,10 +2792,10 @@ static void mpam_unregister_irqs(void) if (irq <= 0) continue; - mutex_lock(&msc->error_irq_lock); + guard(mutex)(&msc->error_irq_lock); if (msc->error_irq_hw_enabled) { - mpam_touch_msc(msc, mpam_disable_msc_ecr, msc); - msc->error_irq_hw_enabled = false; + if (!mpam_touch_msc(msc, mpam_disable_msc_ecr, msc)) + msc->error_irq_hw_enabled = false; } if (msc->error_irq_req) { @@ -2807,7 +2807,6 @@ static void mpam_unregister_irqs(void) } msc->error_irq_req = false; } - mutex_unlock(&msc->error_irq_lock); } } -- 2.43.0