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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id C00F5C001DC for ; Fri, 21 Jul 2023 19:20:00 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4ED4610E6F7; Fri, 21 Jul 2023 19:20:00 +0000 (UTC) Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6934610E6F7; Fri, 21 Jul 2023 19:19:34 +0000 (UTC) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id A87F361D7B; Fri, 21 Jul 2023 19:19:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8F65FC433C7; Fri, 21 Jul 2023 19:19:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1689967173; bh=VknH39d+fypFBtbpKy9Ks9499orhFKGibNkjywSPOo8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TwfHAh4dqdvIDSnWyOrbWr4scVHbxbgthT5ieOlaqy9DMKSJDh/azXW9+8q7icfQb wvRcfGgYIhspri592yY+F/y5s6+jXjcl2RfEEwIIjIoC9fx8IpiP6x9A/DEmqpzAWA aLcNZXU3sch42MqttSnd6swrBUacSkcUR6j6I6js= From: Greg Kroah-Hartman To: stable@vger.kernel.org Subject: [PATCH 6.1 069/223] drm/client: Send hotplug event after registering a client Date: Fri, 21 Jul 2023 18:05:22 +0200 Message-ID: <20230721160523.804204932@linuxfoundation.org> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230721160520.865493356@linuxfoundation.org> References: <20230721160520.865493356@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Mailman-Approved-At: Fri, 21 Jul 2023 19:19:58 +0000 X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tomi Valkeinen , dri-devel@lists.freedesktop.org, Russell King , Thierry Reding , Rob Clark , amd-gfx@lists.freedesktop.org, alexandru.gagniuc@hp.com, David Airlie , linux-samsung-soc@vger.kernel.org, Javier Martinez Canillas , Patrik Jakobsson , freedreno@lists.freedesktop.org, Daniel Vetter , Kyungmin Park , Paul Schyska , Torsten Krah , linux-arm-msm@vger.kernel.org, Maarten Lankhorst , Abhinav Kumar , Maxime Ripard , Inki Dae , Alex Deucher , linux-tegra@vger.kernel.org, Mikko Perttunen , linux-arm-kernel@lists.infradead.org, Greg Kroah-Hartman , "Pan, Xinhui" , Seung-Woo Kim , patches@lists.linux.dev, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= , Thomas Zimmermann , Dmitry Baryshkov , Moritz Duge , =?UTF-8?q?Christian=20K=C3=B6nig?= , Mario Limonciello Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" From: Thomas Zimmermann commit 27655b9bb9f0d9c32b8de8bec649b676898c52d5 upstream. Generate a hotplug event after registering a client to allow the client to configure its display. Remove the hotplug calls from the existing clients for fbdev emulation. This change fixes a concurrency bug between registering a client and receiving events from the DRM core. The bug is present in the fbdev emulation of all drivers. The fbdev emulation currently generates a hotplug event before registering the client to the device. For each new output, the DRM core sends an additional hotplug event to each registered client. If the DRM core detects first output between sending the artificial hotplug and registering the device, the output's hotplug event gets lost. If this is the first output, the fbdev console display remains dark. This has been observed with amdgpu and fbdev-generic. Fix this by adding hotplug generation directly to the client's register helper drm_client_register(). Registering the client and receiving events are serialized by struct drm_device.clientlist_mutex. So an output is either configured by the initial hotplug event, or the client has already been registered. The bug was originally added in commit 6e3f17ee73f7 ("drm/fb-helper: generic: Call drm_client_add() after setup is done"), in which adding a client and receiving a hotplug event switched order. It was hidden, as most hardware and drivers have at least on static output configured. Other drivers didn't use the internal DRM client or still had struct drm_mode_config_funcs.output_poll_changed set. That callback handled hotplug events as well. After not setting the callback in amdgpu in commit 0e3172bac3f4 ("drm/amdgpu: Don't set struct drm_driver.output_poll_changed"), amdgpu did not show a framebuffer console if output events got lost. The bug got copy-pasted from fbdev-generic into the other fbdev emulation. Reported-by: Moritz Duge Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/2649 Fixes: 6e3f17ee73f7 ("drm/fb-helper: generic: Call drm_client_add() after setup is done") Fixes: 8ab59da26bc0 ("drm/fb-helper: Move generic fbdev emulation into separate source file") Fixes: b79fe9abd58b ("drm/fbdev-dma: Implement fbdev emulation for GEM DMA helpers") Fixes: 63c381552f69 ("drm/armada: Implement fbdev emulation as in-kernel client") Fixes: 49953b70e7d3 ("drm/exynos: Implement fbdev emulation as in-kernel client") Fixes: 8f1aaccb04b7 ("drm/gma500: Implement client-based fbdev emulation") Fixes: 940b869c2f2f ("drm/msm: Implement fbdev emulation as in-kernel client") Fixes: 9e69bcd88e45 ("drm/omapdrm: Implement fbdev emulation as in-kernel client") Fixes: e317a69fe891 ("drm/radeon: Implement client-based fbdev emulation") Fixes: 71ec16f45ef8 ("drm/tegra: Implement fbdev emulation as in-kernel client") Fixes: 0e3172bac3f4 ("drm/amdgpu: Don't set struct drm_driver.output_poll_changed") Signed-off-by: Thomas Zimmermann Tested-by: Moritz Duge Tested-by: Torsten Krah Tested-by: Paul Schyska Cc: Daniel Vetter Cc: David Airlie Cc: Noralf Trønnes Cc: Maarten Lankhorst Cc: Maxime Ripard Cc: Javier Martinez Canillas Cc: Russell King Cc: Inki Dae Cc: Seung-Woo Kim Cc: Kyungmin Park Cc: Krzysztof Kozlowski Cc: Patrik Jakobsson Cc: Rob Clark Cc: Abhinav Kumar Cc: Dmitry Baryshkov Cc: Tomi Valkeinen Cc: Alex Deucher Cc: "Christian König" Cc: "Pan, Xinhui" Cc: Thierry Reding Cc: Mikko Perttunen Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-samsung-soc@vger.kernel.org Cc: linux-arm-msm@vger.kernel.org Cc: freedreno@lists.freedesktop.org Cc: amd-gfx@lists.freedesktop.org Cc: linux-tegra@vger.kernel.org Cc: dri-devel@lists.freedesktop.org Cc: # v5.2+ Reviewed-by: Javier Martinez Canillas Reviewed-by: Dmitry Baryshkov # msm Link: https://patchwork.freedesktop.org/patch/msgid/20230710091029.27503-1-tzimmermann@suse.de (cherry picked from commit 27655b9bb9f0d9c32b8de8bec649b676898c52d5) [ Dropped changes to drivers/gpu/drm/armada/armada_fbdev.c as 174c3c38e3a2 drm/armada: Initialize fbdev DRM client was introduced in 6.5-rc1. Dropped changes to exynos, msm, omapdrm, radeon, tegra drivers as missing code these commits introduced: 99286486d674 drm/exynos: Initialize fbdev DRM client 841ef552b141 drm/msm: Initialize fbdev DRM client 9e69bcd88e45 drm/omapdrm: Implement fbdev emulation as in-kernel client e317a69fe891 drm/radeon: Implement client-based fbdev emulation 9b926bcf2636 drm/radeon: Only build fbdev if DRM_FBDEV_EMULATION is set 25dda38e0b07 drm/tegra: Initialize fbdev DRM client 8f1aaccb04b7 drm/gma500: Implement client-based fbdev emulation b79fe9abd58b drm/fbdev-dma: Implement fbdev emulation for GEM DMA helpers Move code for drm-fbdev-generic.c to matching file in 6.1.y because these commits haven't happened in 6.1.y. 8ab59da26bc0 drm/fb-helper: Move generic fbdev emulation into separate source file b9c93f4ec737 drm/fbdev-generic: Rename symbols ] Cc: alexandru.gagniuc@hp.com Link: https://lore.kernel.org/stable/SJ0PR84MB20882EEA1ABB36F60E845E378F5AA@SJ0PR84MB2088.NAMPRD84.PROD.OUTLOOK.COM/ Signed-off-by: Mario Limonciello Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/drm_client.c | 21 +++++++++++++++++++++ drivers/gpu/drm/drm_fb_helper.c | 4 ---- 2 files changed, 21 insertions(+), 4 deletions(-) --- a/drivers/gpu/drm/drm_client.c +++ b/drivers/gpu/drm/drm_client.c @@ -122,13 +122,34 @@ EXPORT_SYMBOL(drm_client_init); * drm_client_register() it is no longer permissible to call drm_client_release() * directly (outside the unregister callback), instead cleanup will happen * automatically on driver unload. + * + * Registering a client generates a hotplug event that allows the client + * to set up its display from pre-existing outputs. The client must have + * initialized its state to able to handle the hotplug event successfully. */ void drm_client_register(struct drm_client_dev *client) { struct drm_device *dev = client->dev; + int ret; mutex_lock(&dev->clientlist_mutex); list_add(&client->list, &dev->clientlist); + + if (client->funcs && client->funcs->hotplug) { + /* + * Perform an initial hotplug event to pick up the + * display configuration for the client. This step + * has to be performed *after* registering the client + * in the list of clients, or a concurrent hotplug + * event might be lost; leaving the display off. + * + * Hold the clientlist_mutex as for a regular hotplug + * event. + */ + ret = client->funcs->hotplug(client); + if (ret) + drm_dbg_kms(dev, "client hotplug ret=%d\n", ret); + } mutex_unlock(&dev->clientlist_mutex); } EXPORT_SYMBOL(drm_client_register); --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -2634,10 +2634,6 @@ void drm_fbdev_generic_setup(struct drm_ preferred_bpp = 32; fb_helper->preferred_bpp = preferred_bpp; - ret = drm_fbdev_client_hotplug(&fb_helper->client); - if (ret) - drm_dbg_kms(dev, "client hotplug ret=%d\n", ret); - drm_client_register(&fb_helper->client); } EXPORT_SYMBOL(drm_fbdev_generic_setup); 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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 62E45C001DE for ; Fri, 21 Jul 2023 19:19:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231922AbjGUTTn (ORCPT ); Fri, 21 Jul 2023 15:19:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40678 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232052AbjGUTTi (ORCPT ); Fri, 21 Jul 2023 15:19:38 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3C4E13A90; Fri, 21 Jul 2023 12:19:34 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id A843861D6D; Fri, 21 Jul 2023 19:19:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8F65FC433C7; Fri, 21 Jul 2023 19:19:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1689967173; bh=VknH39d+fypFBtbpKy9Ks9499orhFKGibNkjywSPOo8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TwfHAh4dqdvIDSnWyOrbWr4scVHbxbgthT5ieOlaqy9DMKSJDh/azXW9+8q7icfQb wvRcfGgYIhspri592yY+F/y5s6+jXjcl2RfEEwIIjIoC9fx8IpiP6x9A/DEmqpzAWA aLcNZXU3sch42MqttSnd6swrBUacSkcUR6j6I6js= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Moritz Duge , Thomas Zimmermann , Torsten Krah , Paul Schyska , Daniel Vetter , David Airlie , =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= , Maarten Lankhorst , Maxime Ripard , Javier Martinez Canillas , Russell King , Inki Dae , Seung-Woo Kim , Kyungmin Park , Krzysztof Kozlowski , Patrik Jakobsson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Tomi Valkeinen , Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , "Pan, Xinhui" , Thierry Reding , Mikko Perttunen , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-tegra@vger.kernel.org, alexandru.gagniuc@hp.com, Mario Limonciello Subject: [PATCH 6.1 069/223] drm/client: Send hotplug event after registering a client Date: Fri, 21 Jul 2023 18:05:22 +0200 Message-ID: <20230721160523.804204932@linuxfoundation.org> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230721160520.865493356@linuxfoundation.org> References: <20230721160520.865493356@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org From: Thomas Zimmermann commit 27655b9bb9f0d9c32b8de8bec649b676898c52d5 upstream. Generate a hotplug event after registering a client to allow the client to configure its display. Remove the hotplug calls from the existing clients for fbdev emulation. This change fixes a concurrency bug between registering a client and receiving events from the DRM core. The bug is present in the fbdev emulation of all drivers. The fbdev emulation currently generates a hotplug event before registering the client to the device. For each new output, the DRM core sends an additional hotplug event to each registered client. If the DRM core detects first output between sending the artificial hotplug and registering the device, the output's hotplug event gets lost. If this is the first output, the fbdev console display remains dark. This has been observed with amdgpu and fbdev-generic. Fix this by adding hotplug generation directly to the client's register helper drm_client_register(). Registering the client and receiving events are serialized by struct drm_device.clientlist_mutex. So an output is either configured by the initial hotplug event, or the client has already been registered. The bug was originally added in commit 6e3f17ee73f7 ("drm/fb-helper: generic: Call drm_client_add() after setup is done"), in which adding a client and receiving a hotplug event switched order. It was hidden, as most hardware and drivers have at least on static output configured. Other drivers didn't use the internal DRM client or still had struct drm_mode_config_funcs.output_poll_changed set. That callback handled hotplug events as well. After not setting the callback in amdgpu in commit 0e3172bac3f4 ("drm/amdgpu: Don't set struct drm_driver.output_poll_changed"), amdgpu did not show a framebuffer console if output events got lost. The bug got copy-pasted from fbdev-generic into the other fbdev emulation. Reported-by: Moritz Duge Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/2649 Fixes: 6e3f17ee73f7 ("drm/fb-helper: generic: Call drm_client_add() after setup is done") Fixes: 8ab59da26bc0 ("drm/fb-helper: Move generic fbdev emulation into separate source file") Fixes: b79fe9abd58b ("drm/fbdev-dma: Implement fbdev emulation for GEM DMA helpers") Fixes: 63c381552f69 ("drm/armada: Implement fbdev emulation as in-kernel client") Fixes: 49953b70e7d3 ("drm/exynos: Implement fbdev emulation as in-kernel client") Fixes: 8f1aaccb04b7 ("drm/gma500: Implement client-based fbdev emulation") Fixes: 940b869c2f2f ("drm/msm: Implement fbdev emulation as in-kernel client") Fixes: 9e69bcd88e45 ("drm/omapdrm: Implement fbdev emulation as in-kernel client") Fixes: e317a69fe891 ("drm/radeon: Implement client-based fbdev emulation") Fixes: 71ec16f45ef8 ("drm/tegra: Implement fbdev emulation as in-kernel client") Fixes: 0e3172bac3f4 ("drm/amdgpu: Don't set struct drm_driver.output_poll_changed") Signed-off-by: Thomas Zimmermann Tested-by: Moritz Duge Tested-by: Torsten Krah Tested-by: Paul Schyska Cc: Daniel Vetter Cc: David Airlie Cc: Noralf Trønnes Cc: Maarten Lankhorst Cc: Maxime Ripard Cc: Javier Martinez Canillas Cc: Russell King Cc: Inki Dae Cc: Seung-Woo Kim Cc: Kyungmin Park Cc: Krzysztof Kozlowski Cc: Patrik Jakobsson Cc: Rob Clark Cc: Abhinav Kumar Cc: Dmitry Baryshkov Cc: Tomi Valkeinen Cc: Alex Deucher Cc: "Christian König" Cc: "Pan, Xinhui" Cc: Thierry Reding Cc: Mikko Perttunen Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-samsung-soc@vger.kernel.org Cc: linux-arm-msm@vger.kernel.org Cc: freedreno@lists.freedesktop.org Cc: amd-gfx@lists.freedesktop.org Cc: linux-tegra@vger.kernel.org Cc: dri-devel@lists.freedesktop.org Cc: # v5.2+ Reviewed-by: Javier Martinez Canillas Reviewed-by: Dmitry Baryshkov # msm Link: https://patchwork.freedesktop.org/patch/msgid/20230710091029.27503-1-tzimmermann@suse.de (cherry picked from commit 27655b9bb9f0d9c32b8de8bec649b676898c52d5) [ Dropped changes to drivers/gpu/drm/armada/armada_fbdev.c as 174c3c38e3a2 drm/armada: Initialize fbdev DRM client was introduced in 6.5-rc1. Dropped changes to exynos, msm, omapdrm, radeon, tegra drivers as missing code these commits introduced: 99286486d674 drm/exynos: Initialize fbdev DRM client 841ef552b141 drm/msm: Initialize fbdev DRM client 9e69bcd88e45 drm/omapdrm: Implement fbdev emulation as in-kernel client e317a69fe891 drm/radeon: Implement client-based fbdev emulation 9b926bcf2636 drm/radeon: Only build fbdev if DRM_FBDEV_EMULATION is set 25dda38e0b07 drm/tegra: Initialize fbdev DRM client 8f1aaccb04b7 drm/gma500: Implement client-based fbdev emulation b79fe9abd58b drm/fbdev-dma: Implement fbdev emulation for GEM DMA helpers Move code for drm-fbdev-generic.c to matching file in 6.1.y because these commits haven't happened in 6.1.y. 8ab59da26bc0 drm/fb-helper: Move generic fbdev emulation into separate source file b9c93f4ec737 drm/fbdev-generic: Rename symbols ] Cc: alexandru.gagniuc@hp.com Link: https://lore.kernel.org/stable/SJ0PR84MB20882EEA1ABB36F60E845E378F5AA@SJ0PR84MB2088.NAMPRD84.PROD.OUTLOOK.COM/ Signed-off-by: Mario Limonciello Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/drm_client.c | 21 +++++++++++++++++++++ drivers/gpu/drm/drm_fb_helper.c | 4 ---- 2 files changed, 21 insertions(+), 4 deletions(-) --- a/drivers/gpu/drm/drm_client.c +++ b/drivers/gpu/drm/drm_client.c @@ -122,13 +122,34 @@ EXPORT_SYMBOL(drm_client_init); * drm_client_register() it is no longer permissible to call drm_client_release() * directly (outside the unregister callback), instead cleanup will happen * automatically on driver unload. + * + * Registering a client generates a hotplug event that allows the client + * to set up its display from pre-existing outputs. The client must have + * initialized its state to able to handle the hotplug event successfully. */ void drm_client_register(struct drm_client_dev *client) { struct drm_device *dev = client->dev; + int ret; mutex_lock(&dev->clientlist_mutex); list_add(&client->list, &dev->clientlist); + + if (client->funcs && client->funcs->hotplug) { + /* + * Perform an initial hotplug event to pick up the + * display configuration for the client. This step + * has to be performed *after* registering the client + * in the list of clients, or a concurrent hotplug + * event might be lost; leaving the display off. + * + * Hold the clientlist_mutex as for a regular hotplug + * event. + */ + ret = client->funcs->hotplug(client); + if (ret) + drm_dbg_kms(dev, "client hotplug ret=%d\n", ret); + } mutex_unlock(&dev->clientlist_mutex); } EXPORT_SYMBOL(drm_client_register); --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -2634,10 +2634,6 @@ void drm_fbdev_generic_setup(struct drm_ preferred_bpp = 32; fb_helper->preferred_bpp = preferred_bpp; - ret = drm_fbdev_client_hotplug(&fb_helper->client); - if (ret) - drm_dbg_kms(dev, "client hotplug ret=%d\n", ret); - drm_client_register(&fb_helper->client); } EXPORT_SYMBOL(drm_fbdev_generic_setup); 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id E8A7AC001DE for ; Fri, 21 Jul 2023 19:19:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=7js8MZSZsaMgsBDHbScAqsPtlcW4/3D/dowYWScbuHU=; b=arZ13giEfw7sWl sLH6Gv0woCXGW/gcpdedGdzRzoCopKcjjgtvEhcMxlvSaaB6/XIdd/XLs0NT8zU6/Y1tr49vqZE+a 90hqn+hBhxFLA0zcJ1p9Ys5U6o6z0lkZCksbFx0SP4QjTzYI1qoXRn5xidXNjKVvoG3ac8igJNIqV +pUEn7N5nNyUV7xEbUi66b56S3z3XnH32OyU/i293BJr/DxsE9iZHQLIgduu0SKs5ERLG8qKa6Hqx qW8qDFRU+syPcLWHwtF73CA0elaCF4HGkA8+aBARFeOkzoh3K/akSCF2+buyqcBeNO7vwqpTD8UR6 5WnZgeungfh7CisBPaPw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qMvf8-00EwZg-0C; Fri, 21 Jul 2023 19:19:38 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qMvf4-00EwZA-0m for linux-arm-kernel@lists.infradead.org; Fri, 21 Jul 2023 19:19:36 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id A87F361D7B; Fri, 21 Jul 2023 19:19:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8F65FC433C7; Fri, 21 Jul 2023 19:19:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1689967173; bh=VknH39d+fypFBtbpKy9Ks9499orhFKGibNkjywSPOo8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TwfHAh4dqdvIDSnWyOrbWr4scVHbxbgthT5ieOlaqy9DMKSJDh/azXW9+8q7icfQb wvRcfGgYIhspri592yY+F/y5s6+jXjcl2RfEEwIIjIoC9fx8IpiP6x9A/DEmqpzAWA aLcNZXU3sch42MqttSnd6swrBUacSkcUR6j6I6js= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Moritz Duge , Thomas Zimmermann , Torsten Krah , Paul Schyska , Daniel Vetter , David Airlie , =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= , Maarten Lankhorst , Maxime Ripard , Javier Martinez Canillas , Russell King , Inki Dae , Seung-Woo Kim , Kyungmin Park , Krzysztof Kozlowski , Patrik Jakobsson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Tomi Valkeinen , Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , "Pan, Xinhui" , Thierry Reding , Mikko Perttunen , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-tegra@vger.kernel.org, alexandru.gagniuc@hp.com, Mario Limonciello Subject: [PATCH 6.1 069/223] drm/client: Send hotplug event after registering a client Date: Fri, 21 Jul 2023 18:05:22 +0200 Message-ID: <20230721160523.804204932@linuxfoundation.org> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230721160520.865493356@linuxfoundation.org> References: <20230721160520.865493356@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230721_121934_369929_A466C6C3 X-CRM114-Status: GOOD ( 25.06 ) 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RnJvbTogVGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGU+Cgpjb21taXQgMjc2 NTViOWJiOWYwZDljMzJiOGRlOGJlYzY0OWI2NzY4OThjNTJkNSB1cHN0cmVhbS4KCkdlbmVyYXRl IGEgaG90cGx1ZyBldmVudCBhZnRlciByZWdpc3RlcmluZyBhIGNsaWVudCB0byBhbGxvdyB0aGUK Y2xpZW50IHRvIGNvbmZpZ3VyZSBpdHMgZGlzcGxheS4gUmVtb3ZlIHRoZSBob3RwbHVnIGNhbGxz IGZyb20gdGhlCmV4aXN0aW5nIGNsaWVudHMgZm9yIGZiZGV2IGVtdWxhdGlvbi4gVGhpcyBjaGFu Z2UgZml4ZXMgYSBjb25jdXJyZW5jeQpidWcgYmV0d2VlbiByZWdpc3RlcmluZyBhIGNsaWVudCBh bmQgcmVjZWl2aW5nIGV2ZW50cyBmcm9tIHRoZSBEUk0KY29yZS4gVGhlIGJ1ZyBpcyBwcmVzZW50 IGluIHRoZSBmYmRldiBlbXVsYXRpb24gb2YgYWxsIGRyaXZlcnMuCgpUaGUgZmJkZXYgZW11bGF0 aW9uIGN1cnJlbnRseSBnZW5lcmF0ZXMgYSBob3RwbHVnIGV2ZW50IGJlZm9yZQpyZWdpc3Rlcmlu ZyB0aGUgY2xpZW50IHRvIHRoZSBkZXZpY2UuIEZvciBlYWNoIG5ldyBvdXRwdXQsIHRoZSBEUk0K Y29yZSBzZW5kcyBhbiBhZGRpdGlvbmFsIGhvdHBsdWcgZXZlbnQgdG8gZWFjaCByZWdpc3RlcmVk IGNsaWVudC4KCklmIHRoZSBEUk0gY29yZSBkZXRlY3RzIGZpcnN0IG91dHB1dCBiZXR3ZWVuIHNl bmRpbmcgdGhlIGFydGlmaWNpYWwKaG90cGx1ZyBhbmQgcmVnaXN0ZXJpbmcgdGhlIGRldmljZSwg dGhlIG91dHB1dCdzIGhvdHBsdWcgZXZlbnQgZ2V0cwpsb3N0LiBJZiB0aGlzIGlzIHRoZSBmaXJz dCBvdXRwdXQsIHRoZSBmYmRldiBjb25zb2xlIGRpc3BsYXkgcmVtYWlucwpkYXJrLiBUaGlzIGhh cyBiZWVuIG9ic2VydmVkIHdpdGggYW1kZ3B1IGFuZCBmYmRldi1nZW5lcmljLgoKRml4IHRoaXMg YnkgYWRkaW5nIGhvdHBsdWcgZ2VuZXJhdGlvbiBkaXJlY3RseSB0byB0aGUgY2xpZW50J3MKcmVn aXN0ZXIgaGVscGVyIGRybV9jbGllbnRfcmVnaXN0ZXIoKS4gUmVnaXN0ZXJpbmcgdGhlIGNsaWVu dCBhbmQKcmVjZWl2aW5nIGV2ZW50cyBhcmUgc2VyaWFsaXplZCBieSBzdHJ1Y3QgZHJtX2Rldmlj ZS5jbGllbnRsaXN0X211dGV4LgpTbyBhbiBvdXRwdXQgaXMgZWl0aGVyIGNvbmZpZ3VyZWQgYnkg dGhlIGluaXRpYWwgaG90cGx1ZyBldmVudCwgb3IKdGhlIGNsaWVudCBoYXMgYWxyZWFkeSBiZWVu IHJlZ2lzdGVyZWQuCgpUaGUgYnVnIHdhcyBvcmlnaW5hbGx5IGFkZGVkIGluIGNvbW1pdCA2ZTNm MTdlZTczZjcgKCJkcm0vZmItaGVscGVyOgpnZW5lcmljOiBDYWxsIGRybV9jbGllbnRfYWRkKCkg YWZ0ZXIgc2V0dXAgaXMgZG9uZSIpLCBpbiB3aGljaCBhZGRpbmcKYSBjbGllbnQgYW5kIHJlY2Vp dmluZyBhIGhvdHBsdWcgZXZlbnQgc3dpdGNoZWQgb3JkZXIuIEl0IHdhcyBoaWRkZW4sCmFzIG1v c3QgaGFyZHdhcmUgYW5kIGRyaXZlcnMgaGF2ZSBhdCBsZWFzdCBvbiBzdGF0aWMgb3V0cHV0IGNv bmZpZ3VyZWQuCk90aGVyIGRyaXZlcnMgZGlkbid0IHVzZSB0aGUgaW50ZXJuYWwgRFJNIGNsaWVu dCBvciBzdGlsbCBoYWQgc3RydWN0CmRybV9tb2RlX2NvbmZpZ19mdW5jcy5vdXRwdXRfcG9sbF9j aGFuZ2VkIHNldC4gVGhhdCBjYWxsYmFjayBoYW5kbGVkCmhvdHBsdWcgZXZlbnRzIGFzIHdlbGwu IEFmdGVyIG5vdCBzZXR0aW5nIHRoZSBjYWxsYmFjayBpbiBhbWRncHUgaW4KY29tbWl0IDBlMzE3 MmJhYzNmNCAoImRybS9hbWRncHU6IERvbid0IHNldCBzdHJ1Y3QKZHJtX2RyaXZlci5vdXRwdXRf cG9sbF9jaGFuZ2VkIiksIGFtZGdwdSBkaWQgbm90IHNob3cgYSBmcmFtZWJ1ZmZlcgpjb25zb2xl IGlmIG91dHB1dCBldmVudHMgZ290IGxvc3QuIFRoZSBidWcgZ290IGNvcHktcGFzdGVkIGZyb20K ZmJkZXYtZ2VuZXJpYyBpbnRvIHRoZSBvdGhlciBmYmRldiBlbXVsYXRpb24uCgpSZXBvcnRlZC1i eTogTW9yaXR6IER1Z2UgPE1vcml0ekR1Z2VAa29sYWhpbGZ0LmRlPgpDbG9zZXM6IGh0dHBzOi8v Z2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vYW1kLy0vaXNzdWVzLzI2NDkKRml4ZXM6IDZlM2Yx N2VlNzNmNyAoImRybS9mYi1oZWxwZXI6IGdlbmVyaWM6IENhbGwgZHJtX2NsaWVudF9hZGQoKSBh ZnRlciBzZXR1cCBpcyBkb25lIikKRml4ZXM6IDhhYjU5ZGEyNmJjMCAoImRybS9mYi1oZWxwZXI6 IE1vdmUgZ2VuZXJpYyBmYmRldiBlbXVsYXRpb24gaW50byBzZXBhcmF0ZSBzb3VyY2UgZmlsZSIp CkZpeGVzOiBiNzlmZTlhYmQ1OGIgKCJkcm0vZmJkZXYtZG1hOiBJbXBsZW1lbnQgZmJkZXYgZW11 bGF0aW9uIGZvciBHRU0gRE1BIGhlbHBlcnMiKQpGaXhlczogNjNjMzgxNTUyZjY5ICgiZHJtL2Fy bWFkYTogSW1wbGVtZW50IGZiZGV2IGVtdWxhdGlvbiBhcyBpbi1rZXJuZWwgY2xpZW50IikKRml4 ZXM6IDQ5OTUzYjcwZTdkMyAoImRybS9leHlub3M6IEltcGxlbWVudCBmYmRldiBlbXVsYXRpb24g YXMgaW4ta2VybmVsIGNsaWVudCIpCkZpeGVzOiA4ZjFhYWNjYjA0YjcgKCJkcm0vZ21hNTAwOiBJ bXBsZW1lbnQgY2xpZW50LWJhc2VkIGZiZGV2IGVtdWxhdGlvbiIpCkZpeGVzOiA5NDBiODY5YzJm MmYgKCJkcm0vbXNtOiBJbXBsZW1lbnQgZmJkZXYgZW11bGF0aW9uIGFzIGluLWtlcm5lbCBjbGll bnQiKQpGaXhlczogOWU2OWJjZDg4ZTQ1ICgiZHJtL29tYXBkcm06IEltcGxlbWVudCBmYmRldiBl bXVsYXRpb24gYXMgaW4ta2VybmVsIGNsaWVudCIpCkZpeGVzOiBlMzE3YTY5ZmU4OTEgKCJkcm0v cmFkZW9uOiBJbXBsZW1lbnQgY2xpZW50LWJhc2VkIGZiZGV2IGVtdWxhdGlvbiIpCkZpeGVzOiA3 MWVjMTZmNDVlZjggKCJkcm0vdGVncmE6IEltcGxlbWVudCBmYmRldiBlbXVsYXRpb24gYXMgaW4t a2VybmVsIGNsaWVudCIpCkZpeGVzOiAwZTMxNzJiYWMzZjQgKCJkcm0vYW1kZ3B1OiBEb24ndCBz ZXQgc3RydWN0IGRybV9kcml2ZXIub3V0cHV0X3BvbGxfY2hhbmdlZCIpClNpZ25lZC1vZmYtYnk6 IFRob21hcyBaaW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNlLmRlPgpUZXN0ZWQtYnk6IE1vcml0 eiBEdWdlIDxNb3JpdHpEdWdlQGtvbGFoaWxmdC5kZT4KVGVzdGVkLWJ5OiBUb3JzdGVuIEtyYWgg PGtyYWgudG1AZ21haWwuY29tPgpUZXN0ZWQtYnk6IFBhdWwgU2NoeXNrYSA8cHNjaHlza2FAZ21h aWwuY29tPgpDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KQ2M6IERh dmlkIEFpcmxpZSA8YWlybGllZEBnbWFpbC5jb20+CkNjOiBOb3JhbGYgVHLDuG5uZXMgPG5vcmFs ZkB0cm9ubmVzLm9yZz4KQ2M6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBs aW51eC5pbnRlbC5jb20+CkNjOiBNYXhpbWUgUmlwYXJkIDxtcmlwYXJkQGtlcm5lbC5vcmc+CkNj OiBKYXZpZXIgTWFydGluZXogQ2FuaWxsYXMgPGphdmllcm1AcmVkaGF0LmNvbT4KQ2M6IFJ1c3Nl bGwgS2luZyA8bGludXhAYXJtbGludXgub3JnLnVrPgpDYzogSW5raSBEYWUgPGlua2kuZGFlQHNh bXN1bmcuY29tPgpDYzogU2V1bmctV29vIEtpbSA8c3cwMzEyLmtpbUBzYW1zdW5nLmNvbT4KQ2M6 IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+CkNjOiBLcnp5c3p0b2Yg S296bG93c2tpIDxrcnp5c3p0b2Yua296bG93c2tpQGxpbmFyby5vcmc+CkNjOiBQYXRyaWsgSmFr b2Jzc29uIDxwYXRyaWsuci5qYWtvYnNzb25AZ21haWwuY29tPgpDYzogUm9iIENsYXJrIDxyb2Jk Y2xhcmtAZ21haWwuY29tPgpDYzogQWJoaW5hdiBLdW1hciA8cXVpY19hYmhpbmF2a0BxdWljaW5j LmNvbT4KQ2M6IERtaXRyeSBCYXJ5c2hrb3YgPGRtaXRyeS5iYXJ5c2hrb3ZAbGluYXJvLm9yZz4K Q2M6IFRvbWkgVmFsa2VpbmVuIDx0b21pLnZhbGtlaW5lbkBpZGVhc29uYm9hcmQuY29tPgpDYzog QWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tPgpDYzogIkNocmlzdGlhbiBL w7ZuaWciIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+CkNjOiAiUGFuLCBYaW5odWkiIDxYaW5o dWkuUGFuQGFtZC5jb20+CkNjOiBUaGllcnJ5IFJlZGluZyA8dGhpZXJyeS5yZWRpbmdAZ21haWwu Y29tPgpDYzogTWlra28gUGVydHR1bmVuIDxtcGVydHR1bmVuQG52aWRpYS5jb20+CkNjOiBkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCkNjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwu b3JnCkNjOiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKQ2M6IGxpbnV4LXNh bXN1bmctc29jQHZnZXIua2VybmVsLm9yZwpDYzogbGludXgtYXJtLW1zbUB2Z2VyLmtlcm5lbC5v cmcKQ2M6IGZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKQ2M6IGFtZC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCkNjOiBsaW51eC10ZWdyYUB2Z2VyLmtlcm5lbC5vcmcKQ2M6IGRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKQ2M6IDxzdGFibGVAdmdlci5rZXJuZWwub3JnPiAj IHY1LjIrClJldmlld2VkLWJ5OiBKYXZpZXIgTWFydGluZXogQ2FuaWxsYXMgPGphdmllcm1AcmVk aGF0LmNvbT4KUmV2aWV3ZWQtYnk6IERtaXRyeSBCYXJ5c2hrb3YgPGRtaXRyeS5iYXJ5c2hrb3ZA bGluYXJvLm9yZz4gIyBtc20KTGluazogaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3Jn L3BhdGNoL21zZ2lkLzIwMjMwNzEwMDkxMDI5LjI3NTAzLTEtdHppbW1lcm1hbm5Ac3VzZS5kZQoo Y2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAyNzY1NWI5YmI5ZjBkOWMzMmI4ZGU4YmVjNjQ5YjY3 Njg5OGM1MmQ1KQpbIERyb3BwZWQgY2hhbmdlcyB0byBkcml2ZXJzL2dwdS9kcm0vYXJtYWRhL2Fy bWFkYV9mYmRldi5jIGFzCiAgMTc0YzNjMzhlM2EyIGRybS9hcm1hZGE6IEluaXRpYWxpemUgZmJk ZXYgRFJNIGNsaWVudAogIHdhcyBpbnRyb2R1Y2VkIGluIDYuNS1yYzEuCgogIERyb3BwZWQgY2hh bmdlcyB0byBleHlub3MsIG1zbSwgb21hcGRybSwgcmFkZW9uLCB0ZWdyYSBkcml2ZXJzCiAgYXMg bWlzc2luZyBjb2RlIHRoZXNlIGNvbW1pdHMgaW50cm9kdWNlZDoKCiAgOTkyODY0ODZkNjc0IGRy bS9leHlub3M6IEluaXRpYWxpemUgZmJkZXYgRFJNIGNsaWVudAogIDg0MWVmNTUyYjE0MSBkcm0v bXNtOiBJbml0aWFsaXplIGZiZGV2IERSTSBjbGllbnQKICA5ZTY5YmNkODhlNDUgZHJtL29tYXBk cm06IEltcGxlbWVudCBmYmRldiBlbXVsYXRpb24gYXMgaW4ta2VybmVsIGNsaWVudAogIGUzMTdh NjlmZTg5MSBkcm0vcmFkZW9uOiBJbXBsZW1lbnQgY2xpZW50LWJhc2VkIGZiZGV2IGVtdWxhdGlv bgogIDliOTI2YmNmMjYzNiBkcm0vcmFkZW9uOiBPbmx5IGJ1aWxkIGZiZGV2IGlmIERSTV9GQkRF Vl9FTVVMQVRJT04gaXMgc2V0CiAgMjVkZGEzOGUwYjA3IGRybS90ZWdyYTogSW5pdGlhbGl6ZSBm YmRldiBEUk0gY2xpZW50CiAgOGYxYWFjY2IwNGI3IGRybS9nbWE1MDA6IEltcGxlbWVudCBjbGll bnQtYmFzZWQgZmJkZXYgZW11bGF0aW9uCiAgYjc5ZmU5YWJkNThiIGRybS9mYmRldi1kbWE6IElt cGxlbWVudCBmYmRldiBlbXVsYXRpb24gZm9yIEdFTSBETUEgaGVscGVycwoKICBNb3ZlIGNvZGUg Zm9yIGRybS1mYmRldi1nZW5lcmljLmMgdG8gbWF0Y2hpbmcgZmlsZSBpbiA2LjEueSBiZWNhdXNl CiAgdGhlc2UgY29tbWl0cyBoYXZlbid0IGhhcHBlbmVkIGluIDYuMS55LgogIDhhYjU5ZGEyNmJj MCBkcm0vZmItaGVscGVyOiBNb3ZlIGdlbmVyaWMgZmJkZXYgZW11bGF0aW9uIGludG8gc2VwYXJh dGUgc291cmNlIGZpbGUKICBiOWM5M2Y0ZWM3MzcgZHJtL2ZiZGV2LWdlbmVyaWM6IFJlbmFtZSBz eW1ib2xzIF0KQ2M6IGFsZXhhbmRydS5nYWduaXVjQGhwLmNvbQpMaW5rOiBodHRwczovL2xvcmUu a2VybmVsLm9yZy9zdGFibGUvU0owUFI4NE1CMjA4ODJFRUExQUJCMzZGNjBFODQ1RTM3OEY1QUFA U0owUFI4NE1CMjA4OC5OQU1QUkQ4NC5QUk9ELk9VVExPT0suQ09NLwpTaWduZWQtb2ZmLWJ5OiBN YXJpbyBMaW1vbmNpZWxsbyA8bWFyaW8ubGltb25jaWVsbG9AYW1kLmNvbT4KU2lnbmVkLW9mZi1i eTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jICAgIHwgICAyMSArKysrKysrKysrKysrKysrKysr KysKIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgfCAgICA0IC0tLS0KIDIgZmlsZXMg Y2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCi0tLSBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fY2xpZW50LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnQuYwpA QCAtMTIyLDEzICsxMjIsMzQgQEAgRVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X2luaXQpOwogICog ZHJtX2NsaWVudF9yZWdpc3RlcigpIGl0IGlzIG5vIGxvbmdlciBwZXJtaXNzaWJsZSB0byBjYWxs IGRybV9jbGllbnRfcmVsZWFzZSgpCiAgKiBkaXJlY3RseSAob3V0c2lkZSB0aGUgdW5yZWdpc3Rl ciBjYWxsYmFjayksIGluc3RlYWQgY2xlYW51cCB3aWxsIGhhcHBlbgogICogYXV0b21hdGljYWxs eSBvbiBkcml2ZXIgdW5sb2FkLgorICoKKyAqIFJlZ2lzdGVyaW5nIGEgY2xpZW50IGdlbmVyYXRl cyBhIGhvdHBsdWcgZXZlbnQgdGhhdCBhbGxvd3MgdGhlIGNsaWVudAorICogdG8gc2V0IHVwIGl0 cyBkaXNwbGF5IGZyb20gcHJlLWV4aXN0aW5nIG91dHB1dHMuIFRoZSBjbGllbnQgbXVzdCBoYXZl CisgKiBpbml0aWFsaXplZCBpdHMgc3RhdGUgdG8gYWJsZSB0byBoYW5kbGUgdGhlIGhvdHBsdWcg ZXZlbnQgc3VjY2Vzc2Z1bGx5LgogICovCiB2b2lkIGRybV9jbGllbnRfcmVnaXN0ZXIoc3RydWN0 IGRybV9jbGllbnRfZGV2ICpjbGllbnQpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNs aWVudC0+ZGV2OworCWludCByZXQ7CiAKIAltdXRleF9sb2NrKCZkZXYtPmNsaWVudGxpc3RfbXV0 ZXgpOwogCWxpc3RfYWRkKCZjbGllbnQtPmxpc3QsICZkZXYtPmNsaWVudGxpc3QpOworCisJaWYg KGNsaWVudC0+ZnVuY3MgJiYgY2xpZW50LT5mdW5jcy0+aG90cGx1ZykgeworCQkvKgorCQkgKiBQ ZXJmb3JtIGFuIGluaXRpYWwgaG90cGx1ZyBldmVudCB0byBwaWNrIHVwIHRoZQorCQkgKiBkaXNw bGF5IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjbGllbnQuIFRoaXMgc3RlcAorCQkgKiBoYXMgdG8g YmUgcGVyZm9ybWVkICphZnRlciogcmVnaXN0ZXJpbmcgdGhlIGNsaWVudAorCQkgKiBpbiB0aGUg bGlzdCBvZiBjbGllbnRzLCBvciBhIGNvbmN1cnJlbnQgaG90cGx1ZworCQkgKiBldmVudCBtaWdo dCBiZSBsb3N0OyBsZWF2aW5nIHRoZSBkaXNwbGF5IG9mZi4KKwkJICoKKwkJICogSG9sZCB0aGUg Y2xpZW50bGlzdF9tdXRleCBhcyBmb3IgYSByZWd1bGFyIGhvdHBsdWcKKwkJICogZXZlbnQuCisJ CSAqLworCQlyZXQgPSBjbGllbnQtPmZ1bmNzLT5ob3RwbHVnKGNsaWVudCk7CisJCWlmIChyZXQp CisJCQlkcm1fZGJnX2ttcyhkZXYsICJjbGllbnQgaG90cGx1ZyByZXQ9JWRcbiIsIHJldCk7CisJ fQogCW11dGV4X3VubG9jaygmZGV2LT5jbGllbnRsaXN0X211dGV4KTsKIH0KIEVYUE9SVF9TWU1C T0woZHJtX2NsaWVudF9yZWdpc3Rlcik7Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVs cGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwpAQCAtMjYzNCwxMCAr MjYzNCw2IEBAIHZvaWQgZHJtX2ZiZGV2X2dlbmVyaWNfc2V0dXAoc3RydWN0IGRybV8KIAkJcHJl ZmVycmVkX2JwcCA9IDMyOwogCWZiX2hlbHBlci0+cHJlZmVycmVkX2JwcCA9IHByZWZlcnJlZF9i cHA7CiAKLQlyZXQgPSBkcm1fZmJkZXZfY2xpZW50X2hvdHBsdWcoJmZiX2hlbHBlci0+Y2xpZW50 KTsKLQlpZiAocmV0KQotCQlkcm1fZGJnX2ttcyhkZXYsICJjbGllbnQgaG90cGx1ZyByZXQ9JWRc biIsIHJldCk7Ci0KIAlkcm1fY2xpZW50X3JlZ2lzdGVyKCZmYl9oZWxwZXItPmNsaWVudCk7CiB9 CiBFWFBPUlRfU1lNQk9MKGRybV9mYmRldl9nZW5lcmljX3NldHVwKTsKCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWls aW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0 cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo= 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 3D208C001DC for ; Fri, 21 Jul 2023 19:19:38 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2C32610E6F8; Fri, 21 Jul 2023 19:19:37 +0000 (UTC) Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6934610E6F7; Fri, 21 Jul 2023 19:19:34 +0000 (UTC) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id A87F361D7B; Fri, 21 Jul 2023 19:19:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8F65FC433C7; Fri, 21 Jul 2023 19:19:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1689967173; bh=VknH39d+fypFBtbpKy9Ks9499orhFKGibNkjywSPOo8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TwfHAh4dqdvIDSnWyOrbWr4scVHbxbgthT5ieOlaqy9DMKSJDh/azXW9+8q7icfQb wvRcfGgYIhspri592yY+F/y5s6+jXjcl2RfEEwIIjIoC9fx8IpiP6x9A/DEmqpzAWA aLcNZXU3sch42MqttSnd6swrBUacSkcUR6j6I6js= From: Greg Kroah-Hartman To: stable@vger.kernel.org Subject: [PATCH 6.1 069/223] drm/client: Send hotplug event after registering a client Date: Fri, 21 Jul 2023 18:05:22 +0200 Message-ID: <20230721160523.804204932@linuxfoundation.org> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230721160520.865493356@linuxfoundation.org> References: <20230721160520.865493356@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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: , Cc: Tomi Valkeinen , dri-devel@lists.freedesktop.org, Russell King , Thierry Reding , amd-gfx@lists.freedesktop.org, alexandru.gagniuc@hp.com, linux-samsung-soc@vger.kernel.org, Javier Martinez Canillas , freedreno@lists.freedesktop.org, Daniel Vetter , Kyungmin Park , Paul Schyska , Torsten Krah , linux-arm-msm@vger.kernel.org, Abhinav Kumar , Maxime Ripard , Alex Deucher , linux-tegra@vger.kernel.org, Mikko Perttunen , linux-arm-kernel@lists.infradead.org, Greg Kroah-Hartman , "Pan, Xinhui" , Seung-Woo Kim , patches@lists.linux.dev, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= , Thomas Zimmermann , Dmitry Baryshkov , Moritz Duge , =?UTF-8?q?Christian=20K=C3=B6nig?= , Mario Limonciello Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" From: Thomas Zimmermann commit 27655b9bb9f0d9c32b8de8bec649b676898c52d5 upstream. Generate a hotplug event after registering a client to allow the client to configure its display. Remove the hotplug calls from the existing clients for fbdev emulation. This change fixes a concurrency bug between registering a client and receiving events from the DRM core. The bug is present in the fbdev emulation of all drivers. The fbdev emulation currently generates a hotplug event before registering the client to the device. For each new output, the DRM core sends an additional hotplug event to each registered client. If the DRM core detects first output between sending the artificial hotplug and registering the device, the output's hotplug event gets lost. If this is the first output, the fbdev console display remains dark. This has been observed with amdgpu and fbdev-generic. Fix this by adding hotplug generation directly to the client's register helper drm_client_register(). Registering the client and receiving events are serialized by struct drm_device.clientlist_mutex. So an output is either configured by the initial hotplug event, or the client has already been registered. The bug was originally added in commit 6e3f17ee73f7 ("drm/fb-helper: generic: Call drm_client_add() after setup is done"), in which adding a client and receiving a hotplug event switched order. It was hidden, as most hardware and drivers have at least on static output configured. Other drivers didn't use the internal DRM client or still had struct drm_mode_config_funcs.output_poll_changed set. That callback handled hotplug events as well. After not setting the callback in amdgpu in commit 0e3172bac3f4 ("drm/amdgpu: Don't set struct drm_driver.output_poll_changed"), amdgpu did not show a framebuffer console if output events got lost. The bug got copy-pasted from fbdev-generic into the other fbdev emulation. Reported-by: Moritz Duge Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/2649 Fixes: 6e3f17ee73f7 ("drm/fb-helper: generic: Call drm_client_add() after setup is done") Fixes: 8ab59da26bc0 ("drm/fb-helper: Move generic fbdev emulation into separate source file") Fixes: b79fe9abd58b ("drm/fbdev-dma: Implement fbdev emulation for GEM DMA helpers") Fixes: 63c381552f69 ("drm/armada: Implement fbdev emulation as in-kernel client") Fixes: 49953b70e7d3 ("drm/exynos: Implement fbdev emulation as in-kernel client") Fixes: 8f1aaccb04b7 ("drm/gma500: Implement client-based fbdev emulation") Fixes: 940b869c2f2f ("drm/msm: Implement fbdev emulation as in-kernel client") Fixes: 9e69bcd88e45 ("drm/omapdrm: Implement fbdev emulation as in-kernel client") Fixes: e317a69fe891 ("drm/radeon: Implement client-based fbdev emulation") Fixes: 71ec16f45ef8 ("drm/tegra: Implement fbdev emulation as in-kernel client") Fixes: 0e3172bac3f4 ("drm/amdgpu: Don't set struct drm_driver.output_poll_changed") Signed-off-by: Thomas Zimmermann Tested-by: Moritz Duge Tested-by: Torsten Krah Tested-by: Paul Schyska Cc: Daniel Vetter Cc: David Airlie Cc: Noralf Trønnes Cc: Maarten Lankhorst Cc: Maxime Ripard Cc: Javier Martinez Canillas Cc: Russell King Cc: Inki Dae Cc: Seung-Woo Kim Cc: Kyungmin Park Cc: Krzysztof Kozlowski Cc: Patrik Jakobsson Cc: Rob Clark Cc: Abhinav Kumar Cc: Dmitry Baryshkov Cc: Tomi Valkeinen Cc: Alex Deucher Cc: "Christian König" Cc: "Pan, Xinhui" Cc: Thierry Reding Cc: Mikko Perttunen Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-samsung-soc@vger.kernel.org Cc: linux-arm-msm@vger.kernel.org Cc: freedreno@lists.freedesktop.org Cc: amd-gfx@lists.freedesktop.org Cc: linux-tegra@vger.kernel.org Cc: dri-devel@lists.freedesktop.org Cc: # v5.2+ Reviewed-by: Javier Martinez Canillas Reviewed-by: Dmitry Baryshkov # msm Link: https://patchwork.freedesktop.org/patch/msgid/20230710091029.27503-1-tzimmermann@suse.de (cherry picked from commit 27655b9bb9f0d9c32b8de8bec649b676898c52d5) [ Dropped changes to drivers/gpu/drm/armada/armada_fbdev.c as 174c3c38e3a2 drm/armada: Initialize fbdev DRM client was introduced in 6.5-rc1. Dropped changes to exynos, msm, omapdrm, radeon, tegra drivers as missing code these commits introduced: 99286486d674 drm/exynos: Initialize fbdev DRM client 841ef552b141 drm/msm: Initialize fbdev DRM client 9e69bcd88e45 drm/omapdrm: Implement fbdev emulation as in-kernel client e317a69fe891 drm/radeon: Implement client-based fbdev emulation 9b926bcf2636 drm/radeon: Only build fbdev if DRM_FBDEV_EMULATION is set 25dda38e0b07 drm/tegra: Initialize fbdev DRM client 8f1aaccb04b7 drm/gma500: Implement client-based fbdev emulation b79fe9abd58b drm/fbdev-dma: Implement fbdev emulation for GEM DMA helpers Move code for drm-fbdev-generic.c to matching file in 6.1.y because these commits haven't happened in 6.1.y. 8ab59da26bc0 drm/fb-helper: Move generic fbdev emulation into separate source file b9c93f4ec737 drm/fbdev-generic: Rename symbols ] Cc: alexandru.gagniuc@hp.com Link: https://lore.kernel.org/stable/SJ0PR84MB20882EEA1ABB36F60E845E378F5AA@SJ0PR84MB2088.NAMPRD84.PROD.OUTLOOK.COM/ Signed-off-by: Mario Limonciello Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/drm_client.c | 21 +++++++++++++++++++++ drivers/gpu/drm/drm_fb_helper.c | 4 ---- 2 files changed, 21 insertions(+), 4 deletions(-) --- a/drivers/gpu/drm/drm_client.c +++ b/drivers/gpu/drm/drm_client.c @@ -122,13 +122,34 @@ EXPORT_SYMBOL(drm_client_init); * drm_client_register() it is no longer permissible to call drm_client_release() * directly (outside the unregister callback), instead cleanup will happen * automatically on driver unload. + * + * Registering a client generates a hotplug event that allows the client + * to set up its display from pre-existing outputs. The client must have + * initialized its state to able to handle the hotplug event successfully. */ void drm_client_register(struct drm_client_dev *client) { struct drm_device *dev = client->dev; + int ret; mutex_lock(&dev->clientlist_mutex); list_add(&client->list, &dev->clientlist); + + if (client->funcs && client->funcs->hotplug) { + /* + * Perform an initial hotplug event to pick up the + * display configuration for the client. This step + * has to be performed *after* registering the client + * in the list of clients, or a concurrent hotplug + * event might be lost; leaving the display off. + * + * Hold the clientlist_mutex as for a regular hotplug + * event. + */ + ret = client->funcs->hotplug(client); + if (ret) + drm_dbg_kms(dev, "client hotplug ret=%d\n", ret); + } mutex_unlock(&dev->clientlist_mutex); } EXPORT_SYMBOL(drm_client_register); --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -2634,10 +2634,6 @@ void drm_fbdev_generic_setup(struct drm_ preferred_bpp = 32; fb_helper->preferred_bpp = preferred_bpp; - ret = drm_fbdev_client_hotplug(&fb_helper->client); - if (ret) - drm_dbg_kms(dev, "client hotplug ret=%d\n", ret); - drm_client_register(&fb_helper->client); } EXPORT_SYMBOL(drm_fbdev_generic_setup);