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.7 required=3.0 tests=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 50D40C432C3 for ; Thu, 14 Nov 2019 05:56:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 44764206D6 for ; Thu, 14 Nov 2019 05:56:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725914AbfKNF4t (ORCPT ); Thu, 14 Nov 2019 00:56:49 -0500 Received: from alexa-out-blr-01.qualcomm.com ([103.229.18.197]:61117 "EHLO alexa-out-blr-01.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725601AbfKNF4t (ORCPT ); Thu, 14 Nov 2019 00:56:49 -0500 Received: from ironmsg02-blr.qualcomm.com ([10.86.208.131]) by alexa-out-blr-01.qualcomm.com with ESMTP/TLS/AES256-SHA; 14 Nov 2019 11:26:47 +0530 IronPort-SDR: 2nbQ2jeXmIDMIuV9PdKaObubevsHgkvMek8UmORJGLDFKiqdXwYWpuMR+FxL1O8fuHeonkTB0f YruQ10YIxz6esnjt35YhgzY+03/X3VzP3ucBfmR0ecGiCRpb3eLGIiE8/vOcaLiNEZblkvIe12 KlE6BUOMqUaWa8hKjREg6Ndo0jVcaz5IP1IBw47fk1z5b/wXGyaONPtk2tg+Kph8uc8s3QS7AY 5qP3/K85+0TJvtLjnTYWEwr5FJjzWC8Wo141JMUNLKzV8ZYbFFTulDNysINPTWxe3rvq9/ND62 FrZRpwVsBqYt833/xodjkvzr Received: from dhar-linux.qualcomm.com ([10.204.66.25]) by ironmsg02-blr.qualcomm.com with ESMTP; 14 Nov 2019 11:26:45 +0530 Received: by dhar-linux.qualcomm.com (Postfix, from userid 2306995) id 5D0153AE6; Thu, 14 Nov 2019 11:26:44 +0530 (IST) From: Shubhashree Dhar To: dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org Cc: Shubhashree Dhar , linux-kernel@vger.kernel.org, robdclark@gmail.com, seanpaul@chromium.org, hoegsberg@chromium.org, abhinavk@codeaurora.org, jsanka@codeaurora.org, chandanu@codeaurora.org, nganji@codeaurora.org Subject: [v2] msm: disp: dpu1: add support to access hw irqs regs depending on revision Date: Thu, 14 Nov 2019 11:26:16 +0530 Message-Id: <1573710976-27551-1-git-send-email-dhar@codeaurora.org> X-Mailer: git-send-email 1.9.1 Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Current code assumes that all the irqs registers offsets can be accessed in all the hw revisions; this is not the case for some targets that should not access some of the irq registers. This change adds the support to selectively remove the irqs that are not supported in some of the hw revisions. Change-Id: I6052b8237b703a1a9edd53893e04f7bd72223da1 Signed-off-by: Shubhashree Dhar --- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 1 + drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h | 3 +++ drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.c | 22 +++++++++++++++++----- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.h | 1 + 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c index 04c8c44..357e15b 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c @@ -421,6 +421,7 @@ static void sdm845_cfg_init(struct dpu_mdss_cfg *dpu_cfg) .reg_dma_count = 1, .dma_cfg = sdm845_regdma, .perf = sdm845_perf_data, + .mdss_irqs[0] = 0x3ff, }; } diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h index ec76b868..def8a3f 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h @@ -646,6 +646,7 @@ struct dpu_perf_cfg { * @dma_formats Supported formats for dma pipe * @cursor_formats Supported formats for cursor pipe * @vig_formats Supported formats for vig pipe + * @mdss_irqs Bitmap with the irqs supported by the target */ struct dpu_mdss_cfg { u32 hwversion; @@ -684,6 +685,8 @@ struct dpu_mdss_cfg { struct dpu_format_extended *dma_formats; struct dpu_format_extended *cursor_formats; struct dpu_format_extended *vig_formats; + + DECLARE_BITMAP(mdss_irqs, BITS_PER_BYTE * sizeof(long)); }; struct dpu_mdss_hw_cfg_handler { diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.c index 8bfa7d0..2a3634c 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.c @@ -800,7 +800,8 @@ static void dpu_hw_intr_dispatch_irq(struct dpu_hw_intr *intr, start_idx = reg_idx * 32; end_idx = start_idx + 32; - if (start_idx >= ARRAY_SIZE(dpu_irq_map) || + if (!test_bit(reg_idx, &intr->irq_mask) || + start_idx >= ARRAY_SIZE(dpu_irq_map) || end_idx > ARRAY_SIZE(dpu_irq_map)) continue; @@ -955,8 +956,11 @@ static int dpu_hw_intr_clear_irqs(struct dpu_hw_intr *intr) if (!intr) return -EINVAL; - for (i = 0; i < ARRAY_SIZE(dpu_intr_set); i++) - DPU_REG_WRITE(&intr->hw, dpu_intr_set[i].clr_off, 0xffffffff); + for (i = 0; i < ARRAY_SIZE(dpu_intr_set); i++) { + if(test_bit(i, &intr->irq_mask)) + DPU_REG_WRITE(&intr->hw, + dpu_intr_set[i].clr_off, 0xffffffff); + } /* ensure register writes go through */ wmb(); @@ -971,8 +975,11 @@ static int dpu_hw_intr_disable_irqs(struct dpu_hw_intr *intr) if (!intr) return -EINVAL; - for (i = 0; i < ARRAY_SIZE(dpu_intr_set); i++) - DPU_REG_WRITE(&intr->hw, dpu_intr_set[i].en_off, 0x00000000); + for (i = 0; i < ARRAY_SIZE(dpu_intr_set); i++) { + if(test_bit(i, &intr->irq_mask)) + DPU_REG_WRITE(&intr->hw, + dpu_intr_set[i].en_off, 0x00000000); + } /* ensure register writes go through */ wmb(); @@ -991,6 +998,10 @@ static void dpu_hw_intr_get_interrupt_statuses(struct dpu_hw_intr *intr) spin_lock_irqsave(&intr->irq_lock, irq_flags); for (i = 0; i < ARRAY_SIZE(dpu_intr_set); i++) { + + if(!test_bit(i, &intr->irq_mask)) + continue; + /* Read interrupt status */ intr->save_irq_status[i] = DPU_REG_READ(&intr->hw, dpu_intr_set[i].status_off); @@ -1115,6 +1126,7 @@ struct dpu_hw_intr *dpu_hw_intr_init(void __iomem *addr, return ERR_PTR(-ENOMEM); } + intr->irq_mask = m->mdss_irqs[0]; spin_lock_init(&intr->irq_lock); return intr; diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.h index 4edcf40..fc9c986 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.h @@ -187,6 +187,7 @@ struct dpu_hw_intr { u32 *save_irq_status; u32 irq_idx_tbl_size; spinlock_t irq_lock; + unsigned long irq_mask; }; /** -- 1.9.1 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=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, 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 35C59C432C3 for ; Thu, 14 Nov 2019 08:09:09 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 203AA20718 for ; Thu, 14 Nov 2019 08:09:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 203AA20718 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B11606E343; Thu, 14 Nov 2019 08:08:01 +0000 (UTC) Received: from alexa-out-blr-02.qualcomm.com (alexa-out-blr-02.qualcomm.com [103.229.18.198]) by gabe.freedesktop.org (Postfix) with ESMTPS id B721A6E0A0; Thu, 14 Nov 2019 05:56:48 +0000 (UTC) Received: from ironmsg02-blr.qualcomm.com ([10.86.208.131]) by alexa-out-blr-02.qualcomm.com with ESMTP/TLS/AES256-SHA; 14 Nov 2019 11:26:47 +0530 IronPort-SDR: 2nbQ2jeXmIDMIuV9PdKaObubevsHgkvMek8UmORJGLDFKiqdXwYWpuMR+FxL1O8fuHeonkTB0f YruQ10YIxz6esnjt35YhgzY+03/X3VzP3ucBfmR0ecGiCRpb3eLGIiE8/vOcaLiNEZblkvIe12 KlE6BUOMqUaWa8hKjREg6Ndo0jVcaz5IP1IBw47fk1z5b/wXGyaONPtk2tg+Kph8uc8s3QS7AY 5qP3/K85+0TJvtLjnTYWEwr5FJjzWC8Wo141JMUNLKzV8ZYbFFTulDNysINPTWxe3rvq9/ND62 FrZRpwVsBqYt833/xodjkvzr Received: from dhar-linux.qualcomm.com ([10.204.66.25]) by ironmsg02-blr.qualcomm.com with ESMTP; 14 Nov 2019 11:26:45 +0530 Received: by dhar-linux.qualcomm.com (Postfix, from userid 2306995) id 5D0153AE6; Thu, 14 Nov 2019 11:26:44 +0530 (IST) From: Shubhashree Dhar To: dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org Subject: [v2] msm: disp: dpu1: add support to access hw irqs regs depending on revision Date: Thu, 14 Nov 2019 11:26:16 +0530 Message-Id: <1573710976-27551-1-git-send-email-dhar@codeaurora.org> X-Mailer: git-send-email 1.9.1 X-Mailman-Approved-At: Thu, 14 Nov 2019 08:07:50 +0000 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Shubhashree Dhar , linux-kernel@vger.kernel.org, abhinavk@codeaurora.org, seanpaul@chromium.org, hoegsberg@chromium.org, chandanu@codeaurora.org MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Message-ID: <20191114055616.BPzGxVJUCgjSb4o-kHViKuCSQaUUJgVtgVS-_bV76Wg@z> Q3VycmVudCBjb2RlIGFzc3VtZXMgdGhhdCBhbGwgdGhlIGlycXMgcmVnaXN0ZXJzIG9mZnNldHMg Y2FuIGJlCmFjY2Vzc2VkIGluIGFsbCB0aGUgaHcgcmV2aXNpb25zOyB0aGlzIGlzIG5vdCB0aGUg Y2FzZSBmb3Igc29tZQp0YXJnZXRzIHRoYXQgc2hvdWxkIG5vdCBhY2Nlc3Mgc29tZSBvZiB0aGUg aXJxIHJlZ2lzdGVycy4KVGhpcyBjaGFuZ2UgYWRkcyB0aGUgc3VwcG9ydCB0byBzZWxlY3RpdmVs eSByZW1vdmUgdGhlIGlycXMgdGhhdAphcmUgbm90IHN1cHBvcnRlZCBpbiBzb21lIG9mIHRoZSBo dyByZXZpc2lvbnMuCgpDaGFuZ2UtSWQ6IEk2MDUyYjgyMzdiNzAzYTFhOWVkZDUzODkzZTA0Zjdi ZDcyMjIzZGExClNpZ25lZC1vZmYtYnk6IFNodWJoYXNocmVlIERoYXIgPGRoYXJAY29kZWF1cm9y YS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cu YyAgICB8ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9n LmggICAgfCAgMyArKysKIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19pbnRl cnJ1cHRzLmMgfCAyMiArKysrKysrKysrKysrKysrKy0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5oIHwgIDEgKwogNCBmaWxlcyBjaGFuZ2VkLCAy MiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jCmluZGV4IDA0YzhjNDQuLjM1N2UxNWIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuYwpAQCAtNDIx LDYgKzQyMSw3IEBAIHN0YXRpYyB2b2lkIHNkbTg0NV9jZmdfaW5pdChzdHJ1Y3QgZHB1X21kc3Nf Y2ZnICpkcHVfY2ZnKQogCQkucmVnX2RtYV9jb3VudCA9IDEsCiAJCS5kbWFfY2ZnID0gc2RtODQ1 X3JlZ2RtYSwKIAkJLnBlcmYgPSBzZG04NDVfcGVyZl9kYXRhLAorCQkubWRzc19pcnFzWzBdID0g MHgzZmYsCiAJfTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2h3X2NhdGFsb2cuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9o d19jYXRhbG9nLmgKaW5kZXggZWM3NmI4NjguLmRlZjhhM2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuaApAQCAtNjQ2LDYgKzY0Niw3IEBAIHN0 cnVjdCBkcHVfcGVyZl9jZmcgewogICogQGRtYV9mb3JtYXRzICAgICAgICBTdXBwb3J0ZWQgZm9y bWF0cyBmb3IgZG1hIHBpcGUKICAqIEBjdXJzb3JfZm9ybWF0cyAgICAgU3VwcG9ydGVkIGZvcm1h dHMgZm9yIGN1cnNvciBwaXBlCiAgKiBAdmlnX2Zvcm1hdHMgICAgICAgIFN1cHBvcnRlZCBmb3Jt YXRzIGZvciB2aWcgcGlwZQorICogQG1kc3NfaXJxcyAgICAgICAgICBCaXRtYXAgd2l0aCB0aGUg aXJxcyBzdXBwb3J0ZWQgYnkgdGhlIHRhcmdldAogICovCiBzdHJ1Y3QgZHB1X21kc3NfY2ZnIHsK IAl1MzIgaHd2ZXJzaW9uOwpAQCAtNjg0LDYgKzY4NSw4IEBAIHN0cnVjdCBkcHVfbWRzc19jZmcg ewogCXN0cnVjdCBkcHVfZm9ybWF0X2V4dGVuZGVkICpkbWFfZm9ybWF0czsKIAlzdHJ1Y3QgZHB1 X2Zvcm1hdF9leHRlbmRlZCAqY3Vyc29yX2Zvcm1hdHM7CiAJc3RydWN0IGRwdV9mb3JtYXRfZXh0 ZW5kZWQgKnZpZ19mb3JtYXRzOworCisJREVDTEFSRV9CSVRNQVAobWRzc19pcnFzLCBCSVRTX1BF Ul9CWVRFICogc2l6ZW9mKGxvbmcpKTsKIH07CiAKIHN0cnVjdCBkcHVfbWRzc19od19jZmdfaGFu ZGxlciB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdf aW50ZXJydXB0cy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2ludGVy cnVwdHMuYwppbmRleCA4YmZhN2QwLi4yYTM2MzRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9od19pbnRlcnJ1cHRzLmMKQEAgLTgwMCw3ICs4MDAsOCBAQCBz dGF0aWMgdm9pZCBkcHVfaHdfaW50cl9kaXNwYXRjaF9pcnEoc3RydWN0IGRwdV9od19pbnRyICpp bnRyLAogCQlzdGFydF9pZHggPSByZWdfaWR4ICogMzI7CiAJCWVuZF9pZHggPSBzdGFydF9pZHgg KyAzMjsKIAotCQlpZiAoc3RhcnRfaWR4ID49IEFSUkFZX1NJWkUoZHB1X2lycV9tYXApIHx8CisJ CWlmICghdGVzdF9iaXQocmVnX2lkeCwgJmludHItPmlycV9tYXNrKSB8fAorCQkJc3RhcnRfaWR4 ID49IEFSUkFZX1NJWkUoZHB1X2lycV9tYXApIHx8CiAJCQkJZW5kX2lkeCA+IEFSUkFZX1NJWkUo ZHB1X2lycV9tYXApKQogCQkJY29udGludWU7CiAKQEAgLTk1NSw4ICs5NTYsMTEgQEAgc3RhdGlj IGludCBkcHVfaHdfaW50cl9jbGVhcl9pcnFzKHN0cnVjdCBkcHVfaHdfaW50ciAqaW50cikKIAlp ZiAoIWludHIpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ WkUoZHB1X2ludHJfc2V0KTsgaSsrKQotCQlEUFVfUkVHX1dSSVRFKCZpbnRyLT5odywgZHB1X2lu dHJfc2V0W2ldLmNscl9vZmYsIDB4ZmZmZmZmZmYpOworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9T SVpFKGRwdV9pbnRyX3NldCk7IGkrKykgeworCQlpZih0ZXN0X2JpdChpLCAmaW50ci0+aXJxX21h c2spKQorCQkJRFBVX1JFR19XUklURSgmaW50ci0+aHcsCisJCQkJCWRwdV9pbnRyX3NldFtpXS5j bHJfb2ZmLCAweGZmZmZmZmZmKTsKKwl9CiAKIAkvKiBlbnN1cmUgcmVnaXN0ZXIgd3JpdGVzIGdv IHRocm91Z2ggKi8KIAl3bWIoKTsKQEAgLTk3MSw4ICs5NzUsMTEgQEAgc3RhdGljIGludCBkcHVf aHdfaW50cl9kaXNhYmxlX2lycXMoc3RydWN0IGRwdV9od19pbnRyICppbnRyKQogCWlmICghaW50 cikKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShkcHVf aW50cl9zZXQpOyBpKyspCi0JCURQVV9SRUdfV1JJVEUoJmludHItPmh3LCBkcHVfaW50cl9zZXRb aV0uZW5fb2ZmLCAweDAwMDAwMDAwKTsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShkcHVf aW50cl9zZXQpOyBpKyspIHsKKwkJaWYodGVzdF9iaXQoaSwgJmludHItPmlycV9tYXNrKSkKKwkJ CURQVV9SRUdfV1JJVEUoJmludHItPmh3LAorCQkJCQlkcHVfaW50cl9zZXRbaV0uZW5fb2ZmLCAw eDAwMDAwMDAwKTsKKwl9CiAKIAkvKiBlbnN1cmUgcmVnaXN0ZXIgd3JpdGVzIGdvIHRocm91Z2gg Ki8KIAl3bWIoKTsKQEAgLTk5MSw2ICs5OTgsMTAgQEAgc3RhdGljIHZvaWQgZHB1X2h3X2ludHJf Z2V0X2ludGVycnVwdF9zdGF0dXNlcyhzdHJ1Y3QgZHB1X2h3X2ludHIgKmludHIpCiAKIAlzcGlu X2xvY2tfaXJxc2F2ZSgmaW50ci0+aXJxX2xvY2ssIGlycV9mbGFncyk7CiAJZm9yIChpID0gMDsg aSA8IEFSUkFZX1NJWkUoZHB1X2ludHJfc2V0KTsgaSsrKSB7CisKKwkJaWYoIXRlc3RfYml0KGks ICZpbnRyLT5pcnFfbWFzaykpCisJCQljb250aW51ZTsKKwogCQkvKiBSZWFkIGludGVycnVwdCBz dGF0dXMgKi8KIAkJaW50ci0+c2F2ZV9pcnFfc3RhdHVzW2ldID0gRFBVX1JFR19SRUFEKCZpbnRy LT5odywKIAkJCQlkcHVfaW50cl9zZXRbaV0uc3RhdHVzX29mZik7CkBAIC0xMTE1LDYgKzExMjYs NyBAQCBzdHJ1Y3QgZHB1X2h3X2ludHIgKmRwdV9od19pbnRyX2luaXQodm9pZCBfX2lvbWVtICph ZGRyLAogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAl9CiAKKwlpbnRyLT5pcnFfbWFzayA9 IG0tPm1kc3NfaXJxc1swXTsKIAlzcGluX2xvY2tfaW5pdCgmaW50ci0+aXJxX2xvY2spOwogCiAJ cmV0dXJuIGludHI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaHdfaW50ZXJydXB0cy5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3 X2ludGVycnVwdHMuaAppbmRleCA0ZWRjZjQwLi5mYzljOTg2IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19pbnRlcnJ1cHRzLmgKQEAgLTE4Nyw2ICsxODcs NyBAQCBzdHJ1Y3QgZHB1X2h3X2ludHIgewogCXUzMiAqc2F2ZV9pcnFfc3RhdHVzOwogCXUzMiBp cnFfaWR4X3RibF9zaXplOwogCXNwaW5sb2NrX3QgaXJxX2xvY2s7CisJdW5zaWduZWQgbG9uZyBp cnFfbWFzazsKIH07CiAKIC8qKgotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbA==