From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: [PATCH 3/3] Add HVMOP to map guest ram with p2m_ioreq_server to an ioreq server Date: Tue, 22 Mar 2016 17:26:52 +0000 Message-ID: <56F1805C.6060604@citrix.com> References: <1458130960-30109-1-git-send-email-yu.c.zhang@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1458130960-30109-1-git-send-email-yu.c.zhang@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Yu Zhang , xen-devel@lists.xen.org Cc: kevin.tian@intel.com, keir@xen.org, jbeulich@suse.com, george.dunlap@eu.citrix.com, andrew.cooper3@citrix.com, tim@xen.org, Paul.Durrant@citrix.com, zhiyuan.lv@intel.com, jun.nakajima@intel.com List-Id: xen-devel@lists.xenproject.org T24gMTYvMDMvMTYgMTI6MjIsIFl1IFpoYW5nIHdyb3RlOgo+IEEgbmV3IEhWTU9QIC0gSFZNT1Bf bWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlciwgaXMgYWRkZWQgdG8KPiBsZXQgb25lIGlvcmVx IHNlcnZlciBjbGFpbSBpdHMgcmVzcG9uc2liaWxpdHkgZm9yIHRoZSBoYW5kbGluZwo+IG9mIGd1 ZXN0IHBhZ2VzIHdpdGggcDJtIHR5cGUgcDJtX2lvcmVxX3NlcnZlci4gVXNlcnMgb2YgdGhpcwo+ IEhWTU9QIGNhbiBzcGVjaWZ5IHdoZXRoZXIgdGhlIHAybV9pb3JlcV9zZXJ2ZXIgaXMgc3VwcG9z ZWQgdG8KPiBoYW5kbGUgd3JpdGUgYWNjZXNzZXMgb3IgcmVhZCBvbmVzIGluIGEgZmxhZy4gQnkg bm93LCB3ZSBvbmx5Cj4gc3VwcG9ydCBvbmUgaW9yZXEgc2VydmVyIGZvciB0aGlzIHAybSB0eXBl LCBzbyBvbmNlIGFuIGlvcmVxCj4gc2VydmVyIGhhcyBjbGFpbWVkIGl0cyBvd25lcnNoaXAsIGZv bGxvd2luZyBjYWxscyBvZiB0aGUKPiBIVk1PUF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVy IHdpbGwgZmFpbC4KPiAKPiBOb3RlOiB0aGlzIEhWTU9QIGRvZXMgbm90IGNoYW5nZSB0aGUgcDJt IHR5cGUgb2YgYW55IGd1ZXN0IHJhbQo+IHBhZ2UsIHVudGlsIHRoZSBIVk1PUF9zZXRfbWVtX3R5 cGUgaXMgdHJpZ2dlcmVkLiBTbyBub3JtYWxseQo+IHRoZSBzdGVwcyB3b3VsZCBiZSB0aGUgYmFj a2VuZCBkcml2ZXIgZmlyc3QgY2xhaW1zIGl0cyBvd25lcnNoaXAKPiBvZiBndWVzdCByYW0gcGFn ZXMgd2l0aCBwMm1faW9yZXFfc2VydmVyIHR5cGUuIEF0IHRoZW4gc2V0cyB0aGUKPiBtZW1vcnkg dHlwZSB0byBwMm1faW9yZXFfc2VydmVyIGZvciBzcGVjaWZpZWQgZ3Vlc3QgcmFtIHBhZ2VzLgoK WXUsIHRoYW5rcyBmb3IgdGhpcyB3b3JrLiAgSSB0aGluayBpdCdzIGhlYWRpbmcgaW4gdGhlIHJp Z2h0IGRpcmVjdGlvbi4KCkEgY291cGxlIG9mIGNvbW1lbnRzOgoKVGhlcmUncyBub3QgbXVjaCBk b2N1bWVudGF0aW9uIGluIHRoZSBjb2RlIGFib3V0IGhvdyB0aGlzIGlzIGV4cGVjdGVkIHRvCmJl IHVzZWQuCgpGb3IgaW5zdGFuY2UsIGhhdmluZyBzZXBhcmF0ZSBmbGFncyBzZWVtcyB0byBpbXBs eSB0aGF0IHlvdSBjYW4KaW5kZXBlbmRlbnRseSBzZWxlY3QgZWl0aGVyIHJlYWQgaW50ZXJjZXB0 LCB3cml0ZSBpbnRlcmNlcHQsIG9yIGJvdGg7CmJ1dCBbZXB0X11wMm1fdHlwZV90b19mbGFncygp IHNlZW1zIHRvIGFzc3VtZSB0aGF0IFJFQURfQUNDRVNTIGltcGxpZXMKV1JJVEVfQUNDRVNTLiAg RG8geW91IHBsYW4gdG8gaW1wbGVtZW50IHRoZW0gc2VwYXJhdGVseSBpbiB0aGUgZnV0dXJlPwpJ ZiBub3QsIHdvdWxkIGl0IGJlIGJldHRlciB0byBtYWtlIHRoZSBpbnRlcmZhY2UgYW4gZW51bSBp bnN0ZWFkPwoKQXQgdmVyeSBsZWFzdCBpdCBzaG91bGQgYmUgZG9jdW1lbnRlZCB0aGF0IFJFQURf QUNDRVNTIGltcGxpZXMgV1JJVEVfQUNDRVNTLgoKQ2FsbGluZyB0aGUgZnVuY3Rpb24gd2l0aCBu byBmbGFncyBhcHBlYXJzIHRvIG1lYW4sICJEZXRhY2ggdGhlIGlvcmVxCnNlcnZlciBmcm9tIHRo aXMgdHlwZSIgLS0gdGhpcyBzaG91bGQgYWxzbyBiZSBkb2N1bWVudGVkLgoKRnVydGhlcm1vcmUs IHlvdSBhcHBlYXIgdG8gZGVhbCB3aXRoIHAybV9pb3JlcV9zZXJ2ZXIgdHlwZXMgd2hlbiB0aGVy ZQppcyBubyBpb3JlcSBzZXJ2ZXIgYnkgbWFraW5nIHRoZSAiZmxhZ3M9MCIgY2FzZSBSVyBpbgpb ZXB0X11wMm1fdHlwZV90b19mbGFncy4gIFRoaXMgc2hvdWxkIGJlIHNwZWxsZWQgb3V0IHNvbWV3 aGVyZSAocHJvYmFibHkKaW4gdGhlIHAybSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbikuCgpGaW5hbGx5 LCB5b3UgY2FsbCBwMm1fbWVtb3J5X3R5cGVfY2hhbmdlZCgpIHdoZW4gY2hhbmdpbmcgdGhlIGlv cmVxCnNlcnZlcjsgYnV0IHRoaXMgYXBwZWFycyB0byBiZSBvbmx5IGltcGxlbWVudGVkIGZvciBl cHQ7IG1lYW5pbmcgdGhhdCBpZgp5b3UncmUgZWl0aGVyIHJ1bm5pbmcgSEFQIG9uIEFNRCBvciBy dW5uaW5nIGluIHNoYWRvdyBtb2RlLCBpZiB0aGUKY2FsbGVyIGlzbid0IGNhcmVmdWwgKGkuZS4s IGRvZXNuJ3QgcmVtb3ZlIGFsbCBwMm1faW9yZXFfc2VydmVyIHR5cGVzCmJlZm9yZSByZW1vdmlu ZyBpdHNlbGYgYXMgYSBzZXJ2ZXIpLCB0aGV5IG1heSBlbmQgdXAgd2l0aCBib2d1cwpwZXJtaXNz aW9ucyBsZWZ0IG92ZXIgaW4gdGhlIHAybSB0YWJsZS4KCk1heWJlIHlvdSBzaG91bGQgY2hlY2sg Zm9yIHRoZSBleGlzdGVuY2Ugb2YgcDJtLT5tZW1vcnlfdHlwZV9jaGFuZ2VkIGFuZApyZXR1cm4g LUVOT1RTVVBQIG9yIHNvbWV0aGluZyBpZiBpdCdzIG5vdCBwcmVzZW50PwoKTW9yZSBjb21tZW50 cyBpbmxpbmUuLi4KCj4gU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRA Y2l0cml4LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBZdSBaaGFuZyA8eXUuYy56aGFuZ0BsaW51eC5p bnRlbC5jb20+Cgo+IEBAIC0xNjgsMTMgKzIyNiw2NSBAQCBzdGF0aWMgaW50IGh2bWVtdWxfZG9f aW8oCj4gICAgICAgICAgYnJlYWs7Cj4gICAgICBjYXNlIFg4NkVNVUxfVU5IQU5ETEVBQkxFOgo+ ICAgICAgewo+IC0gICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzID0KPiAtICAgICAg ICAgICAgaHZtX3NlbGVjdF9pb3JlcV9zZXJ2ZXIoY3Vyci0+ZG9tYWluLCAmcCk7Cj4gKyAgICAg ICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7Cj4gKyAgICAgICAgcDJtX3R5cGVfdCBwMm10 Owo+ICsKPiArICAgICAgICBpZiAoIGlzX21taW8gKQo+ICsgICAgICAgIHsKPiArICAgICAgICAg ICAgdW5zaWduZWQgbG9uZyBnbWZuID0gcGFkZHJfdG9fcGZuKGFkZHIpOwo+ICsKPiArICAgICAg ICAgICAgKHZvaWQpIGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoY3VycmQsIGdtZm4sICZwMm10KTsK PiArCj4gKyAgICAgICAgICAgIHN3aXRjaCAoIHAybXQgKQo+ICsgICAgICAgICAgICB7Cj4gKyAg ICAgICAgICAgICAgICBjYXNlIHAybV9pb3JlcV9zZXJ2ZXI6Cj4gKyAgICAgICAgICAgICAgICB7 Cj4gKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCj4gKyAgICAg ICAgICAgICAgICAgICAgcDJtX2dldF9pb3JlcV9zZXJ2ZXIoY3VycmQsIHAybXQsICZmbGFncywg JnMpOwo+ICsKPiArICAgICAgICAgICAgICAgICAgICBpZiAoICFzICkKPiArICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgIGlmICggKGRpciA9 PSBJT1JFUV9SRUFEICYmCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIShmbGFncyAmIFAy TV9JT1JFUV9IQU5ETEVfUkVBRF9BQ0NFU1MpKSB8fAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgKGRpciA9PSBJT1JFUV9XUklURSAmJgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICEo ZmxhZ3MgJiBQMk1fSU9SRVFfSEFORExFX1dSSVRFX0FDQ0VTUykpICkKPiArICAgICAgICAgICAg ICAgICAgICAgICAgcyA9IE5VTEw7Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ ICsgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgY2FzZSBwMm1fcmFtX3J3Ogo+ ICsgICAgICAgICAgICAgICAgICAgIHMgPSBOVUxMOwo+ICsgICAgICAgICAgICAgICAgICAgIGJy ZWFrOwo+ICsKPiArICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAgICAgICAgICAg ICAgcyA9IGh2bV9zZWxlY3RfaW9yZXFfc2VydmVyKGN1cnJkLCAmcCk7Cj4gKyAgICAgICAgICAg ICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4gKyAgICAgICAg ZWxzZQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgcDJtdCA9IHAybV9pbnZhbGlkOwo+ICsK PiArICAgICAgICAgICAgcyA9IGh2bV9zZWxlY3RfaW9yZXFfc2VydmVyKGN1cnJkLCAmcCk7Cj4g KyAgICAgICAgfQo+ICAKPiAgICAgICAgICAvKiBJZiB0aGVyZSBpcyBubyBzdWl0YWJsZSBiYWNr aW5nIERNLCBqdXN0IGlnbm9yZSBhY2Nlc3NlcyAqLwo+ICAgICAgICAgIGlmICggIXMgKQo+ICAg ICAgICAgIHsKPiAtICAgICAgICAgICAgcmMgPSBodm1fcHJvY2Vzc19pb19pbnRlcmNlcHQoJm51 bGxfaGFuZGxlciwgJnApOwo+ICsgICAgICAgICAgICBzd2l0Y2ggKCBwMm10ICkKPiArICAgICAg ICAgICAgewo+ICsgICAgICAgICAgICBjYXNlIHAybV9pb3JlcV9zZXJ2ZXI6Cj4gKyAgICAgICAg ICAgIGNhc2UgcDJtX3JhbV9ydzoKPiArICAgICAgICAgICAgICAgIHJjID0gaHZtX3Byb2Nlc3Nf aW9faW50ZXJjZXB0KCZtZW1faGFuZGxlciwgJnApOwo+ICsgICAgICAgICAgICAgICAgYnJlYWs7 Cj4gKwo+ICsgICAgICAgICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAgICAgICAgcmMgPSBodm1f cHJvY2Vzc19pb19pbnRlcmNlcHQoJm51bGxfaGFuZGxlciwgJnApOwo+ICsgICAgICAgICAgICAg ICAgYnJlYWs7Cj4gKyAgICAgICAgICAgIH0KCklzIGl0IGFjdHVhbGx5IHBvc3NpYmxlIHRvIGdl dCBoZXJlIHdpdGggImlzX21taW8iIHRydWUgYW5kIHAybXQgPT0KcDJtX3JhbV9ydz8KCklmIHNv LCBpdCB3b3VsZCBhcHBlYXIgdGhhdCB0aGlzIGNoYW5nZXMgdGhlIGhhbmRsaW5nIGluIHRoYXQg Y2FzZS4KQmVmb3JlIHRoaXMgcGF0Y2gsIG9uIHAybV9yYW1fcncsIHlvdSdkIGNhbGwgaHZtX3Nl bGVjdF9pb3JlcV9zZXJ2ZXIoKSwKd2hpY2ggd291bGQgZWl0aGVyIGdpdmUgeW91IGEgc2VydmVy IChwZXJoYXBzIHRoZSBkZWZhdWx0IG9uZSksIG9yIHlvdSdkCmJlIGNhbGxlZCB3aXRoIG51bGxf aGFuZGxlci4KCkFmdGVyIHRoaXMgcGF0Y2gsIG9uIHAybV9yYW1fcncsIHlvdSdsbCBhbHdheXMg YmUgY2FsbGVkIHdpdGggbWVtX2hhbmRsZXIuCgpJZiB0aGlzIGlzIGFuIGludGVudGlvbmFsIGNo YW5nZSwgeW91IG5lZWQgdG8gZXhwbGFuIHdoeSBpbiB0aGUKY2hhbmdlbG9nIChhbmQgcHJvYmFi bHkgYWxzbyBhIGNvbW1lbnQgaGVyZSkuCgo+IEBAIC0xNDExLDYgKzE0MTMsNTUgQEAgc3RhdGlj IGludCBodm1fdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAq ZCwgaW9zZXJ2aWRfdCBpZCwKPiAgICAgIHJldHVybiByYzsKPiAgfQo+ICAKPiArc3RhdGljIGlu dCBodm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvc2VydmlkX3QgaWQs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHZtbWVtX3R5 cGVfdCB0eXBlLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90IGZsYWdzKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsK PiArICAgIHAybV90eXBlX3QgcDJtdDsKPiArICAgIGludCByYzsKPiArCj4gKyAgICBzd2l0Y2gg KCB0eXBlICkKPiArICAgIHsKPiArICAgIGNhc2UgSFZNTUVNX2lvcmVxX3NlcnZlcjoKPiArICAg ICAgICBwMm10ID0gcDJtX2lvcmVxX3NlcnZlcjsKPiArICAgICAgICBicmVhazsKPiArCj4gKyAg ICBkZWZhdWx0Ogo+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsgICAgfQo+ICsKPiArICAg IGlmICggZmxhZ3MgJiB+KEhWTU9QX0lPUkVRX01FTV9BQ0NFU1NfUkVBRCB8Cj4gKyAgICAgICAg ICAgICAgICAgICBIVk1PUF9JT1JFUV9NRU1fQUNDRVNTX1dSSVRFKSApCj4gKyAgICAgICAgcmV0 dXJuIC1FSU5WQUw7Cj4gKwo+ICsgICAgc3Bpbl9sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4uaW9y ZXFfc2VydmVyLmxvY2spOwo+ICsKPiArICAgIHJjID0gLUVOT0VOVDsKPiArICAgIGxpc3RfZm9y X2VhY2hfZW50cnkgKCBzLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICZkLT5hcmNoLmh2 bV9kb21haW4uaW9yZXFfc2VydmVyLmxpc3QsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg bGlzdF9lbnRyeSApCj4gKyAgICB7Cj4gKyAgICAgICAgaWYgKCBzID09IGQtPmFyY2guaHZtX2Rv bWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciApCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsK PiArICAgICAgICBpZiAoIHMtPmlkID09IGlkICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAg IHJjID0gcDJtX3NldF9pb3JlcV9zZXJ2ZXIoZCwgcDJtdCwgZmxhZ3MsIHMpOwo+ICsgICAgICAg ICAgICBpZiAoIHJjICkKPiArICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsKPiArICAgICAgICAg ICAgZ2RwcmludGsoWEVOTE9HX0RFQlVHLCAiJXUgY2xhaW1lZCB0eXBlIHAybV9pb3JlcV9zZXJ2 ZXJcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgIHMtPmlkKTsKCkRvbid0IHdlIHdhbnQgdG8g YnJlYWsgb3V0IG9mIHRoZSBsb29wIGlmIHAybV9zZXRfaW9yZXFfc2VydmVyKCkKc3VjY2VlZHMg YXMgd2VsbD8gIE9yIGRvIHdlIHJlYWxseSB3YW50IHRvIGdvIGNoZWNrIGFsbCB0aGUgb3RoZXIg aW9yZXEKc2VydmVycyB0byBzZWUgaWYgdGhlaXIgSUQgbWF0Y2hlcyB0b28/IDotKQoKPiBkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0t ZXB0LmMKPiBpbmRleCAzODBlYzI1Li4yMWUwNGNlIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4 Ni9tbS9wMm0tZXB0LmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCj4gQEAgLTEz Miw2ICsxMzIsMTQgQEAgc3RhdGljIHZvaWQgZXB0X3AybV90eXBlX3RvX2ZsYWdzKHN0cnVjdCBw Mm1fZG9tYWluICpwMm0sIGVwdF9lbnRyeV90ICplbnRyeSwKPiAgICAgICAgICAgICAgZW50cnkt PnIgPSBlbnRyeS0+dyA9IGVudHJ5LT54ID0gMTsKPiAgICAgICAgICAgICAgZW50cnktPmEgPSBl bnRyeS0+ZCA9ICEhY3B1X2hhc192bXhfZXB0X2FkOwo+ICAgICAgICAgICAgICBicmVhazsKPiAr ICAgICAgICBjYXNlIHAybV9pb3JlcV9zZXJ2ZXI6Cj4gKyAgICAgICAgICAgIGVudHJ5LT5yID0g IShwMm0tPmlvcmVxLmZsYWdzICYgUDJNX0lPUkVRX0hBTkRMRV9SRUFEX0FDQ0VTUyk7Cj4gKyAg ICAgICAgICAgIGVudHJ5LT53ID0gKGVudHJ5LT5yICYKPiArICAgICAgICAgICAgICAgICAgICAg ICAgIShwMm0tPmlvcmVxLmZsYWdzICYgUDJNX0lPUkVRX0hBTkRMRV9XUklURV9BQ0NFU1MpKTsK PiArICAgICAgICAgICAgZW50cnktPnggPSBlbnRyeS0+cjsKPiArICAgICAgICAgICAgZW50cnkt PmEgPSAhIWNwdV9oYXNfdm14X2VwdF9hZDsKPiArICAgICAgICAgICAgZW50cnktPmQgPSAwOwo+ ICsgICAgICAgICAgICBicmVhazsKCkluIGxpbmUgd2l0aCB0aGUgb3RoZXIgdHlwZXMsIHdvdWxk IGl0IG1ha2Ugc2Vuc2UgZm9yIGVudHJ5LT5kIGhlcmUgdG8KYmUgZW50cnktPncgJiYgY3B1X2hh c192bXhfZXB0X2FkPwoKCj4gQEAgLTI4OSw2ICsyOTEsODMgQEAgdm9pZCBwMm1fbWVtb3J5X3R5 cGVfY2hhbmdlZChzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgfQo+ICB9Cj4gIAo+ICtpbnQgcDJt X3NldF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgcDJtX3R5cGVfdCB0LAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncywKPiArICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQo+ICt7Cj4gKyAgICBzdHJ1 Y3QgcDJtX2RvbWFpbiAqcDJtID0gcDJtX2dldF9ob3N0cDJtKGQpOwo+ICsgICAgaW50IHJjOwo+ ICsKPiArICAgIHNwaW5fbG9jaygmcDJtLT5pb3JlcS5sb2NrKTsKPiArCj4gKyAgICByYyA9IC1F SU5WQUw7Cj4gKyAgICBpZiAoIHQgIT0gcDJtX2lvcmVxX3NlcnZlciApCj4gKyAgICAgICAgZ290 byBvdXQ7CgpTaW5jZSB0aGVzZSBhcmUgYWxsIGludGVybmFsIGludGVyZmFjZXMsIEknbSBub3Qg c3VyZSB3aGF0IHRoZSBwb2ludCBpcwpvZiBwYXNzaW5nIHRoaXMgdHlwZSBpbiB3aGVuIHdlIG9u bHkgYWNjZXB0IG9uZSB0eXBlIGFueXdheS4gIElmIHdlJ3JlCmdvaW5nIHRvIGhhdmUgYSB0eXBl IGluIHRoZSBpbnRlcmZhY2UgYnV0IG9ubHkgYWNjZXB0IG9uZSB0eXBlLCB3ZQpzaG91bGQganVz dCBjaGVjayBpdCBhdCB0aGUgdG9wIGxldmVsIGFuZCBhc3N1bWUgcDJtX2lvcmVxX3NlcnZlciBh bGwKdGhlIHdheSB0aHJvdWdoICh1bnRpbCBzdWNoIHRpbWUgYXMgd2UgYWNjZXB0IGEgc2Vjb25k IHR5cGUpLgoKPiArCj4gKyAgICByYyA9IC1FQlVTWTsKPiArICAgIGlmICggKCBwMm0tPmlvcmVx LnNlcnZlciAhPSBOVUxMICkgJiYgKGZsYWdzICE9IDApICkKPiArICAgICAgICBnb3RvIG91dDsK PiArCj4gKyAgICBpZiAoIGZsYWdzID09IDAgKQo+ICsgICAgewo+ICsgICAgICAgIHAybS0+aW9y ZXEuc2VydmVyID0gTlVMTDsKPiArICAgICAgICBwMm0tPmlvcmVxLmZsYWdzID0gMDsKPiArICAg IH0KPiArICAgIGVsc2UKPiArICAgIHsKPiArICAgICAgICBwMm0tPmlvcmVxLnNlcnZlciA9IHM7 Cj4gKyAgICAgICAgcDJtLT5pb3JlcS5mbGFncyA9IGZsYWdzOwo+ICsgICAgfQoKSSB0aGluayBp dCB3b3VsZCBiZSBhIGJpdCBtb3JlIHJvYnVzdCB0bwoKMSkgUmVxdWlyZSBjYWxsZXJzIHRvIGFs d2F5cyBzcGVjaWZ5ICh0aGVpciBvd24pIHNlcnZlciBJRCB3aGVuIG1ha2luZwp0aGlzIGNhbGws IGV2ZW4gaWYgdGhleSdyZSB1bi1jbGFpbWluZyB0aGUgcDJtIHR5cGUKCjIpIFdoZW4gdW4tY2xh aW1pbmcsIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBzZXJ2ZXIgaWQgb2YgdGhlIGNhbGxl cgptYXRjaGVzIHRoZSBzZXJ2ZXIgaWQgdGhhdCdzIGJlaW5nIGRldGFjaGVkLgoKPiArCj4gKyAg ICBwMm1fbWVtb3J5X3R5cGVfY2hhbmdlZChkKTsKPiArCj4gKyAgICByYyA9IDA7Cj4gKwo+ICtv dXQ6Cj4gKyAgICBzcGluX3VubG9jaygmcDJtLT5pb3JlcS5sb2NrKTsKPiArCj4gKyAgICByZXR1 cm4gcmM7Cj4gK30KPiArCj4gK3ZvaWQgcDJtX2dldF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFp biAqZCwgcDJtX3R5cGVfdCB0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgKmZsYWdzLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBodm1faW9y ZXFfc2VydmVyICoqcykKPiArewo+ICsgICAgc3RydWN0IHAybV9kb21haW4gKnAybSA9IHAybV9n ZXRfaG9zdHAybShkKTsKPiArCj4gKyAgICBpZiAoIHQgIT0gcDJtX2lvcmVxX3NlcnZlciApCj4g KyAgICB7Cj4gKyAgICAgICAgKnMgPSBOVUxMOwo+ICsgICAgICAgICpmbGFncyA9IDA7Cj4gKyAg ICAgICAgcmV0dXJuOwo+ICsgICAgfQo+ICsKPiArICAgIHNwaW5fbG9jaygmcDJtLT5pb3JlcS5s b2NrKTsKPiArCj4gKyAgICAqcyA9IHAybS0+aW9yZXEuc2VydmVyOwo+ICsgICAgKmZsYWdzID0g cDJtLT5pb3JlcS5mbGFnczsKPiArCj4gKyAgICBzcGluX3VubG9jaygmcDJtLT5pb3JlcS5sb2Nr KTsKPiArfQo+ICsKPiArdm9pZCBwMm1fZGVzdHJveV9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFp biAqZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9z ZXJ2ZXIgKnMpCj4gK3sKPiArICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0gPSBwMm1fZ2V0X2hv c3RwMm0oZCk7Cj4gKwo+ICsgICAgc3Bpbl9sb2NrKCZwMm0tPmlvcmVxLmxvY2spOwo+ICsKPiAr ICAgIGlmICggcDJtLT5pb3JlcS5zZXJ2ZXIgPT0gcyApCj4gKyAgICB7Cj4gKyAgICAgICAgcDJt LT5pb3JlcS5zZXJ2ZXIgPSBOVUxMOwo+ICsgICAgICAgIHAybS0+aW9yZXEuZmxhZ3MgPSAwOwo+ ICsgICAgfQo+ICsKPiArICAgIHAybV9tZW1vcnlfdHlwZV9jaGFuZ2VkKGQpOwoKRG8gd2UgcmVh bGx5IHdhbnQgdG8gY2FsbCB0aGlzIHVuY29uZGl0aW9uYWxseSwgZXZlbiBpZiB0aGUgc2VydmVy IGJlaW5nCmRlc3Ryb3llZCBoZXJlIGlzbid0IHRoZSBzZXJ2ZXIgYXNzb2NpYXRlZCB3aXRoIHAy bV9pb3JlcV9zZXJ2ZXI/ICBJdApzaG91bGRuJ3QgaGF2ZSBhIGZ1bmN0aW9uYWwgaW1wYWN0LCBi dXQgaXQgd2lsbCBzbG93IHRoaW5ncyBkb3duIGFzIHRoZQplcHQgdGFibGVzIGFyZSB1bm5lY2Vz c2FyaWx5IHJlYnVpbHQuCgo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2 bV9vcC5oIGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaAo+IGluZGV4IGExZWFlNTIu LmU3ZmM3NWQgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaAo+ ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vaHZtX29wLmgKPiBAQCAtNDg5LDYgKzQ4OSwz MCBAQCBzdHJ1Y3QgeGVuX2h2bV9hbHRwMm1fb3Agewo+ICB0eXBlZGVmIHN0cnVjdCB4ZW5faHZt X2FsdHAybV9vcCB4ZW5faHZtX2FsdHAybV9vcF90Owo+ICBERUZJTkVfWEVOX0dVRVNUX0hBTkRM RSh4ZW5faHZtX2FsdHAybV9vcF90KTsKPiAgCj4gKyNpZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRl ZmluZWQoX19YRU5fVE9PTFNfXykKPiArCj4gKyNkZWZpbmUgSFZNT1BfbWFwX21lbV90eXBlX3Rv X2lvcmVxX3NlcnZlciAyNgo+ICtzdHJ1Y3QgeGVuX2h2bV9tYXBfbWVtX3R5cGVfdG9faW9yZXFf c2VydmVyIHsKPiArICAgIGRvbWlkX3QgZG9taWQ7ICAgICAgLyogSU4gLSBkb21haW4gdG8gYmUg c2VydmljZWQgKi8KPiArICAgIGlvc2VydmlkX3QgaWQ7ICAgICAgLyogSU4gLSBzZXJ2ZXIgaWQg Ki8KPiArICAgIGh2bW1lbV90eXBlX3QgdHlwZTsgLyogSU4gLSBtZW1vcnkgdHlwZSAqLwoKV2hh dCBpcyB0aGlzICd0eXBlJyBmb3I/ICBEbyB5b3UgZXhwZWN0IHRvIG1hcCBvdGhlciB0eXBlcyBv ZiBtZW1vcnkKdGhpcyB3YXkgaW4gdGhlIGZ1dHVyZT8KCiAtR2VvcmdlCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=