From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant 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:51:12 +0000 Message-ID: References: <1458130960-30109-1-git-send-email-yu.c.zhang@linux.intel.com> <56F1805C.6060604@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <56F1805C.6060604@citrix.com> Content-Language: en-US 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 , "Keir (Xen.org)" , "jbeulich@suse.com" , Andrew Cooper , "Tim (Xen.org)" , George Dunlap , "zhiyuan.lv@intel.com" , "jun.nakajima@intel.com" List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEdlb3JnZSBEdW5sYXAgW21haWx0 bzpnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb21dCj4gU2VudDogMjIgTWFyY2ggMjAxNiAxNzoyNwo+ IFRvOiBZdSBaaGFuZzsgeGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKPiBDYzogS2VpciAoWGVuLm9y Zyk7IGpiZXVsaWNoQHN1c2UuY29tOyBBbmRyZXcgQ29vcGVyOyBHZW9yZ2UgRHVubGFwOwo+IGp1 bi5uYWthamltYUBpbnRlbC5jb207IEtldmluIFRpYW47IFRpbSAoWGVuLm9yZyk7IFBhdWwgRHVy cmFudDsKPiB6aGl5dWFuLmx2QGludGVsLmNvbQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMy8zXSBB ZGQgSFZNT1AgdG8gbWFwIGd1ZXN0IHJhbSB3aXRoCj4gcDJtX2lvcmVxX3NlcnZlciB0byBhbiBp b3JlcSBzZXJ2ZXIKPiAKPiBPbiAxNi8wMy8xNiAxMjoyMiwgWXUgWmhhbmcgd3JvdGU6Cj4gPiBB IG5ldyBIVk1PUCAtIEhWTU9QX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIsIGlzIGFkZGVk IHRvCj4gPiBsZXQgb25lIGlvcmVxIHNlcnZlciBjbGFpbSBpdHMgcmVzcG9uc2liaWxpdHkgZm9y IHRoZSBoYW5kbGluZwo+ID4gb2YgZ3Vlc3QgcGFnZXMgd2l0aCBwMm0gdHlwZSBwMm1faW9yZXFf c2VydmVyLiBVc2VycyBvZiB0aGlzCj4gPiBIVk1PUCBjYW4gc3BlY2lmeSB3aGV0aGVyIHRoZSBw Mm1faW9yZXFfc2VydmVyIGlzIHN1cHBvc2VkIHRvCj4gPiBoYW5kbGUgd3JpdGUgYWNjZXNzZXMg b3IgcmVhZCBvbmVzIGluIGEgZmxhZy4gQnkgbm93LCB3ZSBvbmx5Cj4gPiBzdXBwb3J0IG9uZSBp b3JlcSBzZXJ2ZXIgZm9yIHRoaXMgcDJtIHR5cGUsIHNvIG9uY2UgYW4gaW9yZXEKPiA+IHNlcnZl ciBoYXMgY2xhaW1lZCBpdHMgb3duZXJzaGlwLCBmb2xsb3dpbmcgY2FsbHMgb2YgdGhlCj4gPiBI Vk1PUF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyIHdpbGwgZmFpbC4KPiA+Cj4gPiBOb3Rl OiB0aGlzIEhWTU9QIGRvZXMgbm90IGNoYW5nZSB0aGUgcDJtIHR5cGUgb2YgYW55IGd1ZXN0IHJh bQo+ID4gcGFnZSwgdW50aWwgdGhlIEhWTU9QX3NldF9tZW1fdHlwZSBpcyB0cmlnZ2VyZWQuIFNv IG5vcm1hbGx5Cj4gPiB0aGUgc3RlcHMgd291bGQgYmUgdGhlIGJhY2tlbmQgZHJpdmVyIGZpcnN0 IGNsYWltcyBpdHMgb3duZXJzaGlwCj4gPiBvZiBndWVzdCByYW0gcGFnZXMgd2l0aCBwMm1faW9y ZXFfc2VydmVyIHR5cGUuIEF0IHRoZW4gc2V0cyB0aGUKPiA+IG1lbW9yeSB0eXBlIHRvIHAybV9p b3JlcV9zZXJ2ZXIgZm9yIHNwZWNpZmllZCBndWVzdCByYW0gcGFnZXMuCj4gCj4gWXUsIHRoYW5r cyBmb3IgdGhpcyB3b3JrLiAgSSB0aGluayBpdCdzIGhlYWRpbmcgaW4gdGhlIHJpZ2h0IGRpcmVj dGlvbi4KPiAKPiBBIGNvdXBsZSBvZiBjb21tZW50czoKPiAKPiBUaGVyZSdzIG5vdCBtdWNoIGRv Y3VtZW50YXRpb24gaW4gdGhlIGNvZGUgYWJvdXQgaG93IHRoaXMgaXMgZXhwZWN0ZWQgdG8KPiBi ZSB1c2VkLgo+IAo+IEZvciBpbnN0YW5jZSwgaGF2aW5nIHNlcGFyYXRlIGZsYWdzIHNlZW1zIHRv IGltcGx5IHRoYXQgeW91IGNhbgo+IGluZGVwZW5kZW50bHkgc2VsZWN0IGVpdGhlciByZWFkIGlu dGVyY2VwdCwgd3JpdGUgaW50ZXJjZXB0LCBvciBib3RoOwo+IGJ1dCBbZXB0X11wMm1fdHlwZV90 b19mbGFncygpIHNlZW1zIHRvIGFzc3VtZSB0aGF0IFJFQURfQUNDRVNTIGltcGxpZXMKPiBXUklU RV9BQ0NFU1MuICBEbyB5b3UgcGxhbiB0byBpbXBsZW1lbnQgdGhlbSBzZXBhcmF0ZWx5IGluIHRo ZSBmdXR1cmU/Cj4gSWYgbm90LCB3b3VsZCBpdCBiZSBiZXR0ZXIgdG8gbWFrZSB0aGUgaW50ZXJm YWNlIGFuIGVudW0gaW5zdGVhZD8KPiAKPiBBdCB2ZXJ5IGxlYXN0IGl0IHNob3VsZCBiZSBkb2N1 bWVudGVkIHRoYXQgUkVBRF9BQ0NFU1MgaW1wbGllcwo+IFdSSVRFX0FDQ0VTUy4KClRoYXQncyBu b3QgdHJ1ZS4gSWYgV1JJVEVfQUNDRVNTIGhhcyBub3QgYmVlbiByZXF1ZXN0ZWQgdGhlbiB3cml0 ZXMgYXJlIGhhbmRsZWQgZGlyZWN0bHkgaW4gWGVuIHJhdGhlciB0aGFuIGJlaW5nIGZvcndhcmRl ZCB0byB0aGUgaW9yZXEgc2VydmVyLiBJZiBoL3cgd2VyZSB0byBhbGxvdyBwYWdlcyB0byBiZSBt YXJrZWQgd3JpdGUtb25seSB0aGVuIHdlIHdvdWxkbid0IG5lZWQgdG8gZG8gdGhhdC4KCj4gCj4g Q2FsbGluZyB0aGUgZnVuY3Rpb24gd2l0aCBubyBmbGFncyBhcHBlYXJzIHRvIG1lYW4sICJEZXRh Y2ggdGhlIGlvcmVxCj4gc2VydmVyIGZyb20gdGhpcyB0eXBlIiAtLSB0aGlzIHNob3VsZCBhbHNv IGJlIGRvY3VtZW50ZWQuCj4gCgpUaGF0IHdhcyBkb2N1bWVudGVkIGluIHRoZSBkZXNpZ24sIGJ1 dCBpdCdzIHRydWUgdGhhdCBpdCBkb2VzIG5lZWQgdG8gcHVsbGVkIGludG8gY29tbWVudHMuCgo+ IEZ1cnRoZXJtb3JlLCB5b3UgYXBwZWFyIHRvIGRlYWwgd2l0aCBwMm1faW9yZXFfc2VydmVyIHR5 cGVzIHdoZW4gdGhlcmUKPiBpcyBubyBpb3JlcSBzZXJ2ZXIgYnkgbWFraW5nIHRoZSAiZmxhZ3M9 MCIgY2FzZSBSVyBpbgo+IFtlcHRfXXAybV90eXBlX3RvX2ZsYWdzLiAgVGhpcyBzaG91bGQgYmUg c3BlbGxlZCBvdXQgc29tZXdoZXJlIChwcm9iYWJseQo+IGluIHRoZSBwMm0gc3RydWN0dXJlIGRl ZmluaXRpb24pLgo+IAo+IEZpbmFsbHksIHlvdSBjYWxsIHAybV9tZW1vcnlfdHlwZV9jaGFuZ2Vk KCkgd2hlbiBjaGFuZ2luZyB0aGUgaW9yZXEKPiBzZXJ2ZXI7IGJ1dCB0aGlzIGFwcGVhcnMgdG8g YmUgb25seSBpbXBsZW1lbnRlZCBmb3IgZXB0OyBtZWFuaW5nIHRoYXQgaWYKPiB5b3UncmUgZWl0 aGVyIHJ1bm5pbmcgSEFQIG9uIEFNRCBvciBydW5uaW5nIGluIHNoYWRvdyBtb2RlLCBpZiB0aGUK PiBjYWxsZXIgaXNuJ3QgY2FyZWZ1bCAoaS5lLiwgZG9lc24ndCByZW1vdmUgYWxsIHAybV9pb3Jl cV9zZXJ2ZXIgdHlwZXMKPiBiZWZvcmUgcmVtb3ZpbmcgaXRzZWxmIGFzIGEgc2VydmVyKSwgdGhl eSBtYXkgZW5kIHVwIHdpdGggYm9ndXMKPiBwZXJtaXNzaW9ucyBsZWZ0IG92ZXIgaW4gdGhlIHAy bSB0YWJsZS4KPiAKPiBNYXliZSB5b3Ugc2hvdWxkIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9m IHAybS0+bWVtb3J5X3R5cGVfY2hhbmdlZAo+IGFuZAo+IHJldHVybiAtRU5PVFNVUFAgb3Igc29t ZXRoaW5nIGlmIGl0J3Mgbm90IHByZXNlbnQ/Cj4gCj4gTW9yZSBjb21tZW50cyBpbmxpbmUuLi4K PiAKPiA+IFNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5j b20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBZdSBaaGFuZyA8eXUuYy56aGFuZ0BsaW51eC5pbnRlbC5j b20+Cj4gCj4gPiBAQCAtMTY4LDEzICsyMjYsNjUgQEAgc3RhdGljIGludCBodm1lbXVsX2RvX2lv KAo+ID4gICAgICAgICAgYnJlYWs7Cj4gPiAgICAgIGNhc2UgWDg2RU1VTF9VTkhBTkRMRUFCTEU6 Cj4gPiAgICAgIHsKPiA+IC0gICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzID0KPiA+ IC0gICAgICAgICAgICBodm1fc2VsZWN0X2lvcmVxX3NlcnZlcihjdXJyLT5kb21haW4sICZwKTsK PiA+ICsgICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOwo+ID4gKyAgICAgICAgcDJt X3R5cGVfdCBwMm10Owo+ID4gKwo+ID4gKyAgICAgICAgaWYgKCBpc19tbWlvICkKPiA+ICsgICAg ICAgIHsKPiA+ICsgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdtZm4gPSBwYWRkcl90b19wZm4o YWRkcik7Cj4gPiArCj4gPiArICAgICAgICAgICAgKHZvaWQpIGdldF9nZm5fcXVlcnlfdW5sb2Nr ZWQoY3VycmQsIGdtZm4sICZwMm10KTsKPiA+ICsKPiA+ICsgICAgICAgICAgICBzd2l0Y2ggKCBw Mm10ICkKPiA+ICsgICAgICAgICAgICB7Cj4gPiArICAgICAgICAgICAgICAgIGNhc2UgcDJtX2lv cmVxX3NlcnZlcjoKPiA+ICsgICAgICAgICAgICAgICAgewo+ID4gKyAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICAgICAgIHAy bV9nZXRfaW9yZXFfc2VydmVyKGN1cnJkLCBwMm10LCAmZmxhZ3MsICZzKTsKPiA+ICsKPiA+ICsg ICAgICAgICAgICAgICAgICAgIGlmICggIXMgKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IGJyZWFrOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgKCAoZGlyID09IElPUkVR X1JFQUQgJiYKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICEoZmxhZ3MgJiBQMk1fSU9S RVFfSEFORExFX1JFQURfQUNDRVNTKSkgfHwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg KGRpciA9PSBJT1JFUV9XUklURSAmJgo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIShm bGFncyAmIFAyTV9JT1JFUV9IQU5ETEVfV1JJVEVfQUNDRVNTKSkgKQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIHMgPSBOVUxMOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgICAgICAgYnJl YWs7Cj4gPiArICAgICAgICAgICAgICAgIH0KPiA+ICsgICAgICAgICAgICAgICAgY2FzZSBwMm1f cmFtX3J3Ogo+ID4gKyAgICAgICAgICAgICAgICAgICAgcyA9IE5VTEw7Cj4gPiArICAgICAgICAg ICAgICAgICAgICBicmVhazsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICAgZGVmYXVsdDoKPiA+ ICsgICAgICAgICAgICAgICAgICAgIHMgPSBodm1fc2VsZWN0X2lvcmVxX3NlcnZlcihjdXJyZCwg JnApOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiArICAgICAgICAgICAgfQo+ ID4gKyAgICAgICAgfQo+ID4gKyAgICAgICAgZWxzZQo+ID4gKyAgICAgICAgewo+ID4gKyAgICAg ICAgICAgIHAybXQgPSBwMm1faW52YWxpZDsKPiA+ICsKPiA+ICsgICAgICAgICAgICBzID0gaHZt X3NlbGVjdF9pb3JlcV9zZXJ2ZXIoY3VycmQsICZwKTsKPiA+ICsgICAgICAgIH0KPiA+Cj4gPiAg ICAgICAgICAvKiBJZiB0aGVyZSBpcyBubyBzdWl0YWJsZSBiYWNraW5nIERNLCBqdXN0IGlnbm9y ZSBhY2Nlc3NlcyAqLwo+ID4gICAgICAgICAgaWYgKCAhcyApCj4gPiAgICAgICAgICB7Cj4gPiAt ICAgICAgICAgICAgcmMgPSBodm1fcHJvY2Vzc19pb19pbnRlcmNlcHQoJm51bGxfaGFuZGxlciwg JnApOwo+ID4gKyAgICAgICAgICAgIHN3aXRjaCAoIHAybXQgKQo+ID4gKyAgICAgICAgICAgIHsK PiA+ICsgICAgICAgICAgICBjYXNlIHAybV9pb3JlcV9zZXJ2ZXI6Cj4gPiArICAgICAgICAgICAg Y2FzZSBwMm1fcmFtX3J3Ogo+ID4gKyAgICAgICAgICAgICAgICByYyA9IGh2bV9wcm9jZXNzX2lv X2ludGVyY2VwdCgmbWVtX2hhbmRsZXIsICZwKTsKPiA+ICsgICAgICAgICAgICAgICAgYnJlYWs7 Cj4gPiArCj4gPiArICAgICAgICAgICAgZGVmYXVsdDoKPiA+ICsgICAgICAgICAgICAgICAgcmMg PSBodm1fcHJvY2Vzc19pb19pbnRlcmNlcHQoJm51bGxfaGFuZGxlciwgJnApOwo+ID4gKyAgICAg ICAgICAgICAgICBicmVhazsKPiA+ICsgICAgICAgICAgICB9Cj4gCj4gSXMgaXQgYWN0dWFsbHkg cG9zc2libGUgdG8gZ2V0IGhlcmUgd2l0aCAiaXNfbW1pbyIgdHJ1ZSBhbmQgcDJtdCA9PQo+IHAy bV9yYW1fcnc/CgpJIHRoaW5rIHRoYXQncyBwb3NzaWJsZSBpZiB0aGUgdHlwZSBjaGFuZ2UgcmFj ZXMgd2l0aCBhbiBhY2Nlc3MuCgo+IAo+IElmIHNvLCBpdCB3b3VsZCBhcHBlYXIgdGhhdCB0aGlz IGNoYW5nZXMgdGhlIGhhbmRsaW5nIGluIHRoYXQgY2FzZS4KPiBCZWZvcmUgdGhpcyBwYXRjaCwg b24gcDJtX3JhbV9ydywgeW91J2QgY2FsbCBodm1fc2VsZWN0X2lvcmVxX3NlcnZlcigpLAo+IHdo aWNoIHdvdWxkIGVpdGhlciBnaXZlIHlvdSBhIHNlcnZlciAocGVyaGFwcyB0aGUgZGVmYXVsdCBv bmUpLCBvciB5b3UnZAo+IGJlIGNhbGxlZCB3aXRoIG51bGxfaGFuZGxlci4KPiAKPiBBZnRlciB0 aGlzIHBhdGNoLCBvbiBwMm1fcmFtX3J3LCB5b3UnbGwgYWx3YXlzIGJlIGNhbGxlZCB3aXRoIG1l bV9oYW5kbGVyLgo+IAo+IElmIHRoaXMgaXMgYW4gaW50ZW50aW9uYWwgY2hhbmdlLCB5b3UgbmVl ZCB0byBleHBsYW4gd2h5IGluIHRoZQo+IGNoYW5nZWxvZyAoYW5kIHByb2JhYmx5IGFsc28gYSBj b21tZW50IGhlcmUpLgo+IAoKVGhhdCBpcyBhbiBpbnRlbnRpb25hbCBjaGFuZ2UuCgo+ID4gQEAg LTE0MTEsNiArMTQxMyw1NSBAQCBzdGF0aWMgaW50Cj4gaHZtX3VubWFwX2lvX3JhbmdlX2Zyb21f aW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCj4gPiAgICAgIHJl dHVybiByYzsKPiA+ICB9Cj4gPgo+ID4gK3N0YXRpYyBpbnQgaHZtX21hcF9tZW1fdHlwZV90b19p b3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlvc2VydmlkX3QgaWQsCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodm1tZW1fdHlwZV90IHR5cGUsCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncykK PiA+ICt7Cj4gPiArICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOwo+ID4gKyAgICBwMm1f dHlwZV90IHAybXQ7Cj4gPiArICAgIGludCByYzsKPiA+ICsKPiA+ICsgICAgc3dpdGNoICggdHlw ZSApCj4gPiArICAgIHsKPiA+ICsgICAgY2FzZSBIVk1NRU1faW9yZXFfc2VydmVyOgo+ID4gKyAg ICAgICAgcDJtdCA9IHAybV9pb3JlcV9zZXJ2ZXI7Cj4gPiArICAgICAgICBicmVhazsKPiA+ICsK PiA+ICsgICAgZGVmYXVsdDoKPiA+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gKyAgICB9 Cj4gPiArCj4gPiArICAgIGlmICggZmxhZ3MgJiB+KEhWTU9QX0lPUkVRX01FTV9BQ0NFU1NfUkVB RCB8Cj4gPiArICAgICAgICAgICAgICAgICAgIEhWTU9QX0lPUkVRX01FTV9BQ0NFU1NfV1JJVEUp ICkKPiA+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gKwo+ID4gKyAgICBzcGluX2xvY2so JmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7Cj4gPiArCj4gPiArICAgIHJj ID0gLUVOT0VOVDsKPiA+ICsgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0 LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCj4gPiArICAgIHsK PiA+ICsgICAgICAgIGlmICggcyA9PSBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9z ZXJ2ZXIgKQo+ID4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gKwo+ID4gKyAgICAgICAgaWYg KCBzLT5pZCA9PSBpZCApCj4gPiArICAgICAgICB7Cj4gPiArICAgICAgICAgICAgcmMgPSBwMm1f c2V0X2lvcmVxX3NlcnZlcihkLCBwMm10LCBmbGFncywgcyk7Cj4gPiArICAgICAgICAgICAgaWYg KCByYyApCj4gPiArICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gKwo+ID4gKyAgICAgICAgICAg IGdkcHJpbnRrKFhFTkxPR19ERUJVRywgIiV1IGNsYWltZWQgdHlwZSBwMm1faW9yZXFfc2VydmVy XG4iLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHMtPmlkKTsKPiAKPiBEb24ndCB3ZSB3YW50 IHRvIGJyZWFrIG91dCBvZiB0aGUgbG9vcCBpZiBwMm1fc2V0X2lvcmVxX3NlcnZlcigpCj4gc3Vj Y2VlZHMgYXMgd2VsbD8gIE9yIGRvIHdlIHJlYWxseSB3YW50IHRvIGdvIGNoZWNrIGFsbCB0aGUg b3RoZXIgaW9yZXEKPiBzZXJ2ZXJzIHRvIHNlZSBpZiB0aGVpciBJRCBtYXRjaGVzIHRvbz8gOi0p CgpObywgdGhlIGJyZWFrIHNob3VsZCBiZSB1bmNvbmRpdGlvbmFsLgoKPiAKPiA+IGRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jIGIveGVuL2FyY2gveDg2L21tL3AybS1lcHQu Ywo+ID4gaW5kZXggMzgwZWMyNS4uMjFlMDRjZSAxMDA2NDQKPiA+IC0tLSBhL3hlbi9hcmNoL3g4 Ni9tbS9wMm0tZXB0LmMKPiA+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKPiA+IEBA IC0xMzIsNiArMTMyLDE0IEBAIHN0YXRpYyB2b2lkIGVwdF9wMm1fdHlwZV90b19mbGFncyhzdHJ1 Y3QKPiBwMm1fZG9tYWluICpwMm0sIGVwdF9lbnRyeV90ICplbnRyeSwKPiA+ICAgICAgICAgICAg ICBlbnRyeS0+ciA9IGVudHJ5LT53ID0gZW50cnktPnggPSAxOwo+ID4gICAgICAgICAgICAgIGVu dHJ5LT5hID0gZW50cnktPmQgPSAhIWNwdV9oYXNfdm14X2VwdF9hZDsKPiA+ICAgICAgICAgICAg ICBicmVhazsKPiA+ICsgICAgICAgIGNhc2UgcDJtX2lvcmVxX3NlcnZlcjoKPiA+ICsgICAgICAg ICAgICBlbnRyeS0+ciA9ICEocDJtLT5pb3JlcS5mbGFncyAmCj4gUDJNX0lPUkVRX0hBTkRMRV9S RUFEX0FDQ0VTUyk7Cj4gPiArICAgICAgICAgICAgZW50cnktPncgPSAoZW50cnktPnIgJgo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICEocDJtLT5pb3JlcS5mbGFncyAmIFAyTV9JT1JFUV9I QU5ETEVfV1JJVEVfQUNDRVNTKSk7Cj4gPiArICAgICAgICAgICAgZW50cnktPnggPSBlbnRyeS0+ cjsKPiA+ICsgICAgICAgICAgICBlbnRyeS0+YSA9ICEhY3B1X2hhc192bXhfZXB0X2FkOwo+ID4g KyAgICAgICAgICAgIGVudHJ5LT5kID0gMDsKPiA+ICsgICAgICAgICAgICBicmVhazsKPiAKPiBJ biBsaW5lIHdpdGggdGhlIG90aGVyIHR5cGVzLCB3b3VsZCBpdCBtYWtlIHNlbnNlIGZvciBlbnRy eS0+ZCBoZXJlIHRvCj4gYmUgZW50cnktPncgJiYgY3B1X2hhc192bXhfZXB0X2FkPwo+IAo+IAo+ ID4gQEAgLTI4OSw2ICsyOTEsODMgQEAgdm9pZCBwMm1fbWVtb3J5X3R5cGVfY2hhbmdlZChzdHJ1 Y3QgZG9tYWluCj4gKmQpCj4gPiAgICAgIH0KPiA+ICB9Cj4gPgo+ID4gK2ludCBwMm1fc2V0X2lv cmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBwMm1fdHlwZV90IHQsCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQo+ID4gK3sKPiA+ICsgICAgc3Ry dWN0IHAybV9kb21haW4gKnAybSA9IHAybV9nZXRfaG9zdHAybShkKTsKPiA+ICsgICAgaW50IHJj Owo+ID4gKwo+ID4gKyAgICBzcGluX2xvY2soJnAybS0+aW9yZXEubG9jayk7Cj4gPiArCj4gPiAr ICAgIHJjID0gLUVJTlZBTDsKPiA+ICsgICAgaWYgKCB0ICE9IHAybV9pb3JlcV9zZXJ2ZXIgKQo+ ID4gKyAgICAgICAgZ290byBvdXQ7Cj4gCj4gU2luY2UgdGhlc2UgYXJlIGFsbCBpbnRlcm5hbCBp bnRlcmZhY2VzLCBJJ20gbm90IHN1cmUgd2hhdCB0aGUgcG9pbnQgaXMKPiBvZiBwYXNzaW5nIHRo aXMgdHlwZSBpbiB3aGVuIHdlIG9ubHkgYWNjZXB0IG9uZSB0eXBlIGFueXdheS4gIElmIHdlJ3Jl Cj4gZ29pbmcgdG8gaGF2ZSBhIHR5cGUgaW4gdGhlIGludGVyZmFjZSBidXQgb25seSBhY2NlcHQg b25lIHR5cGUsIHdlCj4gc2hvdWxkIGp1c3QgY2hlY2sgaXQgYXQgdGhlIHRvcCBsZXZlbCBhbmQg YXNzdW1lIHAybV9pb3JlcV9zZXJ2ZXIgYWxsCj4gdGhlIHdheSB0aHJvdWdoICh1bnRpbCBzdWNo IHRpbWUgYXMgd2UgYWNjZXB0IGEgc2Vjb25kIHR5cGUpLgo+IAoKT0suIEl0IHdhcyB0aGVyZSBm b3IgZnV0dXJlIGV4cGFuc2lvbiwgYnV0IHRoYXQgY291bGQgYmUgYWRkZWQgbGF0ZXIuCgo+ID4g Kwo+ID4gKyAgICByYyA9IC1FQlVTWTsKPiA+ICsgICAgaWYgKCAoIHAybS0+aW9yZXEuc2VydmVy ICE9IE5VTEwgKSAmJiAoZmxhZ3MgIT0gMCkgKQo+ID4gKyAgICAgICAgZ290byBvdXQ7Cj4gPiAr Cj4gPiArICAgIGlmICggZmxhZ3MgPT0gMCApCj4gPiArICAgIHsKPiA+ICsgICAgICAgIHAybS0+ aW9yZXEuc2VydmVyID0gTlVMTDsKPiA+ICsgICAgICAgIHAybS0+aW9yZXEuZmxhZ3MgPSAwOwo+ ID4gKyAgICB9Cj4gPiArICAgIGVsc2UKPiA+ICsgICAgewo+ID4gKyAgICAgICAgcDJtLT5pb3Jl cS5zZXJ2ZXIgPSBzOwo+ID4gKyAgICAgICAgcDJtLT5pb3JlcS5mbGFncyA9IGZsYWdzOwo+ID4g KyAgICB9Cj4gCj4gSSB0aGluayBpdCB3b3VsZCBiZSBhIGJpdCBtb3JlIHJvYnVzdCB0bwo+IAo+ IDEpIFJlcXVpcmUgY2FsbGVycyB0byBhbHdheXMgc3BlY2lmeSAodGhlaXIgb3duKSBzZXJ2ZXIg SUQgd2hlbiBtYWtpbmcKPiB0aGlzIGNhbGwsIGV2ZW4gaWYgdGhleSdyZSB1bi1jbGFpbWluZyB0 aGUgcDJtIHR5cGUKPiAKPiAyKSBXaGVuIHVuLWNsYWltaW5nLCBjaGVjayB0byBtYWtlIHN1cmUg dGhhdCB0aGUgc2VydmVyIGlkIG9mIHRoZSBjYWxsZXIKPiBtYXRjaGVzIHRoZSBzZXJ2ZXIgaWQg dGhhdCdzIGJlaW5nIGRldGFjaGVkLgo+IAoKT2suIEZhaXIgZW5vdWdoLgoKPiA+ICsKPiA+ICsg ICAgcDJtX21lbW9yeV90eXBlX2NoYW5nZWQoZCk7Cj4gPiArCj4gPiArICAgIHJjID0gMDsKPiA+ ICsKPiA+ICtvdXQ6Cj4gPiArICAgIHNwaW5fdW5sb2NrKCZwMm0tPmlvcmVxLmxvY2spOwo+ID4g Kwo+ID4gKyAgICByZXR1cm4gcmM7Cj4gPiArfQo+ID4gKwo+ID4gK3ZvaWQgcDJtX2dldF9pb3Jl cV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgcDJtX3R5cGVfdCB0LAo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqZmxhZ3MsCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqKnMpCj4gPiArewo+ID4gKyAgICBz dHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gcDJtX2dldF9ob3N0cDJtKGQpOwo+ID4gKwo+ID4gKyAg ICBpZiAoIHQgIT0gcDJtX2lvcmVxX3NlcnZlciApCj4gPiArICAgIHsKPiA+ICsgICAgICAgICpz ID0gTlVMTDsKPiA+ICsgICAgICAgICpmbGFncyA9IDA7Cj4gPiArICAgICAgICByZXR1cm47Cj4g PiArICAgIH0KPiA+ICsKPiA+ICsgICAgc3Bpbl9sb2NrKCZwMm0tPmlvcmVxLmxvY2spOwo+ID4g Kwo+ID4gKyAgICAqcyA9IHAybS0+aW9yZXEuc2VydmVyOwo+ID4gKyAgICAqZmxhZ3MgPSBwMm0t PmlvcmVxLmZsYWdzOwo+ID4gKwo+ID4gKyAgICBzcGluX3VubG9jaygmcDJtLT5pb3JlcS5sb2Nr KTsKPiA+ICt9Cj4gPiArCj4gPiArdm9pZCBwMm1fZGVzdHJveV9pb3JlcV9zZXJ2ZXIoc3RydWN0 IGRvbWFpbiAqZCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHZt X2lvcmVxX3NlcnZlciAqcykKPiA+ICt7Cj4gPiArICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0g PSBwMm1fZ2V0X2hvc3RwMm0oZCk7Cj4gPiArCj4gPiArICAgIHNwaW5fbG9jaygmcDJtLT5pb3Jl cS5sb2NrKTsKPiA+ICsKPiA+ICsgICAgaWYgKCBwMm0tPmlvcmVxLnNlcnZlciA9PSBzICkKPiA+ ICsgICAgewo+ID4gKyAgICAgICAgcDJtLT5pb3JlcS5zZXJ2ZXIgPSBOVUxMOwo+ID4gKyAgICAg ICAgcDJtLT5pb3JlcS5mbGFncyA9IDA7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAgcDJtX21l bW9yeV90eXBlX2NoYW5nZWQoZCk7Cj4gCj4gRG8gd2UgcmVhbGx5IHdhbnQgdG8gY2FsbCB0aGlz IHVuY29uZGl0aW9uYWxseSwgZXZlbiBpZiB0aGUgc2VydmVyIGJlaW5nCj4gZGVzdHJveWVkIGhl cmUgaXNuJ3QgdGhlIHNlcnZlciBhc3NvY2lhdGVkIHdpdGggcDJtX2lvcmVxX3NlcnZlcj8gIEl0 Cj4gc2hvdWxkbid0IGhhdmUgYSBmdW5jdGlvbmFsIGltcGFjdCwgYnV0IGl0IHdpbGwgc2xvdyB0 aGluZ3MgZG93biBhcyB0aGUKPiBlcHQgdGFibGVzIGFyZSB1bm5lY2Vzc2FyaWx5IHJlYnVpbHQu Cj4gCgpUcnVlLiBUaGF0IHNob3VsZCBiZSBjb25kaXRpb25hbC4KCj4gPiBkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaAo+IGIveGVuL2luY2x1ZGUvcHVibGljL2h2 bS9odm1fb3AuaAo+ID4gaW5kZXggYTFlYWU1Mi4uZTdmYzc1ZCAxMDA2NDQKPiA+IC0tLSBhL3hl bi9pbmNsdWRlL3B1YmxpYy9odm0vaHZtX29wLmgKPiA+ICsrKyBiL3hlbi9pbmNsdWRlL3B1Ymxp Yy9odm0vaHZtX29wLmgKPiA+IEBAIC00ODksNiArNDg5LDMwIEBAIHN0cnVjdCB4ZW5faHZtX2Fs dHAybV9vcCB7Cj4gPiAgdHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9hbHRwMm1fb3AgeGVuX2h2bV9h bHRwMm1fb3BfdDsKPiA+ICBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX2FsdHAybV9v cF90KTsKPiA+Cj4gPiArI2lmIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09M U19fKQo+ID4gKwo+ID4gKyNkZWZpbmUgSFZNT1BfbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZl ciAyNgo+ID4gK3N0cnVjdCB4ZW5faHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIgewo+ ID4gKyAgICBkb21pZF90IGRvbWlkOyAgICAgIC8qIElOIC0gZG9tYWluIHRvIGJlIHNlcnZpY2Vk ICovCj4gPiArICAgIGlvc2VydmlkX3QgaWQ7ICAgICAgLyogSU4gLSBzZXJ2ZXIgaWQgKi8KPiA+ ICsgICAgaHZtbWVtX3R5cGVfdCB0eXBlOyAvKiBJTiAtIG1lbW9yeSB0eXBlICovCj4gCj4gV2hh dCBpcyB0aGlzICd0eXBlJyBmb3I/ICBEbyB5b3UgZXhwZWN0IHRvIG1hcCBvdGhlciB0eXBlcyBv ZiBtZW1vcnkKPiB0aGlzIHdheSBpbiB0aGUgZnV0dXJlPwo+IAoKQXMgc3RhdGVkIGluIHRoZSBk ZXNpZ24sIHllcy4KCiAgUGF1bAoKPiAgLUdlb3JnZQoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK