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=-10.4 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 E410FC4338F for ; Thu, 29 Jul 2021 10:59:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C471B60EE6 for ; Thu, 29 Jul 2021 10:59:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236110AbhG2K7N (ORCPT ); Thu, 29 Jul 2021 06:59:13 -0400 Received: from foss.arm.com ([217.140.110.172]:44962 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234156AbhG2K7M (ORCPT ); Thu, 29 Jul 2021 06:59:12 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 2D97D6D; Thu, 29 Jul 2021 03:59:09 -0700 (PDT) Received: from [10.57.36.146] (unknown [10.57.36.146]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 32E8D3F66F; Thu, 29 Jul 2021 03:59:07 -0700 (PDT) Subject: Re: [PATCH v2 00/24] iommu: Refactor DMA domain strictness To: "chenxiang (M)" , joro@8bytes.org, will@kernel.org Cc: Maxime Ripard , Jean-Philippe Brucker , Heiko Stuebner , Geert Uytterhoeven , linux-kernel@vger.kernel.org, Chunyan Zhang , dianders@chromium.org, iommu@lists.linux-foundation.org, linux-arm-kernel@lists.infradead.org, "linuxarm@huawei.com" References: <49c7ca2c-11a3-ff93-05bc-feb482a79980@hisilicon.com> From: Robin Murphy Message-ID: <942c3da1-fb79-967a-d50e-4cbf5331261c@arm.com> Date: Thu, 29 Jul 2021 11:59:01 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: <49c7ca2c-11a3-ff93-05bc-feb482a79980@hisilicon.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2021-07-29 03:55, chenxiang (M) wrote: > Hi Robin, > > > 在 2021/7/28 23:58, Robin Murphy 写道: >> Hi all, >> >> Here's v2 where things start to look more realistic, hence the expanded >> CC list. The patches are now based on the current iommu/core branch to >> take John's iommu_set_dma_strict() cleanup into account. >> >> The series remiains in two (or possibly 3) logical parts - for people >> CC'd on cookie cleanup patches, the later parts should not affect you >> since your drivers don't implement non-strict mode anyway; the cleanup >> is all pretty straightforward, but please do yell at me if I've managed >> to let a silly mistake slip through and broken your driver. >> >> This time I have also build-tested x86 as well as arm64 :) > > I have tested those patchset on ARM64 with SMMUV3, and the testcases are > as follows: > - Boot with iommu.strict=0, running fio and it works well; > - Boot with iommu.strict=1, running fio and it works well; > - Change strict mode to lazy mode when building, the change takes effect; > - Boot without iommu.strict(default strict mode), change the sysfs > interface type from DMA to DMA-FQ dynamically during running fio, and it > works well; > - Boot without iommu.strict(default strict mode), change the sysfs > interface type from DMA-FQ to DMA dynamically, and it is not allowed and > print "Device or resource busy" > (i know it is qualified, and we can change no-strict mode to strict by > unbind the driver -> change the sysfs interface (type)->bind the driver > (tested this and it works well), > but i have a small question: is it also possible to change from DMA-FQ > to DMA dynamically? ) As patch #22 mentions, I think it's possible in principle, but it's certainly trickier. When enabling a flush queue, it doesn't matter if it takes a while for other threads to notice that cookie->fq_domain is now set and stop doing synchronous invalidations (and in the SMMU case it seems like there are probably enough dependencies to additionally prevent the io_pgtable quirk being observable before that). However when disabling, we'd need to be absolutely sure that the driver *has* started invalidating strictly before we stop queueing freed IOVAs, plus we need to be absolutely sure that we've stopped queueing freed IOVAs before we attempt to tear down the flush queue itself. I'm not sure off-hand how feasible it would be to put all that synchronisation in the right places without it also impacting normal operation. Furthermore, as also noted, there doesn't seem to be a good reason for ever actually needing to do that. If a device isn't trusted, it should be given a strict domain *before* any driver has a chance to start doing anything, or your trust model is broken and pretty useless. I can imagine some niche debugging/benchmarking cases where it might help save a bit of effort, but nothing with a strong enough justification to be worth supporting in mainline. > Anyway, please feel free to add : > Tested-by: Xiang Chen That's great, thanks! Robin. >> Changes in v2: >> >> - Add iommu_is_dma_domain() helper to abstract flag check (and help >>    avoid silly typos like the one in v1). >> - Tweak a few commit messages for spelling and (hopefully) clarity. >> - Move the iommu_create_device_direct_mappings() update to patch #14 >>    where it should have been. >> - Rewrite patch #20 as a conversion of the now-existing option. >> - Clean up the ops->flush_iotlb_all check which is also made redundant >>    by the new domain type >> - Add patch #24, which is arguably tangential, but it was something I >>    spotted during the rebase, so... >> >> Once again, the whole lot is available on a branch here: >> >> https://gitlab.arm.com/linux-arm/linux-rm/-/tree/iommu/fq >> >> Thanks, >> Robin. >> >> >> CC: Marek Szyprowski >> CC: Yoshihiro Shimoda >> CC: Geert Uytterhoeven >> CC: Yong Wu >> CC: Heiko Stuebner >> CC: Chunyan Zhang >> CC: Chunyan Zhang >> CC: Maxime Ripard >> CC: Jean-Philippe Brucker >> >> Robin Murphy (24): >>    iommu: Pull IOVA cookie management into the core >>    iommu/amd: Drop IOVA cookie management >>    iommu/arm-smmu: Drop IOVA cookie management >>    iommu/vt-d: Drop IOVA cookie management >>    iommu/exynos: Drop IOVA cookie management >>    iommu/ipmmu-vmsa: Drop IOVA cookie management >>    iommu/mtk: Drop IOVA cookie management >>    iommu/rockchip: Drop IOVA cookie management >>    iommu/sprd: Drop IOVA cookie management >>    iommu/sun50i: Drop IOVA cookie management >>    iommu/virtio: Drop IOVA cookie management >>    iommu/dma: Unexport IOVA cookie management >>    iommu/dma: Remove redundant "!dev" checks >>    iommu: Introduce explicit type for non-strict DMA domains >>    iommu/amd: Prepare for multiple DMA domain types >>    iommu/arm-smmu: Prepare for multiple DMA domain types >>    iommu/vt-d: Prepare for multiple DMA domain types >>    iommu: Express DMA strictness via the domain type >>    iommu: Expose DMA domain strictness via sysfs >>    iommu: Merge strictness and domain type configs >>    iommu/dma: Factor out flush queue init >>    iommu: Allow enabling non-strict mode dynamically >>    iommu/arm-smmu: Allow non-strict in pgtable_quirks interface >>    iommu: Only log strictness for DMA domains >> >>   .../ABI/testing/sysfs-kernel-iommu_groups     |  2 + >>   drivers/iommu/Kconfig                         | 80 +++++++++---------- >>   drivers/iommu/amd/iommu.c                     | 21 +---- >>   drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c   | 25 ++++-- >>   drivers/iommu/arm/arm-smmu/arm-smmu.c         | 29 ++++--- >>   drivers/iommu/arm/arm-smmu/qcom_iommu.c       |  8 -- >>   drivers/iommu/dma-iommu.c                     | 44 +++++----- >>   drivers/iommu/exynos-iommu.c                  | 18 +---- >>   drivers/iommu/intel/iommu.c                   | 23 ++---- >>   drivers/iommu/iommu.c                         | 53 +++++++----- >>   drivers/iommu/ipmmu-vmsa.c                    | 27 +------ >>   drivers/iommu/mtk_iommu.c                     |  6 -- >>   drivers/iommu/rockchip-iommu.c                | 11 +-- >>   drivers/iommu/sprd-iommu.c                    |  6 -- >>   drivers/iommu/sun50i-iommu.c                  | 12 +-- >>   drivers/iommu/virtio-iommu.c                  |  8 -- >>   include/linux/dma-iommu.h                     |  9 ++- >>   include/linux/iommu.h                         | 15 +++- >>   18 files changed, 171 insertions(+), 226 deletions(-) >> > > 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=-10.4 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 3C4C2C4338F for ; Thu, 29 Jul 2021 10:59:17 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (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 CA13560EE6 for ; Thu, 29 Jul 2021 10:59:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org CA13560EE6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 7FCFE608A5; Thu, 29 Jul 2021 10:59:16 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CLRJFasG25Zj; Thu, 29 Jul 2021 10:59:14 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp3.osuosl.org (Postfix) with ESMTPS id 423CB60861; Thu, 29 Jul 2021 10:59:14 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 05318C001A; Thu, 29 Jul 2021 10:59:14 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 56BCDC000E for ; Thu, 29 Jul 2021 10:59:12 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 377BF4044F for ; Thu, 29 Jul 2021 10:59:12 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id y29wt1zSd0J5 for ; Thu, 29 Jul 2021 10:59:10 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp4.osuosl.org (Postfix) with ESMTP id 9E61840178 for ; Thu, 29 Jul 2021 10:59:10 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 2D97D6D; Thu, 29 Jul 2021 03:59:09 -0700 (PDT) Received: from [10.57.36.146] (unknown [10.57.36.146]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 32E8D3F66F; Thu, 29 Jul 2021 03:59:07 -0700 (PDT) Subject: Re: [PATCH v2 00/24] iommu: Refactor DMA domain strictness To: "chenxiang (M)" , joro@8bytes.org, will@kernel.org References: <49c7ca2c-11a3-ff93-05bc-feb482a79980@hisilicon.com> From: Robin Murphy Message-ID: <942c3da1-fb79-967a-d50e-4cbf5331261c@arm.com> Date: Thu, 29 Jul 2021 11:59:01 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: <49c7ca2c-11a3-ff93-05bc-feb482a79980@hisilicon.com> Content-Language: en-GB Cc: Jean-Philippe Brucker , Heiko Stuebner , Geert Uytterhoeven , "linuxarm@huawei.com" , linux-kernel@vger.kernel.org, Chunyan Zhang , dianders@chromium.org, iommu@lists.linux-foundation.org, Maxime Ripard , linux-arm-kernel@lists.infradead.org X-BeenThere: iommu@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Development issues for Linux IOMMU support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: iommu-bounces@lists.linux-foundation.org Sender: "iommu" T24gMjAyMS0wNy0yOSAwMzo1NSwgY2hlbnhpYW5nIChNKSB3cm90ZToKPiBIaSBSb2JpbiwKPiAK PiAKPiDlnKggMjAyMS83LzI4IDIzOjU4LCBSb2JpbiBNdXJwaHkg5YaZ6YGTOgo+PiBIaSBhbGws Cj4+Cj4+IEhlcmUncyB2MiB3aGVyZSB0aGluZ3Mgc3RhcnQgdG8gbG9vayBtb3JlIHJlYWxpc3Rp YywgaGVuY2UgdGhlIGV4cGFuZGVkCj4+IENDIGxpc3QuIFRoZSBwYXRjaGVzIGFyZSBub3cgYmFz ZWQgb24gdGhlIGN1cnJlbnQgaW9tbXUvY29yZSBicmFuY2ggdG8KPj4gdGFrZSBKb2huJ3MgaW9t bXVfc2V0X2RtYV9zdHJpY3QoKSBjbGVhbnVwIGludG8gYWNjb3VudC4KPj4KPj4gVGhlIHNlcmll cyByZW1pYWlucyBpbiB0d28gKG9yIHBvc3NpYmx5IDMpIGxvZ2ljYWwgcGFydHMgLSBmb3IgcGVv cGxlCj4+IENDJ2Qgb24gY29va2llIGNsZWFudXAgcGF0Y2hlcywgdGhlIGxhdGVyIHBhcnRzIHNo b3VsZCBub3QgYWZmZWN0IHlvdQo+PiBzaW5jZSB5b3VyIGRyaXZlcnMgZG9uJ3QgaW1wbGVtZW50 IG5vbi1zdHJpY3QgbW9kZSBhbnl3YXk7IHRoZSBjbGVhbnVwCj4+IGlzIGFsbCBwcmV0dHkgc3Ry YWlnaHRmb3J3YXJkLCBidXQgcGxlYXNlIGRvIHllbGwgYXQgbWUgaWYgSSd2ZSBtYW5hZ2VkCj4+ IHRvIGxldCBhIHNpbGx5IG1pc3Rha2Ugc2xpcCB0aHJvdWdoIGFuZCBicm9rZW4geW91ciBkcml2 ZXIuCj4+Cj4+IFRoaXMgdGltZSBJIGhhdmUgYWxzbyBidWlsZC10ZXN0ZWQgeDg2IGFzIHdlbGwg YXMgYXJtNjQgOikKPiAKPiBJIGhhdmUgdGVzdGVkIHRob3NlIHBhdGNoc2V0IG9uIEFSTTY0IHdp dGggU01NVVYzLCBhbmQgdGhlIHRlc3RjYXNlcyBhcmUgCj4gYXMgZm9sbG93czoKPiAtIEJvb3Qg d2l0aCBpb21tdS5zdHJpY3Q9MCwgcnVubmluZyBmaW8gYW5kIGl0IHdvcmtzIHdlbGw7Cj4gLSBC b290IHdpdGggaW9tbXUuc3RyaWN0PTEsIHJ1bm5pbmcgZmlvIGFuZCBpdCB3b3JrcyB3ZWxsOwo+ IC0gQ2hhbmdlIHN0cmljdCBtb2RlIHRvIGxhenkgbW9kZSB3aGVuIGJ1aWxkaW5nLCB0aGUgY2hh bmdlIHRha2VzIGVmZmVjdDsKPiAtIEJvb3Qgd2l0aG91dCBpb21tdS5zdHJpY3QoZGVmYXVsdCBz dHJpY3QgbW9kZSksIGNoYW5nZSB0aGUgc3lzZnMgCj4gaW50ZXJmYWNlIHR5cGUgZnJvbSBETUEg dG8gRE1BLUZRIGR5bmFtaWNhbGx5IGR1cmluZyBydW5uaW5nIGZpbywgYW5kIGl0IAo+IHdvcmtz IHdlbGw7Cj4gLSBCb290IHdpdGhvdXQgaW9tbXUuc3RyaWN0KGRlZmF1bHQgc3RyaWN0IG1vZGUp LCBjaGFuZ2UgdGhlIHN5c2ZzIAo+IGludGVyZmFjZSB0eXBlIGZyb20gRE1BLUZRIHRvIERNQSBk eW5hbWljYWxseSwgYW5kIGl0IGlzIG5vdCBhbGxvd2VkIGFuZCAKPiBwcmludCAiRGV2aWNlIG9y IHJlc291cmNlIGJ1c3kiCj4gKGkga25vdyBpdCBpcyBxdWFsaWZpZWQsIGFuZCB3ZSBjYW4gY2hh bmdlIG5vLXN0cmljdCBtb2RlIHRvIHN0cmljdCBieSAKPiB1bmJpbmQgdGhlIGRyaXZlciAtPiBj aGFuZ2UgdGhlIHN5c2ZzIGludGVyZmFjZSAodHlwZSktPmJpbmQgdGhlIGRyaXZlciAKPiAodGVz dGVkIHRoaXMgYW5kIGl0IHdvcmtzIHdlbGwpLAo+IGJ1dCBpIGhhdmUgYSBzbWFsbCBxdWVzdGlv bjogaXMgaXQgYWxzbyBwb3NzaWJsZSB0byBjaGFuZ2UgZnJvbSBETUEtRlEgCj4gdG8gRE1BIGR5 bmFtaWNhbGx5PyApCgpBcyBwYXRjaCAjMjIgbWVudGlvbnMsIEkgdGhpbmsgaXQncyBwb3NzaWJs ZSBpbiBwcmluY2lwbGUsIGJ1dCBpdCdzIApjZXJ0YWlubHkgdHJpY2tpZXIuIFdoZW4gZW5hYmxp bmcgYSBmbHVzaCBxdWV1ZSwgaXQgZG9lc24ndCBtYXR0ZXIgaWYgaXQgCnRha2VzIGEgd2hpbGUg Zm9yIG90aGVyIHRocmVhZHMgdG8gbm90aWNlIHRoYXQgY29va2llLT5mcV9kb21haW4gaXMgbm93 IApzZXQgYW5kIHN0b3AgZG9pbmcgc3luY2hyb25vdXMgaW52YWxpZGF0aW9ucyAoYW5kIGluIHRo ZSBTTU1VIGNhc2UgaXQgCnNlZW1zIGxpa2UgdGhlcmUgYXJlIHByb2JhYmx5IGVub3VnaCBkZXBl bmRlbmNpZXMgdG8gYWRkaXRpb25hbGx5IApwcmV2ZW50IHRoZSBpb19wZ3RhYmxlIHF1aXJrIGJl aW5nIG9ic2VydmFibGUgYmVmb3JlIHRoYXQpLiBIb3dldmVyIHdoZW4gCmRpc2FibGluZywgd2Un ZCBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGF0IHRoZSBkcml2ZXIgKmhhcyogc3RhcnRl ZCAKaW52YWxpZGF0aW5nIHN0cmljdGx5IGJlZm9yZSB3ZSBzdG9wIHF1ZXVlaW5nIGZyZWVkIElP VkFzLCBwbHVzIHdlIG5lZWQgCnRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGF0IHdlJ3ZlIHN0b3Bw ZWQgcXVldWVpbmcgZnJlZWQgSU9WQXMgYmVmb3JlIHdlIAphdHRlbXB0IHRvIHRlYXIgZG93biB0 aGUgZmx1c2ggcXVldWUgaXRzZWxmLiBJJ20gbm90IHN1cmUgb2ZmLWhhbmQgaG93IApmZWFzaWJs ZSBpdCB3b3VsZCBiZSB0byBwdXQgYWxsIHRoYXQgc3luY2hyb25pc2F0aW9uIGluIHRoZSByaWdo dCBwbGFjZXMgCndpdGhvdXQgaXQgYWxzbyBpbXBhY3Rpbmcgbm9ybWFsIG9wZXJhdGlvbi4KCkZ1 cnRoZXJtb3JlLCBhcyBhbHNvIG5vdGVkLCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBnb29k IHJlYXNvbiBmb3IgCmV2ZXIgYWN0dWFsbHkgbmVlZGluZyB0byBkbyB0aGF0LiBJZiBhIGRldmlj ZSBpc24ndCB0cnVzdGVkLCBpdCBzaG91bGQgCmJlIGdpdmVuIGEgc3RyaWN0IGRvbWFpbiAqYmVm b3JlKiBhbnkgZHJpdmVyIGhhcyBhIGNoYW5jZSB0byBzdGFydCBkb2luZyAKYW55dGhpbmcsIG9y IHlvdXIgdHJ1c3QgbW9kZWwgaXMgYnJva2VuIGFuZCBwcmV0dHkgdXNlbGVzcy4gSSBjYW4gCmlt YWdpbmUgc29tZSBuaWNoZSBkZWJ1Z2dpbmcvYmVuY2htYXJraW5nIGNhc2VzIHdoZXJlIGl0IG1p Z2h0IGhlbHAgc2F2ZSAKYSBiaXQgb2YgZWZmb3J0LCBidXQgbm90aGluZyB3aXRoIGEgc3Ryb25n IGVub3VnaCBqdXN0aWZpY2F0aW9uIHRvIGJlIAp3b3J0aCBzdXBwb3J0aW5nIGluIG1haW5saW5l LgoKPiBBbnl3YXksIHBsZWFzZSBmZWVsIGZyZWUgdG8gYWRkIDoKPiBUZXN0ZWQtYnk6IFhpYW5n IENoZW4gPGNoZW54aWFuZzY2QGhpc2lsaWNvbi5jb20+CgpUaGF0J3MgZ3JlYXQsIHRoYW5rcyEK ClJvYmluLgoKPj4gQ2hhbmdlcyBpbiB2MjoKPj4KPj4gLSBBZGQgaW9tbXVfaXNfZG1hX2RvbWFp bigpIGhlbHBlciB0byBhYnN0cmFjdCBmbGFnIGNoZWNrIChhbmQgaGVscAo+PiDCoMKgIGF2b2lk IHNpbGx5IHR5cG9zIGxpa2UgdGhlIG9uZSBpbiB2MSkuCj4+IC0gVHdlYWsgYSBmZXcgY29tbWl0 IG1lc3NhZ2VzIGZvciBzcGVsbGluZyBhbmQgKGhvcGVmdWxseSkgY2xhcml0eS4KPj4gLSBNb3Zl IHRoZSBpb21tdV9jcmVhdGVfZGV2aWNlX2RpcmVjdF9tYXBwaW5ncygpIHVwZGF0ZSB0byBwYXRj aCAjMTQKPj4gwqDCoCB3aGVyZSBpdCBzaG91bGQgaGF2ZSBiZWVuLgo+PiAtIFJld3JpdGUgcGF0 Y2ggIzIwIGFzIGEgY29udmVyc2lvbiBvZiB0aGUgbm93LWV4aXN0aW5nIG9wdGlvbi4KPj4gLSBD bGVhbiB1cCB0aGUgb3BzLT5mbHVzaF9pb3RsYl9hbGwgY2hlY2sgd2hpY2ggaXMgYWxzbyBtYWRl IHJlZHVuZGFudAo+PiDCoMKgIGJ5IHRoZSBuZXcgZG9tYWluIHR5cGUKPj4gLSBBZGQgcGF0Y2gg IzI0LCB3aGljaCBpcyBhcmd1YWJseSB0YW5nZW50aWFsLCBidXQgaXQgd2FzIHNvbWV0aGluZyBJ Cj4+IMKgwqAgc3BvdHRlZCBkdXJpbmcgdGhlIHJlYmFzZSwgc28uLi4KPj4KPj4gT25jZSBhZ2Fp biwgdGhlIHdob2xlIGxvdCBpcyBhdmFpbGFibGUgb24gYSBicmFuY2ggaGVyZToKPj4KPj4gaHR0 cHM6Ly9naXRsYWIuYXJtLmNvbS9saW51eC1hcm0vbGludXgtcm0vLS90cmVlL2lvbW11L2ZxCj4+ Cj4+IFRoYW5rcywKPj4gUm9iaW4uCj4+Cj4+Cj4+IENDOiBNYXJlayBTenlwcm93c2tpIDxtLnN6 eXByb3dza2lAc2Ftc3VuZy5jb20+Cj4+IENDOiBZb3NoaWhpcm8gU2hpbW9kYSA8eW9zaGloaXJv LnNoaW1vZGEudWhAcmVuZXNhcy5jb20+Cj4+IENDOiBHZWVydCBVeXR0ZXJob2V2ZW4gPGdlZXJ0 K3JlbmVzYXNAZ2xpZGVyLmJlPgo+PiBDQzogWW9uZyBXdSA8eW9uZy53dUBtZWRpYXRlay5jb20+ Cj4+IENDOiBIZWlrbyBTdHVlYm5lciA8aGVpa29Ac250ZWNoLmRlPgo+PiBDQzogQ2h1bnlhbiBa aGFuZyA8Y2h1bnlhbi56aGFuZ0B1bmlzb2MuY29tPgo+PiBDQzogQ2h1bnlhbiBaaGFuZyA8Y2h1 bnlhbi56aGFuZ0B1bmlzb2MuY29tPgo+PiBDQzogTWF4aW1lIFJpcGFyZCA8bXJpcGFyZEBrZXJu ZWwub3JnPgo+PiBDQzogSmVhbi1QaGlsaXBwZSBCcnVja2VyIDxqZWFuLXBoaWxpcHBlQGxpbmFy by5vcmc+Cj4+Cj4+IFJvYmluIE11cnBoeSAoMjQpOgo+PiDCoMKgIGlvbW11OiBQdWxsIElPVkEg Y29va2llIG1hbmFnZW1lbnQgaW50byB0aGUgY29yZQo+PiDCoMKgIGlvbW11L2FtZDogRHJvcCBJ T1ZBIGNvb2tpZSBtYW5hZ2VtZW50Cj4+IMKgwqAgaW9tbXUvYXJtLXNtbXU6IERyb3AgSU9WQSBj b29raWUgbWFuYWdlbWVudAo+PiDCoMKgIGlvbW11L3Z0LWQ6IERyb3AgSU9WQSBjb29raWUgbWFu YWdlbWVudAo+PiDCoMKgIGlvbW11L2V4eW5vczogRHJvcCBJT1ZBIGNvb2tpZSBtYW5hZ2VtZW50 Cj4+IMKgwqAgaW9tbXUvaXBtbXUtdm1zYTogRHJvcCBJT1ZBIGNvb2tpZSBtYW5hZ2VtZW50Cj4+ IMKgwqAgaW9tbXUvbXRrOiBEcm9wIElPVkEgY29va2llIG1hbmFnZW1lbnQKPj4gwqDCoCBpb21t dS9yb2NrY2hpcDogRHJvcCBJT1ZBIGNvb2tpZSBtYW5hZ2VtZW50Cj4+IMKgwqAgaW9tbXUvc3By ZDogRHJvcCBJT1ZBIGNvb2tpZSBtYW5hZ2VtZW50Cj4+IMKgwqAgaW9tbXUvc3VuNTBpOiBEcm9w IElPVkEgY29va2llIG1hbmFnZW1lbnQKPj4gwqDCoCBpb21tdS92aXJ0aW86IERyb3AgSU9WQSBj b29raWUgbWFuYWdlbWVudAo+PiDCoMKgIGlvbW11L2RtYTogVW5leHBvcnQgSU9WQSBjb29raWUg bWFuYWdlbWVudAo+PiDCoMKgIGlvbW11L2RtYTogUmVtb3ZlIHJlZHVuZGFudCAiIWRldiIgY2hl Y2tzCj4+IMKgwqAgaW9tbXU6IEludHJvZHVjZSBleHBsaWNpdCB0eXBlIGZvciBub24tc3RyaWN0 IERNQSBkb21haW5zCj4+IMKgwqAgaW9tbXUvYW1kOiBQcmVwYXJlIGZvciBtdWx0aXBsZSBETUEg ZG9tYWluIHR5cGVzCj4+IMKgwqAgaW9tbXUvYXJtLXNtbXU6IFByZXBhcmUgZm9yIG11bHRpcGxl IERNQSBkb21haW4gdHlwZXMKPj4gwqDCoCBpb21tdS92dC1kOiBQcmVwYXJlIGZvciBtdWx0aXBs ZSBETUEgZG9tYWluIHR5cGVzCj4+IMKgwqAgaW9tbXU6IEV4cHJlc3MgRE1BIHN0cmljdG5lc3Mg dmlhIHRoZSBkb21haW4gdHlwZQo+PiDCoMKgIGlvbW11OiBFeHBvc2UgRE1BIGRvbWFpbiBzdHJp Y3RuZXNzIHZpYSBzeXNmcwo+PiDCoMKgIGlvbW11OiBNZXJnZSBzdHJpY3RuZXNzIGFuZCBkb21h aW4gdHlwZSBjb25maWdzCj4+IMKgwqAgaW9tbXUvZG1hOiBGYWN0b3Igb3V0IGZsdXNoIHF1ZXVl IGluaXQKPj4gwqDCoCBpb21tdTogQWxsb3cgZW5hYmxpbmcgbm9uLXN0cmljdCBtb2RlIGR5bmFt aWNhbGx5Cj4+IMKgwqAgaW9tbXUvYXJtLXNtbXU6IEFsbG93IG5vbi1zdHJpY3QgaW4gcGd0YWJs ZV9xdWlya3MgaW50ZXJmYWNlCj4+IMKgwqAgaW9tbXU6IE9ubHkgbG9nIHN0cmljdG5lc3MgZm9y IERNQSBkb21haW5zCj4+Cj4+IMKgIC4uLi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtaW9tbXVf Z3JvdXBzwqDCoMKgwqAgfMKgIDIgKwo+PiDCoCBkcml2ZXJzL2lvbW11L0tjb25maWfCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA4MCArKysrKysrKyst LS0tLS0tLS0tCj4+IMKgIGRyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMjEgKy0tLS0KPj4gwqAgZHJpdmVycy9pb21tdS9h cm0vYXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMuY8KgwqAgfCAyNSArKysrLS0KPj4gwqAgZHJpdmVy cy9pb21tdS9hcm0vYXJtLXNtbXUvYXJtLXNtbXUuY8KgwqDCoMKgwqDCoMKgwqAgfCAyOSArKysr LS0tCj4+IMKgIGRyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11L3Fjb21faW9tbXUuY8KgwqDCoMKg wqDCoCB8wqAgOCAtLQo+PiDCoCBkcml2ZXJzL2lvbW11L2RtYS1pb21tdS5jwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQ0ICsrKysrLS0tLS0KPj4gwqAgZHJpdmVy cy9pb21tdS9leHlub3MtaW9tbXUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCAxOCArLS0tLQo+PiDCoCBkcml2ZXJzL2lvbW11L2ludGVsL2lvbW11LmPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAyMyArKy0tLS0KPj4gwqAgZHJpdmVycy9pb21tdS9p b21tdS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg NTMgKysrKysrKy0tLS0tCj4+IMKgIGRyaXZlcnMvaW9tbXUvaXBtbXUtdm1zYS5jwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAyNyArLS0tLS0tCj4+IMKgIGRyaXZlcnMv aW9tbXUvbXRrX2lvbW11LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHzCoCA2IC0tCj4+IMKgIGRyaXZlcnMvaW9tbXUvcm9ja2NoaXAtaW9tbXUuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8IDExICstLQo+PiDCoCBkcml2ZXJzL2lvbW11L3NwcmQtaW9t bXUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA2IC0tCj4+IMKg IGRyaXZlcnMvaW9tbXUvc3VuNTBpLWlvbW11LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgMTIgKy0tCj4+IMKgIGRyaXZlcnMvaW9tbXUvdmlydGlvLWlvbW11LmPCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA4IC0tCj4+IMKgIGluY2x1ZGUvbGludXgv ZG1hLWlvbW11LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA5 ICsrLQo+PiDCoCBpbmNsdWRlL2xpbnV4L2lvbW11LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAxNSArKystCj4+IMKgIDE4IGZpbGVzIGNoYW5nZWQs IDE3MSBpbnNlcnRpb25zKCspLCAyMjYgZGVsZXRpb25zKC0pCj4+Cj4gCj4gCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlvbW11IG1haWxpbmcgbGlzdApp b21tdUBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRh dGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9pb21tdQ== 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=-11.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=unavailable 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 A62B5C4338F for ; Thu, 29 Jul 2021 11:01:17 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 789F260524 for ; Thu, 29 Jul 2021 11:01:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 789F260524 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=srXvaKHXWvrZtiidzBRyNtGeKvZuK0IDRmDKD63t6rM=; b=C7y8X5CD8L0shbIoUNpF2zOoWD qIgZKygGhOCQHp6FpeXfyMGWHk9FaRbBT/CMimgJX51nnA/l618e6KBztv1iryh72iFjj9WVDJQzL /NlnMkxIJGrmctulHy5CEnYluQa1PGEuwsA9h05VW8GQ8kfmM5QsohfZmdV13M8Su+LsWQH8GTGyX Fjs17ol8h5F4oFTpV7DS4PiludTYcmoiiFB9kqes+z5g9TTx+He9Q7SZcxpD2TEwxdzZg7o1S9fCC oDSe8v1reizuGs+3dgHjQCfmsrGUYYqDVrUuruhNTeUTpoZKpZUNDMUzpM0C3Js58nGUbk2ZMBKxP OXpazpzg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m93ky-003vUd-43; Thu, 29 Jul 2021 10:59:16 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m93kt-003vRg-4Y for linux-arm-kernel@lists.infradead.org; Thu, 29 Jul 2021 10:59:13 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 2D97D6D; Thu, 29 Jul 2021 03:59:09 -0700 (PDT) Received: from [10.57.36.146] (unknown [10.57.36.146]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 32E8D3F66F; Thu, 29 Jul 2021 03:59:07 -0700 (PDT) Subject: Re: [PATCH v2 00/24] iommu: Refactor DMA domain strictness To: "chenxiang (M)" , joro@8bytes.org, will@kernel.org Cc: Maxime Ripard , Jean-Philippe Brucker , Heiko Stuebner , Geert Uytterhoeven , linux-kernel@vger.kernel.org, Chunyan Zhang , dianders@chromium.org, iommu@lists.linux-foundation.org, linux-arm-kernel@lists.infradead.org, "linuxarm@huawei.com" References: <49c7ca2c-11a3-ff93-05bc-feb482a79980@hisilicon.com> From: Robin Murphy Message-ID: <942c3da1-fb79-967a-d50e-4cbf5331261c@arm.com> Date: Thu, 29 Jul 2021 11:59:01 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: <49c7ca2c-11a3-ff93-05bc-feb482a79980@hisilicon.com> Content-Language: en-GB X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210729_035911_333117_1294FA45 X-CRM114-Status: GOOD ( 34.23 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMjAyMS0wNy0yOSAwMzo1NSwgY2hlbnhpYW5nIChNKSB3cm90ZToKPiBIaSBSb2JpbiwKPiAK PiAKPiDlnKggMjAyMS83LzI4IDIzOjU4LCBSb2JpbiBNdXJwaHkg5YaZ6YGTOgo+PiBIaSBhbGws Cj4+Cj4+IEhlcmUncyB2MiB3aGVyZSB0aGluZ3Mgc3RhcnQgdG8gbG9vayBtb3JlIHJlYWxpc3Rp YywgaGVuY2UgdGhlIGV4cGFuZGVkCj4+IENDIGxpc3QuIFRoZSBwYXRjaGVzIGFyZSBub3cgYmFz ZWQgb24gdGhlIGN1cnJlbnQgaW9tbXUvY29yZSBicmFuY2ggdG8KPj4gdGFrZSBKb2huJ3MgaW9t bXVfc2V0X2RtYV9zdHJpY3QoKSBjbGVhbnVwIGludG8gYWNjb3VudC4KPj4KPj4gVGhlIHNlcmll cyByZW1pYWlucyBpbiB0d28gKG9yIHBvc3NpYmx5IDMpIGxvZ2ljYWwgcGFydHMgLSBmb3IgcGVv cGxlCj4+IENDJ2Qgb24gY29va2llIGNsZWFudXAgcGF0Y2hlcywgdGhlIGxhdGVyIHBhcnRzIHNo b3VsZCBub3QgYWZmZWN0IHlvdQo+PiBzaW5jZSB5b3VyIGRyaXZlcnMgZG9uJ3QgaW1wbGVtZW50 IG5vbi1zdHJpY3QgbW9kZSBhbnl3YXk7IHRoZSBjbGVhbnVwCj4+IGlzIGFsbCBwcmV0dHkgc3Ry YWlnaHRmb3J3YXJkLCBidXQgcGxlYXNlIGRvIHllbGwgYXQgbWUgaWYgSSd2ZSBtYW5hZ2VkCj4+ IHRvIGxldCBhIHNpbGx5IG1pc3Rha2Ugc2xpcCB0aHJvdWdoIGFuZCBicm9rZW4geW91ciBkcml2 ZXIuCj4+Cj4+IFRoaXMgdGltZSBJIGhhdmUgYWxzbyBidWlsZC10ZXN0ZWQgeDg2IGFzIHdlbGwg YXMgYXJtNjQgOikKPiAKPiBJIGhhdmUgdGVzdGVkIHRob3NlIHBhdGNoc2V0IG9uIEFSTTY0IHdp dGggU01NVVYzLCBhbmQgdGhlIHRlc3RjYXNlcyBhcmUgCj4gYXMgZm9sbG93czoKPiAtIEJvb3Qg d2l0aCBpb21tdS5zdHJpY3Q9MCwgcnVubmluZyBmaW8gYW5kIGl0IHdvcmtzIHdlbGw7Cj4gLSBC b290IHdpdGggaW9tbXUuc3RyaWN0PTEsIHJ1bm5pbmcgZmlvIGFuZCBpdCB3b3JrcyB3ZWxsOwo+ IC0gQ2hhbmdlIHN0cmljdCBtb2RlIHRvIGxhenkgbW9kZSB3aGVuIGJ1aWxkaW5nLCB0aGUgY2hh bmdlIHRha2VzIGVmZmVjdDsKPiAtIEJvb3Qgd2l0aG91dCBpb21tdS5zdHJpY3QoZGVmYXVsdCBz dHJpY3QgbW9kZSksIGNoYW5nZSB0aGUgc3lzZnMgCj4gaW50ZXJmYWNlIHR5cGUgZnJvbSBETUEg dG8gRE1BLUZRIGR5bmFtaWNhbGx5IGR1cmluZyBydW5uaW5nIGZpbywgYW5kIGl0IAo+IHdvcmtz IHdlbGw7Cj4gLSBCb290IHdpdGhvdXQgaW9tbXUuc3RyaWN0KGRlZmF1bHQgc3RyaWN0IG1vZGUp LCBjaGFuZ2UgdGhlIHN5c2ZzIAo+IGludGVyZmFjZSB0eXBlIGZyb20gRE1BLUZRIHRvIERNQSBk eW5hbWljYWxseSwgYW5kIGl0IGlzIG5vdCBhbGxvd2VkIGFuZCAKPiBwcmludCAiRGV2aWNlIG9y IHJlc291cmNlIGJ1c3kiCj4gKGkga25vdyBpdCBpcyBxdWFsaWZpZWQsIGFuZCB3ZSBjYW4gY2hh bmdlIG5vLXN0cmljdCBtb2RlIHRvIHN0cmljdCBieSAKPiB1bmJpbmQgdGhlIGRyaXZlciAtPiBj aGFuZ2UgdGhlIHN5c2ZzIGludGVyZmFjZSAodHlwZSktPmJpbmQgdGhlIGRyaXZlciAKPiAodGVz dGVkIHRoaXMgYW5kIGl0IHdvcmtzIHdlbGwpLAo+IGJ1dCBpIGhhdmUgYSBzbWFsbCBxdWVzdGlv bjogaXMgaXQgYWxzbyBwb3NzaWJsZSB0byBjaGFuZ2UgZnJvbSBETUEtRlEgCj4gdG8gRE1BIGR5 bmFtaWNhbGx5PyApCgpBcyBwYXRjaCAjMjIgbWVudGlvbnMsIEkgdGhpbmsgaXQncyBwb3NzaWJs ZSBpbiBwcmluY2lwbGUsIGJ1dCBpdCdzIApjZXJ0YWlubHkgdHJpY2tpZXIuIFdoZW4gZW5hYmxp bmcgYSBmbHVzaCBxdWV1ZSwgaXQgZG9lc24ndCBtYXR0ZXIgaWYgaXQgCnRha2VzIGEgd2hpbGUg Zm9yIG90aGVyIHRocmVhZHMgdG8gbm90aWNlIHRoYXQgY29va2llLT5mcV9kb21haW4gaXMgbm93 IApzZXQgYW5kIHN0b3AgZG9pbmcgc3luY2hyb25vdXMgaW52YWxpZGF0aW9ucyAoYW5kIGluIHRo ZSBTTU1VIGNhc2UgaXQgCnNlZW1zIGxpa2UgdGhlcmUgYXJlIHByb2JhYmx5IGVub3VnaCBkZXBl bmRlbmNpZXMgdG8gYWRkaXRpb25hbGx5IApwcmV2ZW50IHRoZSBpb19wZ3RhYmxlIHF1aXJrIGJl aW5nIG9ic2VydmFibGUgYmVmb3JlIHRoYXQpLiBIb3dldmVyIHdoZW4gCmRpc2FibGluZywgd2Un ZCBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGF0IHRoZSBkcml2ZXIgKmhhcyogc3RhcnRl ZCAKaW52YWxpZGF0aW5nIHN0cmljdGx5IGJlZm9yZSB3ZSBzdG9wIHF1ZXVlaW5nIGZyZWVkIElP VkFzLCBwbHVzIHdlIG5lZWQgCnRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGF0IHdlJ3ZlIHN0b3Bw ZWQgcXVldWVpbmcgZnJlZWQgSU9WQXMgYmVmb3JlIHdlIAphdHRlbXB0IHRvIHRlYXIgZG93biB0 aGUgZmx1c2ggcXVldWUgaXRzZWxmLiBJJ20gbm90IHN1cmUgb2ZmLWhhbmQgaG93IApmZWFzaWJs ZSBpdCB3b3VsZCBiZSB0byBwdXQgYWxsIHRoYXQgc3luY2hyb25pc2F0aW9uIGluIHRoZSByaWdo dCBwbGFjZXMgCndpdGhvdXQgaXQgYWxzbyBpbXBhY3Rpbmcgbm9ybWFsIG9wZXJhdGlvbi4KCkZ1 cnRoZXJtb3JlLCBhcyBhbHNvIG5vdGVkLCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBnb29k IHJlYXNvbiBmb3IgCmV2ZXIgYWN0dWFsbHkgbmVlZGluZyB0byBkbyB0aGF0LiBJZiBhIGRldmlj ZSBpc24ndCB0cnVzdGVkLCBpdCBzaG91bGQgCmJlIGdpdmVuIGEgc3RyaWN0IGRvbWFpbiAqYmVm b3JlKiBhbnkgZHJpdmVyIGhhcyBhIGNoYW5jZSB0byBzdGFydCBkb2luZyAKYW55dGhpbmcsIG9y IHlvdXIgdHJ1c3QgbW9kZWwgaXMgYnJva2VuIGFuZCBwcmV0dHkgdXNlbGVzcy4gSSBjYW4gCmlt YWdpbmUgc29tZSBuaWNoZSBkZWJ1Z2dpbmcvYmVuY2htYXJraW5nIGNhc2VzIHdoZXJlIGl0IG1p Z2h0IGhlbHAgc2F2ZSAKYSBiaXQgb2YgZWZmb3J0LCBidXQgbm90aGluZyB3aXRoIGEgc3Ryb25n IGVub3VnaCBqdXN0aWZpY2F0aW9uIHRvIGJlIAp3b3J0aCBzdXBwb3J0aW5nIGluIG1haW5saW5l LgoKPiBBbnl3YXksIHBsZWFzZSBmZWVsIGZyZWUgdG8gYWRkIDoKPiBUZXN0ZWQtYnk6IFhpYW5n IENoZW4gPGNoZW54aWFuZzY2QGhpc2lsaWNvbi5jb20+CgpUaGF0J3MgZ3JlYXQsIHRoYW5rcyEK ClJvYmluLgoKPj4gQ2hhbmdlcyBpbiB2MjoKPj4KPj4gLSBBZGQgaW9tbXVfaXNfZG1hX2RvbWFp bigpIGhlbHBlciB0byBhYnN0cmFjdCBmbGFnIGNoZWNrIChhbmQgaGVscAo+PiDCoMKgIGF2b2lk IHNpbGx5IHR5cG9zIGxpa2UgdGhlIG9uZSBpbiB2MSkuCj4+IC0gVHdlYWsgYSBmZXcgY29tbWl0 IG1lc3NhZ2VzIGZvciBzcGVsbGluZyBhbmQgKGhvcGVmdWxseSkgY2xhcml0eS4KPj4gLSBNb3Zl IHRoZSBpb21tdV9jcmVhdGVfZGV2aWNlX2RpcmVjdF9tYXBwaW5ncygpIHVwZGF0ZSB0byBwYXRj aCAjMTQKPj4gwqDCoCB3aGVyZSBpdCBzaG91bGQgaGF2ZSBiZWVuLgo+PiAtIFJld3JpdGUgcGF0 Y2ggIzIwIGFzIGEgY29udmVyc2lvbiBvZiB0aGUgbm93LWV4aXN0aW5nIG9wdGlvbi4KPj4gLSBD bGVhbiB1cCB0aGUgb3BzLT5mbHVzaF9pb3RsYl9hbGwgY2hlY2sgd2hpY2ggaXMgYWxzbyBtYWRl IHJlZHVuZGFudAo+PiDCoMKgIGJ5IHRoZSBuZXcgZG9tYWluIHR5cGUKPj4gLSBBZGQgcGF0Y2gg IzI0LCB3aGljaCBpcyBhcmd1YWJseSB0YW5nZW50aWFsLCBidXQgaXQgd2FzIHNvbWV0aGluZyBJ Cj4+IMKgwqAgc3BvdHRlZCBkdXJpbmcgdGhlIHJlYmFzZSwgc28uLi4KPj4KPj4gT25jZSBhZ2Fp biwgdGhlIHdob2xlIGxvdCBpcyBhdmFpbGFibGUgb24gYSBicmFuY2ggaGVyZToKPj4KPj4gaHR0 cHM6Ly9naXRsYWIuYXJtLmNvbS9saW51eC1hcm0vbGludXgtcm0vLS90cmVlL2lvbW11L2ZxCj4+ Cj4+IFRoYW5rcywKPj4gUm9iaW4uCj4+Cj4+Cj4+IENDOiBNYXJlayBTenlwcm93c2tpIDxtLnN6 eXByb3dza2lAc2Ftc3VuZy5jb20+Cj4+IENDOiBZb3NoaWhpcm8gU2hpbW9kYSA8eW9zaGloaXJv LnNoaW1vZGEudWhAcmVuZXNhcy5jb20+Cj4+IENDOiBHZWVydCBVeXR0ZXJob2V2ZW4gPGdlZXJ0 K3JlbmVzYXNAZ2xpZGVyLmJlPgo+PiBDQzogWW9uZyBXdSA8eW9uZy53dUBtZWRpYXRlay5jb20+ Cj4+IENDOiBIZWlrbyBTdHVlYm5lciA8aGVpa29Ac250ZWNoLmRlPgo+PiBDQzogQ2h1bnlhbiBa aGFuZyA8Y2h1bnlhbi56aGFuZ0B1bmlzb2MuY29tPgo+PiBDQzogQ2h1bnlhbiBaaGFuZyA8Y2h1 bnlhbi56aGFuZ0B1bmlzb2MuY29tPgo+PiBDQzogTWF4aW1lIFJpcGFyZCA8bXJpcGFyZEBrZXJu ZWwub3JnPgo+PiBDQzogSmVhbi1QaGlsaXBwZSBCcnVja2VyIDxqZWFuLXBoaWxpcHBlQGxpbmFy by5vcmc+Cj4+Cj4+IFJvYmluIE11cnBoeSAoMjQpOgo+PiDCoMKgIGlvbW11OiBQdWxsIElPVkEg Y29va2llIG1hbmFnZW1lbnQgaW50byB0aGUgY29yZQo+PiDCoMKgIGlvbW11L2FtZDogRHJvcCBJ T1ZBIGNvb2tpZSBtYW5hZ2VtZW50Cj4+IMKgwqAgaW9tbXUvYXJtLXNtbXU6IERyb3AgSU9WQSBj b29raWUgbWFuYWdlbWVudAo+PiDCoMKgIGlvbW11L3Z0LWQ6IERyb3AgSU9WQSBjb29raWUgbWFu YWdlbWVudAo+PiDCoMKgIGlvbW11L2V4eW5vczogRHJvcCBJT1ZBIGNvb2tpZSBtYW5hZ2VtZW50 Cj4+IMKgwqAgaW9tbXUvaXBtbXUtdm1zYTogRHJvcCBJT1ZBIGNvb2tpZSBtYW5hZ2VtZW50Cj4+ IMKgwqAgaW9tbXUvbXRrOiBEcm9wIElPVkEgY29va2llIG1hbmFnZW1lbnQKPj4gwqDCoCBpb21t dS9yb2NrY2hpcDogRHJvcCBJT1ZBIGNvb2tpZSBtYW5hZ2VtZW50Cj4+IMKgwqAgaW9tbXUvc3By ZDogRHJvcCBJT1ZBIGNvb2tpZSBtYW5hZ2VtZW50Cj4+IMKgwqAgaW9tbXUvc3VuNTBpOiBEcm9w IElPVkEgY29va2llIG1hbmFnZW1lbnQKPj4gwqDCoCBpb21tdS92aXJ0aW86IERyb3AgSU9WQSBj b29raWUgbWFuYWdlbWVudAo+PiDCoMKgIGlvbW11L2RtYTogVW5leHBvcnQgSU9WQSBjb29raWUg bWFuYWdlbWVudAo+PiDCoMKgIGlvbW11L2RtYTogUmVtb3ZlIHJlZHVuZGFudCAiIWRldiIgY2hl Y2tzCj4+IMKgwqAgaW9tbXU6IEludHJvZHVjZSBleHBsaWNpdCB0eXBlIGZvciBub24tc3RyaWN0 IERNQSBkb21haW5zCj4+IMKgwqAgaW9tbXUvYW1kOiBQcmVwYXJlIGZvciBtdWx0aXBsZSBETUEg ZG9tYWluIHR5cGVzCj4+IMKgwqAgaW9tbXUvYXJtLXNtbXU6IFByZXBhcmUgZm9yIG11bHRpcGxl IERNQSBkb21haW4gdHlwZXMKPj4gwqDCoCBpb21tdS92dC1kOiBQcmVwYXJlIGZvciBtdWx0aXBs ZSBETUEgZG9tYWluIHR5cGVzCj4+IMKgwqAgaW9tbXU6IEV4cHJlc3MgRE1BIHN0cmljdG5lc3Mg dmlhIHRoZSBkb21haW4gdHlwZQo+PiDCoMKgIGlvbW11OiBFeHBvc2UgRE1BIGRvbWFpbiBzdHJp Y3RuZXNzIHZpYSBzeXNmcwo+PiDCoMKgIGlvbW11OiBNZXJnZSBzdHJpY3RuZXNzIGFuZCBkb21h aW4gdHlwZSBjb25maWdzCj4+IMKgwqAgaW9tbXUvZG1hOiBGYWN0b3Igb3V0IGZsdXNoIHF1ZXVl IGluaXQKPj4gwqDCoCBpb21tdTogQWxsb3cgZW5hYmxpbmcgbm9uLXN0cmljdCBtb2RlIGR5bmFt aWNhbGx5Cj4+IMKgwqAgaW9tbXUvYXJtLXNtbXU6IEFsbG93IG5vbi1zdHJpY3QgaW4gcGd0YWJs ZV9xdWlya3MgaW50ZXJmYWNlCj4+IMKgwqAgaW9tbXU6IE9ubHkgbG9nIHN0cmljdG5lc3MgZm9y IERNQSBkb21haW5zCj4+Cj4+IMKgIC4uLi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtaW9tbXVf Z3JvdXBzwqDCoMKgwqAgfMKgIDIgKwo+PiDCoCBkcml2ZXJzL2lvbW11L0tjb25maWfCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA4MCArKysrKysrKyst LS0tLS0tLS0tCj4+IMKgIGRyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMjEgKy0tLS0KPj4gwqAgZHJpdmVycy9pb21tdS9h cm0vYXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMuY8KgwqAgfCAyNSArKysrLS0KPj4gwqAgZHJpdmVy cy9pb21tdS9hcm0vYXJtLXNtbXUvYXJtLXNtbXUuY8KgwqDCoMKgwqDCoMKgwqAgfCAyOSArKysr LS0tCj4+IMKgIGRyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11L3Fjb21faW9tbXUuY8KgwqDCoMKg wqDCoCB8wqAgOCAtLQo+PiDCoCBkcml2ZXJzL2lvbW11L2RtYS1pb21tdS5jwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQ0ICsrKysrLS0tLS0KPj4gwqAgZHJpdmVy cy9pb21tdS9leHlub3MtaW9tbXUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCAxOCArLS0tLQo+PiDCoCBkcml2ZXJzL2lvbW11L2ludGVsL2lvbW11LmPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAyMyArKy0tLS0KPj4gwqAgZHJpdmVycy9pb21tdS9p b21tdS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg NTMgKysrKysrKy0tLS0tCj4+IMKgIGRyaXZlcnMvaW9tbXUvaXBtbXUtdm1zYS5jwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAyNyArLS0tLS0tCj4+IMKgIGRyaXZlcnMv aW9tbXUvbXRrX2lvbW11LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHzCoCA2IC0tCj4+IMKgIGRyaXZlcnMvaW9tbXUvcm9ja2NoaXAtaW9tbXUuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8IDExICstLQo+PiDCoCBkcml2ZXJzL2lvbW11L3NwcmQtaW9t bXUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA2IC0tCj4+IMKg IGRyaXZlcnMvaW9tbXUvc3VuNTBpLWlvbW11LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgMTIgKy0tCj4+IMKgIGRyaXZlcnMvaW9tbXUvdmlydGlvLWlvbW11LmPCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA4IC0tCj4+IMKgIGluY2x1ZGUvbGludXgv ZG1hLWlvbW11LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA5 ICsrLQo+PiDCoCBpbmNsdWRlL2xpbnV4L2lvbW11LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAxNSArKystCj4+IMKgIDE4IGZpbGVzIGNoYW5nZWQs IDE3MSBpbnNlcnRpb25zKCspLCAyMjYgZGVsZXRpb25zKC0pCj4+Cj4gCj4gCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1h aWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xp c3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==