From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Williamson Subject: Re: [PATCH v9 5/7] vfio: Define vfio based dma-buf operations Date: Thu, 22 Jun 2017 12:54:58 -0600 Message-ID: <20170622125458.01c953ab@w520.home> References: <1497513611-2814-1-git-send-email-xiaoguang.chen@intel.com> <1497513611-2814-6-git-send-email-xiaoguang.chen@intel.com> <1497542438.29252.1.camel@redhat.com> <20170615143833.7526351b@w520.home> <24c4880b-24f5-ea07-834c-c77d3e895c78@nvidia.com> <1497854312.4207.4.camel@redhat.com> <20170619085530.1f5e46dc@w520.home> <237F54289DF84E4997F34151298ABEBC7C56EBE0@SHSMSX101.ccr.corp.intel.com> <1497956256.16795.7.camel@redhat.com> <20170620090004.44ac7fbc@w520.home> <237F54289DF84E4997F34151298ABEBC7C56F3DC@SHSMSX101.ccr.corp.intel.com> <20170620172204.09405cf4@w520.home> <237F54289DF84E4997F34151298ABEBC7C56F843@SHSMSX101.ccr.corp.intel.com> <1498043011.5802.5.camel@redhat.com> <20170621125938.1a92abda@w520.home> <1498120215.25651.5.camel@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1498120215.25651.5.camel@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Gerd Hoffmann Cc: "Wang, Zhenyu Z" , "intel-gfx@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , "Chen, Xiaoguang" , Kirti Wankhede , "Lv, Zhiyuan" , "intel-gvt-dev@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMiBKdW4gMjAxNyAxMDozMDoxNSArMDIwMApHZXJkIEhvZmZtYW5uIDxrcmF4ZWxA cmVkaGF0LmNvbT4gd3JvdGU6Cgo+ICAgSGksCj4gCj4gPiA+IFZGSU9fREVWSUNFX0ZMQUdTX0dG WF9ETUFCVUY/ICAKPiA+IAo+ID4gQWZ0ZXIgcHJvcG9zaW5nIHRoZXNlLCBJJ20ga2luZCBvZiBx dWVzdGlvbmluZyB0aGVpciBwdXJwb3NlLsKgwqBJbiB0aGUKPiA+IGNhc2Ugb2YgYSBHRlggcmVn aW9uLCB0aGUgdXNlciBpcyBnb2luZyB0byBsZWFybiB0aGF0IHRoaXMgaXMKPiA+IHN1cHBvcnRl ZAo+ID4gYXMgdGhleSBwYXJzZSB0aGUgcmVnaW9uIGluZm9ybWF0aW9uIGFuZCBmaW5kIHRoZSBk ZXZpY2Ugc3BlY2lmaWMKPiA+IHJlZ2lvbiBpZGVudGlmeWluZyBpdHNlbGYgYXMgYSBHRlggYXJl YS7CoMKgVGhhdCBuZWVkcyB0byBoYXBwZW4gZWFybHkKPiA+IHdoZW4gdGhlIHVzZXIgaXMgZXZh bHVhdGluZyB0aGUgZGV2aWNlLCBzbyBpdCBzZWVtcyByYXRoZXIgcmVkdW5kYW50Cj4gPiB0byB0 aGUgZmxhZy4gIAo+IAo+IEluZGVlZC4KPiAKPiA+IElmIHdlIGhhdmUgZG1hYnVmIHN1cHBvcnQs IGlzbid0IHRoYXQgaW5kaWNhdGVkIGJ5IHRyeWluZyB0byBxdWVyeQo+ID4gdGhlCj4gPiBncmFw aGljcyBwbGFuZV9pbmZvIGFuZCBnZXR0aW5nIGJhY2sgYSByZXN1bHQgaW5kaWNhdGluZyBhIGRt YWJ1ZiBmZD8KPiA+IElzIHRoZXJlIGFueSBwb2ludCBpbiB0aW1lIHdoZXJlIGEgZGV2aWNlIHN1 cHBvcnRpbmcgZG1hYnVmIGZkcyB3b3VsZAo+ID4gbm90IHJlcG9ydCB0aGlzIGhlcmU/wqDCoFVz ZXJzcGFjZSBjb3VsZCByZWFsbHkgZG8gdGhlIHNhbWUgcHJvY2VzcyBmb3IKPiA+IGEKPiA+IGdy YXBoaWNzIHJlZ2lvbiwgaWUuIHF1ZXJ5aW5nIHRoZSBwbGFuZV9pbmZvLCBpZiBpdCBleGlzdHMg cHVyc3VpbmcKPiA+IGVpdGhlciB0aGUgcmVnaW9uIG9yIGRtYWJ1ZiBwYXRoIHRvIGdldCBpdC4g IAo+IAo+IFdlbGwsIHlvdSBjYW4gZ2V0IGEgZG1hLWJ1ZiBvbmx5IGFmdGVyIHRoZSBndWVzdCBs b2FkZWQgdGhlIGRyaXZlciBhbmQKPiBpbml0aWFsaXplZCB0aGUgZGV2aWNlLCBzbyBhIHBsYW5l IGFjdHVhbGx5IGV4aXN0cyAuLi4KCklzIHRoaXMgb25seSBnb2luZyB0byBzdXBwb3J0IGFjY2Vs ZXJhdGVkIGRyaXZlciBvdXRwdXQsIG5vdCBiYXNpYyBWR0EKbW9kZXMgZm9yIEJJT1MgaW50ZXJh Y3Rpb24/CiAKPiBSaWdodCBub3cgdGhlIGV4cGVyaW1lbnRhbCBpbnRlbCBwYXRjaGVzIHRocm93 IGVycm9ycyBpbiBjYXNlIG5vIHBsYW5lCj4gZXhpc3RzICh5ZXQpLiAgTWF5YmUgd2Ugc2hvdWxk IGhhdmUgYSAiYm9vbCBpc19lbmFibGVkIiBmaWVsZCBpbiB0aGUKPiBwbGFuZV9pbmZvIHN0cnVj dCwgc28gZHJpdmVycyBjYW4gdXNlIHRoYXQgdG8gc2lnbmFsIHdoZW5ldmVyIHRoZSBndWVzdAo+ IGhhcyBwcm9ncmFtbWVkIGEgdmFsaWQgdmlkZW8gbW9kZSBvciBub3QgKGxpa2V3aXNlIGZvciB0 aGUgY3Vyc29yLAo+IHdoaWNoIGRvZXNuJ3QgZXhpc3Qgd2l0aCBmYmNvbiwgb25seSB3aGVuIHJ1 bm5pbmcgeG9yZykuICBXaXRoIHRoYXQgaW4KPiBwbGFjZSB1c2luZyB0aGUgUVVFUllfUExBTkUg aW9jdGwgYWxzbyBmb3IgcHJvYmluZyBsb29rcyByZWFzb25hYmxlLgoKU3VyZSwgb3IgLUVOT1RU WSBmb3IgaW9jdGwgbm90IGltcGxlbWVudGVkIHZzIC1FSU5WQUwgZm9yIG5vIGF2YWlsYWJsZQpw bGFuZSwgYnV0IHRoZW4gdGhhdCBtaWdodCBub3QgaGVscCB0aGUgdXNlciBrbm93IGhvdyBhIHBs YW5lIHdvdWxkIGJlCmF2YWlsYWJsZSBpZiBpdCB3ZXJlIGF2YWlsYWJsZS4KCj4gPiA+IGdlbmVy YXRpb24gd291bGQgYmUgaW5jcmVhc2VkIGVhY2ggdGltZSBvbmUgb2YgdGhlIGZpZWxkcyBpbgo+ ID4gPiB2ZmlvX2RldmljZV9nZnhfcGxhbmVfaW5mbyBjaGFuZ2VzLCB0eXBpY2FsbHkgb24gbW9k ZSBzd2l0Y2hlcwo+ID4gPiAod2lkdGgvaGVpZ2h0IGNoYW5nZXMpIGFuZCBwYWdlZmxpcHMgKG9m ZnNldCBjaGFuZ2VzKS7CoMKgU28KPiA+ID4gdXNlcnNwYWNlCj4gPiA+IGNhbiBzaW1wbHkgY29t cGFyZSBnZW5lcmF0aW9uIGluc3RlYWQgb2YgY29tcGFyaW5nIGV2ZXJ5IGZpZWxkIHRvCj4gPiA+ IGZpZ3VyZSB3aGVuZXZlciBzb21ldGhpbmcgY2hhbmdlZCBjb21wYXJlZCB0byB0aGUgcHJldmlv dXMgcG9sbC4gIAo+ID4gCj4gPiBTbyB3ZSBoYXZlIHR3byBzY2VuYXJpb3MsIGRtYWJ1ZiBhbmQg cmVnaW9uLsKgwqBXaGVuIHRoZSB1c2VyIHJldHJpZXZlcwo+ID4gYQo+ID4gZG1hYnVmIHRoZXkg Z2V0IHBsYW5lX2luZm8gd2hpY2ggaW5jbHVkZXMgdGhlIGdlbmVyYXRpb24sIHNvIHRoZXkKPiA+ IGtub3cKPiA+IHRoZSBkbWFidWYgaXMgZm9yIHRoYXQgZ2VuZXJhdGlvbi7CoMKgSWYgdGhleSBx dWVyeSB0aGUgcGxhbmVfaW5mbyBhbmQKPiA+IGdldCBhIGRpZmZlcmVudCBnZW5lcmF0aW9uIHRo ZXkgc2hvdWxkIGNsb3NlIHRoZSBwcmV2aW91cyBkbWFidWYgYW5kCj4gPiBnZXQgYW5vdGhlci4g IAo+IAo+IEtlZXBpbmcgaXQgY2FjaGVkIGlzIGEgdmFsaWQgY2hvaWNlIHRvby4KClNvIGdlbmVy YXRpb24gaXMganVzdCBpbnRlbmRlZCB0byBiZSBhIHVuaXF1ZSBoYW5kbGUsIGxpa2UgYSB1dWlk IGJ1dApjaGVhcGVyLiAgR2VuZXJhbGx5IEkgdGhpbmsgb2YgYSBnZW5lcmF0aW9uIGZpZWxkIG9u bHkgdG8gdHJhY2sgd2hhdCdzCmN1cnJlbnQuICBVc2Vyc3BhY2UgbWlnaHQgYXNzdW1lIGEgImdl bmVyYXRpb24iIG5ldmVyIGdvZXMgYmFja3dhcmRzCih1bnRpbCBpdCB3cmFwcykuCgo+ID4gRG9l cyB0aGlzIHByb21vdGUgdGhlIGNhY2hpbmcgaWRlYSB0aGF0IGEgdXNlciBtaWdodAo+ID4gbWFp bnRhaW4gbXVsdGlwbGUgb3BlbiBkbWFidWYgZmRzIGFuZCBzZWxlY3QgdGhlIGFwcHJvcHJpYXRl IG9uZSBmb3IKPiA+IHRoZSBjdXJyZW50IGRldmljZSBzdGF0ZT/CoMKgSXMgaXQgZW50aXJlbHkg dGhlIHVzZXIncyByZXNwb25zaWJpbGl0eQo+ID4gdG8KPiA+IHJlbWVtYmVyIHRoZSBwbGFuZSBp bmZvIGZvciBhbiBvcGVuIGRtYWJ1ZiBmZD8gIAo+IAo+IFllcywgSSdkIGxlYXZlIHRoYXQgdG8g dXNlcnNwYWNlLiAgU28sIHdoZW4gdGhlIGdlbmVyYXRpb24gY2hhbmdlcwo+IHVzZXJzcGFjZSBr bm93cyB0aGUgZ3Vlc3QgY2hhbmdlZCB0aGUgcGxhbmUuICBJdCBjb3VsZCBiZSBhCj4gY29uZmln dXJhdGlvbiB0aGUgZ3Vlc3QgaGFzIHVzZWQgYmVmb3JlIChhbmQgd2hlcmUgdXNlcnNwYWNlIGNv dWxkIGhhdmUKPiBhIGNhY2hlZCBkbWEtYnVmIGhhbmRsZSBmb3IpLCBvciBpdCBjb3VsZCBiZSBz b21ldGhpbmcgbmV3LgoKQnV0IHVzZXJzcGFjZSBhbHNvIGRvZXNuJ3Qga25vdyB0aGF0IGEgZG1h YnVmIGdlbmVyYXRpb24gd2lsbCBldmVyIGJlCnZpc2l0ZWQgYWdhaW4sIHNvIHRoZXkncmUgYm91 bmQgdG8gaGF2ZSBzb21lIHN0YWxlIGRlc2NyaXB0b3JzLiAgQXJlCndlIHRoaW5raW5nIHVzZXJz cGFjZSB3b3VsZCBoYXZlIHNvbWUgTFJVIGxpc3Qgb2YgZG1hYnVmcyBzbyB0aGF0IHRoZXkKZG9u J3QgY29sbGVjdCB0b28gbWFueT8gIEVhY2ggdXNlcyBzb21lIHJlc291cmNlcywgIGRvIHdlIGp1 c3QgcmVseSBvbgpvcGVuIGZpbGUgaGFuZGxlcyB0byBzZXQgYW4gdXBwZXIgbGltaXQ/CiAKPiA+ IFdoYXQgaGFwcGVucyB0bwo+ID4gZXhpc3RpbmcgZG1hYnVmIGZkcyB3aGVuIHRoZSBnZW5lcmF0 aW9uIHVwZGF0ZXMsIGRvIHRoZXkgc3RvcAo+ID4gcmVmcmVzaGluZz8gIAo+IAo+IERlcGVuZHMg b24gd2hhdCB0aGUgZ3Vlc3QgaXMgZG9pbmcgOykKPiAKPiBUaGUgZG1hLWJ1ZiBpcyBqdXN0IGEg aG9zdC1zaWRlIGhhbmRsZSBmb3IgdGhlIHBpZWNlIG9mIHZpZGVvIG1lbW9yeQo+IHdoZXJlIHRo ZSBndWVzdCBzdG9yZWQgdGhlIGZyYW1lYnVmZmVyLgoKU28gdGhlIHJlc291cmNlcyB0aGUgdXNl ciBpcyBob2xkaW5nIGlmIHRoZXkgZG9uJ3QgcmVsZWFzZSB0aGVpciBkbWFidWYKYXJlIHBvdGVu dGlhbGx5IG5vbi10cml2aWFsLiAgVGhlIHVzZXIgY291bGQgYWxzbyBoYXZlIHRoaXMgdmlkZW8K bWVtb3J5IG1tYXAnZCwgd2hpY2ggbWFrZXMgaXQgaGFyZGVyIHRvIHJlY292ZXIgZnJvbSB0aGUg dXNlci4gIFRoaXMKc2VlbXMgbGlrZSBhIHByb2JsZW0uCiAKPiA+IERvZXMgaXQgYmxhbmsgdGhl IGZyYW1lYnVmZmVyPyAgCj4gCj4gTm8uCj4gCj4gPiBDYW4gdGhlIGRtYWJ1ZiBmZAo+ID4gdHJh bnNwYXJlbnRseSB1cGRhdGUgdG8gdGhlIG5ldyBwbGFuZV9pbmZvPyAgCj4gCj4gTm8uCgpTbyB0 aGUgdXNlciBob2xkIGEgcmVmZXJlbmNlIHRvIHZpZGVvIG1lbW9yeSB3aXRoIG5vIGlkZWEgd2hl dGhlciBpdAp3aWxsIGJlIHJldXNlZCwgd2UgaGF2ZSBubyB3YXkgdG8gdGVsbCB0aGVtIHRvIHJl bGVhc2UgdGhhdCByZWZlcmVuY2UKb3IgbWVjaGFuaXNtIHRvIGZvcmNlIHRoZW0gdG8gZG8gc28u Li4gc29tZXRoaW5nIGlzIHdyb25nIGhlcmUuCgo+ID4gVGhlIG90aGVyIGNhc2UgaXMgYSByZWdp b24sIHRoZSB1c2VyIHF1ZXJpZXMgdGhlIHBsYW5lX2luZm8gcmVjb3Jkcwo+ID4gdGhlCj4gPiBw YXJhbWV0ZXJzIGFuZCByZWdpb24gaW5mbywgYW5kIGNvbmZpZ3VyZXMgYWNjZXNzIHRvIHRoZSBy ZWdpb24gdXNpbmcKPiA+IHRoYXQgaW5mb3JtYXRpb24uwqDCoE1lYW53aGlsZSwgc29tZXRoaW5n IGNoYW5nZWQsIHBsYW5lX2luZm8gaW5jbHVkaW5nCj4gPiBnZW5lcmF0aW9uIGlzIHVwZGF0ZWQs IGJ1dCB0aGUgdXNlciBpcyBzdGlsbCBhc3N1bWluZyB0aGUgcHJldmlvdXMKPiA+IHBsYW5lX2lu Zm8uwqDCoEhvdyBjYW4gd2UgYXZvaWQgc3VjaCBhIHJhY2U/ICAKPiAKPiBRZW11IGRvZXNuJ3Qu ICBZb3UgbWlnaHQgZ2V0IHJlbmRlcmluZyBnbGl0Y2hlcyBpbiB0aGF0IGNhc2UsIGR1ZSB0bwo+ IGFjY2Vzc2luZyB0aGUgcGxhbmUgd2l0aCB0aGUgd3JvbmcgY29uZmlndXJhdGlvbi4gIEl0J3Mg ZnVuZGFtZW50YWxseQo+IHRoZSBzYW1lIHdpdGggc3RkdmdhIGJ0dy4KPiAKPiA+IFdoYXQgaXMg dGhlIHJlc3BvbnNpYmlsaXR5Cj4gPiBvZiB0aGUgdXNlciBhbmQgaG93IGFyZSB0aGV5IG5vdGlm aWVkIHRvIHJlZnJlc2ggdGhlIHBsYW5lX2luZm8/ICAKPiAKPiBxZW11IHBvbGxzIGluIHJlZ3Vs YXIgaW50ZXJ2YWxzLCBzaW1saWFyIHRvIGhvdyBpdCBjaGVja3MgdGhlIGRpcnR5Cj4gYml0bWFw IGZvciB2aWRlbyBtZW1vcnkgaW4gcmVndWxhciBpbnRlcnZhbHMgd2l0aCBzdGR2Z2EuCj4gCj4g cWVtdSBkaXNwbGF5IHVwZGF0ZSB0aW1lciBydW5zIG9uIDMwZnBzIHVzdWFsbHksIGluIGNhc2Ug bm9ib2R5IGlzCj4gbG9va2luZyAobm8gc3BpY2Uvdm5jIGNsaWVudCBjb25uZWN0ZWQpIGl0IHJl ZHVjZXMgdGhlIHVwZGF0ZSBmcmVxdWVuY3kKPiB0aG91Z2guCj4gCj4gPiA+IHBsYW5lX3R5cGUg c2hvdWxkIGJlIERSTV9QTEFORV9UWVBFX1BSSU1BUlkgb3IKPiA+ID4gRFJNX1BMQU5FX1RZUEVf Q1VSU09SCj4gPiA+IGZvciBkbWFidWYuCj4gPiA+IAo+ID4gPiBHaXZlbiB0aGF0IG52aWRpYSBk b2Vzbid0IHN1cHBvcnQgYSBzZXBhcmF0ZSBjdXJzb3IgcGxhbmUgaW4gdGhlaXIKPiA+ID4gcmVn aW9uIHRoZXkgd291bGQgc3VwcG9ydCBEUk1fUExBTkVfVFlQRV9QUklNQVJZIG9ubHkuCj4gPiA+ IAo+ID4gPiBJIGNhbid0IHNlZSB5ZXQgd2hhdCBpZCB3b3VsZCBiZSB1c2VmdWwgZm9yLgo+ID4g PiAKPiA+ID4gTGlrZXdpc2UgSSBjYW4ndCBzZWUgeWV0IHdoYXQgdGhlIFZGSU9fR0ZYX1BMQU5F X0ZMQUdTXyogYXJlIGdvb2QKPiA+ID4gZm9yLiAgCj4gPiAKPiA+IEkgdGhpbmsgd2UncmUgdHJ5 aW5nIHRvIGlkZW50aWZ5IHdoZXJlIHRoaXMgcGxhbmVfaW5mbyBleGlzdHMuwqDCoERvZXMKPiA+ IHRoZSB1c2VyIGFzayBmb3IgYSBkbWFidWYgZmQgZm9yIGl0IG9yIHVzZSBhIHJlZ2lvbi4gIAo+ IAo+IEJ1dCB3aGVuZXZlciBhIHJlZ2lvbiBvciBhIGRtYWJ1ZiBpcyB1c2VkIGlzIGEgZml4ZWQg cHJvcGVydHkgb2YgdGhlCj4gZGV2aWNlLCB3aHkgYXNzb2NpYXRlIHRoYXQgd2l0aCBhIHBsYW5l PyAgSXQgd2lsbCBiZSB0aGUgc2FtZSBmb3IgYWxsCj4gcGxhbmVzIG9mIGEgZGV2aWNlIGFueXdh eSAuLi4KPiAKPiA+IElmIGl0J3MgYSByZWdpb24sCj4gPiB3aGljaCByZWdpb24/ICAKPiAKPiBP aywgaWYgd2Ugd2FudCBzdXBwb3J0IG11bHRpcGxlIHJlZ2lvbnMuICBEbyB3ZT8gIFVzaW5nIHRo ZSBvZmZzZXQgd2UKPiBjYW4gcGxhY2UgbXVsdGlwbGUgcGxhbmVzIGluIGEgc2luZ2xlIHJlZ2lv bi4gIEFuZCBJJ20gbm90IHN1cmUgbnZpZGlhCj4gcGxhbnMgdG8gdXNlIG11bHRpcGxlIHBsYW5l cyBpbiB0aGUgZmlyc3QgcGxhY2UgLi4uCgpJIGRvbid0IHdhbnQgdG8gdGFrZSBhIGRyaXZlciBp b2N0bCBpbnRlcmZhY2UgYXMgYSB0aHJvdyBhd2F5LCBvbmUgdGltZQp1c2UgZXhlcmNpc2UuICBJ ZiB3ZSBjYW4gdGhpbmsgb2Ygc3VjaCBxdWVzdGlvbnMgbm93LCBsZXQncyBkZWZpbmUgaG93CnRo ZXkgd29yay4gIEEgZGV2aWNlIGNvdWxkIGhhdmUgbXVsdGlwbGUgZ3JhcGhpY3MgcmVnaW9ucyB3 aXRoIG11bHRpcGxlCnBsYW5lcyB3aXRoaW4gZWFjaCByZWdpb24uICBEbyB3ZSBhbHNvIHdhbnQg dG8gZXhjbHVkZSB0aGF0IGRldmljZQpuZWVkcyB0byBiZSBzdHJpY3RseSByZWdpb24gb3IgZG1h YnVmPyAgTWF5YmUgaXQgZG9lcyBib3RoLiAgT3IgbWF5YmUKaXQgc3VwcG9ydHMgZG1hYnVmLW5n IChpZS4gd2hhdGV2ZXIgY29tZXMgbmV4dCkuCgo+ID4gNC4gVHdvIGlvY3RsIGNvbW1hbmRzICAK PiA+ID4gVkZJT19ERVZJQ0VfUVVFUllfR0ZYX1BMQU5FCj4gPiA+IFZGSU9fREVWSUNFX0dFVF9G RCAgCj4gPiAKPiA+IEFyZSB3ZSBnb2luZyB0byBjb25zaWRlciBhIGdlbmVyaWMgVkZJT19ERVZJ Q0VfUVVFUlkgaW9jdGw/wqDCoEFueQo+ID4gb3BpbmlvbnM/wqDCoFRoYW5rcywgIAo+IAo+IEkg ZG9uJ3QgdGhpbmsgYSBnZW5lcmljIGRldmljZSBxdWVyeSBpcyB0aGF0IGhlbHBmdWwuICBEZXBl bmRpbmcgb24gdGhlCj4ga2luZCBvZiBxdWVyeSB5b3UnbGwgZ2V0IGJhY2sgZGlmZmVyZW50IHN0 dWZmLCBhbmQgd2UgbmVlZCB0byBoYW5kbGUKPiB0aGF0IHNvbWVob3csIGxpa2UgdGhpczoKPiAK PiB2ZmlvX2RldmljZV9xdWVyeSB7Cj4gICAgIHUzMiBhcmdzejsKPiAgICAgdTMyIGZsYWdzOwo+ ICAgICBlbnVtIHF1ZXJ5X3R5cGU7ICAvKiBvciB1c2UgZmxhZ3MgZm9yIHRoYXQgKi8KPiAgICAg dW5pb24gewo+ICAgICAgICAgcGxhbmVfaW5mbyBwbGFuZTsKPiAgICAgICAgIC8qIHdoYXRldmVy IGVsc2UgY29tZXMgdXAgKi8KPiAgICAgfSBxdWVyeV9wYXJhbXM7Cj4gfTsKPiAKPiBJIGZhaWwg dG8gc2VlIGhvdyB0aGlzIGlzIGZ1bmRhbWVudGFsbHkgZGlmZmVyZW50IGZyb20gaGF2aW5nIG11 bHRpcGxlCj4gdmZpb19kZXZpY2VfcXVlcnlfKiBzdHJ1Y3RzIChhbmQgaW9jdGxzKS4gIEl0IG9u bHkgcHVzaGVzIHRoZSBwcm9ibGVtCj4gb25lIGxldmVsIGRvd24gLi4uCj4gCj4gT3IgZG8geW91 IGhhdmUgc29tZXRoaW5nIGVsc2UgaW4gbWluZD8KCldlIGRvbid0IGhhdmUgYW4gaW5maW5pdGUg bnVtYmVyIG9mIGlvY3RscyBhbmQgZWFjaCBpb2N0bCBkZWZpbmVzIGEKdXNlciBpbnRlcmZhY2Ug dGhhdCBuZWVkcyB0byBiZSBzdXBwb3J0ZWQgYW5kIG1haW50YWluIGFuIEFCSS4gIFNvIGlmCndl IGRlZmluZSBzb21ldGhpbmcgbGlrZSBhYm92ZSB3aGVyZSB3ZSBjYW4gc2NyZXcgdXAgc29tZSBv ZiB0aGUgcXVlcnkKdHlwZXMgd2l0aG91dCB0aHJvd2luZyBhd2F5IHRoZSBlbnRpcmUgaW9jdGws IEkgdGhpbmsgdGhhdCdzIGEgZ29vZAp0aGluZy4gIFRoYW5rcywKCkFsZXgKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==