From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from flow-a6-smtp.messagingengine.com (flow-a6-smtp.messagingengine.com [103.168.172.141]) (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 8DC33403156; Mon, 17 Aug 2026 11:36:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.141 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786966588; cv=none; b=bYyrAQN1yb6lZ+qq0JvQsZxMrwcc4WCge7P114ERammPXhp8vFrlUB5TGhvBQAaC5gchiG7MTkzOqegC7zz94zD5Uhfcv6xw8KuUZ8eT6P0f8q5bG+bLbyu1ckGIFRaP919h+wR7EW6YDX0zYYq10RH90utZGcdEO5SP5NsErbY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786966588; c=relaxed/simple; bh=vprsrG8sAYEblGk2j6cjGM8odDdLxA4Y92VQQpSkgYg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bsRmynJND7UD9LV9U0Enqr7cy70pzZH1Wg7O2gn9HsL2Mmxc5FSAvXIrJKm+kJcuYT0daxK8qjdTkMuG0u82asT9IPQdTrnNVBUi/vYGIDXxxre2L4faCjLcA+cktpESvPSXquV53TgHN1INtvLJOUixCGgVZA+M9flYDoXAz0M= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gahingwoo.com; spf=pass smtp.mailfrom=gahingwoo.com; dkim=pass (2048-bit key) header.d=gahingwoo.com header.i=@gahingwoo.com header.b=cWIRyH/h; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=OBjFFmaQ; arc=none smtp.client-ip=103.168.172.141 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gahingwoo.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gahingwoo.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gahingwoo.com header.i=@gahingwoo.com header.b="cWIRyH/h"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="OBjFFmaQ" Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44]) by mailflow.phl.internal (Postfix) with ESMTP id D5E7E138014E; Mon, 17 Aug 2026 07:36:25 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-04.internal (MEProxy); Mon, 17 Aug 2026 07:36:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gahingwoo.com; h=cc:cc:content-transfer-encoding:content-type:date:date:from :from:in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm2; t=1786966585; x= 1786970185; bh=kOD0qgmgpDkG6VHfvGiR3DFrto+S5r/nxaFB/JMutG8=; b=c WIRyH/hX5KptnbsHPD7kI9kK8yHDQs4b+Z0xVbfWjVTB32U94rOmoJWQYZ4OoG7y iram5RHoRnKXMWin+0w9oXPE53uyYqqzYxg+8EHlEkuWDfx1fomVgCLG1gCh6DP1 Hd6sbgJBbHxgS7gDm8srxA3B1z4Pxu8crIVhC7zlcsJe6EzhoXqj7apHCex8gH4X pT/RrldwQQsQ+jDsEkcDMvxqkPHn+L3F4NUr0uQcHvNJHEPyYAn101qH+pcfRUax cjiJwyGZuWP4pdnSCCS0QQkSSvoyujDaiePj0AVQi9tl8kMR6fqn3OaGvqf+GJ7T pl0/5oc2ytrUjEzXaSyUg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm3; t=1786966585; x=1786970185; bh=k OD0qgmgpDkG6VHfvGiR3DFrto+S5r/nxaFB/JMutG8=; b=OBjFFmaQUnvahu8Cl CZGHdl945d/bgj7fX4pcw+mgCh74W7CNF0p+61arXd2Km+DPX4NB5D0zfJdgfo0E iQZvyFz227N1s4vUlLlrHqsXW2RIwzO8bYayTYtNQTPXbBae3njN19foPU5bU4vu RDx5KqUgEa6eibKwxOW71uu7oqwTJUgp3DgXs0yobPd5bLBtlu0FnKWLyF9dZ6qa +U0uYP+DnH/HaVbrte/3RcCz+imJaxnpEzUfoPBYsWXDXh2sjXajHIei/2slA5Lh NwQI84Who2WaaFmnfAfYBM2ALv1sDn46+NM8QDump/s72HeW+8+YSA+yxaGPTNdt nGn/w== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTFJpbjkSDT6AcryrIHhgbEVj8SvkD3tgmT76I8WU6lQDo3YUCdtzXxAeg/zKqpB+E Srz/I8ZJc3N7HCrgkTkwyaBZdvHNOdURxqLv8+rxKpfV73gGv9LWiSebktKgvlTsmvhDvl 7z8e7P5tVZXD1XfHmjG3x7RlOqfrClYofT98201dsDsGzeGalaNI/cy87SBMyHKVxLpD1H cf8c4VtlmLV27PNqhGPBVow9iGRSY0ganIZ7M7ursi5UKI38krV8lOdP4K1YQOgw9wIEpu SQtDihQpP3WqB+Si6LCioT5pFEw0karkUBJswAF2S4IqKtJUmYgRgB9BVHgg2tCz+ac+Ah lKkMoiVooZn13gF2ewwzJ/R/TGfLWaf5J6ZQND4Vxhr8M4MjHFIDUOy/vfNPhvAaBdfhoZ UAm+IprfSmqFHoEwJiObU8GWy4HQw1+FXmhNlqKH7v+a5eeyjI/jMrqQx6ZUqT7FsP2Wec lNZROYvySo5ahIC350kReexBYGlRtYqql2+7STa8FJTwmwufrZoZCB1I0fC+seyaYCxOse 9lUg/xwfRQX3Mcgab74K7kn0XWpWdMDrm3ijn8wGBCCQP9KjQ28qUzEcbkcrMZPnkfkrFY Nfc0tQY+18DghcECJRV9JLYOm+DyIwIEgaCxAWiF7BVAzdqiVmf0idUPSz1Q X-ME-Proxy: Feedback-ID: i7a5e4b5f:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 17 Aug 2026 07:36:19 -0400 (EDT) From: Jiaxing Hu To: tomeu@tomeuvizoso.net, heiko@sntech.de, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, joro@8bytes.org, will@kernel.org, robin.murphy@arm.com, ulfh@kernel.org, p.zabel@pengutronix.de, ogabbay@kernel.org, zhangqing@rock-chips.com Cc: royalnet026@gmail.com, chaoyi.chen@rock-chips.com, diederik@cknow-tech.com, alchark@flipper.net, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, iommu@lists.linux.dev, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jiaxing Hu Subject: [PATCH v8 01/12] accel/rocket: take the completion register writes under job_lock Date: Mon, 17 Aug 2026 23:35:52 +1200 Message-ID: <20260817113603.1436067-2-gahing@gahingwoo.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260817113603.1436067-1-gahing@gahingwoo.com> References: <20260817113603.1436067-1-gahing@gahingwoo.com> Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit rocket_job_handle_irq() writes OPERATION_ENABLE and INTERRUPT_CLEAR before taking job_lock, while rocket_job_hw_submit() writes OPERATION_ENABLE from inside it. The two can therefore race: a completion being handled on one core can write its zero after a submit on the same core has written its one, and stop a task that has only just started. Nothing in tree hits this often, because the interrupt is the only completion path and it does not overlap its own submit, but the ordering is wrong on its own terms. Move both writes inside the existing scoped_guard() rather than adding a second critical section, so stopping the block and deciding what to start next are one atomic step. Fixes: 0810d5ad88a1 ("accel/rocket: Add job submission IOCTL") Signed-off-by: Jiaxing Hu Tested-by: Igor Paunovic # RK3588, three cores --- drivers/accel/rocket/rocket_job.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/accel/rocket/rocket_job.c b/drivers/accel/rocket/rocket_job.c index 3141f210f..5f0f9682e 100644 --- a/drivers/accel/rocket/rocket_job.c +++ b/drivers/accel/rocket/rocket_job.c @@ -345,10 +345,15 @@ static void rocket_job_handle_irq(struct rocket_core *core) { pm_runtime_mark_last_busy(core->dev); - rocket_pc_writel(core, OPERATION_ENABLE, 0x0); - rocket_pc_writel(core, INTERRUPT_CLEAR, 0x1ffff); + scoped_guard(mutex, &core->job_lock) { + /* + * Stopping the block belongs under the lock. hw_submit() writes + * OPERATION_ENABLE too, and outside the lock this zero can land + * after that one and stop a task that has only just started. + */ + rocket_pc_writel(core, OPERATION_ENABLE, 0x0); + rocket_pc_writel(core, INTERRUPT_CLEAR, 0x1ffff); - scoped_guard(mutex, &core->job_lock) if (core->in_flight_job) { if (core->in_flight_job->next_task_idx < core->in_flight_job->task_count) { rocket_job_hw_submit(core, core->in_flight_job); @@ -360,6 +365,7 @@ static void rocket_job_handle_irq(struct rocket_core *core) pm_runtime_put_autosuspend(core->dev); core->in_flight_job = NULL; } + } } static void -- 2.43.0 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 8E52AC5B572 for ; Mon, 17 Aug 2026 11:36:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Sgvz/Df3ojXmtUS71fJo2xZiSUREV/b+P6hJNsG4X6Q=; b=DlJKJuHgFkZ2rQ IrfyMVr+G3yQlTDY43sMVkEB8Hxpv5feHftpDQNCjH5rgNHsObjXCP9yJUj0u2OSAJoA23618qA7c hct+FsW4TCZ75raOIvDhv7hZWD1whlSCkxizr+NtV5avlnlJxHFIs6g/NSNekZf1OfVz9bTsvUq3b 9QvGPSQJlyzBnH1LjCehx1+pTuE3DJVAUXHbYKE9/P8wxSdUd6YdfYBR+U9wCX0gwY43ZGnUBPXKm cNP/M8WAJblRrvfqiVgg5p52RIhSpOp3EQR3qgDC0UEpHh6LA6uCavEW3B5FMA8wziHmh2HXZNyhO TZ9xSNm01JfTmXXm01tg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wvvdl-000000062QQ-1eJ3; Mon, 17 Aug 2026 11:36:29 +0000 Received: from flow-a6-smtp.messagingengine.com ([103.168.172.141]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wvvdi-000000062Ol-2cJ3; Mon, 17 Aug 2026 11:36:27 +0000 Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44]) by mailflow.phl.internal (Postfix) with ESMTP id D5E7E138014E; Mon, 17 Aug 2026 07:36:25 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-04.internal (MEProxy); Mon, 17 Aug 2026 07:36:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gahingwoo.com; h=cc:cc:content-transfer-encoding:content-type:date:date:from :from:in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm2; t=1786966585; x= 1786970185; bh=kOD0qgmgpDkG6VHfvGiR3DFrto+S5r/nxaFB/JMutG8=; b=c WIRyH/hX5KptnbsHPD7kI9kK8yHDQs4b+Z0xVbfWjVTB32U94rOmoJWQYZ4OoG7y iram5RHoRnKXMWin+0w9oXPE53uyYqqzYxg+8EHlEkuWDfx1fomVgCLG1gCh6DP1 Hd6sbgJBbHxgS7gDm8srxA3B1z4Pxu8crIVhC7zlcsJe6EzhoXqj7apHCex8gH4X pT/RrldwQQsQ+jDsEkcDMvxqkPHn+L3F4NUr0uQcHvNJHEPyYAn101qH+pcfRUax cjiJwyGZuWP4pdnSCCS0QQkSSvoyujDaiePj0AVQi9tl8kMR6fqn3OaGvqf+GJ7T pl0/5oc2ytrUjEzXaSyUg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm3; t=1786966585; x=1786970185; bh=k OD0qgmgpDkG6VHfvGiR3DFrto+S5r/nxaFB/JMutG8=; b=OBjFFmaQUnvahu8Cl CZGHdl945d/bgj7fX4pcw+mgCh74W7CNF0p+61arXd2Km+DPX4NB5D0zfJdgfo0E iQZvyFz227N1s4vUlLlrHqsXW2RIwzO8bYayTYtNQTPXbBae3njN19foPU5bU4vu RDx5KqUgEa6eibKwxOW71uu7oqwTJUgp3DgXs0yobPd5bLBtlu0FnKWLyF9dZ6qa +U0uYP+DnH/HaVbrte/3RcCz+imJaxnpEzUfoPBYsWXDXh2sjXajHIei/2slA5Lh NwQI84Who2WaaFmnfAfYBM2ALv1sDn46+NM8QDump/s72HeW+8+YSA+yxaGPTNdt nGn/w== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTFJpbjkSDT6AcryrIHhgbEVj8SvkD3tgmT76I8WU6lQDo3YUCdtzXxAeg/zKqpB+E Srz/I8ZJc3N7HCrgkTkwyaBZdvHNOdURxqLv8+rxKpfV73gGv9LWiSebktKgvlTsmvhDvl 7z8e7P5tVZXD1XfHmjG3x7RlOqfrClYofT98201dsDsGzeGalaNI/cy87SBMyHKVxLpD1H cf8c4VtlmLV27PNqhGPBVow9iGRSY0ganIZ7M7ursi5UKI38krV8lOdP4K1YQOgw9wIEpu SQtDihQpP3WqB+Si6LCioT5pFEw0karkUBJswAF2S4IqKtJUmYgRgB9BVHgg2tCz+ac+Ah lKkMoiVooZn13gF2ewwzJ/R/TGfLWaf5J6ZQND4Vxhr8M4MjHFIDUOy/vfNPhvAaBdfhoZ UAm+IprfSmqFHoEwJiObU8GWy4HQw1+FXmhNlqKH7v+a5eeyjI/jMrqQx6ZUqT7FsP2Wec lNZROYvySo5ahIC350kReexBYGlRtYqql2+7STa8FJTwmwufrZoZCB1I0fC+seyaYCxOse 9lUg/xwfRQX3Mcgab74K7kn0XWpWdMDrm3ijn8wGBCCQP9KjQ28qUzEcbkcrMZPnkfkrFY Nfc0tQY+18DghcECJRV9JLYOm+DyIwIEgaCxAWiF7BVAzdqiVmf0idUPSz1Q X-ME-Proxy: Feedback-ID: i7a5e4b5f:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 17 Aug 2026 07:36:19 -0400 (EDT) From: Jiaxing Hu To: tomeu@tomeuvizoso.net, heiko@sntech.de, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, joro@8bytes.org, will@kernel.org, robin.murphy@arm.com, ulfh@kernel.org, p.zabel@pengutronix.de, ogabbay@kernel.org, zhangqing@rock-chips.com Cc: royalnet026@gmail.com, chaoyi.chen@rock-chips.com, diederik@cknow-tech.com, alchark@flipper.net, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, iommu@lists.linux.dev, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jiaxing Hu Subject: [PATCH v8 01/12] accel/rocket: take the completion register writes under job_lock Date: Mon, 17 Aug 2026 23:35:52 +1200 Message-ID: <20260817113603.1436067-2-gahing@gahingwoo.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260817113603.1436067-1-gahing@gahingwoo.com> References: <20260817113603.1436067-1-gahing@gahingwoo.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260817_043626_730617_B36716B2 X-CRM114-Status: GOOD ( 12.62 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org rocket_job_handle_irq() writes OPERATION_ENABLE and INTERRUPT_CLEAR before taking job_lock, while rocket_job_hw_submit() writes OPERATION_ENABLE from inside it. The two can therefore race: a completion being handled on one core can write its zero after a submit on the same core has written its one, and stop a task that has only just started. Nothing in tree hits this often, because the interrupt is the only completion path and it does not overlap its own submit, but the ordering is wrong on its own terms. Move both writes inside the existing scoped_guard() rather than adding a second critical section, so stopping the block and deciding what to start next are one atomic step. Fixes: 0810d5ad88a1 ("accel/rocket: Add job submission IOCTL") Signed-off-by: Jiaxing Hu Tested-by: Igor Paunovic # RK3588, three cores --- drivers/accel/rocket/rocket_job.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/accel/rocket/rocket_job.c b/drivers/accel/rocket/rocket_job.c index 3141f210f..5f0f9682e 100644 --- a/drivers/accel/rocket/rocket_job.c +++ b/drivers/accel/rocket/rocket_job.c @@ -345,10 +345,15 @@ static void rocket_job_handle_irq(struct rocket_core *core) { pm_runtime_mark_last_busy(core->dev); - rocket_pc_writel(core, OPERATION_ENABLE, 0x0); - rocket_pc_writel(core, INTERRUPT_CLEAR, 0x1ffff); + scoped_guard(mutex, &core->job_lock) { + /* + * Stopping the block belongs under the lock. hw_submit() writes + * OPERATION_ENABLE too, and outside the lock this zero can land + * after that one and stop a task that has only just started. + */ + rocket_pc_writel(core, OPERATION_ENABLE, 0x0); + rocket_pc_writel(core, INTERRUPT_CLEAR, 0x1ffff); - scoped_guard(mutex, &core->job_lock) if (core->in_flight_job) { if (core->in_flight_job->next_task_idx < core->in_flight_job->task_count) { rocket_job_hw_submit(core, core->in_flight_job); @@ -360,6 +365,7 @@ static void rocket_job_handle_irq(struct rocket_core *core) pm_runtime_put_autosuspend(core->dev); core->in_flight_job = NULL; } + } } static void -- 2.43.0 _______________________________________________ Linux-rockchip mailing list Linux-rockchip@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-rockchip