From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Zhang Subject: Re: [PATCH v4 3/3] x86/ioreq server: Add HVMOP to map guest ram with p2m_ioreq_server to an ioreq server. Date: Thu, 16 Jun 2016 17:32:52 +0800 Message-ID: <57627244.7010503@linux.intel.com> References: <1463648711-26595-1-git-send-email-yu.c.zhang@linux.intel.com> <1463648711-26595-4-git-send-email-yu.c.zhang@linux.intel.com> <575FFC7E02000078000F4BA1@prv-mh.provo.novell.com> <5761337A.5050705@linux.intel.com> <5761657C02000078000F5512@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <5761657C02000078000F5512@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jan Beulich Cc: Kevin Tian , George Dunlap , Andrew Cooper , Tim Deegan , xen-devel@lists.xen.org, Paul Durrant , zhiyuan.lv@intel.com, Jun Nakajima List-Id: xen-devel@lists.xenproject.org Cj4gT24gNi8xNC8yMDE2IDY6NDUgUE0sIEphbiBCZXVsaWNoIHdyb3RlOgo+Pj4+Pj4gT24gMTku MDUuMTYgYXQgMTE6MDUsIDx5dS5jLnpoYW5nQGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4+Pj4g QSBuZXcgSFZNT1AgLSBIVk1PUF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyLCBpcyBhZGRl ZCB0bwo+Pj4+IGxldCBvbmUgaW9yZXEgc2VydmVyIGNsYWltL2Rpc2NsYWltIGl0cyByZXNwb25z aWJpbGl0eSBmb3IgdGhlCj4+Pj4gaGFuZGxpbmcgb2YgZ3Vlc3QgcGFnZXMgd2l0aCBwMm0gdHlw ZSBwMm1faW9yZXFfc2VydmVyLiBVc2Vycwo+Pj4+IG9mIHRoaXMgSFZNT1AgY2FuIHNwZWNpZnkg d2hpY2gga2luZCBvZiBvcGVyYXRpb24gaXMgc3VwcG9zZWQKPj4+PiB0byBiZSBlbXVsYXRlZCBp biBhIHBhcmFtZXRlciBuYW1lZCBmbGFncy4gQ3VycmVudGx5LCB0aGlzIEhWTU9QCj4+Pj4gb25s eSBzdXBwb3J0IHRoZSBlbXVsYXRpb24gb2Ygd3JpdGUgb3BlcmF0aW9ucy4gQW5kIGl0IGNhbiBi ZQo+Pj4+IGVhc2lseSBleHRlbmRlZCB0byBzdXBwb3J0IHRoZSBlbXVsYXRpb24gb2YgcmVhZCBv bmVzIGlmIGFuCj4+Pj4gaW9yZXEgc2VydmVyIGhhcyBzdWNoIHJlcXVpcmVtZW50IGluIHRoZSBm dXR1cmUuCj4+PiBEaWRuJ3Qgd2UgZGV0ZXJtaW5lIHRoYXQgdGhpcyBpc24ndCBhcyBlYXN5IGFz IGV2ZXJ5b25lIGZpcnN0IHRob3VnaHQ/Cj4+IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0byBl bXVsYXRlIHJlYWQsIHdlIG5lZWQgdG8gY2hhbmdlIHRoZSBkZWZpbml0aW9uCj4+IG9mIGlzX2Vw dGVfcHJlc2VudCgpLCBhbmQgSSBkbyBub3QgdGhpbmsgdGhpcyBjaGFuZ2Ugd2lsbCBjYXVzZSBt dWNoCj4+IHRyb3VibGUuCj4+IEJ1dCBzaW5jZSBubyBvbmUgaXMgdXNpbmcgdGhlIHJlYWQgZW11 bGF0aW9uLCBJIGFtIGNvbnZpbmNlZCB0aGUgbW9yZQo+PiBjYXV0aW91cwo+PiB3YXkgaXMgdG8g b25seSBzdXBwb3J0IGVtdWxhdGlvbnMgZm9yIHdyaXRlIG9wZXJhdGlvbnMgZm9yIG5vdy4KPiBX ZWxsLCBva2F5LiBJJ2QgcGVyc29uYWxseSBkcm9wIHRoZSAiZWFzaWx5IiwgYnV0IHlvdSBrbm93 IHdoYXQKPiB0byB0ZWxsIHBlb3BsZSBpZiBsYXRlciB0aGV5IGNvbWUgYXNrIGhvdyB0aGlzICJl YXNpbHkiIHdhcyBtZWFudC4KCk9LLiBMZXQncyBkcm9wIHRoZSB3b3JkICJlYXNpbHkiLiA6KQoK Pj4+PiBAQCAtOTE0LDYgKzkxNiw0NSBAQCBpbnQgaHZtX3VubWFwX2lvX3JhbmdlX2Zyb21faW9y ZXFfc2VydmVyKHN0cnVjdCBkb21haW4KPj4gKmQsIGlvc2VydmlkX3QgaWQsCj4+Pj4gICAgICAg IHJldHVybiByYzsKPj4+PiAgICB9Cj4+Pj4gICAgCj4+Pj4gK2ludCBodm1fbWFwX21lbV90eXBl X3RvX2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAo+Pj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgdHlwZSwgdWludDMy X3QgZmxhZ3MpCj4+PiBJIHNlZSBubyByZWFzb24gd2h5IGJvdGggY2FuJ3QgYmUgdW5zaWduZWQg aW50Lgo+PiBQYXJhbWV0ZXIgdHlwZSBpcyBwYXNzZWQgaW4gZnJvbSB0aGUgdHlwZSBmaWVsZCBp bnNpZGUgc3RydWN0Cj4+IHhlbl9odm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlciwKPj4g d2hpY2ggaXMgYSB1aW50MTZfdCwgZm9sbG93ZWQgd2l0aCBhIHVpbnQxNl90IHBhZC4gTm93IEkg YW0gd29uZGVyaW5nLAo+PiBtYXkgYmUgd2UgY2FuIGp1c3QgcmVtb3ZlIHRoZSBwYWQKPj4gZmll bGQgaW4gdGhpcyBzdHJ1Y3R1cmUgYW5kIGp1c3QgZGVmaW5lIHR5cGUgYXMgdWludDMyX3QuCj4g SSB0aGluayBrZWVwaW5nIHRoZSBpbnRlcmZhY2Ugc3RydWN0dXJlIHVuY2hhbmdlZCBpcyB0aGUg ZGVzaXJhYmxlCj4gcm91dGUgaGVyZS4gV2hhdCBJIGRpc2xpa2UgaXMgdGhlIHBhc3NpbmcgYXJv dW5kIG9mIG5vbi1uYXR1cmFsCj4gd2lkdGggdHlwZXMsIHdoaWNoIGlzIG1vcmUgZXhwZW5zaXZl IGluIHRlcm1zIG9mIHByb2Nlc3NpbmcuIEkuZS4KPiBhcyBsb25nIGFzIGEgZml4ZWQgd2lkdGgg dHlwZSAod2hpY2ggaXMgbmVjZXNzYXJ5IHRvIGJlIHVzZWQgaW4KPiB0aGUgcHVibGljIGludGVy ZmFjZSkgZml0cyBpbiAidW5zaWduZWQgaW50IiwgdGhhdCBzaG91bGQgYmUgdGhlCj4gcmVzcGVj dGl2ZSBpbnRlcm5hbCB0eXBlLiBPdGhlcndpc2UgInVuc2lnbmVkIGxvbmciIGV0Yy4KPgo+IFRo ZXJlIGFyZSBjYXNlcyB3aGVyZSBldmVuIGludGVybmFsbHkgd2UgaW5kZWVkIHdhbnQgdG8gdXNl Cj4gZml4ZWQgd2lkdGggdHlwZXMsIGFuZCBhZG1pdHRlZGx5IHRoZXJlIGFyZSBsaWtlbHkgZmFy IG1vcmUgY2FzZXMKPiB3aGVyZSBpbnRlcm5hbGx5IGZpeGVkIHdpZHRoIHR5cGVzIGdldCB1c2Vk IHdpdGhvdXQgZ29vZCByZWFzb24sCj4gYnV0IGp1c3QgbGlrZSBldmVyeXdoZXJlIGVsc2UgLSBs ZXQncyBwbGVhc2Ugbm90IG1ha2UgdGhpcyB3b3JzZS4KPiBJT1cgcGxlYXNlIHVzZSBmaXhlZCB3 aWR0aCB0eXBlcyBvbmx5IHdoZW4geW91IHJlYWxseSBuZWVkIHRoZW0uCk9LLiBJIGNhbiBrZWVw IHRoZSBpbnRlcmZhY2UsIGFuZCB1c2luZyB1aW50MzJfdCB0eXBlIGluIHRoZSBpbnRlcm5hbCAK cm91dGluZQp3b3VsZCBtZWFucyBhIGltcGxpY2l0IHR5cGUgY29udmVyc2lvbiBmcm9tIHVpbnQx Nl82LCB3aGljaCBJIGRvIG5vdCB0aGluawppcyBhIHByb2JsZW0uCgo+Pj4+IC0tLSBhL3hlbi9h cmNoL3g4Ni9tbS9wMm0tZXB0LmMKPj4+PiArKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5j Cj4+Pj4gQEAgLTEzMiw2ICsxMzIsMTIgQEAgc3RhdGljIHZvaWQgZXB0X3AybV90eXBlX3RvX2Zs YWdzKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIGVwdF9lbnRyeV90ICplbnRyeSwKPj4+PiAgICAg ICAgICAgICAgICBlbnRyeS0+ciA9IGVudHJ5LT53ID0gZW50cnktPnggPSAxOwo+Pj4+ICAgICAg ICAgICAgICAgIGVudHJ5LT5hID0gZW50cnktPmQgPSAhIWNwdV9oYXNfdm14X2VwdF9hZDsKPj4+ PiAgICAgICAgICAgICAgICBicmVhazsKPj4+PiArICAgICAgICBjYXNlIHAybV9pb3JlcV9zZXJ2 ZXI6Cj4+Pj4gKyAgICAgICAgICAgIGVudHJ5LT5yID0gZW50cnktPnggPSAxOwo+Pj4gV2h5IHg/ Cj4+IFNldHRpbmcgZW50cnktPnggdG8gMSBpcyBub3QgYSBtdXN0LiBJIGNhbiByZW1vdmUgaXQu IDopCj4gUGxlYXNlIGRvLiBXZSBzaG91bGRuJ3QgZ3JhbnQgcGVybWlzc2lvbnMgd2l0aG91dCBy ZWFzb24uCgpHb3QgaXQuIFRoYW5rcy4KCj4+Pj4gQEAgLTk0LDggKzk2LDE2IEBAIHN0YXRpYyB1 bnNpZ25lZCBsb25nIHAybV90eXBlX3RvX2ZsYWdzKHAybV90eXBlX3QgdCwgbWZuX3QgbWZuLAo+ Pj4+ICAgICAgICBkZWZhdWx0Ogo+Pj4+ICAgICAgICAgICAgcmV0dXJuIGZsYWdzIHwgX1BBR0Vf TlhfQklUOwo+Pj4+ICAgICAgICBjYXNlIHAybV9ncmFudF9tYXBfcm86Cj4+Pj4gLSAgICBjYXNl IHAybV9pb3JlcV9zZXJ2ZXI6Cj4+Pj4gICAgICAgICAgICByZXR1cm4gZmxhZ3MgfCBQMk1fQkFT RV9GTEFHUyB8IF9QQUdFX05YX0JJVDsKPj4+PiArICAgIGNhc2UgcDJtX2lvcmVxX3NlcnZlcjoK Pj4+PiArICAgIHsKPj4+PiArICAgICAgICBmbGFncyB8PSBQMk1fQkFTRV9GTEFHUyB8IF9QQUdF X1JXOwo+Pj4+ICsKPj4+PiArICAgICAgICBpZiAoIHAybS0+aW9yZXEuZmxhZ3MgJiBQMk1fSU9S RVFfSEFORExFX1dSSVRFX0FDQ0VTUyApCj4+Pj4gKyAgICAgICAgICAgIHJldHVybiBmbGFncyAm IH5fUEFHRV9SVzsKPj4+PiArICAgICAgICBlbHNlCj4+Pj4gKyAgICAgICAgICAgIHJldHVybiBm bGFnczsKPj4+PiArICAgIH0KPj4+IFNhbWUgaGVyZSAoZm9yIHRoZSBtaXNzaW5nIF9QQUdFX05Y KSBwbHVzIG5vIG5lZWQgZm9yIGJyYWNlcy4KPj4gSSdsbCByZW1vdmUgdGhlIGJyYWNlLiBBbmQg d2UgZG8gbm90IG5lZWQgdG8gc2V0IHRoZSBfUEFHRV9OWF9CSVQsIGxpa2UKPj4gdGhlIHAybV9y YW1fcm8gY2FzZSBJIGd1ZXNzLgo+IEkgaG9wZSB5b3UgbWVhbiB0aGUgaW52ZXJzZTogWW91IHNo b3VsZCBzZXQgX1BBR0VfTlhfQklUIGhlcmUuCk9oLCByaWdodC4gSSBtZWFudCB0aGUgcmV2ZXJz ZS4gVGhhbmtzIGZvciB0aGUgcmVtaW5kLiA6KQpBbmQgSSBoYXZlIGEgcXVlc3Rpb24sICBoZXJl IGluIHAybV90eXBlX3RvX2ZsYWdzKCksIEkgc2F3IGN1cnJlbnQgY29kZSAKdXNlcyBfUEFHRV9O WF9CSVQKdG8gZGlzYWJsZSB0aGUgZXhlY3V0YWJsZSBwZXJtaXNzaW9uLCAgYW5kIEkgd29uZGVy LCB3aHkgZG9uJ3Qgd2UgY2hvb3NlIAp0aGUgX1BBR0VfTlgsCndoaWNoIGlzIGRlZmluZWQgYXM6 CgojZGVmaW5lIF9QQUdFX05YICAgICAgIChjcHVfaGFzX254ID8gX1BBR0VfTlhfQklUIDogMCkK CkhvdyBkbyB3ZSBrbm93IGZvciBzdXJlIHRoYXQgYml0IDYzIGZyb20gcHRlIGlzIG5vdCBhIHJl c2VydmVkIG9uZSAKd2l0aG91dCBjaGVja2luZwp0aGUgY3B1IGNhcGFiaWxpdHkodGhlIGNwdV9o YXNfbngpPyBJcyB0aGVyZSBhbnkgb3RoZXIgcmVhc29ucywgaS5lLiB0aGUgCnBhZ2UgdGFibGVz IG1pZ2h0CmJlIHNoYXJlZCB3aXRoIElPTU1VPwoKPj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQo+Pj4+ICt7Cj4+Pj4gKyAgICBzdHJ1Y3Qg cDJtX2RvbWFpbiAqcDJtID0gcDJtX2dldF9ob3N0cDJtKGQpOwo+Pj4+ICsgICAgaW50IHJjOwo+ Pj4+ICsKPj4+PiArICAgIHNwaW5fbG9jaygmcDJtLT5pb3JlcS5sb2NrKTsKPj4+PiArCj4+Pj4g KyAgICBpZiAoIGZsYWdzID09IDAgKQo+Pj4+ICsgICAgewo+Pj4+ICsgICAgICAgIHJjID0gLUVJ TlZBTDsKPj4+PiArICAgICAgICBpZiAoIHAybS0+aW9yZXEuc2VydmVyICE9IHMgKQo+Pj4+ICsg ICAgICAgICAgICBnb3RvIG91dDsKPj4+PiArCj4+Pj4gKyAgICAgICAgLyogVW5tYXAgaW9yZXEg c2VydmVyIGZyb20gcDJtIHR5cGUgYnkgcGFzc2luZyBmbGFncyB3aXRoIDAuICovCj4+Pj4gKyAg ICAgICAgcDJtLT5pb3JlcS5zZXJ2ZXIgPSBOVUxMOwo+Pj4+ICsgICAgICAgIHAybS0+aW9yZXEu ZmxhZ3MgPSAwOwo+Pj4+ICsgICAgfQo+Pj4gV2hhdCBkb2VzICJwYXNzaW5nIiByZWZlciB0byBp biB0aGUgY29tbWVudD8KPj4gSXQgbWVhbnMgaWYgdGhpcyByb3V0aW5lIGlzIGNhbGxlZCB3aXRo IGZsYWdzPTAsIGl0IHdpbGwgdW5tYXAgdGhlIGlvcmVxCj4+IHNlcnZlci4KPiBPaCwgdGhhdCdz IGEgY29tcGxldGVseSBkaWZmZXJlbnQgcmVhZGluZyBvZiB0aGUgY29tbWVudCB0aGFuIEkgaGFk Cj4gaW1wbGllZDogV2l0aCB3aGF0IHlvdSBzYXksICJmbGFncyIgaGVyZSByZWFsbHkgcmVmZXJz IHRvIHRoZSBmdW5jdGlvbgo+IHBhcmFtZXRlciwgd2hlcmVhcyBJIGltcGxpZWQgaXQgdG8gcmVm ZXIgdG8gdGhlIHN0cnVjdHVyZSBmaWVsZC4gSSB0aGluawo+IGlmIHRoYXQncyB3aGF0IHlvdSB3 YW50IHRvIHNheSwgdGhlbiB0aGUgY29tbWVudCBzaG91bGQgYmUgcHV0IG5leHQKPiB0byB0aGUg c3Vycm91bmRpbmcgaWYoKSB0byBjbGFyaWZ5IHdoYXQgImZsYWdzIiByZWZlcnMgdG8uCkFncmVl ZC4gSSdsbCBtb3ZlIHRoaXMgY29tbWVudCBhYm92ZSB0aGUgc3Vycm91bmRpbmcgaWYoKS4KCj4+ Pj4gK3sKPj4+PiArICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0gPSBwMm1fZ2V0X2hvc3RwMm0o ZCk7Cj4+Pj4gKyAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKPj4+PiArCj4+Pj4gKyAg ICBzcGluX2xvY2soJnAybS0+aW9yZXEubG9jayk7Cj4+Pj4gKwo+Pj4+ICsgICAgcyA9IHAybS0+ aW9yZXEuc2VydmVyOwo+Pj4+ICsgICAgKmZsYWdzID0gcDJtLT5pb3JlcS5mbGFnczsKPj4+PiAr Cj4+Pj4gKyAgICBzcGluX3VubG9jaygmcDJtLT5pb3JlcS5sb2NrKTsKPj4+PiArICAgIHJldHVy biBzOwo+Pj4+ICt9Cj4+PiBMb2NraW5nIGlzIHNvbWV3aGF0IHN0cmFuZ2UgaGVyZTogWW91IHBy b3RlY3QgYWdhaW5zdCB0aGUgInNldCIKPj4+IGNvdW50ZXJwYXJ0IGFsdGVyaW5nIHN0YXRlIHdo aWxlIHlvdSByZXRyaWV2ZSBpdCwgYnV0IHlvdSBkb24ndAo+Pj4gcHJvdGVjdCBhZ2FpbnN0IHRo ZSByZXR1cm5lZCBkYXRhIGJlY29taW5nIHN0YWxlIGJ5IHRoZSB0aW1lCj4+PiB0aGUgY2FsbGVy IGNhbiBjb25zdW1lIGl0LiBJcyB0aGF0IG5vdCBhIHByb2JsZW0/IChUaGUgbW9zdAo+Pj4gY29u Y2VybmluZyBjYXNlIHdvdWxkIHNlZW0gdG8gYmUgYSByYWNlIG9mIGh2bW9wX3NldF9tZW1fdHlw ZSgpCj4+PiB3aXRoIGRlLXJlZ2lzdHJhdGlvbiBvZiB0aGUgdHlwZS4pCj4+IFllcy4gVGhlIGNh c2UgeW91IG1lbnRpb25lZCBtaWdodCBoYXBwZW4uIEJ1dCBpdCdzIG5vdCBhIGJpZyBkZWFsIEkK Pj4gZ3Vlc3MuIElmIHN1Y2gKPj4gY2FzZSBoYXBwZW5zLCB0aGUgIGJhY2tlbmQgZHJpdmVyIHdp bGwgcmVjZWl2ZSBhbiBpbyByZXF1ZXN0IGFuZCBjYW4KPj4gdGhlbiBkaXNjYXJkIGl0Cj4+IGlm IGl0IGhhcyBqdXN0IGRlLXJlZ2lzdGVyZWQgdGhlIG1lbSB0eXBlLgo+IENvdWxkIHlvdSBjbGFy aWZ5IGluIGEgY29tbWVudCB0aGVuIHdoYXQgdGhlIGxvY2sgaXMgKGFuZCBpcyBub3QpCj4gbWVh bnQgdG8gZ3VhcmQgYWdhaW5zdD8KCkZvciBub3csIG9ubHkgb25lIGlvcmVxIHNlcnZlciBpcyBh bGxvd2VkIHRvIGJlIGJvdW5kZWQgd2l0aCAKSFZNTUVNX2lvcmVxX3NlcnZlciwKb25lIHVzYWdl IG9mIHRoaXMgbG9jayBpcyB0aGF0IGluIHAybV9zZXRfaW9yZXFfc2VydmVyKCksIGl0IGNhbiBw cmV2ZW50IApjb25jdXJyZW50CnNldHRpbmcgcmVxdWlyZW1lbnRzIGZyb20gbXVsdGlwbGUgaW9y ZXEgc2VydmVycy4gQW5kIGFsdGhvdWdoIGl0IGNhbiAKbm90IHByb3RlY3QgdGhlCnJldHVybiB2 YWx1ZSBmcm9tIHAybV9nZXRfaW9yZXFfc2VydmVyKCksIGl0IGNhbiBzdGlsbCBwcm92aWRlIHNv bWUga2luZCAKcHJvdGVjdGlvbiBpbnNpZGUKdGhlIHJvdXRpbmUuCkknbGwgYWRkIHRoZSBjb21t ZW50cyB0byBpbGx1c3RyYXRlIHRoaXMuIDopCgo+Pj4+ICtzdHJ1Y3QgeGVuX2h2bV9tYXBfbWVt X3R5cGVfdG9faW9yZXFfc2VydmVyIHsKPj4+PiArICAgIGRvbWlkX3QgZG9taWQ7ICAgICAgLyog SU4gLSBkb21haW4gdG8gYmUgc2VydmljZWQgKi8KPj4+PiArICAgIGlvc2VydmlkX3QgaWQ7ICAg ICAgLyogSU4gLSBpb3JlcSBzZXJ2ZXIgaWQgKi8KPj4+PiArICAgIHVpbnQxNl90IHR5cGU7ICAg ICAgLyogSU4gLSBtZW1vcnkgdHlwZSAqLwo+Pj4+ICsgICAgdWludDE2X3QgcGFkOwo+Pj4gVGhp cyBmaWVsZCBkb2VzIG5vdCBhcHBlYXIgdG8gZ2V0IGNoZWNrZWQgaW4gdGhlIGhhbmRsZXIuCj4+ IEkgYW0gbm93IHdvbmRlcmluZywgaG93IGFib3V0IHdlIHJlbW92ZSB0aGlzIHBhZCBmaWVsZCBh bmQgZGVmaW5lIHR5cGUKPj4gYXMgdWludDMyX3Q/Cj4gQXMgYWJvdmUgLSBJIHRoaW5rIHRoZSBj dXJyZW50IGxheW91dCBpcyBmaW5lLiBCdXQgSSdtIGFsc28gbm90IGhlYXZpbHkKPiBvcHBvc2Vk IHRvIHVzaW5nIHVpbnQzMl90IGhlcmUuIEl0J3Mgbm90IGEgc3RhYmxlIGludGVyZmFjZSBhbnl3 YXkKPiAoYW5kIEkgYWxyZWFkeSBoYXZlIGEgc2VyaWVzIG1vc3RseSByZWFkeSB0byBzcGxpdCBv ZmYgYWxsIGNvbnRyb2wKPiBvcGVyYXRpb25zIGZyb20gdGhlIEhWTU9QXyogb25lcywgaW50byBh IG5ldyBIVk1DVExfKiBzZXQsCj4gd2hpY2ggd2lsbCBtYWtlIGFsbCBvZiB0aGVtIGludGVyZmFj ZS12ZXJzaW9uZWQpLgoKSSdkIGxpa2UgdG8ga2VlcCB0aGlzIGludGVyZmFjZS4gQlRXLCB5b3Ug bWVudGlvbmVkICJ0aGlzIGZpZWxkIGRvZXMgbm90IAphcHBlYXIgdG8KZ2V0IGNoZWNrZWQgaW4g dGhlIGhhbmRsZXIiLCBkbyB5b3UgbWVhbiB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBwYWQgaW4gdGhl IApoYW5kbGVyPwpBbmQgd2h5PwoKVGhhbmtzCll1CgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=