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 889D6CA9EA0 for ; Mon, 28 Oct 2019 08:29:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6380D214AF for ; Mon, 28 Oct 2019 08:29:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387495AbfJ1I3A (ORCPT ); Mon, 28 Oct 2019 04:29:00 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:58101 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S2387486AbfJ1I26 (ORCPT ); Mon, 28 Oct 2019 04:28:58 -0400 X-UUID: 938b3f7e5b3a48a5a1edeade2758442a-20191028 X-UUID: 938b3f7e5b3a48a5a1edeade2758442a-20191028 Received: from mtkcas08.mediatek.inc [(172.21.101.126)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1234775578; Mon, 28 Oct 2019 16:28:54 +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:28:50 +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:28:49 +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 07/13] iommu/mediatek: Add smi_larb info about device Date: Mon, 28 Oct 2019 16:28:14 +0800 Message-ID: <20191028082820.20221-8-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 All the devices which used iommu are connected to SMI_larb port, so when different devices driver execute initialization, iommu can check larb_id and port_id to distinguish them and make them match to iommu_group accordingly. We also add dom_cnt variable to describe the number of mtk_iommu_domain. Larb_id and port_id define can refer to "mtxxxx-larb-port.h(ex: mt6779-larb-port.h)" file Signed-off-by: Chao Hao --- drivers/iommu/mtk_iommu.c | 50 ++++++++++++++++++++++++++++++++------- drivers/iommu/mtk_iommu.h | 1 + 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c index 27995b2b29a6..0eacbc473374 100644 --- a/drivers/iommu/mtk_iommu.c +++ b/drivers/iommu/mtk_iommu.c @@ -126,6 +126,7 @@ struct mtk_iommu_domain { struct mtk_iommu_pgtable { struct io_pgtable_cfg cfg; struct io_pgtable_ops *iop; + struct device *init_dev; struct list_head m4u_dom_v2; }; @@ -177,22 +178,35 @@ static struct mtk_iommu_data *mtk_iommu_get_m4u_data(void) return NULL; } -static u32 get_domain_id(void) +static u32 get_domain_id(struct mtk_iommu_data *data, u32 portid) { - /* only support one mtk_iommu_domain currently */ - return 0; + u32 dom_id = 0; + int i; + + /* only support one mtk_iommu_domain currently(dom_cnt = 1) */ + for (i = 0; i < data->plat_data->dom_cnt; i++) + return i; + + return dom_id; } -static u32 mtk_iommu_get_domain_id(void) +static u32 mtk_iommu_get_domain_id(struct device *dev) { - return get_domain_id(); + struct iommu_fwspec *fwspec = dev->iommu_fwspec; + struct mtk_iommu_data *data = dev->iommu_fwspec->iommu_priv; + u32 portid = fwspec->ids[0]; + + return get_domain_id(data, portid); } static struct mtk_iommu_domain *get_mtk_domain(struct device *dev) { struct mtk_iommu_data *data = dev->iommu_fwspec->iommu_priv; struct mtk_iommu_domain *dom; - u32 domain_id = mtk_iommu_get_domain_id(); + u32 domain_id = mtk_iommu_get_domain_id(dev); + + if (domain_id >= data->plat_data->dom_cnt) + return NULL; list_for_each_entry(dom, &data->pgtable->m4u_dom_v2, list) { if (dom->id == domain_id) @@ -431,11 +445,18 @@ 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_domain *dom; + struct device *dev; if (type != IOMMU_DOMAIN_DMA) return NULL; - if (!pgtable) { + if (pgtable) { + dev = pgtable->init_dev; + if (!data->m4u_group) { + pr_err("%s, find m4u_group failed\n", __func__); + return NULL; + } + } else { pr_err("%s, pgtable is not ready\n", __func__); return NULL; } @@ -447,8 +468,11 @@ static struct iommu_domain *mtk_iommu_domain_alloc(unsigned type) if (iommu_get_dma_cookie(&dom->domain)) goto free_dom; + dom->id = mtk_iommu_get_domain_id(dev); + if (dom->id >= data->plat_data->dom_cnt) + goto put_dma_cookie; + dom->group = data->m4u_group; - dom->id = mtk_iommu_get_domain_id(); /* Update our support page sizes bitmap */ dom->domain.pgsize_bitmap = pgtable->cfg.pgsize_bitmap; @@ -459,6 +483,8 @@ static struct iommu_domain *mtk_iommu_domain_alloc(unsigned type) return &dom->domain; +put_dma_cookie: + iommu_put_dma_cookie(&dom->domain); free_dom: kfree(dom); return NULL; @@ -619,6 +645,10 @@ static struct iommu_group *mtk_iommu_device_group(struct device *dev) } else { iommu_group_ref_get(data->m4u_group); } + + /* save the latest init device */ + pgtable->init_dev = dev; + return data->m4u_group; } @@ -927,12 +957,14 @@ static const struct mtk_iommu_plat_data mt2712_data = { .has_4gb_mode = true, .has_bclk = true, .has_vld_pa_rng = true, + .dom_cnt = 1, .larbid_remap[0] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, .inv_sel_reg = REG_MMU_INV_SEL, }; static const struct mtk_iommu_plat_data mt6779_data = { .m4u_plat = M4U_MT6779, + .dom_cnt = 1, .larbid_remap[0] = {0, 1, 2, 3, 5, 7, 10, 9}, /* vp6a, vp6b, mdla/core2, mdla/edmc*/ .larbid_remap[1] = {2, 0, 3, 1}, @@ -948,6 +980,7 @@ static const struct mtk_iommu_plat_data mt8173_data = { .has_4gb_mode = true, .has_bclk = true, .reset_axi = true, + .dom_cnt = 1, .larbid_remap[0] = {0, 1, 2, 3, 4, 5}, /* Linear mapping. */ .inv_sel_reg = REG_MMU_INV_SEL, }; @@ -955,6 +988,7 @@ static const struct mtk_iommu_plat_data mt8173_data = { static const struct mtk_iommu_plat_data mt8183_data = { .m4u_plat = M4U_MT8183, .reset_axi = true, + .dom_cnt = 1, .larbid_remap[0] = {0, 4, 5, 6, 7, 2, 3, 1}, .inv_sel_reg = REG_MMU_INV_SEL, }; diff --git a/drivers/iommu/mtk_iommu.h b/drivers/iommu/mtk_iommu.h index dd5f19f78b62..6801f8496fcc 100644 --- a/drivers/iommu/mtk_iommu.h +++ b/drivers/iommu/mtk_iommu.h @@ -49,6 +49,7 @@ struct mtk_iommu_plat_data { bool has_misc_ctrl[2]; u32 inv_sel_reg; u32 m4u1_mask; + u32 dom_cnt; unsigned char larbid_remap[2][MTK_LARB_NR_MAX]; }; -- 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 BD0B7CA9EC0 for ; Mon, 28 Oct 2019 11:21:37 +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 99326205ED for ; Mon, 28 Oct 2019 11:21:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 99326205ED 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 272A8111C; 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 5E097B09 for ; Mon, 28 Oct 2019 08:28:59 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) by smtp1.linuxfoundation.org (Postfix) with ESMTP id D074842D for ; Mon, 28 Oct 2019 08:28:57 +0000 (UTC) X-UUID: 938b3f7e5b3a48a5a1edeade2758442a-20191028 X-UUID: 938b3f7e5b3a48a5a1edeade2758442a-20191028 Received: from mtkcas08.mediatek.inc [(172.21.101.126)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1234775578; Mon, 28 Oct 2019 16:28:54 +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:28:50 +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:28:49 +0800 From: Chao Hao To: Joerg Roedel , Rob Herring , Matthias Brugger Subject: [PATCH 07/13] iommu/mediatek: Add smi_larb info about device Date: Mon, 28 Oct 2019 16:28:14 +0800 Message-ID: <20191028082820.20221-8-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="===============2361633865056583428==" Sender: iommu-bounces@lists.linux-foundation.org Errors-To: iommu-bounces@lists.linux-foundation.org --===============2361633865056583428== Content-Type: multipart/alternative; boundary="__=_Part_Boundary_006_1453156461.1135494805" --__=_Part_Boundary_006_1453156461.1135494805 Content-Type: text/html Content-Transfer-Encoding: base64 PHByZT4NCkFsbCB0aGUgZGV2aWNlcyB3aGljaCB1c2VkIGlvbW11IGFyZSBjb25uZWN0ZWQgdG8g U01JX2xhcmIgcG9ydCwNCnNvIHdoZW4gZGlmZmVyZW50IGRldmljZXMgZHJpdmVyIGV4ZWN1dGUg aW5pdGlhbGl6YXRpb24sIGlvbW11DQpjYW4gY2hlY2sgbGFyYl9pZCBhbmQgcG9ydF9pZCB0byBk aXN0aW5ndWlzaCB0aGVtIGFuZCBtYWtlDQp0aGVtIG1hdGNoIHRvIGlvbW11X2dyb3VwIGFjY29y ZGluZ2x5LiBXZSBhbHNvIGFkZCBkb21fY250IHZhcmlhYmxlDQp0byBkZXNjcmliZSB0aGUgbnVt YmVyIG9mIG10a19pb21tdV9kb21haW4uDQoNCkxhcmJfaWQgYW5kIHBvcnRfaWQgZGVmaW5lIGNh biByZWZlciB0byAmcXVvdDttdHh4eHgtbGFyYi1wb3J0LmgoZXg6DQptdDY3NzktbGFyYi1wb3J0 LmgpJnF1b3Q7IGZpbGUNCg0KU2lnbmVkLW9mZi1ieTogQ2hhbyBIYW8gJmx0O2NoYW8uaGFvQG1l ZGlhdGVrLmNvbSZndDsNCi0tLQ0KIGRyaXZlcnMvaW9tbXUvbXRrX2lvbW11LmMgfCA1MCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0NCiBkcml2ZXJzL2lvbW11L210a19p b21tdS5oIHwgIDEgKw0KIDIgZmlsZXMgY2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygrKSwgOCBkZWxl dGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvbXRrX2lvbW11LmMgYi9kcml2 ZXJzL2lvbW11L210a19pb21tdS5jDQppbmRleCAyNzk5NWIyYjI5YTYuLjBlYWNiYzQ3MzM3NCAx MDA2NDQNCi0tLSBhL2RyaXZlcnMvaW9tbXUvbXRrX2lvbW11LmMNCisrKyBiL2RyaXZlcnMvaW9t bXUvbXRrX2lvbW11LmMNCkBAIC0xMjYsNiArMTI2LDcgQEAgc3RydWN0IG10a19pb21tdV9kb21h aW4gew0KIHN0cnVjdCBtdGtfaW9tbXVfcGd0YWJsZSB7DQogCXN0cnVjdCBpb19wZ3RhYmxlX2Nm ZwljZmc7DQogCXN0cnVjdCBpb19wZ3RhYmxlX29wcwkqaW9wOw0KKwlzdHJ1Y3QgZGV2aWNlCQkq aW5pdF9kZXY7DQogCXN0cnVjdCBsaXN0X2hlYWQJbTR1X2RvbV92MjsNCiB9Ow0KIA0KQEAgLTE3 NywyMiArMTc4LDM1IEBAIHN0YXRpYyBzdHJ1Y3QgbXRrX2lvbW11X2RhdGEgKm10a19pb21tdV9n ZXRfbTR1X2RhdGEodm9pZCkNCiAJcmV0dXJuIE5VTEw7DQogfQ0KIA0KLXN0YXRpYyB1MzIgZ2V0 X2RvbWFpbl9pZCh2b2lkKQ0KK3N0YXRpYyB1MzIgZ2V0X2RvbWFpbl9pZChzdHJ1Y3QgbXRrX2lv bW11X2RhdGEgKmRhdGEsIHUzMiBwb3J0aWQpDQogew0KLQkvKiBvbmx5IHN1cHBvcnQgb25lIG10 a19pb21tdV9kb21haW4gY3VycmVudGx5ICovDQotCXJldHVybiAwOw0KKwl1MzIgZG9tX2lkID0g MDsNCisJaW50IGk7DQorDQorCS8qIG9ubHkgc3VwcG9ydCBvbmUgbXRrX2lvbW11X2RvbWFpbiBj dXJyZW50bHkoZG9tX2NudCA9IDEpICovDQorCWZvciAoaSA9IDA7IGkgJmx0OyBkYXRhLSZndDtw bGF0X2RhdGEtJmd0O2RvbV9jbnQ7IGkrKykNCisJCXJldHVybiBpOw0KKw0KKwlyZXR1cm4gZG9t X2lkOw0KIH0NCiANCi1zdGF0aWMgdTMyIG10a19pb21tdV9nZXRfZG9tYWluX2lkKHZvaWQpDQor c3RhdGljIHUzMiBtdGtfaW9tbXVfZ2V0X2RvbWFpbl9pZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQog ew0KLQlyZXR1cm4gZ2V0X2RvbWFpbl9pZCgpOw0KKwlzdHJ1Y3QgaW9tbXVfZndzcGVjICpmd3Nw ZWMgPSBkZXYtJmd0O2lvbW11X2Z3c3BlYzsNCisJc3RydWN0IG10a19pb21tdV9kYXRhICpkYXRh ID0gZGV2LSZndDtpb21tdV9md3NwZWMtJmd0O2lvbW11X3ByaXY7DQorCXUzMiBwb3J0aWQgPSBm d3NwZWMtJmd0O2lkc1swXTsNCisNCisJcmV0dXJuIGdldF9kb21haW5faWQoZGF0YSwgcG9ydGlk KTsNCiB9DQogDQogc3RhdGljIHN0cnVjdCBtdGtfaW9tbXVfZG9tYWluICpnZXRfbXRrX2RvbWFp bihzdHJ1Y3QgZGV2aWNlICpkZXYpDQogew0KIAlzdHJ1Y3QgbXRrX2lvbW11X2RhdGEgKmRhdGEg PSBkZXYtJmd0O2lvbW11X2Z3c3BlYy0mZ3Q7aW9tbXVfcHJpdjsNCiAJc3RydWN0IG10a19pb21t dV9kb21haW4gKmRvbTsNCi0JdTMyIGRvbWFpbl9pZCA9IG10a19pb21tdV9nZXRfZG9tYWluX2lk KCk7DQorCXUzMiBkb21haW5faWQgPSBtdGtfaW9tbXVfZ2V0X2RvbWFpbl9pZChkZXYpOw0KKw0K KwlpZiAoZG9tYWluX2lkICZndDs9IGRhdGEtJmd0O3BsYXRfZGF0YS0mZ3Q7ZG9tX2NudCkNCisJ CXJldHVybiBOVUxMOw0KIA0KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRvbSwgJmFtcDtkYXRhLSZn dDtwZ3RhYmxlLSZndDttNHVfZG9tX3YyLCBsaXN0KSB7DQogCQlpZiAoZG9tLSZndDtpZCA9PSBk b21haW5faWQpDQpAQCAtNDMxLDExICs0NDUsMTggQEAgc3RhdGljIHN0cnVjdCBpb21tdV9kb21h aW4gKm10a19pb21tdV9kb21haW5fYWxsb2ModW5zaWduZWQgdHlwZSkNCiAJc3RydWN0IG10a19p b21tdV9wZ3RhYmxlICpwZ3RhYmxlID0gbXRrX2lvbW11X2dldF9wZ3RhYmxlKCk7DQogCXN0cnVj dCBtdGtfaW9tbXVfZGF0YSAqZGF0YSA9IG10a19pb21tdV9nZXRfbTR1X2RhdGEoKTsNCiAJc3Ry dWN0IG10a19pb21tdV9kb21haW4gKmRvbTsNCisJc3RydWN0IGRldmljZSAqZGV2Ow0KIA0KIAlp ZiAodHlwZSAhPSBJT01NVV9ET01BSU5fRE1BKQ0KIAkJcmV0dXJuIE5VTEw7DQogDQotCWlmICgh cGd0YWJsZSkgew0KKwlpZiAocGd0YWJsZSkgew0KKwkJZGV2ID0gcGd0YWJsZS0mZ3Q7aW5pdF9k ZXY7DQorCQlpZiAoIWRhdGEtJmd0O200dV9ncm91cCkgew0KKwkJCXByX2VycigmcXVvdDslcywg ZmluZCBtNHVfZ3JvdXAgZmFpbGVkXG4mcXVvdDssIF9fZnVuY19fKTsNCisJCQlyZXR1cm4gTlVM TDsNCisJCX0NCisJfSBlbHNlIHsNCiAJCXByX2VycigmcXVvdDslcywgcGd0YWJsZSBpcyBub3Qg cmVhZHlcbiZxdW90OywgX19mdW5jX18pOw0KIAkJcmV0dXJuIE5VTEw7DQogCX0NCkBAIC00NDcs OCArNDY4LDExIEBAIHN0YXRpYyBzdHJ1Y3QgaW9tbXVfZG9tYWluICptdGtfaW9tbXVfZG9tYWlu X2FsbG9jKHVuc2lnbmVkIHR5cGUpDQogCWlmIChpb21tdV9nZXRfZG1hX2Nvb2tpZSgmYW1wO2Rv bS0mZ3Q7ZG9tYWluKSkNCiAJCWdvdG8gIGZyZWVfZG9tOw0KIA0KKwlkb20tJmd0O2lkID0gbXRr X2lvbW11X2dldF9kb21haW5faWQoZGV2KTsNCisJaWYgKGRvbS0mZ3Q7aWQgJmd0Oz0gZGF0YS0m Z3Q7cGxhdF9kYXRhLSZndDtkb21fY250KQ0KKwkJZ290byAgcHV0X2RtYV9jb29raWU7DQorDQog CWRvbS0mZ3Q7Z3JvdXAgPSBkYXRhLSZndDttNHVfZ3JvdXA7DQotCWRvbS0mZ3Q7aWQgPSBtdGtf aW9tbXVfZ2V0X2RvbWFpbl9pZCgpOw0KIAkvKiBVcGRhdGUgb3VyIHN1cHBvcnQgcGFnZSBzaXpl cyBiaXRtYXAgKi8NCiAJZG9tLSZndDtkb21haW4ucGdzaXplX2JpdG1hcCA9IHBndGFibGUtJmd0 O2NmZy5wZ3NpemVfYml0bWFwOw0KIA0KQEAgLTQ1OSw2ICs0ODMsOCBAQCBzdGF0aWMgc3RydWN0 IGlvbW11X2RvbWFpbiAqbXRrX2lvbW11X2RvbWFpbl9hbGxvYyh1bnNpZ25lZCB0eXBlKQ0KIA0K IAlyZXR1cm4gJmFtcDtkb20tJmd0O2RvbWFpbjsNCiANCitwdXRfZG1hX2Nvb2tpZToNCisJaW9t bXVfcHV0X2RtYV9jb29raWUoJmFtcDtkb20tJmd0O2RvbWFpbik7DQogZnJlZV9kb206DQogCWtm cmVlKGRvbSk7DQogCXJldHVybiBOVUxMOw0KQEAgLTYxOSw2ICs2NDUsMTAgQEAgc3RhdGljIHN0 cnVjdCBpb21tdV9ncm91cCAqbXRrX2lvbW11X2RldmljZV9ncm91cChzdHJ1Y3QgZGV2aWNlICpk ZXYpDQogCX0gZWxzZSB7DQogCQlpb21tdV9ncm91cF9yZWZfZ2V0KGRhdGEtJmd0O200dV9ncm91 cCk7DQogCX0NCisNCisJLyogc2F2ZSB0aGUgbGF0ZXN0IGluaXQgZGV2aWNlICovDQorCXBndGFi bGUtJmd0O2luaXRfZGV2ID0gZGV2Ow0KKw0KIAlyZXR1cm4gZGF0YS0mZ3Q7bTR1X2dyb3VwOw0K IH0NCiANCkBAIC05MjcsMTIgKzk1NywxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19pb21t dV9wbGF0X2RhdGEgbXQyNzEyX2RhdGEgPSB7DQogCS5oYXNfNGdiX21vZGUgPSB0cnVlLA0KIAku aGFzX2JjbGsgICAgID0gdHJ1ZSwNCiAJLmhhc192bGRfcGFfcm5nICAgPSB0cnVlLA0KKwkuZG9t X2NudCA9IDEsDQogCS5sYXJiaWRfcmVtYXBbMF0gPSB7MCwgMSwgMiwgMywgNCwgNSwgNiwgNywg OCwgOX0sDQogCS5pbnZfc2VsX3JlZyA9IFJFR19NTVVfSU5WX1NFTCwNCiB9Ow0KIA0KIHN0YXRp YyBjb25zdCBzdHJ1Y3QgbXRrX2lvbW11X3BsYXRfZGF0YSBtdDY3NzlfZGF0YSA9IHsNCiAJLm00 dV9wbGF0ID0gTTRVX01UNjc3OSwNCisJLmRvbV9jbnQgPSAxLA0KIAkubGFyYmlkX3JlbWFwWzBd ID0gezAsIDEsIDIsIDMsIDUsIDcsIDEwLCA5fSwNCiAJLyogdnA2YSwgdnA2YiwgbWRsYS9jb3Jl MiwgbWRsYS9lZG1jKi8NCiAJLmxhcmJpZF9yZW1hcFsxXSA9IHsyLCAwLCAzLCAxfSwNCkBAIC05 NDgsNiArOTgwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfaW9tbXVfcGxhdF9kYXRhIG10 ODE3M19kYXRhID0gew0KIAkuaGFzXzRnYl9tb2RlID0gdHJ1ZSwNCiAJLmhhc19iY2xrICAgICA9 IHRydWUsDQogCS5yZXNldF9heGkgICAgPSB0cnVlLA0KKwkuZG9tX2NudCA9IDEsDQogCS5sYXJi aWRfcmVtYXBbMF0gPSB7MCwgMSwgMiwgMywgNCwgNX0sIC8qIExpbmVhciBtYXBwaW5nLiAqLw0K IAkuaW52X3NlbF9yZWcgPSBSRUdfTU1VX0lOVl9TRUwsDQogfTsNCkBAIC05NTUsNiArOTg4LDcg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfaW9tbXVfcGxhdF9kYXRhIG10ODE3M19kYXRhID0g ew0KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2lvbW11X3BsYXRfZGF0YSBtdDgxODNfZGF0YSA9 IHsNCiAJLm00dV9wbGF0ICAgICA9IE00VV9NVDgxODMsDQogCS5yZXNldF9heGkgICAgPSB0cnVl LA0KKwkuZG9tX2NudCA9IDEsDQogCS5sYXJiaWRfcmVtYXBbMF0gPSB7MCwgNCwgNSwgNiwgNywg MiwgMywgMX0sDQogCS5pbnZfc2VsX3JlZyA9IFJFR19NTVVfSU5WX1NFTCwNCiB9Ow0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvaW9tbXUvbXRrX2lvbW11LmggYi9kcml2ZXJzL2lvbW11L210a19pb21t dS5oDQppbmRleCBkZDVmMTlmNzhiNjIuLjY4MDFmODQ5NmZjYyAxMDA2NDQNCi0tLSBhL2RyaXZl cnMvaW9tbXUvbXRrX2lvbW11LmgNCisrKyBiL2RyaXZlcnMvaW9tbXUvbXRrX2lvbW11LmgNCkBA IC00OSw2ICs0OSw3IEBAIHN0cnVjdCBtdGtfaW9tbXVfcGxhdF9kYXRhIHsNCiAJYm9vbCAgICAg ICAgICAgICAgICBoYXNfbWlzY19jdHJsWzJdOw0KIAl1MzIgICAgICAgICAgICAgICAgIGludl9z ZWxfcmVnOw0KIAl1MzIgICAgICAgICAgICAgICAgIG00dTFfbWFzazsNCisJdTMyCQkgICAgZG9t X2NudDsNCiAJdW5zaWduZWQgY2hhciAgICAgICBsYXJiaWRfcmVtYXBbMl1bTVRLX0xBUkJfTlJf TUFYXTsNCiB9Ow0KIA0KLS0gDQoyLjE4LjANCg0KPC9wcmU+PCEtLXR5cGU6dGV4dC0tPjwhLS17 LS0+PHByZT4qKioqKioqKioqKioqIE1FRElBVEVLIENvbmZpZGVudGlhbGl0eSBOb3RpY2UNCiAq KioqKioqKioqKioqKioqKioqKg0KVGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGlzIGUt bWFpbCBtZXNzYWdlIChpbmNsdWRpbmcgYW55IA0KYXR0YWNobWVudHMpIG1heSBiZSBjb25maWRl bnRpYWwsIHByb3ByaWV0YXJ5LCBwcml2aWxlZ2VkLCBvciBvdGhlcndpc2UNCmV4ZW1wdCBmcm9t IGRpc2Nsb3N1cmUgdW5kZXIgYXBwbGljYWJsZSBsYXdzLiBJdCBpcyBpbnRlbmRlZCB0byBiZSAN CmNvbnZleWVkIG9ubHkgdG8gdGhlIGRlc2lnbmF0ZWQgcmVjaXBpZW50KHMpLiBBbnkgdXNlLCBk aXNzZW1pbmF0aW9uLCANCmRpc3RyaWJ1dGlvbiwgcHJpbnRpbmcsIHJldGFpbmluZyBvciBjb3B5 aW5nIG9mIHRoaXMgZS1tYWlsIChpbmNsdWRpbmcgaXRzIA0KYXR0YWNobWVudHMpIGJ5IHVuaW50 ZW5kZWQgcmVjaXBpZW50KHMpIGlzIHN0cmljdGx5IHByb2hpYml0ZWQgYW5kIG1heSANCmJlIHVu bGF3ZnVsLiBJZiB5b3UgYXJlIG5vdCBhbiBpbnRlbmRlZCByZWNpcGllbnQgb2YgdGhpcyBlLW1h aWwsIG9yIGJlbGlldmUNCiANCnRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyBlLW1haWwgaW4g ZXJyb3IsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciANCmltbWVkaWF0ZWx5IChieSByZXBseWlu ZyB0byB0aGlzIGUtbWFpbCksIGRlbGV0ZSBhbnkgYW5kIGFsbCBjb3BpZXMgb2YgDQp0aGlzIGUt bWFpbCAoaW5jbHVkaW5nIGFueSBhdHRhY2htZW50cykgZnJvbSB5b3VyIHN5c3RlbSwgYW5kIGRv IG5vdA0KZGlzY2xvc2UgdGhlIGNvbnRlbnQgb2YgdGhpcyBlLW1haWwgdG8gYW55IG90aGVyIHBl cnNvbi4gVGhhbmsgeW91IQ0KPC9wcmU+PCEtLX0tLT4= --__=_Part_Boundary_006_1453156461.1135494805 Content-Type: text/plain Content-Transfer-Encoding: base64 QWxsIHRoZSBkZXZpY2VzIHdoaWNoIHVzZWQgaW9tbXUgYXJlIGNvbm5lY3RlZCB0byBTTUlfbGFy YiBwb3J0LA0Kc28gd2hlbiBkaWZmZXJlbnQgZGV2aWNlcyBkcml2ZXIgZXhlY3V0ZSBpbml0aWFs aXphdGlvbiwgaW9tbXUNCmNhbiBjaGVjayBsYXJiX2lkIGFuZCBwb3J0X2lkIHRvIGRpc3Rpbmd1 aXNoIHRoZW0gYW5kIG1ha2UNCnRoZW0gbWF0Y2ggdG8gaW9tbXVfZ3JvdXAgYWNjb3JkaW5nbHku IFdlIGFsc28gYWRkIGRvbV9jbnQgdmFyaWFibGUNCnRvIGRlc2NyaWJlIHRoZSBudW1iZXIgb2Yg bXRrX2lvbW11X2RvbWFpbi4NCg0KTGFyYl9pZCBhbmQgcG9ydF9pZCBkZWZpbmUgY2FuIHJlZmVy IHRvICJtdHh4eHgtbGFyYi1wb3J0LmgoZXg6DQptdDY3NzktbGFyYi1wb3J0LmgpIiBmaWxlDQoN ClNpZ25lZC1vZmYtYnk6IENoYW8gSGFvIDxjaGFvLmhhb0BtZWRpYXRlay5jb20+DQotLS0NCiBk cml2ZXJzL2lvbW11L210a19pb21tdS5jIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tDQogZHJpdmVycy9pb21tdS9tdGtfaW9tbXUuaCB8ICAxICsNCiAyIGZpbGVz IGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQg YS9kcml2ZXJzL2lvbW11L210a19pb21tdS5jIGIvZHJpdmVycy9pb21tdS9tdGtfaW9tbXUuYw0K aW5kZXggMjc5OTViMmIyOWE2Li4wZWFjYmM0NzMzNzQgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2lv bW11L210a19pb21tdS5jDQorKysgYi9kcml2ZXJzL2lvbW11L210a19pb21tdS5jDQpAQCAtMTI2 LDYgKzEyNiw3IEBAIHN0cnVjdCBtdGtfaW9tbXVfZG9tYWluIHsNCiBzdHJ1Y3QgbXRrX2lvbW11 X3BndGFibGUgew0KIAlzdHJ1Y3QgaW9fcGd0YWJsZV9jZmcJY2ZnOw0KIAlzdHJ1Y3QgaW9fcGd0 YWJsZV9vcHMJKmlvcDsNCisJc3RydWN0IGRldmljZQkJKmluaXRfZGV2Ow0KIAlzdHJ1Y3QgbGlz dF9oZWFkCW00dV9kb21fdjI7DQogfTsNCiANCkBAIC0xNzcsMjIgKzE3OCwzNSBAQCBzdGF0aWMg c3RydWN0IG10a19pb21tdV9kYXRhICptdGtfaW9tbXVfZ2V0X200dV9kYXRhKHZvaWQpDQogCXJl dHVybiBOVUxMOw0KIH0NCiANCi1zdGF0aWMgdTMyIGdldF9kb21haW5faWQodm9pZCkNCitzdGF0 aWMgdTMyIGdldF9kb21haW5faWQoc3RydWN0IG10a19pb21tdV9kYXRhICpkYXRhLCB1MzIgcG9y dGlkKQ0KIHsNCi0JLyogb25seSBzdXBwb3J0IG9uZSBtdGtfaW9tbXVfZG9tYWluIGN1cnJlbnRs eSAqLw0KLQlyZXR1cm4gMDsNCisJdTMyIGRvbV9pZCA9IDA7DQorCWludCBpOw0KKw0KKwkvKiBv bmx5IHN1cHBvcnQgb25lIG10a19pb21tdV9kb21haW4gY3VycmVudGx5KGRvbV9jbnQgPSAxKSAq Lw0KKwlmb3IgKGkgPSAwOyBpIDwgZGF0YS0+cGxhdF9kYXRhLT5kb21fY250OyBpKyspDQorCQly ZXR1cm4gaTsNCisNCisJcmV0dXJuIGRvbV9pZDsNCiB9DQogDQotc3RhdGljIHUzMiBtdGtfaW9t bXVfZ2V0X2RvbWFpbl9pZCh2b2lkKQ0KK3N0YXRpYyB1MzIgbXRrX2lvbW11X2dldF9kb21haW5f aWQoc3RydWN0IGRldmljZSAqZGV2KQ0KIHsNCi0JcmV0dXJuIGdldF9kb21haW5faWQoKTsNCisJ c3RydWN0IGlvbW11X2Z3c3BlYyAqZndzcGVjID0gZGV2LT5pb21tdV9md3NwZWM7DQorCXN0cnVj dCBtdGtfaW9tbXVfZGF0YSAqZGF0YSA9IGRldi0+aW9tbXVfZndzcGVjLT5pb21tdV9wcml2Ow0K Kwl1MzIgcG9ydGlkID0gZndzcGVjLT5pZHNbMF07DQorDQorCXJldHVybiBnZXRfZG9tYWluX2lk KGRhdGEsIHBvcnRpZCk7DQogfQ0KIA0KIHN0YXRpYyBzdHJ1Y3QgbXRrX2lvbW11X2RvbWFpbiAq Z2V0X210a19kb21haW4oc3RydWN0IGRldmljZSAqZGV2KQ0KIHsNCiAJc3RydWN0IG10a19pb21t dV9kYXRhICpkYXRhID0gZGV2LT5pb21tdV9md3NwZWMtPmlvbW11X3ByaXY7DQogCXN0cnVjdCBt dGtfaW9tbXVfZG9tYWluICpkb207DQotCXUzMiBkb21haW5faWQgPSBtdGtfaW9tbXVfZ2V0X2Rv bWFpbl9pZCgpOw0KKwl1MzIgZG9tYWluX2lkID0gbXRrX2lvbW11X2dldF9kb21haW5faWQoZGV2 KTsNCisNCisJaWYgKGRvbWFpbl9pZCA+PSBkYXRhLT5wbGF0X2RhdGEtPmRvbV9jbnQpDQorCQly ZXR1cm4gTlVMTDsNCiANCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShkb20sICZkYXRhLT5wZ3RhYmxl LT5tNHVfZG9tX3YyLCBsaXN0KSB7DQogCQlpZiAoZG9tLT5pZCA9PSBkb21haW5faWQpDQpAQCAt NDMxLDExICs0NDUsMTggQEAgc3RhdGljIHN0cnVjdCBpb21tdV9kb21haW4gKm10a19pb21tdV9k b21haW5fYWxsb2ModW5zaWduZWQgdHlwZSkNCiAJc3RydWN0IG10a19pb21tdV9wZ3RhYmxlICpw Z3RhYmxlID0gbXRrX2lvbW11X2dldF9wZ3RhYmxlKCk7DQogCXN0cnVjdCBtdGtfaW9tbXVfZGF0 YSAqZGF0YSA9IG10a19pb21tdV9nZXRfbTR1X2RhdGEoKTsNCiAJc3RydWN0IG10a19pb21tdV9k b21haW4gKmRvbTsNCisJc3RydWN0IGRldmljZSAqZGV2Ow0KIA0KIAlpZiAodHlwZSAhPSBJT01N VV9ET01BSU5fRE1BKQ0KIAkJcmV0dXJuIE5VTEw7DQogDQotCWlmICghcGd0YWJsZSkgew0KKwlp ZiAocGd0YWJsZSkgew0KKwkJZGV2ID0gcGd0YWJsZS0+aW5pdF9kZXY7DQorCQlpZiAoIWRhdGEt Pm00dV9ncm91cCkgew0KKwkJCXByX2VycigiJXMsIGZpbmQgbTR1X2dyb3VwIGZhaWxlZFxuIiwg X19mdW5jX18pOw0KKwkJCXJldHVybiBOVUxMOw0KKwkJfQ0KKwl9IGVsc2Ugew0KIAkJcHJfZXJy KCIlcywgcGd0YWJsZSBpcyBub3QgcmVhZHlcbiIsIF9fZnVuY19fKTsNCiAJCXJldHVybiBOVUxM Ow0KIAl9DQpAQCAtNDQ3LDggKzQ2OCwxMSBAQCBzdGF0aWMgc3RydWN0IGlvbW11X2RvbWFpbiAq bXRrX2lvbW11X2RvbWFpbl9hbGxvYyh1bnNpZ25lZCB0eXBlKQ0KIAlpZiAoaW9tbXVfZ2V0X2Rt YV9jb29raWUoJmRvbS0+ZG9tYWluKSkNCiAJCWdvdG8gIGZyZWVfZG9tOw0KIA0KKwlkb20tPmlk ID0gbXRrX2lvbW11X2dldF9kb21haW5faWQoZGV2KTsNCisJaWYgKGRvbS0+aWQgPj0gZGF0YS0+ cGxhdF9kYXRhLT5kb21fY250KQ0KKwkJZ290byAgcHV0X2RtYV9jb29raWU7DQorDQogCWRvbS0+ Z3JvdXAgPSBkYXRhLT5tNHVfZ3JvdXA7DQotCWRvbS0+aWQgPSBtdGtfaW9tbXVfZ2V0X2RvbWFp bl9pZCgpOw0KIAkvKiBVcGRhdGUgb3VyIHN1cHBvcnQgcGFnZSBzaXplcyBiaXRtYXAgKi8NCiAJ ZG9tLT5kb21haW4ucGdzaXplX2JpdG1hcCA9IHBndGFibGUtPmNmZy5wZ3NpemVfYml0bWFwOw0K IA0KQEAgLTQ1OSw2ICs0ODMsOCBAQCBzdGF0aWMgc3RydWN0IGlvbW11X2RvbWFpbiAqbXRrX2lv bW11X2RvbWFpbl9hbGxvYyh1bnNpZ25lZCB0eXBlKQ0KIA0KIAlyZXR1cm4gJmRvbS0+ZG9tYWlu Ow0KIA0KK3B1dF9kbWFfY29va2llOg0KKwlpb21tdV9wdXRfZG1hX2Nvb2tpZSgmZG9tLT5kb21h aW4pOw0KIGZyZWVfZG9tOg0KIAlrZnJlZShkb20pOw0KIAlyZXR1cm4gTlVMTDsNCkBAIC02MTks NiArNjQ1LDEwIEBAIHN0YXRpYyBzdHJ1Y3QgaW9tbXVfZ3JvdXAgKm10a19pb21tdV9kZXZpY2Vf Z3JvdXAoc3RydWN0IGRldmljZSAqZGV2KQ0KIAl9IGVsc2Ugew0KIAkJaW9tbXVfZ3JvdXBfcmVm X2dldChkYXRhLT5tNHVfZ3JvdXApOw0KIAl9DQorDQorCS8qIHNhdmUgdGhlIGxhdGVzdCBpbml0 IGRldmljZSAqLw0KKwlwZ3RhYmxlLT5pbml0X2RldiA9IGRldjsNCisNCiAJcmV0dXJuIGRhdGEt Pm00dV9ncm91cDsNCiB9DQogDQpAQCAtOTI3LDEyICs5NTcsMTQgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBtdGtfaW9tbXVfcGxhdF9kYXRhIG10MjcxMl9kYXRhID0gew0KIAkuaGFzXzRnYl9tb2Rl ID0gdHJ1ZSwNCiAJLmhhc19iY2xrICAgICA9IHRydWUsDQogCS5oYXNfdmxkX3BhX3JuZyAgID0g dHJ1ZSwNCisJLmRvbV9jbnQgPSAxLA0KIAkubGFyYmlkX3JlbWFwWzBdID0gezAsIDEsIDIsIDMs IDQsIDUsIDYsIDcsIDgsIDl9LA0KIAkuaW52X3NlbF9yZWcgPSBSRUdfTU1VX0lOVl9TRUwsDQog fTsNCiANCiBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19pb21tdV9wbGF0X2RhdGEgbXQ2Nzc5X2Rh dGEgPSB7DQogCS5tNHVfcGxhdCA9IE00VV9NVDY3NzksDQorCS5kb21fY250ID0gMSwNCiAJLmxh cmJpZF9yZW1hcFswXSA9IHswLCAxLCAyLCAzLCA1LCA3LCAxMCwgOX0sDQogCS8qIHZwNmEsIHZw NmIsIG1kbGEvY29yZTIsIG1kbGEvZWRtYyovDQogCS5sYXJiaWRfcmVtYXBbMV0gPSB7MiwgMCwg MywgMX0sDQpAQCAtOTQ4LDYgKzk4MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2lvbW11 X3BsYXRfZGF0YSBtdDgxNzNfZGF0YSA9IHsNCiAJLmhhc180Z2JfbW9kZSA9IHRydWUsDQogCS5o YXNfYmNsayAgICAgPSB0cnVlLA0KIAkucmVzZXRfYXhpICAgID0gdHJ1ZSwNCisJLmRvbV9jbnQg PSAxLA0KIAkubGFyYmlkX3JlbWFwWzBdID0gezAsIDEsIDIsIDMsIDQsIDV9LCAvKiBMaW5lYXIg bWFwcGluZy4gKi8NCiAJLmludl9zZWxfcmVnID0gUkVHX01NVV9JTlZfU0VMLA0KIH07DQpAQCAt OTU1LDYgKzk4OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2lvbW11X3BsYXRfZGF0YSBt dDgxNzNfZGF0YSA9IHsNCiBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19pb21tdV9wbGF0X2RhdGEg bXQ4MTgzX2RhdGEgPSB7DQogCS5tNHVfcGxhdCAgICAgPSBNNFVfTVQ4MTgzLA0KIAkucmVzZXRf YXhpICAgID0gdHJ1ZSwNCisJLmRvbV9jbnQgPSAxLA0KIAkubGFyYmlkX3JlbWFwWzBdID0gezAs IDQsIDUsIDYsIDcsIDIsIDMsIDF9LA0KIAkuaW52X3NlbF9yZWcgPSBSRUdfTU1VX0lOVl9TRUws DQogfTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L210a19pb21tdS5oIGIvZHJpdmVycy9p b21tdS9tdGtfaW9tbXUuaA0KaW5kZXggZGQ1ZjE5Zjc4YjYyLi42ODAxZjg0OTZmY2MgMTAwNjQ0 DQotLS0gYS9kcml2ZXJzL2lvbW11L210a19pb21tdS5oDQorKysgYi9kcml2ZXJzL2lvbW11L210 a19pb21tdS5oDQpAQCAtNDksNiArNDksNyBAQCBzdHJ1Y3QgbXRrX2lvbW11X3BsYXRfZGF0YSB7 DQogCWJvb2wgICAgICAgICAgICAgICAgaGFzX21pc2NfY3RybFsyXTsNCiAJdTMyICAgICAgICAg ICAgICAgICBpbnZfc2VsX3JlZzsNCiAJdTMyICAgICAgICAgICAgICAgICBtNHUxX21hc2s7DQor CXUzMgkJICAgIGRvbV9jbnQ7DQogCXVuc2lnbmVkIGNoYXIgICAgICAgbGFyYmlkX3JlbWFwWzJd W01US19MQVJCX05SX01BWF07DQogfTsNCiANCi0tIA0KMi4xOC4wDQo= --__=_Part_Boundary_006_1453156461.1135494805-- --===============2361633865056583428== 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 --===============2361633865056583428==--