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.2 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=unavailable 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 52C23C4338F for ; Mon, 2 Aug 2021 08:43:30 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 2013A60F36 for ; Mon, 2 Aug 2021 08:43:30 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 2013A60F36 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.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A15F56E4AB; Mon, 2 Aug 2021 08:43:29 +0000 (UTC) Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id D14C56E4A2; Mon, 2 Aug 2021 08:43:27 +0000 (UTC) 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 74B8E21FE4; Mon, 2 Aug 2021 08:43:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1627893805; 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=I5ZYz9fLgLtmet/AAJ94QSQ15N6Q3rn5L5Ro1hd+Mfc=; b=2L1QOHbBgTXUBsWD++imkLfrbAa4lVuYclavhnRcZsrhKHarT/S0QbXgvG4ne0mUoZvAwE 36VF+VBsldyD6WyTz8PZvYTiti9kpP8pivdIu4AkaKe9oZw6f3v/+OE4tlSmI7r+vXq/8J vw3TbOhf2ZRT758XKSfwA3u8TD97lRg= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1627893805; 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=I5ZYz9fLgLtmet/AAJ94QSQ15N6Q3rn5L5Ro1hd+Mfc=; b=9Y/NZ5x28yXfcxius2pjcpZklB5bJnQ1Y1UddRKA5XRYNd0uozZCcRjoLlATYfnlmd8Z4d qbNxIuTK1YLCcSDA== 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 CED3713882; Mon, 2 Aug 2021 08:43:24 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap1.suse-dmz.suse.de with ESMTPSA id RAxGMSywB2F4DgAAGKfGzw (envelope-from ); Mon, 02 Aug 2021 08:43:24 +0000 Subject: Re: [PATCH 01/14] drm/amdgpu: Convert to Linux IRQ interfaces To: Alex Deucher , =?UTF-8?Q?Christian_K=c3=b6nig?= Cc: Daniel Vetter , Dave Airlie , "Deucher, Alexander" , Liviu Dudau , Brian Starkey , Sam Ravnborg , bbrezillon@kernel.org, nicolas.ferre@microchip.com, Maarten Lankhorst , Maxime Ripard , Stefan Agner , alison.wang@nxp.com, Patrik Jakobsson , anitha.chrisanthus@intel.com, Rob Clark , edmund.j.dea@intel.com, Sean Paul , Shawn Guo , Sascha Hauer , Sascha Hauer , jyri.sarha@iki.fi, tomba@kernel.org, linux-arm-kernel , linux-arm-msm , freedreno , Maling list - DRI developers , amd-gfx list References: <20210727182721.17981-1-tzimmermann@suse.de> <20210727182721.17981-2-tzimmermann@suse.de> <24a8b2ab-ef38-219b-99d4-806a44fa6aba@amd.com> From: Thomas Zimmermann Message-ID: <0c321c93-ea2f-d12a-7057-5724d2d855bd@suse.de> Date: Mon, 2 Aug 2021 10:43:24 +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="PsjSchzCspKwsrvk5k9QQpuItNe3YAbAi" X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --PsjSchzCspKwsrvk5k9QQpuItNe3YAbAi Content-Type: multipart/mixed; boundary="VDtTFrcVvE2fwROOnsp9guKSMN1gIOB0M"; protected-headers="v1" From: Thomas Zimmermann To: Alex Deucher , =?UTF-8?Q?Christian_K=c3=b6nig?= Cc: Daniel Vetter , Dave Airlie , "Deucher, Alexander" , Liviu Dudau , Brian Starkey , Sam Ravnborg , bbrezillon@kernel.org, nicolas.ferre@microchip.com, Maarten Lankhorst , Maxime Ripard , Stefan Agner , alison.wang@nxp.com, Patrik Jakobsson , anitha.chrisanthus@intel.com, Rob Clark , edmund.j.dea@intel.com, Sean Paul , Shawn Guo , Sascha Hauer , Sascha Hauer , jyri.sarha@iki.fi, tomba@kernel.org, linux-arm-kernel , linux-arm-msm , freedreno , Maling list - DRI developers , amd-gfx list Message-ID: <0c321c93-ea2f-d12a-7057-5724d2d855bd@suse.de> Subject: Re: [PATCH 01/14] drm/amdgpu: Convert to Linux IRQ interfaces References: <20210727182721.17981-1-tzimmermann@suse.de> <20210727182721.17981-2-tzimmermann@suse.de> <24a8b2ab-ef38-219b-99d4-806a44fa6aba@amd.com> In-Reply-To: --VDtTFrcVvE2fwROOnsp9guKSMN1gIOB0M Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable Hi Am 28.07.21 um 16:03 schrieb Alex Deucher: > On Wed, Jul 28, 2021 at 6:27 AM Christian K=C3=B6nig > wrote: >> >> Am 27.07.21 um 20:27 schrieb Thomas Zimmermann: >>> 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. >>> >>> The interrupt number returned by pci_msi_vector() is now stored >>> in struct amdgpu_irq. Calls to pci_msi_vector() can fail and return >>> a negative errno code. Abort initlaizaton in thi case. The DRM IRQ >>> midlayer does not handle this correctly. >>> >>> Signed-off-by: Thomas Zimmermann >> >> Alex needs to take a look at this as well, but of hand the patch is >> Acked-by: Christian K=C3=B6nig . >=20 > Looks good to me as well: > Reviewed-by: Alex Deucher Thanks a lot. Do you have comments on the changes to radeon? Best regards Thomas >=20 >> >> Thanks, >> Christian. >> >>> --- >>> drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 1 - >>> drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 21 ++++++++++++++-------= >>> drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h | 2 +- >>> 3 files changed, 15 insertions(+), 9 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/dr= m/amd/amdgpu/amdgpu_drv.c >>> index 2bd13fc2541a..1e05b5aa94e7 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c >>> @@ -1775,7 +1775,6 @@ static const struct drm_driver amdgpu_kms_drive= r =3D { >>> .open =3D amdgpu_driver_open_kms, >>> .postclose =3D amdgpu_driver_postclose_kms, >>> .lastclose =3D amdgpu_driver_lastclose_kms, >>> - .irq_handler =3D amdgpu_irq_handler, >>> .ioctls =3D amdgpu_ioctls_kms, >>> .num_ioctls =3D ARRAY_SIZE(amdgpu_ioctls_kms), >>> .dumb_create =3D amdgpu_mode_dumb_create, >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/dr= m/amd/amdgpu/amdgpu_irq.c >>> index 0d01cfaca77e..a36cdc7323f4 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c >>> @@ -46,7 +46,6 @@ >>> #include >>> >>> #include >>> -#include >>> #include >>> #include >>> #include >>> @@ -184,7 +183,7 @@ void amdgpu_irq_disable_all(struct amdgpu_device = *adev) >>> * Returns: >>> * result of handling the IRQ, as defined by &irqreturn_t >>> */ >>> -irqreturn_t amdgpu_irq_handler(int irq, void *arg) >>> +static irqreturn_t amdgpu_irq_handler(int irq, void *arg) >>> { >>> struct drm_device *dev =3D (struct drm_device *) arg; >>> struct amdgpu_device *adev =3D drm_to_adev(dev); >>> @@ -307,6 +306,7 @@ static void amdgpu_restore_msix(struct amdgpu_dev= ice *adev) >>> int amdgpu_irq_init(struct amdgpu_device *adev) >>> { >>> int r =3D 0; >>> + unsigned int irq; >>> >>> spin_lock_init(&adev->irq.lock); >>> >>> @@ -349,15 +349,22 @@ int amdgpu_irq_init(struct amdgpu_device *adev)= >>> INIT_WORK(&adev->irq.ih2_work, amdgpu_irq_handle_ih2); >>> INIT_WORK(&adev->irq.ih_soft_work, amdgpu_irq_handle_ih_soft);= >>> >>> - adev->irq.installed =3D true; >>> - /* Use vector 0 for MSI-X */ >>> - r =3D drm_irq_install(adev_to_drm(adev), pci_irq_vector(adev->p= dev, 0)); >>> + /* Use vector 0 for MSI-X. */ >>> + r =3D pci_irq_vector(adev->pdev, 0); >>> + if (r < 0) >>> + return r; >>> + irq =3D r; >>> + >>> + /* PCI devices require shared interrupts. */ >>> + r =3D request_irq(irq, amdgpu_irq_handler, IRQF_SHARED, adev_to= _drm(adev)->driver->name, >>> + adev_to_drm(adev)); >>> if (r) { >>> - adev->irq.installed =3D false; >>> if (!amdgpu_device_has_dc_support(adev)) >>> flush_work(&adev->hotplug_work); >>> return r; >>> } >>> + adev->irq.installed =3D true; >>> + adev->irq.irq =3D irq; >>> adev_to_drm(adev)->max_vblank_count =3D 0x00ffffff; >>> >>> DRM_DEBUG("amdgpu: irq initialized.\n"); >>> @@ -368,7 +375,7 @@ int amdgpu_irq_init(struct amdgpu_device *adev) >>> void amdgpu_irq_fini_hw(struct amdgpu_device *adev) >>> { >>> if (adev->irq.installed) { >>> - drm_irq_uninstall(&adev->ddev); >>> + free_irq(adev->irq.irq, adev_to_drm(adev)); >>> adev->irq.installed =3D false; >>> if (adev->irq.msi_enabled) >>> pci_free_irq_vectors(adev->pdev); >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h b/drivers/gpu/dr= m/amd/amdgpu/amdgpu_irq.h >>> index 78ad4784cc74..e9f2c11ea416 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h >>> @@ -80,6 +80,7 @@ struct amdgpu_irq_src_funcs { >>> >>> struct amdgpu_irq { >>> bool installed; >>> + unsigned int irq; >>> spinlock_t lock; >>> /* interrupt sources */ >>> struct amdgpu_irq_client client[AMDGPU_IRQ_CLIENTID_MAX= ]; >>> @@ -100,7 +101,6 @@ struct amdgpu_irq { >>> }; >>> >>> void amdgpu_irq_disable_all(struct amdgpu_device *adev); >>> -irqreturn_t amdgpu_irq_handler(int irq, void *arg); >>> >>> int amdgpu_irq_init(struct amdgpu_device *adev); >>> void amdgpu_irq_fini_sw(struct amdgpu_device *adev); >> --=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 --VDtTFrcVvE2fwROOnsp9guKSMN1gIOB0M-- --PsjSchzCspKwsrvk5k9QQpuItNe3YAbAi 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+AFAmEHsCwFAwAAAAAACgkQlh/E3EQov+Dm nQ//R/Caj7yaimr9wM2UmBAHzaME1DOlVYAImXkh2gnTDN6adDkWktxtcNEgrcLitvnCX073Ic4n lTIQ/0KNHGOil7VQxhPYEaNcl2sy6igR9sn/PwUDvK2cF4KMCknw9ZHuCe8F8DWsne3GZSXcB7cV GIrFyXRTeJnQyYuH1ZvqsIIknxhzo8NdDTw/iF4F8qBHThObTIohceplLel7+7UF8EpDos3ukWMo vBzDpkLbGMhdh/0gm5cxQPEo21Lteu6fGa87peGRXyGBFlet5cX4eG+elkmzpFIW1PfvjX8dyQn0 YiTr/C1Dob0tCsEejuUiIisvuEjkWnGOqg95+wwx9vsnZbp186eTj4KDXI9EFzWPPqHrB5C8hOhX 77HXJnjhIqfzID/rUz7rKNgAhLw14MxpunKyXPyNm+9PS5Myp8QADAcvO4raJREMJCUwTP/eWQRv 477/wM0bBTq8wrOycst0HPkVM8VSh9qdUTyWt1Q5JzAiSbjre3zknR2IVNcu2RnbaabyWKd5sXfl 8h0bUBDoxzsKZ+tXqVUb4sZuFtvRWtKFxc9aKM6m4INtcs6Topqtyt3vovjC0cGRZ0OxRVJHdF+w SyRAsqz3m+NdAOPUMCC/ouDsBnpF69b+qFUKOEf1qqYghFioaTrTMiVaWQsPN3oYva/ParhFyLTo geU= =zdfM -----END PGP SIGNATURE----- --PsjSchzCspKwsrvk5k9QQpuItNe3YAbAi--