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=-8.3 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, 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 1B034C49ED7 for ; Tue, 10 Sep 2019 16:25:28 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (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 C150120872 for ; Tue, 10 Sep 2019 16:25:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jSp6vVBu" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C150120872 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1i7iwq-0001KR-3x; Tue, 10 Sep 2019 16:24:56 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1i7iwo-0001KM-Ps for xen-devel@lists.xenproject.org; Tue, 10 Sep 2019 16:24:54 +0000 X-Inumbo-ID: 84b26eae-d3e7-11e9-a337-bc764e2007e4 Received: from mail-lj1-x243.google.com (unknown [2a00:1450:4864:20::243]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 84b26eae-d3e7-11e9-a337-bc764e2007e4; Tue, 10 Sep 2019 16:24:53 +0000 (UTC) Received: by mail-lj1-x243.google.com with SMTP id h2so10583924ljk.1 for ; Tue, 10 Sep 2019 09:24:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=s7P9PipeaTrr0mQTBhu1eLPeZscHilOkZyRzgtOGsds=; b=jSp6vVBuQ5Rvpc6eOjsN9xyZSm9c8QbnA1y+AznNPmewVvfb+O6USLNMshEEGi/+sp 9NlHSuHipvMqdWLvTDYAers3Bd/CTOYjmlSd0Xv3+zVUAghXzQSbtlBFMk9b3EojSxQT FnOtrh/A7yR7gux6lP8dURDeE2RpospNgYW/K7hyz9iCA+Z4P5icOrYVMSFV/dYCzldj rwjfijjwRz+6Zko3PE9rZlk25QIjYH507lTEXho5xmzOFPsZU8Yjl8P7LQvjVcM82J43 poAzHLBGyfW3davWZcTm0YP35CRfN8Din4i8d3DniJgDGUdxMqIF4oOmQI5wNI5FwiAs Thbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=s7P9PipeaTrr0mQTBhu1eLPeZscHilOkZyRzgtOGsds=; b=NOw58MkcE2rWvGaUa/9vrGeLG+dAzg4lLWT3gaV4SOYgIyu2Ts4awS82r1ql1sdcOt 56Gy89YqgjqXICiDeE+JmIOYg7LEHn8VJ1jdpbJDRXjxtJSMdNu9/ejyIgA/iEMNmThR DfoQuhPHuWUBYY+n0e3CtHW4ckYOowNJNYWlMqXe1mD88J9yv7kEP0wKJ02f9tkbuEqA 6Ym0UeZZuuO7rgbziHebm11jE5ShXpO7QOBTW2Zv2PJV6uvXDusOOqVbWnTx/XIDYwn8 reu1XWcwDDr7jbZS373KLKq8dK4fAOiIyxrEzSk1pPVnWsiFr5UFgrbOzkwNxjWHSbhi KeKA== X-Gm-Message-State: APjAAAUk16Ee2CGj5b2inWL9rLWCg0oJ799YERfW8wgM1r+8Y+R1jauv WL9yN4Fa10BTbO66QueKW9w= X-Google-Smtp-Source: APXvYqyEa8QuHU6C9656mGzyXidYSEsb0VS96WXrppCloEtxhN+0PRAO/b/WbJZIM8hYym2AfYL2dg== X-Received: by 2002:a2e:9710:: with SMTP id r16mr16295712lji.114.1568132692169; Tue, 10 Sep 2019 09:24:52 -0700 (PDT) Received: from [10.17.182.120] (ll-74.141.223.85.sovam.net.ua. [85.223.141.74]) by smtp.gmail.com with ESMTPSA id n18sm4737265lfe.0.2019.09.10.09.24.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 Sep 2019 09:24:51 -0700 (PDT) To: Julien Grall , xen-devel@lists.xenproject.org References: <1566588892-5305-1-git-send-email-olekstysh@gmail.com> From: Oleksandr Message-ID: Date: Tue, 10 Sep 2019 19:24:50 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US Subject: Re: [Xen-devel] [PATCH] [RFC V2] xen/arm: Restrict "p2m_ipa_bits" according to the IOMMU requirements X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Oleksandr Tyshchenko , sstabellini@kernel.org, Volodymyr_Babchuk@epam.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Ck9uIDEwLjA5LjE5IDE4OjExLCBKdWxpZW4gR3JhbGwgd3JvdGU6Cj4gSGkgT2xla3NhbmRyLAoK SGksIEp1bGllbgoKCj4KPiBPbiA4LzIzLzE5IDg6MzQgUE0sIE9sZWtzYW5kciBUeXNoY2hlbmtv IHdyb3RlOgo+PiBGcm9tOiBPbGVrc2FuZHIgVHlzaGNoZW5rbyA8b2xla3NhbmRyX3R5c2hjaGVu a29AZXBhbS5jb20+Cj4+Cj4+IFRoZXJlIGlzIGEgc3RyaWN0IHJlcXVpcmVtZW50IGZvciB0aGUg SU9NTVUgd2hpY2ggd2FudHMgdG8gc2hhcmUKPj4gdGhlIFAyTSB0YWJsZSB3aXRoIHRoZSBDUFUu IFRoZSBJT01NVSdzIFN0YWdlLTIgaW5wdXQgc2l6ZSBtdXN0IGJlIGVxdWFsCj4+IHRvIHRoZSBQ Mk0gSVBBIHNpemUuIEl0IGlzIG5vdCBhIHByb2JsZW0gd2hlbiB0aGUgSU9NTVUgY2FuIHN1cHBv cnQKPj4gYWxsIHZhbHVlcyB0aGUgQ1BVIHN1cHBvcnRzLiBJbiB0aGF0IGNhc2UsIHRoZSBJT01N VSBkcml2ZXIgd291bGQganVzdAo+PiB1c2UgYW55ICJwMm1faXBhX2JpdHMiIHZhbHVlIGFzIGlz LiBCdXQsIHRoZXJlIGFyZSBjYXNlcyB3aGVuIG5vdC4KPj4KPj4gSW4gb3JkZXIgdG8gbWFrZSBQ Mk0gc2hhcmluZyBwb3NzaWJsZSBvbiB0aGUgcGxhdGZvcm1zIHdoaWNoCj4+IElQTU1VcyBoYXZl IGEgbGltaXRhdGlvbiBpbiBtYXhpbXVtIFN0YWdlLTIgaW5wdXQgc2l6ZSBpbnRyb2R1Y2UKPj4g dGhlIGZvbGxvd2luZyBsb2dpYy4KPj4KPj4gRmlyc3QgaW5pdGlhbGl6ZSB0aGUgSU9NTVUgc3Vi c3lzdGVtIGFuZCBnYXRoZXIgcmVxdWlyZW1lbnRzIHJlZ2FyZGluZwo+PiB0aGUgbWF4aW11bSBJ UEEgYml0cyBzdXBwb3J0ZWQgYnkgZWFjaCBJT01NVSBkZXZpY2UgdG8gZmlndXJlIG91dAo+PiB0 aGUgbWluaW11bSB2YWx1ZSBhbW9uZyB0aGVtLiBJbiB0aGUgUDJNIGNvZGUsIHRha2UgaW50byB0 aGUgYWNjb3VudAo+PiB0aGUgSU9NTVUgcmVxdWlyZW1lbnRzIGFuZCBjaG9vc2Ugc3VpdGFibGUg InBhX3JhbmdlIiBhY2NvcmRpbmcKPj4gdG8gdGhlIHJlc3RyaWN0ZWQgInAybV9pcGFfYml0cyIu Cj4KPiBBcyBJIHBvaW50ZWQgaW4gdGhlIHByZXZpb3VzIHZlcnNpb24sIGFsbCB0aGUgY29kZSB5 b3UgbW9kaWZ5IGlzIGFybTY0IAo+IHNwZWNpZmljLiBGb3IgYXJtMzIsIHRoZSBudW1iZXIgb2Yg SVBBIGJpdHMgaXMKPiBoYXJkY29kZWQuIFNvIGlmIHlvdSBtb2RpZnkgcDJtX2lwYV9iaXRzLCB5 b3Ugd291bGQgZW5kIHVwIHRvIAo+IG1pc2NvbmZpZ3VyZSBWVENSLgo+IEluIG90aGVyIHdvcmRz LCBmb3IgQXJtMzIsIHlvdSBuZWVkIHRvIGNoZWNrIHAybV9pcGFfYml0cyBpcyBhdCBsZWFzdCAK PiA0MC1iaXRzIGJlZm9yZSBvdmVycmlkaW5nIGl0LgoKQnV0LCBhbGwgbW9kaWZpY2F0aW9ucyB3 aXRoIHAybV9pcGFfYml0cyBhcmUgZG9uZSBiZWZvcmUgCnNldHVwX3ZpcnRfcGFnaW5nKCksIHdo ZXJlLCBhY3R1YWxseSwgdGhlIHAybV9pcGFfYml0cyBpcyBoYXJkLWNvZGVkIHRvIAo0MCBiaXRz LiBIb3cgY2FuIHdlIGVuZCB1cCBtaXNjb25maWd1cmluZyBWVENSIGZvciBBUk0zMj8gT3IgSSBy ZWFsbHkgCm1pc3NlZCBzb21ldGhpbmc/CgoKPgo+Cj4+Cj4+IFNpZ25lZC1vZmYtYnk6IE9sZWtz YW5kciBUeXNoY2hlbmtvIDxvbGVrc2FuZHJfdHlzaGNoZW5rb0BlcGFtLmNvbT4KPj4gQ0M6IEp1 bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+Cj4+Cj4+IC0tLQo+PiBTdGlsbCBSRkM6 Cj4+Cj4+IDEuIFBhdGNoIGFzc3VtZXMgdGhhdCBJUE1NVSBzdXBwb3J0IGlzIGFscmVhZHkgaW4u Cj4+IDIuIE5vdCBjaGVja2VkIGZvciB0aGUgU01NVS4KPj4KPj4gQ2hhbmdlcyBzaW5jZSBSRkMg VjEgWzFdOgo+PiDCoMKgwqAgLSBEb24ndCB1cGRhdGUgcDJtX2lwYV9iaXRzIGJ5IHRoZSBJT01N VSBkcml2ZXJzIGRpcmVjdGx5LAo+PiDCoMKgwqDCoMKgIGludHJvZHVjZSBwMm1fcmVzdHJpY3Rf aXBhX2JpdHMoKQo+PiDCoMKgwqAgLSBDbGFyaWZ5IHBhdGNoIHN1YmplY3QvZGVzY3JpcHRpb24K Pj4gwqDCoMKgIC0gQWRkIG1vcmUgY29tbWVudHMgdG8gY29kZQo+PiDCoMKgwqAgLSBDaGVjayBm b3IgZXF1aXZhbGVudCAicGFiaXRzIiBpbiBzZXR1cF92aXJ0X3BhZ2luZygpCj4+IMKgwqDCoCAt IFJlbW92ZSBBU1NFUlRzIGZyb20gdGhlIFNNTVUgYW5kIElQTU1VIGRyaXZlcnMKPj4KPj4gWzFd IAo+PiBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2FyY2hpdmVzL2h0bWwveGVuLWRldmVs LzIwMTktMDgvbXNnMDIwNzguaHRtbAo+PiAtLS0KPj4gwqAgeGVuL2FyY2gvYXJtL3AybS5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzMyAKPj4gKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0KPj4gwqAgeGVuL2FyY2gvYXJtL3NldHVwLmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTEgKysrKysrKysrLS0KPj4g wqAgeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL2lwbW11LXZtc2EuYyB8IDE5ICsrKystLS0t LS0tLS0tLS0tLQo+PiDCoCB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jwqDCoMKg wqDCoMKgIHwgMTYgKysrKysrKystLS0tLS0tLQo+PiDCoCB4ZW4vaW5jbHVkZS9hc20tYXJtL3Ay bS5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA4ICsrKysrKysrCj4+IMKgIDUg ZmlsZXMgY2hhbmdlZCwgNjAgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pCj4+Cj4+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vcDJtLmMgYi94ZW4vYXJjaC9hcm0vcDJtLmMKPj4gaW5k ZXggMjM3NGU5Mi4uZjc0MmQ5YyAxMDA2NDQKPj4gLS0tIGEveGVuL2FyY2gvYXJtL3AybS5jCj4+ ICsrKyBiL3hlbi9hcmNoL2FybS9wMm0uYwo+PiBAQCAtMzQsNyArMzQsOCBAQCBzdGF0aWMgdW5z aWduZWQgaW50IF9fcmVhZF9tb3N0bHkgbWF4X3ZtaWQgPSAKPj4gTUFYX1ZNSURfOF9CSVQ7Cj4+ IMKgIMKgICNkZWZpbmUgUDJNX1JPT1RfUEFHRVPCoMKgwqAgKDE8PFAyTV9ST09UX09SREVSKQo+ PiDCoCAtdW5zaWduZWQgaW50IF9fcmVhZF9tb3N0bHkgcDJtX2lwYV9iaXRzOwo+PiArLyogTGFy Z2VyIHRoYW4gYW55IHBvc3NpYmxlIHZhbHVlICovCj4KPiBJIHRoaW5rIGl0IHdvdWxkIGJlIHdv cnRoIGV4cGxhaW5pbmcgdGhhdCB0aGlzIGlzIHJlcXVpcmVkIHNvIHRoZSAKPiBudW1iZXIgb2Yg UDJNIGJpdHMgY2FuIGJlIHJlc3RyaWN0ZWQgYnkgZXh0ZXJuYWwgZW50aXR5IChlLmcgSU9NTVUp LgoKb2ssIHdpbGwgYWRkIGV4cGxhbmF0aW9uCgoKPgo+Cj4+ICt1bnNpZ25lZCBpbnQgX19yZWFk X21vc3RseSBwMm1faXBhX2JpdHMgPSA2NDsKPj4gwqAgwqAgLyogSGVscGVycyB0byBsb29rdXAg dGhlIHByb3BlcnRpZXMgb2YgZWFjaCBsZXZlbCAqLwo+PiDCoCBzdGF0aWMgY29uc3QgcGFkZHJf dCBsZXZlbF9tYXNrc1tdID0KPj4gQEAgLTE5MTIsNiArMTkxMywxNiBAQCBzdHJ1Y3QgcGFnZV9p bmZvICpnZXRfcGFnZV9mcm9tX2d2YShzdHJ1Y3QgCj4+IHZjcHUgKnYsIHZhZGRyX3QgdmEsCj4+ IMKgwqDCoMKgwqAgcmV0dXJuIHBhZ2U7Cj4+IMKgIH0KPj4gwqAgK3ZvaWQgX19pbml0IHAybV9y ZXN0cmljdF9pcGFfYml0cyh1bnNpZ25lZCBpbnQgaW9tbXVfaXBhX2JpdHMpCj4KPiBUaGUgbmFt ZSBvZiB0aGUgZnVuY3Rpb24gaXMgcXVpdGUgZ2VuZXJpYyBhcyBtb3N0IG9mIHRoZSBjb2RlIGlu IGl0LiAKPiBTbyBjYW4gd2UgYXZvaWQgdXNlIHRoZSB0ZXJtIElPTU1VIGluIGl0PwoKeWVzLCB3 aWxsIGRvCgoKPgo+Cj4+ICt7Cj4+ICvCoMKgwqAgLyoKPj4gK8KgwqDCoMKgICogQ2FsY3VsYXRl IHRoZSBtaW5pbXVtIG9mIHRoZSBtYXhpbXVtIElQQSBiaXRzIHRoYXQgYW55IElPTU1VCj4+ICvC oMKgwqDCoCAqIGNhbiBzdXBwb3J0Lgo+PiArwqDCoMKgwqAgKi8KPj4gK8KgwqDCoCBpZiAoIGlv bW11X2lwYV9iaXRzIDwgcDJtX2lwYV9iaXRzICkKPj4gK8KgwqDCoMKgwqDCoMKgIHAybV9pcGFf Yml0cyA9IGlvbW11X2lwYV9iaXRzOwo+PiArfQo+PiArCj4+IMKgIC8qIFZUQ1IgdmFsdWUgdG8g YmUgY29uZmlndXJlZCBieSBhbGwgQ1BVcy4gU2V0IG9ubHkgb25jZSBieSB0aGUgCj4+IGJvb3Qg Q1BVICovCj4+IMKgIHN0YXRpYyB1aW50MzJfdCBfX3JlYWRfbW9zdGx5IHZ0Y3I7Cj4+IMKgIEBA IC0xOTY2LDEwICsxOTc3LDI4IEBAIHZvaWQgX19pbml0IHNldHVwX3ZpcnRfcGFnaW5nKHZvaWQp Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBbN10gPSB7IDAgfcKgIC8qIEludmFsaWQgKi8KPj4gwqDC oMKgwqDCoCB9Owo+PiDCoCAtwqDCoMKgIHVuc2lnbmVkIGludCBjcHU7Cj4+ICvCoMKgwqAgdW5z aWduZWQgaW50IGksIGNwdTsKPj4gwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgcGFfcmFuZ2UgPSAw eDEwOyAvKiBMYXJnZXIgdGhhbiBhbnkgcG9zc2libGUgdmFsdWUgKi8KPj4gwqDCoMKgwqDCoCBi b29sIHZtaWRfOF9iaXQgPSBmYWxzZTsKPj4gwqAgK8KgwqDCoCBpZiAoIGlvbW11X2VuYWJsZWQg KQo+Cj4gQ291bGQgd2UgbWFrZSB0aGlzIElPTU1VLWFnbm9zdGljPyBUaGUgbWFpbiByZWFzb24g dG8gY29udmVydCBmcm9tIAo+IHAybV9pcGFfYml0cyB0byBwYV9yYW5nZSBpcyB0byBjYXRlciB0 aGUgcmVzdCBvZiB0aGUgY29kZS4KPgo+IEJ1dCB3ZSBjb3VsZCByZXdvcmsgdGhlIGNvZGUgdG8g ZG8gdGhlIGNvbXB1dGF0aW9uIHdpdGggcDJtX2lwYV9iaXRzIAo+IGFuZCB0aGVuIGxvb2stdXAg Zm9yIHRoZSBwYV9yYW5nZS4gCgpJIGFtIGFmcmFpZCwgSSBkb24ndCBjb21wbGV0ZWx5IHVuZGVy c3RhbmQgeW91ciBpZGVhIG9mIG1ha2luZyB0aGlzIApJT01NVS1hZ25vc3RpYyBhbmQgd2hhdCBJ IHNob3VsZCBkby4uLgoKCj4+ICvCoMKgwqAgewo+PiArwqDCoMKgwqDCoMKgwqAgLyoKPj4gK8Kg wqDCoMKgwqDCoMKgwqAgKiBDaG9vc2Ugc3VpdGFibGUgInBhX3JhbmdlIiBhY2NvcmRpbmcgdG8g dGhlIElPTU1VIAo+PiByZXF1aXJlbWVudHMKPj4gK8KgwqDCoMKgwqDCoMKgwqAgKiAocmVzdHJp Y3RlZCAicDJtX2lwYV9iaXRzIiB2YWx1ZSkuCj4+ICvCoMKgwqDCoMKgwqDCoMKgICogQXMgUDJN IHRhYmxlIGlzIGFsd2F5cyBjb25maWd1cmVkIHdpdGggSVBBIGJpdHMgPT0gUEEgYml0cywKPj4g K8KgwqDCoMKgwqDCoMKgwqAgKiBjaGVjayBmb3IgZXF1aXZhbGVudCAicGFiaXRzIiBhbmQgc3Rv cmUgaXQncyBpbmRleC4KPj4gK8KgwqDCoMKgwqDCoMKgwqAgKi8KPj4gK8KgwqDCoMKgwqDCoMKg IGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0laRShwYV9yYW5nZV9pbmZvKTsgaSsrICkKPj4gK8Kg wqDCoMKgwqDCoMKgIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCBwMm1faXBhX2Jp dHMgPT0gcGFfcmFuZ2VfaW5mb1tpXS5wYWJpdHMgKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGFfcmFuZ2UgPSBpOwo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfQo+PiArCj4+IMKgwqDC oMKgwqAgZm9yX2VhY2hfb25saW5lX2NwdSAoIGNwdSApCj4+IMKgwqDCoMKgwqAgewo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IGNwdWluZm9fYXJtICppbmZvID0gJmNwdV9kYXRh W2NwdV07Cj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vc2V0dXAuYyBiL3hlbi9hcmNoL2Fy bS9zZXR1cC5jCj4+IGluZGV4IDUxYTY2NzcuLjQxM2YzZTYgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9h cmNoL2FybS9zZXR1cC5jCj4+ICsrKyBiL3hlbi9hcmNoL2FybS9zZXR1cC5jCj4+IEBAIC05MzYs MTIgKzkzNiwxOSBAQCB2b2lkIF9faW5pdCBzdGFydF94ZW4odW5zaWduZWQgbG9uZyAKPj4gYm9v dF9waHlzX29mZnNldCwKPj4gwqDCoMKgwqDCoCBwcmludGsoIkJyb3VnaHQgdXAgJWxkIENQVXNc biIsIChsb25nKW51bV9vbmxpbmVfY3B1cygpKTsKPj4gwqDCoMKgwqDCoCAvKiBUT0RPOiBzbXBf Y3B1c19kb25lKCk7ICovCj4+IMKgIC3CoMKgwqAgc2V0dXBfdmlydF9wYWdpbmcoKTsKPj4gLQo+ PiArwqDCoMKgIC8qCj4+ICvCoMKgwqDCoCAqIFRoZSBJT01NVSBzdWJzeXN0ZW0gbXVzdCBiZSBp bml0aWFsaXplZCBiZWZvcmUgUDJNIGFzIHdlIG5lZWQgCj4+IHRvIGdhdGhlcgo+PiArwqDCoMKg wqAgKiByZXF1aXJlbWVudHMgcmVnYXJkaW5nIHRoZSBtYXhpbXVtIElQQSBiaXRzIHN1cHBvcnRl ZCBieSBlYWNoIAo+PiBJT01NVQo+PiArwqDCoMKgwqAgKiBkZXZpY2UgdG8gZmlndXJlIG91dCB0 aGUgbWluaW11bSB2YWx1ZSBhbW9uZyB0aGVtLiBUaGUgUDJNIAo+PiBjb2RlIHdpbGwKPj4gK8Kg wqDCoMKgICogY2hvb3NlIHN1aXRhYmxlICJwYV9yYW5nZSIgYWNjb3JkaW5nIHRvIHRoZSByZXN0 cmljdGVkIAo+PiAicDJtX2lwYV9iaXRzIgo+PiArwqDCoMKgwqAgKiB2YWx1ZS4KPj4gK8KgwqDC oMKgICovCj4KPiBUaGlzIGlzIGEgYml0IHRvbyB2ZXJib3NlLCBpbXBsZW1lbnRhdGlvbiBkZXRh aWxzIGFyZSBub3QgbmVjZXNzYXJ5IAo+IGhlcmUgYW5kIGluY3JlYXNpbmcgdGhlIHJpc2sgdG8g aGF2ZSBiaXQgcm90IGNvbW1lbnQuIFNvIGhvdyBhYm91dDoKPgo+ICJUaGUgSU9NTVUgc3Vic3lz dGVtIG11c3QgYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBQMk0gYXMgd2UgbmVlZCB0byAKPiBn YXRoZXIgcmVxdWlyZW1lbnRzIHJlZ2FyZGluZyB0aGUgbWF4aW11bSBJUEEgYml0IHN1cHBvcnRl ZCBieSBlYWNoIAo+IElPTU1VLiI/Cgp5b3UgYXJlIHJpZ2h0LCB3aWxsIHVwZGF0ZSBhIGNvbW1l bnQKCgo+Cj4KPj4gwqDCoMKgwqDCoCByYyA9IGlvbW11X3NldHVwKCk7Cj4+IMKgwqDCoMKgwqAg aWYgKCAhaW9tbXVfZW5hYmxlZCAmJiByYyAhPSAtRU5PREVWICkKPj4gwqDCoMKgwqDCoMKgwqDC oMKgIHBhbmljKCJDb3VsZG4ndCBjb25maWd1cmUgY29ycmVjdGx5IGFsbCB0aGUgSU9NTVVzLiIp Owo+PiDCoCArwqDCoMKgIHNldHVwX3ZpcnRfcGFnaW5nKCk7Cj4+ICsKPj4gwqDCoMKgwqDCoCBk b19pbml0Y2FsbHMoKTsKPj4gwqAgwqDCoMKgwqDCoCAvKgo+PiBkaWZmIC0tZ2l0IGEveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvYXJtL2lwbW11LXZtc2EuYyAKPj4gYi94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC9hcm0vaXBtbXUtdm1zYS5jCj4+IGluZGV4IGVjNTQzYzMuLmQyZTM2YTQgMTAwNjQ0 Cj4+IC0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9pcG1tdS12bXNhLmMKPj4gKysr IGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL2lwbW11LXZtc2EuYwo+PiBAQCAtMTMxNCwy MyArMTMxNCwxMiBAQCBzdGF0aWMgX19pbml0IGludCBpcG1tdV9pbml0KHN0cnVjdCAKPj4gZHRf ZGV2aWNlX25vZGUgKm5vZGUsIGNvbnN0IHZvaWQgKmRhdGEpCj4+IMKgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm4gLUVOT0RFVjsKPj4gwqDCoMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqAgZWxzZQo+PiAt wqDCoMKgIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4+IC3CoMKgwqDCoMKgwqDCoMKgICog QXMgNC1sZXZlbCB0cmFuc2xhdGlvbiB0YWJsZSBpcyBub3Qgc3VwcG9ydGVkIGluIElQTU1VLCAK Pj4gd2UgbmVlZAo+PiAtwqDCoMKgwqDCoMKgwqDCoCAqIHRvIGNoZWNrIElQQSBzaXplIHVzZWQg Zm9yIFAyTSB0YWJsZSBiZWZvcmVoYW5kIHRvIGJlIAo+PiBzdXJlIGl0IGlzCj4+IC3CoMKgwqDC oMKgwqDCoMKgICogMy1sZXZlbCBhbmQgdGhlIElQTU1VIHdpbGwgYmUgYWJsZSB0byB1c2UgaXQu Cj4+IC3CoMKgwqDCoMKgwqDCoMKgICoKPj4gLcKgwqDCoMKgwqDCoMKgwqAgKiBUT0RPOiBGaXJz dCBpbml0aWFsaXplIHRoZSBJT01NVSBhbmQgZ2F0aGVyIHRoZSAKPj4gcmVxdWlyZW1lbnRzIGFu ZAo+PiAtwqDCoMKgwqDCoMKgwqDCoCAqIHRoZW4gaW5pdGlhbGl6ZSB0aGUgUDJNLiBJbiB0aGUg UDJNIGNvZGUsIHRha2UgaW50byB0aGUgCj4+IGFjY291bnQKPj4gLcKgwqDCoMKgwqDCoMKgwqAg KiB0aGUgSU9NTVUgcmVxdWlyZW1lbnRzIGFuZCByZXN0cmljdCAicGFfcmFuZ2UiIGlmIG5lY2Vz c2FyeS4KPj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBTZXQgbWF4aW11bSBTdGFnZS0yIGlucHV0IHNp emUgc3VwcG9ydGVkIGJ5IHRoZSBJUE1NVS4gV2UgCj4+IGV4cGVjdAo+PiArwqDCoMKgwqDCoMKg wqDCoCAqIHRoZSBQMk0gY29kZSB3aWxsIHRha2UgaW50byB0aGUgYWNjb3VudCB0aGUgSU9NTVUg Cj4+IHJlcXVpcmVtZW50cyBhbmQKPj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBjaG9vc2Ugc3VpdGFi bGUgInBhX3JhbmdlIi4KPgo+IEkgd291bGQgZHJvcCB0aGUgbGFzdCBzZW50ZW5jZS4KCm9rLiB3 aWxsIGRvCgoKPgo+Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4+IC3CoMKgwqDCoMKgwqDC oCBpZiAoIElQTU1VX01BWF9QMk1fSVBBX0JJVFMgPCBwMm1faXBhX2JpdHMgKQo+PiAtwqDCoMKg wqDCoMKgwqAgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcmludGtfb25jZShYRU5MT0df RVJSICJpcG1tdTogUDJNIElQQSBzaXplIGlzIG5vdCAKPj4gc3VwcG9ydGVkIChQMk09JXUgSVBN TVU9JXUpIVxuIiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcDJtX2lwYV9iaXRzLCBJUE1NVV9NQVhfUDJNX0lQQV9CSVRTKTsKPj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9ERVY7Cj4+IC3CoMKgwqDCoMKgwqDCoCB9Cj4+IC3C oMKgwqAgfQo+PiArwqDCoMKgwqDCoMKgwqAgcDJtX3Jlc3RyaWN0X2lwYV9iaXRzKElQTU1VX01B WF9QMk1fSVBBX0JJVFMpOwo+PiDCoCDCoMKgwqDCoMKgIHJldCA9IGlwbW11X3Byb2JlKG5vZGUp Owo+PiDCoMKgwqDCoMKgIGlmICggcmV0ICkKPj4gZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL2FybS9zbW11LmMgCj4+IGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3Nt bXUuYwo+PiBpbmRleCA4YWU5ODZhLi4yYjEwYzZlIDEwMDY0NAo+PiAtLS0gYS94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jCj4+ICsrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L2FybS9zbW11LmMKPj4gQEAgLTIxOTgsMTQgKzIxOTgsMTQgQEAgc3RhdGljIGludCBhcm1fc21t dV9kZXZpY2VfY2ZnX3Byb2JlKHN0cnVjdCAKPj4gYXJtX3NtbXVfZGV2aWNlICpzbW11KQo+PiDC oMKgwqDCoMKgIHNpemUgPSBhcm1fc21tdV9pZF9zaXplX3RvX2JpdHMoKGlkID4+IElEMl9JQVNf U0hJRlQpICYgCj4+IElEMl9JQVNfTUFTSyk7Cj4+IMKgwqDCoMKgwqAgc21tdS0+czFfb3V0cHV0 X3NpemUgPSBtaW5fdCh1bnNpZ25lZCBsb25nLCBQSFlTX01BU0tfU0hJRlQsIAo+PiBzaXplKTsK Pj4gwqAgLcKgwqDCoCAvKiBYZW46IFN0YWdlLTIgaW5wdXQgc2l6ZSBoYXMgdG8gbWF0Y2ggcDJt X2lwYV9iaXRzLsKgICovCj4+IC3CoMKgwqAgaWYgKHNpemUgPCBwMm1faXBhX2JpdHMpIHsKPj4g LcKgwqDCoMKgwqDCoMKgIGRldl9lcnIoc21tdS0+ZGV2LAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAiUDJNIElQQSBzaXplIG5vdCBzdXBwb3J0ZWQgKFAyTT0ldSBTTU1VPSVsdSkhXG4iLAo+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwMm1faXBhX2JpdHMsIHNpemUpOwo+PiAtwqDCoMKg wqDCoMKgwqAgcmV0dXJuIC1FTk9ERVY7Cj4+IC3CoMKgwqAgfQo+PiAtwqDCoMKgIHNtbXUtPnMy X2lucHV0X3NpemUgPSBwMm1faXBhX2JpdHM7Cj4+ICvCoMKgwqAgLyoKPj4gK8KgwqDCoMKgICog WGVuOgo+PiArwqDCoMKgwqAgKiBTZXQgbWF4aW11bSBTdGFnZS0yIGlucHV0IHNpemUgc3VwcG9y dGVkIGJ5IHRoZSBTTU1VLiBXZSBleHBlY3QKPj4gK8KgwqDCoMKgICogdGhlIFAyTSBjb2RlIHdp bGwgdGFrZSBpbnRvIHRoZSBhY2NvdW50IHRoZSBJT01NVSAKPj4gcmVxdWlyZW1lbnRzIGFuZAo+ PiArwqDCoMKgwqAgKiBjaG9vc2Ugc3VpdGFibGUgInBhX3JhbmdlIi4KPgo+IFNhbWUgaGVyZS4K Cm9rCgoKLS0gClJlZ2FyZHMsCgpPbGVrc2FuZHIgVHlzaGNoZW5rbwoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QK WGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v cmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=