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 311B6C32753 for ; Wed, 14 Aug 2019 18:48:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E703C21851 for ; Wed, 14 Aug 2019 18:48:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="Hzt/VeOQ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729383AbfHNSrY (ORCPT ); Wed, 14 Aug 2019 14:47:24 -0400 Received: from mail-pf1-f194.google.com ([209.85.210.194]:45156 "EHLO mail-pf1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729341AbfHNSrU (ORCPT ); Wed, 14 Aug 2019 14:47:20 -0400 Received: by mail-pf1-f194.google.com with SMTP id w26so8830149pfq.12 for ; Wed, 14 Aug 2019 11:47:20 -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=Fr+/Pi2S9B6wdoWpzoVvTrtF22yjLCzedfYpDICy2D4=; b=Hzt/VeOQAtc+O3ahVY5yzSd/gQ2fP+233P1dAlG8ZFYWfpXRv2yfBBpmlp4s74nw+p bIdHX1J6cXzJMQwUL4Qmle5pzI+YfInoL1NGdUXnfT2nECm8GMUSJyR+8CwOxZJD/Om2 LY8Zr3ttUQCTgeUJJQWIo3hkiAm0ymc4LKv7eMviU4lAhBZSqppMPoCftbyGG79EggsL /GN87Qxsr31JNXngR026FyQM6YYj8e+yQ20e2Q0oAKa+UTJhu0YAoaaAGfkTeBKC67lP nTboFyQegkbmQFjAx0R2XXZqb+liiIrJE1UWQ7HxcaOo1nfgl60mZmNNEsv33aJZWbWZ NmBQ== 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=Fr+/Pi2S9B6wdoWpzoVvTrtF22yjLCzedfYpDICy2D4=; b=AeB6V//+37CRE14TgfihX4K7eMdRGH+MQIK08g0ePAsk9Ng0FADRZZVq+XJKPNtbhq d7Zn1Q4v5XaTyGRNOK7JYDs4y7bvPGhwksRYC9E8iVqQG2a49UMcQtISas7HtWMo1yuZ FtQWyoTAt4vfSDfBLpKsVJIHqtl2zhuUytNSEy8XL00gnXyUqB6qkooQ/vxrZhPk/SuN t5KL2ey1RRQHiIZJ4lWR3T9JH2DcOlsQtjUzepwWQ9uvLxWxVLkrIUiJD+EdZZCRNTBu nYph+JCBv14RR2TGBWoOy8vnOFkj9ARKgkmA//Lajnquvfr+pEtPDi2s4L8xE9z7Mw7m WJAQ== X-Gm-Message-State: APjAAAVXFWSrzhJNRjITugO9I6TrUXBmmdOt7JKqBMXIC6AROQmLgRvA 942127xPYVulDVRsh1qC+7AFy8NS8zI= X-Google-Smtp-Source: APXvYqz25qEBowXuYDmJdMucOPok8ZyYp867yZ9aS4rBNEzKeqLTvI4N3IJIi7WYdVx+Z132OlVR4Q== X-Received: by 2002:a17:90a:db06:: with SMTP id g6mr1123686pjv.60.1565808439301; Wed, 14 Aug 2019 11:47:19 -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.17 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 14 Aug 2019 11:47:18 -0700 (PDT) From: John Stultz To: lkml Cc: Xu YiPing , Rongrong Zou , Xinliang Liu , David Airlie , Daniel Vetter , dri-devel , Sam Ravnborg , John Stultz Subject: [RESEND][PATCH v3 08/26] drm: kirin: Rename ade_crtc to kirin_crtc Date: Wed, 14 Aug 2019 18:46:44 +0000 Message-Id: <20190814184702.54275-9-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: Xu YiPing As part of refactoring the kirin driver to better support different hardware revisions, this patch renames the struct ade_crtc to kirin_crtc. The struct kirin_crtc will later used by both kirin620 and future kirin960 driver, and will be moved to a common kirin_drm_drv.h in a future patch 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: Xu YiPing [jstultz: reworded commit message] Signed-off-by: John Stultz --- .../gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 74 +++++++++---------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index c09040876e68..ee3dc3d0f738 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -38,8 +38,8 @@ #define OUT_OVLY ADE_OVLY2 /* output overlay compositor */ #define ADE_DEBUG 1 -#define to_ade_crtc(crtc) \ - container_of(crtc, struct ade_crtc, base) +#define to_kirin_crtc(crtc) \ + container_of(crtc, struct kirin_crtc, base) #define to_kirin_plane(plane) \ container_of(plane, struct kirin_plane, base) @@ -56,9 +56,9 @@ struct ade_hw_ctx { int irq; }; -struct ade_crtc { +struct kirin_crtc { struct drm_crtc base; - struct ade_hw_ctx *ctx; + void *hw_ctx; struct work_struct display_reset_wq; bool enable; }; @@ -70,7 +70,7 @@ struct kirin_plane { }; struct ade_data { - struct ade_crtc acrtc; + struct kirin_crtc crtc; struct kirin_plane planes[ADE_CH_NUM]; struct ade_hw_ctx ctx; }; @@ -184,8 +184,8 @@ static bool ade_crtc_mode_fixup(struct drm_crtc *crtc, const struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode) { - struct ade_crtc *acrtc = to_ade_crtc(crtc); - struct ade_hw_ctx *ctx = acrtc->ctx; + struct kirin_crtc *kcrtc = to_kirin_crtc(crtc); + struct ade_hw_ctx *ctx = kcrtc->hw_ctx; adjusted_mode->clock = clk_round_rate(ctx->ade_pix_clk, mode->clock * 1000) / 1000; @@ -317,8 +317,8 @@ static void ade_set_medianoc_qos(struct ade_hw_ctx *ctx) static int ade_crtc_enable_vblank(struct drm_crtc *crtc) { - struct ade_crtc *acrtc = to_ade_crtc(crtc); - struct ade_hw_ctx *ctx = acrtc->ctx; + struct kirin_crtc *kcrtc = to_kirin_crtc(crtc); + struct ade_hw_ctx *ctx = kcrtc->hw_ctx; void __iomem *base = ctx->base; if (!ctx->power_on) @@ -332,8 +332,8 @@ static int ade_crtc_enable_vblank(struct drm_crtc *crtc) static void ade_crtc_disable_vblank(struct drm_crtc *crtc) { - struct ade_crtc *acrtc = to_ade_crtc(crtc); - struct ade_hw_ctx *ctx = acrtc->ctx; + struct kirin_crtc *kcrtc = to_kirin_crtc(crtc); + struct ade_hw_ctx *ctx = kcrtc->hw_ctx; void __iomem *base = ctx->base; if (!ctx->power_on) { @@ -347,7 +347,7 @@ static void ade_crtc_disable_vblank(struct drm_crtc *crtc) static void drm_underflow_wq(struct work_struct *work) { - struct ade_crtc *acrtc = container_of(work, struct ade_crtc, + struct kirin_crtc *acrtc = container_of(work, struct kirin_crtc, display_reset_wq); struct drm_device *drm_dev = (&acrtc->base)->dev; struct drm_atomic_state *state; @@ -358,9 +358,9 @@ static void drm_underflow_wq(struct work_struct *work) static irqreturn_t ade_irq_handler(int irq, void *data) { - struct ade_crtc *acrtc = data; - struct ade_hw_ctx *ctx = acrtc->ctx; - struct drm_crtc *crtc = &acrtc->base; + struct kirin_crtc *kcrtc = data; + struct ade_hw_ctx *ctx = kcrtc->hw_ctx; + struct drm_crtc *crtc = &kcrtc->base; void __iomem *base = ctx->base; u32 status; @@ -377,7 +377,7 @@ static irqreturn_t ade_irq_handler(int irq, void *data) ade_update_bits(base + LDI_INT_CLR, UNDERFLOW_INT_EN_OFST, MASK(1), 1); DRM_ERROR("LDI underflow!"); - schedule_work(&acrtc->display_reset_wq); + schedule_work(&kcrtc->display_reset_wq); } return IRQ_HANDLED; @@ -499,11 +499,11 @@ static void ade_dump_regs(void __iomem *base) { } static void ade_crtc_atomic_enable(struct drm_crtc *crtc, struct drm_crtc_state *old_state) { - struct ade_crtc *acrtc = to_ade_crtc(crtc); - struct ade_hw_ctx *ctx = acrtc->ctx; + struct kirin_crtc *kcrtc = to_kirin_crtc(crtc); + struct ade_hw_ctx *ctx = kcrtc->hw_ctx; int ret; - if (acrtc->enable) + if (kcrtc->enable) return; if (!ctx->power_on) { @@ -516,27 +516,27 @@ static void ade_crtc_atomic_enable(struct drm_crtc *crtc, ade_display_enable(ctx); ade_dump_regs(ctx->base); drm_crtc_vblank_on(crtc); - acrtc->enable = true; + kcrtc->enable = true; } static void ade_crtc_atomic_disable(struct drm_crtc *crtc, struct drm_crtc_state *old_state) { - struct ade_crtc *acrtc = to_ade_crtc(crtc); - struct ade_hw_ctx *ctx = acrtc->ctx; + struct kirin_crtc *kcrtc = to_kirin_crtc(crtc); + struct ade_hw_ctx *ctx = kcrtc->hw_ctx; - if (!acrtc->enable) + if (!kcrtc->enable) return; drm_crtc_vblank_off(crtc); ade_power_down(ctx); - acrtc->enable = false; + kcrtc->enable = false; } static void ade_crtc_mode_set_nofb(struct drm_crtc *crtc) { - struct ade_crtc *acrtc = to_ade_crtc(crtc); - struct ade_hw_ctx *ctx = acrtc->ctx; + struct kirin_crtc *kcrtc = to_kirin_crtc(crtc); + struct ade_hw_ctx *ctx = kcrtc->hw_ctx; struct drm_display_mode *mode = &crtc->state->mode; struct drm_display_mode *adj_mode = &crtc->state->adjusted_mode; @@ -548,8 +548,8 @@ static void ade_crtc_mode_set_nofb(struct drm_crtc *crtc) static void ade_crtc_atomic_begin(struct drm_crtc *crtc, struct drm_crtc_state *old_state) { - struct ade_crtc *acrtc = to_ade_crtc(crtc); - struct ade_hw_ctx *ctx = acrtc->ctx; + struct kirin_crtc *kcrtc = to_kirin_crtc(crtc); + struct ade_hw_ctx *ctx = kcrtc->hw_ctx; struct drm_display_mode *mode = &crtc->state->mode; struct drm_display_mode *adj_mode = &crtc->state->adjusted_mode; @@ -562,13 +562,13 @@ static void ade_crtc_atomic_flush(struct drm_crtc *crtc, struct drm_crtc_state *old_state) { - struct ade_crtc *acrtc = to_ade_crtc(crtc); - struct ade_hw_ctx *ctx = acrtc->ctx; + struct kirin_crtc *kcrtc = to_kirin_crtc(crtc); + struct ade_hw_ctx *ctx = kcrtc->hw_ctx; struct drm_pending_vblank_event *event = crtc->state->event; void __iomem *base = ctx->base; /* only crtc is enabled regs take effect */ - if (acrtc->enable) { + if (kcrtc->enable) { ade_dump_regs(base); /* flush ade registers */ writel(ADE_ENABLE, base + ADE_EN); @@ -1007,7 +1007,7 @@ static int ade_drm_init(struct platform_device *pdev) struct drm_device *dev = platform_get_drvdata(pdev); struct ade_data *ade; struct ade_hw_ctx *ctx; - struct ade_crtc *acrtc; + struct kirin_crtc *kcrtc; struct kirin_plane *kplane; enum drm_plane_type type; int ret; @@ -1021,8 +1021,8 @@ static int ade_drm_init(struct platform_device *pdev) platform_set_drvdata(pdev, ade); ctx = &ade->ctx; - acrtc = &ade->acrtc; - acrtc->ctx = ctx; + kcrtc = &ade->crtc; + kcrtc->hw_ctx = ctx; ret = ade_dts_parse(pdev, ctx); if (ret) @@ -1046,15 +1046,15 @@ static int ade_drm_init(struct platform_device *pdev) } /* crtc init */ - ret = ade_crtc_init(dev, &acrtc->base, &ade->planes[PRIMARY_CH].base); + ret = ade_crtc_init(dev, &kcrtc->base, &ade->planes[PRIMARY_CH].base); if (ret) return ret; /* vblank irq init */ ret = devm_request_irq(dev->dev, ctx->irq, ade_irq_handler, - IRQF_SHARED, dev->driver->name, acrtc); + IRQF_SHARED, dev->driver->name, kcrtc); - INIT_WORK(&acrtc->display_reset_wq, drm_underflow_wq); + INIT_WORK(&kcrtc->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 08/26] drm: kirin: Rename ade_crtc to kirin_crtc Date: Wed, 14 Aug 2019 18:46:44 +0000 Message-ID: <20190814184702.54275-9-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-pf1-x443.google.com (mail-pf1-x443.google.com [IPv6:2607:f8b0:4864:20::443]) by gabe.freedesktop.org (Postfix) with ESMTPS id D36EF6E7DF for ; Wed, 14 Aug 2019 18:47:19 +0000 (UTC) Received: by mail-pf1-x443.google.com with SMTP id w16so1589535pfn.7 for ; Wed, 14 Aug 2019 11:47:19 -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: Xu YiPing , David Airlie , dri-devel , Xinliang Liu , Rongrong Zou , Sam Ravnborg List-Id: dri-devel@lists.freedesktop.org RnJvbTogWHUgWWlQaW5nIDx4dXlpcGluZ0BoaXNpbGljb24uY29tPgoKQXMgcGFydCBvZiByZWZh Y3RvcmluZyB0aGUga2lyaW4gZHJpdmVyIHRvIGJldHRlciBzdXBwb3J0CmRpZmZlcmVudCBoYXJk d2FyZSByZXZpc2lvbnMsIHRoaXMgcGF0Y2ggcmVuYW1lcyB0aGUKc3RydWN0IGFkZV9jcnRjIHRv IGtpcmluX2NydGMuCgpUaGUgc3RydWN0IGtpcmluX2NydGMgd2lsbCBsYXRlciB1c2VkIGJ5IGJv dGgga2lyaW42MjAgYW5kCmZ1dHVyZSBraXJpbjk2MCBkcml2ZXIsIGFuZCB3aWxsIGJlIG1vdmVk IHRvIGEgY29tbW9uCmtpcmluX2RybV9kcnYuaCBpbiBhIGZ1dHVyZSBwYXRjaAoKQ2M6IFJvbmdy b25nIFpvdSA8em91cm9uZ3JvbmdAZ21haWwuY29tPgpDYzogWGlubGlhbmcgTGl1IDx6LmxpdXhp bmxpYW5nQGhpc2lsaWNvbi5jb20+CkNjOiBEYXZpZCBBaXJsaWUgPGFpcmxpZWRAbGludXguaWU+ CkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+CkNjOiBkcmktZGV2ZWwgPGRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmc+CkNjOiBTYW0gUmF2bmJvcmcgPHNhbUByYXZuYm9y Zy5vcmc+ClJldmlld2VkLWJ5OiBTYW0gUmF2bmJvcmcgPHNhbUByYXZuYm9yZy5vcmc+ClNpZ25l ZC1vZmYtYnk6IFh1IFlpUGluZyA8eHV5aXBpbmdAaGlzaWxpY29uLmNvbT4KW2pzdHVsdHo6IHJl d29yZGVkIGNvbW1pdCBtZXNzYWdlXQpTaWduZWQtb2ZmLWJ5OiBKb2huIFN0dWx0eiA8am9obi5z dHVsdHpAbGluYXJvLm9yZz4KLS0tCiAuLi4vZ3B1L2RybS9oaXNpbGljb24va2lyaW4va2lyaW5f ZHJtX2FkZS5jICAgfCA3NCArKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzcg aW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2hpc2lsaWNvbi9raXJpbi9raXJpbl9kcm1fYWRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaGlz aWxpY29uL2tpcmluL2tpcmluX2RybV9hZGUuYwppbmRleCBjMDkwNDA4NzZlNjguLmVlM2RjM2Qw ZjczOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9raXJpbl9k cm1fYWRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9raXJpbl9kcm1f YWRlLmMKQEAgLTM4LDggKzM4LDggQEAKICNkZWZpbmUgT1VUX09WTFkJQURFX09WTFkyIC8qIG91 dHB1dCBvdmVybGF5IGNvbXBvc2l0b3IgKi8KICNkZWZpbmUgQURFX0RFQlVHCTEKIAotI2RlZmlu ZSB0b19hZGVfY3J0YyhjcnRjKSBcCi0JY29udGFpbmVyX29mKGNydGMsIHN0cnVjdCBhZGVfY3J0 YywgYmFzZSkKKyNkZWZpbmUgdG9fa2lyaW5fY3J0YyhjcnRjKSBcCisJY29udGFpbmVyX29mKGNy dGMsIHN0cnVjdCBraXJpbl9jcnRjLCBiYXNlKQogCiAjZGVmaW5lIHRvX2tpcmluX3BsYW5lKHBs YW5lKSBcCiAJY29udGFpbmVyX29mKHBsYW5lLCBzdHJ1Y3Qga2lyaW5fcGxhbmUsIGJhc2UpCkBA IC01Niw5ICs1Niw5IEBAIHN0cnVjdCBhZGVfaHdfY3R4IHsKIAlpbnQgaXJxOwogfTsKIAotc3Ry dWN0IGFkZV9jcnRjIHsKK3N0cnVjdCBraXJpbl9jcnRjIHsKIAlzdHJ1Y3QgZHJtX2NydGMgYmFz ZTsKLQlzdHJ1Y3QgYWRlX2h3X2N0eCAqY3R4OworCXZvaWQgKmh3X2N0eDsKIAlzdHJ1Y3Qgd29y a19zdHJ1Y3QgZGlzcGxheV9yZXNldF93cTsKIAlib29sIGVuYWJsZTsKIH07CkBAIC03MCw3ICs3 MCw3IEBAIHN0cnVjdCBraXJpbl9wbGFuZSB7CiB9OwogCiBzdHJ1Y3QgYWRlX2RhdGEgewotCXN0 cnVjdCBhZGVfY3J0YyBhY3J0YzsKKwlzdHJ1Y3Qga2lyaW5fY3J0YyBjcnRjOwogCXN0cnVjdCBr aXJpbl9wbGFuZSBwbGFuZXNbQURFX0NIX05VTV07CiAJc3RydWN0IGFkZV9od19jdHggY3R4Owog fTsKQEAgLTE4NCw4ICsxODQsOCBAQCBzdGF0aWMgYm9vbCBhZGVfY3J0Y19tb2RlX2ZpeHVwKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq bW9kZSwKIAkJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkKIHsKLQlz dHJ1Y3QgYWRlX2NydGMgKmFjcnRjID0gdG9fYWRlX2NydGMoY3J0Yyk7Ci0Jc3RydWN0IGFkZV9o d19jdHggKmN0eCA9IGFjcnRjLT5jdHg7CisJc3RydWN0IGtpcmluX2NydGMgKmtjcnRjID0gdG9f a2lyaW5fY3J0YyhjcnRjKTsKKwlzdHJ1Y3QgYWRlX2h3X2N0eCAqY3R4ID0ga2NydGMtPmh3X2N0 eDsKIAogCWFkanVzdGVkX21vZGUtPmNsb2NrID0KIAkJY2xrX3JvdW5kX3JhdGUoY3R4LT5hZGVf cGl4X2NsaywgbW9kZS0+Y2xvY2sgKiAxMDAwKSAvIDEwMDA7CkBAIC0zMTcsOCArMzE3LDggQEAg c3RhdGljIHZvaWQgYWRlX3NldF9tZWRpYW5vY19xb3Moc3RydWN0IGFkZV9od19jdHggKmN0eCkK IAogc3RhdGljIGludCBhZGVfY3J0Y19lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKIHsKLQlzdHJ1Y3QgYWRlX2NydGMgKmFjcnRjID0gdG9fYWRlX2NydGMoY3J0Yyk7Ci0Jc3Ry dWN0IGFkZV9od19jdHggKmN0eCA9IGFjcnRjLT5jdHg7CisJc3RydWN0IGtpcmluX2NydGMgKmtj cnRjID0gdG9fa2lyaW5fY3J0YyhjcnRjKTsKKwlzdHJ1Y3QgYWRlX2h3X2N0eCAqY3R4ID0ga2Ny dGMtPmh3X2N0eDsKIAl2b2lkIF9faW9tZW0gKmJhc2UgPSBjdHgtPmJhc2U7CiAKIAlpZiAoIWN0 eC0+cG93ZXJfb24pCkBAIC0zMzIsOCArMzMyLDggQEAgc3RhdGljIGludCBhZGVfY3J0Y19lbmFi bGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAogc3RhdGljIHZvaWQgYWRlX2NydGNf ZGlzYWJsZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewotCXN0cnVjdCBhZGVfY3J0 YyAqYWNydGMgPSB0b19hZGVfY3J0YyhjcnRjKTsKLQlzdHJ1Y3QgYWRlX2h3X2N0eCAqY3R4ID0g YWNydGMtPmN0eDsKKwlzdHJ1Y3Qga2lyaW5fY3J0YyAqa2NydGMgPSB0b19raXJpbl9jcnRjKGNy dGMpOworCXN0cnVjdCBhZGVfaHdfY3R4ICpjdHggPSBrY3J0Yy0+aHdfY3R4OwogCXZvaWQgX19p b21lbSAqYmFzZSA9IGN0eC0+YmFzZTsKIAogCWlmICghY3R4LT5wb3dlcl9vbikgewpAQCAtMzQ3 LDcgKzM0Nyw3IEBAIHN0YXRpYyB2b2lkIGFkZV9jcnRjX2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKIAogc3RhdGljIHZvaWQgZHJtX3VuZGVyZmxvd193cShzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcmspCiB7Ci0Jc3RydWN0IGFkZV9jcnRjICphY3J0YyA9IGNvbnRhaW5lcl9v Zih3b3JrLCBzdHJ1Y3QgYWRlX2NydGMsCisJc3RydWN0IGtpcmluX2NydGMgKmFjcnRjID0gY29u dGFpbmVyX29mKHdvcmssIHN0cnVjdCBraXJpbl9jcnRjLAogCQkJCQkgICAgICBkaXNwbGF5X3Jl c2V0X3dxKTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiA9ICgmYWNydGMtPmJhc2UpLT5k ZXY7CiAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwpAQCAtMzU4LDkgKzM1OCw5IEBA IHN0YXRpYyB2b2lkIGRybV91bmRlcmZsb3dfd3Eoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQog CiBzdGF0aWMgaXJxcmV0dXJuX3QgYWRlX2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEp CiB7Ci0Jc3RydWN0IGFkZV9jcnRjICphY3J0YyA9IGRhdGE7Ci0Jc3RydWN0IGFkZV9od19jdHgg KmN0eCA9IGFjcnRjLT5jdHg7Ci0Jc3RydWN0IGRybV9jcnRjICpjcnRjID0gJmFjcnRjLT5iYXNl OworCXN0cnVjdCBraXJpbl9jcnRjICprY3J0YyA9IGRhdGE7CisJc3RydWN0IGFkZV9od19jdHgg KmN0eCA9IGtjcnRjLT5od19jdHg7CisJc3RydWN0IGRybV9jcnRjICpjcnRjID0gJmtjcnRjLT5i YXNlOwogCXZvaWQgX19pb21lbSAqYmFzZSA9IGN0eC0+YmFzZTsKIAl1MzIgc3RhdHVzOwogCkBA IC0zNzcsNyArMzc3LDcgQEAgc3RhdGljIGlycXJldHVybl90IGFkZV9pcnFfaGFuZGxlcihpbnQg aXJxLCB2b2lkICpkYXRhKQogCQlhZGVfdXBkYXRlX2JpdHMoYmFzZSArIExESV9JTlRfQ0xSLCBV TkRFUkZMT1dfSU5UX0VOX09GU1QsCiAJCQkJTUFTSygxKSwgMSk7CiAJCURSTV9FUlJPUigiTERJ IHVuZGVyZmxvdyEiKTsKLQkJc2NoZWR1bGVfd29yaygmYWNydGMtPmRpc3BsYXlfcmVzZXRfd3Ep OworCQlzY2hlZHVsZV93b3JrKCZrY3J0Yy0+ZGlzcGxheV9yZXNldF93cSk7CiAJfQogCiAJcmV0 dXJuIElSUV9IQU5ETEVEOwpAQCAtNDk5LDExICs0OTksMTEgQEAgc3RhdGljIHZvaWQgYWRlX2R1 bXBfcmVncyh2b2lkIF9faW9tZW0gKmJhc2UpIHsgfQogc3RhdGljIHZvaWQgYWRlX2NydGNfYXRv bWljX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJICAgc3RydWN0IGRybV9jcnRj X3N0YXRlICpvbGRfc3RhdGUpCiB7Ci0Jc3RydWN0IGFkZV9jcnRjICphY3J0YyA9IHRvX2FkZV9j cnRjKGNydGMpOwotCXN0cnVjdCBhZGVfaHdfY3R4ICpjdHggPSBhY3J0Yy0+Y3R4OworCXN0cnVj dCBraXJpbl9jcnRjICprY3J0YyA9IHRvX2tpcmluX2NydGMoY3J0Yyk7CisJc3RydWN0IGFkZV9o d19jdHggKmN0eCA9IGtjcnRjLT5od19jdHg7CiAJaW50IHJldDsKIAotCWlmIChhY3J0Yy0+ZW5h YmxlKQorCWlmIChrY3J0Yy0+ZW5hYmxlKQogCQlyZXR1cm47CiAKIAlpZiAoIWN0eC0+cG93ZXJf b24pIHsKQEAgLTUxNiwyNyArNTE2LDI3IEBAIHN0YXRpYyB2b2lkIGFkZV9jcnRjX2F0b21pY19l bmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCWFkZV9kaXNwbGF5X2VuYWJsZShjdHgpOwog CWFkZV9kdW1wX3JlZ3MoY3R4LT5iYXNlKTsKIAlkcm1fY3J0Y192Ymxhbmtfb24oY3J0Yyk7Ci0J YWNydGMtPmVuYWJsZSA9IHRydWU7CisJa2NydGMtPmVuYWJsZSA9IHRydWU7CiB9CiAKIHN0YXRp YyB2b2lkIGFkZV9jcnRjX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJ CQkgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfc3RhdGUpCiB7Ci0Jc3RydWN0IGFkZV9j cnRjICphY3J0YyA9IHRvX2FkZV9jcnRjKGNydGMpOwotCXN0cnVjdCBhZGVfaHdfY3R4ICpjdHgg PSBhY3J0Yy0+Y3R4OworCXN0cnVjdCBraXJpbl9jcnRjICprY3J0YyA9IHRvX2tpcmluX2NydGMo Y3J0Yyk7CisJc3RydWN0IGFkZV9od19jdHggKmN0eCA9IGtjcnRjLT5od19jdHg7CiAKLQlpZiAo IWFjcnRjLT5lbmFibGUpCisJaWYgKCFrY3J0Yy0+ZW5hYmxlKQogCQlyZXR1cm47CiAKIAlkcm1f Y3J0Y192Ymxhbmtfb2ZmKGNydGMpOwogCWFkZV9wb3dlcl9kb3duKGN0eCk7Ci0JYWNydGMtPmVu YWJsZSA9IGZhbHNlOworCWtjcnRjLT5lbmFibGUgPSBmYWxzZTsKIH0KIAogc3RhdGljIHZvaWQg YWRlX2NydGNfbW9kZV9zZXRfbm9mYihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7Ci0Jc3RydWN0 IGFkZV9jcnRjICphY3J0YyA9IHRvX2FkZV9jcnRjKGNydGMpOwotCXN0cnVjdCBhZGVfaHdfY3R4 ICpjdHggPSBhY3J0Yy0+Y3R4OworCXN0cnVjdCBraXJpbl9jcnRjICprY3J0YyA9IHRvX2tpcmlu X2NydGMoY3J0Yyk7CisJc3RydWN0IGFkZV9od19jdHggKmN0eCA9IGtjcnRjLT5od19jdHg7CiAJ c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmY3J0Yy0+c3RhdGUtPm1vZGU7CiAJc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKmFkal9tb2RlID0gJmNydGMtPnN0YXRlLT5hZGp1c3RlZF9t b2RlOwogCkBAIC01NDgsOCArNTQ4LDggQEAgc3RhdGljIHZvaWQgYWRlX2NydGNfbW9kZV9zZXRf bm9mYihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiBzdGF0aWMgdm9pZCBhZGVfY3J0Y19hdG9taWNf YmVnaW4oc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJCSAgc3RydWN0IGRybV9jcnRjX3N0YXRl ICpvbGRfc3RhdGUpCiB7Ci0Jc3RydWN0IGFkZV9jcnRjICphY3J0YyA9IHRvX2FkZV9jcnRjKGNy dGMpOwotCXN0cnVjdCBhZGVfaHdfY3R4ICpjdHggPSBhY3J0Yy0+Y3R4OworCXN0cnVjdCBraXJp bl9jcnRjICprY3J0YyA9IHRvX2tpcmluX2NydGMoY3J0Yyk7CisJc3RydWN0IGFkZV9od19jdHgg KmN0eCA9IGtjcnRjLT5od19jdHg7CiAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAm Y3J0Yy0+c3RhdGUtPm1vZGU7CiAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkal9tb2RlID0g JmNydGMtPnN0YXRlLT5hZGp1c3RlZF9tb2RlOwogCkBAIC01NjIsMTMgKzU2MiwxMyBAQCBzdGF0 aWMgdm9pZCBhZGVfY3J0Y19hdG9taWNfZmx1c2goc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJ CSAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfc3RhdGUpCiAKIHsKLQlzdHJ1Y3QgYWRlX2Ny dGMgKmFjcnRjID0gdG9fYWRlX2NydGMoY3J0Yyk7Ci0Jc3RydWN0IGFkZV9od19jdHggKmN0eCA9 IGFjcnRjLT5jdHg7CisJc3RydWN0IGtpcmluX2NydGMgKmtjcnRjID0gdG9fa2lyaW5fY3J0Yyhj cnRjKTsKKwlzdHJ1Y3QgYWRlX2h3X2N0eCAqY3R4ID0ga2NydGMtPmh3X2N0eDsKIAlzdHJ1Y3Qg ZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudCA9IGNydGMtPnN0YXRlLT5ldmVudDsKIAl2 b2lkIF9faW9tZW0gKmJhc2UgPSBjdHgtPmJhc2U7CiAKIAkvKiBvbmx5IGNydGMgaXMgZW5hYmxl ZCByZWdzIHRha2UgZWZmZWN0ICovCi0JaWYgKGFjcnRjLT5lbmFibGUpIHsKKwlpZiAoa2NydGMt PmVuYWJsZSkgewogCQlhZGVfZHVtcF9yZWdzKGJhc2UpOwogCQkvKiBmbHVzaCBhZGUgcmVnaXN0 ZXJzICovCiAJCXdyaXRlbChBREVfRU5BQkxFLCBiYXNlICsgQURFX0VOKTsKQEAgLTEwMDcsNyAr MTAwNyw3IEBAIHN0YXRpYyBpbnQgYWRlX2RybV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBk ZXYpOwogCXN0cnVjdCBhZGVfZGF0YSAqYWRlOwogCXN0cnVjdCBhZGVfaHdfY3R4ICpjdHg7Ci0J c3RydWN0IGFkZV9jcnRjICphY3J0YzsKKwlzdHJ1Y3Qga2lyaW5fY3J0YyAqa2NydGM7CiAJc3Ry dWN0IGtpcmluX3BsYW5lICprcGxhbmU7CiAJZW51bSBkcm1fcGxhbmVfdHlwZSB0eXBlOwogCWlu dCByZXQ7CkBAIC0xMDIxLDggKzEwMjEsOCBAQCBzdGF0aWMgaW50IGFkZV9kcm1faW5pdChzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGFk ZSk7CiAKIAljdHggPSAmYWRlLT5jdHg7Ci0JYWNydGMgPSAmYWRlLT5hY3J0YzsKLQlhY3J0Yy0+ Y3R4ID0gY3R4OworCWtjcnRjID0gJmFkZS0+Y3J0YzsKKwlrY3J0Yy0+aHdfY3R4ID0gY3R4Owog CiAJcmV0ID0gYWRlX2R0c19wYXJzZShwZGV2LCBjdHgpOwogCWlmIChyZXQpCkBAIC0xMDQ2LDE1 ICsxMDQ2LDE1IEBAIHN0YXRpYyBpbnQgYWRlX2RybV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCiAJfQogCiAJLyogY3J0YyBpbml0ICovCi0JcmV0ID0gYWRlX2NydGNfaW5pdChk ZXYsICZhY3J0Yy0+YmFzZSwgJmFkZS0+cGxhbmVzW1BSSU1BUllfQ0hdLmJhc2UpOworCXJldCA9 IGFkZV9jcnRjX2luaXQoZGV2LCAma2NydGMtPmJhc2UsICZhZGUtPnBsYW5lc1tQUklNQVJZX0NI XS5iYXNlKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCiAJLyogdmJsYW5rIGlycSBpbml0 ICovCiAJcmV0ID0gZGV2bV9yZXF1ZXN0X2lycShkZXYtPmRldiwgY3R4LT5pcnEsIGFkZV9pcnFf aGFuZGxlciwKLQkJCSAgICAgICBJUlFGX1NIQVJFRCwgZGV2LT5kcml2ZXItPm5hbWUsIGFjcnRj KTsKKwkJCSAgICAgICBJUlFGX1NIQVJFRCwgZGV2LT5kcml2ZXItPm5hbWUsIGtjcnRjKTsKIAot CUlOSVRfV09SSygmYWNydGMtPmRpc3BsYXlfcmVzZXRfd3EsIGRybV91bmRlcmZsb3dfd3EpOwor CUlOSVRfV09SSygma2NydGMtPmRpc3BsYXlfcmVzZXRfd3EsIGRybV91bmRlcmZsb3dfd3EpOwog CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs