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, UNPARSEABLE_RELAY,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 24A51CA9EA0 for ; Mon, 28 Oct 2019 08:29:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id EEE1021783 for ; Mon, 28 Oct 2019 08:29:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387536AbfJ1I3I (ORCPT ); Mon, 28 Oct 2019 04:29:08 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:20783 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S2387509AbfJ1I3G (ORCPT ); Mon, 28 Oct 2019 04:29:06 -0400 X-UUID: bd541bdb58784e52979dfcd7de5b0ca1-20191028 X-UUID: bd541bdb58784e52979dfcd7de5b0ca1-20191028 Received: from mtkexhb01.mediatek.inc [(172.21.101.102)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1040057248; Mon, 28 Oct 2019 16:29:03 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Mon, 28 Oct 2019 16:29:01 +0800 Received: from localhost.localdomain (10.15.20.246) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Mon, 28 Oct 2019 16:29:00 +0800 From: Chao Hao To: Joerg Roedel , Rob Herring , Matthias Brugger CC: , , , , , , Jun Yan , Cui Zhang , Guangming Cao , Yong Wu , Anan Sun , Miles Chen , Chao Hao Subject: [PATCH 10/13] iommu/mediatek: Remove mtk_iommu_get_m4u_data api Date: Mon, 28 Oct 2019 16:28:17 +0800 Message-ID: <20191028082820.20221-11-chao.hao@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20191028082820.20221-1-chao.hao@mediatek.com> References: <20191028082820.20221-1-chao.hao@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Based on previous modifications in the patchset, A mtk_iommu_data structure represent a iommu, we will add mtk_iommu_data to mtk_iommu_domain to show the iommu which mtk_iommu_domain belongs to, so we can get mtk_iommu_data by mtk_iommu_domain, don't use to "mtk_iommu_get_m4u_data" any more. Besides, there is a small SW adjustment, we will move alloc iommu_group into "create_iommu_group" Signed-off-by: Chao Hao --- drivers/iommu/mtk_iommu.c | 74 +++++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c index 42fad1cf73f3..8c06d2a793a7 100644 --- a/drivers/iommu/mtk_iommu.c +++ b/drivers/iommu/mtk_iommu.c @@ -121,6 +121,7 @@ struct mtk_iommu_domain { u32 id; struct iommu_domain domain; struct iommu_group *group; + struct mtk_iommu_data *data; struct list_head list; }; @@ -168,23 +169,6 @@ static LIST_HEAD(m4ulist); /* List all the M4U HWs */ #define for_each_m4u(data) list_for_each_entry(data, &m4ulist, list) -/* - * There may be 1 or 2 M4U HWs, But we always expect they are in the same domain - * for the performance. - * - * Here always return the mtk_iommu_data of the first probed M4U where the - * iommu domain information is recorded. - */ -static struct mtk_iommu_data *mtk_iommu_get_m4u_data(void) -{ - struct mtk_iommu_data *data; - - for_each_m4u(data) - return data; - - return NULL; -} - static u32 get_domain_id(struct mtk_iommu_data *data, u32 portid) { u32 dom_id = 0; @@ -403,6 +387,27 @@ static void mtk_iommu_config(struct mtk_iommu_data *data, } } +static struct iommu_group *create_iommu_group(struct mtk_iommu_data *data, + struct device *dev) +{ + struct mtk_iommu_pgtable *pgtable = mtk_iommu_get_pgtable(); + + /* Prepare for allocate mtk_iommu_domain */ + data->m4u_group = mtk_iommu_get_group(dev); + if (!data->m4u_group) { + data->m4u_group = iommu_group_alloc(); + if (IS_ERR(data->m4u_group)) + dev_err(dev, "Failed to allocate M4U IOMMU group\n"); + } else { + iommu_group_ref_get(data->m4u_group); + } + + /* save the latest init device */ + pgtable->init_dev = dev; + + return data->m4u_group; +} + static struct mtk_iommu_pgtable *create_pgtable(struct mtk_iommu_data *data) { struct mtk_iommu_pgtable *pgtable; @@ -468,7 +473,7 @@ static int mtk_iommu_attach_pgtable(struct mtk_iommu_data *data, static struct iommu_domain *mtk_iommu_domain_alloc(unsigned type) { struct mtk_iommu_pgtable *pgtable = mtk_iommu_get_pgtable(); - struct mtk_iommu_data *data = mtk_iommu_get_m4u_data(); + struct mtk_iommu_data *data; struct mtk_iommu_domain *dom; struct device *dev; @@ -477,6 +482,7 @@ static struct iommu_domain *mtk_iommu_domain_alloc(unsigned type) if (pgtable) { dev = pgtable->init_dev; + data = dev_iommu_fwspec_get(dev)->iommu_priv; if (!data->m4u_group) { pr_err("%s, find m4u_group failed\n", __func__); return NULL; @@ -497,6 +503,7 @@ static struct iommu_domain *mtk_iommu_domain_alloc(unsigned type) if (dom->id >= data->plat_data->dom_cnt) goto put_dma_cookie; + dom->data = data; dom->group = data->m4u_group; /* Update our support page sizes bitmap */ dom->domain.pgsize_bitmap = pgtable->cfg.pgsize_bitmap; @@ -554,7 +561,8 @@ static int mtk_iommu_map(struct iommu_domain *domain, unsigned long iova, phys_addr_t paddr, size_t size, int prot) { struct mtk_iommu_pgtable *pgtable = mtk_iommu_get_pgtable(); - struct mtk_iommu_data *data = mtk_iommu_get_m4u_data(); + struct mtk_iommu_domain *dom = to_mtk_domain(domain); + struct mtk_iommu_data *data = dom->data; /* The "4GB mode" M4U physically can not use the lower remap of Dram. */ if (data->enable_4GB) @@ -575,27 +583,30 @@ static size_t mtk_iommu_unmap(struct iommu_domain *domain, static void mtk_iommu_flush_iotlb_all(struct iommu_domain *domain) { - mtk_iommu_tlb_flush_all(mtk_iommu_get_m4u_data()); + struct mtk_iommu_domain *dom = to_mtk_domain(domain); + + mtk_iommu_tlb_flush_all(dom->data); } static void mtk_iommu_iotlb_sync(struct iommu_domain *domain, struct iommu_iotlb_gather *gather) { - struct mtk_iommu_data *data = mtk_iommu_get_m4u_data(); + struct mtk_iommu_domain *dom = to_mtk_domain(domain); size_t length = gather->end - gather->start; if (gather->start == ULONG_MAX) return; mtk_iommu_tlb_flush_range_sync(gather->start, length, gather->pgsize, - data); + dom->data); } static phys_addr_t mtk_iommu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova) { struct mtk_iommu_pgtable *pgtable = mtk_iommu_get_pgtable(); - struct mtk_iommu_data *data = mtk_iommu_get_m4u_data(); + struct mtk_iommu_domain *dom = to_mtk_domain(domain); + struct mtk_iommu_data *data = dom->data; phys_addr_t pa; pa = pgtable->iop->iova_to_phys(pgtable->iop, iova); @@ -642,7 +653,7 @@ static void mtk_iommu_remove_device(struct device *dev) static struct iommu_group *mtk_iommu_device_group(struct device *dev) { - struct mtk_iommu_data *data = mtk_iommu_get_m4u_data(); + struct mtk_iommu_data *data = dev->iommu_fwspec->iommu_priv; struct mtk_iommu_pgtable *pgtable; int ret = 0; @@ -658,20 +669,9 @@ static struct iommu_group *mtk_iommu_device_group(struct device *dev) } } - /* All the client devices are in the same m4u iommu-group */ - data->m4u_group = mtk_iommu_get_group(dev); - if (!data->m4u_group) { - data->m4u_group = iommu_group_alloc(); - if (IS_ERR(data->m4u_group)) - dev_err(dev, "Failed to allocate M4U IOMMU group\n"); - } else { - iommu_group_ref_get(data->m4u_group); - } + dev_info(data->dev, "%s, init data:%d\n", __func__, data->m4u_id); - /* save the latest init device */ - pgtable->init_dev = dev; - - return data->m4u_group; + return create_iommu_group(data, dev); } static int mtk_iommu_of_xlate(struct device *dev, struct of_phandle_args *args) -- 2.18.0 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, HTML_MESSAGE,INCLUDES_PATCH,MAILING_LIST_MULTI,MIME_BASE64_TEXT,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,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 797D6CA9EC0 for ; Mon, 28 Oct 2019 11:21:52 +0000 (UTC) Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (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 50D022086D for ; Mon, 28 Oct 2019 11:21:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 50D022086D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=iommu-bounces@lists.linux-foundation.org Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id A1E921135; Mon, 28 Oct 2019 11:21:03 +0000 (UTC) Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 3CBC9B09 for ; Mon, 28 Oct 2019 08:29:07 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mailgw01.mediatek.com (unknown [210.61.82.183]) by smtp1.linuxfoundation.org (Postfix) with ESMTP id C19AE42D for ; Mon, 28 Oct 2019 08:29:05 +0000 (UTC) X-UUID: bd541bdb58784e52979dfcd7de5b0ca1-20191028 X-UUID: bd541bdb58784e52979dfcd7de5b0ca1-20191028 Received: from mtkexhb01.mediatek.inc [(172.21.101.102)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1040057248; Mon, 28 Oct 2019 16:29:03 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Mon, 28 Oct 2019 16:29:01 +0800 Received: from localhost.localdomain (10.15.20.246) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Mon, 28 Oct 2019 16:29:00 +0800 From: Chao Hao To: Joerg Roedel , Rob Herring , Matthias Brugger Subject: [PATCH 10/13] iommu/mediatek: Remove mtk_iommu_get_m4u_data api Date: Mon, 28 Oct 2019 16:28:17 +0800 Message-ID: <20191028082820.20221-11-chao.hao@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20191028082820.20221-1-chao.hao@mediatek.com> References: <20191028082820.20221-1-chao.hao@mediatek.com> MIME-Version: 1.0 X-Mailman-Approved-At: Mon, 28 Oct 2019 11:21:00 +0000 Cc: Anan Sun , devicetree@vger.kernel.org, Cui Zhang , Jun Yan , wsd_upstream@mediatek.com, linux-kernel@vger.kernel.org, Chao Hao , iommu@lists.linux-foundation.org, linux-mediatek@lists.infradead.org, Miles Chen , linux-arm-kernel@lists.infradead.org, Guangming Cao X-BeenThere: iommu@lists.linux-foundation.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Development issues for Linux IOMMU support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============8033290489566651919==" Sender: iommu-bounces@lists.linux-foundation.org Errors-To: iommu-bounces@lists.linux-foundation.org --===============8033290489566651919== Content-Type: multipart/alternative; boundary="__=_Part_Boundary_007_213290793.418906039" --__=_Part_Boundary_007_213290793.418906039 Content-Type: text/html Content-Transfer-Encoding: base64 PHByZT4NCkJhc2VkIG9uIHByZXZpb3VzIG1vZGlmaWNhdGlvbnMgaW4gdGhlIHBhdGNoc2V0LCBB IG10a19pb21tdV9kYXRhDQpzdHJ1Y3R1cmUgcmVwcmVzZW50IGEgaW9tbXUsIHdlIHdpbGwgYWRk IG10a19pb21tdV9kYXRhIHRvIG10a19pb21tdV9kb21haW4NCnRvIHNob3cgdGhlIGlvbW11IHdo aWNoIG10a19pb21tdV9kb21haW4gYmVsb25ncyB0bywgc28gd2UgY2FuIGdldA0KbXRrX2lvbW11 X2RhdGEgYnkgbXRrX2lvbW11X2RvbWFpbiwgZG9uJiMzOTt0IHVzZSB0byAmcXVvdDttdGtfaW9t bXVfZ2V0X200dV9kYXRhJnF1b3Q7DQphbnkgbW9yZS4NCg0KQmVzaWRlcywgdGhlcmUgaXMgYSBz bWFsbCBTVyBhZGp1c3RtZW50LCB3ZSB3aWxsIG1vdmUgYWxsb2MgaW9tbXVfZ3JvdXANCmludG8g JnF1b3Q7Y3JlYXRlX2lvbW11X2dyb3VwJnF1b3Q7DQoNClNpZ25lZC1vZmYtYnk6IENoYW8gSGFv ICZsdDtjaGFvLmhhb0BtZWRpYXRlay5jb20mZ3Q7DQotLS0NCiBkcml2ZXJzL2lvbW11L210a19p b21tdS5jIHwgNzQgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tDQogMSBm aWxlIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9pb21tdS9tdGtfaW9tbXUuYyBiL2RyaXZlcnMvaW9tbXUvbXRrX2lvbW11 LmMNCmluZGV4IDQyZmFkMWNmNzNmMy4uOGMwNmQyYTc5M2E3IDEwMDY0NA0KLS0tIGEvZHJpdmVy cy9pb21tdS9tdGtfaW9tbXUuYw0KKysrIGIvZHJpdmVycy9pb21tdS9tdGtfaW9tbXUuYw0KQEAg LTEyMSw2ICsxMjEsNyBAQCBzdHJ1Y3QgbXRrX2lvbW11X2RvbWFpbiB7DQogCXUzMgkJCQlpZDsN CiAJc3RydWN0IGlvbW11X2RvbWFpbgkJZG9tYWluOw0KIAlzdHJ1Y3QgaW9tbXVfZ3JvdXAJCSpn cm91cDsNCisJc3RydWN0IG10a19pb21tdV9kYXRhCQkqZGF0YTsNCiAJc3RydWN0IGxpc3RfaGVh ZAkJbGlzdDsNCiB9Ow0KIA0KQEAgLTE2OCwyMyArMTY5LDYgQEAgc3RhdGljIExJU1RfSEVBRCht NHVsaXN0KTsJLyogTGlzdCBhbGwgdGhlIE00VSBIV3MgKi8NCiANCiAjZGVmaW5lIGZvcl9lYWNo X200dShkYXRhKQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRhdGEsICZhbXA7bTR1bGlzdCwgbGlzdCkN CiANCi0vKg0KLSAqIFRoZXJlIG1heSBiZSAxIG9yIDIgTTRVIEhXcywgQnV0IHdlIGFsd2F5cyBl eHBlY3QgdGhleSBhcmUgaW4gdGhlIHNhbWUgZG9tYWluDQotICogZm9yIHRoZSBwZXJmb3JtYW5j ZS4NCi0gKg0KLSAqIEhlcmUgYWx3YXlzIHJldHVybiB0aGUgbXRrX2lvbW11X2RhdGEgb2YgdGhl IGZpcnN0IHByb2JlZCBNNFUgd2hlcmUgdGhlDQotICogaW9tbXUgZG9tYWluIGluZm9ybWF0aW9u IGlzIHJlY29yZGVkLg0KLSAqLw0KLXN0YXRpYyBzdHJ1Y3QgbXRrX2lvbW11X2RhdGEgKm10a19p b21tdV9nZXRfbTR1X2RhdGEodm9pZCkNCi17DQotCXN0cnVjdCBtdGtfaW9tbXVfZGF0YSAqZGF0 YTsNCi0NCi0JZm9yX2VhY2hfbTR1KGRhdGEpDQotCQlyZXR1cm4gZGF0YTsNCi0NCi0JcmV0dXJu IE5VTEw7DQotfQ0KLQ0KIHN0YXRpYyB1MzIgZ2V0X2RvbWFpbl9pZChzdHJ1Y3QgbXRrX2lvbW11 X2RhdGEgKmRhdGEsIHUzMiBwb3J0aWQpDQogew0KIAl1MzIgZG9tX2lkID0gMDsNCkBAIC00MDMs NiArMzg3LDI3IEBAIHN0YXRpYyB2b2lkIG10a19pb21tdV9jb25maWcoc3RydWN0IG10a19pb21t dV9kYXRhICpkYXRhLA0KIAl9DQogfQ0KIA0KK3N0YXRpYyBzdHJ1Y3QgaW9tbXVfZ3JvdXAgKmNy ZWF0ZV9pb21tdV9ncm91cChzdHJ1Y3QgbXRrX2lvbW11X2RhdGEgKmRhdGEsDQorCQkJCQkgICAg ICBzdHJ1Y3QgZGV2aWNlICpkZXYpDQorew0KKwlzdHJ1Y3QgbXRrX2lvbW11X3BndGFibGUgKnBn dGFibGUgPSBtdGtfaW9tbXVfZ2V0X3BndGFibGUoKTsNCisNCisJLyogUHJlcGFyZSBmb3IgYWxs b2NhdGUgbXRrX2lvbW11X2RvbWFpbiAqLw0KKwlkYXRhLSZndDttNHVfZ3JvdXAgPSBtdGtfaW9t bXVfZ2V0X2dyb3VwKGRldik7DQorCWlmICghZGF0YS0mZ3Q7bTR1X2dyb3VwKSB7DQorCQlkYXRh LSZndDttNHVfZ3JvdXAgPSBpb21tdV9ncm91cF9hbGxvYygpOw0KKwkJaWYgKElTX0VSUihkYXRh LSZndDttNHVfZ3JvdXApKQ0KKwkJCWRldl9lcnIoZGV2LCAmcXVvdDtGYWlsZWQgdG8gYWxsb2Nh dGUgTTRVIElPTU1VIGdyb3VwXG4mcXVvdDspOw0KKwl9IGVsc2Ugew0KKwkJaW9tbXVfZ3JvdXBf cmVmX2dldChkYXRhLSZndDttNHVfZ3JvdXApOw0KKwl9DQorDQorCS8qIHNhdmUgdGhlIGxhdGVz dCBpbml0IGRldmljZSAqLw0KKwlwZ3RhYmxlLSZndDtpbml0X2RldiA9IGRldjsNCisNCisJcmV0 dXJuIGRhdGEtJmd0O200dV9ncm91cDsNCit9DQorDQogc3RhdGljIHN0cnVjdCBtdGtfaW9tbXVf cGd0YWJsZSAqY3JlYXRlX3BndGFibGUoc3RydWN0IG10a19pb21tdV9kYXRhICpkYXRhKQ0KIHsN CiAJc3RydWN0IG10a19pb21tdV9wZ3RhYmxlICpwZ3RhYmxlOw0KQEAgLTQ2OCw3ICs0NzMsNyBA QCBzdGF0aWMgaW50IG10a19pb21tdV9hdHRhY2hfcGd0YWJsZShzdHJ1Y3QgbXRrX2lvbW11X2Rh dGEgKmRhdGEsDQogc3RhdGljIHN0cnVjdCBpb21tdV9kb21haW4gKm10a19pb21tdV9kb21haW5f YWxsb2ModW5zaWduZWQgdHlwZSkNCiB7DQogCXN0cnVjdCBtdGtfaW9tbXVfcGd0YWJsZSAqcGd0 YWJsZSA9IG10a19pb21tdV9nZXRfcGd0YWJsZSgpOw0KLQlzdHJ1Y3QgbXRrX2lvbW11X2RhdGEg KmRhdGEgPSBtdGtfaW9tbXVfZ2V0X200dV9kYXRhKCk7DQorCXN0cnVjdCBtdGtfaW9tbXVfZGF0 YSAqZGF0YTsNCiAJc3RydWN0IG10a19pb21tdV9kb21haW4gKmRvbTsNCiAJc3RydWN0IGRldmlj ZSAqZGV2Ow0KIA0KQEAgLTQ3Nyw2ICs0ODIsNyBAQCBzdGF0aWMgc3RydWN0IGlvbW11X2RvbWFp biAqbXRrX2lvbW11X2RvbWFpbl9hbGxvYyh1bnNpZ25lZCB0eXBlKQ0KIA0KIAlpZiAocGd0YWJs ZSkgew0KIAkJZGV2ID0gcGd0YWJsZS0mZ3Q7aW5pdF9kZXY7DQorCQlkYXRhID0gZGV2X2lvbW11 X2Z3c3BlY19nZXQoZGV2KS0mZ3Q7aW9tbXVfcHJpdjsNCiAJCWlmICghZGF0YS0mZ3Q7bTR1X2dy b3VwKSB7DQogCQkJcHJfZXJyKCZxdW90OyVzLCBmaW5kIG00dV9ncm91cCBmYWlsZWRcbiZxdW90 OywgX19mdW5jX18pOw0KIAkJCXJldHVybiBOVUxMOw0KQEAgLTQ5Nyw2ICs1MDMsNyBAQCBzdGF0 aWMgc3RydWN0IGlvbW11X2RvbWFpbiAqbXRrX2lvbW11X2RvbWFpbl9hbGxvYyh1bnNpZ25lZCB0 eXBlKQ0KIAlpZiAoZG9tLSZndDtpZCAmZ3Q7PSBkYXRhLSZndDtwbGF0X2RhdGEtJmd0O2RvbV9j bnQpDQogCQlnb3RvICBwdXRfZG1hX2Nvb2tpZTsNCiANCisJZG9tLSZndDtkYXRhID0gZGF0YTsN CiAJZG9tLSZndDtncm91cCA9IGRhdGEtJmd0O200dV9ncm91cDsNCiAJLyogVXBkYXRlIG91ciBz dXBwb3J0IHBhZ2Ugc2l6ZXMgYml0bWFwICovDQogCWRvbS0mZ3Q7ZG9tYWluLnBnc2l6ZV9iaXRt YXAgPSBwZ3RhYmxlLSZndDtjZmcucGdzaXplX2JpdG1hcDsNCkBAIC01NTQsNyArNTYxLDggQEAg c3RhdGljIGludCBtdGtfaW9tbXVfbWFwKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwgdW5z aWduZWQgbG9uZyBpb3ZhLA0KIAkJCSBwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUsIGlu dCBwcm90KQ0KIHsNCiAJc3RydWN0IG10a19pb21tdV9wZ3RhYmxlICpwZ3RhYmxlID0gbXRrX2lv bW11X2dldF9wZ3RhYmxlKCk7DQotCXN0cnVjdCBtdGtfaW9tbXVfZGF0YSAqZGF0YSA9IG10a19p b21tdV9nZXRfbTR1X2RhdGEoKTsNCisJc3RydWN0IG10a19pb21tdV9kb21haW4gKmRvbSA9IHRv X210a19kb21haW4oZG9tYWluKTsNCisJc3RydWN0IG10a19pb21tdV9kYXRhICpkYXRhID0gZG9t LSZndDtkYXRhOw0KIA0KIAkvKiBUaGUgJnF1b3Q7NEdCIG1vZGUmcXVvdDsgTTRVIHBoeXNpY2Fs bHkgY2FuIG5vdCB1c2UgdGhlIGxvd2VyIHJlbWFwIG9mIERyYW0uICovDQogCWlmIChkYXRhLSZn dDtlbmFibGVfNEdCKQ0KQEAgLTU3NSwyNyArNTgzLDMwIEBAIHN0YXRpYyBzaXplX3QgbXRrX2lv bW11X3VubWFwKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwNCiANCiBzdGF0aWMgdm9pZCBt dGtfaW9tbXVfZmx1c2hfaW90bGJfYWxsKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbikNCiB7 DQotCW10a19pb21tdV90bGJfZmx1c2hfYWxsKG10a19pb21tdV9nZXRfbTR1X2RhdGEoKSk7DQor CXN0cnVjdCBtdGtfaW9tbXVfZG9tYWluICpkb20gPSB0b19tdGtfZG9tYWluKGRvbWFpbik7DQor DQorCW10a19pb21tdV90bGJfZmx1c2hfYWxsKGRvbS0mZ3Q7ZGF0YSk7DQogfQ0KIA0KIHN0YXRp YyB2b2lkIG10a19pb21tdV9pb3RsYl9zeW5jKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwN CiAJCQkJIHN0cnVjdCBpb21tdV9pb3RsYl9nYXRoZXIgKmdhdGhlcikNCiB7DQotCXN0cnVjdCBt dGtfaW9tbXVfZGF0YSAqZGF0YSA9IG10a19pb21tdV9nZXRfbTR1X2RhdGEoKTsNCisJc3RydWN0 IG10a19pb21tdV9kb21haW4gKmRvbSA9IHRvX210a19kb21haW4oZG9tYWluKTsNCiAJc2l6ZV90 IGxlbmd0aCA9IGdhdGhlci0mZ3Q7ZW5kIC0gZ2F0aGVyLSZndDtzdGFydDsNCiANCiAJaWYgKGdh dGhlci0mZ3Q7c3RhcnQgPT0gVUxPTkdfTUFYKQ0KIAkJcmV0dXJuOw0KIA0KIAltdGtfaW9tbXVf dGxiX2ZsdXNoX3JhbmdlX3N5bmMoZ2F0aGVyLSZndDtzdGFydCwgbGVuZ3RoLCBnYXRoZXItJmd0 O3Bnc2l6ZSwNCi0JCQkJICAgICAgIGRhdGEpOw0KKwkJCQkgICAgICAgZG9tLSZndDtkYXRhKTsN CiB9DQogDQogc3RhdGljIHBoeXNfYWRkcl90IG10a19pb21tdV9pb3ZhX3RvX3BoeXMoc3RydWN0 IGlvbW11X2RvbWFpbiAqZG9tYWluLA0KIAkJCQkJICBkbWFfYWRkcl90IGlvdmEpDQogew0KIAlz dHJ1Y3QgbXRrX2lvbW11X3BndGFibGUgKnBndGFibGUgPSBtdGtfaW9tbXVfZ2V0X3BndGFibGUo KTsNCi0Jc3RydWN0IG10a19pb21tdV9kYXRhICpkYXRhID0gbXRrX2lvbW11X2dldF9tNHVfZGF0 YSgpOw0KKwlzdHJ1Y3QgbXRrX2lvbW11X2RvbWFpbiAqZG9tID0gdG9fbXRrX2RvbWFpbihkb21h aW4pOw0KKwlzdHJ1Y3QgbXRrX2lvbW11X2RhdGEgKmRhdGEgPSBkb20tJmd0O2RhdGE7DQogCXBo eXNfYWRkcl90IHBhOw0KIA0KIAlwYSA9IHBndGFibGUtJmd0O2lvcC0mZ3Q7aW92YV90b19waHlz KHBndGFibGUtJmd0O2lvcCwgaW92YSk7DQpAQCAtNjQyLDcgKzY1Myw3IEBAIHN0YXRpYyB2b2lk IG10a19pb21tdV9yZW1vdmVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikNCiANCiBzdGF0aWMg c3RydWN0IGlvbW11X2dyb3VwICptdGtfaW9tbXVfZGV2aWNlX2dyb3VwKHN0cnVjdCBkZXZpY2Ug KmRldikNCiB7DQotCXN0cnVjdCBtdGtfaW9tbXVfZGF0YSAqZGF0YSA9IG10a19pb21tdV9nZXRf bTR1X2RhdGEoKTsNCisJc3RydWN0IG10a19pb21tdV9kYXRhICpkYXRhID0gZGV2LSZndDtpb21t dV9md3NwZWMtJmd0O2lvbW11X3ByaXY7DQogCXN0cnVjdCBtdGtfaW9tbXVfcGd0YWJsZSAqcGd0 YWJsZTsNCiAJaW50IHJldCA9IDA7DQogDQpAQCAtNjU4LDIwICs2NjksOSBAQCBzdGF0aWMgc3Ry dWN0IGlvbW11X2dyb3VwICptdGtfaW9tbXVfZGV2aWNlX2dyb3VwKHN0cnVjdCBkZXZpY2UgKmRl dikNCiAJCX0NCiAJfQ0KIA0KLQkvKiBBbGwgdGhlIGNsaWVudCBkZXZpY2VzIGFyZSBpbiB0aGUg c2FtZSBtNHUgaW9tbXUtZ3JvdXAgKi8NCi0JZGF0YS0mZ3Q7bTR1X2dyb3VwID0gbXRrX2lvbW11 X2dldF9ncm91cChkZXYpOw0KLQlpZiAoIWRhdGEtJmd0O200dV9ncm91cCkgew0KLQkJZGF0YS0m Z3Q7bTR1X2dyb3VwID0gaW9tbXVfZ3JvdXBfYWxsb2MoKTsNCi0JCWlmIChJU19FUlIoZGF0YS0m Z3Q7bTR1X2dyb3VwKSkNCi0JCQlkZXZfZXJyKGRldiwgJnF1b3Q7RmFpbGVkIHRvIGFsbG9jYXRl IE00VSBJT01NVSBncm91cFxuJnF1b3Q7KTsNCi0JfSBlbHNlIHsNCi0JCWlvbW11X2dyb3VwX3Jl Zl9nZXQoZGF0YS0mZ3Q7bTR1X2dyb3VwKTsNCi0JfQ0KKwlkZXZfaW5mbyhkYXRhLSZndDtkZXYs ICZxdW90OyVzLCBpbml0IGRhdGE6JWRcbiZxdW90OywgX19mdW5jX18sIGRhdGEtJmd0O200dV9p ZCk7DQogDQotCS8qIHNhdmUgdGhlIGxhdGVzdCBpbml0IGRldmljZSAqLw0KLQlwZ3RhYmxlLSZn dDtpbml0X2RldiA9IGRldjsNCi0NCi0JcmV0dXJuIGRhdGEtJmd0O200dV9ncm91cDsNCisJcmV0 dXJuIGNyZWF0ZV9pb21tdV9ncm91cChkYXRhLCBkZXYpOw0KIH0NCiANCiBzdGF0aWMgaW50IG10 a19pb21tdV9vZl94bGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvZl9waGFuZGxlX2Fy Z3MgKmFyZ3MpDQotLSANCjIuMTguMA0KDQo8L3ByZT48IS0tdHlwZTp0ZXh0LS0+PCEtLXstLT48 cHJlPioqKioqKioqKioqKiogTUVESUFURUsgQ29uZmlkZW50aWFsaXR5IE5vdGljZQ0KICoqKioq KioqKioqKioqKioqKioqDQpUaGUgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIHRoaXMgZS1tYWls IG1lc3NhZ2UgKGluY2x1ZGluZyBhbnkgDQphdHRhY2htZW50cykgbWF5IGJlIGNvbmZpZGVudGlh bCwgcHJvcHJpZXRhcnksIHByaXZpbGVnZWQsIG9yIG90aGVyd2lzZQ0KZXhlbXB0IGZyb20gZGlz Y2xvc3VyZSB1bmRlciBhcHBsaWNhYmxlIGxhd3MuIEl0IGlzIGludGVuZGVkIHRvIGJlIA0KY29u dmV5ZWQgb25seSB0byB0aGUgZGVzaWduYXRlZCByZWNpcGllbnQocykuIEFueSB1c2UsIGRpc3Nl bWluYXRpb24sIA0KZGlzdHJpYnV0aW9uLCBwcmludGluZywgcmV0YWluaW5nIG9yIGNvcHlpbmcg b2YgdGhpcyBlLW1haWwgKGluY2x1ZGluZyBpdHMgDQphdHRhY2htZW50cykgYnkgdW5pbnRlbmRl ZCByZWNpcGllbnQocykgaXMgc3RyaWN0bHkgcHJvaGliaXRlZCBhbmQgbWF5IA0KYmUgdW5sYXdm dWwuIElmIHlvdSBhcmUgbm90IGFuIGludGVuZGVkIHJlY2lwaWVudCBvZiB0aGlzIGUtbWFpbCwg b3IgYmVsaWV2ZQ0KIA0KdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIGUtbWFpbCBpbiBlcnJv ciwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIA0KaW1tZWRpYXRlbHkgKGJ5IHJlcGx5aW5nIHRv IHRoaXMgZS1tYWlsKSwgZGVsZXRlIGFueSBhbmQgYWxsIGNvcGllcyBvZiANCnRoaXMgZS1tYWls IChpbmNsdWRpbmcgYW55IGF0dGFjaG1lbnRzKSBmcm9tIHlvdXIgc3lzdGVtLCBhbmQgZG8gbm90 DQpkaXNjbG9zZSB0aGUgY29udGVudCBvZiB0aGlzIGUtbWFpbCB0byBhbnkgb3RoZXIgcGVyc29u LiBUaGFuayB5b3UhDQo8L3ByZT48IS0tfS0tPg== --__=_Part_Boundary_007_213290793.418906039 Content-Type: text/plain Content-Transfer-Encoding: base64 QmFzZWQgb24gcHJldmlvdXMgbW9kaWZpY2F0aW9ucyBpbiB0aGUgcGF0Y2hzZXQsIEEgbXRrX2lv bW11X2RhdGENCnN0cnVjdHVyZSByZXByZXNlbnQgYSBpb21tdSwgd2Ugd2lsbCBhZGQgbXRrX2lv bW11X2RhdGEgdG8gbXRrX2lvbW11X2RvbWFpbg0KdG8gc2hvdyB0aGUgaW9tbXUgd2hpY2ggbXRr X2lvbW11X2RvbWFpbiBiZWxvbmdzIHRvLCBzbyB3ZSBjYW4gZ2V0DQptdGtfaW9tbXVfZGF0YSBi eSBtdGtfaW9tbXVfZG9tYWluLCBkb24ndCB1c2UgdG8gIm10a19pb21tdV9nZXRfbTR1X2RhdGEi DQphbnkgbW9yZS4NCg0KQmVzaWRlcywgdGhlcmUgaXMgYSBzbWFsbCBTVyBhZGp1c3RtZW50LCB3 ZSB3aWxsIG1vdmUgYWxsb2MgaW9tbXVfZ3JvdXANCmludG8gImNyZWF0ZV9pb21tdV9ncm91cCIN Cg0KU2lnbmVkLW9mZi1ieTogQ2hhbyBIYW8gPGNoYW8uaGFvQG1lZGlhdGVrLmNvbT4NCi0tLQ0K IGRyaXZlcnMvaW9tbXUvbXRrX2lvbW11LmMgfCA3NCArKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0NCiAxIGZpbGUgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgMzcgZGVs ZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L210a19pb21tdS5jIGIvZHJp dmVycy9pb21tdS9tdGtfaW9tbXUuYw0KaW5kZXggNDJmYWQxY2Y3M2YzLi44YzA2ZDJhNzkzYTcg MTAwNjQ0DQotLS0gYS9kcml2ZXJzL2lvbW11L210a19pb21tdS5jDQorKysgYi9kcml2ZXJzL2lv bW11L210a19pb21tdS5jDQpAQCAtMTIxLDYgKzEyMSw3IEBAIHN0cnVjdCBtdGtfaW9tbXVfZG9t YWluIHsNCiAJdTMyCQkJCWlkOw0KIAlzdHJ1Y3QgaW9tbXVfZG9tYWluCQlkb21haW47DQogCXN0 cnVjdCBpb21tdV9ncm91cAkJKmdyb3VwOw0KKwlzdHJ1Y3QgbXRrX2lvbW11X2RhdGEJCSpkYXRh Ow0KIAlzdHJ1Y3QgbGlzdF9oZWFkCQlsaXN0Ow0KIH07DQogDQpAQCAtMTY4LDIzICsxNjksNiBA QCBzdGF0aWMgTElTVF9IRUFEKG00dWxpc3QpOwkvKiBMaXN0IGFsbCB0aGUgTTRVIEhXcyAqLw0K IA0KICNkZWZpbmUgZm9yX2VhY2hfbTR1KGRhdGEpCWxpc3RfZm9yX2VhY2hfZW50cnkoZGF0YSwg Jm00dWxpc3QsIGxpc3QpDQogDQotLyoNCi0gKiBUaGVyZSBtYXkgYmUgMSBvciAyIE00VSBIV3Ms IEJ1dCB3ZSBhbHdheXMgZXhwZWN0IHRoZXkgYXJlIGluIHRoZSBzYW1lIGRvbWFpbg0KLSAqIGZv ciB0aGUgcGVyZm9ybWFuY2UuDQotICoNCi0gKiBIZXJlIGFsd2F5cyByZXR1cm4gdGhlIG10a19p b21tdV9kYXRhIG9mIHRoZSBmaXJzdCBwcm9iZWQgTTRVIHdoZXJlIHRoZQ0KLSAqIGlvbW11IGRv bWFpbiBpbmZvcm1hdGlvbiBpcyByZWNvcmRlZC4NCi0gKi8NCi1zdGF0aWMgc3RydWN0IG10a19p b21tdV9kYXRhICptdGtfaW9tbXVfZ2V0X200dV9kYXRhKHZvaWQpDQotew0KLQlzdHJ1Y3QgbXRr X2lvbW11X2RhdGEgKmRhdGE7DQotDQotCWZvcl9lYWNoX200dShkYXRhKQ0KLQkJcmV0dXJuIGRh dGE7DQotDQotCXJldHVybiBOVUxMOw0KLX0NCi0NCiBzdGF0aWMgdTMyIGdldF9kb21haW5faWQo c3RydWN0IG10a19pb21tdV9kYXRhICpkYXRhLCB1MzIgcG9ydGlkKQ0KIHsNCiAJdTMyIGRvbV9p ZCA9IDA7DQpAQCAtNDAzLDYgKzM4NywyNyBAQCBzdGF0aWMgdm9pZCBtdGtfaW9tbXVfY29uZmln KHN0cnVjdCBtdGtfaW9tbXVfZGF0YSAqZGF0YSwNCiAJfQ0KIH0NCiANCitzdGF0aWMgc3RydWN0 IGlvbW11X2dyb3VwICpjcmVhdGVfaW9tbXVfZ3JvdXAoc3RydWN0IG10a19pb21tdV9kYXRhICpk YXRhLA0KKwkJCQkJICAgICAgc3RydWN0IGRldmljZSAqZGV2KQ0KK3sNCisJc3RydWN0IG10a19p b21tdV9wZ3RhYmxlICpwZ3RhYmxlID0gbXRrX2lvbW11X2dldF9wZ3RhYmxlKCk7DQorDQorCS8q IFByZXBhcmUgZm9yIGFsbG9jYXRlIG10a19pb21tdV9kb21haW4gKi8NCisJZGF0YS0+bTR1X2dy b3VwID0gbXRrX2lvbW11X2dldF9ncm91cChkZXYpOw0KKwlpZiAoIWRhdGEtPm00dV9ncm91cCkg ew0KKwkJZGF0YS0+bTR1X2dyb3VwID0gaW9tbXVfZ3JvdXBfYWxsb2MoKTsNCisJCWlmIChJU19F UlIoZGF0YS0+bTR1X2dyb3VwKSkNCisJCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBhbGxvY2F0 ZSBNNFUgSU9NTVUgZ3JvdXBcbiIpOw0KKwl9IGVsc2Ugew0KKwkJaW9tbXVfZ3JvdXBfcmVmX2dl dChkYXRhLT5tNHVfZ3JvdXApOw0KKwl9DQorDQorCS8qIHNhdmUgdGhlIGxhdGVzdCBpbml0IGRl dmljZSAqLw0KKwlwZ3RhYmxlLT5pbml0X2RldiA9IGRldjsNCisNCisJcmV0dXJuIGRhdGEtPm00 dV9ncm91cDsNCit9DQorDQogc3RhdGljIHN0cnVjdCBtdGtfaW9tbXVfcGd0YWJsZSAqY3JlYXRl X3BndGFibGUoc3RydWN0IG10a19pb21tdV9kYXRhICpkYXRhKQ0KIHsNCiAJc3RydWN0IG10a19p b21tdV9wZ3RhYmxlICpwZ3RhYmxlOw0KQEAgLTQ2OCw3ICs0NzMsNyBAQCBzdGF0aWMgaW50IG10 a19pb21tdV9hdHRhY2hfcGd0YWJsZShzdHJ1Y3QgbXRrX2lvbW11X2RhdGEgKmRhdGEsDQogc3Rh dGljIHN0cnVjdCBpb21tdV9kb21haW4gKm10a19pb21tdV9kb21haW5fYWxsb2ModW5zaWduZWQg dHlwZSkNCiB7DQogCXN0cnVjdCBtdGtfaW9tbXVfcGd0YWJsZSAqcGd0YWJsZSA9IG10a19pb21t dV9nZXRfcGd0YWJsZSgpOw0KLQlzdHJ1Y3QgbXRrX2lvbW11X2RhdGEgKmRhdGEgPSBtdGtfaW9t bXVfZ2V0X200dV9kYXRhKCk7DQorCXN0cnVjdCBtdGtfaW9tbXVfZGF0YSAqZGF0YTsNCiAJc3Ry dWN0IG10a19pb21tdV9kb21haW4gKmRvbTsNCiAJc3RydWN0IGRldmljZSAqZGV2Ow0KIA0KQEAg LTQ3Nyw2ICs0ODIsNyBAQCBzdGF0aWMgc3RydWN0IGlvbW11X2RvbWFpbiAqbXRrX2lvbW11X2Rv bWFpbl9hbGxvYyh1bnNpZ25lZCB0eXBlKQ0KIA0KIAlpZiAocGd0YWJsZSkgew0KIAkJZGV2ID0g cGd0YWJsZS0+aW5pdF9kZXY7DQorCQlkYXRhID0gZGV2X2lvbW11X2Z3c3BlY19nZXQoZGV2KS0+ aW9tbXVfcHJpdjsNCiAJCWlmICghZGF0YS0+bTR1X2dyb3VwKSB7DQogCQkJcHJfZXJyKCIlcywg ZmluZCBtNHVfZ3JvdXAgZmFpbGVkXG4iLCBfX2Z1bmNfXyk7DQogCQkJcmV0dXJuIE5VTEw7DQpA QCAtNDk3LDYgKzUwMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgaW9tbXVfZG9tYWluICptdGtfaW9tbXVf ZG9tYWluX2FsbG9jKHVuc2lnbmVkIHR5cGUpDQogCWlmIChkb20tPmlkID49IGRhdGEtPnBsYXRf ZGF0YS0+ZG9tX2NudCkNCiAJCWdvdG8gIHB1dF9kbWFfY29va2llOw0KIA0KKwlkb20tPmRhdGEg PSBkYXRhOw0KIAlkb20tPmdyb3VwID0gZGF0YS0+bTR1X2dyb3VwOw0KIAkvKiBVcGRhdGUgb3Vy IHN1cHBvcnQgcGFnZSBzaXplcyBiaXRtYXAgKi8NCiAJZG9tLT5kb21haW4ucGdzaXplX2JpdG1h cCA9IHBndGFibGUtPmNmZy5wZ3NpemVfYml0bWFwOw0KQEAgLTU1NCw3ICs1NjEsOCBAQCBzdGF0 aWMgaW50IG10a19pb21tdV9tYXAoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLCB1bnNpZ25l ZCBsb25nIGlvdmEsDQogCQkJIHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSwgaW50IHBy b3QpDQogew0KIAlzdHJ1Y3QgbXRrX2lvbW11X3BndGFibGUgKnBndGFibGUgPSBtdGtfaW9tbXVf Z2V0X3BndGFibGUoKTsNCi0Jc3RydWN0IG10a19pb21tdV9kYXRhICpkYXRhID0gbXRrX2lvbW11 X2dldF9tNHVfZGF0YSgpOw0KKwlzdHJ1Y3QgbXRrX2lvbW11X2RvbWFpbiAqZG9tID0gdG9fbXRr X2RvbWFpbihkb21haW4pOw0KKwlzdHJ1Y3QgbXRrX2lvbW11X2RhdGEgKmRhdGEgPSBkb20tPmRh dGE7DQogDQogCS8qIFRoZSAiNEdCIG1vZGUiIE00VSBwaHlzaWNhbGx5IGNhbiBub3QgdXNlIHRo ZSBsb3dlciByZW1hcCBvZiBEcmFtLiAqLw0KIAlpZiAoZGF0YS0+ZW5hYmxlXzRHQikNCkBAIC01 NzUsMjcgKzU4MywzMCBAQCBzdGF0aWMgc2l6ZV90IG10a19pb21tdV91bm1hcChzdHJ1Y3QgaW9t bXVfZG9tYWluICpkb21haW4sDQogDQogc3RhdGljIHZvaWQgbXRrX2lvbW11X2ZsdXNoX2lvdGxi X2FsbChzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4pDQogew0KLQltdGtfaW9tbXVfdGxiX2Zs dXNoX2FsbChtdGtfaW9tbXVfZ2V0X200dV9kYXRhKCkpOw0KKwlzdHJ1Y3QgbXRrX2lvbW11X2Rv bWFpbiAqZG9tID0gdG9fbXRrX2RvbWFpbihkb21haW4pOw0KKw0KKwltdGtfaW9tbXVfdGxiX2Zs dXNoX2FsbChkb20tPmRhdGEpOw0KIH0NCiANCiBzdGF0aWMgdm9pZCBtdGtfaW9tbXVfaW90bGJf c3luYyhzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sDQogCQkJCSBzdHJ1Y3QgaW9tbXVfaW90 bGJfZ2F0aGVyICpnYXRoZXIpDQogew0KLQlzdHJ1Y3QgbXRrX2lvbW11X2RhdGEgKmRhdGEgPSBt dGtfaW9tbXVfZ2V0X200dV9kYXRhKCk7DQorCXN0cnVjdCBtdGtfaW9tbXVfZG9tYWluICpkb20g PSB0b19tdGtfZG9tYWluKGRvbWFpbik7DQogCXNpemVfdCBsZW5ndGggPSBnYXRoZXItPmVuZCAt IGdhdGhlci0+c3RhcnQ7DQogDQogCWlmIChnYXRoZXItPnN0YXJ0ID09IFVMT05HX01BWCkNCiAJ CXJldHVybjsNCiANCiAJbXRrX2lvbW11X3RsYl9mbHVzaF9yYW5nZV9zeW5jKGdhdGhlci0+c3Rh cnQsIGxlbmd0aCwgZ2F0aGVyLT5wZ3NpemUsDQotCQkJCSAgICAgICBkYXRhKTsNCisJCQkJICAg ICAgIGRvbS0+ZGF0YSk7DQogfQ0KIA0KIHN0YXRpYyBwaHlzX2FkZHJfdCBtdGtfaW9tbXVfaW92 YV90b19waHlzKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwNCiAJCQkJCSAgZG1hX2FkZHJf dCBpb3ZhKQ0KIHsNCiAJc3RydWN0IG10a19pb21tdV9wZ3RhYmxlICpwZ3RhYmxlID0gbXRrX2lv bW11X2dldF9wZ3RhYmxlKCk7DQotCXN0cnVjdCBtdGtfaW9tbXVfZGF0YSAqZGF0YSA9IG10a19p b21tdV9nZXRfbTR1X2RhdGEoKTsNCisJc3RydWN0IG10a19pb21tdV9kb21haW4gKmRvbSA9IHRv X210a19kb21haW4oZG9tYWluKTsNCisJc3RydWN0IG10a19pb21tdV9kYXRhICpkYXRhID0gZG9t LT5kYXRhOw0KIAlwaHlzX2FkZHJfdCBwYTsNCiANCiAJcGEgPSBwZ3RhYmxlLT5pb3AtPmlvdmFf dG9fcGh5cyhwZ3RhYmxlLT5pb3AsIGlvdmEpOw0KQEAgLTY0Miw3ICs2NTMsNyBAQCBzdGF0aWMg dm9pZCBtdGtfaW9tbXVfcmVtb3ZlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQogDQogc3Rh dGljIHN0cnVjdCBpb21tdV9ncm91cCAqbXRrX2lvbW11X2RldmljZV9ncm91cChzdHJ1Y3QgZGV2 aWNlICpkZXYpDQogew0KLQlzdHJ1Y3QgbXRrX2lvbW11X2RhdGEgKmRhdGEgPSBtdGtfaW9tbXVf Z2V0X200dV9kYXRhKCk7DQorCXN0cnVjdCBtdGtfaW9tbXVfZGF0YSAqZGF0YSA9IGRldi0+aW9t bXVfZndzcGVjLT5pb21tdV9wcml2Ow0KIAlzdHJ1Y3QgbXRrX2lvbW11X3BndGFibGUgKnBndGFi bGU7DQogCWludCByZXQgPSAwOw0KIA0KQEAgLTY1OCwyMCArNjY5LDkgQEAgc3RhdGljIHN0cnVj dCBpb21tdV9ncm91cCAqbXRrX2lvbW11X2RldmljZV9ncm91cChzdHJ1Y3QgZGV2aWNlICpkZXYp DQogCQl9DQogCX0NCiANCi0JLyogQWxsIHRoZSBjbGllbnQgZGV2aWNlcyBhcmUgaW4gdGhlIHNh bWUgbTR1IGlvbW11LWdyb3VwICovDQotCWRhdGEtPm00dV9ncm91cCA9IG10a19pb21tdV9nZXRf Z3JvdXAoZGV2KTsNCi0JaWYgKCFkYXRhLT5tNHVfZ3JvdXApIHsNCi0JCWRhdGEtPm00dV9ncm91 cCA9IGlvbW11X2dyb3VwX2FsbG9jKCk7DQotCQlpZiAoSVNfRVJSKGRhdGEtPm00dV9ncm91cCkp DQotCQkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gYWxsb2NhdGUgTTRVIElPTU1VIGdyb3VwXG4i KTsNCi0JfSBlbHNlIHsNCi0JCWlvbW11X2dyb3VwX3JlZl9nZXQoZGF0YS0+bTR1X2dyb3VwKTsN Ci0JfQ0KKwlkZXZfaW5mbyhkYXRhLT5kZXYsICIlcywgaW5pdCBkYXRhOiVkXG4iLCBfX2Z1bmNf XywgZGF0YS0+bTR1X2lkKTsNCiANCi0JLyogc2F2ZSB0aGUgbGF0ZXN0IGluaXQgZGV2aWNlICov DQotCXBndGFibGUtPmluaXRfZGV2ID0gZGV2Ow0KLQ0KLQlyZXR1cm4gZGF0YS0+bTR1X2dyb3Vw Ow0KKwlyZXR1cm4gY3JlYXRlX2lvbW11X2dyb3VwKGRhdGEsIGRldik7DQogfQ0KIA0KIHN0YXRp YyBpbnQgbXRrX2lvbW11X29mX3hsYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG9mX3Bo YW5kbGVfYXJncyAqYXJncykNCi0tIA0KMi4xOC4wDQo= --__=_Part_Boundary_007_213290793.418906039-- --===============8033290489566651919== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu --===============8033290489566651919==--