From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net [217.70.183.199]) (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 9DD342417C2; Mon, 10 Feb 2025 17:12:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.199 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739207579; cv=none; b=k5oH6aj17dvGMrc65rjSsQhwov8fsdZPPMy2kx2mnGYReELo6wL/Es98GLADKEXaJaTo6t3q/gnf3BN/yB1LrurpTNROjmYZx1rjCWuQ16WwDjqnOO9ZxKSLXI5/BnvMeeNQyGBMflw3nyZZOT5cQcWDPuYN6XJ6aZrcNkFm3sY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739207579; c=relaxed/simple; bh=ELQfB2TwDAnJUTIUIxZdiWbQfBEoOjvfsRi0Qb4it4E=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=iw9OZoGkxWfCarxAhUymymxYoSrXjTXvneBvXGd+/tYfhldvDhZdTLpNeAZKfXWqIn7Y3ozkta2CcsT3CmNLiBabgCPfMY6ZZ5ANI70PclP0BXr23uJ5fNu6Lcyj/yjtwwvtTot44ws7OxdM4zeNNS9glox4knF+6tt+iyWI3lU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=SPtX5V/s; arc=none smtp.client-ip=217.70.183.199 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="SPtX5V/s" Received: by mail.gandi.net (Postfix) with ESMTPSA id 59113442DF; Mon, 10 Feb 2025 17:12:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1739207570; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8BWpaX+en9bzlPyCXNv/OsmRVq8aUFdsmvGYZd5/M1M=; b=SPtX5V/suamAJnnxGQkZlrn+ert5cFSOQ/fcB7/3eKG5syOz4feQ8vYsj2ry+AK5SXzIfM 4hC3Nmm3KVAKjeDhg+5fMpLhI0M+79OsT7ip6mzM/vKA06fkbIk7flQMcWTSk+R5nyVuu7 8dsSpGZLrPNo3PFn4ikkUFQdQbf4WNj3fJobF8vPgNDBqBI5MCb6boobtS+FNeOERcRFib gzUlXDW7B1WWGOjKh/mYwhagfXcc2//kX6BuNBRGgOo2ZOkxVyc7uEFAewU0PUs/QO7J0B zaI6HgaDH6ICGK6YE2TLQ8RnK6xO/rlyK+l5Gkz1hWcISZRnxEoEJni/ChChtg== Date: Mon, 10 Feb 2025 18:12:44 +0100 From: Luca Ceresoli To: Dmitry Baryshkov , Maxime Ripard Cc: Simona Vetter , Inki Dae , Jagan Teki , Marek Szyprowski , Catalin Marinas , Will Deacon , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Daniel Thompson , Andrzej Hajda , Jonathan Corbet , Sam Ravnborg , Boris Brezillon , Nicolas Ferre , Alexandre Belloni , Claudiu Beznea , Jessica Zhang , Paul Kocialkowski , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Thomas Zimmermann , David Airlie , =?UTF-8?B?SGVy?= =?UTF-8?B?dsOp?= Codina , Thomas Petazzoni , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-doc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Paul Kocialkowski Subject: Re: [PATCH v6 14/26] drm/bridge: add support for refcounted DRM bridges Message-ID: <20250210181244.0e3e9189@booty> In-Reply-To: References: <20250206-hotplug-drm-bridge-v6-0-9d6f2c9c3058@bootlin.com> <20250206-hotplug-drm-bridge-v6-14-9d6f2c9c3058@bootlin.com> <20250207-ingenious-daffodil-dugong-51be57@houat> Organization: Bootlin X-Mailer: Claws Mail 4.3.0 (GTK 3.24.43; x86_64-redhat-linux-gnu) Precedence: bulk X-Mailing-List: linux-doc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-GND-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdefkeeigecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfitefpfffkpdcuggftfghnshhusghstghrihgsvgenuceurghilhhouhhtmecufedtudenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhepfffhvfevuffkjghfohfogggtgfesthejredtredtvdenucfhrhhomhepnfhutggrucevvghrvghsohhlihcuoehluhgtrgdrtggvrhgvshholhhisegsohhothhlihhnrdgtohhmqeenucggtffrrghtthgvrhhnpeeglefffefghefhtddvfeeufeeiveekgffgleekieduteekkeetvdehudekgfdvvdenucffohhmrghinhepsghoohhtlhhinhdrtghomhenucfkphepvdgrtddvmeeijedtmedvtddvtdemvggrtddumegsvgegudemleehvgejmeefgeefmeeludefvgenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpedvrgdtvdemieejtdemvddtvddtmegvrgdtudemsggvgedumeelhegvjeemfeegfeemledufegvpdhhvghlohepsghoohhthidpmhgrihhlfhhrohhmpehluhgtrgdrtggvrhgvshholhhisegsohhothhlihhnrdgtohhmpdhnsggprhgtphhtthhopeefjedprhgtphhtthhopegumhhithhrhidrsggrrhihshhhkhhovheslhhinhgrrhhordhorhhgpdhrtghpthhtohepmhhrihhprghrugeskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepshhimhhonhgrsehffhiflhhlrdgthhdpr hgtphhtthhopehinhhkihdruggrvgesshgrmhhsuhhnghdrtghomhdprhgtphhtthhopehjrghgrghnsegrmhgrrhhulhgrshholhhuthhiohhnshdrtghomhdprhgtphhtthhopehmrdhsiiihphhrohifshhkihesshgrmhhsuhhnghdrtghomhdprhgtphhtthhopegtrghtrghlihhnrdhmrghrihhnrghssegrrhhmrdgtohhmpdhrtghpthhtohepfihilhhlsehkvghrnhgvlhdrohhrgh X-GND-Sasl: luca.ceresoli@bootlin.com Hi Maxime, Dmitry On Fri, 7 Feb 2025 21:54:06 +0200 Dmitry Baryshkov wrote: > > > +/* Internal function (for refcounted bridges) */ > > > +void __drm_bridge_free(struct kref *kref) > > > +{ > > > + struct drm_bridge *bridge = container_of(kref, struct drm_bridge, refcount); > > > + void *container = ((void *)bridge) - bridge->container_offset; > > > + > > > + DRM_DEBUG("bridge=%p, container=%p FREE\n", bridge, container); > > > > Pointers are not really useful to track here, since they are obfuscated > > most of the time. Using the bridge device name would probably be better > > (or removing the SHOUTING DEBUG entirely :)) > > bridge device name or bridge funcs (I opted for the latter for the > debugfs file) These DRM_DEBUG()s proved extremely useful exactly because of the pointer. This is because when using hotplug one normally has the same device added and removed multiple times, and so the device name or bridge funcs is always the same, preventing from understanding which instance is leaking, or being freed, get, put, etc. Do you think this is a sufficient motivation to keep it? Luca -- Luca Ceresoli, Bootlin Embedded Linux and Kernel engineering https://bootlin.com