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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 257CEC54E5D for ; Tue, 19 Mar 2024 14:20:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=l9/kO/4HNyG+JArtuAwgYktNkjEfN2RT9WesW/IZ7h8=; b=NOykZwRhQUQNNI yBFValYDNIr6b2dbq8lVlPsulKb+fRyV2hrVusi196iNoXazkYlDSE8DuknHQM0n5VMNXqXHScjuU Yfu8/Y4EKj5FRuZMDjB4QmUnJ1rBDCd7dmupS+ehPwgjx+Ghim45uEILDUF9Di/SUxys2nNIuAYGP B8hVy4flOTnV9RckB1qiJrUzOiND278N3fGllI2ZEVxoGbkA34Httmovzgl01PesExd5+Cx89lfkR MVOqcTu47fH7Wpsffimqb2AtrD7vKvkf2UoFMQL9J/Ap27dHSIyQ67FEEJzSTu8WAzf/GMvgUkjQE 6ayMbLkxRAK5cqsWLWYQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rmaKL-0000000CwiJ-3o0S; Tue, 19 Mar 2024 14:20:29 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rmaKI-0000000CwhZ-2dnk for linux-arm-kernel@lists.infradead.org; Tue, 19 Mar 2024 14:20:28 +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 4B88A106F; Tue, 19 Mar 2024 07:20:55 -0700 (PDT) Received: from bogus (e103737-lin.cambridge.arm.com [10.1.197.49]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 442423F762; Tue, 19 Mar 2024 07:20:19 -0700 (PDT) Date: Tue, 19 Mar 2024 14:20:16 +0000 From: Sudeep Holla To: Jens Wiklander Cc: Lorenzo Pieralisi , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Sudeep Holla , Marc Bonnici , Olivier Deprez Subject: Re: [PATCH] firmware: arm_ffa: support running as a guest in a vm Message-ID: References: <20240307092132.943881-1-jens.wiklander@linaro.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240319_072026_808329_1A10492C X-CRM114-Status: GOOD ( 58.56 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gRnJpLCBNYXIgMDgsIDIwMjQgYXQgMDE6MzU6MDVQTSArMDEwMCwgSmVucyBXaWtsYW5kZXIg d3JvdGU6Cj4gT24gRnJpLCBNYXIgOCwgMjAyNCBhdCAxMDo0NOKAr0FNIExvcmVuem8gUGllcmFs aXNpIDxscGllcmFsaXNpQGtlcm5lbC5vcmc+IHdyb3RlOgo+ID4KPiA+IE9uIFRodSwgTWFyIDA3 LCAyMDI0IGF0IDEwOjIxOjMyQU0gKzAxMDAsIEplbnMgV2lrbGFuZGVyIHdyb3RlOgo+ID4gPiBB ZGQgc3VwcG9ydCBmb3IgcnVubmluZyB0aGUgZHJpdmVyIGluIGEgZ3Vlc3QgdG8gYSBoeXBlcnZp c29yLiBUaGUgbWFpbgo+ID4gPiBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIG5vdGlmaWNhdGlvbiBp bnRlcnJ1cHQgaXMgcmV0cmlldmVkCj4gPiA+IHdpdGggRkZBX0ZFQVRfTk9USUZJQ0FUSU9OX1BF TkRJTkdfSU5UIGFuZCB0aGF0Cj4gPiA+IEZGQV9OT1RJRklDQVRJT05fQklUTUFQX0NSRUFURSBk b2Vzbid0IG5lZWQgdG8gYmUgY2FsbGVkLgo+ID4KPiA+IEkgaGF2ZSBhIGNvdXBsZSBvZiBxdWVz dGlvbnMgYWJvdXQgdGhlc2UgY2hhbmdlcywgY29tbWVudHMgYmVsb3cuCj4gPgo+ID4gPiBGRkFf RkVBVF9OT1RJRklDQVRJT05fUEVORElOR19JTlQgZ2l2ZXMgdGhlIGludGVycnVwdCB0aGUgaHlw ZXJ2aXNvciBoYXMKPiA+ID4gY2hvc2VuIHRvIG5vdGlmeSBpdHMgZ3Vlc3Qgb2YgcGVuZGluZyBu b3RpZmljYXRpb25zLgo+ID4gPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBKZW5zIFdpa2xhbmRlciA8 amVucy53aWtsYW5kZXJAbGluYXJvLm9yZz4KPiA+ID4gLS0tCj4gPiA+ICBkcml2ZXJzL2Zpcm13 YXJlL2FybV9mZmEvZHJpdmVyLmMgfCA0NSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t Cj4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0p Cj4gPiA+Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVy LmMgYi9kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVyLmMKPiA+ID4gaW5kZXggZjI1NTZh OGU5NDAxLi5jMTgzYzdkMzljMGYgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZmlybXdhcmUv YXJtX2ZmYS9kcml2ZXIuYwo+ID4gPiArKysgYi9kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJp dmVyLmMKPiA+ID4gQEAgLTEzMDYsMTcgKzEzMDYsMjggQEAgc3RhdGljIHZvaWQgZmZhX3NjaGVk X3JlY3ZfaXJxX3dvcmtfZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ID4gPiAgICAgICBm ZmFfbm90aWZpY2F0aW9uX2luZm9fZ2V0KCk7Cj4gPiA+ICB9Cj4gPiA+Cj4gPiA+ICtzdGF0aWMg aW50IGZmYV9nZXRfbm90aWZfaW50aWQoaW50ICppbnRpZCkKPiA+ID4gK3sKPiA+ID4gKyAgICAg aW50IHJldDsKPiA+ID4gKwo+ID4gPiArICAgICByZXQgPSBmZmFfZmVhdHVyZXMoRkZBX0ZFQVRf U0NIRURVTEVfUkVDRUlWRVJfSU5ULCAwLCBpbnRpZCwgTlVMTCk7Cj4gPiA+ICsgICAgIGlmICgh cmV0KQo+ID4gPiArICAgICAgICAgICAgIHJldHVybiAwOwo+ID4gPiArICAgICByZXQgPSBmZmFf ZmVhdHVyZXMoRkZBX0ZFQVRfTk9USUZJQ0FUSU9OX1BFTkRJTkdfSU5ULCAwLCBpbnRpZCwgTlVM TCk7Cj4gPiA+ICsgICAgIGlmICghcmV0KQo+ID4gPiArICAgICAgICAgICAgIHJldHVybiAwOwo+ ID4KPiA+IEkgdGhpbmsgdGhhdCBib3RoIGludGVycnVwdHMgc2hvdWxkIGJlIHByb2JlZCBpbiBl ZyBhIGhvc3QgYW5kIHRoZQo+ID4gYWN0aW9ucyB0aGVpciBoYW5kbGVycyBzaG91bGQgdGFrZSBh cmUgZGlmZmVyZW50Lgo+ID4KCisxLCBJIGhhdmUgdGhlIHNhbWUgb3Bpbmlvbi4KCj4gPiA+ICsK PiA+ID4gKyAgICAgcHJfZXJyKCJGYWlsZWQgdG8gcmV0cmlldmUgb25lIG9mIHNjaGVkdWxlciBS eCBvciBub3RpZiBwZW5kaW5nIGludGVycnVwdHNcbiIpOwo+ID4gPiArICAgICByZXR1cm4gcmV0 Owo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICBzdGF0aWMgaW50IGZmYV9zY2hlZF9yZWN2X2lycV9t YXAodm9pZCkKPiA+ID4gIHsKPiA+ID4gLSAgICAgaW50IHJldCwgaXJxLCBzcl9pbnRpZDsKPiA+ ID4gKyAgICAgaW50IHJldCwgaXJxLCBpbnRpZDsKPiA+ID4KPiA+ID4gLSAgICAgLyogVGhlIHJl dHVybmVkIHNyX2ludGlkIGlzIGFzc3VtZWQgdG8gYmUgU0dJIGRvbmF0ZWQgdG8gTlMgd29ybGQg Ki8KPiA+ID4gLSAgICAgcmV0ID0gZmZhX2ZlYXR1cmVzKEZGQV9GRUFUX1NDSEVEVUxFX1JFQ0VJ VkVSX0lOVCwgMCwgJnNyX2ludGlkLCBOVUxMKTsKPiA+ID4gLSAgICAgaWYgKHJldCA8IDApIHsK PiA+ID4gLSAgICAgICAgICAgICBpZiAocmV0ICE9IC1FT1BOT1RTVVBQKQo+ID4gPiAtICAgICAg ICAgICAgICAgICAgICAgcHJfZXJyKCJGYWlsZWQgdG8gcmV0cmlldmUgc2NoZWR1bGVyIFJ4IGlu dGVycnVwdFxuIik7Cj4gPiA+ICsgICAgIHJldCA9IGZmYV9nZXRfbm90aWZfaW50aWQoJmludGlk KTsKPiA+ID4gKyAgICAgaWYgKHJldCkKPiA+ID4gICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ ID4gPiAtICAgICB9Cj4gPiA+Cj4gPiA+ICAgICAgIGlmIChhY3BpX2Rpc2FibGVkKSB7Cj4gPiA+ ICAgICAgICAgICAgICAgc3RydWN0IG9mX3BoYW5kbGVfYXJncyBvaXJxID0ge307Cj4gPiA+IEBA IC0xMzI5LDEyICsxMzQwLDEyIEBAIHN0YXRpYyBpbnQgZmZhX3NjaGVkX3JlY3ZfaXJxX21hcCh2 b2lkKQo+ID4gPgo+ID4gPiAgICAgICAgICAgICAgIG9pcnEubnAgPSBnaWM7Cj4gPiA+ICAgICAg ICAgICAgICAgb2lycS5hcmdzX2NvdW50ID0gMTsKPiA+ID4gLSAgICAgICAgICAgICBvaXJxLmFy Z3NbMF0gPSBzcl9pbnRpZDsKPiA+ID4gKyAgICAgICAgICAgICBvaXJxLmFyZ3NbMF0gPSBpbnRp ZDsKPiA+ID4gICAgICAgICAgICAgICBpcnEgPSBpcnFfY3JlYXRlX29mX21hcHBpbmcoJm9pcnEp Owo+ID4gPiAgICAgICAgICAgICAgIG9mX25vZGVfcHV0KGdpYyk7Cj4gPiA+ICAjaWZkZWYgQ09O RklHX0FDUEkKPiA+ID4gICAgICAgfSBlbHNlIHsKPiA+ID4gLSAgICAgICAgICAgICBpcnEgPSBh Y3BpX3JlZ2lzdGVyX2dzaShOVUxMLCBzcl9pbnRpZCwgQUNQSV9FREdFX1NFTlNJVElWRSwKPiA+ ID4gKyAgICAgICAgICAgICBpcnEgPSBhY3BpX3JlZ2lzdGVyX2dzaShOVUxMLCBpbnRpZCwgQUNQ SV9FREdFX1NFTlNJVElWRSwKPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBBQ1BJX0FDVElWRV9ISUdIKTsKPiA+ID4gICNlbmRpZgo+ID4KPiA+IFRoaXMgbWVhbnMg dGhhdCBmb3IgYm90aCBzY2hlZHVsZSByZWNlaXZlciBpbnRlcnJ1cHQgYW5kIG5vdGlmaWNhdGlv bgo+ID4gcGVuZGluZyBpbnRlcnJ1cHQgd2Ugd291bGQgZW5kIHVwIGNhbGxpbmcgRkZBX05PVElG SUNBVElPTl9JTkZPX0dFVCAoPyksCj4gPiB3aGljaCBpcyBub3QgY29ycmVjdCBBRkFJSywgZm9y IG1hbnkgcmVhc29ucy4KPiA+Cj4gPiBJZiB0aGVyZSBpcyBhIHBlbmRpbmcgbm90aWZpY2F0aW9u IGZvciBhIFZNLCBhIHNjaGVkdWxlciByZWNlaXZlcgo+ID4gaW50ZXJydXB0IGlzIHRyaWdnZXJl ZCBpbiB0aGUgaG9zdC4gVGhpcyB3b3VsZCBlbmQgdXAgY2FsbGluZwo+ID4gRkZBX05PVElGSUNB VElPTl9JTkZPX0dFVCgpLCB0aGF0IGlzIGRlc3RydWN0aXZlIChjYWxsaW5nIGl0IGFnYWluIGlu Cj4gPiB0aGUgbm90aWZpZWQgKmd1ZXN0KiAtIGluIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciB0cmln Z2VyZWQgYnkgdGhlCj4gPiBoeXBlcnZpc29yIC0gd291bGQgbm90IHJldHVybiB0aGUgcGVuZGlu ZyBub3RpZmljYXRpb25zIGZvciBpdCkuCj4gPgo+ID4gVGhlcmVmb3JlLCB0aGUgYWN0aW9uIGZv ciB0aGUgcGVuZGluZyBub3RpZmljYXRpb24gaW50ZXJydXB0IHNob3VsZAo+ID4gYmUgZGlmZmVy ZW50IGFuZCBzaG91bGQganVzdCBjYWxsIEZGQV9OT1RJRklDQVRJT05fR0VULgo+ID4KPiA+IFBs ZWFzZSBsZXQgbWUga25vdyBpZiB0aGF0IG1hdGNoZXMgeW91ciB1bmRlcnN0YW5kaW5nLCB0aGlz Cj4gPiBodW5rIGlzIHVuY2xlYXIgdG8gbWUuCgpBcyB5b3UgY2FuIGV4cGVjdCwgdGhlIGFib3Zl IG1hdGNoZXMgbXkgdW5kZXJzdGFuZGluZyB0b28uCgo+Cj4gVGhpcyBwYXRjaCB3YXMgbWFkZSBm cm9tIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhpcyBGRi1BIGRyaXZlciBpcyBhCj4gZ3Vlc3QgZHJp dmVyLCB0aGF0IGlzLCBGRkFfTk9USUZJQ0FUSU9OX0lORk9fR0VUIGxhbmRzIGluIHRoZQo+IEh5 cGVydmlzb3IgYXQgRUwyLiBUaGUgRkZBX05PVElGSUNBVElPTl9JTkZPX0dFVCBjYWxsIGlzIG5l ZWRlZCB0bwo+IGtub3cgd2hpY2ggRkZBX05PVElGSUNBVElPTl9HRVQgY2FsbHMgc2hvdWxkIGJl IGRpc3BhdGNoZWQgaW4gdGhpcyBWTSwKPiB0byByZXRyaWV2ZSBnbG9iYWwgbm90aWZpY2F0aW9u cyBhbmQgcGVyIHZDUFUgbm90aWZpY2F0aW9ucy4KPgoKT0sgYW5kIEkgYXNzdW1lIHRoaXMgYWxp Z25zIHdpdGggdGhlIGJlbG93IGV4Y2VycHRzIGZyb20gdGhlIHNwZWMgYWJvdXQKRkZBX05PVElG SUNBVElPTl9JTkZPX0dFVDoKIgpUaGlzIEFCSSBpcyBpbnZva2VkIGJ5IGEgVk0gYXQgdGhlIE5v bi1zZWN1cmUgdmlydHVhbCBGRi1BIGluc3RhbmNlIHdpdGggdGhlClNNQyBvciBIVkMgY29uZHVp dHMgdG8gcmVxdWVzdCB0aGUgSHlwZXJ2aXNvciB0byByZXR1cm4gdGhlIGxpc3Qgb2YgU1BzIGFu ZApWTXMgdGhhdCBoYXZlIHBlbmRpbmcgbm90aWZpY2F0aW9ucy4gVGhlIEh5cGVydmlzb3IgcmV0 dXJucyB0aGUgbGlzdCBvZiB0aG9zZQplbmRwb2ludHMgd2hvc2Ugc2NoZWR1bGVycyBhcmUgaW1w bGVtZW50ZWQgaW4gdGhlIGNhbGxpbmcgVk0uCiIKCkJ1dCBpZiBPUFRFRSBkcml2ZXIgaW4gdGhl IFZNL2d1ZXN0IGlzIHRoZSBzY2hlZHVsZXIgZm9yIHRoZSBPUFRFRSBTUCwKdGhlbiBJIHdvdWxk IGV4cGVjdCB0aGUgRkYtQSBkcml2ZXIgdG8ganVzdCByZWdpc3RlciBmb3IgU1JJLiBJdCBjYW4n dCBiZQpOUEkgYXMgdGhhdCBjb250cmFkaWN0cyB3aXRoIGFib3ZlLgoKPiBJZiB0aGUgRkYtQSBk cml2ZXIgaXMgc3VwcG9zZWQgdG8gYmUgYSBob3N0IGRyaXZlciBpbnN0ZWFkLCB0aGVuIEkKPiB3 b25kZXIgd2hlcmUgd2Ugc2hvdWxkIGhhdmUgdGhlIGd1ZXN0IGRyaXZlci4KPgoKQXQgbGVhc3Qg c28gZmFyIHdlIGhhdmVuJ3QgZm91bmQgYSBzdHJvbmcgcmVhc29uIHRvIGhhdmUgZGlmZmVyZW50 IHZlcnNpb25zCmZvciBlYWNoLgoKPiBGb3IgY2xhcmlmaWNhdGlvbiwgbXkgc2V0dXAgaGFzIFhl biBhcyBoeXBlcnZpc29yIGF0IEVMMiAoZG9pbmcgdGhlCj4gaG9zdCBwcm9jZXNzaW5nKSwgVEYt QSBhcyBTUE1EIGF0IEVMMywgYW5kIE9QLVRFRSBhcyBTUE1DIGF0IFMtRUwxLgo+IEknbSB0ZXN0 aW5nIHRoaXMgb24gUUVNVS4gSSdtIGdvaW5nIHRvIHBvc3QgdGhlIFhlbiBwYXRjaGVzIHJlbGF0 aW5nCj4gdG8gdGhpcyBxdWl0ZSBzb29uLgo+CgpPSywgdGhhbmtzIGZvciB0aGUgc2V0dXAgaW5m by4KCj4gSSBiZWxpZXZlIHRoYXQgdW50aWwgbm93IHRoZSBGRi1BIGRyaXZlciBoYXMgd29ya2Vk IHVuZGVyIHRoZQo+IGFzc3VtcHRpb24gdGhhdCBpdCdzIGEgbm9uLXNlY3VyZSBwaHlzaWNhbCBG Ri1BIGluc3RhbmNlLiBXaXRoCj4gaHlwZXJ2aXNvciBhdCBFTDIgaXQgYmVjb21lcyBhIHZpcnR1 YWwgRkYtQSBpbnN0YW5jZS4KPgoKQWdyZWVkLgoKPiA+Cj4gPiA+ICAgICAgIH0KPiA+ID4gQEAg LTE0NDIsMTcgKzE0NTMsMTUgQEAgc3RhdGljIHZvaWQgZmZhX25vdGlmaWNhdGlvbnNfc2V0dXAo dm9pZCkKPiA+ID4gICAgICAgaW50IHJldCwgaXJxOwo+ID4gPgo+ID4gPiAgICAgICByZXQgPSBm ZmFfZmVhdHVyZXMoRkZBX05PVElGSUNBVElPTl9CSVRNQVBfQ1JFQVRFLCAwLCBOVUxMLCBOVUxM KTsKPiA+ID4gLSAgICAgaWYgKHJldCkgewo+ID4gPiAtICAgICAgICAgICAgIHByX2luZm8oIk5v dGlmaWNhdGlvbnMgbm90IHN1cHBvcnRlZCwgY29udGludWluZyB3aXRoIGl0IC4uXG4iKTsKPiA+ ID4gLSAgICAgICAgICAgICByZXR1cm47Cj4gPiA+IC0gICAgIH0KPiA+ID4gKyAgICAgaWYgKCFy ZXQpIHsKPiA+ID4KPiA+ID4gLSAgICAgcmV0ID0gZmZhX25vdGlmaWNhdGlvbl9iaXRtYXBfY3Jl YXRlKCk7Cj4gPiA+IC0gICAgIGlmIChyZXQpIHsKPiA+ID4gLSAgICAgICAgICAgICBwcl9pbmZv KCJOb3RpZmljYXRpb24gYml0bWFwIGNyZWF0ZSBlcnJvciAlZFxuIiwgcmV0KTsKPiA+ID4gLSAg ICAgICAgICAgICByZXR1cm47Cj4gPiA+ICsgICAgICAgICAgICAgcmV0ID0gZmZhX25vdGlmaWNh dGlvbl9iaXRtYXBfY3JlYXRlKCk7Cj4gPiA+ICsgICAgICAgICAgICAgaWYgKHJldCkgewo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgcHJfZXJyKCJub3RpZmljYXRpb25fYml0bWFwX2NyZWF0 ZSBlcnJvciAlZFxuIiwgcmV0KTsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK PiA+ID4gKyAgICAgICAgICAgICB9Cj4gPiA+ICsgICAgICAgICAgICAgZHJ2X2luZm8tPmJpdG1h cF9jcmVhdGVkID0gdHJ1ZTsKPiA+ID4gICAgICAgfQo+ID4gPiAtICAgICBkcnZfaW5mby0+Yml0 bWFwX2NyZWF0ZWQgPSB0cnVlOwo+ID4KPiA+IFRoaXMgYm9pbHMgZG93biB0byBzYXlpbmcgdGhh dCBGRkFfTk9USUZJQ0FUSU9OX0JJVE1BUF9DUkVBVEUgaXMgbm90Cj4gPiBpbXBsZW1lbnRlZCBm b3IgYSBWTSAoYmVjYXVzZSB0aGUgaHlwZXJ2aXNvciBzaG91bGQgdGFrZSBjYXJlIG9mIGlzc3Vp bmcKPiA+IHRoYXQgY2FsbCBiZWZvcmUgdGhlIFZNIGlzIGNyZWF0ZWQpLCBzbyBpZiB0aGUgZmVh dHVyZSBpcyBub3QgcHJlc2VudAo+ID4gdGhhdCBkb2VzIG5vdCBtZWFuIHRoYXQgbm90aWZpY2F0 aW9ucyBhcmVuJ3Qgc3VwcG9ydGVkLgo+ID4KPiA+IEl0IGlzIGp1c3QgYWJvdXQgcmVtb3Zpbmcg YSBzcHVyaW91cyBsb2cuCj4gPgo+ID4gSXMgdGhhdCBjb3JyZWN0ID8KPgo+IE5vLCB0aGlzIGlz IGFib3V0IG5vdCBhYm9ydGluZyBub3RpZmljYXRpb24gc2V0dXAganVzdCBiZWNhdXNlIHdlIGhh dmUKPiBhIGh5cGVydmlzb3IgdGhhdCBoYW5kbGVzIHRoZSBGRkFfTk9USUZJQ0FUSU9OX0JJVE1B UF9DUkVBVEUgY2FsbC4KClVuZGVyc3Rvb2QuCgo+IFdpdGggdGhpcyBwYXRjaCwgaWYgZmZhX2dl dF9ub3RpZl9pbnRpZCgpIGZhaWxzLCB0aGVuIHdlIGRvbid0IGhhdmUKPiBzdXBwb3J0IGZvciBu b3RpZmljYXRpb25zLgo+CgpCdXQgSSBzdGlsbCBkb24ndCB1bmRlcnN0YW5kIHRoZSBtaXh1cCBv ZiBTUkkgYW5kIE5QSSBpbiB5b3VyIHVzZWNhc2UKbW9kZWwuIEl0IHNob3VsZCBiZSBqdXN0IFNS SS4gTlBJIGhhbmRsZXIgbXVzdCBqdXN0IHVzZSBOT1RJRklDQVRJT05fR0VUCmFuZCBub3QgSU5G T19HRVQgYXMgTG9yZW56byBoYXMgZXhwbGFpbmVkIGFib3ZlLgoKLS0KUmVnYXJkcywKU3VkZWVw CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1h cm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0t a2VybmVsCg==