From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D7AB636B043 for ; Thu, 30 Apr 2026 08:52:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777539145; cv=none; b=VJ5SrZ/r0WfRtv4JXwFNNaHNiztC7+ik6ItiIAYm2S52lJtDvq6L9dr8/6ZOrEEVyKNJPS3Erj3bGLzM1rW0r1oiZ52Oevqd4tFjob10NF9At4GZesvKNP2E6YLBrT4HfSlhF7cmslPABLZ6sH23w23NYh2ASeBU9Ospk3IP9TM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777539145; c=relaxed/simple; bh=nh8FeWVgZMmI1Zz40jRCGrGIcuEoqQHDX1Vv7w5wdMA=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=vFIvBspZ8ZUihDjP/2Trm7zP6daJ1wgdmTb8o+2Bg25MtrX5BbxBkMeopDtE2iiURBK1zrC6de5UTFLVauMerYfic6ZKCpn1x51jjIRYdCe1BLQiBYZfBwyvmnrZwSYbXp3d1k+GLHQfKImLzr4lXKlL58eqlOIL5iFrsChDYFQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IRJkMoYr; arc=none smtp.client-ip=209.85.221.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IRJkMoYr" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-444826c16ffso592432f8f.1 for ; Thu, 30 Apr 2026 01:52:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777539142; x=1778143942; darn=vger.kernel.org; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=nh8FeWVgZMmI1Zz40jRCGrGIcuEoqQHDX1Vv7w5wdMA=; b=IRJkMoYrC0NcKTcQ3H3pr9hjyjetobaGvdK5RBUJwJ1S+MM6BCoP2a+x0pzDNqBpeU 5ahl4AiWlPLmFVE4dnPImZmKr46avcwA4Aq9ZP75Av3dJ94oLQl44V0NGJ9jr8EqLCJQ b7a56kJWJbCcZOCGmFpV5ssUO+tpF9l9IW0ztcl9MTU+Vtvr6pfeMkVNrGzWkBjhQxap qn9IFmGIY/n+12JzU3C6TOXWj/PCtXMx9+KOxcgVxQsYWv4dfS9IatkVwc+vKGNC/ULl uZ2R5uO44CYv/gHfRz5m/FGkQLEkgUWbPedOPY26ycaHnSZ6CKyqsfd3KwUWeCQbnabp pjkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777539142; x=1778143942; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=nh8FeWVgZMmI1Zz40jRCGrGIcuEoqQHDX1Vv7w5wdMA=; b=mFybMTsrkIf74vflnH4EcMrJh5hsn+jFe0VtxlL+EJozZh6K0NPsO+WpVuStod4j9h I/Bf3O057qSVKO8ynMHBk/19wcdPo1KRYe05x9MaV0OhpV3AglrpDAPeoqaVbKgf3L5Q MIvX2DH5XWXOXR6vcS6cv5rqZfhckKyNwcuatMXh2QL95B8maAS8YogKkcCLE/1aH5+W AHVPlGr8gi+nN8B8FnI84TsP6N3DIV4v5JKwYvutvtR3nTohYRFIu4DPr62xOlJ110wb vxUyIQUMwKljRHmnjvKPhBJL6holm8mhvJL8e1KIqb1wi6D84X41s3s7PZLIF9FgxNyC NECg== X-Forwarded-Encrypted: i=1; AFNElJ/7t40vwjo4e3mIQ30GLG5NBytVCd5pp6+u78kZAVuWXbeWNHonQ00RdWDiabO08Rq9HTYXPFTfljrMq1E=@vger.kernel.org X-Gm-Message-State: AOJu0Yyyxlyi3bjgDhhIaZiw5UWCyWPfoj0xXmNneZBDCwSM1Boww+55 Eoiu3kvV/0c0kIGGgZNju6pkqByxdZbVw3SIYPHOsk9fBbeQ79hcmdF0 X-Gm-Gg: AeBDiesPlwMCP35cI+JC85EIPkbuF09R9hsCzBs3KGI5JpWqIP3XpwP3US3/Mf3n4+T QKqD7ZSFeheqzABS+bRIUYLzh/wVuyivq8P42J5YMYatPKwU0ETwq579ZMqV3+O42lkUvuC90aX 6YFYEInQlXp2JZgiYWnQqkukMMBOqk5fP6SM30IvLPoBNmUs7/bHKQsh5HWnjL3zSU1QufNQpW4 9dBjpZnx/LMkF2QUpOS3yaDG7pywgc2941sYzXUd5DYNuLOg00vXfX6cyYgnYTLTfsb8qVOYY8V y9ghvUoW4pcSIu96Hdjg41YpCig/bsmA3p7L3aVXLj0lCR0gnnTrTEPZHo7wi746ZBrSuE5r7Pj rjv3wZyq+MrpZcdrui1TzCcQ59RBc9Hfw/4VXw6MbVvr60L+tmKKtsNaixWxTgRY631dddEekuu j0e1AC8PInRAO0VxyiujJYJgpUMIBY7RYZpDCM7dDHzfQl1bOR2X44je8v X-Received: by 2002:a05:6000:2486:b0:43d:7b85:6c95 with SMTP id ffacd0b85a97d-4493fa014admr2984866f8f.33.1777539141830; Thu, 30 Apr 2026 01:52:21 -0700 (PDT) Received: from vitor-nb.Home (dsl-43-224.bl27.telepac.pt. [176.79.43.224]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-447b7217b20sm11157241f8f.22.2026.04.30.01.52.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 01:52:21 -0700 (PDT) Message-ID: <19d0a0b1d33061a0421edf883acaaa7e366646c2.camel@gmail.com> Subject: Re: [PATCH v4] drm/bridge: cdns-dsi: Replace deprecated UNIVERSAL_DEV_PM_OPS() From: Vitor Soares To: Luca Ceresoli , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Vitor Soares , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Tomi Valkeinen Date: Thu, 30 Apr 2026 09:52:19 +0100 In-Reply-To: References: <20260407144142.1420354-2-ivitro@gmail.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.44.4-0ubuntu2.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Hi Luca, Thanks you for the feedback. On Thu, 2026-04-30 at 10:10 +0200, Luca Ceresoli wrote: > On Tue Apr 7, 2026 at 4:41 PM CEST, Vitor Soares wrote: > > From: Vitor Soares > >=20 > > The deprecated UNIVERSAL_DEV_PM_OPS() macro uses the provided callbacks > > for both runtime PM and system sleep. This causes the DSI clocks to be > > disabled twice: once during runtime suspend and again during system > > suspend, resulting in a WARN message from the clock framework when > > attempting to disable already-disabled clocks. > >=20 > > [=C2=A0=C2=A0 84.384540] clk:231:5 already disabled > > [=C2=A0=C2=A0 84.388314] WARNING: CPU: 2 PID: 531 at /drivers/clk/clk.c= :1181 > > clk_core_disable+0xa4/0xac > > ... > > [=C2=A0=C2=A0 84.579183] Call trace: > > [=C2=A0=C2=A0 84.581624]=C2=A0 clk_core_disable+0xa4/0xac > > [=C2=A0=C2=A0 84.585457]=C2=A0 clk_disable+0x30/0x4c > > [=C2=A0=C2=A0 84.588857]=C2=A0 cdns_dsi_suspend+0x20/0x58 [cdns_dsi] > > [=C2=A0=C2=A0 84.593651]=C2=A0 pm_generic_suspend+0x2c/0x44 > > [=C2=A0=C2=A0 84.597661]=C2=A0 ti_sci_pd_suspend+0xbc/0x15c > > [=C2=A0=C2=A0 84.601670]=C2=A0 dpm_run_callback+0x8c/0x14c > > [=C2=A0=C2=A0 84.605588]=C2=A0 __device_suspend+0x1a0/0x56c > > [=C2=A0=C2=A0 84.609594]=C2=A0 dpm_suspend+0x17c/0x21c > > [=C2=A0=C2=A0 84.613165]=C2=A0 dpm_suspend_start+0xa0/0xa8 > > [=C2=A0=C2=A0 84.617083]=C2=A0 suspend_devices_and_enter+0x12c/0x634 > > [=C2=A0=C2=A0 84.621872]=C2=A0 pm_suspend+0x1fc/0x368 > >=20 > > To address this issue, replace UNIVERSAL_DEV_PM_OPS() with > > SET_RUNTIME_PM_OPS(), enabling suspend/resume handling through the >=20 > This is not what the patch does, the patch uses RUNTIME_PM_OPS. >=20 I missed changing it. I will send another version fixing the commit message to RUNTIME_PM_OPS(). > > _enable()/_disable() hooks managed by the DRM framework for both > > runtime and system-wide PM. > >=20 > > Cc: stable@vger.kernel.org=C2=A0# 6.1.x > > Fixes: e19233955d9e ("drm/bridge: Add Cadence DSI driver") > > Reviewed-by: Tomi Valkeinen > > Signed-off-by: Vitor Soares > > --- > > v3 -> v4 > > =C2=A0- Add Reviewed-by from Tomi Valkeinen > > =C2=A0- Rebase on top of drm-misc-fixes > > =C2=A0- Verified issue still present on current mainline > >=20 > > v2 -> v3 > > =C2=A0- Fix warning: 'cdns_dsi_suspend' defined but not used [-Wunused-= function] > > =C2=A0- Fix warning: 'cdns_dsi_resume' defined but not used [-Wunused-f= unction] > >=20 > > v1 -> v2 > > =C2=A0- Rely only on SET_RUNTIME_PM_OPS() for the PM. > >=20 > > =C2=A0drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 11 ++++++----- > > =C2=A01 file changed, 6 insertions(+), 5 deletions(-) > >=20 > > diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c > > b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c > > index 0dd85e26248c..e07a9892df4e 100644 > > --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c > > +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c > > @@ -1230,7 +1230,7 @@ static const struct mipi_dsi_host_ops cdns_dsi_op= s =3D { > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0.transfer =3D cdns_dsi_= transfer, > > =C2=A0}; > >=20 > > -static int __maybe_unused cdns_dsi_resume(struct device *dev) > > +static int cdns_dsi_resume(struct device *dev) > > =C2=A0{ > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0struct cdns_dsi *dsi = =3D dev_get_drvdata(dev); > >=20 > > @@ -1241,7 +1241,7 @@ static int __maybe_unused cdns_dsi_resume(struct > > device *dev) > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0return 0; > > =C2=A0} > >=20 > > -static int __maybe_unused cdns_dsi_suspend(struct device *dev) > > +static int cdns_dsi_suspend(struct device *dev) > > =C2=A0{ > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0struct cdns_dsi *dsi = =3D dev_get_drvdata(dev); > >=20 > > @@ -1251,8 +1251,9 @@ static int __maybe_unused cdns_dsi_suspend(struct > > device *dev) > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0return 0; > > =C2=A0} > >=20 > > -static UNIVERSAL_DEV_PM_OPS(cdns_dsi_pm_ops, cdns_dsi_suspend, > > cdns_dsi_resume, > > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 NULL); > > +static const struct dev_pm_ops cdns_dsi_pm_ops =3D { > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0RUNTIME_PM_OPS(cdns_dsi_susp= end, cdns_dsi_resume, NULL) > > +}; >=20 > Not an expert here, but the docs [0] suggest using > DEFINE_RUNTIME_DEV_PM_OPS(). Is there a good reason to not do so? >=20 > [0] > https://elixir.bootlin.com/linux/v7.0.1/source/include/linux/pm.h#L455-L4= 56 >=20 > Luca >=20 In an earlier discussion [0], we concluded that bridges/panels should only = deal with runtime PM: [0] https://lore.kernel.org/all/a1cf67da-a0cb-46c5-b22b-10ecca8ab383@ideasonboa= rd.com/ Best regards, Vitor Soares