From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Yu, Zhang" Subject: Re: [PATCH v2 3/3] x86/ioreq server: Add HVMOP to map guest ram with p2m_ioreq_server to an ioreq server Date: Mon, 11 Apr 2016 19:14:38 +0800 Message-ID: <570B871E.7040703@linux.intel.com> References: <1459421618-5991-1-git-send-email-yu.c.zhang@linux.intel.com> <1459421618-5991-4-git-send-email-yu.c.zhang@linux.intel.com> <57083EA202000078000E623A@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: <57083EA202000078000E623A@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 , Paul Durrant Cc: Kevin Tian , Keir Fraser , George Dunlap , Andrew Cooper , Tim Deegan , xen-devel@lists.xen.org, zhiyuan.lv@intel.com, Jun Nakajima List-Id: xen-devel@lists.xenproject.org CgpPbiA0LzkvMjAxNiA2OjI4IEFNLCBKYW4gQmV1bGljaCB3cm90ZToKPj4+PiBPbiAzMS4wMy4x NiBhdCAxMjo1MywgPHl1LmMuemhhbmdAbGludXguaW50ZWwuY29tPiB3cm90ZToKPj4gK3N0YXRp YyBpbnQgbWVtX3dyaXRlKGNvbnN0IHN0cnVjdCBodm1faW9faGFuZGxlciAqaGFuZGxlciwKPj4g KyAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGFkZHIsCj4+ICsgICAgICAgICAgICAgICAg ICAgICB1aW50MzJfdCBzaXplLAo+PiArICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZGF0 YSkKPj4gK3sKPj4gKyAgICBzdHJ1Y3QgZG9tYWluICpjdXJyZCA9IGN1cnJlbnQtPmRvbWFpbjsK Pj4gKyAgICB1bnNpZ25lZCBsb25nIGdtZm4gPSBwYWRkcl90b19wZm4oYWRkcik7Cj4+ICsgICAg dW5zaWduZWQgbG9uZyBvZmZzZXQgPSBhZGRyICYgflBBR0VfTUFTSzsKPj4gKyAgICBzdHJ1Y3Qg cGFnZV9pbmZvICpwYWdlID0gZ2V0X3BhZ2VfZnJvbV9nZm4oY3VycmQsIGdtZm4sIE5VTEwsIFAy TV9VTlNIQVJFKTsKPj4gKyAgICB1aW50OF90ICpwOwo+PiArCj4+ICsgICAgaWYgKCAhcGFnZSAp Cj4+ICsgICAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKPj4gKwo+PiArICAgIHAg PSBfX21hcF9kb21haW5fcGFnZShwYWdlKTsKPj4gKyAgICBwICs9IG9mZnNldDsKPj4gKyAgICBt ZW1jcHkocCwgJmRhdGEsIHNpemUpOwo+Cj4gV2hhdCBpZiB0aGUgcGFnZSBpcyBhIHIvbyBvbmU/ IE5vdCBoYXZpbmcgZm91bmQgYW4gaW9yZXEgc2VydmVyLCBJJ20KPiBub3Qgc3VyZSBhc3N1bXB0 aW9ucyBvbiB0aGUgcGFnZSBiZWluZyB3cml0YWJsZSBjYW4gdmFsaWRseSBiZSBtYWRlLgo+Cj4+ IEBAIC0xNjgsMTMgKzIyNiw3MiBAQCBzdGF0aWMgaW50IGh2bWVtdWxfZG9faW8oCj4+ICAgICAg ICAgICBicmVhazsKPj4gICAgICAgY2FzZSBYODZFTVVMX1VOSEFORExFQUJMRToKPj4gICAgICAg ewo+PiAtICAgICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcyA9Cj4+IC0gICAgICAgICAg ICBodm1fc2VsZWN0X2lvcmVxX3NlcnZlcihjdXJyLT5kb21haW4sICZwKTsKPj4gKyAgICAgICAg c3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7Cj4+ICsgICAgICAgIHAybV90eXBlX3QgcDJtdDsK Pj4gKwo+PiArICAgICAgICBpZiAoIGlzX21taW8gKQo+PiArICAgICAgICB7Cj4+ICsgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIGdtZm4gPSBwYWRkcl90b19wZm4oYWRkcik7Cj4+ICsKPj4gKyAg ICAgICAgICAgICh2b2lkKSBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGN1cnJkLCBnbWZuLCAmcDJt dCk7Cj4+ICsKPj4gKyAgICAgICAgICAgIHN3aXRjaCAoIHAybXQgKQo+PiArICAgICAgICAgICAg ewo+PiArICAgICAgICAgICAgICAgIGNhc2UgcDJtX2lvcmVxX3NlcnZlcjoKPj4gKyAgICAgICAg ICAgICAgICB7Cj4+ICsgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+ ICsKPj4gKyAgICAgICAgICAgICAgICAgICAgcDJtX2dldF9pb3JlcV9zZXJ2ZXIoY3VycmQsICZm bGFncywgJnMpOwo+Cj4gQXMgdGhlIGZ1bmN0aW9uIGFwcGFyZW50bHkgcmV0dXJucyBubyB2YWx1 ZSByaWdodCBub3csIHBsZWFzZSBhdm9pZAo+IHRoZSBpbmRpcmVjdGlvbiBvbiBib3RoIHZhbHVl cyB5b3UncmUgYWZ0ZXIgLSBvbmUgb2YgdGhlIHR3bwo+IChwcmVzdW1hYmx5IHMpIGNhbiBiZSB0 aGUgZnVuY3Rpb24ncyByZXR1cm4gdmFsdWUuCj4KCldlbGwsIGN1cnJlbnQgaW1wbGVtZW50YXRp b24gb2YgcDJtX2dldF9pb3JlcV9zZXJ2ZXIoKSBoYXMgc3Bpbl9sb2NrLwpzcGluX3VubG9jayBz dXJyb3VuZGluZyB0aGUgcmVhZGluZyBvZiBmbGFncyBhbmQgdGhlIHMsIGJ1dCBJIGJlbGlldmUK d2UgY2FuIGFsc28gdXNlIHRoZSBzIGFzIHJldHVybiB2YWx1ZS4KCj4+ICsgICAgICAgICAgICAg ICAgICAgIGlmICggIXMgKQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsK Pj4gKyAgICAgICAgICAgICAgICAgICAgaWYgKCAoZGlyID09IElPUkVRX1JFQUQgJiYKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIShmbGFncyAmIFAyTV9JT1JFUV9IQU5ETEVfUkVBRF9B Q0NFU1MpKSB8fAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgIChkaXIgPT0gSU9SRVFfV1JJ VEUgJiYKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIShmbGFncyAmIFAyTV9JT1JFUV9I QU5ETEVfV1JJVEVfQUNDRVNTKSkgKQo+Cj4gSSB0aGluayB0aGlzIHdvdWxkIGJlIGVhc2llciB0 byByZWFkIHVzaW5nIGEgY29uZGl0aW9uYWwgZXhwcmVzc2lvbgo+IHdpdGggdGhlIGNvbmRpdGlv biBiZWluZyBkaXIgPT0gSU9SRVFfPG9uZS1vZi10aGUtdHdvPiwganVzdAo+IHNlbGVjdGluZyBl aXRoZXIgb2YgdGhlIHR3byBwb3NzaWJsZSBiaXQgbWFza3MuCj4KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIHMgPSBOVUxMOwo+PiArCj4+ICsgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ PiArICAgICAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAgICAgICBjYXNlIHAybV9yYW1fcnc6 Cj4KPiBCbGFuayBsaW5lIGFib3ZlIGhlcmUgcGxlYXNlLgo+Cj4+ICAgICAgICAgICAvKiBJZiB0 aGVyZSBpcyBubyBzdWl0YWJsZSBiYWNraW5nIERNLCBqdXN0IGlnbm9yZSBhY2Nlc3NlcyAqLwo+ PiAgICAgICAgICAgaWYgKCAhcyApCj4+ICAgICAgICAgICB7Cj4+IC0gICAgICAgICAgICByYyA9 IGh2bV9wcm9jZXNzX2lvX2ludGVyY2VwdCgmbnVsbF9oYW5kbGVyLCAmcCk7Cj4+ICsgICAgICAg ICAgICBzd2l0Y2ggKCBwMm10ICkKPj4gKyAgICAgICAgICAgIHsKPj4gKyAgICAgICAgICAgIGNh c2UgcDJtX2lvcmVxX3NlcnZlcjoKPj4gKyAgICAgICAgICAgIC8qCj4+ICsgICAgICAgICAgICAg KiBSYWNlIGNvbmRpdGlvbnMgbWF5IGV4aXN0IHdoZW4gYWNjZXNzIHRvIGEgZ2ZuIHdpdGgKPj4g KyAgICAgICAgICAgICAqIHAybV9pb3JlcV9zZXJ2ZXIgaXMgaW50ZXJjZXB0ZWQgYnkgaHlwZXJ2 aXNvciwgZHVyaW5nCj4+ICsgICAgICAgICAgICAgKiB3aGljaCB0aW1lIHAybSB0eXBlIG9mIHRo aXMgZ2ZuIGlzIHJlY2FsY3VsYXRlZCBiYWNrCj4+ICsgICAgICAgICAgICAgKiB0byBwMm1fcmFt X3J3LiBtZW1faGFuZGxlciBpcyB1c2VkIHRvIGhhbmRsZSB0aGlzCj4+ICsgICAgICAgICAgICAg KiBjb3JuZXIgY2FzZS4KPj4gKyAgICAgICAgICAgICAqLwo+Cj4gTm93IGlmIHRoZXJlIGlzIHN1 Y2ggYSByYWNlIGNvbmRpdGlvbiwgdGhlIHJhY2UgY291bGQgYWxzbyBiZSB3aXRoIGEKPiBwYWdl IGNoYW5naW5nIGZpcnN0IHRvIHJhbV9ydyBhbmQgdGhlbiBpbW1lZGlhdGVseSBmdXJ0aGVyIHRv IGUuZy4KPiByYW1fcm8uIFNlZSB0aGUgZWFybGllciBjb21tZW50IGFib3V0IGFzc3VtaW5nIHRo ZSBwYWdlIHRvIGJlCj4gd3JpdGFibGUuCj4KClRoYW5rcywgSmFuLiBBZnRlciByZWNoZWNraW5n IHRoZSBjb2RlLCBJIHN1cHBvc2UgdGhlIHJhY2UgY29uZGl0aW9uCndpbGwgbm90IGhhcHBlbi4g SW4gaHZtZW11bF9kb19pbygpLCBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKCkgaXMgdXNlZAp0byBw ZWVrIHRoZSBwMm10IGZvciB0aGUgZ2ZuLCBidXQgZ2V0X2dmbl90eXBlX2FjY2VzcygpIGlzIGNh bGxlZCBpbnNpZGUKaHZtX2hhcF9uZXN0ZWRfcGFnZV9mYXVsdCgpLCBhbmQgdGhpcyB3aWxsIGd1 YXJhbnRlZSBubyBwMm0gY2hhbmdlIHNoYWxsCm9jY3VyIGR1cmluZyB0aGUgZW11bGF0aW9uLgpJ cyB0aGlzIHVuZGVyc3RhbmRpbmcgY29ycmVjdD8KCgo+PiArICAgICAgICAgICAgY2FzZSBwMm1f cmFtX3J3Ogo+PiArICAgICAgICAgICAgICAgIHJjID0gaHZtX3Byb2Nlc3NfaW9faW50ZXJjZXB0 KCZtZW1faGFuZGxlciwgJnApOwo+PiArICAgICAgICAgICAgICAgIGJyZWFrOwo+PiArCj4+ICsg ICAgICAgICAgICBkZWZhdWx0Ogo+PiArICAgICAgICAgICAgICAgIHJjID0gaHZtX3Byb2Nlc3Nf aW9faW50ZXJjZXB0KCZudWxsX2hhbmRsZXIsICZwKTsKPgo+IEFsb25nIHdpdGggdGhlIGFib3Zl LCBJIGRvdWJ0IGl0IGlzIGNvcnJlY3QgdG8gaGF2ZSBlLmcuIHJhbV9ybyBjb21lCj4gaGVyZS4K PgoKU28gaWYgbm8gcmFjZSBjb25kaXRpb24gaGFwcGVucywgbm8gbmVlZCB0byB0cmVhdCBwMm1f cmFtX3J3IHNwZWNpYWxseS4KCj4+ICtzdGF0aWMgaW50IGh2bV9tYXBfbWVtX3R5cGVfdG9faW9y ZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlvc2VydmlkX3QgaWQsCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGh2bW1lbV90eXBlX3QgdHlwZSwKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MpCj4+ICt7 Cj4+ICsgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7Cj4+ICsgICAgaW50IHJjOwo+PiAr Cj4+ICsgICAgLyogRm9yIG5vdywgb25seSBIVk1NRU1faW9yZXFfc2VydmVyIGlzIHN1cHBvcnRl ZCAqLwo+PiArICAgIGlmICggdHlwZSAhPSBIVk1NRU1faW9yZXFfc2VydmVyICkKPj4gKyAgICAg ICAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gKyAgICBpZiAoIGZsYWdzICYgfihIVk1PUF9JT1JF UV9NRU1fQUNDRVNTX1JFQUQgfAo+PiArICAgICAgICAgICAgICAgICAgIEhWTU9QX0lPUkVRX01F TV9BQ0NFU1NfV1JJVEUpICkKPj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gKyAg ICBzcGluX2xvY2soJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7Cj4+ICsK Pj4gKyAgICByYyA9IC1FTk9FTlQ7Cj4+ICsgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2Vy dmVyLmxpc3QsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZW50cnkgKQo+PiAr ICAgIHsKPj4gKyAgICAgICAgaWYgKCBzID09IGQtPmFyY2guaHZtX2RvbWFpbi5kZWZhdWx0X2lv cmVxX3NlcnZlciApCj4+ICsgICAgICAgICAgICBjb250aW51ZTsKPj4gKwo+PiArICAgICAgICBp ZiAoIHMtPmlkID09IGlkICkKPj4gKyAgICAgICAgewo+PiArICAgICAgICAgICAgcmMgPSBwMm1f c2V0X2lvcmVxX3NlcnZlcihkLCBmbGFncywgcyk7Cj4+ICsgICAgICAgICAgICBpZiAoIHJjID09 IDAgKQo+PiArICAgICAgICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19ERUJVRywgIiV1ICVzIHR5 cGUgSFZNTUVNX2lvcmVxX3NlcnZlci5cbiIsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg cy0+aWQsIChmbGFncyAhPSAwKSA/ICJtYXBwZWQgdG8iIDogInVubWFwcGVkIGZyb20iKTsKPgo+ IFdoeSBnZHByaW50aygpPyBJIGRvbid0IHRoaW5rIHRoZSBjdXJyZW50IGRvbWFpbiBpcyBvZiBt dWNoCj4gaW50ZXJlc3QgaGVyZS4gV2hhdCB3b3VsZCBiZSBvZiBpbnRlcmVzdCBpcyB0aGUgc3Vi amVjdCBkb21haW4uCj4KCnMtPmlkIGlzIG5vdCB0aGUgZG9tYWluX2lkLCBidXQgaWQgb2YgdGhl IGlvcmVxIHNlcnZlci4KCj4+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKPj4gKysr IGIveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwo+PiBAQCAtMTMyLDYgKzEzMiwxOSBAQCBzdGF0 aWMgdm9pZCBlcHRfcDJtX3R5cGVfdG9fZmxhZ3Moc3RydWN0IHAybV9kb21haW4KPj4gKnAybSwg ZXB0X2VudHJ5X3QgKmVudHJ5LAo+PiAgICAgICAgICAgICAgIGVudHJ5LT5yID0gZW50cnktPncg PSBlbnRyeS0+eCA9IDE7Cj4+ICAgICAgICAgICAgICAgZW50cnktPmEgPSBlbnRyeS0+ZCA9ICEh Y3B1X2hhc192bXhfZXB0X2FkOwo+PiAgICAgICAgICAgICAgIGJyZWFrOwo+PiArICAgICAgICBj YXNlIHAybV9pb3JlcV9zZXJ2ZXI6Cj4+ICsgICAgICAgICAgICBlbnRyeS0+ciA9ICEocDJtLT5p b3JlcS5mbGFncyAmIFAyTV9JT1JFUV9IQU5ETEVfUkVBRF9BQ0NFU1MpOwo+PiArCSAgICAvKgo+ PiArCSAgICAgKiB3cml0ZSBhY2Nlc3MgcmlnaHQgaXMgZGlzYWJsZWQgd2hlbiBlbnRyeS0+ciBp cyAwLCBidXQgd2hldGhlcgo+PiArCSAgICAgKiB3cml0ZSBhY2Nlc3NlcyBhcmUgZW11bGF0ZWQg YnkgaHlwZXJ2aXNvciBvciBmb3J3YXJkZWQgdG8gYW4KPj4gKwkgICAgICogaW9yZXEgc2VydmVy IGRlcGVuZHMgb24gdGhlIHNldHRpbmcgb2YgcDJtLT5pb3JlcS5mbGFncy4KPj4gKwkgICAgICov Cj4+ICsgICAgICAgICAgICBlbnRyeS0+dyA9IChlbnRyeS0+ciAmJgo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgIShwMm0tPmlvcmVxLmZsYWdzICYgUDJNX0lPUkVRX0hBTkRMRV9XUklURV9B Q0NFU1MpKTsKPj4gKyAgICAgICAgICAgIGVudHJ5LT54ID0gZW50cnktPnI7Cj4KPiBXaHkgd291 bGQgd2Ugd2FudCB0byBhbGxvdyBpbnN0cnVjdGlvbiBleGVjdXRpb24gZnJvbSBzdWNoIHBhZ2Vz Pwo+IEFuZCB3aXRoIGFsbCB0aHJlZSBiaXRzIG5vdyBwb3NzaWJseSBiZWluZyBjbGVhciwgYXJl bid0IHdlIHJpc2tpbmcgdGhlCj4gZW50cmllcyB0byBiZSBtaXMtdHJlYXRlZCBhcyBub3QtcHJl c2VudCBvbmVzPwo+CgpIYWguIFlvdSBnb3QgbWUuIFRoYW5rcyEgOikKTm93IEkgcmVhbGl6ZWQg aXQgd291bGQgYmUgZGlmZmljdWx0IGlmIHdlIHdhbm5hIHRvIGVtdWxhdGUgdGhlIHJlYWQKb3Bl cmF0aW9ucyBmb3IgSFZNLiBBY2NvcmRpbmcgdG8gSW50ZWwgbWFubnVhbCwgZW50cnktPnIgaXMg dG8gYmUKY2xlYXJlZCwgc28gc2hvdWxkIGVudHJ5LT53IGlmIHdlIGRvIG5vdCB3YW50IGVwdCBt aXNjb25maWcuIEFuZAp3aXRoIGJvdGggcmVhZCBhbmQgd3JpdGUgcGVybWlzc2lvbnMgYmVpbmcg Zm9yYmlkZGVuLCBlbnRyeS0+eCBjYW4gYmUKc2V0IG9ubHkgb24gcHJvY2Vzc29ycyB3aXRoIEVY RUNVVEVfT05MWSBjYXBhYmlsaXR5LgpUbyBhdm9pZCBhbnkgZW50cnkgdG8gYmUgbWlzLXRyZWF0 ZWQgYXMgbm90LXByZXNlbnQuIFdlIGhhdmUgc2V2ZXJhbApzb2x1dGlvbnM6CmE+IGRvIG5vdCBz dXBwb3J0IHRoZSByZWFkIGVtdWxhdGlvbiBmb3Igbm93IC0gd2UgaGF2ZSBubyBzdWNoIHVzYWdl CmNhc2U7CmI+IGFkZCB0aGUgY2hlY2sgb2YgcDJtX3QgYWdhaW5zdCBwMm1faW9yZXFfc2VydmVy IGluIGlzX2VwdGVfcHJlc2VudCAtCmEgYml0IHdlaXJkIHRvIG1lLgpXaGljaCBvbmUgZG8geW91 IHByZWZlcj8gb3IgYW55IG90aGVyIHN1Z2dlc3Rpb25zPwoKPj4gLS0tIGEveGVuL2FyY2gveDg2 L21tL3AybS1wdC5jCj4+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYwo+PiBAQCAtNzIs OCArNzIsOCBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBwZ3RbXSA9IHsKPj4gICAgICAg UEdUX2wzX3BhZ2VfdGFibGUKPj4gICB9Owo+Pgo+PiAtc3RhdGljIHVuc2lnbmVkIGxvbmcgcDJt X3R5cGVfdG9fZmxhZ3MocDJtX3R5cGVfdCB0LCBtZm5fdCBtZm4sCj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGV2ZWwpCj4+ICtzdGF0aWMg dW5zaWduZWQgbG9uZyBwMm1fdHlwZV90b19mbGFncyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBw Mm1fdHlwZV90IHQsCj4KPiBjb25zdAo+Cj4+ICtpbnQgcDJtX3NldF9pb3JlcV9zZXJ2ZXIoc3Ry dWN0IGRvbWFpbiAqZCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n IGZsYWdzLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2Vy dmVyICpzKQo+PiArewo+PiArICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0gPSBwMm1fZ2V0X2hv c3RwMm0oZCk7Cj4+ICsgICAgaW50IHJjOwo+PiArCj4+ICsgICAgc3Bpbl9sb2NrKCZwMm0tPmlv cmVxLmxvY2spOwo+PiArCj4+ICsgICAgcmMgPSAtRUJVU1k7Cj4+ICsgICAgaWYgKCAoZmxhZ3Mg IT0gMCkgJiYgKHAybS0+aW9yZXEuc2VydmVyICE9IE5VTEwpICkKPj4gKyAgICAgICAgZ290byBv dXQ7Cj4+ICsKPj4gKyAgICByYyA9IC1FSU5WQUw7Cj4+ICsgICAgLyogdW5tYXAgaW9yZXEgc2Vy dmVyIGZyb20gcDJtIHR5cGUgYnkgcGFzc2luZyBmbGFncyB3aXRoIDAgKi8KPgo+IENvbW1lbnQg c3R5bGUgKGFsc28gZWxzZXdoZXJlKS4KPgo+PiArICAgIGlmICggKGZsYWdzID09IDApICYmIChw Mm0tPmlvcmVxLnNlcnZlciAhPSBzKSApCj4+ICsgICAgICAgIGdvdG8gb3V0Owo+Cj4gVGhlIHR3 byBmbGFncyBjaGVja3MgYWJvdmUgYXJlIHJlZHVuZGFudCB3aXRoIC4uLgo+Cj4+ICsgICAgaWYg KCBmbGFncyA9PSAwICkKPj4gKyAgICB7Cj4+ICsgICAgICAgIHAybS0+aW9yZXEuc2VydmVyID0g TlVMTDsKPj4gKyAgICAgICAgcDJtLT5pb3JlcS5mbGFncyA9IDA7Cj4+ICsgICAgfQo+PiArICAg IGVsc2UKPj4gKyAgICB7Cj4+ICsgICAgICAgIHAybS0+aW9yZXEuc2VydmVyID0gczsKPj4gKyAg ICAgICAgcDJtLT5pb3JlcS5mbGFncyA9IGZsYWdzOwo+PiArICAgIH0KPgo+IC4uLiB0aGlzIC0g SSB0aGluayB0aGUgZWFybGllciBvbmVzIHNob3VsZCBiZSBmb2xkZWQgaW50byB0aGlzLgo+CgpP ay4gSSdsbCBoYXZlIGEgdHJ5LiA6KQoKPj4gKyAgICAvKgo+PiArICAgICAqIEVhY2ggdGltZSB3 ZSBtYXAvdW5tYXAgYW4gaW9yZXEgc2VydmVyIHRvL2Zyb20gcDJtX2lvcmVxX3NlcnZlciwKPj4g KyAgICAgKiB3ZSBtYXJrIHRoZSBwMm0gdGFibGUgdG8gYmUgcmVjYWxjdWxhdGVkLCBzbyB0aGF0 IGdmbnMgd2hpY2ggd2VyZQo+PiArICAgICAqIHByZXZpb3VzbHkgbWFya2VkIHdpdGggcDJtX2lv cmVxX3NlcnZlciBjYW4gYmUgcmVzeW5jZWQuCj4+ICsgICAgICovCj4+ICsgICAgcDJtX2NoYW5n ZV9lbnRyeV90eXBlX2dsb2JhbChkLCBwMm1faW9yZXFfc2VydmVyLCBwMm1fcmFtX3J3KTsKPgo+ IFdoYXQgZG9lcyAicmVzeW5jZWQiIGhlcmUgbWVhbj8gSS5lLiBJIGNhbiBzZWUgd2h5IHRoaXMg aXMgd2FudGVkCj4gd2hlbiB1bm1hcHBpbmcgYSBzZXJ2ZXIsIGJ1dCB3aGVuIG1hcHBpbmcgYSBz ZXJ2ZXIgdGhlcmUgc2hvdWxkbid0Cj4gYmUgYW55IHN1Y2ggcGFnZXMgaW4gdGhlIGZpcnN0IHBs YWNlLgo+CgpUaGVyZSBzaG91bGRuJ3QgYmUuIEJ1dCBpZiB0aGVyZSBpcyhtaXNiZWhhdmlvciBm cm9tIHRoZSBkZXZpY2UgbW9kZWwKc2lkZSksIGl0IGNhbiBiZSByZWNhbGN1bGF0ZWQgYmFjayB0 byBwMm1fcmFtX3J3KHdoaWNoIGlzIG5vdCBxdWl0ZQpuZWNlc3NhcnkgYXMgdGhlIHVubWFwcGlu ZyBjYXNlKS4KCj4+ICsgICAgcmMgPSAwOwo+PiArCj4+ICtvdXQ6Cj4KPiBMYWJlbHMgaW5kZW50 ZWQgYnkgYXQgbGVhc3Qgb25lIHNwYWNlIHBsZWFzZS4KPgo+PiBAQCAtMzIwLDYgKzMyMSwyNyBA QCBzdHJ1Y3QgcDJtX2RvbWFpbiB7Cj4+ICAgICAgICAgICBzdHJ1Y3QgZXB0X2RhdGEgZXB0Owo+ PiAgICAgICAgICAgLyogTlBULWVxdWl2YWxlbnQgc3RydWN0dXJlIGNvdWxkIGJlIGFkZGVkIGhl cmUuICovCj4+ICAgICAgIH07Cj4+ICsKPj4gKyAgICBzdHJ1Y3Qgewo+PiArICAgICAgICBzcGlu bG9ja190IGxvY2s7Cj4+ICsgICAgICAgIC8qCj4+ICsgICAgICAgICAqIGlvcmVxIHNlcnZlciB3 aG8ncyByZXNwb25zaWJsZSBmb3IgdGhlIGVtdWxhdGlvbiBvZgo+PiArICAgICAgICAgKiBnZm5z IHdpdGggc3BlY2lmaWMgcDJtIHR5cGUoZm9yIG5vdywgcDJtX2lvcmVxX3NlcnZlcikuCj4+ICsg ICAgICAgICAqIEJlaGF2aW9ycyBvZiBnZm5zIHdpdGggcDJtX2lvcmVxX3NlcnZlciBzZXQgYnV0 IG5vCj4+ICsgICAgICAgICAqIGlvcmVxIHNlcnZlciBtYXBwZWQgaW4gYWR2YW5jZSBzaG91bGQg YmUgdGhlIHNhbWUgYXMKPj4gKyAgICAgICAgICogcDJtX3JhbV9ydy4KPj4gKyAgICAgICAgICov Cj4+ICsgICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzZXJ2ZXI7Cj4+ICsgICAgICAg IC8qCj4+ICsgICAgICAgICAqIGZsYWdzIHNwZWNpZmllcyB3aGV0aGVyIHJlYWQsIHdyaXRlIG9y IGJvdGggb3BlcmF0aW9ucwo+PiArICAgICAgICAgKiBhcmUgdG8gYmUgZW11bGF0ZWQgYnkgYW4g aW9yZXEgc2VydmVyLgo+PiArICAgICAgICAgKi8KPj4gKyAgICAgICAgdW5zaWduZWQgbG9uZyBm bGFnczsKPgo+IHVuc2lnbmVkIGludAo+Cj4+IC0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0v aHZtX29wLmgKPj4gKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaAo+PiBAQCAt NDg5LDYgKzQ4OSw0MyBAQCBzdHJ1Y3QgeGVuX2h2bV9hbHRwMm1fb3Agewo+PiAgIHR5cGVkZWYg c3RydWN0IHhlbl9odm1fYWx0cDJtX29wIHhlbl9odm1fYWx0cDJtX29wX3Q7Cj4+ICAgREVGSU5F X1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9hbHRwMm1fb3BfdCk7Cj4+Cj4+ICsjaWYgZGVmaW5l ZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCj4KPiBJbnN0ZWFkIG9mIGFkZGlu ZyB5ZXQgYW5vdGhlciBzdWNoIHNlY3Rpb24sIGNvdWxkbid0IHRoaXMgYmUgYWRkZWQKPiB0byBh biBhbHJlYWR5IGV4aXN0aW5nIG9uZT8KPgoKWWVzLgoKPj4gK3N0cnVjdCB4ZW5faHZtX21hcF9t ZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIgewo+PiArICAgIGRvbWlkX3QgZG9taWQ7ICAgICAgLyog SU4gLSBkb21haW4gdG8gYmUgc2VydmljZWQgKi8KPj4gKyAgICBpb3NlcnZpZF90IGlkOyAgICAg IC8qIElOIC0gaW9yZXEgc2VydmVyIGlkICovCj4+ICsgICAgaHZtbWVtX3R5cGVfdCB0eXBlOyAv KiBJTiAtIG1lbW9yeSB0eXBlICovCj4KPiBZb3UgY2FuJ3QgdXNlIHRoaXMgdHlwZSBmb3IgcHVi bGljIGludGVyZmFjZSBzdHJ1Y3R1cmUgZmllbGRzIC0gdGhpcwo+IG11c3QgYmUgdWludFhYX3Qu Cj4KCkdvdCBpdC4KCgpUaGFua3MKWXUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhl bi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==