From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 834F3C5B57E for ; Sun, 30 Jun 2019 15:03:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 50F18204FD for ; Sun, 30 Jun 2019 15:03:07 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nbqxbrj+" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726686AbfF3PDD (ORCPT ); Sun, 30 Jun 2019 11:03:03 -0400 Received: from mail-qt1-f196.google.com ([209.85.160.196]:36899 "EHLO mail-qt1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726500AbfF3PDD (ORCPT ); Sun, 30 Jun 2019 11:03:03 -0400 Received: by mail-qt1-f196.google.com with SMTP id y57so11902393qtk.4; Sun, 30 Jun 2019 08:03:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NmpeLtv9CirMuphZn3UqpzSTC4xpI+G1gA6mWQX8+PQ=; b=nbqxbrj+r07X2rlsQr4Mv2uAwh7kymPo/8Bupi0yEcoWtQa+FlGsA8cKZBGU3Q2KwQ bSAkfNJFfLqRdTYrczpxaDidnkhWdHKPFZL8Yx5T6wyTERd0eFV8OaEDiAfbYuH1iH5z u7YVPu+WNVosDSkYdODjMvYHpfXi8ixCpARjBEv2daZZ9SYV1Q5wSnTKmr9PQj1nxhcH ur+ZQKtywVOBedMfXt/o/1MdN1n0F45H2wf9T3NDmDXf+jsxI82Ep2h/1BuWzI5GhS+y x16lO8jrQzqwcqs41LLAMbvyU2dAsWZBxHAE/lidF5DAyaCIp9Gho+wXbDEdfHQaKto1 K/Hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NmpeLtv9CirMuphZn3UqpzSTC4xpI+G1gA6mWQX8+PQ=; b=KpKc5Wdc+FvBJX3/5GR7PXAJxjnUOYC8SEI9moQ25iBGalrvcmnFmE0+SDJ759Xih0 pYfYs8EeGRjOGfbvbYt3cFpT1ko7Y0H1JLx8iiJy4aRfDVeUJAnL/WOmmXqoBSzDsILY BjxOcj9zJxFCD3S0Z+JFLQHqxUsoa4RI2GPLGsp/FMUGkQYsz6QwYz9BfxaVmCBxUpHQ yYESH8mmJwSlxusXQw9L3p4VPgMJbN680sSMxBNyqyRz8ccttEjb/LP1kF3Q+IPs0o7k Yfwvg79iXcrGd5bmxVcbaYoGD6uixuPuvSczkmRwglUUPwR7voBU5QXa9sQJ41j70h4R tFDg== X-Gm-Message-State: APjAAAUofnXhwHG39VfX1diDq9DrYW+tZMe3nbEFfs+ydyFNmiLXEkSe JN1DcEAR6q4R5p+Jzpm33fo= X-Google-Smtp-Source: APXvYqy2S/mmZ9sDDpRM+wLOanixdy4o/K20sb/OVBDEHGR37wax6kuOVR5o8zOkEQY3ALeplyERDA== X-Received: by 2002:a0c:d4b4:: with SMTP id u49mr17438483qvh.202.1561906982037; Sun, 30 Jun 2019 08:03:02 -0700 (PDT) Received: from localhost ([2601:184:4780:7861:5010:5849:d76d:b714]) by smtp.gmail.com with ESMTPSA id w62sm3820792qkd.30.2019.06.30.08.03.01 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Sun, 30 Jun 2019 08:03:01 -0700 (PDT) From: Rob Clark To: dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org Cc: freedreno@lists.freedesktop.org, aarch64-laptops@lists.linaro.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, Rob Clark , Rob Clark , Sean Paul , David Airlie , Daniel Vetter , Chandan Uddaraju , Archit Taneja , Sibi Sankar , Laurent Pinchart , Thomas Gleixner , Greg Kroah-Hartman , Allison Randal , Jordan Crouse , Abhinav Kumar , linux-kernel@vger.kernel.org Subject: [PATCH 3/5] drm/msm/dsi: split clk rate setting and enable Date: Sun, 30 Jun 2019 08:01:41 -0700 Message-Id: <20190630150230.7878-4-robdclark@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190630150230.7878-1-robdclark@gmail.com> References: <20190630150230.7878-1-robdclark@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org From: Rob Clark Prep work for the following patch. Signed-off-by: Rob Clark --- drivers/gpu/drm/msm/dsi/dsi.h | 2 ++ drivers/gpu/drm/msm/dsi/dsi_cfg.c | 3 +++ drivers/gpu/drm/msm/dsi/dsi_cfg.h | 1 + drivers/gpu/drm/msm/dsi/dsi_host.c | 38 ++++++++++++++++++++++-------- 4 files changed, 34 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi.h b/drivers/gpu/drm/msm/dsi/dsi.h index 4dd2a9a79257..c4e3c4cf96c5 100644 --- a/drivers/gpu/drm/msm/dsi/dsi.h +++ b/drivers/gpu/drm/msm/dsi/dsi.h @@ -178,6 +178,8 @@ int msm_dsi_host_modeset_init(struct mipi_dsi_host *host, int msm_dsi_host_init(struct msm_dsi *msm_dsi); int msm_dsi_runtime_suspend(struct device *dev); int msm_dsi_runtime_resume(struct device *dev); +int dsi_link_clk_set_rate_6g(struct msm_dsi_host *msm_host); +int dsi_link_clk_set_rate_v2(struct msm_dsi_host *msm_host); int dsi_link_clk_enable_6g(struct msm_dsi_host *msm_host); int dsi_link_clk_enable_v2(struct msm_dsi_host *msm_host); void dsi_link_clk_disable_6g(struct msm_dsi_host *msm_host); diff --git a/drivers/gpu/drm/msm/dsi/dsi_cfg.c b/drivers/gpu/drm/msm/dsi/dsi_cfg.c index 9ddf16380289..35e272c27780 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_cfg.c +++ b/drivers/gpu/drm/msm/dsi/dsi_cfg.c @@ -129,6 +129,7 @@ static const struct msm_dsi_config sdm845_dsi_cfg = { }; const static struct msm_dsi_host_cfg_ops msm_dsi_v2_host_ops = { + .link_clk_set_rate = dsi_link_clk_set_rate_v2, .link_clk_enable = dsi_link_clk_enable_v2, .link_clk_disable = dsi_link_clk_disable_v2, .clk_init_ver = dsi_clk_init_v2, @@ -140,6 +141,7 @@ const static struct msm_dsi_host_cfg_ops msm_dsi_v2_host_ops = { }; const static struct msm_dsi_host_cfg_ops msm_dsi_6g_host_ops = { + .link_clk_set_rate = dsi_link_clk_set_rate_6g, .link_clk_enable = dsi_link_clk_enable_6g, .link_clk_disable = dsi_link_clk_disable_6g, .clk_init_ver = NULL, @@ -151,6 +153,7 @@ const static struct msm_dsi_host_cfg_ops msm_dsi_6g_host_ops = { }; const static struct msm_dsi_host_cfg_ops msm_dsi_6g_v2_host_ops = { + .link_clk_set_rate = dsi_link_clk_set_rate_6g, .link_clk_enable = dsi_link_clk_enable_6g, .link_clk_disable = dsi_link_clk_disable_6g, .clk_init_ver = dsi_clk_init_6g_v2, diff --git a/drivers/gpu/drm/msm/dsi/dsi_cfg.h b/drivers/gpu/drm/msm/dsi/dsi_cfg.h index a6a3d2bad263..7c1bc174537d 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_cfg.h +++ b/drivers/gpu/drm/msm/dsi/dsi_cfg.h @@ -33,6 +33,7 @@ struct msm_dsi_config { }; struct msm_dsi_host_cfg_ops { + int (*link_clk_set_rate)(struct msm_dsi_host *msm_host); int (*link_clk_enable)(struct msm_dsi_host *msm_host); void (*link_clk_disable)(struct msm_dsi_host *msm_host); int (*clk_init_ver)(struct msm_dsi_host *msm_host); diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c index d03212ef4853..87119d0afb91 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -503,7 +503,7 @@ int msm_dsi_runtime_resume(struct device *dev) return dsi_bus_clk_enable(msm_host); } -int dsi_link_clk_enable_6g(struct msm_dsi_host *msm_host) +int dsi_link_clk_set_rate_6g(struct msm_dsi_host *msm_host) { int ret; @@ -513,13 +513,13 @@ int dsi_link_clk_enable_6g(struct msm_dsi_host *msm_host) ret = clk_set_rate(msm_host->byte_clk, msm_host->byte_clk_rate); if (ret) { pr_err("%s: Failed to set rate byte clk, %d\n", __func__, ret); - goto error; + return ret; } ret = clk_set_rate(msm_host->pixel_clk, msm_host->pixel_clk_rate); if (ret) { pr_err("%s: Failed to set rate pixel clk, %d\n", __func__, ret); - goto error; + return ret; } if (msm_host->byte_intf_clk) { @@ -528,10 +528,18 @@ int dsi_link_clk_enable_6g(struct msm_dsi_host *msm_host) if (ret) { pr_err("%s: Failed to set rate byte intf clk, %d\n", __func__, ret); - goto error; + return ret; } } + return 0; +} + + +int dsi_link_clk_enable_6g(struct msm_dsi_host *msm_host) +{ + int ret; + ret = clk_prepare_enable(msm_host->esc_clk); if (ret) { pr_err("%s: Failed to enable dsi esc clk\n", __func__); @@ -571,7 +579,7 @@ int dsi_link_clk_enable_6g(struct msm_dsi_host *msm_host) return ret; } -int dsi_link_clk_enable_v2(struct msm_dsi_host *msm_host) +int dsi_link_clk_set_rate_v2(struct msm_dsi_host *msm_host) { int ret; @@ -582,27 +590,34 @@ int dsi_link_clk_enable_v2(struct msm_dsi_host *msm_host) ret = clk_set_rate(msm_host->byte_clk, msm_host->byte_clk_rate); if (ret) { pr_err("%s: Failed to set rate byte clk, %d\n", __func__, ret); - goto error; + return ret; } ret = clk_set_rate(msm_host->esc_clk, msm_host->esc_clk_rate); if (ret) { pr_err("%s: Failed to set rate esc clk, %d\n", __func__, ret); - goto error; + return ret; } ret = clk_set_rate(msm_host->src_clk, msm_host->src_clk_rate); if (ret) { pr_err("%s: Failed to set rate src clk, %d\n", __func__, ret); - goto error; + return ret; } ret = clk_set_rate(msm_host->pixel_clk, msm_host->pixel_clk_rate); if (ret) { pr_err("%s: Failed to set rate pixel clk, %d\n", __func__, ret); - goto error; + return ret; } + return 0; +} + +int dsi_link_clk_enable_v2(struct msm_dsi_host *msm_host) +{ + int ret; + ret = clk_prepare_enable(msm_host->byte_clk); if (ret) { pr_err("%s: Failed to enable dsi byte clk\n", __func__); @@ -1997,6 +2012,7 @@ int msm_dsi_host_xfer_prepare(struct mipi_dsi_host *host, * mdp clock need to be enabled to receive dsi interrupt */ pm_runtime_get_sync(&msm_host->pdev->dev); + cfg_hnd->ops->link_clk_set_rate(msm_host); cfg_hnd->ops->link_clk_enable(msm_host); /* TODO: vote for bus bandwidth */ @@ -2345,7 +2361,9 @@ int msm_dsi_host_power_on(struct mipi_dsi_host *host, } pm_runtime_get_sync(&msm_host->pdev->dev); - ret = cfg_hnd->ops->link_clk_enable(msm_host); + ret = cfg_hnd->ops->link_clk_set_rate(msm_host); + if (!ret) + ret = cfg_hnd->ops->link_clk_enable(msm_host); if (ret) { pr_err("%s: failed to enable link clocks. ret=%d\n", __func__, ret); -- 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Clark Subject: [PATCH 3/5] drm/msm/dsi: split clk rate setting and enable Date: Sun, 30 Jun 2019 08:01:41 -0700 Message-ID: <20190630150230.7878-4-robdclark@gmail.com> References: <20190630150230.7878-1-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190630150230.7878-1-robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: Rob Clark , aarch64-laptops-cunTk1MwBs8s++Sfvej+rw@public.gmane.org, Archit Taneja , Laurent Pinchart , linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, David Airlie , Sean Paul , Allison Randal , Jordan Crouse , Abhinav Kumar , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Rob Clark , Sibi Sankar , Daniel Vetter , Greg Kroah-Hartman , Thomas Gleixner , freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-clk-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Chandan Uddaraju List-Id: dri-devel@lists.freedesktop.org RnJvbTogUm9iIENsYXJrIDxyb2JkY2xhcmtAY2hyb21pdW0ub3JnPgoKUHJlcCB3b3JrIGZvciB0 aGUgZm9sbG93aW5nIHBhdGNoLgoKU2lnbmVkLW9mZi1ieTogUm9iIENsYXJrIDxyb2JkY2xhcmtA Y2hyb21pdW0ub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaS5oICAgICAgfCAg MiArKwogZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2NmZy5jICB8ICAzICsrKwogZHJpdmVy cy9ncHUvZHJtL21zbS9kc2kvZHNpX2NmZy5oICB8ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9tc20v ZHNpL2RzaV9ob3N0LmMgfCAzOCArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIDQgZmls ZXMgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rz aS9kc2kuaAppbmRleCA0ZGQyYTlhNzkyNTcuLmM0ZTNjNGNmOTZjNSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9kc2kvZHNpLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kv ZHNpLmgKQEAgLTE3OCw2ICsxNzgsOCBAQCBpbnQgbXNtX2RzaV9ob3N0X21vZGVzZXRfaW5pdChz dHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKIGludCBtc21fZHNpX2hvc3RfaW5pdChzdHJ1Y3Qg bXNtX2RzaSAqbXNtX2RzaSk7CiBpbnQgbXNtX2RzaV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRl dmljZSAqZGV2KTsKIGludCBtc21fZHNpX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRl dik7CitpbnQgZHNpX2xpbmtfY2xrX3NldF9yYXRlXzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1z bV9ob3N0KTsKK2ludCBkc2lfbGlua19jbGtfc2V0X3JhdGVfdjIoc3RydWN0IG1zbV9kc2lfaG9z dCAqbXNtX2hvc3QpOwogaW50IGRzaV9saW5rX2Nsa19lbmFibGVfNmcoc3RydWN0IG1zbV9kc2lf aG9zdCAqbXNtX2hvc3QpOwogaW50IGRzaV9saW5rX2Nsa19lbmFibGVfdjIoc3RydWN0IG1zbV9k c2lfaG9zdCAqbXNtX2hvc3QpOwogdm9pZCBkc2lfbGlua19jbGtfZGlzYWJsZV82ZyhzdHJ1Y3Qg bXNtX2RzaV9ob3N0ICptc21faG9zdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2RzaS9kc2lfY2ZnLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfY2ZnLmMKaW5kZXgg OWRkZjE2MzgwMjg5Li4zNWUyNzJjMjc3ODAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZHNpL2RzaV9jZmcuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfY2ZnLmMK QEAgLTEyOSw2ICsxMjksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1zbV9kc2lfY29uZmlnIHNk bTg0NV9kc2lfY2ZnID0gewogfTsKIAogY29uc3Qgc3RhdGljIHN0cnVjdCBtc21fZHNpX2hvc3Rf Y2ZnX29wcyBtc21fZHNpX3YyX2hvc3Rfb3BzID0geworCS5saW5rX2Nsa19zZXRfcmF0ZSA9IGRz aV9saW5rX2Nsa19zZXRfcmF0ZV92MiwKIAkubGlua19jbGtfZW5hYmxlID0gZHNpX2xpbmtfY2xr X2VuYWJsZV92MiwKIAkubGlua19jbGtfZGlzYWJsZSA9IGRzaV9saW5rX2Nsa19kaXNhYmxlX3Yy LAogCS5jbGtfaW5pdF92ZXIgPSBkc2lfY2xrX2luaXRfdjIsCkBAIC0xNDAsNiArMTQxLDcgQEAg Y29uc3Qgc3RhdGljIHN0cnVjdCBtc21fZHNpX2hvc3RfY2ZnX29wcyBtc21fZHNpX3YyX2hvc3Rf b3BzID0gewogfTsKIAogY29uc3Qgc3RhdGljIHN0cnVjdCBtc21fZHNpX2hvc3RfY2ZnX29wcyBt c21fZHNpXzZnX2hvc3Rfb3BzID0geworCS5saW5rX2Nsa19zZXRfcmF0ZSA9IGRzaV9saW5rX2Ns a19zZXRfcmF0ZV82ZywKIAkubGlua19jbGtfZW5hYmxlID0gZHNpX2xpbmtfY2xrX2VuYWJsZV82 ZywKIAkubGlua19jbGtfZGlzYWJsZSA9IGRzaV9saW5rX2Nsa19kaXNhYmxlXzZnLAogCS5jbGtf aW5pdF92ZXIgPSBOVUxMLApAQCAtMTUxLDYgKzE1Myw3IEBAIGNvbnN0IHN0YXRpYyBzdHJ1Y3Qg bXNtX2RzaV9ob3N0X2NmZ19vcHMgbXNtX2RzaV82Z19ob3N0X29wcyA9IHsKIH07CiAKIGNvbnN0 IHN0YXRpYyBzdHJ1Y3QgbXNtX2RzaV9ob3N0X2NmZ19vcHMgbXNtX2RzaV82Z192Ml9ob3N0X29w cyA9IHsKKwkubGlua19jbGtfc2V0X3JhdGUgPSBkc2lfbGlua19jbGtfc2V0X3JhdGVfNmcsCiAJ LmxpbmtfY2xrX2VuYWJsZSA9IGRzaV9saW5rX2Nsa19lbmFibGVfNmcsCiAJLmxpbmtfY2xrX2Rp c2FibGUgPSBkc2lfbGlua19jbGtfZGlzYWJsZV82ZywKIAkuY2xrX2luaXRfdmVyID0gZHNpX2Ns a19pbml0XzZnX3YyLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2Nm Zy5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2NmZy5oCmluZGV4IGE2YTNkMmJhZDI2 My4uN2MxYmMxNzQ1MzdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lf Y2ZnLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2NmZy5oCkBAIC0zMyw2ICsz Myw3IEBAIHN0cnVjdCBtc21fZHNpX2NvbmZpZyB7CiB9OwogCiBzdHJ1Y3QgbXNtX2RzaV9ob3N0 X2NmZ19vcHMgeworCWludCAoKmxpbmtfY2xrX3NldF9yYXRlKShzdHJ1Y3QgbXNtX2RzaV9ob3N0 ICptc21faG9zdCk7CiAJaW50ICgqbGlua19jbGtfZW5hYmxlKShzdHJ1Y3QgbXNtX2RzaV9ob3N0 ICptc21faG9zdCk7CiAJdm9pZCAoKmxpbmtfY2xrX2Rpc2FibGUpKHN0cnVjdCBtc21fZHNpX2hv c3QgKm1zbV9ob3N0KTsKIAlpbnQgKCpjbGtfaW5pdF92ZXIpKHN0cnVjdCBtc21fZHNpX2hvc3Qg Km1zbV9ob3N0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfaG9zdC5jCmluZGV4IGQwMzIxMmVmNDg1 My4uODcxMTlkMGFmYjkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lf aG9zdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0LmMKQEAgLTUwMyw3 ICs1MDMsNyBAQCBpbnQgbXNtX2RzaV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYp CiAJcmV0dXJuIGRzaV9idXNfY2xrX2VuYWJsZShtc21faG9zdCk7CiB9CiAKLWludCBkc2lfbGlu a19jbGtfZW5hYmxlXzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQoraW50IGRzaV9s aW5rX2Nsa19zZXRfcmF0ZV82ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKIHsKIAlp bnQgcmV0OwogCkBAIC01MTMsMTMgKzUxMywxMyBAQCBpbnQgZHNpX2xpbmtfY2xrX2VuYWJsZV82 ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKIAlyZXQgPSBjbGtfc2V0X3JhdGUobXNt X2hvc3QtPmJ5dGVfY2xrLCBtc21faG9zdC0+Ynl0ZV9jbGtfcmF0ZSk7CiAJaWYgKHJldCkgewog CQlwcl9lcnIoIiVzOiBGYWlsZWQgdG8gc2V0IHJhdGUgYnl0ZSBjbGssICVkXG4iLCBfX2Z1bmNf XywgcmV0KTsKLQkJZ290byBlcnJvcjsKKwkJcmV0dXJuIHJldDsKIAl9CiAKIAlyZXQgPSBjbGtf c2V0X3JhdGUobXNtX2hvc3QtPnBpeGVsX2NsaywgbXNtX2hvc3QtPnBpeGVsX2Nsa19yYXRlKTsK IAlpZiAocmV0KSB7CiAJCXByX2VycigiJXM6IEZhaWxlZCB0byBzZXQgcmF0ZSBwaXhlbCBjbGss ICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKLQkJZ290byBlcnJvcjsKKwkJcmV0dXJuIHJldDsKIAl9 CiAKIAlpZiAobXNtX2hvc3QtPmJ5dGVfaW50Zl9jbGspIHsKQEAgLTUyOCwxMCArNTI4LDE4IEBA IGludCBkc2lfbGlua19jbGtfZW5hYmxlXzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0 KQogCQlpZiAocmV0KSB7CiAJCQlwcl9lcnIoIiVzOiBGYWlsZWQgdG8gc2V0IHJhdGUgYnl0ZSBp bnRmIGNsaywgJWRcbiIsCiAJCQkgICAgICAgX19mdW5jX18sIHJldCk7Ci0JCQlnb3RvIGVycm9y OworCQkJcmV0dXJuIHJldDsKIAkJfQogCX0KIAorCXJldHVybiAwOworfQorCisKK2ludCBkc2lf bGlua19jbGtfZW5hYmxlXzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQoreworCWlu dCByZXQ7CisKIAlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUobXNtX2hvc3QtPmVzY19jbGspOwog CWlmIChyZXQpIHsKIAkJcHJfZXJyKCIlczogRmFpbGVkIHRvIGVuYWJsZSBkc2kgZXNjIGNsa1xu IiwgX19mdW5jX18pOwpAQCAtNTcxLDcgKzU3OSw3IEBAIGludCBkc2lfbGlua19jbGtfZW5hYmxl XzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQogCXJldHVybiByZXQ7CiB9CiAKLWlu dCBkc2lfbGlua19jbGtfZW5hYmxlX3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQor aW50IGRzaV9saW5rX2Nsa19zZXRfcmF0ZV92MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9z dCkKIHsKIAlpbnQgcmV0OwogCkBAIC01ODIsMjcgKzU5MCwzNCBAQCBpbnQgZHNpX2xpbmtfY2xr X2VuYWJsZV92MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKIAlyZXQgPSBjbGtfc2V0 X3JhdGUobXNtX2hvc3QtPmJ5dGVfY2xrLCBtc21faG9zdC0+Ynl0ZV9jbGtfcmF0ZSk7CiAJaWYg KHJldCkgewogCQlwcl9lcnIoIiVzOiBGYWlsZWQgdG8gc2V0IHJhdGUgYnl0ZSBjbGssICVkXG4i LCBfX2Z1bmNfXywgcmV0KTsKLQkJZ290byBlcnJvcjsKKwkJcmV0dXJuIHJldDsKIAl9CiAKIAly ZXQgPSBjbGtfc2V0X3JhdGUobXNtX2hvc3QtPmVzY19jbGssIG1zbV9ob3N0LT5lc2NfY2xrX3Jh dGUpOwogCWlmIChyZXQpIHsKIAkJcHJfZXJyKCIlczogRmFpbGVkIHRvIHNldCByYXRlIGVzYyBj bGssICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKLQkJZ290byBlcnJvcjsKKwkJcmV0dXJuIHJldDsK IAl9CiAKIAlyZXQgPSBjbGtfc2V0X3JhdGUobXNtX2hvc3QtPnNyY19jbGssIG1zbV9ob3N0LT5z cmNfY2xrX3JhdGUpOwogCWlmIChyZXQpIHsKIAkJcHJfZXJyKCIlczogRmFpbGVkIHRvIHNldCBy YXRlIHNyYyBjbGssICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKLQkJZ290byBlcnJvcjsKKwkJcmV0 dXJuIHJldDsKIAl9CiAKIAlyZXQgPSBjbGtfc2V0X3JhdGUobXNtX2hvc3QtPnBpeGVsX2Nsaywg bXNtX2hvc3QtPnBpeGVsX2Nsa19yYXRlKTsKIAlpZiAocmV0KSB7CiAJCXByX2VycigiJXM6IEZh aWxlZCB0byBzZXQgcmF0ZSBwaXhlbCBjbGssICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKLQkJZ290 byBlcnJvcjsKKwkJcmV0dXJuIHJldDsKIAl9CiAKKwlyZXR1cm4gMDsKK30KKworaW50IGRzaV9s aW5rX2Nsa19lbmFibGVfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCit7CisJaW50 IHJldDsKKwogCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShtc21faG9zdC0+Ynl0ZV9jbGspOwog CWlmIChyZXQpIHsKIAkJcHJfZXJyKCIlczogRmFpbGVkIHRvIGVuYWJsZSBkc2kgYnl0ZSBjbGtc biIsIF9fZnVuY19fKTsKQEAgLTE5OTcsNiArMjAxMiw3IEBAIGludCBtc21fZHNpX2hvc3RfeGZl cl9wcmVwYXJlKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAogCSAqIG1kcCBjbG9jayBuZWVk IHRvIGJlIGVuYWJsZWQgdG8gcmVjZWl2ZSBkc2kgaW50ZXJydXB0CiAJICovCiAJcG1fcnVudGlt ZV9nZXRfc3luYygmbXNtX2hvc3QtPnBkZXYtPmRldik7CisJY2ZnX2huZC0+b3BzLT5saW5rX2Ns a19zZXRfcmF0ZShtc21faG9zdCk7CiAJY2ZnX2huZC0+b3BzLT5saW5rX2Nsa19lbmFibGUobXNt X2hvc3QpOwogCiAJLyogVE9ETzogdm90ZSBmb3IgYnVzIGJhbmR3aWR0aCAqLwpAQCAtMjM0NSw3 ICsyMzYxLDkgQEAgaW50IG1zbV9kc2lfaG9zdF9wb3dlcl9vbihzdHJ1Y3QgbWlwaV9kc2lfaG9z dCAqaG9zdCwKIAl9CiAKIAlwbV9ydW50aW1lX2dldF9zeW5jKCZtc21faG9zdC0+cGRldi0+ZGV2 KTsKLQlyZXQgPSBjZmdfaG5kLT5vcHMtPmxpbmtfY2xrX2VuYWJsZShtc21faG9zdCk7CisJcmV0 ID0gY2ZnX2huZC0+b3BzLT5saW5rX2Nsa19zZXRfcmF0ZShtc21faG9zdCk7CisJaWYgKCFyZXQp CisJCXJldCA9IGNmZ19obmQtPm9wcy0+bGlua19jbGtfZW5hYmxlKG1zbV9ob3N0KTsKIAlpZiAo cmV0KSB7CiAJCXByX2VycigiJXM6IGZhaWxlZCB0byBlbmFibGUgbGluayBjbG9ja3MuIHJldD0l ZFxuIiwKIAkJICAgICAgIF9fZnVuY19fLCByZXQpOwotLSAKMi4yMC4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0 CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8=