From nobody Thu Oct 2 11:52:37 2025 Received: from fhigh-b5-smtp.messagingengine.com (fhigh-b5-smtp.messagingengine.com [202.12.124.156]) (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 F35D036B for ; Wed, 17 Sep 2025 00:03:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.156 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758067435; cv=none; b=TwqfnvcORVB61Xg/m2zg2bW5xkUmBr8nXB5UP9dkewYMilARlUrzBEr1w/c+plT08iHTAYMQ9bxf0frbbTubq26f2FU0MBAhxc5S0HVB2VAUZ0MIz4BbBWMaOwTq3ttZupGP27aT4AilfBrdHvekpb8tyF34XDKPMZVAb+/WZrE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758067435; c=relaxed/simple; bh=IdfvsZMrew8FdTObrP8TNBiNuJiQVycQcPa0nplx88I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bNue0ij0AHUsadNv8XKbOJP7DwrXH6gEmeg/AyZdeRDR4+KTOxL76apRUTnsqj0BeGp0qLnbbPHa289Prt8xG1W9q3QTiUb+eO/EiWvMdKpCEhQ4XhLHos9afRWhyje9KRJFR9rV1qb1nxFtaR4jY9ouPh8JHNTJd18uUdYXyz4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp; spf=pass smtp.mailfrom=sakamocchi.jp; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b=rUgcRxSQ; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=EJLml2t+; arc=none smtp.client-ip=202.12.124.156 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b="rUgcRxSQ"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="EJLml2t+" Received: from phl-compute-01.internal (phl-compute-01.internal [10.202.2.41]) by mailfhigh.stl.internal (Postfix) with ESMTP id DA1E77A02CC; Tue, 16 Sep 2025 20:03:52 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-01.internal (MEProxy); Tue, 16 Sep 2025 20:03:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sakamocchi.jp; 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=fm1; t=1758067432; x= 1758153832; bh=XqttZHgRieOanhNfA33PuK7ta9Fx7p7mI7X1kqv62mA=; b=r UgcRxSQ4z3m+mlziZaCWhACddgP3MEA/egOHo5LXeoq54zPTB2qtCWgCczLcK0JF 0PPgruK72QwUbxYzWPLzk/mca93JNL1ABJWLx7lW8Tq8rGdc9M77qBcy6FB6gcrr z3P6tZMssfJZswMQMMo8R6JxAWfplBRm0WQO+6cSX7Ge4Yhzso1jdrdy8c3GX/Iz BXSyRzHxP0CJUGLyCjOpFve7Qymn+iPujJMrXlkwQEgDg9XhPVfunjshk8WZ6+Aa gr/VIubtD8Ys/SJhzWuBP59bWRNhMRV9wkIsbPAr1voLDUPKVJmutUk53mDyeMkJ Q1Fr0BnUjMkzGANiBhcoQ== 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=fm1; t=1758067432; x=1758153832; bh=X qttZHgRieOanhNfA33PuK7ta9Fx7p7mI7X1kqv62mA=; b=EJLml2t+hiCRdGGfi dGKjo/MpAzFwpElwRNNd09PL4aOurz2olycyrucf8xJHKKWejpYSqjy8/PzpmzLC yXLTNTtrI7CcOPHAzNPg3fcpSE8svQajokqGhUjTORnF+1blyPaDQSQkIHFOra3g qW1dQZEEmYRG1Dik1jUcaBbnAV65D4ySRTXm365BV5uD8ql2w5sC2gx1NXfofLJb QiknCkcItJ7oKFQo6eQJzy/k8ZHTk6CgKEljWEnnO7eg5cy7jYDHQRU7NHeKx5mm PxrcTWJwFhJorsPMs00lNW8daI57AhfYiRjiff3VVXU/GwecO++dDC8ZkuqglxY3 HqSVg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggdegudeliecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecunecujfgurhephffvvefufffkofgjfhgggfestdekredtre dttdenucfhrhhomhepvfgrkhgrshhhihcuufgrkhgrmhhothhouceoohdqthgrkhgrshhh ihesshgrkhgrmhhotggthhhirdhjpheqnecuggftrfgrthhtvghrnhepvdejgfejuedvgf duudekleevtefgtdevhfdtffefiefgveeuteffiedvffekvddtnecuvehluhhsthgvrhfu ihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepohdqthgrkhgrshhhihesshgrkh grmhhotggthhhirdhjphdpnhgspghrtghpthhtohepvddpmhhouggvpehsmhhtphhouhht pdhrtghpthhtoheplhhinhhugidufeelgedquggvvhgvlheslhhishhtshdrshhouhhrtg gvfhhorhhgvgdrnhgvthdprhgtphhtthhopehlihhnuhigqdhkvghrnhgvlhesvhhgvghr rdhkvghrnhgvlhdrohhrgh X-ME-Proxy: Feedback-ID: ie8e14432:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 16 Sep 2025 20:03:51 -0400 (EDT) From: Takashi Sakamoto To: linux1394-devel@lists.sourceforge.net Cc: linux-kernel@vger.kernel.org Subject: [PATCH 1/3] firewire: core: schedule bm_work item outside of spin lock Date: Wed, 17 Sep 2025 09:03:45 +0900 Message-ID: <20250917000347.52369-2-o-takashi@sakamocchi.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250917000347.52369-1-o-takashi@sakamocchi.jp> References: <20250917000347.52369-1-o-takashi@sakamocchi.jp> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Before (re)building topology tree, fw_core_handle_bus_reset() schedules a work item under acquiring fw_card spin lock. The work item invokes bm_work() which acquires the spin lock at first, then can be stalled to wait until the building tree finishes. This is inconvenient. This commit moves the timing to schedule the work item after releasing the spin lock. Signed-off-by: Takashi Sakamoto --- drivers/firewire/core-topology.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/firewire/core-topology.c b/drivers/firewire/core-topol= ogy.c index 8fa0772ee723..2f73bcd5696f 100644 --- a/drivers/firewire/core-topology.c +++ b/drivers/firewire/core-topology.c @@ -479,7 +479,6 @@ void fw_core_handle_bus_reset(struct fw_card *card, int= node_id, int generation, card->reset_jiffies =3D get_jiffies_64(); card->bm_node_id =3D 0xffff; card->bm_abdicate =3D bm_abdicate; - fw_schedule_bm_work(card, 0); =20 local_node =3D build_tree(card, self_ids, self_id_count, generation); =20 @@ -496,6 +495,8 @@ void fw_core_handle_bus_reset(struct fw_card *card, int= node_id, int generation, } } =20 + fw_schedule_bm_work(card, 0); + // Just used by transaction layer. scoped_guard(spinlock, &card->topology_map.lock) { update_topology_map(card->topology_map.buffer, sizeof(card->topology_map= .buffer), --=20 2.48.1 From nobody Thu Oct 2 11:52:37 2025 Received: from fout-b4-smtp.messagingengine.com (fout-b4-smtp.messagingengine.com [202.12.124.147]) (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 7C94B2110 for ; Wed, 17 Sep 2025 00:03:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.147 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758067437; cv=none; b=ONtUCHFl7tIxF1PNcwPdkSvdRlIL5NDei4IczXzFmIIbmJOEX/zUPmWPbOF3SAHF1mOPwS2/Ig9Mx2BuK6jHA6JdDlDm8/WRL4+FeFPGQxyW+D7yvw6Aj5/T6L63LzGaOogsnQrRvgE/3/kNfqazlF8jPdMsjnECxVyvvt0KQmw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758067437; c=relaxed/simple; bh=YrzPqOkHgr50Lu/GqGlttyH24fN64WgEyjHmDQSnMms=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BIRohiuzy/sbh+82BEVFgZpjKFT6gk5RIPomVAXAjnR5L/rmAP4AEGTp2LuFaGSszwXda3mDcybc/z3bU34dGJR/FN0Sg4liAyygwlLO1dtViqRIddTklP96/97dCfSspZmNhT13Csnh/SeP9ujvxeJj7MgO/uWi+BGl3EYE8Lo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp; spf=pass smtp.mailfrom=sakamocchi.jp; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b=g8DE4dAS; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=Ucg87op8; arc=none smtp.client-ip=202.12.124.147 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b="g8DE4dAS"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="Ucg87op8" Received: from phl-compute-11.internal (phl-compute-11.internal [10.202.2.51]) by mailfout.stl.internal (Postfix) with ESMTP id 8F31A1D002D9; Tue, 16 Sep 2025 20:03:54 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-11.internal (MEProxy); Tue, 16 Sep 2025 20:03:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sakamocchi.jp; 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=fm1; t=1758067434; x= 1758153834; bh=t1f8CJyyveNUQMePWwDrGPs1RuYxKALIwyp3EIOyP3s=; b=g 8DE4dAS/6d0ZXY23sw71l52STE+Q6tXXouUxyOtDANd+GPRCWmCDj73ZlwIaRAaR 27wHIpcrGXgXurwGqbSiYEMtFMpp6ZAj2wfV5TLJhH9BA2cG3Io+328k2ygVEmWI zIMVPDX84PW+GLIgXPGh/P8zpmZMlfzvPFAsGcdQ1K82wVmRwBhAI46foMouUv8d lPyh6Q7d9uLEuYi6QaNVPX7CGaWi3NJdA7cjeXXYiF5vFIifPQXrQ8XjF6caceOk l1Is64bIzH59yq5liJOhFVRV4ZPsJ1pIU8z0Qi49ie+PWC5sKyDj4DNxb/zAJgLN sRsJE1Wi9ioGwkaQHNZFQ== 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=fm1; t=1758067434; x=1758153834; bh=t 1f8CJyyveNUQMePWwDrGPs1RuYxKALIwyp3EIOyP3s=; b=Ucg87op8JBpn0QZZU ye+OW+63PIj8ug0eZulQ9n8T/eBHuKhfz698Rue7qKuWy+RTsNHQ9BiMZrZYHZWU 2D6MBBjevjw867CGApAQYyOFUlD5gyjlUWbP2EOso//mNv0HE3vDqq4ZA9L5I54K YqDH0HeJT8JxmT4Uwx+AlkvaFOWiRxAb993kPvMJMLn2HOqba+uaAazy0woNVJg4 Dg6rzCMIzdsvnT7V3z2JsK6B+hxeMHa8XHYO32/4SsaV9TCm3O++CteoN3YRsG5D xYTNzYPrucHlz2VkvvXkE465mEd8JbSVZ3qc3+lcwIa9PFaZkkMEDxtN6DMp8iri XCzrQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggdegudeljecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecunecujfgurhephffvvefufffkofgjfhgggfestdekredtre dttdenucfhrhhomhepvfgrkhgrshhhihcuufgrkhgrmhhothhouceoohdqthgrkhgrshhh ihesshgrkhgrmhhotggthhhirdhjpheqnecuggftrfgrthhtvghrnhepvdejgfejuedvgf duudekleevtefgtdevhfdtffefiefgveeuteffiedvffekvddtnecuvehluhhsthgvrhfu ihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepohdqthgrkhgrshhhihesshgrkh grmhhotggthhhirdhjphdpnhgspghrtghpthhtohepvddpmhhouggvpehsmhhtphhouhht pdhrtghpthhtoheplhhinhhugidufeelgedquggvvhgvlheslhhishhtshdrshhouhhrtg gvfhhorhhgvgdrnhgvthdprhgtphhtthhopehlihhnuhigqdhkvghrnhgvlhesvhhgvghr rdhkvghrnhgvlhdrohhrgh X-ME-Proxy: Feedback-ID: ie8e14432:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 16 Sep 2025 20:03:53 -0400 (EDT) From: Takashi Sakamoto To: linux1394-devel@lists.sourceforge.net Cc: linux-kernel@vger.kernel.org Subject: [PATCH 2/3] firewire: core: disable bus management work temporarily during updating topology Date: Wed, 17 Sep 2025 09:03:46 +0900 Message-ID: <20250917000347.52369-3-o-takashi@sakamocchi.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250917000347.52369-1-o-takashi@sakamocchi.jp> References: <20250917000347.52369-1-o-takashi@sakamocchi.jp> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When processing selfID sequence, bus topology tree is (re)built, and some members of fw_card are determined. Once determined, the members are valid during the bus generation. The above operations are in the critical section of fw_card spin lock. Before building the bus topology, a work item is scheduled for bus manager work. The bm_work() function is invoked by the work item. The function tries to acquire the spin lock, then can be stalled until the bus topology building finishes. The bus manager should work once the members of fw_card are determined. This commit suppresses the above situation by disabling the work item during processing selfID sequence. Signed-off-by: Takashi Sakamoto --- drivers/firewire/core-topology.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/firewire/core-topology.c b/drivers/firewire/core-topol= ogy.c index 2f73bcd5696f..90b988035a2a 100644 --- a/drivers/firewire/core-topology.c +++ b/drivers/firewire/core-topology.c @@ -460,8 +460,14 @@ void fw_core_handle_bus_reset(struct fw_card *card, in= t node_id, int generation, { struct fw_node *local_node; =20 + might_sleep(); + trace_bus_reset_handle(card->index, generation, node_id, bm_abdicate, sel= f_ids, self_id_count); =20 + // Disable bus management work during updating the cache of bus topology,= since the work + // accesses to some members of fw_card. + disable_delayed_work_sync(&card->bm_work); + scoped_guard(spinlock, &card->lock) { // If the selfID buffer is not the immediate successor of the // previously processed one, we cannot reliably compare the @@ -495,6 +501,8 @@ void fw_core_handle_bus_reset(struct fw_card *card, int= node_id, int generation, } } =20 + enable_delayed_work(&card->bm_work); + fw_schedule_bm_work(card, 0); =20 // Just used by transaction layer. --=20 2.48.1 From nobody Thu Oct 2 11:52:37 2025 Received: from fout-b4-smtp.messagingengine.com (fout-b4-smtp.messagingengine.com [202.12.124.147]) (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 47568182D0 for ; Wed, 17 Sep 2025 00:03:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.147 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758067438; cv=none; b=jIQ/pNjtCnVRGsxIH4onUs9RgPWOzlmcpokbdn4DnGTtzvXz74RZ1nM4gGccLvQIiBM0Y+ExSwy/ZYHAGQYg3/o6f0rq+QJNBxwYtz5ksVpwzQg/QEtzuJxE9LaaAcdf1KLkNFDHoxyD9n2nvJwAqoMmPD7xVEEmu9Haw57cUNE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758067438; c=relaxed/simple; bh=qZ+VpDwAUW9a0+gNIEYZ4Xl8bWOJrxJNSPAEXLqOkxo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kRzYvfXaX1OXJCLxY2lHkZ/wAZcUR1fx3x1ysMtHJYwNyRZ5eQCwcf2IkbHE142FVvGKSkoNkvwL98WxTY+c7g+wOHO7KB14E7gz+E+8SIifGApAhV7bC9PF08ls9Lnn5plSHI+P9FtNHNZinSI7spaungNajC6go5xYiMmqM4A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp; spf=pass smtp.mailfrom=sakamocchi.jp; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b=CPK/TOSj; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=FAyYwJvT; arc=none smtp.client-ip=202.12.124.147 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b="CPK/TOSj"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="FAyYwJvT" Received: from phl-compute-11.internal (phl-compute-11.internal [10.202.2.51]) by mailfout.stl.internal (Postfix) with ESMTP id 3B3B71D002D7; Tue, 16 Sep 2025 20:03:56 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-11.internal (MEProxy); Tue, 16 Sep 2025 20:03:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sakamocchi.jp; 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=fm1; t=1758067436; x= 1758153836; bh=ENC8/CN5pTqWSzE9+CkyUy0+hxEht2fcjnaq9gea9z8=; b=C PK/TOSj5Udiu1w5qP6y1fkJjSTFXOJjWczHfLRovc6G402RZyi2SdiQom0X+N2lL Cq64PN4Y8eJ/UnNChdZc2kCoeN7iq2ReYZyCVKgrjnPBm+4ark9C8yFJ3lsE+SGJ nJvHBKwuMHXnb2vqBQkZgVHpPHEmQ/I/MFIlCLQ1l/deyO7r2VnwfVJ2dFnKO1g1 Gb8l0iiV4gfidFRB1SRWfWN0JmyEUmkyaFhMESQhdsioQS/MRRVVyHL9+ice1YLO DVnbVPYNet2KrOkxx+HoIc7GefBCCvtrHDQfvdEc6nb8UYYs/yPsfK+UvQwisPqd kofW5PqKSD/fsDU/AwJ5Q== 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=fm1; t=1758067436; x=1758153836; bh=E NC8/CN5pTqWSzE9+CkyUy0+hxEht2fcjnaq9gea9z8=; b=FAyYwJvT7SnohSdpU 7WxQ84tTYlHvPsxaIN+CjJYZJO66q3I2fiX5IEzoRmJyHZck17X0D2SDv1YppzSV 0A94xzTiK/7OlmQ3zknhxNzGANGhDlWpMpWNT9yVtgPxqtMDTLpA1riDo7vQ/1tn Er73CuLmJU6q6unZrOGwaOh4lWeGAOmsOyoLewWzYQf5Hd76nFtZ8aWXBkA1OTAT +2gAjeMOFx3kW35wM/dUkyp0L8mBWrk89897/UXqc0tIBevShQTViLYckOOF95am dHhHALt5ZzxUMTS3lWo7IdAHjbHmqqFvR51nvzqgByQzllLutc8K5oTi/LmGbWXn pRRwg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggdegudeljecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecunecujfgurhephffvvefufffkofgjfhgggfestdekredtre dttdenucfhrhhomhepvfgrkhgrshhhihcuufgrkhgrmhhothhouceoohdqthgrkhgrshhh ihesshgrkhgrmhhotggthhhirdhjpheqnecuggftrfgrthhtvghrnhepvdejgfejuedvgf duudekleevtefgtdevhfdtffefiefgveeuteffiedvffekvddtnecuvehluhhsthgvrhfu ihiivgepudenucfrrghrrghmpehmrghilhhfrhhomhepohdqthgrkhgrshhhihesshgrkh grmhhotggthhhirdhjphdpnhgspghrtghpthhtohepvddpmhhouggvpehsmhhtphhouhht pdhrtghpthhtoheplhhinhhugidufeelgedquggvvhgvlheslhhishhtshdrshhouhhrtg gvfhhorhhgvgdrnhgvthdprhgtphhtthhopehlihhnuhigqdhkvghrnhgvlhesvhhgvghr rdhkvghrnhgvlhdrohhrgh X-ME-Proxy: Feedback-ID: ie8e14432:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 16 Sep 2025 20:03:54 -0400 (EDT) From: Takashi Sakamoto To: linux1394-devel@lists.sourceforge.net Cc: linux-kernel@vger.kernel.org Subject: [PATCH 3/3] firewire: core: shrink critical section of fw_card spinlock in bm_work Date: Wed, 17 Sep 2025 09:03:47 +0900 Message-ID: <20250917000347.52369-4-o-takashi@sakamocchi.jp> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250917000347.52369-1-o-takashi@sakamocchi.jp> References: <20250917000347.52369-1-o-takashi@sakamocchi.jp> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Now fw_core_handle_bus_reset() and bm_work() are serialized. Some members of fw_card are free to access in bm_work() This commit shrinks critical section of fw_card spinlock in bm_work() Signed-off-by: Takashi Sakamoto --- drivers/firewire/core-card.c | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/drivers/firewire/core-card.c b/drivers/firewire/core-card.c index 96495392a1f6..4fcd5ce4b2ce 100644 --- a/drivers/firewire/core-card.c +++ b/drivers/firewire/core-card.c @@ -293,12 +293,8 @@ static void bm_work(struct work_struct *work) int expected_gap_count, generation, grace; bool do_reset =3D false; =20 - spin_lock_irq(&card->lock); - - if (card->local_node =3D=3D NULL) { - spin_unlock_irq(&card->lock); + if (card->local_node =3D=3D NULL) return; - } =20 generation =3D card->generation; =20 @@ -354,8 +350,6 @@ static void bm_work(struct work_struct *work) goto pick_me; } =20 - spin_unlock_irq(&card->lock); - rcode =3D fw_run_transaction(card, TCODE_LOCK_COMPARE_SWAP, irm_id, generation, SCODE_100, CSR_REGISTER_BASE + CSR_BUS_MANAGER_ID, @@ -365,21 +359,20 @@ static void bm_work(struct work_struct *work) if (rcode =3D=3D RCODE_GENERATION) return; =20 - spin_lock_irq(&card->lock); - if (rcode =3D=3D RCODE_COMPLETE) { int bm_id =3D be32_to_cpu(data[0]); =20 if (generation =3D=3D card->generation) { - if (bm_id !=3D BUS_MANAGER_ID_NOT_REGISTERED) - card->bm_node_id =3D 0xffc0 & bm_id; - else - card->bm_node_id =3D local_id; + // Used by cdev layer for "struct fw_cdev_event_bus_reset". + scoped_guard(spinlock, &card->lock) { + if (bm_id !=3D BUS_MANAGER_ID_NOT_REGISTERED) + card->bm_node_id =3D 0xffc0 & bm_id; + else + card->bm_node_id =3D local_id; + } } =20 if (bm_id !=3D BUS_MANAGER_ID_NOT_REGISTERED) { - spin_unlock_irq(&card->lock); - // Somebody else is BM. Only act as IRM. if (local_id =3D=3D irm_id) allocate_broadcast_channel(card, generation); @@ -393,7 +386,6 @@ static void bm_work(struct work_struct *work) * some local problem. Let's try again later and hope * that the problem has gone away by then. */ - spin_unlock_irq(&card->lock); fw_schedule_bm_work(card, msecs_to_jiffies(125)); return; } @@ -415,7 +407,6 @@ static void bm_work(struct work_struct *work) * We weren't BM in the last generation, and the last * bus reset is less than 125ms ago. Reschedule this job. */ - spin_unlock_irq(&card->lock); fw_schedule_bm_work(card, msecs_to_jiffies(125)); return; } @@ -458,7 +449,6 @@ static void bm_work(struct work_struct *work) if (!root_device_is_running) { // If we haven't probed this device yet, bail out now // and let's try again once that's done. - spin_unlock_irq(&card->lock); return; } else if (root_device->cmc) { // We will send out a force root packet for this @@ -495,8 +485,6 @@ static void bm_work(struct work_struct *work) if (do_reset) { int card_gap_count =3D card->gap_count; =20 - spin_unlock_irq(&card->lock); - fw_notice(card, "phy config: new root=3D%x, gap_count=3D%d\n", new_root_id, expected_gap_count); fw_send_phy_config(card, new_root_id, generation, expected_gap_count); @@ -517,8 +505,6 @@ static void bm_work(struct work_struct *work) } else { struct fw_device *root_device =3D fw_node_get_device(root_node); =20 - spin_unlock_irq(&card->lock); - if (root_device && root_device->cmc) { // Make sure that the cycle master sends cycle start packets. __be32 data =3D cpu_to_be32(CSR_STATE_BIT_CMSTR); --=20 2.48.1