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 X-Spam-Level: X-Spam-Status: No, score=-17.4 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EA8F8C4338F for ; Wed, 4 Aug 2021 18:30:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C9ECA61002 for ; Wed, 4 Aug 2021 18:30:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239013AbhHDSa5 (ORCPT ); Wed, 4 Aug 2021 14:30:57 -0400 Received: from smtp-out1.suse.de ([195.135.220.28]:37540 "EHLO smtp-out1.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231197AbhHDSa5 (ORCPT ); Wed, 4 Aug 2021 14:30:57 -0400 Received: from imap1.suse-dmz.suse.de (imap1.suse-dmz.suse.de [192.168.254.73]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 20F7B222E3; Wed, 4 Aug 2021 18:30:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1628101843; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=KUz+dWu1JedU38OjBLq+YD5okNGXKNVig0LLvYSaDCI=; b=x1ljMwLyZSD2ngghH7eBBQzZtrZsV1A6xmzlBomJsbdsPdwZfvYfBBxovQe2GwqETYYuAl Wxc24FD5NnGKHMoHkCU/osnduEHqpBOijdiuWRYGYO0XviHNQ9RlEItEW4Rh6ROVHL1v7D kwXrdIU0h3s8U30AnYzu/v/C5wXbrAw= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1628101843; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=KUz+dWu1JedU38OjBLq+YD5okNGXKNVig0LLvYSaDCI=; b=DExaCUJXASlqY5Xr0RQZ7W3liyDwed3+Mx8MC6QjtqnpeMFi9tlWLzu2gtzue27IlKEBg8 S+cq3YU8KVwKrLBw== Received: from imap1.suse-dmz.suse.de (imap1.suse-dmz.suse.de [192.168.254.73]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap1.suse-dmz.suse.de (Postfix) with ESMTPS id 5F2AF139B5; Wed, 4 Aug 2021 18:30:42 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap1.suse-dmz.suse.de with ESMTPSA id XDOGFdLcCmH8EwAAGKfGzw (envelope-from ); Wed, 04 Aug 2021 18:30:42 +0000 To: Sam Ravnborg Cc: daniel@ffwll.ch, airlied@linux.ie, alexander.deucher@amd.com, christian.koenig@amd.com, liviu.dudau@arm.com, brian.starkey@arm.com, bbrezillon@kernel.org, nicolas.ferre@microchip.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, stefan@agner.ch, alison.wang@nxp.com, patrik.r.jakobsson@gmail.com, anitha.chrisanthus@intel.com, robdclark@gmail.com, edmund.j.dea@intel.com, sean@poorly.run, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, jyri.sarha@iki.fi, tomba@kernel.org, Dan.Sneddon@microchip.com, tomi.valkeinen@ideasonboard.com, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org References: <20210803090704.32152-1-tzimmermann@suse.de> <20210803090704.32152-12-tzimmermann@suse.de> From: Thomas Zimmermann Subject: Re: [PATCH v2 11/14] drm/tilcdc: Convert to Linux IRQ interfaces Message-ID: <896793e5-f5a8-fe74-1d8f-3dd1450d3fae@suse.de> Date: Wed, 4 Aug 2021 20:30:41 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="YucijCQJHyzyZtQX54zjdDl9YYZpFF6pK" Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --YucijCQJHyzyZtQX54zjdDl9YYZpFF6pK Content-Type: multipart/mixed; boundary="mCfsOcPzSKYlTHNGiPJThEmp0NdPdChTp"; protected-headers="v1" From: Thomas Zimmermann To: Sam Ravnborg Cc: daniel@ffwll.ch, airlied@linux.ie, alexander.deucher@amd.com, christian.koenig@amd.com, liviu.dudau@arm.com, brian.starkey@arm.com, bbrezillon@kernel.org, nicolas.ferre@microchip.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, stefan@agner.ch, alison.wang@nxp.com, patrik.r.jakobsson@gmail.com, anitha.chrisanthus@intel.com, robdclark@gmail.com, edmund.j.dea@intel.com, sean@poorly.run, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, jyri.sarha@iki.fi, tomba@kernel.org, Dan.Sneddon@microchip.com, tomi.valkeinen@ideasonboard.com, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org Message-ID: <896793e5-f5a8-fe74-1d8f-3dd1450d3fae@suse.de> Subject: Re: [PATCH v2 11/14] drm/tilcdc: Convert to Linux IRQ interfaces References: <20210803090704.32152-1-tzimmermann@suse.de> <20210803090704.32152-12-tzimmermann@suse.de> In-Reply-To: --mCfsOcPzSKYlTHNGiPJThEmp0NdPdChTp Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable Hi Am 03.08.21 um 17:00 schrieb Sam Ravnborg: > Hi Thomas, >=20 > On Tue, Aug 03, 2021 at 11:07:01AM +0200, Thomas Zimmermann wrote: >> Drop the DRM IRQ midlayer in favor of Linux IRQ interfaces. DRM's >> IRQ helpers are mostly useful for UMS drivers. Modern KMS drivers >> don't benefit from using it. >> >> DRM IRQ callbacks are now being called directly or inlined. >> >> Calls to platform_get_irq() can fail with a negative errno code. >> Abort initialization in this case. The DRM IRQ midlayer does not >> handle this case correctly. >=20 > I cannot see why the irq_enabled flag is needed here, and the changelog= > do not help me. > What do I miss? That's a good point. Usually, only the DRM IRQ helpers use irq_enabled=20 in struct drm_device. It'll become legacy and we can ignore it for the=20 driver conversion. The exception is tilcdc, which also uses irq_enabled to make its error=20 rollback work correctly. So I duplicated the state in the local private=20 structure. I'll add this explanation to the commit message. Best regards Thomas >=20 > Sam >=20 >=20 >> >> Signed-off-by: Thomas Zimmermann >> --- >> drivers/gpu/drm/tilcdc/tilcdc_drv.c | 51 ++++++++++++++++++++++-----= -- >> drivers/gpu/drm/tilcdc/tilcdc_drv.h | 3 ++ >> 2 files changed, 43 insertions(+), 11 deletions(-) >> >> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/til= cdc/tilcdc_drv.c >> index f1d3a9f919fd..6b03f89a98d4 100644 >> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c >> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c >> @@ -20,7 +20,6 @@ >> #include >> #include >> #include >> -#include >> #include >> #include >> #include >> @@ -124,6 +123,39 @@ static int cpufreq_transition(struct notifier_blo= ck *nb, >> } >> #endif >> =20 >> +static irqreturn_t tilcdc_irq(int irq, void *arg) >> +{ >> + struct drm_device *dev =3D arg; >> + struct tilcdc_drm_private *priv =3D dev->dev_private; >> + >> + return tilcdc_crtc_irq(priv->crtc); >> +} >> + >> +static int tilcdc_irq_install(struct drm_device *dev, unsigned int ir= q) >> +{ >> + struct tilcdc_drm_private *priv =3D dev->dev_private; >> + int ret; >> + >> + ret =3D request_irq(irq, tilcdc_irq, 0, dev->driver->name, dev); >> + if (ret) >> + return ret; >> + >> + priv->irq_enabled =3D false; >> + >> + return 0; >> +} >> + >> +static void tilcdc_irq_uninstall(struct drm_device *dev) >> +{ >> + struct tilcdc_drm_private *priv =3D dev->dev_private; >> + >> + if (!priv->irq_enabled) >> + return; >> + >> + free_irq(priv->irq, dev); >> + priv->irq_enabled =3D false; >> +} >> + >> /* >> * DRM operations: >> */ >> @@ -145,7 +177,7 @@ static void tilcdc_fini(struct drm_device *dev) >> drm_dev_unregister(dev); >> =20 >> drm_kms_helper_poll_fini(dev); >> - drm_irq_uninstall(dev); >> + tilcdc_irq_uninstall(dev); >> drm_mode_config_cleanup(dev); >> =20 >> if (priv->clk) >> @@ -336,7 +368,12 @@ static int tilcdc_init(const struct drm_driver *d= drv, struct device *dev) >> goto init_failed; >> } >> =20 >> - ret =3D drm_irq_install(ddev, platform_get_irq(pdev, 0)); >> + ret =3D platform_get_irq(pdev, 0); >> + if (ret < 0) >> + goto init_failed; >> + priv->irq =3D ret; >> + >> + ret =3D tilcdc_irq_install(ddev, priv->irq); >> if (ret < 0) { >> dev_err(dev, "failed to install IRQ handler\n"); >> goto init_failed; >> @@ -360,13 +397,6 @@ static int tilcdc_init(const struct drm_driver *d= drv, struct device *dev) >> return ret; >> } >> =20 >> -static irqreturn_t tilcdc_irq(int irq, void *arg) >> -{ >> - struct drm_device *dev =3D arg; >> - struct tilcdc_drm_private *priv =3D dev->dev_private; >> - return tilcdc_crtc_irq(priv->crtc); >> -} >> - >> #if defined(CONFIG_DEBUG_FS) >> static const struct { >> const char *name; >> @@ -454,7 +484,6 @@ DEFINE_DRM_GEM_CMA_FOPS(fops); >> =20 >> static const struct drm_driver tilcdc_driver =3D { >> .driver_features =3D DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC= , >> - .irq_handler =3D tilcdc_irq, >> DRM_GEM_CMA_DRIVER_OPS, >> #ifdef CONFIG_DEBUG_FS >> .debugfs_init =3D tilcdc_debugfs_init, >> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.h b/drivers/gpu/drm/til= cdc/tilcdc_drv.h >> index d29806ca8817..b818448c83f6 100644 >> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.h >> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.h >> @@ -46,6 +46,8 @@ struct tilcdc_drm_private { >> struct clk *clk; /* functional clock */ >> int rev; /* IP revision */ >> =20 >> + unsigned int irq; >> + >> /* don't attempt resolutions w/ higher W * H * Hz: */ >> uint32_t max_bandwidth; >> /* >> @@ -82,6 +84,7 @@ struct tilcdc_drm_private { >> =20 >> bool is_registered; >> bool is_componentized; >> + bool irq_enabled; >> }; >> =20 >> /* Sub-module for display. Since we don't know at compile time what= panels >> --=20 >> 2.32.0 --=20 Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 N=C3=BCrnberg, Germany (HRB 36809, AG N=C3=BCrnberg) Gesch=C3=A4ftsf=C3=BChrer: Felix Imend=C3=B6rffer --mCfsOcPzSKYlTHNGiPJThEmp0NdPdChTp-- --YucijCQJHyzyZtQX54zjdDl9YYZpFF6pK Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEExndm/fpuMUdwYFFolh/E3EQov+AFAmEK3NEFAwAAAAAACgkQlh/E3EQov+C+ 4Q//dCYZ5TP4KEG8lVz+MeAm3RYh4P1SDDFvX8RYKmv1CyQGh2WTA1kOOgm6Orj/v3TE+x8F7hyt +99JcU2JZx7dwpuc4Ydm7PK2FZhdH/2CpzIo0Bw0UmCaUY7R7tpM5WKIukCqwYCEW3yGI5IW2Onf pwwhzijl1+L7LiwNMsRTOcbqZM9xcF8rGqut4HbRTY0PlNmVAN/EmfpOwo0k8RCzAzIuCAvl/5VR V6dmO8zuLMaMCs8RNAviyJ1wDs4CleJsepN1IXNDLyqcyqcPTWhDvVwWjUg85/+XxoF6t1G6wJk/ QSUnjNbBJi41DxsVB0NtMHxeT4Qwe/O+PAaQQYLOIgnbcFp1/imQ/FeGkZFqzqefb80rOUCsQcdM 4JKSxtYWxj7sCS0VWtl3RL1GdOelj8DYVs5X1wDoSdEngYoGwr4CJy60ZvYudMGNqv3IP/NVVSuR +bV8plSN7Bbdy/wZR1GREZNS7y5NBAXv0hOcHna6uLKwPkmRR37Xm+oyddUjWNgUuSpUvkRAAD0z jw5IfKSVif3ZY9XdyuK3EBK5cFzgeUI563+sshIYiEB+Ibl5Unfxj5rVh6VWBSORJ+iz8IEa3Oy5 opdFyRNn5Kk03zZVGPfYwOmNgJB+u+MYGjKwgWTgqWjL2vZ+lN7quDgl1dJCv9MjdZEHjHFVfI8V F+s= =xdU3 -----END PGP SIGNATURE----- --YucijCQJHyzyZtQX54zjdDl9YYZpFF6pK-- 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 X-Spam-Level: X-Spam-Status: No, score=-16.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E9958C4338F for ; Wed, 4 Aug 2021 18:32:35 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id B5E9460F58 for ; Wed, 4 Aug 2021 18:32:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org B5E9460F58 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type:Cc: List-Subscribe:List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id: In-Reply-To:MIME-Version:Date:Message-ID:Subject:From:References:To:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ft0pf2wlZTYLYchBmUiU4pM6bvUy++G0JorQSBDU7ts=; b=ZAeqrTDsRRSuQ33W8rZpbugbI6 HXp4kWoKbePBcGOWUOh3k4X1S5PZtRL/ZSFKFS8v7LxAwSi/2qeT3KYTS9FoVrWUeLQD5oWzoBiMV 59ru5+5We5nXn8E1EGfS7WcQjIiMXNNb3sN9M2eOYIfDvyMUrff28/p90EZ+6GHSvXgoXQJxCp0KT tAnvex3n7hVzn8HM4Gj6FfxFrF3IkiL4iiUsxegyHHEEQn2X9iHdTtP33DxUX5px29f+1TQ815E8N 7xl6A5SR0/MTMNoXtpYQq5ZzTo7wzlHE0UME0Tdl80dFHsxMeVB7dV4Oh6gJmqLiAuVSaI8ypSHXU pd6CqARg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mBLfG-007AQp-Hw; Wed, 04 Aug 2021 18:30:50 +0000 Received: from smtp-out1.suse.de ([195.135.220.28]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mBLfD-007AQ8-0w for linux-arm-kernel@lists.infradead.org; Wed, 04 Aug 2021 18:30:48 +0000 Received: from imap1.suse-dmz.suse.de (imap1.suse-dmz.suse.de [192.168.254.73]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 20F7B222E3; Wed, 4 Aug 2021 18:30:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1628101843; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=KUz+dWu1JedU38OjBLq+YD5okNGXKNVig0LLvYSaDCI=; b=x1ljMwLyZSD2ngghH7eBBQzZtrZsV1A6xmzlBomJsbdsPdwZfvYfBBxovQe2GwqETYYuAl Wxc24FD5NnGKHMoHkCU/osnduEHqpBOijdiuWRYGYO0XviHNQ9RlEItEW4Rh6ROVHL1v7D kwXrdIU0h3s8U30AnYzu/v/C5wXbrAw= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1628101843; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=KUz+dWu1JedU38OjBLq+YD5okNGXKNVig0LLvYSaDCI=; b=DExaCUJXASlqY5Xr0RQZ7W3liyDwed3+Mx8MC6QjtqnpeMFi9tlWLzu2gtzue27IlKEBg8 S+cq3YU8KVwKrLBw== Received: from imap1.suse-dmz.suse.de (imap1.suse-dmz.suse.de [192.168.254.73]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap1.suse-dmz.suse.de (Postfix) with ESMTPS id 5F2AF139B5; Wed, 4 Aug 2021 18:30:42 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap1.suse-dmz.suse.de with ESMTPSA id XDOGFdLcCmH8EwAAGKfGzw (envelope-from ); Wed, 04 Aug 2021 18:30:42 +0000 To: Sam Ravnborg References: <20210803090704.32152-1-tzimmermann@suse.de> <20210803090704.32152-12-tzimmermann@suse.de> From: Thomas Zimmermann Subject: Re: [PATCH v2 11/14] drm/tilcdc: Convert to Linux IRQ interfaces Message-ID: <896793e5-f5a8-fe74-1d8f-3dd1450d3fae@suse.de> Date: Wed, 4 Aug 2021 20:30:41 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210804_113047_279558_A7E77A10 X-CRM114-Status: GOOD ( 30.59 ) 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: , Cc: airlied@linux.ie, tomi.valkeinen@ideasonboard.com, liviu.dudau@arm.com, stefan@agner.ch, amd-gfx@lists.freedesktop.org, anitha.chrisanthus@intel.com, Dan.Sneddon@microchip.com, patrik.r.jakobsson@gmail.com, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, daniel@ffwll.ch, edmund.j.dea@intel.com, s.hauer@pengutronix.de, alison.wang@nxp.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, dri-devel@lists.freedesktop.org, sean@poorly.run, linux-arm-kernel@lists.infradead.org, tomba@kernel.org, bbrezillon@kernel.org, jyri.sarha@iki.fi, christian.koenig@amd.com, robdclark@gmail.com, kernel@pengutronix.de, alexander.deucher@amd.com, shawnguo@kernel.org, brian.starkey@arm.com Content-Type: multipart/mixed; boundary="===============9019315602839788428==" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --===============9019315602839788428== Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="YucijCQJHyzyZtQX54zjdDl9YYZpFF6pK" This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --YucijCQJHyzyZtQX54zjdDl9YYZpFF6pK Content-Type: multipart/mixed; boundary="mCfsOcPzSKYlTHNGiPJThEmp0NdPdChTp"; protected-headers="v1" From: Thomas Zimmermann To: Sam Ravnborg Cc: daniel@ffwll.ch, airlied@linux.ie, alexander.deucher@amd.com, christian.koenig@amd.com, liviu.dudau@arm.com, brian.starkey@arm.com, bbrezillon@kernel.org, nicolas.ferre@microchip.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, stefan@agner.ch, alison.wang@nxp.com, patrik.r.jakobsson@gmail.com, anitha.chrisanthus@intel.com, robdclark@gmail.com, edmund.j.dea@intel.com, sean@poorly.run, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, jyri.sarha@iki.fi, tomba@kernel.org, Dan.Sneddon@microchip.com, tomi.valkeinen@ideasonboard.com, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org Message-ID: <896793e5-f5a8-fe74-1d8f-3dd1450d3fae@suse.de> Subject: Re: [PATCH v2 11/14] drm/tilcdc: Convert to Linux IRQ interfaces References: <20210803090704.32152-1-tzimmermann@suse.de> <20210803090704.32152-12-tzimmermann@suse.de> In-Reply-To: --mCfsOcPzSKYlTHNGiPJThEmp0NdPdChTp Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable Hi Am 03.08.21 um 17:00 schrieb Sam Ravnborg: > Hi Thomas, >=20 > On Tue, Aug 03, 2021 at 11:07:01AM +0200, Thomas Zimmermann wrote: >> Drop the DRM IRQ midlayer in favor of Linux IRQ interfaces. DRM's >> IRQ helpers are mostly useful for UMS drivers. Modern KMS drivers >> don't benefit from using it. >> >> DRM IRQ callbacks are now being called directly or inlined. >> >> Calls to platform_get_irq() can fail with a negative errno code. >> Abort initialization in this case. The DRM IRQ midlayer does not >> handle this case correctly. >=20 > I cannot see why the irq_enabled flag is needed here, and the changelog= > do not help me. > What do I miss? That's a good point. Usually, only the DRM IRQ helpers use irq_enabled=20 in struct drm_device. It'll become legacy and we can ignore it for the=20 driver conversion. The exception is tilcdc, which also uses irq_enabled to make its error=20 rollback work correctly. So I duplicated the state in the local private=20 structure. I'll add this explanation to the commit message. Best regards Thomas >=20 > Sam >=20 >=20 >> >> Signed-off-by: Thomas Zimmermann >> --- >> drivers/gpu/drm/tilcdc/tilcdc_drv.c | 51 ++++++++++++++++++++++-----= -- >> drivers/gpu/drm/tilcdc/tilcdc_drv.h | 3 ++ >> 2 files changed, 43 insertions(+), 11 deletions(-) >> >> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/til= cdc/tilcdc_drv.c >> index f1d3a9f919fd..6b03f89a98d4 100644 >> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c >> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c >> @@ -20,7 +20,6 @@ >> #include >> #include >> #include >> -#include >> #include >> #include >> #include >> @@ -124,6 +123,39 @@ static int cpufreq_transition(struct notifier_blo= ck *nb, >> } >> #endif >> =20 >> +static irqreturn_t tilcdc_irq(int irq, void *arg) >> +{ >> + struct drm_device *dev =3D arg; >> + struct tilcdc_drm_private *priv =3D dev->dev_private; >> + >> + return tilcdc_crtc_irq(priv->crtc); >> +} >> + >> +static int tilcdc_irq_install(struct drm_device *dev, unsigned int ir= q) >> +{ >> + struct tilcdc_drm_private *priv =3D dev->dev_private; >> + int ret; >> + >> + ret =3D request_irq(irq, tilcdc_irq, 0, dev->driver->name, dev); >> + if (ret) >> + return ret; >> + >> + priv->irq_enabled =3D false; >> + >> + return 0; >> +} >> + >> +static void tilcdc_irq_uninstall(struct drm_device *dev) >> +{ >> + struct tilcdc_drm_private *priv =3D dev->dev_private; >> + >> + if (!priv->irq_enabled) >> + return; >> + >> + free_irq(priv->irq, dev); >> + priv->irq_enabled =3D false; >> +} >> + >> /* >> * DRM operations: >> */ >> @@ -145,7 +177,7 @@ static void tilcdc_fini(struct drm_device *dev) >> drm_dev_unregister(dev); >> =20 >> drm_kms_helper_poll_fini(dev); >> - drm_irq_uninstall(dev); >> + tilcdc_irq_uninstall(dev); >> drm_mode_config_cleanup(dev); >> =20 >> if (priv->clk) >> @@ -336,7 +368,12 @@ static int tilcdc_init(const struct drm_driver *d= drv, struct device *dev) >> goto init_failed; >> } >> =20 >> - ret =3D drm_irq_install(ddev, platform_get_irq(pdev, 0)); >> + ret =3D platform_get_irq(pdev, 0); >> + if (ret < 0) >> + goto init_failed; >> + priv->irq =3D ret; >> + >> + ret =3D tilcdc_irq_install(ddev, priv->irq); >> if (ret < 0) { >> dev_err(dev, "failed to install IRQ handler\n"); >> goto init_failed; >> @@ -360,13 +397,6 @@ static int tilcdc_init(const struct drm_driver *d= drv, struct device *dev) >> return ret; >> } >> =20 >> -static irqreturn_t tilcdc_irq(int irq, void *arg) >> -{ >> - struct drm_device *dev =3D arg; >> - struct tilcdc_drm_private *priv =3D dev->dev_private; >> - return tilcdc_crtc_irq(priv->crtc); >> -} >> - >> #if defined(CONFIG_DEBUG_FS) >> static const struct { >> const char *name; >> @@ -454,7 +484,6 @@ DEFINE_DRM_GEM_CMA_FOPS(fops); >> =20 >> static const struct drm_driver tilcdc_driver =3D { >> .driver_features =3D DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC= , >> - .irq_handler =3D tilcdc_irq, >> DRM_GEM_CMA_DRIVER_OPS, >> #ifdef CONFIG_DEBUG_FS >> .debugfs_init =3D tilcdc_debugfs_init, >> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.h b/drivers/gpu/drm/til= cdc/tilcdc_drv.h >> index d29806ca8817..b818448c83f6 100644 >> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.h >> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.h >> @@ -46,6 +46,8 @@ struct tilcdc_drm_private { >> struct clk *clk; /* functional clock */ >> int rev; /* IP revision */ >> =20 >> + unsigned int irq; >> + >> /* don't attempt resolutions w/ higher W * H * Hz: */ >> uint32_t max_bandwidth; >> /* >> @@ -82,6 +84,7 @@ struct tilcdc_drm_private { >> =20 >> bool is_registered; >> bool is_componentized; >> + bool irq_enabled; >> }; >> =20 >> /* Sub-module for display. Since we don't know at compile time what= panels >> --=20 >> 2.32.0 --=20 Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 N=C3=BCrnberg, Germany (HRB 36809, AG N=C3=BCrnberg) Gesch=C3=A4ftsf=C3=BChrer: Felix Imend=C3=B6rffer --mCfsOcPzSKYlTHNGiPJThEmp0NdPdChTp-- --YucijCQJHyzyZtQX54zjdDl9YYZpFF6pK Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEExndm/fpuMUdwYFFolh/E3EQov+AFAmEK3NEFAwAAAAAACgkQlh/E3EQov+C+ 4Q//dCYZ5TP4KEG8lVz+MeAm3RYh4P1SDDFvX8RYKmv1CyQGh2WTA1kOOgm6Orj/v3TE+x8F7hyt +99JcU2JZx7dwpuc4Ydm7PK2FZhdH/2CpzIo0Bw0UmCaUY7R7tpM5WKIukCqwYCEW3yGI5IW2Onf pwwhzijl1+L7LiwNMsRTOcbqZM9xcF8rGqut4HbRTY0PlNmVAN/EmfpOwo0k8RCzAzIuCAvl/5VR V6dmO8zuLMaMCs8RNAviyJ1wDs4CleJsepN1IXNDLyqcyqcPTWhDvVwWjUg85/+XxoF6t1G6wJk/ QSUnjNbBJi41DxsVB0NtMHxeT4Qwe/O+PAaQQYLOIgnbcFp1/imQ/FeGkZFqzqefb80rOUCsQcdM 4JKSxtYWxj7sCS0VWtl3RL1GdOelj8DYVs5X1wDoSdEngYoGwr4CJy60ZvYudMGNqv3IP/NVVSuR +bV8plSN7Bbdy/wZR1GREZNS7y5NBAXv0hOcHna6uLKwPkmRR37Xm+oyddUjWNgUuSpUvkRAAD0z jw5IfKSVif3ZY9XdyuK3EBK5cFzgeUI563+sshIYiEB+Ibl5Unfxj5rVh6VWBSORJ+iz8IEa3Oy5 opdFyRNn5Kk03zZVGPfYwOmNgJB+u+MYGjKwgWTgqWjL2vZ+lN7quDgl1dJCv9MjdZEHjHFVfI8V F+s= =xdU3 -----END PGP SIGNATURE----- --YucijCQJHyzyZtQX54zjdDl9YYZpFF6pK-- --===============9019315602839788428== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel --===============9019315602839788428==--