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=-5.5 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no 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 28CCCC48BDF for ; Fri, 18 Jun 2021 09:16:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 07E5B61209 for ; Fri, 18 Jun 2021 09:16:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230362AbhFRJSg (ORCPT ); Fri, 18 Jun 2021 05:18:36 -0400 Received: from foss.arm.com ([217.140.110.172]:37680 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229819AbhFRJSf (ORCPT ); Fri, 18 Jun 2021 05:18:35 -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 7BF711424; Fri, 18 Jun 2021 02:16:26 -0700 (PDT) Received: from [10.57.9.136] (unknown [10.57.9.136]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id F2FDE3F694; Fri, 18 Jun 2021 02:16:23 -0700 (PDT) Subject: Re: [PATCH v4 2/6] ACPI: Move IOMMU setup code out of IORT To: Jean-Philippe Brucker , Eric Auger Cc: kevin.tian@intel.com, mst@redhat.com, catalin.marinas@arm.com, sudeep.holla@arm.com, rjw@rjwysocki.net, virtualization@lists.linux-foundation.org, linux-acpi@vger.kernel.org, iommu@lists.linux-foundation.org, sebastien.boeuf@intel.com, guohanjun@huawei.com, will@kernel.org, dwmw2@infradead.org, linux-arm-kernel@lists.infradead.org, lenb@kernel.org References: <20210610075130.67517-1-jean-philippe@linaro.org> <20210610075130.67517-3-jean-philippe@linaro.org> <2c53c9cf-43e6-11c2-6ee3-530ad1f87aec@redhat.com> From: Robin Murphy Message-ID: Date: Fri, 18 Jun 2021 10:16:19 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: 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-acpi@vger.kernel.org On 2021-06-18 08:41, Jean-Philippe Brucker wrote: > Hi Eric, > > On Wed, Jun 16, 2021 at 11:35:13AM +0200, Eric Auger wrote: >>> -const struct iommu_ops *iort_iommu_configure_id(struct device *dev, >>> - const u32 *id_in) >>> +int iort_iommu_configure_id(struct device *dev, const u32 *id_in) >>> { >>> struct acpi_iort_node *node; >>> - const struct iommu_ops *ops; >>> + const struct iommu_ops *ops = NULL; > > Oops, I need to remove this (and add -Werror to my tests.) > > >>> +static const struct iommu_ops *acpi_iommu_configure_id(struct device *dev, >>> + const u32 *id_in) >>> +{ >>> + int err; >>> + const struct iommu_ops *ops; >>> + >>> + /* >>> + * If we already translated the fwspec there is nothing left to do, >>> + * return the iommu_ops. >>> + */ >>> + ops = acpi_iommu_fwspec_ops(dev); >>> + if (ops) >>> + return ops; >>> + >>> + err = iort_iommu_configure_id(dev, id_in); >>> + >>> + /* >>> + * If we have reason to believe the IOMMU driver missed the initial >>> + * add_device callback for dev, replay it to get things in order. >>> + */ >>> + if (!err && dev->bus && !device_iommu_mapped(dev)) >>> + err = iommu_probe_device(dev); >> Previously we had: >>     if (!err) { >>         ops = iort_fwspec_iommu_ops(dev); >>         err = iort_add_device_replay(dev); >>     } >> >> Please can you explain the transform? I see the >> >> acpi_iommu_fwspec_ops call below but is it not straightforward to me. > > I figured that iort_add_device_replay() is only used once and is > sufficiently simple to be inlined manually (saving 10 lines). Then I > replaced the ops assignment with returns, which saves another line and may > be slightly clearer? I guess it's mostly a matter of taste, the behavior > should be exactly the same. Right, IIRC the multiple assignments to ops were more of a haphazard evolution inherited from the DT version, and looking at it now I think the multiple-return is indeed a bit nicer. Similarly, it looks like the factoring out of iort_add_device_replay() was originally an attempt to encapsulate the IOMMU_API dependency, but things have moved around a lot since then, so that seems like a sensible simplification to make too. Robin. > >> Also the comment mentions replay. Unsure if it is still OK. > > The "replay" part is, but "add_device" isn't accurate because it has since > been replaced by probe_device. I'll refresh the comment. > > Thanks, > Jean > _______________________________________________ > iommu mailing list > iommu@lists.linux-foundation.org > https://lists.linuxfoundation.org/mailman/listinfo/iommu > 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=-5.5 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no 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 0A461C49EA3 for ; Fri, 18 Jun 2021 09:16:33 +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 AF05C613D6 for ; Fri, 18 Jun 2021 09:16:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AF05C613D6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=iommu-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 73308605E5; Fri, 18 Jun 2021 09:16:32 +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 GEJWJuiD2tOA; Fri, 18 Jun 2021 09:16:31 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp3.osuosl.org (Postfix) with ESMTPS id 5983260633; Fri, 18 Jun 2021 09:16:31 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id BBE91C0023; Fri, 18 Jun 2021 09:16:30 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 7BD7DC000B; Fri, 18 Jun 2021 09:16:29 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 68AF940661; Fri, 18 Jun 2021 09:16:29 +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 rq0wcLv2sy6j; Fri, 18 Jun 2021 09:16:28 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 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 DFCDF40623; Fri, 18 Jun 2021 09:16:27 +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 7BF711424; Fri, 18 Jun 2021 02:16:26 -0700 (PDT) Received: from [10.57.9.136] (unknown [10.57.9.136]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id F2FDE3F694; Fri, 18 Jun 2021 02:16:23 -0700 (PDT) Subject: Re: [PATCH v4 2/6] ACPI: Move IOMMU setup code out of IORT To: Jean-Philippe Brucker , Eric Auger References: <20210610075130.67517-1-jean-philippe@linaro.org> <20210610075130.67517-3-jean-philippe@linaro.org> <2c53c9cf-43e6-11c2-6ee3-530ad1f87aec@redhat.com> From: Robin Murphy Message-ID: Date: Fri, 18 Jun 2021 10:16:19 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: Content-Language: en-GB Cc: kevin.tian@intel.com, mst@redhat.com, catalin.marinas@arm.com, guohanjun@huawei.com, rjw@rjwysocki.net, virtualization@lists.linux-foundation.org, linux-acpi@vger.kernel.org, iommu@lists.linux-foundation.org, sebastien.boeuf@intel.com, sudeep.holla@arm.com, will@kernel.org, dwmw2@infradead.org, linux-arm-kernel@lists.infradead.org, lenb@kernel.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" T24gMjAyMS0wNi0xOCAwODo0MSwgSmVhbi1QaGlsaXBwZSBCcnVja2VyIHdyb3RlOgo+IEhpIEVy aWMsCj4gCj4gT24gV2VkLCBKdW4gMTYsIDIwMjEgYXQgMTE6MzU6MTNBTSArMDIwMCwgRXJpYyBB dWdlciB3cm90ZToKPj4+IC1jb25zdCBzdHJ1Y3QgaW9tbXVfb3BzICppb3J0X2lvbW11X2NvbmZp Z3VyZV9pZChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4+PiAtCQkJCQkJY29uc3QgdTMyICppZF9pbikK Pj4+ICtpbnQgaW9ydF9pb21tdV9jb25maWd1cmVfaWQoc3RydWN0IGRldmljZSAqZGV2LCBjb25z dCB1MzIgKmlkX2luKQo+Pj4gICB7Cj4+PiAgIAlzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKm5vZGU7 Cj4+PiAtCWNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKm9wczsKPj4+ICsJY29uc3Qgc3RydWN0IGlv bW11X29wcyAqb3BzID0gTlVMTDsKPiAKPiBPb3BzLCBJIG5lZWQgdG8gcmVtb3ZlIHRoaXMgKGFu ZCBhZGQgLVdlcnJvciB0byBteSB0ZXN0cy4pCj4gCj4gCj4+PiArc3RhdGljIGNvbnN0IHN0cnVj dCBpb21tdV9vcHMgKmFjcGlfaW9tbXVfY29uZmlndXJlX2lkKHN0cnVjdCBkZXZpY2UgKmRldiwK Pj4+ICsJCQkJCQkgICAgICAgY29uc3QgdTMyICppZF9pbikKPj4+ICt7Cj4+PiArCWludCBlcnI7 Cj4+PiArCWNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKm9wczsKPj4+ICsKPj4+ICsJLyoKPj4+ICsJ ICogSWYgd2UgYWxyZWFkeSB0cmFuc2xhdGVkIHRoZSBmd3NwZWMgdGhlcmUgaXMgbm90aGluZyBs ZWZ0IHRvIGRvLAo+Pj4gKwkgKiByZXR1cm4gdGhlIGlvbW11X29wcy4KPj4+ICsJICovCj4+PiAr CW9wcyA9IGFjcGlfaW9tbXVfZndzcGVjX29wcyhkZXYpOwo+Pj4gKwlpZiAob3BzKQo+Pj4gKwkJ cmV0dXJuIG9wczsKPj4+ICsKPj4+ICsJZXJyID0gaW9ydF9pb21tdV9jb25maWd1cmVfaWQoZGV2 LCBpZF9pbik7Cj4+PiArCj4+PiArCS8qCj4+PiArCSAqIElmIHdlIGhhdmUgcmVhc29uIHRvIGJl bGlldmUgdGhlIElPTU1VIGRyaXZlciBtaXNzZWQgdGhlIGluaXRpYWwKPj4+ICsJICogYWRkX2Rl dmljZSBjYWxsYmFjayBmb3IgZGV2LCByZXBsYXkgaXQgdG8gZ2V0IHRoaW5ncyBpbiBvcmRlci4K Pj4+ICsJICovCj4+PiArCWlmICghZXJyICYmIGRldi0+YnVzICYmICFkZXZpY2VfaW9tbXVfbWFw cGVkKGRldikpCj4+PiArCQllcnIgPSBpb21tdV9wcm9iZV9kZXZpY2UoZGV2KTsKPj4gUHJldmlv dXNseSB3ZSBoYWQ6Cj4+ICDCoMKgwqAgaWYgKCFlcnIpIHsKPj4gIMKgwqDCoCDCoMKgwqAgb3Bz ID0gaW9ydF9md3NwZWNfaW9tbXVfb3BzKGRldik7Cj4+ICDCoMKgwqAgwqDCoMKgIGVyciA9IGlv cnRfYWRkX2RldmljZV9yZXBsYXkoZGV2KTsKPj4gIMKgwqDCoCB9Cj4+Cj4+IFBsZWFzZSBjYW4g eW91IGV4cGxhaW4gdGhlIHRyYW5zZm9ybT8gSSBzZWUgdGhlCj4+Cj4+IGFjcGlfaW9tbXVfZndz cGVjX29wcyBjYWxsIGJlbG93IGJ1dCBpcyBpdCBub3Qgc3RyYWlnaHRmb3J3YXJkIHRvIG1lLgo+ IAo+IEkgZmlndXJlZCB0aGF0IGlvcnRfYWRkX2RldmljZV9yZXBsYXkoKSBpcyBvbmx5IHVzZWQg b25jZSBhbmQgaXMKPiBzdWZmaWNpZW50bHkgc2ltcGxlIHRvIGJlIGlubGluZWQgbWFudWFsbHkg KHNhdmluZyAxMCBsaW5lcykuIFRoZW4gSQo+IHJlcGxhY2VkIHRoZSBvcHMgYXNzaWdubWVudCB3 aXRoIHJldHVybnMsIHdoaWNoIHNhdmVzIGFub3RoZXIgbGluZSBhbmQgbWF5Cj4gYmUgc2xpZ2h0 bHkgY2xlYXJlcj8gIEkgZ3Vlc3MgaXQncyBtb3N0bHkgYSBtYXR0ZXIgb2YgdGFzdGUsIHRoZSBi ZWhhdmlvcgo+IHNob3VsZCBiZSBleGFjdGx5IHRoZSBzYW1lLgoKUmlnaHQsIElJUkMgdGhlIG11 bHRpcGxlIGFzc2lnbm1lbnRzIHRvIG9wcyB3ZXJlIG1vcmUgb2YgYSBoYXBoYXphcmQgCmV2b2x1 dGlvbiBpbmhlcml0ZWQgZnJvbSB0aGUgRFQgdmVyc2lvbiwgYW5kIGxvb2tpbmcgYXQgaXQgbm93 IEkgdGhpbmsgCnRoZSBtdWx0aXBsZS1yZXR1cm4gaXMgaW5kZWVkIGEgYml0IG5pY2VyLgoKU2lt aWxhcmx5LCBpdCBsb29rcyBsaWtlIHRoZSBmYWN0b3Jpbmcgb3V0IG9mIGlvcnRfYWRkX2Rldmlj ZV9yZXBsYXkoKSAKd2FzIG9yaWdpbmFsbHkgYW4gYXR0ZW1wdCB0byBlbmNhcHN1bGF0ZSB0aGUg SU9NTVVfQVBJIGRlcGVuZGVuY3ksIGJ1dCAKdGhpbmdzIGhhdmUgbW92ZWQgYXJvdW5kIGEgbG90 IHNpbmNlIHRoZW4sIHNvIHRoYXQgc2VlbXMgbGlrZSBhIHNlbnNpYmxlIApzaW1wbGlmaWNhdGlv biB0byBtYWtlIHRvby4KClJvYmluLgoKPiAKPj4gQWxzbyB0aGUgY29tbWVudCBtZW50aW9ucyBy ZXBsYXkuIFVuc3VyZSBpZiBpdCBpcyBzdGlsbCBPSy4KPiAKPiBUaGUgInJlcGxheSIgcGFydCBp cywgYnV0ICJhZGRfZGV2aWNlIiBpc24ndCBhY2N1cmF0ZSBiZWNhdXNlIGl0IGhhcyBzaW5jZQo+ IGJlZW4gcmVwbGFjZWQgYnkgcHJvYmVfZGV2aWNlLiBJJ2xsIHJlZnJlc2ggdGhlIGNvbW1lbnQu Cj4gCj4gVGhhbmtzLAo+IEplYW4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+IGlvbW11IG1haWxpbmcgbGlzdAo+IGlvbW11QGxpc3RzLmxpbnV4LWZv dW5kYXRpb24ub3JnCj4gaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4v bGlzdGluZm8vaW9tbXUKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KaW9tbXUgbWFpbGluZyBsaXN0CmlvbW11QGxpc3RzLmxpbnV4LWZvdW5kYXRpb24u b3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lv bW11 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=-5.5 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no 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 F29EBC49EA2 for ; Fri, 18 Jun 2021 09:16:32 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (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 985ED61175 for ; Fri, 18 Jun 2021 09:16:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 985ED61175 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=virtualization-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 47AE94157D; Fri, 18 Jun 2021 09:16:32 +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 orxHDfhiIKj7; Fri, 18 Jun 2021 09:16:31 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp4.osuosl.org (Postfix) with ESMTPS id A6D2440661; Fri, 18 Jun 2021 09:16:30 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 809FCC000D; Fri, 18 Jun 2021 09:16:30 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 7BD7DC000B; Fri, 18 Jun 2021 09:16:29 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 68AF940661; Fri, 18 Jun 2021 09:16:29 +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 rq0wcLv2sy6j; Fri, 18 Jun 2021 09:16:28 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 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 DFCDF40623; Fri, 18 Jun 2021 09:16:27 +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 7BF711424; Fri, 18 Jun 2021 02:16:26 -0700 (PDT) Received: from [10.57.9.136] (unknown [10.57.9.136]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id F2FDE3F694; Fri, 18 Jun 2021 02:16:23 -0700 (PDT) Subject: Re: [PATCH v4 2/6] ACPI: Move IOMMU setup code out of IORT To: Jean-Philippe Brucker , Eric Auger References: <20210610075130.67517-1-jean-philippe@linaro.org> <20210610075130.67517-3-jean-philippe@linaro.org> <2c53c9cf-43e6-11c2-6ee3-530ad1f87aec@redhat.com> From: Robin Murphy Message-ID: Date: Fri, 18 Jun 2021 10:16:19 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: Content-Language: en-GB Cc: mst@redhat.com, catalin.marinas@arm.com, guohanjun@huawei.com, rjw@rjwysocki.net, virtualization@lists.linux-foundation.org, linux-acpi@vger.kernel.org, iommu@lists.linux-foundation.org, sebastien.boeuf@intel.com, sudeep.holla@arm.com, will@kernel.org, dwmw2@infradead.org, linux-arm-kernel@lists.infradead.org, lenb@kernel.org X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization 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: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" T24gMjAyMS0wNi0xOCAwODo0MSwgSmVhbi1QaGlsaXBwZSBCcnVja2VyIHdyb3RlOgo+IEhpIEVy aWMsCj4gCj4gT24gV2VkLCBKdW4gMTYsIDIwMjEgYXQgMTE6MzU6MTNBTSArMDIwMCwgRXJpYyBB dWdlciB3cm90ZToKPj4+IC1jb25zdCBzdHJ1Y3QgaW9tbXVfb3BzICppb3J0X2lvbW11X2NvbmZp Z3VyZV9pZChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4+PiAtCQkJCQkJY29uc3QgdTMyICppZF9pbikK Pj4+ICtpbnQgaW9ydF9pb21tdV9jb25maWd1cmVfaWQoc3RydWN0IGRldmljZSAqZGV2LCBjb25z dCB1MzIgKmlkX2luKQo+Pj4gICB7Cj4+PiAgIAlzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKm5vZGU7 Cj4+PiAtCWNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKm9wczsKPj4+ICsJY29uc3Qgc3RydWN0IGlv bW11X29wcyAqb3BzID0gTlVMTDsKPiAKPiBPb3BzLCBJIG5lZWQgdG8gcmVtb3ZlIHRoaXMgKGFu ZCBhZGQgLVdlcnJvciB0byBteSB0ZXN0cy4pCj4gCj4gCj4+PiArc3RhdGljIGNvbnN0IHN0cnVj dCBpb21tdV9vcHMgKmFjcGlfaW9tbXVfY29uZmlndXJlX2lkKHN0cnVjdCBkZXZpY2UgKmRldiwK Pj4+ICsJCQkJCQkgICAgICAgY29uc3QgdTMyICppZF9pbikKPj4+ICt7Cj4+PiArCWludCBlcnI7 Cj4+PiArCWNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKm9wczsKPj4+ICsKPj4+ICsJLyoKPj4+ICsJ ICogSWYgd2UgYWxyZWFkeSB0cmFuc2xhdGVkIHRoZSBmd3NwZWMgdGhlcmUgaXMgbm90aGluZyBs ZWZ0IHRvIGRvLAo+Pj4gKwkgKiByZXR1cm4gdGhlIGlvbW11X29wcy4KPj4+ICsJICovCj4+PiAr CW9wcyA9IGFjcGlfaW9tbXVfZndzcGVjX29wcyhkZXYpOwo+Pj4gKwlpZiAob3BzKQo+Pj4gKwkJ cmV0dXJuIG9wczsKPj4+ICsKPj4+ICsJZXJyID0gaW9ydF9pb21tdV9jb25maWd1cmVfaWQoZGV2 LCBpZF9pbik7Cj4+PiArCj4+PiArCS8qCj4+PiArCSAqIElmIHdlIGhhdmUgcmVhc29uIHRvIGJl bGlldmUgdGhlIElPTU1VIGRyaXZlciBtaXNzZWQgdGhlIGluaXRpYWwKPj4+ICsJICogYWRkX2Rl dmljZSBjYWxsYmFjayBmb3IgZGV2LCByZXBsYXkgaXQgdG8gZ2V0IHRoaW5ncyBpbiBvcmRlci4K Pj4+ICsJICovCj4+PiArCWlmICghZXJyICYmIGRldi0+YnVzICYmICFkZXZpY2VfaW9tbXVfbWFw cGVkKGRldikpCj4+PiArCQllcnIgPSBpb21tdV9wcm9iZV9kZXZpY2UoZGV2KTsKPj4gUHJldmlv dXNseSB3ZSBoYWQ6Cj4+ICDCoMKgwqAgaWYgKCFlcnIpIHsKPj4gIMKgwqDCoCDCoMKgwqAgb3Bz ID0gaW9ydF9md3NwZWNfaW9tbXVfb3BzKGRldik7Cj4+ICDCoMKgwqAgwqDCoMKgIGVyciA9IGlv cnRfYWRkX2RldmljZV9yZXBsYXkoZGV2KTsKPj4gIMKgwqDCoCB9Cj4+Cj4+IFBsZWFzZSBjYW4g eW91IGV4cGxhaW4gdGhlIHRyYW5zZm9ybT8gSSBzZWUgdGhlCj4+Cj4+IGFjcGlfaW9tbXVfZndz cGVjX29wcyBjYWxsIGJlbG93IGJ1dCBpcyBpdCBub3Qgc3RyYWlnaHRmb3J3YXJkIHRvIG1lLgo+ IAo+IEkgZmlndXJlZCB0aGF0IGlvcnRfYWRkX2RldmljZV9yZXBsYXkoKSBpcyBvbmx5IHVzZWQg b25jZSBhbmQgaXMKPiBzdWZmaWNpZW50bHkgc2ltcGxlIHRvIGJlIGlubGluZWQgbWFudWFsbHkg KHNhdmluZyAxMCBsaW5lcykuIFRoZW4gSQo+IHJlcGxhY2VkIHRoZSBvcHMgYXNzaWdubWVudCB3 aXRoIHJldHVybnMsIHdoaWNoIHNhdmVzIGFub3RoZXIgbGluZSBhbmQgbWF5Cj4gYmUgc2xpZ2h0 bHkgY2xlYXJlcj8gIEkgZ3Vlc3MgaXQncyBtb3N0bHkgYSBtYXR0ZXIgb2YgdGFzdGUsIHRoZSBi ZWhhdmlvcgo+IHNob3VsZCBiZSBleGFjdGx5IHRoZSBzYW1lLgoKUmlnaHQsIElJUkMgdGhlIG11 bHRpcGxlIGFzc2lnbm1lbnRzIHRvIG9wcyB3ZXJlIG1vcmUgb2YgYSBoYXBoYXphcmQgCmV2b2x1 dGlvbiBpbmhlcml0ZWQgZnJvbSB0aGUgRFQgdmVyc2lvbiwgYW5kIGxvb2tpbmcgYXQgaXQgbm93 IEkgdGhpbmsgCnRoZSBtdWx0aXBsZS1yZXR1cm4gaXMgaW5kZWVkIGEgYml0IG5pY2VyLgoKU2lt aWxhcmx5LCBpdCBsb29rcyBsaWtlIHRoZSBmYWN0b3Jpbmcgb3V0IG9mIGlvcnRfYWRkX2Rldmlj ZV9yZXBsYXkoKSAKd2FzIG9yaWdpbmFsbHkgYW4gYXR0ZW1wdCB0byBlbmNhcHN1bGF0ZSB0aGUg SU9NTVVfQVBJIGRlcGVuZGVuY3ksIGJ1dCAKdGhpbmdzIGhhdmUgbW92ZWQgYXJvdW5kIGEgbG90 IHNpbmNlIHRoZW4sIHNvIHRoYXQgc2VlbXMgbGlrZSBhIHNlbnNpYmxlIApzaW1wbGlmaWNhdGlv biB0byBtYWtlIHRvby4KClJvYmluLgoKPiAKPj4gQWxzbyB0aGUgY29tbWVudCBtZW50aW9ucyBy ZXBsYXkuIFVuc3VyZSBpZiBpdCBpcyBzdGlsbCBPSy4KPiAKPiBUaGUgInJlcGxheSIgcGFydCBp cywgYnV0ICJhZGRfZGV2aWNlIiBpc24ndCBhY2N1cmF0ZSBiZWNhdXNlIGl0IGhhcyBzaW5jZQo+ IGJlZW4gcmVwbGFjZWQgYnkgcHJvYmVfZGV2aWNlLiBJJ2xsIHJlZnJlc2ggdGhlIGNvbW1lbnQu Cj4gCj4gVGhhbmtzLAo+IEplYW4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+IGlvbW11IG1haWxpbmcgbGlzdAo+IGlvbW11QGxpc3RzLmxpbnV4LWZv dW5kYXRpb24ub3JnCj4gaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4v bGlzdGluZm8vaW9tbXUKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KVmlydHVhbGl6YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3Rz LmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9t YWlsbWFuL2xpc3RpbmZvL3ZpcnR1YWxpemF0aW9u 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=-5.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no 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 C9B36C48BE8 for ; Fri, 18 Jun 2021 09:18:22 +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 8B9E661260 for ; Fri, 18 Jun 2021 09:18:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8B9E661260 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@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=nn8FoWeZJY2mj+AXXhXzNZ2wA9Sfn4FthUuGt+WfnqU=; b=LekFnWcy2ba5GhJ43/laFjL6Am Ccx2NZU83sIVrFxHph4u5pk1VOOy2bJRkRlJqxMWF9KIvy1iSmzlLiOc0BySV+cnD9ybw2FoDo7zk D2Q/FtT6meRwcgTNzPLD3sZET30G8p/iazD3qh0RiujDDeiIfzb/Izr4RybNMF6qpyqSMPsERo9D0 i1nBCLrBc4pJSuBJeVNp5VwUMO4pGabFFBYhXzMqVX7H3DJAklfjgr5QleCFjW5D4wYYJRhaF+7LZ 6SrhpllBKZp5G2Vn9oXoB/LEbm8r1/Ybo1zCSoVZF1vPaxby3y/qHynXlmugNu7e2MTj0Wn6xu7IT dTHBsz8Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1luAc9-00DQvF-Go; Fri, 18 Jun 2021 09:16:37 +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 1luAc4-00DQtr-Eq for linux-arm-kernel@lists.infradead.org; Fri, 18 Jun 2021 09:16:34 +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 7BF711424; Fri, 18 Jun 2021 02:16:26 -0700 (PDT) Received: from [10.57.9.136] (unknown [10.57.9.136]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id F2FDE3F694; Fri, 18 Jun 2021 02:16:23 -0700 (PDT) Subject: Re: [PATCH v4 2/6] ACPI: Move IOMMU setup code out of IORT To: Jean-Philippe Brucker , Eric Auger Cc: kevin.tian@intel.com, mst@redhat.com, catalin.marinas@arm.com, sudeep.holla@arm.com, rjw@rjwysocki.net, virtualization@lists.linux-foundation.org, linux-acpi@vger.kernel.org, iommu@lists.linux-foundation.org, sebastien.boeuf@intel.com, guohanjun@huawei.com, will@kernel.org, dwmw2@infradead.org, linux-arm-kernel@lists.infradead.org, lenb@kernel.org References: <20210610075130.67517-1-jean-philippe@linaro.org> <20210610075130.67517-3-jean-philippe@linaro.org> <2c53c9cf-43e6-11c2-6ee3-530ad1f87aec@redhat.com> From: Robin Murphy Message-ID: Date: Fri, 18 Jun 2021 10:16:19 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: Content-Language: en-GB X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210618_021632_625207_F9B9341E X-CRM114-Status: GOOD ( 29.48 ) 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 T24gMjAyMS0wNi0xOCAwODo0MSwgSmVhbi1QaGlsaXBwZSBCcnVja2VyIHdyb3RlOgo+IEhpIEVy aWMsCj4gCj4gT24gV2VkLCBKdW4gMTYsIDIwMjEgYXQgMTE6MzU6MTNBTSArMDIwMCwgRXJpYyBB dWdlciB3cm90ZToKPj4+IC1jb25zdCBzdHJ1Y3QgaW9tbXVfb3BzICppb3J0X2lvbW11X2NvbmZp Z3VyZV9pZChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4+PiAtCQkJCQkJY29uc3QgdTMyICppZF9pbikK Pj4+ICtpbnQgaW9ydF9pb21tdV9jb25maWd1cmVfaWQoc3RydWN0IGRldmljZSAqZGV2LCBjb25z dCB1MzIgKmlkX2luKQo+Pj4gICB7Cj4+PiAgIAlzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKm5vZGU7 Cj4+PiAtCWNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKm9wczsKPj4+ICsJY29uc3Qgc3RydWN0IGlv bW11X29wcyAqb3BzID0gTlVMTDsKPiAKPiBPb3BzLCBJIG5lZWQgdG8gcmVtb3ZlIHRoaXMgKGFu ZCBhZGQgLVdlcnJvciB0byBteSB0ZXN0cy4pCj4gCj4gCj4+PiArc3RhdGljIGNvbnN0IHN0cnVj dCBpb21tdV9vcHMgKmFjcGlfaW9tbXVfY29uZmlndXJlX2lkKHN0cnVjdCBkZXZpY2UgKmRldiwK Pj4+ICsJCQkJCQkgICAgICAgY29uc3QgdTMyICppZF9pbikKPj4+ICt7Cj4+PiArCWludCBlcnI7 Cj4+PiArCWNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKm9wczsKPj4+ICsKPj4+ICsJLyoKPj4+ICsJ ICogSWYgd2UgYWxyZWFkeSB0cmFuc2xhdGVkIHRoZSBmd3NwZWMgdGhlcmUgaXMgbm90aGluZyBs ZWZ0IHRvIGRvLAo+Pj4gKwkgKiByZXR1cm4gdGhlIGlvbW11X29wcy4KPj4+ICsJICovCj4+PiAr CW9wcyA9IGFjcGlfaW9tbXVfZndzcGVjX29wcyhkZXYpOwo+Pj4gKwlpZiAob3BzKQo+Pj4gKwkJ cmV0dXJuIG9wczsKPj4+ICsKPj4+ICsJZXJyID0gaW9ydF9pb21tdV9jb25maWd1cmVfaWQoZGV2 LCBpZF9pbik7Cj4+PiArCj4+PiArCS8qCj4+PiArCSAqIElmIHdlIGhhdmUgcmVhc29uIHRvIGJl bGlldmUgdGhlIElPTU1VIGRyaXZlciBtaXNzZWQgdGhlIGluaXRpYWwKPj4+ICsJICogYWRkX2Rl dmljZSBjYWxsYmFjayBmb3IgZGV2LCByZXBsYXkgaXQgdG8gZ2V0IHRoaW5ncyBpbiBvcmRlci4K Pj4+ICsJICovCj4+PiArCWlmICghZXJyICYmIGRldi0+YnVzICYmICFkZXZpY2VfaW9tbXVfbWFw cGVkKGRldikpCj4+PiArCQllcnIgPSBpb21tdV9wcm9iZV9kZXZpY2UoZGV2KTsKPj4gUHJldmlv dXNseSB3ZSBoYWQ6Cj4+ICDCoMKgwqAgaWYgKCFlcnIpIHsKPj4gIMKgwqDCoCDCoMKgwqAgb3Bz ID0gaW9ydF9md3NwZWNfaW9tbXVfb3BzKGRldik7Cj4+ICDCoMKgwqAgwqDCoMKgIGVyciA9IGlv cnRfYWRkX2RldmljZV9yZXBsYXkoZGV2KTsKPj4gIMKgwqDCoCB9Cj4+Cj4+IFBsZWFzZSBjYW4g eW91IGV4cGxhaW4gdGhlIHRyYW5zZm9ybT8gSSBzZWUgdGhlCj4+Cj4+IGFjcGlfaW9tbXVfZndz cGVjX29wcyBjYWxsIGJlbG93IGJ1dCBpcyBpdCBub3Qgc3RyYWlnaHRmb3J3YXJkIHRvIG1lLgo+ IAo+IEkgZmlndXJlZCB0aGF0IGlvcnRfYWRkX2RldmljZV9yZXBsYXkoKSBpcyBvbmx5IHVzZWQg b25jZSBhbmQgaXMKPiBzdWZmaWNpZW50bHkgc2ltcGxlIHRvIGJlIGlubGluZWQgbWFudWFsbHkg KHNhdmluZyAxMCBsaW5lcykuIFRoZW4gSQo+IHJlcGxhY2VkIHRoZSBvcHMgYXNzaWdubWVudCB3 aXRoIHJldHVybnMsIHdoaWNoIHNhdmVzIGFub3RoZXIgbGluZSBhbmQgbWF5Cj4gYmUgc2xpZ2h0 bHkgY2xlYXJlcj8gIEkgZ3Vlc3MgaXQncyBtb3N0bHkgYSBtYXR0ZXIgb2YgdGFzdGUsIHRoZSBi ZWhhdmlvcgo+IHNob3VsZCBiZSBleGFjdGx5IHRoZSBzYW1lLgoKUmlnaHQsIElJUkMgdGhlIG11 bHRpcGxlIGFzc2lnbm1lbnRzIHRvIG9wcyB3ZXJlIG1vcmUgb2YgYSBoYXBoYXphcmQgCmV2b2x1 dGlvbiBpbmhlcml0ZWQgZnJvbSB0aGUgRFQgdmVyc2lvbiwgYW5kIGxvb2tpbmcgYXQgaXQgbm93 IEkgdGhpbmsgCnRoZSBtdWx0aXBsZS1yZXR1cm4gaXMgaW5kZWVkIGEgYml0IG5pY2VyLgoKU2lt aWxhcmx5LCBpdCBsb29rcyBsaWtlIHRoZSBmYWN0b3Jpbmcgb3V0IG9mIGlvcnRfYWRkX2Rldmlj ZV9yZXBsYXkoKSAKd2FzIG9yaWdpbmFsbHkgYW4gYXR0ZW1wdCB0byBlbmNhcHN1bGF0ZSB0aGUg SU9NTVVfQVBJIGRlcGVuZGVuY3ksIGJ1dCAKdGhpbmdzIGhhdmUgbW92ZWQgYXJvdW5kIGEgbG90 IHNpbmNlIHRoZW4sIHNvIHRoYXQgc2VlbXMgbGlrZSBhIHNlbnNpYmxlIApzaW1wbGlmaWNhdGlv biB0byBtYWtlIHRvby4KClJvYmluLgoKPiAKPj4gQWxzbyB0aGUgY29tbWVudCBtZW50aW9ucyBy ZXBsYXkuIFVuc3VyZSBpZiBpdCBpcyBzdGlsbCBPSy4KPiAKPiBUaGUgInJlcGxheSIgcGFydCBp cywgYnV0ICJhZGRfZGV2aWNlIiBpc24ndCBhY2N1cmF0ZSBiZWNhdXNlIGl0IGhhcyBzaW5jZQo+ IGJlZW4gcmVwbGFjZWQgYnkgcHJvYmVfZGV2aWNlLiBJJ2xsIHJlZnJlc2ggdGhlIGNvbW1lbnQu Cj4gCj4gVGhhbmtzLAo+IEplYW4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+IGlvbW11IG1haWxpbmcgbGlzdAo+IGlvbW11QGxpc3RzLmxpbnV4LWZv dW5kYXRpb24ub3JnCj4gaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4v bGlzdGluZm8vaW9tbXUKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK