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.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham 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 6DF2BC32753 for ; Wed, 14 Aug 2019 18:47:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 38962216F4 for ; Wed, 14 Aug 2019 18:47:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="r3js0ydL" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728489AbfHNSrN (ORCPT ); Wed, 14 Aug 2019 14:47:13 -0400 Received: from mail-pf1-f194.google.com ([209.85.210.194]:37315 "EHLO mail-pf1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728835AbfHNSrK (ORCPT ); Wed, 14 Aug 2019 14:47:10 -0400 Received: by mail-pf1-f194.google.com with SMTP id 129so7187092pfa.4 for ; Wed, 14 Aug 2019 11:47:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=GHk9KBu+sjfwQVMBr88lecQJQ9kDr2JBg8OISzQ0Mo8=; b=r3js0ydLYVWv6kjs69b3EVE1ebVkkwcc0gHPBRxrBdj5PUspzHKliJWKYfdPUe9exc BBWPiDyCuEF1CjJoE8NLFSNJ2j+swzsxOWhruAH7tyUc8LCVjpK7EYZMfPY+M4ozAqdI ygeplTC6loMcRsXZtCZMmg20miPSkeLfpNbWzSZp81PRoaKm/+ZDuvIetQxatEFVlSUP aBumVfT8CeGVChSbv4ezqeES7jPEPvmet3pEXtYcUmR8lm2H98F5p0jsSM9HV7fAYAE3 La9uyxTBdwFwUH9a0pKDG/npZUN6X51gssLmFdc0ywQ9ptvc+owN6JbK8PGf4ESVKgVt RYOQ== 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; bh=GHk9KBu+sjfwQVMBr88lecQJQ9kDr2JBg8OISzQ0Mo8=; b=pBv9ddy/yHV+S0Kr7vqRuhY4ZYmFHuqH5yDddnz9pxHwhtyS4C3SvJZKHqyK7hmJ05 85ZAUXgwf4eGjRI2PihO9cd1tbPRMTOCaQJcdiH03a6ldjdwyQj9pe5nh0KJI/XK6Pg2 1hUWCbscJQUyjxpsajGAqCUgeZFL6NZrrZhksMF0nX868C/m56dRyxr9WYf08KJdKyaq yOT0cXP7Y/aN1qBjA8ECVTb9unCMtV2NG9jVUHYXgHSoTCzaYMglTVbs8fv5YCz7uHFg 1kyMO8piM3bqhGtzIT5kj5LoBeoST9cSgPjjd7mwh/kbe4JfGK7rM7JEWB93oNty4kHG FHig== X-Gm-Message-State: APjAAAV2VwUjSwcuYPI3R8QGhH9ctR2TXwFiOd9wu+ATIK2F+umuR2NU x8mwlbY+wgCtP+sziNWFOj1a+htR3m4= X-Google-Smtp-Source: APXvYqyFZdKw4i6UT0LjD3UmiAGGwKCO+QBIqvUBmuZT9H+t+etcgS2PPN0TS7bzXvAdSNzcyscwKw== X-Received: by 2002:a63:61cd:: with SMTP id v196mr484242pgb.263.1565808428888; Wed, 14 Aug 2019 11:47:08 -0700 (PDT) Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id y16sm610855pfc.36.2019.08.14.11.47.06 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 14 Aug 2019 11:47:08 -0700 (PDT) From: John Stultz To: lkml Cc: Da Lv , Rongrong Zou , Xinliang Liu , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , Yidong Lin , John Stultz Subject: [RESEND][PATCH v3 01/26] drm: kirin: Fix for hikey620 display offset problem Date: Wed, 14 Aug 2019 18:46:37 +0000 Message-Id: <20190814184702.54275-2-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190814184702.54275-1-john.stultz@linaro.org> References: <20190814184702.54275-1-john.stultz@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Da Lv The original HiKey (620) board has had a long running issue where when using a 1080p montior, the display would occasionally blink and come come back with a horizontal offset (usually also shifting the colors, depending on the value of the offset%4). After lots of analysis by HiSi developers, they found the issue was due to when running at 1080p, it was possible to hit the device memory bandwidth limits, which could cause the DSI signal to get out of sync. Unfortunately the DSI logic doesn't have the ability to automatically recover from this situation, but we can get a an LDI underflow interrupt when it happens. To then correct the issue, when we get an LDI underflow irq, we we can simply suspend and resume the display, which resets the hardware. Thus, this patch enables the ldi underflow interrupt, and initializes a workqueue that is used to suspend/resume the display to recover. Then when the irq occurs we clear it and schedule the workqueue to reset display engine. Cc: Rongrong Zou Cc: Xinliang Liu Cc: David Airlie Cc: Daniel Vetter Cc: dri-devel Cc: Sam Ravnborg Reviewed-by: Sam Ravnborg Signed-off-by: Da Lv Signed-off-by: Yidong Lin [jstultz: Reworded the commit message, checkpatch cleanups] Signed-off-by: John Stultz --- v2: Minor cleanups v3: Rename workqueue entry for clarity (suggested by Sam) --- .../gpu/drm/hisilicon/kirin/kirin_ade_reg.h | 1 + .../gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_ade_reg.h b/drivers/gpu/drm/hisilicon/kirin/kirin_ade_reg.h index e2ac09894a6d..0da860200410 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_ade_reg.h +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_ade_reg.h @@ -83,6 +83,7 @@ #define VSIZE_OFST 20 #define LDI_INT_EN 0x741C #define FRAME_END_INT_EN_OFST 1 +#define UNDERFLOW_INT_EN_OFST 2 #define LDI_CTRL 0x7420 #define BPP_OFST 3 #define DATA_GATE_EN BIT(2) diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index ad7042ae2241..d69b5d458950 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -54,6 +54,7 @@ struct ade_hw_ctx { struct ade_crtc { struct drm_crtc base; struct ade_hw_ctx *ctx; + struct work_struct display_reset_wq; bool enable; u32 out_format; }; @@ -172,6 +173,7 @@ static void ade_init(struct ade_hw_ctx *ctx) */ ade_update_bits(base + ADE_CTRL, FRM_END_START_OFST, FRM_END_START_MASK, REG_EFFECTIVE_IN_ADEEN_FRMEND); + ade_update_bits(base + LDI_INT_EN, UNDERFLOW_INT_EN_OFST, MASK(1), 1); } static bool ade_crtc_mode_fixup(struct drm_crtc *crtc, @@ -341,6 +343,17 @@ static void ade_crtc_disable_vblank(struct drm_crtc *crtc) MASK(1), 0); } +static void drm_underflow_wq(struct work_struct *work) +{ + struct ade_crtc *acrtc = container_of(work, struct ade_crtc, + display_reset_wq); + struct drm_device *drm_dev = (&acrtc->base)->dev; + struct drm_atomic_state *state; + + state = drm_atomic_helper_suspend(drm_dev); + drm_atomic_helper_resume(drm_dev, state); +} + static irqreturn_t ade_irq_handler(int irq, void *data) { struct ade_crtc *acrtc = data; @@ -358,6 +371,12 @@ static irqreturn_t ade_irq_handler(int irq, void *data) MASK(1), 1); drm_crtc_handle_vblank(crtc); } + if (status & BIT(UNDERFLOW_INT_EN_OFST)) { + ade_update_bits(base + LDI_INT_CLR, UNDERFLOW_INT_EN_OFST, + MASK(1), 1); + DRM_ERROR("LDI underflow!"); + schedule_work(&acrtc->display_reset_wq); + } return IRQ_HANDLED; } @@ -1034,6 +1053,9 @@ static int ade_drm_init(struct platform_device *pdev) /* vblank irq init */ ret = devm_request_irq(dev->dev, ctx->irq, ade_irq_handler, IRQF_SHARED, dev->driver->name, acrtc); + + INIT_WORK(&acrtc->display_reset_wq, drm_underflow_wq); + if (ret) return ret; -- 2.17.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Stultz Subject: [RESEND][PATCH v3 01/26] drm: kirin: Fix for hikey620 display offset problem Date: Wed, 14 Aug 2019 18:46:37 +0000 Message-ID: <20190814184702.54275-2-john.stultz@linaro.org> References: <20190814184702.54275-1-john.stultz@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg1-x543.google.com (mail-pg1-x543.google.com [IPv6:2607:f8b0:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id 829BE6E7D2 for ; Wed, 14 Aug 2019 18:47:09 +0000 (UTC) Received: by mail-pg1-x543.google.com with SMTP id k3so5402pgb.10 for ; Wed, 14 Aug 2019 11:47:09 -0700 (PDT) In-Reply-To: <20190814184702.54275-1-john.stultz@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: lkml Cc: David Airlie , dri-devel , Xinliang Liu , Rongrong Zou , Da Lv , Yidong Lin , Sam Ravnborg List-Id: dri-devel@lists.freedesktop.org RnJvbTogRGEgTHYgPGx2ZGEzQGhpc2lsaWNvbi5jb20+CgpUaGUgb3JpZ2luYWwgSGlLZXkgKDYy MCkgYm9hcmQgaGFzIGhhZCBhIGxvbmcgcnVubmluZyBpc3N1ZQp3aGVyZSB3aGVuIHVzaW5nIGEg MTA4MHAgbW9udGlvciwgdGhlIGRpc3BsYXkgd291bGQgb2NjYXNpb25hbGx5CmJsaW5rIGFuZCBj b21lIGNvbWUgYmFjayB3aXRoIGEgaG9yaXpvbnRhbCBvZmZzZXQgKHVzdWFsbHkgYWxzbwpzaGlm dGluZyB0aGUgY29sb3JzLCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIHRoZSBvZmZzZXQlNCku CgpBZnRlciBsb3RzIG9mIGFuYWx5c2lzIGJ5IEhpU2kgZGV2ZWxvcGVycywgdGhleSBmb3VuZCB0 aGUgaXNzdWUKd2FzIGR1ZSB0byB3aGVuIHJ1bm5pbmcgYXQgMTA4MHAsIGl0IHdhcyBwb3NzaWJs ZSB0byBoaXQgdGhlCmRldmljZSBtZW1vcnkgYmFuZHdpZHRoIGxpbWl0cywgd2hpY2ggY291bGQg Y2F1c2UgdGhlIERTSSBzaWduYWwKdG8gZ2V0IG91dCBvZiBzeW5jLgoKVW5mb3J0dW5hdGVseSB0 aGUgRFNJIGxvZ2ljIGRvZXNuJ3QgaGF2ZSB0aGUgYWJpbGl0eSB0bwphdXRvbWF0aWNhbGx5IHJl Y292ZXIgZnJvbSB0aGlzIHNpdHVhdGlvbiwgYnV0IHdlIGNhbiBnZXQgYSBhbgpMREkgdW5kZXJm bG93IGludGVycnVwdCB3aGVuIGl0IGhhcHBlbnMuCgpUbyB0aGVuIGNvcnJlY3QgdGhlIGlzc3Vl LCB3aGVuIHdlIGdldCBhbiBMREkgdW5kZXJmbG93IGlycSwgd2UKd2UgY2FuIHNpbXBseSBzdXNw ZW5kIGFuZCByZXN1bWUgdGhlIGRpc3BsYXksIHdoaWNoIHJlc2V0cyB0aGUKaGFyZHdhcmUuCgpU aHVzLCB0aGlzIHBhdGNoIGVuYWJsZXMgdGhlIGxkaSB1bmRlcmZsb3cgaW50ZXJydXB0LCBhbmQK aW5pdGlhbGl6ZXMgYSB3b3JrcXVldWUgdGhhdCBpcyB1c2VkIHRvIHN1c3BlbmQvcmVzdW1lIHRo ZQpkaXNwbGF5IHRvIHJlY292ZXIuIFRoZW4gd2hlbiB0aGUgaXJxIG9jY3VycyB3ZSBjbGVhciBp dCBhbmQKc2NoZWR1bGUgdGhlIHdvcmtxdWV1ZSB0byByZXNldCBkaXNwbGF5IGVuZ2luZS4KCkNj OiBSb25ncm9uZyBab3UgPHpvdXJvbmdyb25nQGdtYWlsLmNvbT4KQ2M6IFhpbmxpYW5nIExpdSA8 ei5saXV4aW5saWFuZ0BoaXNpbGljb24uY29tPgpDYzogRGF2aWQgQWlybGllIDxhaXJsaWVkQGxp bnV4LmllPgpDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgpDYzogZHJpLWRldmVs IDxkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnPgpDYzogU2FtIFJhdm5ib3JnIDxzYW1A cmF2bmJvcmcub3JnPgpSZXZpZXdlZC1ieTogU2FtIFJhdm5ib3JnIDxzYW1AcmF2bmJvcmcub3Jn PgpTaWduZWQtb2ZmLWJ5OiBEYSBMdiA8bHZkYTNAaGlzaWxpY29uLmNvbT4KU2lnbmVkLW9mZi1i eTogWWlkb25nIExpbiA8bGlueWlkb25nQGh1YXdlaS5jb20+Cltqc3R1bHR6OiBSZXdvcmRlZCB0 aGUgY29tbWl0IG1lc3NhZ2UsIGNoZWNrcGF0Y2ggY2xlYW51cHNdClNpZ25lZC1vZmYtYnk6IEpv aG4gU3R1bHR6IDxqb2huLnN0dWx0ekBsaW5hcm8ub3JnPgotLS0KdjI6IE1pbm9yIGNsZWFudXBz Cgp2MzogUmVuYW1lIHdvcmtxdWV1ZSBlbnRyeSBmb3IgY2xhcml0eSAoc3VnZ2VzdGVkIGJ5IFNh bSkKLS0tCiAuLi4vZ3B1L2RybS9oaXNpbGljb24va2lyaW4va2lyaW5fYWRlX3JlZy5oICAgfCAg MSArCiAuLi4vZ3B1L2RybS9oaXNpbGljb24va2lyaW4va2lyaW5fZHJtX2FkZS5jICAgfCAyMiAr KysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKykKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2tpcmluL2tpcmluX2FkZV9yZWcu aCBiL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24va2lyaW4va2lyaW5fYWRlX3JlZy5oCmluZGV4 IGUyYWMwOTg5NGE2ZC4uMGRhODYwMjAwNDEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aGlzaWxpY29uL2tpcmluL2tpcmluX2FkZV9yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaGlz aWxpY29uL2tpcmluL2tpcmluX2FkZV9yZWcuaApAQCAtODMsNiArODMsNyBAQAogI2RlZmluZSBW U0laRV9PRlNUCQkJMjAKICNkZWZpbmUgTERJX0lOVF9FTgkJCTB4NzQxQwogI2RlZmluZSBGUkFN RV9FTkRfSU5UX0VOX09GU1QJCTEKKyNkZWZpbmUgVU5ERVJGTE9XX0lOVF9FTl9PRlNUCQkyCiAj ZGVmaW5lIExESV9DVFJMCQkJMHg3NDIwCiAjZGVmaW5lIEJQUF9PRlNUCQkJMwogI2RlZmluZSBE QVRBX0dBVEVfRU4JCQlCSVQoMikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGlj b24va2lyaW4va2lyaW5fZHJtX2FkZS5jIGIvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJp bi9raXJpbl9kcm1fYWRlLmMKaW5kZXggYWQ3MDQyYWUyMjQxLi5kNjliNWQ0NTg5NTAgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24va2lyaW4va2lyaW5fZHJtX2FkZS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24va2lyaW4va2lyaW5fZHJtX2FkZS5jCkBAIC01 NCw2ICs1NCw3IEBAIHN0cnVjdCBhZGVfaHdfY3R4IHsKIHN0cnVjdCBhZGVfY3J0YyB7CiAJc3Ry dWN0IGRybV9jcnRjIGJhc2U7CiAJc3RydWN0IGFkZV9od19jdHggKmN0eDsKKwlzdHJ1Y3Qgd29y a19zdHJ1Y3QgZGlzcGxheV9yZXNldF93cTsKIAlib29sIGVuYWJsZTsKIAl1MzIgb3V0X2Zvcm1h dDsKIH07CkBAIC0xNzIsNiArMTczLDcgQEAgc3RhdGljIHZvaWQgYWRlX2luaXQoc3RydWN0IGFk ZV9od19jdHggKmN0eCkKIAkgKi8KIAlhZGVfdXBkYXRlX2JpdHMoYmFzZSArIEFERV9DVFJMLCBG Uk1fRU5EX1NUQVJUX09GU1QsCiAJCQlGUk1fRU5EX1NUQVJUX01BU0ssIFJFR19FRkZFQ1RJVkVf SU5fQURFRU5fRlJNRU5EKTsKKwlhZGVfdXBkYXRlX2JpdHMoYmFzZSArIExESV9JTlRfRU4sIFVO REVSRkxPV19JTlRfRU5fT0ZTVCwgTUFTSygxKSwgMSk7CiB9CiAKIHN0YXRpYyBib29sIGFkZV9j cnRjX21vZGVfZml4dXAoc3RydWN0IGRybV9jcnRjICpjcnRjLApAQCAtMzQxLDYgKzM0MywxNyBA QCBzdGF0aWMgdm9pZCBhZGVfY3J0Y19kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCiAJCQlNQVNLKDEpLCAwKTsKIH0KIAorc3RhdGljIHZvaWQgZHJtX3VuZGVyZmxvd193cShz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGFkZV9jcnRjICphY3J0YyA9IGNv bnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYWRlX2NydGMsCisJCQkJCSAgICAgIGRpc3BsYXlfcmVz ZXRfd3EpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2ID0gKCZhY3J0Yy0+YmFzZSktPmRl djsKKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7CisKKwlzdGF0ZSA9IGRybV9hdG9t aWNfaGVscGVyX3N1c3BlbmQoZHJtX2Rldik7CisJZHJtX2F0b21pY19oZWxwZXJfcmVzdW1lKGRy bV9kZXYsIHN0YXRlKTsKK30KKwogc3RhdGljIGlycXJldHVybl90IGFkZV9pcnFfaGFuZGxlcihp bnQgaXJxLCB2b2lkICpkYXRhKQogewogCXN0cnVjdCBhZGVfY3J0YyAqYWNydGMgPSBkYXRhOwpA QCAtMzU4LDYgKzM3MSwxMiBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgYWRlX2lycV9oYW5kbGVyKGlu dCBpcnEsIHZvaWQgKmRhdGEpCiAJCQkJTUFTSygxKSwgMSk7CiAJCWRybV9jcnRjX2hhbmRsZV92 YmxhbmsoY3J0Yyk7CiAJfQorCWlmIChzdGF0dXMgJiBCSVQoVU5ERVJGTE9XX0lOVF9FTl9PRlNU KSkgeworCQlhZGVfdXBkYXRlX2JpdHMoYmFzZSArIExESV9JTlRfQ0xSLCBVTkRFUkZMT1dfSU5U X0VOX09GU1QsCisJCQkJTUFTSygxKSwgMSk7CisJCURSTV9FUlJPUigiTERJIHVuZGVyZmxvdyEi KTsKKwkJc2NoZWR1bGVfd29yaygmYWNydGMtPmRpc3BsYXlfcmVzZXRfd3EpOworCX0KIAogCXJl dHVybiBJUlFfSEFORExFRDsKIH0KQEAgLTEwMzQsNiArMTA1Myw5IEBAIHN0YXRpYyBpbnQgYWRl X2RybV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJLyogdmJsYW5rIGlycSBp bml0ICovCiAJcmV0ID0gZGV2bV9yZXF1ZXN0X2lycShkZXYtPmRldiwgY3R4LT5pcnEsIGFkZV9p cnFfaGFuZGxlciwKIAkJCSAgICAgICBJUlFGX1NIQVJFRCwgZGV2LT5kcml2ZXItPm5hbWUsIGFj cnRjKTsKKworCUlOSVRfV09SSygmYWNydGMtPmRpc3BsYXlfcmVzZXRfd3EsIGRybV91bmRlcmZs b3dfd3EpOworCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotLSAKMi4xNy4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=