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 3AC13EB64DA for ; Thu, 20 Jul 2023 18:11:32 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C4FEE10E600; Thu, 20 Jul 2023 18:11:31 +0000 (UTC) Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by gabe.freedesktop.org (Postfix) with ESMTPS id E6BF110E5FB; Thu, 20 Jul 2023 18:10:26 +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 22B8D61B7F; Thu, 20 Jul 2023 18:10:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 05DA6C433C8; Thu, 20 Jul 2023 18:10:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1689876625; bh=N/wsQNOLSdYXcfNS6ldcXlg9JbOA2i8x5WgK1L3Hj+g=; h=Subject:To:Cc:From:Date:From; b=ZAqAXo4GfgesxiAHH+HpvR/D4p36no6fc3LeBpeZrbo0TeN5/45427E10OixhD1j+ CT+7DDKsrftqTf7qChruT4l4E4pTClpnnGM0kKqCEksxkhx6RrtU386dIPm7que1Sf e0Dl5XiWIKGmEUgCUI0d8j1aaKMTe4sOGLCqfgnQ= Subject: Patch "drm/client: Send hotplug event after registering a client" has been added to the 6.1-stable tree To: MoritzDuge@kolahilft.de, Xinhui.Pan@amd.com, airlied@gmail.com, alexander.deucher@amd.com, alexandru.gagniuc@hp.com, amd-gfx@lists.freedesktop.org, christian.koenig@amd.com, daniel.vetter@ffwll.ch, dmitry.baryshkov@linaro.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, gregkh@linuxfoundation.org, inki.dae@samsung.com, javierm@redhat.com, krah.tm@gmail.com, krzysztof.kozlowski@linaro.org, kyungmin.park@samsung.com, linux-arm-kernel@lists.infradead.org, linux@armlinux.org.uk, maarten.lankhorst@linux.intel.com, mario.limonciello@amd.com, mperttunen@nvidia.com, mripard@kernel.org, noralf@tronnes.org, patrik.r.jakobsson@gmail.com, pschyska@gmail.com, quic_abhinavk@quicinc.com, robdclark@gmail.com, sw0312.kim@samsung.com, thierry.reding@gmail.com, tomi.valkeinen@ideasonboard.com, tzimmermann@suse.de From: Date: Thu, 20 Jul 2023 20:10:14 +0200 Message-ID: <2023072014-imprison-spelling-8d29@gregkh> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-stable: commit X-Patchwork-Hint: ignore X-Mailman-Approved-At: Thu, 20 Jul 2023 18:11:30 +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: stable-commits@vger.kernel.org Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" This is a note to let you know that I've just added the patch titled drm/client: Send hotplug event after registering a client to the 6.1-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: drm-client-send-hotplug-event-after-registering-a-client.patch and it can be found in the queue-6.1 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let know about it. >From 27655b9bb9f0d9c32b8de8bec649b676898c52d5 Mon Sep 17 00:00:00 2001 From: Thomas Zimmermann Date: Mon, 10 Jul 2023 11:10:17 +0200 Subject: drm/client: Send hotplug event after registering a client MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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); Patches currently in stable-queue which might be from tzimmermann@suse.de are queue-6.1/drm-client-send-hotplug-event-after-registering-a-client.patch 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 8DF41EB64DA for ; Thu, 20 Jul 2023 18:10:54 +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:Message-ID:Date:From:Cc:To :Subject:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=DHStbbgIjPlhc3YeHtIF/7CymmdRR9OasGXu1YcDq08=; b=BrvqwO9rKghjPc xYQ7+YeUtlNDpjec1DR4V3P7dH1r3xqG6lwDb+ENw6kZMgeABUb4450lfzfsUSHmx675VLy5UdW/o +1pBTgKjo0PIwpI43h04TFUBujy9eljhE0pYYbrV6TR6q2wuZPK1FBWvjl8jAabyMFnfmnCpL+DMm n/PgOfI1lgZkF6A1JnKbbfFZdxSEmG8fVWd1Uac+f7HYJWceGfSU3NGPO1myikvatmiTNY5N6ryTh Ii/xuzBvXXM6CQy43h/O/cwUQdMBAZVF/cJgBCCyXGUtVwPPmHU66JEeRs2ba2fAK4mqif+feGK2s S2G6pGXT7+0ra6oB1FSw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qMY6h-00Bs5E-2I; Thu, 20 Jul 2023 18:10:31 +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 1qMY6d-00Bs4e-0Q for linux-arm-kernel@lists.infradead.org; Thu, 20 Jul 2023 18:10:29 +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 22B8D61B7F; Thu, 20 Jul 2023 18:10:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 05DA6C433C8; Thu, 20 Jul 2023 18:10:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1689876625; bh=N/wsQNOLSdYXcfNS6ldcXlg9JbOA2i8x5WgK1L3Hj+g=; h=Subject:To:Cc:From:Date:From; b=ZAqAXo4GfgesxiAHH+HpvR/D4p36no6fc3LeBpeZrbo0TeN5/45427E10OixhD1j+ CT+7DDKsrftqTf7qChruT4l4E4pTClpnnGM0kKqCEksxkhx6RrtU386dIPm7que1Sf e0Dl5XiWIKGmEUgCUI0d8j1aaKMTe4sOGLCqfgnQ= Subject: Patch "drm/client: Send hotplug event after registering a client" has been added to the 6.1-stable tree To: MoritzDuge@kolahilft.de,Xinhui.Pan@amd.com,airlied@gmail.com,alexander.deucher@amd.com,alexandru.gagniuc@hp.com,amd-gfx@lists.freedesktop.org,christian.koenig@amd.com,daniel.vetter@ffwll.ch,dmitry.baryshkov@linaro.org,dri-devel@lists.freedesktop.org,freedreno@lists.freedesktop.org,gregkh@linuxfoundation.org,inki.dae@samsung.com,javierm@redhat.com,krah.tm@gmail.com,krzysztof.kozlowski@linaro.org,kyungmin.park@samsung.com,linux-arm-kernel@lists.infradead.org,linux@armlinux.org.uk,maarten.lankhorst@linux.intel.com,mario.limonciello@amd.com,mperttunen@nvidia.com,mripard@kernel.org,noralf@tronnes.org,patrik.r.jakobsson@gmail.com,pschyska@gmail.com,quic_abhinavk@quicinc.com,robdclark@gmail.com,sw0312.kim@samsung.com,thierry.reding@gmail.com,tomi.valkeinen@ideasonboard.com,tzimmermann@suse.de Cc: From: Date: Thu, 20 Jul 2023 20:10:14 +0200 Message-ID: <2023072014-imprison-spelling-8d29@gregkh> MIME-Version: 1.0 X-stable: commit X-Patchwork-Hint: ignore X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230720_111027_264745_9E1D2EE2 X-CRM114-Status: GOOD ( 28.72 ) 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 ClRoaXMgaXMgYSBub3RlIHRvIGxldCB5b3Uga25vdyB0aGF0IEkndmUganVzdCBhZGRlZCB0aGUg cGF0Y2ggdGl0bGVkCgogICAgZHJtL2NsaWVudDogU2VuZCBob3RwbHVnIGV2ZW50IGFmdGVyIHJl Z2lzdGVyaW5nIGEgY2xpZW50Cgp0byB0aGUgNi4xLXN0YWJsZSB0cmVlIHdoaWNoIGNhbiBiZSBm b3VuZCBhdDoKICAgIGh0dHA6Ly93d3cua2VybmVsLm9yZy9naXQvP3A9bGludXgva2VybmVsL2dp dC9zdGFibGUvc3RhYmxlLXF1ZXVlLmdpdDthPXN1bW1hcnkKClRoZSBmaWxlbmFtZSBvZiB0aGUg cGF0Y2ggaXM6CiAgICAgZHJtLWNsaWVudC1zZW5kLWhvdHBsdWctZXZlbnQtYWZ0ZXItcmVnaXN0 ZXJpbmctYS1jbGllbnQucGF0Y2gKYW5kIGl0IGNhbiBiZSBmb3VuZCBpbiB0aGUgcXVldWUtNi4x IHN1YmRpcmVjdG9yeS4KCklmIHlvdSwgb3IgYW55b25lIGVsc2UsIGZlZWxzIGl0IHNob3VsZCBu b3QgYmUgYWRkZWQgdG8gdGhlIHN0YWJsZSB0cmVlLApwbGVhc2UgbGV0IDxzdGFibGVAdmdlci5r ZXJuZWwub3JnPiBrbm93IGFib3V0IGl0LgoKCkZyb20gMjc2NTViOWJiOWYwZDljMzJiOGRlOGJl YzY0OWI2NzY4OThjNTJkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogVGhvbWFzIFpp bW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGU+CkRhdGU6IE1vbiwgMTAgSnVsIDIwMjMgMTE6 MTA6MTcgKzAyMDAKU3ViamVjdDogZHJtL2NsaWVudDogU2VuZCBob3RwbHVnIGV2ZW50IGFmdGVy IHJlZ2lzdGVyaW5nIGEgY2xpZW50Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4 dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpG cm9tOiBUaG9tYXMgWmltbWVybWFubiA8dHppbW1lcm1hbm5Ac3VzZS5kZT4KCmNvbW1pdCAyNzY1 NWI5YmI5ZjBkOWMzMmI4ZGU4YmVjNjQ5YjY3Njg5OGM1MmQ1IHVwc3RyZWFtLgoKR2VuZXJhdGUg YSBob3RwbHVnIGV2ZW50IGFmdGVyIHJlZ2lzdGVyaW5nIGEgY2xpZW50IHRvIGFsbG93IHRoZQpj bGllbnQgdG8gY29uZmlndXJlIGl0cyBkaXNwbGF5LiBSZW1vdmUgdGhlIGhvdHBsdWcgY2FsbHMg ZnJvbSB0aGUKZXhpc3RpbmcgY2xpZW50cyBmb3IgZmJkZXYgZW11bGF0aW9uLiBUaGlzIGNoYW5n ZSBmaXhlcyBhIGNvbmN1cnJlbmN5CmJ1ZyBiZXR3ZWVuIHJlZ2lzdGVyaW5nIGEgY2xpZW50IGFu ZCByZWNlaXZpbmcgZXZlbnRzIGZyb20gdGhlIERSTQpjb3JlLiBUaGUgYnVnIGlzIHByZXNlbnQg aW4gdGhlIGZiZGV2IGVtdWxhdGlvbiBvZiBhbGwgZHJpdmVycy4KClRoZSBmYmRldiBlbXVsYXRp b24gY3VycmVudGx5IGdlbmVyYXRlcyBhIGhvdHBsdWcgZXZlbnQgYmVmb3JlCnJlZ2lzdGVyaW5n IHRoZSBjbGllbnQgdG8gdGhlIGRldmljZS4gRm9yIGVhY2ggbmV3IG91dHB1dCwgdGhlIERSTQpj b3JlIHNlbmRzIGFuIGFkZGl0aW9uYWwgaG90cGx1ZyBldmVudCB0byBlYWNoIHJlZ2lzdGVyZWQg Y2xpZW50LgoKSWYgdGhlIERSTSBjb3JlIGRldGVjdHMgZmlyc3Qgb3V0cHV0IGJldHdlZW4gc2Vu ZGluZyB0aGUgYXJ0aWZpY2lhbApob3RwbHVnIGFuZCByZWdpc3RlcmluZyB0aGUgZGV2aWNlLCB0 aGUgb3V0cHV0J3MgaG90cGx1ZyBldmVudCBnZXRzCmxvc3QuIElmIHRoaXMgaXMgdGhlIGZpcnN0 IG91dHB1dCwgdGhlIGZiZGV2IGNvbnNvbGUgZGlzcGxheSByZW1haW5zCmRhcmsuIFRoaXMgaGFz IGJlZW4gb2JzZXJ2ZWQgd2l0aCBhbWRncHUgYW5kIGZiZGV2LWdlbmVyaWMuCgpGaXggdGhpcyBi eSBhZGRpbmcgaG90cGx1ZyBnZW5lcmF0aW9uIGRpcmVjdGx5IHRvIHRoZSBjbGllbnQncwpyZWdp c3RlciBoZWxwZXIgZHJtX2NsaWVudF9yZWdpc3RlcigpLiBSZWdpc3RlcmluZyB0aGUgY2xpZW50 IGFuZApyZWNlaXZpbmcgZXZlbnRzIGFyZSBzZXJpYWxpemVkIGJ5IHN0cnVjdCBkcm1fZGV2aWNl LmNsaWVudGxpc3RfbXV0ZXguClNvIGFuIG91dHB1dCBpcyBlaXRoZXIgY29uZmlndXJlZCBieSB0 aGUgaW5pdGlhbCBob3RwbHVnIGV2ZW50LCBvcgp0aGUgY2xpZW50IGhhcyBhbHJlYWR5IGJlZW4g cmVnaXN0ZXJlZC4KClRoZSBidWcgd2FzIG9yaWdpbmFsbHkgYWRkZWQgaW4gY29tbWl0IDZlM2Yx N2VlNzNmNyAoImRybS9mYi1oZWxwZXI6CmdlbmVyaWM6IENhbGwgZHJtX2NsaWVudF9hZGQoKSBh ZnRlciBzZXR1cCBpcyBkb25lIiksIGluIHdoaWNoIGFkZGluZwphIGNsaWVudCBhbmQgcmVjZWl2 aW5nIGEgaG90cGx1ZyBldmVudCBzd2l0Y2hlZCBvcmRlci4gSXQgd2FzIGhpZGRlbiwKYXMgbW9z dCBoYXJkd2FyZSBhbmQgZHJpdmVycyBoYXZlIGF0IGxlYXN0IG9uIHN0YXRpYyBvdXRwdXQgY29u ZmlndXJlZC4KT3RoZXIgZHJpdmVycyBkaWRuJ3QgdXNlIHRoZSBpbnRlcm5hbCBEUk0gY2xpZW50 IG9yIHN0aWxsIGhhZCBzdHJ1Y3QKZHJtX21vZGVfY29uZmlnX2Z1bmNzLm91dHB1dF9wb2xsX2No YW5nZWQgc2V0LiBUaGF0IGNhbGxiYWNrIGhhbmRsZWQKaG90cGx1ZyBldmVudHMgYXMgd2VsbC4g QWZ0ZXIgbm90IHNldHRpbmcgdGhlIGNhbGxiYWNrIGluIGFtZGdwdSBpbgpjb21taXQgMGUzMTcy YmFjM2Y0ICgiZHJtL2FtZGdwdTogRG9uJ3Qgc2V0IHN0cnVjdApkcm1fZHJpdmVyLm91dHB1dF9w b2xsX2NoYW5nZWQiKSwgYW1kZ3B1IGRpZCBub3Qgc2hvdyBhIGZyYW1lYnVmZmVyCmNvbnNvbGUg aWYgb3V0cHV0IGV2ZW50cyBnb3QgbG9zdC4gVGhlIGJ1ZyBnb3QgY29weS1wYXN0ZWQgZnJvbQpm YmRldi1nZW5lcmljIGludG8gdGhlIG90aGVyIGZiZGV2IGVtdWxhdGlvbi4KClJlcG9ydGVkLWJ5 OiBNb3JpdHogRHVnZSA8TW9yaXR6RHVnZUBrb2xhaGlsZnQuZGU+CkNsb3NlczogaHR0cHM6Ly9n aXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9hbWQvLS9pc3N1ZXMvMjY0OQpGaXhlczogNmUzZjE3 ZWU3M2Y3ICgiZHJtL2ZiLWhlbHBlcjogZ2VuZXJpYzogQ2FsbCBkcm1fY2xpZW50X2FkZCgpIGFm dGVyIHNldHVwIGlzIGRvbmUiKQpGaXhlczogOGFiNTlkYTI2YmMwICgiZHJtL2ZiLWhlbHBlcjog TW92ZSBnZW5lcmljIGZiZGV2IGVtdWxhdGlvbiBpbnRvIHNlcGFyYXRlIHNvdXJjZSBmaWxlIikK Rml4ZXM6IGI3OWZlOWFiZDU4YiAoImRybS9mYmRldi1kbWE6IEltcGxlbWVudCBmYmRldiBlbXVs YXRpb24gZm9yIEdFTSBETUEgaGVscGVycyIpCkZpeGVzOiA2M2MzODE1NTJmNjkgKCJkcm0vYXJt YWRhOiBJbXBsZW1lbnQgZmJkZXYgZW11bGF0aW9uIGFzIGluLWtlcm5lbCBjbGllbnQiKQpGaXhl czogNDk5NTNiNzBlN2QzICgiZHJtL2V4eW5vczogSW1wbGVtZW50IGZiZGV2IGVtdWxhdGlvbiBh cyBpbi1rZXJuZWwgY2xpZW50IikKRml4ZXM6IDhmMWFhY2NiMDRiNyAoImRybS9nbWE1MDA6IElt cGxlbWVudCBjbGllbnQtYmFzZWQgZmJkZXYgZW11bGF0aW9uIikKRml4ZXM6IDk0MGI4NjljMmYy ZiAoImRybS9tc206IEltcGxlbWVudCBmYmRldiBlbXVsYXRpb24gYXMgaW4ta2VybmVsIGNsaWVu dCIpCkZpeGVzOiA5ZTY5YmNkODhlNDUgKCJkcm0vb21hcGRybTogSW1wbGVtZW50IGZiZGV2IGVt dWxhdGlvbiBhcyBpbi1rZXJuZWwgY2xpZW50IikKRml4ZXM6IGUzMTdhNjlmZTg5MSAoImRybS9y YWRlb246IEltcGxlbWVudCBjbGllbnQtYmFzZWQgZmJkZXYgZW11bGF0aW9uIikKRml4ZXM6IDcx ZWMxNmY0NWVmOCAoImRybS90ZWdyYTogSW1wbGVtZW50IGZiZGV2IGVtdWxhdGlvbiBhcyBpbi1r ZXJuZWwgY2xpZW50IikKRml4ZXM6IDBlMzE3MmJhYzNmNCAoImRybS9hbWRncHU6IERvbid0IHNl dCBzdHJ1Y3QgZHJtX2RyaXZlci5vdXRwdXRfcG9sbF9jaGFuZ2VkIikKU2lnbmVkLW9mZi1ieTog VGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGU+ClRlc3RlZC1ieTogTW9yaXR6 IER1Z2UgPE1vcml0ekR1Z2VAa29sYWhpbGZ0LmRlPgpUZXN0ZWQtYnk6IFRvcnN0ZW4gS3JhaCA8 a3JhaC50bUBnbWFpbC5jb20+ClRlc3RlZC1ieTogUGF1bCBTY2h5c2thIDxwc2NoeXNrYUBnbWFp bC5jb20+CkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgpDYzogRGF2 aWQgQWlybGllIDxhaXJsaWVkQGdtYWlsLmNvbT4KQ2M6IE5vcmFsZiBUcsO4bm5lcyA8bm9yYWxm QHRyb25uZXMub3JnPgpDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxp bnV4LmludGVsLmNvbT4KQ2M6IE1heGltZSBSaXBhcmQgPG1yaXBhcmRAa2VybmVsLm9yZz4KQ2M6 IEphdmllciBNYXJ0aW5leiBDYW5pbGxhcyA8amF2aWVybUByZWRoYXQuY29tPgpDYzogUnVzc2Vs bCBLaW5nIDxsaW51eEBhcm1saW51eC5vcmcudWs+CkNjOiBJbmtpIERhZSA8aW5raS5kYWVAc2Ft c3VuZy5jb20+CkNjOiBTZXVuZy1Xb28gS2ltIDxzdzAzMTIua2ltQHNhbXN1bmcuY29tPgpDYzog S3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KQ2M6IEtyenlzenRvZiBL b3psb3dza2kgPGtyenlzenRvZi5rb3psb3dza2lAbGluYXJvLm9yZz4KQ2M6IFBhdHJpayBKYWtv YnNzb24gPHBhdHJpay5yLmpha29ic3NvbkBnbWFpbC5jb20+CkNjOiBSb2IgQ2xhcmsgPHJvYmRj bGFya0BnbWFpbC5jb20+CkNjOiBBYmhpbmF2IEt1bWFyIDxxdWljX2FiaGluYXZrQHF1aWNpbmMu Y29tPgpDYzogRG1pdHJ5IEJhcnlzaGtvdiA8ZG1pdHJ5LmJhcnlzaGtvdkBsaW5hcm8ub3JnPgpD YzogVG9taSBWYWxrZWluZW4gPHRvbWkudmFsa2VpbmVuQGlkZWFzb25ib2FyZC5jb20+CkNjOiBB bGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+CkNjOiAiQ2hyaXN0aWFuIEvD tm5pZyIgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KQ2M6ICJQYW4sIFhpbmh1aSIgPFhpbmh1 aS5QYW5AYW1kLmNvbT4KQ2M6IFRoaWVycnkgUmVkaW5nIDx0aGllcnJ5LnJlZGluZ0BnbWFpbC5j b20+CkNjOiBNaWtrbyBQZXJ0dHVuZW4gPG1wZXJ0dHVuZW5AbnZpZGlhLmNvbT4KQ2M6IGRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKQ2M6IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5v cmcKQ2M6IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpDYzogbGludXgtc2Ft c3VuZy1zb2NAdmdlci5rZXJuZWwub3JnCkNjOiBsaW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9y ZwpDYzogZnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpDYzogYW1kLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKQ2M6IGxpbnV4LXRlZ3JhQHZnZXIua2VybmVsLm9yZwpDYzogZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpDYzogPHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmc+ICMg djUuMisKUmV2aWV3ZWQtYnk6IEphdmllciBNYXJ0aW5leiBDYW5pbGxhcyA8amF2aWVybUByZWRo YXQuY29tPgpSZXZpZXdlZC1ieTogRG1pdHJ5IEJhcnlzaGtvdiA8ZG1pdHJ5LmJhcnlzaGtvdkBs aW5hcm8ub3JnPiAjIG1zbQpMaW5rOiBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcv cGF0Y2gvbXNnaWQvMjAyMzA3MTAwOTEwMjkuMjc1MDMtMS10emltbWVybWFubkBzdXNlLmRlCihj aGVycnkgcGlja2VkIGZyb20gY29tbWl0IDI3NjU1YjliYjlmMGQ5YzMyYjhkZThiZWM2NDliNjc2 ODk4YzUyZDUpClsgRHJvcHBlZCBjaGFuZ2VzIHRvIGRyaXZlcnMvZ3B1L2RybS9hcm1hZGEvYXJt YWRhX2ZiZGV2LmMgYXMKICAxNzRjM2MzOGUzYTIgZHJtL2FybWFkYTogSW5pdGlhbGl6ZSBmYmRl diBEUk0gY2xpZW50CiAgd2FzIGludHJvZHVjZWQgaW4gNi41LXJjMS4KCiAgRHJvcHBlZCBjaGFu Z2VzIHRvIGV4eW5vcywgbXNtLCBvbWFwZHJtLCByYWRlb24sIHRlZ3JhIGRyaXZlcnMKICBhcyBt aXNzaW5nIGNvZGUgdGhlc2UgY29tbWl0cyBpbnRyb2R1Y2VkOgoKICA5OTI4NjQ4NmQ2NzQgZHJt L2V4eW5vczogSW5pdGlhbGl6ZSBmYmRldiBEUk0gY2xpZW50CiAgODQxZWY1NTJiMTQxIGRybS9t c206IEluaXRpYWxpemUgZmJkZXYgRFJNIGNsaWVudAogIDllNjliY2Q4OGU0NSBkcm0vb21hcGRy bTogSW1wbGVtZW50IGZiZGV2IGVtdWxhdGlvbiBhcyBpbi1rZXJuZWwgY2xpZW50CiAgZTMxN2E2 OWZlODkxIGRybS9yYWRlb246IEltcGxlbWVudCBjbGllbnQtYmFzZWQgZmJkZXYgZW11bGF0aW9u CiAgOWI5MjZiY2YyNjM2IGRybS9yYWRlb246IE9ubHkgYnVpbGQgZmJkZXYgaWYgRFJNX0ZCREVW X0VNVUxBVElPTiBpcyBzZXQKICAyNWRkYTM4ZTBiMDcgZHJtL3RlZ3JhOiBJbml0aWFsaXplIGZi ZGV2IERSTSBjbGllbnQKICA4ZjFhYWNjYjA0YjcgZHJtL2dtYTUwMDogSW1wbGVtZW50IGNsaWVu dC1iYXNlZCBmYmRldiBlbXVsYXRpb24KICBiNzlmZTlhYmQ1OGIgZHJtL2ZiZGV2LWRtYTogSW1w bGVtZW50IGZiZGV2IGVtdWxhdGlvbiBmb3IgR0VNIERNQSBoZWxwZXJzCgogIE1vdmUgY29kZSBm b3IgZHJtLWZiZGV2LWdlbmVyaWMuYyB0byBtYXRjaGluZyBmaWxlIGluIDYuMS55IGJlY2F1c2UK ICB0aGVzZSBjb21taXRzIGhhdmVuJ3QgaGFwcGVuZWQgaW4gNi4xLnkuCiAgOGFiNTlkYTI2YmMw IGRybS9mYi1oZWxwZXI6IE1vdmUgZ2VuZXJpYyBmYmRldiBlbXVsYXRpb24gaW50byBzZXBhcmF0 ZSBzb3VyY2UgZmlsZQogIGI5YzkzZjRlYzczNyBkcm0vZmJkZXYtZ2VuZXJpYzogUmVuYW1lIHN5 bWJvbHMgXQpDYzogYWxleGFuZHJ1LmdhZ25pdWNAaHAuY29tCkxpbms6IGh0dHBzOi8vbG9yZS5r ZXJuZWwub3JnL3N0YWJsZS9TSjBQUjg0TUIyMDg4MkVFQTFBQkIzNkY2MEU4NDVFMzc4RjVBQUBT SjBQUjg0TUIyMDg4Lk5BTVBSRDg0LlBST0QuT1VUTE9PSy5DT00vClNpZ25lZC1vZmYtYnk6IE1h cmlvIExpbW9uY2llbGxvIDxtYXJpby5saW1vbmNpZWxsb0BhbWQuY29tPgpTaWduZWQtb2ZmLWJ5 OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgotLS0KIGRy aXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMgICAgfCAgIDIxICsrKysrKysrKysrKysrKysrKysr KwogZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyB8ICAgIDQgLS0tLQogMiBmaWxlcyBj aGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9jbGllbnQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jCkBA IC0xMjIsMTMgKzEyMiwzNCBAQCBFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfaW5pdCk7CiAgKiBk cm1fY2xpZW50X3JlZ2lzdGVyKCkgaXQgaXMgbm8gbG9uZ2VyIHBlcm1pc3NpYmxlIHRvIGNhbGwg ZHJtX2NsaWVudF9yZWxlYXNlKCkKICAqIGRpcmVjdGx5IChvdXRzaWRlIHRoZSB1bnJlZ2lzdGVy IGNhbGxiYWNrKSwgaW5zdGVhZCBjbGVhbnVwIHdpbGwgaGFwcGVuCiAgKiBhdXRvbWF0aWNhbGx5 IG9uIGRyaXZlciB1bmxvYWQuCisgKgorICogUmVnaXN0ZXJpbmcgYSBjbGllbnQgZ2VuZXJhdGVz IGEgaG90cGx1ZyBldmVudCB0aGF0IGFsbG93cyB0aGUgY2xpZW50CisgKiB0byBzZXQgdXAgaXRz IGRpc3BsYXkgZnJvbSBwcmUtZXhpc3Rpbmcgb3V0cHV0cy4gVGhlIGNsaWVudCBtdXN0IGhhdmUK KyAqIGluaXRpYWxpemVkIGl0cyBzdGF0ZSB0byBhYmxlIHRvIGhhbmRsZSB0aGUgaG90cGx1ZyBl dmVudCBzdWNjZXNzZnVsbHkuCiAgKi8KIHZvaWQgZHJtX2NsaWVudF9yZWdpc3RlcihzdHJ1Y3Qg ZHJtX2NsaWVudF9kZXYgKmNsaWVudCkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY2xp ZW50LT5kZXY7CisJaW50IHJldDsKIAogCW11dGV4X2xvY2soJmRldi0+Y2xpZW50bGlzdF9tdXRl eCk7CiAJbGlzdF9hZGQoJmNsaWVudC0+bGlzdCwgJmRldi0+Y2xpZW50bGlzdCk7CisKKwlpZiAo Y2xpZW50LT5mdW5jcyAmJiBjbGllbnQtPmZ1bmNzLT5ob3RwbHVnKSB7CisJCS8qCisJCSAqIFBl cmZvcm0gYW4gaW5pdGlhbCBob3RwbHVnIGV2ZW50IHRvIHBpY2sgdXAgdGhlCisJCSAqIGRpc3Bs YXkgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNsaWVudC4gVGhpcyBzdGVwCisJCSAqIGhhcyB0byBi ZSBwZXJmb3JtZWQgKmFmdGVyKiByZWdpc3RlcmluZyB0aGUgY2xpZW50CisJCSAqIGluIHRoZSBs aXN0IG9mIGNsaWVudHMsIG9yIGEgY29uY3VycmVudCBob3RwbHVnCisJCSAqIGV2ZW50IG1pZ2h0 IGJlIGxvc3Q7IGxlYXZpbmcgdGhlIGRpc3BsYXkgb2ZmLgorCQkgKgorCQkgKiBIb2xkIHRoZSBj bGllbnRsaXN0X211dGV4IGFzIGZvciBhIHJlZ3VsYXIgaG90cGx1ZworCQkgKiBldmVudC4KKwkJ ICovCisJCXJldCA9IGNsaWVudC0+ZnVuY3MtPmhvdHBsdWcoY2xpZW50KTsKKwkJaWYgKHJldCkK KwkJCWRybV9kYmdfa21zKGRldiwgImNsaWVudCBob3RwbHVnIHJldD0lZFxuIiwgcmV0KTsKKwl9 CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPmNsaWVudGxpc3RfbXV0ZXgpOwogfQogRVhQT1JUX1NZTUJP TChkcm1fY2xpZW50X3JlZ2lzdGVyKTsKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxw ZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCkBAIC0yNjM0LDEwICsy NjM0LDYgQEAgdm9pZCBkcm1fZmJkZXZfZ2VuZXJpY19zZXR1cChzdHJ1Y3QgZHJtXwogCQlwcmVm ZXJyZWRfYnBwID0gMzI7CiAJZmJfaGVscGVyLT5wcmVmZXJyZWRfYnBwID0gcHJlZmVycmVkX2Jw cDsKIAotCXJldCA9IGRybV9mYmRldl9jbGllbnRfaG90cGx1ZygmZmJfaGVscGVyLT5jbGllbnQp OwotCWlmIChyZXQpCi0JCWRybV9kYmdfa21zKGRldiwgImNsaWVudCBob3RwbHVnIHJldD0lZFxu IiwgcmV0KTsKLQogCWRybV9jbGllbnRfcmVnaXN0ZXIoJmZiX2hlbHBlci0+Y2xpZW50KTsKIH0K IEVYUE9SVF9TWU1CT0woZHJtX2ZiZGV2X2dlbmVyaWNfc2V0dXApOwoKClBhdGNoZXMgY3VycmVu dGx5IGluIHN0YWJsZS1xdWV1ZSB3aGljaCBtaWdodCBiZSBmcm9tIHR6aW1tZXJtYW5uQHN1c2Uu ZGUgYXJlCgpxdWV1ZS02LjEvZHJtLWNsaWVudC1zZW5kLWhvdHBsdWctZXZlbnQtYWZ0ZXItcmVn aXN0ZXJpbmctYS1jbGllbnQucGF0Y2gKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1r ZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK