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=-15.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,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 ABBE0C433DB for ; Tue, 12 Jan 2021 16:59:21 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 3EECE2311F for ; Tue, 12 Jan 2021 16:59:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3EECE2311F 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=merlin.20170209; h=Sender:Content-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=PY+trZfVahURVZdiacHDSO8cdv9oUtZwVg3zsd9F/qk=; b=1Evve+oO2ErTX3+rqw1hghzkI oUUJUFrWtcHz/wlIFwB7xpquL9nOP/5SOZNe0ndPqcRnFDdhZy8mjDkDwuL39fyEHFKzjSRxV1YuL 5OxXG6VZpXyTFXGwtVA95uAwm4g1hSaAxRtP/bd5VufmhCje4ArIKoisSLVwXN+6SlhFvo6R+FaCW fNCoRqZXPEqqV6sia2xdqk108NxTNjWLucYpznpNdQnptgYhINv88Itu5vOSrw3aV8015giyuW/II lRf0Q96Xu+rMapfUAnOULd4kuHCb79td5g0UDrG30UdGVyQq5BahyHfxSeVNcrjC4ugknC8/v7KFP MM7tBGB1Q==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kzMz4-0004r4-Cl; Tue, 12 Jan 2021 16:57:30 +0000 Received: from foss.arm.com ([217.140.110.172]) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kzMyz-0004pB-AJ for linux-arm-kernel@lists.infradead.org; Tue, 12 Jan 2021 16:57:26 +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 96892101E; Tue, 12 Jan 2021 08:57:21 -0800 (PST) Received: from [192.168.122.166] (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 2DC5E3F719; Tue, 12 Jan 2021 08:57:21 -0800 (PST) Subject: Re: [PATCH] arm64: PCI: Enable SMC conduit To: Vidya Sagar , linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org References: <20210105045735.1709825-1-jeremy.linton@arm.com> <9ecfbc2e-5f33-dd3c-0c3b-ee7c463b3e68@nvidia.com> From: Jeremy Linton Message-ID: Date: Tue, 12 Jan 2021 10:57:20 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.3.1 MIME-Version: 1.0 In-Reply-To: <9ecfbc2e-5f33-dd3c-0c3b-ee7c463b3e68@nvidia.com> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210112_115725_461687_B3C29EEC X-CRM114-Status: GOOD ( 28.50 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, lorenzo.pieralisi@arm.com, catalin.marinas@arm.com, linux-kernel@vger.kernel.org, sudeep.holla@arm.com, bhelgaas@google.com, will@kernel.org 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 SGksCgpPbiAxLzEyLzIxIDEwOjE2IEFNLCBWaWR5YSBTYWdhciB3cm90ZToKPiAKPiAKPiBPbiAx LzUvMjAyMSAxMDoyNyBBTSwgSmVyZW15IExpbnRvbiB3cm90ZToKPj4gRXh0ZXJuYWwgZW1haWw6 IFVzZSBjYXV0aW9uIG9wZW5pbmcgbGlua3Mgb3IgYXR0YWNobWVudHMKPj4KPj4KPj4gR2l2ZW4g dGhhdCBtb3N0IGFybTY0IHBsYXRmb3JtJ3MgUENJIGltcGxlbWVudGF0aW9ucyBuZWVkcyBxdWly a3MKPj4gdG8gZGVhbCB3aXRoIHByb2JsZW1hdGljIGNvbmZpZyBhY2Nlc3NlcywgdGhpcyBpcyBh IGdvb2QgcGxhY2UgdG8KPj4gYXBwbHkgYSBmaXJtd2FyZSBhYnN0cmFjdGlvbi4gVGhlIEFSTSBQ Q0kgU01NQ0NDIHNwZWMgZGV0YWlscyBhCj4+IHN0YW5kYXJkIFNNQyBjb25kdWl0IGRlc2lnbmVk IHRvIHByb3ZpZGUgYSBzaW1wbGUgUENJIGNvbmZpZwo+PiBhY2Nlc3Nvci4gVGhpcyBzcGVjaWZp Y2F0aW9uIGVuaGFuY2VzIHRoZSBleGlzdGluZyBBQ1BJL1BDSQo+PiBhYnN0cmFjdGlvbiBhbmQg ZXhwZWN0cyBwb3dlciwgY29uZmlnLCBldGMgZnVuY3Rpb25hbGl0eSBpcyBoYW5kbGVkCj4+IGJ5 IHRoZSBwbGF0Zm9ybS4gSXQgYWxzbyBpcyB2ZXJ5IGV4cGxpY2l0IHRoYXQgdGhlIHJlc3VsdGlu ZyBjb25maWcKPj4gc3BhY2UgcmVnaXN0ZXJzIG11c3QgYmVoYXZlIGFzIGlzIHNwZWNpZmllZCBi eSB0aGUgcGNpIHNwZWNpZmljYXRpb24uCj4+Cj4+IExldHMgaG9vayB0aGUgbm9ybWFsIEFDUEkv UENJIGNvbmZpZyBwYXRoLCBhbmQgd2hlbiB3ZSBkZXRlY3QKPj4gbWlzc2luZyBNQURUIGRhdGEs IGF0dGVtcHQgdG8gcHJvYmUgdGhlIFNNQyBjb25kdWl0LiBJZiB0aGUgY29uZHVpdAo+PiBleGlz dHMgYW5kIHJlc3BvbmRzIGZvciB0aGUgcmVxdWVzdGVkIHNlZ21lbnQgbnVtYmVyIChwcm92aWRl ZCBieSB0aGUKPj4gQUNQSSBuYW1lc3BhY2UpIGF0dGFjaCBhIGN1c3RvbSBwY2lfZWNhbV9vcHMg d2hpY2ggcmVkaXJlY3RzCj4+IGFsbCBjb25maWcgcmVhZC93cml0ZSByZXF1ZXN0cyB0byB0aGUg ZmlybXdhcmUuCj4+Cj4+IFRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gdGhlIEFybSBQQ0kgQ29uZmln IHNwYWNlIGFjY2VzcyBkb2N1bWVudCBACj4+IGh0dHBzOi8vZGV2ZWxvcGVyLmFybS5jb20vZG9j dW1lbnRhdGlvbi9kZW4wMTE1L2xhdGVzdAo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBKZXJlbXkgTGlu dG9uIDxqZXJlbXkubGludG9uQGFybS5jb20+Cj4+IC0tLQo+PiDCoCBhcmNoL2FybTY0L2tlcm5l bC9wY2kuY8KgwqAgfCA4NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK Pj4gwqAgaW5jbHVkZS9saW51eC9hcm0tc21jY2MuaCB8IDI2ICsrKysrKysrKysrKwo+PiDCoCAy IGZpbGVzIGNoYW5nZWQsIDExMyBpbnNlcnRpb25zKCspCj4+Cj4+IGRpZmYgLS1naXQgYS9hcmNo L2FybTY0L2tlcm5lbC9wY2kuYyBiL2FyY2gvYXJtNjQva2VybmVsL3BjaS5jCj4+IGluZGV4IDEw MDZlZDJkN2M2MC4uNTZkMzc3M2FhYTI1IDEwMDY0NAo+PiAtLS0gYS9hcmNoL2FybTY0L2tlcm5l bC9wY2kuYwo+PiArKysgYi9hcmNoL2FybTY0L2tlcm5lbC9wY2kuYwo+PiBAQCAtNyw2ICs3LDcg QEAKPj4gwqDCoCAqLwo+Pgo+PiDCoCAjaW5jbHVkZSA8bGludXgvYWNwaS5oPgo+PiArI2luY2x1 ZGUgPGxpbnV4L2FybS1zbWNjYy5oPgo+PiDCoCAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgo+PiDC oCAjaW5jbHVkZSA8bGludXgvaW8uaD4KPj4gwqAgI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ PiBAQCAtMTA3LDYgKzEwOCw5MCBAQCBzdGF0aWMgaW50IHBjaV9hY3BpX3Jvb3RfcHJlcGFyZV9y ZXNvdXJjZXMoc3RydWN0IAo+PiBhY3BpX3BjaV9yb290X2luZm8gKmNpKQo+PiDCoMKgwqDCoMKg wqDCoMKgIHJldHVybiBzdGF0dXM7Cj4+IMKgIH0KPj4KPj4gK3N0YXRpYyBpbnQgc21jY2NfcGNp ZV9jaGVja19jb25kdWl0KHUxNiBzZWcpCj4+ICt7Cj4+ICvCoMKgwqDCoMKgwqAgc3RydWN0IGFy bV9zbWNjY19yZXMgcmVzOwo+PiArCj4+ICvCoMKgwqDCoMKgwqAgaWYgKGFybV9zbWNjY18xXzFf Z2V0X2NvbmR1aXQoKSA9PSBTTUNDQ19DT05EVUlUX05PTkUpCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHJldHVybiAtRU9QTk9UU1VQUDsKPj4gKwo+PiArwqDCoMKgwqDCoMKgIGFy bV9zbWNjY19zbWMoU01DQ0NfUENJX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsICZyZXMp Owo+PiArwqDCoMKgwqDCoMKgIGlmICgoaW50KXJlcy5hMCA8IDApCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU9QTk9UU1VQUDsKPj4gKwo+PiArwqDCoMKgwqDCoMKg IGFybV9zbWNjY19zbWMoU01DQ0NfUENJX1NFR19JTkZPLCBzZWcsIDAsIDAsIDAsIDAsIDAsIDAs ICZyZXMpOwo+PiArwqDCoMKgwqDCoMKgIGlmICgoaW50KXJlcy5hMCA8IDApCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU9QTk9UU1VQUDsKPj4gKwo+PiArwqDCoMKg wqDCoMKgIHByX2luZm8oIlBDSTogU01DIGNvbmR1aXQgYXR0YWNoZWQgdG8gc2VnbWVudCAlZFxu Iiwgc2VnKTsKPiBTaG91bGRuJ3QgdGhpcyBwcmludCBiZSBtb3ZlZCB0b3dhcmRzIHRoZSBlbmQg b2YgCj4gcGNpX2FjcGlfc2V0dXBfc21jY2NfbWFwcGluZygpIEFQST8KClRoYW5rcyBmb3IgbG9v a2luZyBhdCB0aGlzLgoKSXQgcHJvYmFibHkgc2hvdWxkIGJlLCB0aGUgYXNzdW1wdGlvbiB3YXMg dGhhdCBpdCB3b3VsZCBhdHRhY2ggYXQgdGhpcyAKcG9pbnQsIGJ1dCBpdHMgcG9zc2libGUgdGhl IG1lc3NhZ2UgaXMgaW5hY2N1cmF0ZSBpZiBzb21ldGhpbmcgZmFpbHMgYSAKYml0IGxhdGVyLiBJ IGxlZnQgaXQgdGhlcmUgYmVjYXVzZSB0aGUgc2VnbWVudCBudW1iZXIgaXMgZWFzaWx5IAphdmFp bGFibGUuIEkndmUgYmVlbiBwbGF5aW5nIHdpdGggdGhpcyBhIGJpdCBmb3IgdGhlIFYyIHdoZXJl IEkgYWRkZWQgCnRoZSBhZGRpdGlvbmFsIGZ1bmN0aW9uIGNoZWNrcy4KCgoKPiAKPj4gKwo+PiAr wqDCoMKgwqDCoMKgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHNtY2NjX3Bj aWVfY29uZmlnX3JlYWQoc3RydWN0IHBjaV9idXMgKmJ1cywgdW5zaWduZWQgaW50IAo+PiBkZXZm biwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaW50IHdoZXJlLCBpbnQgc2l6ZSwgdTMyICp2YWwpCj4+ICt7Cj4+ICvC oMKgwqDCoMKgwqAgc3RydWN0IGFybV9zbWNjY19yZXMgcmVzOwo+PiArCj4+ICvCoMKgwqDCoMKg wqAgZGV2Zm4gfD0gYnVzLT5udW1iZXIgPDwgODsKPj4gK8KgwqDCoMKgwqDCoCBkZXZmbiB8PSBi dXMtPmRvbWFpbl9uciA8PCAxNjsKPj4gKwo+PiArwqDCoMKgwqDCoMKgIGFybV9zbWNjY19zbWMo U01DQ0NfUENJX1JFQUQsIGRldmZuLCB3aGVyZSwgc2l6ZSwgMCwgMCwgMCwgMCwgCj4+ICZyZXMp Owo+PiArwqDCoMKgwqDCoMKgIGlmIChyZXMuYTApIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKnZhbCA9IH4wOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gLVBDSUJJT1NfQkFEX1JFR0lTVEVSX05VTUJFUjsKPj4gK8KgwqDCoMKgwqDCoCB9Cj4+ICsK Pj4gK8KgwqDCoMKgwqDCoCAqdmFsID0gcmVzLmExOwo+PiArwqDCoMKgwqDCoMKgIHJldHVybiBQ Q0lCSU9TX1NVQ0NFU1NGVUw7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgc21jY2NfcGNpZV9j b25maWdfd3JpdGUoc3RydWN0IHBjaV9idXMgKmJ1cywgdW5zaWduZWQgaW50IAo+PiBkZXZmbiwK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBpbnQgd2hlcmUsIGludCBzaXplLCB1MzIgdmFsKQo+PiArewo+PiArwqDC oMKgwqDCoMKgIHN0cnVjdCBhcm1fc21jY2NfcmVzIHJlczsKPj4gKwo+PiArwqDCoMKgwqDCoMKg IGRldmZuIHw9IGJ1cy0+bnVtYmVyIDw8IDg7Cj4+ICvCoMKgwqDCoMKgwqAgZGV2Zm4gfD0gYnVz LT5kb21haW5fbnIgPDwgMTY7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoCBhcm1fc21jY2Nfc21jKFNN Q0NDX1BDSV9XUklURSwgZGV2Zm4sIHdoZXJlLCBzaXplLCB2YWwsIDAsIDAsIAo+PiAwLCAmcmVz KTsKPj4gK8KgwqDCoMKgwqDCoCBpZiAocmVzLmEwKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm4gLVBDSUJJT1NfQkFEX1JFR0lTVEVSX05VTUJFUjsKPj4gKwo+PiArwqDC oMKgwqDCoMKgIHJldHVybiBQQ0lCSU9TX1NVQ0NFU1NGVUw7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgcGNpX2VjYW1fb3BzIHNtY2NjX3BjaWVfZWNhbV9vcHMgPSB7Cj4+ICvC oMKgwqDCoMKgwqAgLmJ1c19zaGlmdMKgwqDCoMKgwqAgPSA4LAo+PiArwqDCoMKgwqDCoMKgIC5w Y2lfb3BzwqDCoMKgwqDCoMKgwqAgPSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IC5yZWFkwqDCoMKgwqDCoMKgwqDCoMKgwqAgPSBzbWNjY19wY2llX2NvbmZpZ19yZWFkLAo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAud3JpdGXCoMKgwqDCoMKgwqDCoMKgwqAgPSBz bWNjY19wY2llX2NvbmZpZ193cml0ZSwKPj4gK8KgwqDCoMKgwqDCoCB9Cj4+ICt9Owo+PiArCj4+ ICtzdGF0aWMgc3RydWN0IHBjaV9jb25maWdfd2luZG93ICoKPj4gK3BjaV9hY3BpX3NldHVwX3Nt Y2NjX21hcHBpbmcoc3RydWN0IGFjcGlfcGNpX3Jvb3QgKnJvb3QpCj4+ICt7Cj4+ICvCoMKgwqDC oMKgwqAgc3RydWN0IGRldmljZSAqZGV2ID0gJnJvb3QtPmRldmljZS0+ZGV2Owo+PiArwqDCoMKg wqDCoMKgIHN0cnVjdCByZXNvdXJjZSAqYnVzX3JlcyA9ICZyb290LT5zZWNvbmRhcnk7Cj4+ICvC oMKgwqDCoMKgwqAgc3RydWN0IHBjaV9jb25maWdfd2luZG93ICpjZmc7Cj4+ICsKPj4gK8KgwqDC oMKgwqDCoCBjZmcgPSBremFsbG9jKHNpemVvZigqY2ZnKSwgR0ZQX0tFUk5FTCk7Cj4+ICvCoMKg wqDCoMKgwqAgaWYgKCFjZmcpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy biBFUlJfUFRSKC1FTk9NRU0pOwo+PiArCj4+ICvCoMKgwqDCoMKgwqAgY2ZnLT5wYXJlbnQgPSBk ZXY7Cj4+ICvCoMKgwqDCoMKgwqAgY2ZnLT5vcHMgPSAmc21jY2NfcGNpZV9lY2FtX29wczsKPj4g K8KgwqDCoMKgwqDCoCBjZmctPmJ1c3Iuc3RhcnQgPSBidXNfcmVzLT5zdGFydDsKPj4gK8KgwqDC oMKgwqDCoCBjZmctPmJ1c3IuZW5kID0gYnVzX3Jlcy0+ZW5kOwo+PiArwqDCoMKgwqDCoMKgIGNm Zy0+YnVzci5mbGFncyA9IElPUkVTT1VSQ0VfQlVTOwo+PiArCj4+ICvCoMKgwqDCoMKgwqAgY2Zn LT5yZXMubmFtZSA9ICJQQ0kgU01DQ0MiOwo+PiArwqDCoMKgwqDCoMKgIGlmIChjZmctPm9wcy0+ aW5pdCkKPiBTaW5jZSB0aGVyZSBpcyBubyBpbml0IGltcGxlbWVudGVkLCB3aGF0IGlzIHRoZSBw dXJwb3NlIG9mIGhhdmluZyB0aGlzPwoKSXRzIGJhc2ljYWxseSBkZWFkLgoKCj4gCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNmZy0+b3BzLT5pbml0KGNmZyk7Cj4+ICvCoMKgwqDC oMKgwqAgcmV0dXJuIGNmZzsKPj4gK30KPj4gKwo+PiDCoCAvKgo+PiDCoMKgICogTG9va3VwIHRo ZSBidXMgcmFuZ2UgZm9yIHRoZSBkb21haW4gaW4gTUNGRywgYW5kIHNldCB1cCBjb25maWcgc3Bh Y2UKPj4gwqDCoCAqIG1hcHBpbmcuCj4+IEBAIC0xMjUsNiArMjEwLDggQEAgcGNpX2FjcGlfc2V0 dXBfZWNhbV9tYXBwaW5nKHN0cnVjdCBhY3BpX3BjaV9yb290IAo+PiAqcm9vdCkKPj4KPj4gwqDC oMKgwqDCoMKgwqDCoCByZXQgPSBwY2lfbWNmZ19sb29rdXAocm9vdCwgJmNmZ3JlcywgJmVjYW1f b3BzKTsKPj4gwqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGlmICghc21jY2NfcGNpZV9jaGVja19jb25kdWl0KHNlZykpCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcGNpX2FjcGlf c2V0dXBfc21jY2NfbWFwcGluZyhyb290KTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZGV2X2VycihkZXYsICIlMDR4OiVwUiBFQ0FNIHJlZ2lvbiBub3QgZm91bmRcbiIsIHNl ZywgCj4+IGJ1c19yZXMpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gTlVMTDsKPj4gwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xp bnV4L2FybS1zbWNjYy5oIGIvaW5jbHVkZS9saW51eC9hcm0tc21jY2MuaAo+PiBpbmRleCBmODYw NjQ1ZjY1MTIuLjMyN2Y1MjUzM2M3MSAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS9saW51eC9hcm0t c21jY2MuaAo+PiArKysgYi9pbmNsdWRlL2xpbnV4L2FybS1zbWNjYy5oCj4+IEBAIC04OSw2ICs4 OSwzMiBAQAo+Pgo+PiDCoCAjZGVmaW5lIFNNQ0NDX0FSQ0hfV09SS0FST1VORF9SRVRfVU5BRkZF Q1RFRMKgwqAgMQo+Pgo+PiArLyogUENJIEVDQU0gY29uZHVpdCAqLwo+PiArI2RlZmluZSBTTUND Q19QQ0lfVkVSU0lPTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKg wqDCoMKgwqAgQVJNX1NNQ0NDX0NBTExfVkFMKEFSTV9TTUNDQ19GQVNUX0NBTEwswqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFSTV9TTUNDQ19TTUNfMzIs wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFS TV9TTUNDQ19PV05FUl9TVEFOREFSRCwgMHgwMTMwKQo+PiArCj4+ICsjZGVmaW5lIFNNQ0NDX1BD SV9GRUFUVVJFU8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgwqDC oMKgIEFSTV9TTUNDQ19DQUxMX1ZBTChBUk1fU01DQ0NfRkFTVF9DQUxMLMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBUk1fU01DQ0NfU01DXzMyLMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBUk1fU01D Q0NfT1dORVJfU1RBTkRBUkQsIDB4MDEzMSkKPj4gKwo+PiArI2RlZmluZSBTTUNDQ19QQ0lfUkVB RMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKgwqDCoMKg wqAgQVJNX1NNQ0NDX0NBTExfVkFMKEFSTV9TTUNDQ19GQVNUX0NBTEwswqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFSTV9TTUNDQ19TTUNfMzIswqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFSTV9TTUND Q19PV05FUl9TVEFOREFSRCwgMHgwMTMyKQo+PiArCj4+ICsjZGVmaW5lIAo+PiBTTUNDQ19QQ0lf V1JJVEXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBcCj4+ICvCoMKgwqDCoMKgwqAgQVJNX1NNQ0NDX0NBTExfVkFMKEFSTV9TTUNDQ19GQVNUX0NB TEwswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFSTV9T TUNDQ19TTUNfMzIswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIFwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEFSTV9TTUNDQ19PV05FUl9TVEFOREFSRCwgMHgwMTMzKQo+PiArCj4+ICsjZGVm aW5lIFNNQ0NDX1BDSV9TRUdfSU5GT8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ PiArwqDCoMKgwqDCoMKgIEFSTV9TTUNDQ19DQUxMX1ZBTChBUk1fU01DQ0NfRkFTVF9DQUxMLMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBUk1fU01DQ0Nf U01DXzMyLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBcCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBBUk1fU01DQ0NfT1dORVJfU1RBTkRBUkQsIDB4MDEzNCkKPj4gKwo+PiDCoCAvKiBQYXJh dmlydHVhbGlzZWQgdGltZSBjYWxscyAoZGVmaW5lZCBieSBBUk0gREVOMDA1N0EpICovCj4+IMKg ICNkZWZpbmUgQVJNX1NNQ0NDX0hWX1BWX1RJTUVfRkVBVFVSRVPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+IMKgwqDCoMKgwqDCoMKgwqAgQVJN X1NNQ0NDX0NBTExfVkFMKEFSTV9TTUNDQ19GQVNUX0NBTEwswqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgXAo+PiAtLSAKPj4gMi4yNi4yCj4+CgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QK bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=