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=-2.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,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 CBBBCC47404 for ; Fri, 11 Oct 2019 07:53:06 +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 A224420679 for ; Fri, 11 Oct 2019 07:53:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A224420679 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.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 1iIpj4-0001nr-5e; Fri, 11 Oct 2019 07:52:38 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iIpj2-0001nm-Tp for xen-devel@lists.xenproject.org; Fri, 11 Oct 2019 07:52:36 +0000 X-Inumbo-ID: 150406b2-ebfc-11e9-beca-bc764e2007e4 Received: from mx1.suse.de (unknown [195.135.220.15]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 150406b2-ebfc-11e9-beca-bc764e2007e4; Fri, 11 Oct 2019 07:52:33 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 53B53B049; Fri, 11 Oct 2019 07:52:32 +0000 (UTC) To: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= References: <20191010113345.6867-1-roger.pau@citrix.com> <20191010113345.6867-2-roger.pau@citrix.com> <20191010121302.GF1389@Air-de-Roger.citrite.net> <39f2d60b-e371-1646-dc79-cf1355a81afa@suse.com> <20191010131245.GG1389@Air-de-Roger.citrite.net> <56d6f0f5-6f3a-7798-7538-99ec50fa079e@suse.com> <20191010151935.GI1389@Air-de-Roger.citrite.net> From: Jan Beulich Message-ID: <295ee1cd-33d6-41c8-93b8-2f7daf34de98@suse.com> Date: Fri, 11 Oct 2019 09:52:35 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: <20191010151935.GI1389@Air-de-Roger.citrite.net> Content-Language: en-US Subject: Re: [Xen-devel] [PATCH v2 1/2] x2APIC: translate IO-APIC entries when enabling the IOMMU 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: Juergen Gross , Andrew Cooper , Wei Liu , xen-devel@lists.xenproject.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" T24gMTAuMTAuMjAxOSAxNzoxOSwgUm9nZXIgUGF1IE1vbm7DqSAgd3JvdGU6Cj4gT24gVGh1LCBP Y3QgMTAsIDIwMTkgYXQgMDM6NDY6NDVQTSArMDIwMCwgSmFuIEJldWxpY2ggd3JvdGU6Cj4+IE9u IDEwLjEwLjIwMTkgMTU6MTIsIFJvZ2VyIFBhdSBNb25uw6kgIHdyb3RlOgo+Pj4gT24gVGh1LCBP Y3QgMTAsIDIwMTkgYXQgMDI6NTU6MDJQTSArMDIwMCwgSmFuIEJldWxpY2ggd3JvdGU6Cj4+Pj4g T24gMTAuMTAuMjAxOSAxNDoxMywgUm9nZXIgUGF1IE1vbm7DqSAgd3JvdGU6Cj4+Pj4+IE9uIFRo dSwgT2N0IDEwLCAyMDE5IGF0IDAxOjU0OjA2UE0gKzAyMDAsIEphbiBCZXVsaWNoIHdyb3RlOgo+ Pj4+Pj4gT24gMTAuMTAuMjAxOSAxMzozMywgUm9nZXIgUGF1IE1vbm5lIHdyb3RlOgo+Pj4+Pj4+ IFdoZW4gaW50ZXJydXB0IHJlbWFwcGluZyBpcyBlbmFibGVkIGFzIHBhcnQgb2YgZW5hYmxpbmcg eDJBUElDIHRoZQo+Pj4+Pj4KPj4+Pj4+IFBlcmhhcHMgInVubWFza2VkIiBpbnN0ZWFkIG9mICJ0 aGUiPwo+Pj4+Pj4KPj4+Pj4+PiBJTy1BUElDIGVudHJpZXMgYWxzbyBuZWVkIHRvIGJlIHRyYW5z bGF0ZWQgdG8gdGhlIG5ldyBmb3JtYXQgYW5kIGFkZGVkCj4+Pj4+Pj4gdG8gdGhlIGludGVycnVw dCByZW1hcHBpbmcgdGFibGUuCj4+Pj4+Pj4KPj4+Pj4+PiBUaGlzIHByZXZlbnRzIElPTU1VIGlu dGVycnVwdCByZW1hcHBpbmcgZmF1bHRzIHdoZW4gYm9vdGluZyBvbgo+Pj4+Pj4+IGhhcmR3YXJl IHRoYXQgaGFzIHVubWFza2VkIElPLUFQSUMgcGlucy4KPj4+Pj4+Cj4+Pj4+PiBCdXQgaW4gdGhl IGVuZCBpdCBvbmx5IHBhcGVycyBvdmVyIHdoYXRldmVyIHRoZSBzcHVyaW91cyBpbnRlcnJ1cHRz Cj4+Pj4+PiByZXN1bHQgZm9ybSwgZG9lc24ndCBpdD8gV2hpY2ggaXNuJ3QgdG8gc2F5IHRoaXMg aXNuJ3QgYW4KPj4+Pj4+IGltcHJvdmVtZW50LiBDYWxsaW5nIG91dCB0aGUgRXh0SW50IGNhc2Ug aGVyZSBtYXkgYmUgd29ydGh3aGlsZSBhcwo+Pj4+Pj4gd2VsbCwgYXMgd291bGQgYmUgcG9pbnRp bmcgb3V0IHRoYXQgdGhpcyBjYXNlIHN0aWxsIHdvbid0IHdvcmsgb24KPj4+Pj4+IEFNRCBJT01N VXMuCj4+Pj4+Cj4+Pj4+IEJ1dCB0aGUgZml4IGZvciB0aGUgRXh0SU5UIEFNRCBpc3N1ZSBzaG91 bGQgYmUgZG9uZSBpbgo+Pj4+PiBhbWRfaW9tbXVfaW9hcGljX3VwZGF0ZV9pcmUgdGhlbiwgc28g dGhhdCBpdCBjYW4gcHJvcGVybHkgaGFuZGxlCj4+Pj4+IEV4dElOVCBkZWxpdmVyeSBtb2RlLCBu b3QgdG8gdGhpcyBwYXJ0IG9mIHRoZSBjb2RlLiBJIHdpbGwgbG9vawo+Pj4+PiBpbnRvIGl0LCBi dXQgSSB0aGluayBpdCdzIGtpbmQgb2YgdGFuZ2VudGlhbCB0byB0aGUgaXNzdWUgaGVyZS4KPj4+ Pgo+Pj4+IEknbSBub3QgdGFsa2luZyBvZiB5b3Ugd29ya2luZyBvbiBmaXhpbmcgdGhpcyByaWdo dCBhd2F5LiBJJ20gbWVyZWx5Cj4+Pj4gYXNraW5nIHRoYXQgeW91IG1lbnRpb24gaGVyZSAoYSkg dGhlIEV4dEludCBzcGVjaWFsIGNhc2UgYW5kIChiKQo+Pj4+IHRoYXQgdGhpcyBzcGVjaWFsIGNh c2Ugd2lsbCAoY29udGludWUgdG8pIG5vdCB3b3JrIGluIHRoZSBBTUQgY2FzZS4KPj4+Pgo+Pj4+ Pj4+IC0tLSBhL3hlbi9hcmNoL3g4Ni9hcGljLmMKPj4+Pj4+PiArKysgYi94ZW4vYXJjaC94ODYv YXBpYy5jCj4+Pj4+Pj4gQEAgLTUxNSw3ICs1MTUsNyBAQCBzdGF0aWMgdm9pZCByZXN1bWVfeDJh cGljKHZvaWQpCj4+Pj4+Pj4gICAgICBpb21tdV9lbmFibGVfeDJhcGljKCk7Cj4+Pj4+Pj4gICAg ICBfX2VuYWJsZV94MmFwaWMoKTsKPj4+Pj4+PiAgCj4+Pj4+Pj4gLSAgICByZXN0b3JlX0lPX0FQ SUNfc2V0dXAoaW9hcGljX2VudHJpZXMpOwo+Pj4+Pj4+ICsgICAgcmVzdG9yZV9JT19BUElDX3Nl dHVwKGlvYXBpY19lbnRyaWVzLCB0cnVlKTsKPj4+Pj4+PiAgICAgIHVubWFza184MjU5QSgpOwo+ Pj4+Pj4+ICAKPj4+Pj4+PiAgb3V0Ogo+Pj4+Pj4+IEBAIC05NjEsNyArOTYxLDEyIEBAIHZvaWQg X19pbml0IHgyYXBpY19ic3Bfc2V0dXAodm9pZCkKPj4+Pj4+PiAgICAgICAgICBwcmludGsoIlN3 aXRjaGVkIHRvIEFQSUMgZHJpdmVyICVzXG4iLCBnZW5hcGljLm5hbWUpOwo+Pj4+Pj4+ICAKPj4+ Pj4+PiAgcmVzdG9yZV9vdXQ6Cj4+Pj4+Pj4gLSAgICByZXN0b3JlX0lPX0FQSUNfc2V0dXAoaW9h cGljX2VudHJpZXMpOwo+Pj4+Pj4+ICsgICAgLyoKPj4+Pj4+PiArICAgICAqIE5COiBkbyBub3Qg dXNlIHJhdyBtb2RlIHdoZW4gcmVzdG9yaW5nIGVudHJpZXMgaWYgdGhlIGlvbW11IGhhcyBiZWVu Cj4+Pj4+Pj4gKyAgICAgKiBlbmFibGVkIGR1cmluZyB0aGUgcHJvY2VzcywgYmVjYXVzZSB0aGUg ZW50cmllcyBuZWVkIHRvIGJlIHRyYW5zbGF0ZWQKPj4+Pj4+PiArICAgICAqIGFuZCBhZGRlZCB0 byB0aGUgcmVtYXBwaW5nIHRhYmxlIGluIHRoYXQgY2FzZS4KPj4+Pj4+PiArICAgICAqLwo+Pj4+ Pj4+ICsgICAgcmVzdG9yZV9JT19BUElDX3NldHVwKGlvYXBpY19lbnRyaWVzLCAheDJhcGljX2Vu YWJsZWQpOwo+Pj4+Pj4KPj4+Pj4+IEhvdyBpcyB0aGlzIGRpZmZlcmVudCBpbiB0aGUgcmVzdW1l X3gyYXBpYygpIGNhc2U/IFRoZSBJT01NVSBnZXRzCj4+Pj4+PiBlbmFibGVkIGluIHRoZSBjb3Vy c2Ugb2YgdGhhdCBhcyB3ZWxsLiBJLmUuIEknZCBleHBlY3QgeW91IHdhbnQKPj4+Pj4+IHRvIHBh c3MgImZhbHNlIiB0aGVyZSwgbm90ICJ0cnVlIi4KPj4+Pj4KPj4+Pj4gSW4gdGhlIHJlc3VtZV94 MmFwaWMgY2FzZSBpbnRlcnJ1cHQgcmVtYXBwaW5nIHNob3VsZCBhbHJlYWR5IGJlCj4+Pj4+IGVu YWJsZWQgb3Igbm90LCBidXQgdGhhdCBmdW5jdGlvbiBpcyBub3QgZ29pbmcgdG8gZW5hYmxlIGlu dGVycnVwdAo+Pj4+PiByZW1hcHBpbmcgaWYgaXQgd2Fzbid0IGVuYWJsZWQgYmVmb3JlLCBoZW5j ZSB0aGUgSU8tQVBJQyBlbnRyaWVzCj4+Pj4+IHNob3VsZCBhbHJlYWR5IGJlIHVzaW5nIHRoZSBp bnRlcnJ1cHQgcmVtYXBwaW5nIHRhYmxlIGFuZCBubwo+Pj4+PiB0cmFuc2xhdGlvbiBpcyBuZWVk ZWQuCj4+Pj4KPj4+PiBXaG8gLyB3aGF0IHdvdWxkIGhhdmUgZW5hYmxlZCB0aGUgSU9NTVUgaW4g dGhlIHJlc3VtZSBjYXNlPwo+Pj4KPj4+IEkgZG9uJ3QgdGhpbmsgdGhlIHF1ZXN0aW9uIGlzIHdo byBlbmFibGVzIGludGVycnVwdCByZW1hcHBpbmcgaW4gdGhlCj4+PiByZXN1bWUgY2FzZSAod2hp Y2ggaXMgcmVzdW1lX3gyYXBpYyB3aGVuIGNhbGxpbmcgaW9tbXVfZW5hYmxlX3gyYXBpYwo+Pj4g QUZBSUNUKSwgdGhlIHBvaW50IGhlcmUgaXMgdGhhdCBvbiByZXN1bWUgdGhlIGVudHJpZXMgaW4g dGhlIElPLUFQSUMKPj4+IHdpbGwgYWxyZWFkeSBtYXRjaCB0aGUgc3RhdGUgb2YgaW50ZXJydXB0 IHJlbWFwcGluZywgc28gdGhleSBzaG91bGRuJ3QKPj4+IGJlIHRyYW5zbGF0ZWQuIElmIGludGVy cnVwdCByZW1hcHBpbmcgd2FzIG9mZiBiZWZvcmUgc3VzcGVuZCBpdCB3aWxsCj4+PiBzdGlsbCBi ZSBvZmYgYWZ0ZXIgcmVzdW1lLCBhbmQgdGhlcmUgd29uJ3QgYmUgYW55IHRyYW5zbGF0aW9uIG5l ZWRlZC4KPj4+IFRoZSBzYW1lIGlzIHRydWUgaWYgaW50ZXJydXB0IHJlbWFwcGluZyBpcyBvbiBi ZWZvcmUgc3VzcGVuZC4KPj4KPj4gSSBkaXNhZ3JlZTogc2F2ZV9JT19BUElDX3NldHVwKCkgZ2V0 cyBjYWxsZWQgZnJvbSByZXN1bWVfeDJhcGljKCksCj4+IG5vdCBwcmlvciB0byBzdXNwZW5kLgo+ IAo+IE9oLCBzbyBtYXliZSB0aGF0J3MgYSBtaXN1bmRlcnN0YW5kaW5nIG9uIG15IHNpZGUuIEkg ZG9uJ3Qgc2VlbSB0byBiZQo+IGFibGUgdG8gZmluZCBhIHN0YXRlbWVudCBhYm91dCB0aGUgY29u dGVudHMgb2YgdGhlIElPLUFQSUMgcmVnaXN0ZXJzCj4gKGFuZCBtb3JlIHNwZWNpZmljYWxseSB0 aGUgZW50cmllcykgd2hlbiBnZXR0aW5nIGJhY2sgZnJvbQo+IHN1c3BlbnNpb24uIEFyZSBhbGwg ZW50cmllcyBjbGVhcmVkIGFuZCBtYXNrZWQ/Cj4gCj4gQXJlIHRoZSB2YWx1ZXMgcHJldmlvdXMg dG8gc3VzcGVuc2lvbiBzdG9yZWQ/CgpTZWUgaW9hcGljX3N1c3BlbmQoKSAvIGlvYXBpY19yZXN1 bWUoKTogTG9va3MgbGlrZSB0aGVyZSdzIHNvbWUKcmVkdW5kYW5jeSBoZXJlIC0gSSBkb24ndCB0 aGluayBpdCBtYWtlcyBzZW5zZSBmb3IgdGhlIExBUElDCmNvZGUgdG8gZmlkZGxlIHdpdGggYWxs IHRoZSBSVEVzIGlmIHN1YnNlcXVlbnRseSAoSSBhc3N1bWU7CmRpZG4ndCBjaGVjaykgdGhleSds bCBhbGwgYmUgb3ZlcndyaXR0ZW4gYW55d2F5LiBJIHdvdWxkIHNlZW0KbW9yZSBsb2dpY2FsIHRv IG1lIGlmIHRoZXknZCBqdXN0IGFsbCBnZXQgbWFza2VkIGZvciBJT01NVQplbmFibGluZywgZGVm ZXJyaW5nIHRvIGlvYXBpY19yZXN1bWUoKSBmb3IgZXZlcnl0aGluZyBlbHNlLgoKPj4+Pj4+IEFs c28gaG93IHdvdWxkICJ4MmFwaWNfZW5hYmxlZCIgcmVmbGVjdCB0aGUgdHJhbnNpdGlvbj8gSXQg bWF5Cj4+Pj4+PiBoYXZlIGJlZW4gInRydWUiIGFscmVhZHkgYmVmb3JlIGVudGVyaW5nIHRoZSBm dW5jdGlvbiBoZXJlLgo+Pj4+Pgo+Pj4+PiBJZiB4MmFwaWNfZW5hYmxlZCA9PSB0cnVlIGF0IHRo ZSBwb2ludCB3aGVyZSByZXN0b3JlX0lPX0FQSUNfc2V0dXAKPj4+Pj4gaXMgY2FsbGVkIGludGVy cnVwdCByZW1hcHBpbmcgbXVzdCBiZSBlbmFibGVkLCBiZWNhdXNlIEFGQUlDVCBhdCB0aGlzCj4+ Pj4+IHBvaW50IGl0J3Mgbm90IHBvc3NpYmxlIHRvIGhhdmUgeDJhcGljX2VuYWJsZWQgPT0gdHJ1 ZSBhbmQgaW50ZXJydXB0Cj4+Pj4+IHJlbWFwcGluZyBkaXNhYmxlZC4KPj4+Pj4KPj4+Pj4gVGhl IGlzc3VlIEkgY2FuIHNlZSBoZXJlIGlzIHdoYXQgaGFwcGVucyBpZiBpbnRlcnJ1cHQgcmVtYXBw aW5nIHdhcwo+Pj4+PiBhbHJlYWR5IGVuYWJsZWQgYnkgdGhlIGhhcmR3YXJlLCBhbmQgZW50cmll cyBpbiB0aGUgSU8tQVBJQyBhcmUKPj4+Pj4gYWxyZWFkeSB1c2luZyB0aGUgcmVtYXBwaW5nIHRh YmxlLiBJIHdvdWxkIGhhdmUgdG8gbG9vayBpbnRvIGhvdyB0bwo+Pj4+PiBkZXRlY3QgdGhhdCBj YXNlIHByb3Blcmx5LCBidXQgSSB0aGluayB0aGUgcHJvcG9zZWQgY2hhbmdlIGlzIGFuCj4+Pj4+ IGltcHJvdmVtZW50IG92ZXJhbGwuCj4+Pj4KPj4+PiBGaXJtd2FyZSBoYW5kaW5nIG9mZiB3aXRo IHRoZSBJT01NVSAoYW5kIGhlbmNlIGludGVycnVwdCByZW1hcHBpbmcpCj4+Pj4gYWxyZWFkeSBl bmFibGVkIGlzIGEgY2FzZSB3aGljaCAtIGFmYWljdCAtIHdlIGNhbid0IGN1cnJlbnRseSBjb3Bl Cj4+Pj4gd2l0aC4gRmlybXdhcmUgaGFuZGluZyBvZmYgaW4geDJBUElDIGVuYWJsZWQgc3RhdGUg aXMgdHlwaWNhbGx5Cj4+Pj4gd2l0aCB0aGUgSU9NTVUgKGFuZCBoZW5jZSBpbnRlcnJ1cHQgcmVt YXBwaW5nKSBzdGlsbCBkaXNhYmxlZC4gVGhpcwo+Pj4+IGlzIG5vdCBhIGZvcmJpZGRlbiBtb2Rl LCBpdCdzIGp1c3QgdGhhdCBpbiBzdWNoIGEgY29uZmlndXJhdGlvbgo+Pj4+IGludGVycnVwdHMg Y2FuJ3QgYmUgZGVsaXZlcmVkIHRvIGNlcnRhaW4gQ1BVcy4KPj4+Pgo+Pj4+IEluIGFueSBldmVu dCB5b3UgbmVlZCB0byBwcm9wZXJseSBkaXN0aW5ndWlzaCB4MkFQSUMgZW5hYmxlZCBzdGF0ZQo+ Pj4+IChvciB0aGUgdHJhbnNpdGlvbiB0aGVyZW9mKSBmcm9tIElPTU1VIC8gaW50ZXJydXB0IHJl bWFwcGluZwo+Pj4+IGVuYWJsZWQgc3RhdGUgKG9yIHRoZSB0cmFuc2l0aW9uIHRoZXJlb2YpLiBJ LmUuIHlvdSB3YW50IHRvIGF2b2lkCj4+Pj4gcmF3IG1vZGUgcmVzdG9yZSBpZiBpbnRlcnJ1cHQg cmVtYXBwaW5nIHN0YXRlIHRyYW5zaXRpb25lZCBmcm9tCj4+Pj4gb2ZmIHRvIG9uIGluIHRoZSBw cm9jZXNzLgo+Pj4KPj4+IFJpZ2h0LCBhbmQgdGhhdCdzIHdoeSB0aGUgY2FsbCB0byByZXN0b3Jl X0lPX0FQSUNfc2V0dXAgaW4KPj4+IHgyYXBpY19ic3Bfc2V0dXAgdXNlcyAheDJhcGljX2VuYWJs ZWQgYXMgaXQncyBzZWNvbmQgcGFyYW1ldGVyLiBJZgo+Pj4gaW50ZXJydXB0IHJlbWFwcGluZyBo YXMgYmVlbiBlbmFibGVkIGJ5IHRoZSBjYWxsIHRvCj4+PiBpb21tdV9lbmFibGVfeDJhcGljIHgy YXBpY19lbmFibGVkIG11c3QgYmUgdHJ1ZSwgYW5kIGhlbmNlIHRoZSBlbnRyaWVzCj4+PiBpbiB0 aGUgSU8tQVBJQyBuZWVkIHRvIGJlIHRyYW5zbGF0ZWQgdG8gdXNlIHRoZSBpbnRlcnJ1cHQgcmVt YXBwaW5nCj4+PiB0YWJsZS4gVGhlcmUncyBubyBwYXRoIHRoYXQgY2FuIGxlYWQgdG8gcmVzdG9y ZV9JT19BUElDX3NldHVwIHdpdGgKPj4+IGludGVycnVwdCByZW1hcHBpbmcgZW5hYmxlZCBhbmQg eDJBUElDIG1vZGUgZGlzYWJsZWQgKG9yIHdpdGggeDJBUElDCj4+PiBlbmFibGVkIGFuZCBpbnRl cnJ1cHQgcmVtYXBwaW5nIGRpc2FibGVkKS4KPj4+Cj4+PiBIZW5jZSBpZiBpbnRlcnJ1cHQgcmVt YXBwaW5nIGlzIG9mZiBiZWZvcmUgY2FsbGluZyB4MmFwaWNfYnNwX3NldHVwCj4+PiAod2hpY2gg aXMgd2hhdCBYZW4gZXhwZWN0cyB0byBmdW5jdGlvbiBwcm9wZXJseSkgYW5kIHgyYXBpY19lbmFi bGVkID09Cj4+PiB0cnVlIHdoZW4gY2FsbGluZyByZXN0b3JlX0lPX0FQSUNfc2V0dXAgaXQgbWVh bnMgaW50ZXJydXB0IHJlbWFwcGluZwo+Pj4gZ290IGVuYWJsZWQsIGFuZCB0aGUgSU8tQVBJQyBl bnRyaWVzIG5lZWQgdHJhbnNsYXRpb24uCj4+Cj4+IEJ1dCB0aGUgY29kZSBpbiBxdWVzdGlvbiBz aXRzIG9uIGEgc2hhcmVkIHN1Y2Nlc3MvZXJyb3IgcGF0aCwgYW5kCj4+IGluIHRoZSBlcnJvciBj YXNlIGl0IG1hdHRlcnMgd2hldGhlciB4MmFwaWNfZW5hYmxlZCB3YXMgdHJ1ZSBhbHJlYWR5Cj4+ IG9uIGVudHJ5Lgo+IAo+IEJ1dCBpdCdzIHNpbXBseSBub3QgcG9zc2libGUgdG8gcmVhY2ggdGhl IGNhbGwgdG8KPiByZXN0b3JlX0lPX0FQSUNfc2V0dXAgd2l0aCB4MmFwaWNfZW5hYmxlZCA9PSB0 cnVlIGFuZCBpbnRlcnJ1cHQKPiByZW1hcHBpbmcgZGlzYWJsZWQsIHJlZ2FyZGxlc3Mgb2YgdGhl IGluaXRpYWwgdmFsdWUgb2YKPiB4MmFwaWNfZW5hYmxlZC4KPiAKPiBBbGwgdGhlIHBhdGhzIHRo YXQgY291bGQgbGVhZCB0byB0aGlzIHNjZW5hcmlvIGFyZSBzaG9ydC1jaXJjdWl0ZWQKPiBhYm92 ZSB3aXRoIGEgcGFuaWMuCgpIbW0sIHRydWUuIE5ldmVydGhlbGVzcyBpdCB3b3VsZCBmZWVsIGJl dHRlciBpZiB0aGUgY29uZGl0aW9uYWxzCndlcmUgdXNpbmcgd2hhdCBhY3R1YWxseSBtYXR0ZXJz LCByYXRoZXIgdGhhbiBzb21ldGhpbmcgZGVyaXZlZC4KCj4+IEkgcmVhbGl6ZSB0aGF0IGlvX2Fw aWNfd3JpdGUoKSB3b3VsZCBzdWl0YWJseSBhdm9pZCBnb2luZwo+PiB0aGUgcmVtYXBwaW5nIHBh dGgsIGJ1dCBJIHRoaW5rIGl0IHdvdWxkIGJlIG1vcmUgY2xlYXIgaWYgdGhlCj4+IGRpc3RpbmN0 aW9uIHdhcyBhbHJlYWR5IG1hZGUgcHJvcGVybHkgYXQgdGhlIGNhbGwgc2l0ZS4KPiAKPiBJJ20g YWZyYWlkIEknbSBzbGlnaHRseSBsb3NzLCBkbyB5b3UgbWVhbiB0byByZXBsYWNlIHRoZQo+IGlv YXBpY193cml0ZV9lbnRyeSB3aXRoIGFuIGlvX2FwaWNfd3JpdGUgaW4gcmVzdG9yZV9JT19BUElD X3NldHVwPwoKTm8sIGJlY2F1c2Ugb2YgLi4uCgo+IFRoYXQgd291bGQgYmUgdGhlIHNhbWUgYXMg YWx3YXlzIHBhc3NpbmcgcmF3ID09IGZhbHNlIEFGQUlDVC4KCi4uLiB0aGlzLiBJJ20gYXNraW5n IHRvIHBhc3MgaW4gdGhlIGFyZ3VtZW50IGZvciAicmF3IiBiYXNlZApvbiB3aGF0IHlvdSB3YW50 LCB3aXRob3V0IHJlbHlpbmcgb24gaW9fYXBpY193cml0ZSgpJ3MKYmVoYXZpb3IuIFRoYXQncyBt b3JlIGZvciBjb2RlIGNsYXJpdHkgdGhhbiBhY3R1YWwgY29ycmVjdG5lc3MsCnNpbmNlIC0gYXMg c2FpZCAtIGlvX2FwaWNfd3JpdGUoKSB3b3VsZCBpbnZva2UgX19pb19hcGljX3dyaXRlKCkKYW55 d2F5LiBCeSBzZXR0aW5nICJyYXciIGNvcnJlY3RseSB5b3UgY2FuIHNpbXBseSBhdm9pZCBnb2lu Zwp0aHJvdWdoIGlvX2FwaWNfd3JpdGUoKSBhbHRvZ2V0aGVyLgoKSmFuCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu b3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs