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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 646ADC433F5 for ; Tue, 28 Sep 2021 21:36:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4C49161378 for ; Tue, 28 Sep 2021 21:36:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242968AbhI1Vhu (ORCPT ); Tue, 28 Sep 2021 17:37:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38964 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242934AbhI1Vhr (ORCPT ); Tue, 28 Sep 2021 17:37:47 -0400 Received: from mail-pf1-x42a.google.com (mail-pf1-x42a.google.com [IPv6:2607:f8b0:4864:20::42a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C54B9C06161C for ; Tue, 28 Sep 2021 14:36:06 -0700 (PDT) Received: by mail-pf1-x42a.google.com with SMTP id m26so154689pff.3 for ; Tue, 28 Sep 2021 14:36:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BvgM4m2pXG/PIUkUjK73FJ7j4ardNCogAkvXuK07AJc=; b=PeeFov8qVje38hwQE1/feYtxaMpRkaXGWrx5zgYmfRhTQa8AbjATUWcYuE4sNTy0jc NzTMXMdnRkmlW7O8FqV/jpXabij0r1eBzE1+47CCs2eRykDvxNMvVT62RAW5lSmIO8de qpcOP5VzseHI2aOAYmtEvQyxXOcmwqewSG+gs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BvgM4m2pXG/PIUkUjK73FJ7j4ardNCogAkvXuK07AJc=; b=nKoGZ6WUUngiaQtIryDbeZAwqOwcNa5tDCfUIUbPnBtgGBzHKoqc4HeyD3b65bODSq E5P8fsSa8z8HLLOhtSOEVNuxDZsdl8ckeCmVhJvtyF7UuUTKlHjIBM/b9aLFmVFv1FOC GxaywQ+d06WJtyF290GP4SzMHWknoz639vggxfjwUMDya5YYyE9MHzCFB0Qhmk+NQvcn 3cpPgcHLri1Bqj7rHykZyWt9+gcbdx6aZZi4osO+u0O2uQNeEWuzbsqZ2RDsIY00dGjV eSiKMJf7YV+NjFhAAiwkYmbujfFyfjr//A9dzyslDR9Bq7SamnvdiEggiHyEHp+KUKCk sUlA== X-Gm-Message-State: AOAM530Z0sNgyMLdvA9iy2s/gs7yQPDbdeXh0rqB7xbLT6e5fxyo7ZYe UqnAEchG64WEmYE02hLjOGcKCA== X-Google-Smtp-Source: ABdhPJy7hthTjTmdF7Zg1yCAFxkJ0NU3YER4rdGOklhBmFktJSD3x8/bYr7IvIK0Q4BJbFDVzPRKnw== X-Received: by 2002:a62:7a4f:0:b0:448:6a41:14bb with SMTP id v76-20020a627a4f000000b004486a4114bbmr7479777pfc.31.1632864966354; Tue, 28 Sep 2021 14:36:06 -0700 (PDT) Received: from localhost ([2620:15c:202:201:d7ca:580:94ab:8af8]) by smtp.gmail.com with UTF8SMTPSA id q19sm105131pgn.81.2021.09.28.14.36.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 28 Sep 2021 14:36:05 -0700 (PDT) From: Brian Norris To: =?UTF-8?q?Heiko=20St=C3=BCbner?= Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, Sandy Huang , Chen-Yu Tsai , Thomas Hebb , Brian Norris , aleksandr.o.makarov@gmail.com, stable@vger.kernel.org, =?UTF-8?q?N=C3=ADcolas=20F=20=2E=20R=20=2E=20A=20=2E=20Prado?= Subject: [PATCH v3 1/4] drm/rockchip: dsi: Hold pm-runtime across bind/unbind Date: Tue, 28 Sep 2021 14:35:49 -0700 Message-Id: <20210928143413.v3.1.Ic2904d37f30013a7f3d8476203ad3733c186827e@changeid> X-Mailer: git-send-email 2.33.0.685.g46640cef36-goog In-Reply-To: <20210928213552.1001939-1-briannorris@chromium.org> References: <20210928213552.1001939-1-briannorris@chromium.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In commit 43c2de1002d2, we moved most HW configuration to bind(), but we didn't move the runtime PM management. Therefore, depending on initial boot state, runtime-PM workqueue delays, and other timing factors, we may disable our power domain in between the hardware configuration (bind()) and when we enable the display. This can cause us to lose hardware state and fail to configure our display. For example: dw-mipi-dsi-rockchip ff968000.mipi: failed to write command FIFO panel-innolux-p079zca ff960000.mipi.0: failed to write command 0 or: dw-mipi-dsi-rockchip ff968000.mipi: failed to write command FIFO panel-kingdisplay-kd097d04 ff960000.mipi.0: failed write init cmds: -110 We should match the runtime PM to the lifetime of the bind()/unbind() cycle. Tested on Acer Chrometab 10 (RK3399 Gru-Scarlet), with panel drivers built either as modules or built-in. Side notes: it seems one is more likely to see this problem when the panel driver is built into the kernel. I've also seen this problem bisect down to commits that simply changed Kconfig dependencies, because it changed the order in which driver init functions were compiled into the kernel, and therefore the ordering and timing of built-in device probe. Fixes: 43c2de1002d2 ("drm/rockchip: dsi: move all lane config except LCDC mux to bind()") Link: https://lore.kernel.org/linux-rockchip/9aedfb528600ecf871885f7293ca4207c84d16c1.camel@gmail.com/ Reported-by: Cc: Signed-off-by: Brian Norris Tested-by: NĂ­colas F. R. A. Prado --- (no changes since v2) Changes in v2: - Clean up pm-runtime state in error cases. - Correct git hash for Fixes. .../gpu/drm/rockchip/dw-mipi-dsi-rockchip.c | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c index a2262bee5aa4..45676b23c019 100644 --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c @@ -773,10 +773,6 @@ static void dw_mipi_dsi_encoder_enable(struct drm_encoder *encoder) if (mux < 0) return; - pm_runtime_get_sync(dsi->dev); - if (dsi->slave) - pm_runtime_get_sync(dsi->slave->dev); - /* * For the RK3399, the clk of grf must be enabled before writing grf * register. And for RK3288 or other soc, this grf_clk must be NULL, @@ -795,20 +791,10 @@ static void dw_mipi_dsi_encoder_enable(struct drm_encoder *encoder) clk_disable_unprepare(dsi->grf_clk); } -static void dw_mipi_dsi_encoder_disable(struct drm_encoder *encoder) -{ - struct dw_mipi_dsi_rockchip *dsi = to_dsi(encoder); - - if (dsi->slave) - pm_runtime_put(dsi->slave->dev); - pm_runtime_put(dsi->dev); -} - static const struct drm_encoder_helper_funcs dw_mipi_dsi_encoder_helper_funcs = { .atomic_check = dw_mipi_dsi_encoder_atomic_check, .enable = dw_mipi_dsi_encoder_enable, - .disable = dw_mipi_dsi_encoder_disable, }; static int rockchip_dsi_drm_create_encoder(struct dw_mipi_dsi_rockchip *dsi, @@ -938,10 +924,14 @@ static int dw_mipi_dsi_rockchip_bind(struct device *dev, put_device(second); } + pm_runtime_get_sync(dsi->dev); + if (dsi->slave) + pm_runtime_get_sync(dsi->slave->dev); + ret = clk_prepare_enable(dsi->pllref_clk); if (ret) { DRM_DEV_ERROR(dev, "Failed to enable pllref_clk: %d\n", ret); - return ret; + goto out_pm_runtime; } /* @@ -953,7 +943,7 @@ static int dw_mipi_dsi_rockchip_bind(struct device *dev, ret = clk_prepare_enable(dsi->grf_clk); if (ret) { DRM_DEV_ERROR(dsi->dev, "Failed to enable grf_clk: %d\n", ret); - return ret; + goto out_pm_runtime; } dw_mipi_dsi_rockchip_config(dsi); @@ -965,16 +955,23 @@ static int dw_mipi_dsi_rockchip_bind(struct device *dev, ret = rockchip_dsi_drm_create_encoder(dsi, drm_dev); if (ret) { DRM_DEV_ERROR(dev, "Failed to create drm encoder\n"); - return ret; + goto out_pm_runtime; } ret = dw_mipi_dsi_bind(dsi->dmd, &dsi->encoder); if (ret) { DRM_DEV_ERROR(dev, "Failed to bind: %d\n", ret); - return ret; + goto out_pm_runtime; } return 0; + +out_pm_runtime: + pm_runtime_put(dsi->dev); + if (dsi->slave) + pm_runtime_put(dsi->slave->dev); + + return ret; } static void dw_mipi_dsi_rockchip_unbind(struct device *dev, @@ -989,6 +986,10 @@ static void dw_mipi_dsi_rockchip_unbind(struct device *dev, dw_mipi_dsi_unbind(dsi->dmd); clk_disable_unprepare(dsi->pllref_clk); + + pm_runtime_put(dsi->dev); + if (dsi->slave) + pm_runtime_put(dsi->slave->dev); } static const struct component_ops dw_mipi_dsi_rockchip_ops = { -- 2.33.0.685.g46640cef36-goog 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0AD32C433FE for ; Tue, 28 Sep 2021 21:36:20 +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 CF12461361 for ; Tue, 28 Sep 2021 21:36:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org CF12461361 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org 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-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=Udm3a/1I3sv28quexNdxjL57TG2ezFOu7rZ5sV51rDw=; b=octh184IDmemdR JbiZt53YVhTlqQ+4aQixrRzEAfFIfKm041ROCXCZC8JYIpzsKrAnp0RRLzqa0AVTajLrvaSPfLLjv pT+43yO/7U9fKGVMslW00f1TiPif1IBEQMxV6upJ+l26z2sxIYRqYlRmF87JNJq8kZDbJRpXFhd3R wB61ZSJ5DeTmxQS4HPC+m/aCPEmNEjtJjcB3TtRMzNZOIRW8WcTU+1SpOIGPruzDjYMXAob1KrvRo CrhdouQOYt/ygkLtrnKvyOLoj4ovdcD0MySPS2dK4pW1yVUYvENscANKHofRPiOTLc5mi5ii3wmcw fSLcGxZaCCwt3+0cNd9A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mVKlq-008t1z-MQ; Tue, 28 Sep 2021 21:36:14 +0000 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mVKll-008sxj-VA for linux-rockchip@lists.infradead.org; Tue, 28 Sep 2021 21:36:11 +0000 Received: by mail-pf1-x42f.google.com with SMTP id u7so114223pfg.13 for ; Tue, 28 Sep 2021 14:36:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BvgM4m2pXG/PIUkUjK73FJ7j4ardNCogAkvXuK07AJc=; b=PeeFov8qVje38hwQE1/feYtxaMpRkaXGWrx5zgYmfRhTQa8AbjATUWcYuE4sNTy0jc NzTMXMdnRkmlW7O8FqV/jpXabij0r1eBzE1+47CCs2eRykDvxNMvVT62RAW5lSmIO8de qpcOP5VzseHI2aOAYmtEvQyxXOcmwqewSG+gs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BvgM4m2pXG/PIUkUjK73FJ7j4ardNCogAkvXuK07AJc=; b=5DTv1RMJlg3Oo5t2gzOszihi4JEOHD6CexxStpPbu9ShhIgTrdM1u78W4n3vToBi75 zP/Jmy1HxeVyygoav3tN1yQm+oi2JcehTIy+ITJ7YamFDX3/QfJpZWLNBjAcoDFkI+rH lsgLIseKzFEcmjjSS4Rnk/i6zISBQHnrpQUpgydNiuxNTi2oH02RwQ09RQ7xlt4Fzn6w 9tMyOG5y74ltTcF2RAlEX2vVD/VKcsLn9oyygvVSJRPULx9ElZsgD1kvbEf2pdEp+kfA S+11AutbteX12izZOBPWwXAfauEj68zaH6p5rNEdiVhQPVgzWmbxkE6fYPw/DnrZuuuj RByw== X-Gm-Message-State: AOAM532wy5VCGCqCZXBVi07mdMvyjDj6wwG7aVnS+O/zlZdSVGakSG3A Id5hzoKHd2dU6JykL/U7TidQaQ== X-Google-Smtp-Source: ABdhPJy7hthTjTmdF7Zg1yCAFxkJ0NU3YER4rdGOklhBmFktJSD3x8/bYr7IvIK0Q4BJbFDVzPRKnw== X-Received: by 2002:a62:7a4f:0:b0:448:6a41:14bb with SMTP id v76-20020a627a4f000000b004486a4114bbmr7479777pfc.31.1632864966354; Tue, 28 Sep 2021 14:36:06 -0700 (PDT) Received: from localhost ([2620:15c:202:201:d7ca:580:94ab:8af8]) by smtp.gmail.com with UTF8SMTPSA id q19sm105131pgn.81.2021.09.28.14.36.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 28 Sep 2021 14:36:05 -0700 (PDT) From: Brian Norris To: =?UTF-8?q?Heiko=20St=C3=BCbner?= Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, Sandy Huang , Chen-Yu Tsai , Thomas Hebb , Brian Norris , aleksandr.o.makarov@gmail.com, stable@vger.kernel.org, =?UTF-8?q?N=C3=ADcolas=20F=20=2E=20R=20=2E=20A=20=2E=20Prado?= Subject: [PATCH v3 1/4] drm/rockchip: dsi: Hold pm-runtime across bind/unbind Date: Tue, 28 Sep 2021 14:35:49 -0700 Message-Id: <20210928143413.v3.1.Ic2904d37f30013a7f3d8476203ad3733c186827e@changeid> X-Mailer: git-send-email 2.33.0.685.g46640cef36-goog In-Reply-To: <20210928213552.1001939-1-briannorris@chromium.org> References: <20210928213552.1001939-1-briannorris@chromium.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210928_143610_128449_7B8E0C43 X-CRM114-Status: GOOD ( 20.47 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org SW4gY29tbWl0IDQzYzJkZTEwMDJkMiwgd2UgbW92ZWQgbW9zdCBIVyBjb25maWd1cmF0aW9uIHRv IGJpbmQoKSwgYnV0IHdlCmRpZG4ndCBtb3ZlIHRoZSBydW50aW1lIFBNIG1hbmFnZW1lbnQuIFRo ZXJlZm9yZSwgZGVwZW5kaW5nIG9uIGluaXRpYWwKYm9vdCBzdGF0ZSwgcnVudGltZS1QTSB3b3Jr cXVldWUgZGVsYXlzLCBhbmQgb3RoZXIgdGltaW5nIGZhY3RvcnMsIHdlCm1heSBkaXNhYmxlIG91 ciBwb3dlciBkb21haW4gaW4gYmV0d2VlbiB0aGUgaGFyZHdhcmUgY29uZmlndXJhdGlvbgooYmlu ZCgpKSBhbmQgd2hlbiB3ZSBlbmFibGUgdGhlIGRpc3BsYXkuIFRoaXMgY2FuIGNhdXNlIHVzIHRv IGxvc2UKaGFyZHdhcmUgc3RhdGUgYW5kIGZhaWwgdG8gY29uZmlndXJlIG91ciBkaXNwbGF5LiBG b3IgZXhhbXBsZToKCiAgZHctbWlwaS1kc2ktcm9ja2NoaXAgZmY5NjgwMDAubWlwaTogZmFpbGVk IHRvIHdyaXRlIGNvbW1hbmQgRklGTwogIHBhbmVsLWlubm9sdXgtcDA3OXpjYSBmZjk2MDAwMC5t aXBpLjA6IGZhaWxlZCB0byB3cml0ZSBjb21tYW5kIDAKCm9yOgoKICBkdy1taXBpLWRzaS1yb2Nr Y2hpcCBmZjk2ODAwMC5taXBpOiBmYWlsZWQgdG8gd3JpdGUgY29tbWFuZCBGSUZPCiAgcGFuZWwt a2luZ2Rpc3BsYXkta2QwOTdkMDQgZmY5NjAwMDAubWlwaS4wOiBmYWlsZWQgd3JpdGUgaW5pdCBj bWRzOiAtMTEwCgpXZSBzaG91bGQgbWF0Y2ggdGhlIHJ1bnRpbWUgUE0gdG8gdGhlIGxpZmV0aW1l IG9mIHRoZSBiaW5kKCkvdW5iaW5kKCkKY3ljbGUuCgpUZXN0ZWQgb24gQWNlciBDaHJvbWV0YWIg MTAgKFJLMzM5OSBHcnUtU2NhcmxldCksIHdpdGggcGFuZWwgZHJpdmVycwpidWlsdCBlaXRoZXIg YXMgbW9kdWxlcyBvciBidWlsdC1pbi4KClNpZGUgbm90ZXM6IGl0IHNlZW1zIG9uZSBpcyBtb3Jl IGxpa2VseSB0byBzZWUgdGhpcyBwcm9ibGVtIHdoZW4gdGhlCnBhbmVsIGRyaXZlciBpcyBidWls dCBpbnRvIHRoZSBrZXJuZWwuIEkndmUgYWxzbyBzZWVuIHRoaXMgcHJvYmxlbQpiaXNlY3QgZG93 biB0byBjb21taXRzIHRoYXQgc2ltcGx5IGNoYW5nZWQgS2NvbmZpZyBkZXBlbmRlbmNpZXMsIGJl Y2F1c2UKaXQgY2hhbmdlZCB0aGUgb3JkZXIgaW4gd2hpY2ggZHJpdmVyIGluaXQgZnVuY3Rpb25z IHdlcmUgY29tcGlsZWQgaW50bwp0aGUga2VybmVsLCBhbmQgdGhlcmVmb3JlIHRoZSBvcmRlcmlu ZyBhbmQgdGltaW5nIG9mIGJ1aWx0LWluIGRldmljZQpwcm9iZS4KCkZpeGVzOiA0M2MyZGUxMDAy ZDIgKCJkcm0vcm9ja2NoaXA6IGRzaTogbW92ZSBhbGwgbGFuZSBjb25maWcgZXhjZXB0IExDREMg bXV4IHRvIGJpbmQoKSIpCkxpbms6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LXJvY2tj aGlwLzlhZWRmYjUyODYwMGVjZjg3MTg4NWY3MjkzY2E0MjA3Yzg0ZDE2YzEuY2FtZWxAZ21haWwu Y29tLwpSZXBvcnRlZC1ieTogPGFsZWtzYW5kci5vLm1ha2Fyb3ZAZ21haWwuY29tPgpDYzogPHN0 YWJsZUB2Z2VyLmtlcm5lbC5vcmc+ClNpZ25lZC1vZmYtYnk6IEJyaWFuIE5vcnJpcyA8YnJpYW5u b3JyaXNAY2hyb21pdW0ub3JnPgpUZXN0ZWQtYnk6IE7DrWNvbGFzIEYuIFIuIEEuIFByYWRvIDxu ZnJhcHJhZG9AY29sbGFib3JhLmNvbT4KLS0tCgoobm8gY2hhbmdlcyBzaW5jZSB2MikKCkNoYW5n ZXMgaW4gdjI6Ci0gQ2xlYW4gdXAgcG0tcnVudGltZSBzdGF0ZSBpbiBlcnJvciBjYXNlcy4KLSBD b3JyZWN0IGdpdCBoYXNoIGZvciBGaXhlcy4KCiAuLi4vZ3B1L2RybS9yb2NrY2hpcC9kdy1taXBp LWRzaS1yb2NrY2hpcC5jICAgfCAzNyArKysrKysrKysrLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3JvY2tjaGlwL2R3LW1pcGktZHNpLXJvY2tjaGlwLmMgYi9kcml2ZXJzL2dwdS9k cm0vcm9ja2NoaXAvZHctbWlwaS1kc2ktcm9ja2NoaXAuYwppbmRleCBhMjI2MmJlZTVhYTQuLjQ1 Njc2YjIzYzAxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2R3LW1pcGkt ZHNpLXJvY2tjaGlwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2R3LW1pcGktZHNp LXJvY2tjaGlwLmMKQEAgLTc3MywxMCArNzczLDYgQEAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lf ZW5jb2Rlcl9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCWlmIChtdXggPCAw KQogCQlyZXR1cm47CiAKLQlwbV9ydW50aW1lX2dldF9zeW5jKGRzaS0+ZGV2KTsKLQlpZiAoZHNp LT5zbGF2ZSkKLQkJcG1fcnVudGltZV9nZXRfc3luYyhkc2ktPnNsYXZlLT5kZXYpOwotCiAJLyoK IAkgKiBGb3IgdGhlIFJLMzM5OSwgdGhlIGNsayBvZiBncmYgbXVzdCBiZSBlbmFibGVkIGJlZm9y ZSB3cml0aW5nIGdyZgogCSAqIHJlZ2lzdGVyLiBBbmQgZm9yIFJLMzI4OCBvciBvdGhlciBzb2Ms IHRoaXMgZ3JmX2NsayBtdXN0IGJlIE5VTEwsCkBAIC03OTUsMjAgKzc5MSwxMCBAQCBzdGF0aWMg dm9pZCBkd19taXBpX2RzaV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIpCiAJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+Z3JmX2Nsayk7CiB9CiAKLXN0YXRpYyB2 b2lkIGR3X21pcGlfZHNpX2VuY29kZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIpCi17Ci0Jc3RydWN0IGR3X21pcGlfZHNpX3JvY2tjaGlwICpkc2kgPSB0b19kc2koZW5jb2Rl cik7Ci0KLQlpZiAoZHNpLT5zbGF2ZSkKLQkJcG1fcnVudGltZV9wdXQoZHNpLT5zbGF2ZS0+ZGV2 KTsKLQlwbV9ydW50aW1lX3B1dChkc2ktPmRldik7Ci19Ci0KIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzCiBkd19taXBpX2RzaV9lbmNvZGVyX2hlbHBlcl9mdW5j cyA9IHsKIAkuYXRvbWljX2NoZWNrID0gZHdfbWlwaV9kc2lfZW5jb2Rlcl9hdG9taWNfY2hlY2ss CiAJLmVuYWJsZSA9IGR3X21pcGlfZHNpX2VuY29kZXJfZW5hYmxlLAotCS5kaXNhYmxlID0gZHdf bWlwaV9kc2lfZW5jb2Rlcl9kaXNhYmxlLAogfTsKIAogc3RhdGljIGludCByb2NrY2hpcF9kc2lf ZHJtX2NyZWF0ZV9lbmNvZGVyKHN0cnVjdCBkd19taXBpX2RzaV9yb2NrY2hpcCAqZHNpLApAQCAt OTM4LDEwICs5MjQsMTQgQEAgc3RhdGljIGludCBkd19taXBpX2RzaV9yb2NrY2hpcF9iaW5kKHN0 cnVjdCBkZXZpY2UgKmRldiwKIAkJcHV0X2RldmljZShzZWNvbmQpOwogCX0KIAorCXBtX3J1bnRp bWVfZ2V0X3N5bmMoZHNpLT5kZXYpOworCWlmIChkc2ktPnNsYXZlKQorCQlwbV9ydW50aW1lX2dl dF9zeW5jKGRzaS0+c2xhdmUtPmRldik7CisKIAlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoZHNp LT5wbGxyZWZfY2xrKTsKIAlpZiAocmV0KSB7CiAJCURSTV9ERVZfRVJST1IoZGV2LCAiRmFpbGVk IHRvIGVuYWJsZSBwbGxyZWZfY2xrOiAlZFxuIiwgcmV0KTsKLQkJcmV0dXJuIHJldDsKKwkJZ290 byBvdXRfcG1fcnVudGltZTsKIAl9CiAKIAkvKgpAQCAtOTUzLDcgKzk0Myw3IEBAIHN0YXRpYyBp bnQgZHdfbWlwaV9kc2lfcm9ja2NoaXBfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJcmV0ID0g Y2xrX3ByZXBhcmVfZW5hYmxlKGRzaS0+Z3JmX2Nsayk7CiAJaWYgKHJldCkgewogCQlEUk1fREVW X0VSUk9SKGRzaS0+ZGV2LCAiRmFpbGVkIHRvIGVuYWJsZSBncmZfY2xrOiAlZFxuIiwgcmV0KTsK LQkJcmV0dXJuIHJldDsKKwkJZ290byBvdXRfcG1fcnVudGltZTsKIAl9CiAKIAlkd19taXBpX2Rz aV9yb2NrY2hpcF9jb25maWcoZHNpKTsKQEAgLTk2NSwxNiArOTU1LDIzIEBAIHN0YXRpYyBpbnQg ZHdfbWlwaV9kc2lfcm9ja2NoaXBfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJcmV0ID0gcm9j a2NoaXBfZHNpX2RybV9jcmVhdGVfZW5jb2Rlcihkc2ksIGRybV9kZXYpOwogCWlmIChyZXQpIHsK IAkJRFJNX0RFVl9FUlJPUihkZXYsICJGYWlsZWQgdG8gY3JlYXRlIGRybSBlbmNvZGVyXG4iKTsK LQkJcmV0dXJuIHJldDsKKwkJZ290byBvdXRfcG1fcnVudGltZTsKIAl9CiAKIAlyZXQgPSBkd19t aXBpX2RzaV9iaW5kKGRzaS0+ZG1kLCAmZHNpLT5lbmNvZGVyKTsKIAlpZiAocmV0KSB7CiAJCURS TV9ERVZfRVJST1IoZGV2LCAiRmFpbGVkIHRvIGJpbmQ6ICVkXG4iLCByZXQpOwotCQlyZXR1cm4g cmV0OworCQlnb3RvIG91dF9wbV9ydW50aW1lOwogCX0KIAogCXJldHVybiAwOworCitvdXRfcG1f cnVudGltZToKKwlwbV9ydW50aW1lX3B1dChkc2ktPmRldik7CisJaWYgKGRzaS0+c2xhdmUpCisJ CXBtX3J1bnRpbWVfcHV0KGRzaS0+c2xhdmUtPmRldik7CisKKwlyZXR1cm4gcmV0OwogfQogCiBz dGF0aWMgdm9pZCBkd19taXBpX2RzaV9yb2NrY2hpcF91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2 LApAQCAtOTg5LDYgKzk4NiwxMCBAQCBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9yb2NrY2hpcF91 bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LAogCWR3X21pcGlfZHNpX3VuYmluZChkc2ktPmRtZCk7 CiAKIAljbGtfZGlzYWJsZV91bnByZXBhcmUoZHNpLT5wbGxyZWZfY2xrKTsKKworCXBtX3J1bnRp bWVfcHV0KGRzaS0+ZGV2KTsKKwlpZiAoZHNpLT5zbGF2ZSkKKwkJcG1fcnVudGltZV9wdXQoZHNp LT5zbGF2ZS0+ZGV2KTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBjb21wb25lbnRfb3BzIGR3 X21pcGlfZHNpX3JvY2tjaGlwX29wcyA9IHsKLS0gCjIuMzMuMC42ODUuZzQ2NjQwY2VmMzYtZ29v ZwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4 LXJvY2tjaGlwIG1haWxpbmcgbGlzdApMaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcm9ja2No aXAK