From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: Re: [PATCH v2 3/3] x86/ioreq server: Add HVMOP to map guest ram with p2m_ioreq_server to an ioreq server Date: Fri, 08 Apr 2016 16:28:34 -0600 Message-ID: <57083EA202000078000E623A@prv-mh.provo.novell.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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1459421618-5991-4-git-send-email-yu.c.zhang@linux.intel.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Paul Durrant , Yu Zhang 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 Pj4+IE9uIDMxLjAzLjE2IGF0IDEyOjUzLCA8eXUuYy56aGFuZ0BsaW51eC5pbnRlbC5jb20+IHdy b3RlOgo+ICtzdGF0aWMgaW50IG1lbV93cml0ZShjb25zdCBzdHJ1Y3QgaHZtX2lvX2hhbmRsZXIg KmhhbmRsZXIsCj4gKyAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGFkZHIsCj4gKyAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90IHNpemUsCj4gKyAgICAgICAgICAgICAgICAgICAgIHVp bnQ2NF90IGRhdGEpCj4gK3sKPiArICAgIHN0cnVjdCBkb21haW4gKmN1cnJkID0gY3VycmVudC0+ ZG9tYWluOwo+ICsgICAgdW5zaWduZWQgbG9uZyBnbWZuID0gcGFkZHJfdG9fcGZuKGFkZHIpOwo+ ICsgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSBhZGRyICYgflBBR0VfTUFTSzsKPiArICAgIHN0 cnVjdCBwYWdlX2luZm8gKnBhZ2UgPSBnZXRfcGFnZV9mcm9tX2dmbihjdXJyZCwgZ21mbiwgTlVM TCwgUDJNX1VOU0hBUkUpOwo+ICsgICAgdWludDhfdCAqcDsKPiArCj4gKyAgICBpZiAoICFwYWdl ICkKPiArICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7Cj4gKwo+ICsgICAgcCA9 IF9fbWFwX2RvbWFpbl9wYWdlKHBhZ2UpOwo+ICsgICAgcCArPSBvZmZzZXQ7Cj4gKyAgICBtZW1j cHkocCwgJmRhdGEsIHNpemUpOwoKV2hhdCBpZiB0aGUgcGFnZSBpcyBhIHIvbyBvbmU/IE5vdCBo YXZpbmcgZm91bmQgYW4gaW9yZXEgc2VydmVyLCBJJ20Kbm90IHN1cmUgYXNzdW1wdGlvbnMgb24g dGhlIHBhZ2UgYmVpbmcgd3JpdGFibGUgY2FuIHZhbGlkbHkgYmUgbWFkZS4KCj4gQEAgLTE2OCwx MyArMjI2LDcyIEBAIHN0YXRpYyBpbnQgaHZtZW11bF9kb19pbygKPiAgICAgICAgICBicmVhazsK PiAgICAgIGNhc2UgWDg2RU1VTF9VTkhBTkRMRUFCTEU6Cj4gICAgICB7Cj4gLSAgICAgICAgc3Ry dWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMgPQo+IC0gICAgICAgICAgICBodm1fc2VsZWN0X2lvcmVx X3NlcnZlcihjdXJyLT5kb21haW4sICZwKTsKPiArICAgICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3Nl cnZlciAqczsKPiArICAgICAgICBwMm1fdHlwZV90IHAybXQ7Cj4gKwo+ICsgICAgICAgIGlmICgg aXNfbW1pbyApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdtZm4g PSBwYWRkcl90b19wZm4oYWRkcik7Cj4gKwo+ICsgICAgICAgICAgICAodm9pZCkgZ2V0X2dmbl9x dWVyeV91bmxvY2tlZChjdXJyZCwgZ21mbiwgJnAybXQpOwo+ICsKPiArICAgICAgICAgICAgc3dp dGNoICggcDJtdCApCj4gKyAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgIGNhc2UgcDJt X2lvcmVxX3NlcnZlcjoKPiArICAgICAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsKPiArICAgICAgICAgICAgICAgICAgICBwMm1fZ2V0 X2lvcmVxX3NlcnZlcihjdXJyZCwgJmZsYWdzLCAmcyk7CgpBcyB0aGUgZnVuY3Rpb24gYXBwYXJl bnRseSByZXR1cm5zIG5vIHZhbHVlIHJpZ2h0IG5vdywgcGxlYXNlIGF2b2lkCnRoZSBpbmRpcmVj dGlvbiBvbiBib3RoIHZhbHVlcyB5b3UncmUgYWZ0ZXIgLSBvbmUgb2YgdGhlIHR3bwoocHJlc3Vt YWJseSBzKSBjYW4gYmUgdGhlIGZ1bmN0aW9uJ3MgcmV0dXJuIHZhbHVlLgoKPiArICAgICAgICAg ICAgICAgICAgICBpZiAoICFzICkKPiArICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4g Kwo+ICsgICAgICAgICAgICAgICAgICAgIGlmICggKGRpciA9PSBJT1JFUV9SRUFEICYmCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIShmbGFncyAmIFAyTV9JT1JFUV9IQU5ETEVfUkVBRF9B Q0NFU1MpKSB8fAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKGRpciA9PSBJT1JFUV9XUklU RSAmJgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICEoZmxhZ3MgJiBQMk1fSU9SRVFfSEFO RExFX1dSSVRFX0FDQ0VTUykpICkKCkkgdGhpbmsgdGhpcyB3b3VsZCBiZSBlYXNpZXIgdG8gcmVh ZCB1c2luZyBhIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24Kd2l0aCB0aGUgY29uZGl0aW9uIGJlaW5n IGRpciA9PSBJT1JFUV88b25lLW9mLXRoZS10d28+LCBqdXN0CnNlbGVjdGluZyBlaXRoZXIgb2Yg dGhlIHR3byBwb3NzaWJsZSBiaXQgbWFza3MuCgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBz ID0gTlVMTDsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAg ICAgICB9Cj4gKyAgICAgICAgICAgICAgICBjYXNlIHAybV9yYW1fcnc6CgpCbGFuayBsaW5lIGFi b3ZlIGhlcmUgcGxlYXNlLgoKPiAgICAgICAgICAvKiBJZiB0aGVyZSBpcyBubyBzdWl0YWJsZSBi YWNraW5nIERNLCBqdXN0IGlnbm9yZSBhY2Nlc3NlcyAqLwo+ICAgICAgICAgIGlmICggIXMgKQo+ ICAgICAgICAgIHsKPiAtICAgICAgICAgICAgcmMgPSBodm1fcHJvY2Vzc19pb19pbnRlcmNlcHQo Jm51bGxfaGFuZGxlciwgJnApOwo+ICsgICAgICAgICAgICBzd2l0Y2ggKCBwMm10ICkKPiArICAg ICAgICAgICAgewo+ICsgICAgICAgICAgICBjYXNlIHAybV9pb3JlcV9zZXJ2ZXI6Cj4gKyAgICAg ICAgICAgIC8qCj4gKyAgICAgICAgICAgICAqIFJhY2UgY29uZGl0aW9ucyBtYXkgZXhpc3Qgd2hl biBhY2Nlc3MgdG8gYSBnZm4gd2l0aAo+ICsgICAgICAgICAgICAgKiBwMm1faW9yZXFfc2VydmVy IGlzIGludGVyY2VwdGVkIGJ5IGh5cGVydmlzb3IsIGR1cmluZwo+ICsgICAgICAgICAgICAgKiB3 aGljaCB0aW1lIHAybSB0eXBlIG9mIHRoaXMgZ2ZuIGlzIHJlY2FsY3VsYXRlZCBiYWNrCj4gKyAg ICAgICAgICAgICAqIHRvIHAybV9yYW1fcncuIG1lbV9oYW5kbGVyIGlzIHVzZWQgdG8gaGFuZGxl IHRoaXMKPiArICAgICAgICAgICAgICogY29ybmVyIGNhc2UuCj4gKyAgICAgICAgICAgICAqLwoK Tm93IGlmIHRoZXJlIGlzIHN1Y2ggYSByYWNlIGNvbmRpdGlvbiwgdGhlIHJhY2UgY291bGQgYWxz byBiZSB3aXRoIGEKcGFnZSBjaGFuZ2luZyBmaXJzdCB0byByYW1fcncgYW5kIHRoZW4gaW1tZWRp YXRlbHkgZnVydGhlciB0byBlLmcuCnJhbV9yby4gU2VlIHRoZSBlYXJsaWVyIGNvbW1lbnQgYWJv dXQgYXNzdW1pbmcgdGhlIHBhZ2UgdG8gYmUKd3JpdGFibGUuCgo+ICsgICAgICAgICAgICBjYXNl IHAybV9yYW1fcnc6Cj4gKyAgICAgICAgICAgICAgICByYyA9IGh2bV9wcm9jZXNzX2lvX2ludGVy Y2VwdCgmbWVtX2hhbmRsZXIsICZwKTsKPiArICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsKPiAr ICAgICAgICAgICAgZGVmYXVsdDoKPiArICAgICAgICAgICAgICAgIHJjID0gaHZtX3Byb2Nlc3Nf aW9faW50ZXJjZXB0KCZudWxsX2hhbmRsZXIsICZwKTsKCkFsb25nIHdpdGggdGhlIGFib3ZlLCBJ IGRvdWJ0IGl0IGlzIGNvcnJlY3QgdG8gaGF2ZSBlLmcuIHJhbV9ybyBjb21lCmhlcmUuCgo+ICtz dGF0aWMgaW50IGh2bV9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4g KmQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9zZXJ2 aWRfdCBpZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo dm1tZW1fdHlwZV90IHR5cGUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDMyX3QgZmxhZ3MpCj4gK3sKPiArICAgIHN0cnVjdCBodm1faW9yZXFfc2Vy dmVyICpzOwo+ICsgICAgaW50IHJjOwo+ICsKPiArICAgIC8qIEZvciBub3csIG9ubHkgSFZNTUVN X2lvcmVxX3NlcnZlciBpcyBzdXBwb3J0ZWQgKi8KPiArICAgIGlmICggdHlwZSAhPSBIVk1NRU1f aW9yZXFfc2VydmVyICkKPiArICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArCj4gKyAgICBpZiAo IGZsYWdzICYgfihIVk1PUF9JT1JFUV9NRU1fQUNDRVNTX1JFQUQgfAo+ICsgICAgICAgICAgICAg ICAgICAgSFZNT1BfSU9SRVFfTUVNX0FDQ0VTU19XUklURSkgKQo+ICsgICAgICAgIHJldHVybiAt RUlOVkFMOwo+ICsKPiArICAgIHNwaW5fbG9jaygmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3Nl cnZlci5sb2NrKTsKPiArCj4gKyAgICByYyA9IC1FTk9FTlQ7Cj4gKyAgICBsaXN0X2Zvcl9lYWNo X2VudHJ5ICggcywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9t YWluLmlvcmVxX3NlcnZlci5saXN0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Rf ZW50cnkgKQo+ICsgICAgewo+ICsgICAgICAgIGlmICggcyA9PSBkLT5hcmNoLmh2bV9kb21haW4u ZGVmYXVsdF9pb3JlcV9zZXJ2ZXIgKQo+ICsgICAgICAgICAgICBjb250aW51ZTsKPiArCj4gKyAg ICAgICAgaWYgKCBzLT5pZCA9PSBpZCApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICByYyA9 IHAybV9zZXRfaW9yZXFfc2VydmVyKGQsIGZsYWdzLCBzKTsKPiArICAgICAgICAgICAgaWYgKCBy YyA9PSAwICkKPiArICAgICAgICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19ERUJVRywgIiV1ICVz IHR5cGUgSFZNTUVNX2lvcmVxX3NlcnZlci5cbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICBzLT5pZCwgKGZsYWdzICE9IDApID8gIm1hcHBlZCB0byIgOiAidW5tYXBwZWQgZnJvbSIpOwoK V2h5IGdkcHJpbnRrKCk/IEkgZG9uJ3QgdGhpbmsgdGhlIGN1cnJlbnQgZG9tYWluIGlzIG9mIG11 Y2gKaW50ZXJlc3QgaGVyZS4gV2hhdCB3b3VsZCBiZSBvZiBpbnRlcmVzdCBpcyB0aGUgc3ViamVj dCBkb21haW4uCgo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKPiArKysgYi94ZW4v YXJjaC94ODYvbW0vcDJtLWVwdC5jCj4gQEAgLTEzMiw2ICsxMzIsMTkgQEAgc3RhdGljIHZvaWQg ZXB0X3AybV90eXBlX3RvX2ZsYWdzKHN0cnVjdCBwMm1fZG9tYWluIAo+ICpwMm0sIGVwdF9lbnRy eV90ICplbnRyeSwKPiAgICAgICAgICAgICAgZW50cnktPnIgPSBlbnRyeS0+dyA9IGVudHJ5LT54 ID0gMTsKPiAgICAgICAgICAgICAgZW50cnktPmEgPSBlbnRyeS0+ZCA9ICEhY3B1X2hhc192bXhf ZXB0X2FkOwo+ICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICBjYXNlIHAybV9pb3JlcV9z ZXJ2ZXI6Cj4gKyAgICAgICAgICAgIGVudHJ5LT5yID0gIShwMm0tPmlvcmVxLmZsYWdzICYgUDJN X0lPUkVRX0hBTkRMRV9SRUFEX0FDQ0VTUyk7Cj4gKwkgICAgLyoKPiArCSAgICAgKiB3cml0ZSBh Y2Nlc3MgcmlnaHQgaXMgZGlzYWJsZWQgd2hlbiBlbnRyeS0+ciBpcyAwLCBidXQgd2hldGhlcgo+ ICsJICAgICAqIHdyaXRlIGFjY2Vzc2VzIGFyZSBlbXVsYXRlZCBieSBoeXBlcnZpc29yIG9yIGZv cndhcmRlZCB0byBhbgo+ICsJICAgICAqIGlvcmVxIHNlcnZlciBkZXBlbmRzIG9uIHRoZSBzZXR0 aW5nIG9mIHAybS0+aW9yZXEuZmxhZ3MuCj4gKwkgICAgICovCj4gKyAgICAgICAgICAgIGVudHJ5 LT53ID0gKGVudHJ5LT5yICYmCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICEocDJtLT5pb3Jl cS5mbGFncyAmIFAyTV9JT1JFUV9IQU5ETEVfV1JJVEVfQUNDRVNTKSk7Cj4gKyAgICAgICAgICAg IGVudHJ5LT54ID0gZW50cnktPnI7CgpXaHkgd291bGQgd2Ugd2FudCB0byBhbGxvdyBpbnN0cnVj dGlvbiBleGVjdXRpb24gZnJvbSBzdWNoIHBhZ2VzPwpBbmQgd2l0aCBhbGwgdGhyZWUgYml0cyBu b3cgcG9zc2libHkgYmVpbmcgY2xlYXIsIGFyZW4ndCB3ZSByaXNraW5nIHRoZQplbnRyaWVzIHRv IGJlIG1pcy10cmVhdGVkIGFzIG5vdC1wcmVzZW50IG9uZXM/Cgo+IC0tLSBhL3hlbi9hcmNoL3g4 Ni9tbS9wMm0tcHQuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYwo+IEBAIC03Miw4 ICs3Miw4IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIHBndFtdID0gewo+ICAgICAgUEdU X2wzX3BhZ2VfdGFibGUKPiAgfTsKPiAgCj4gLXN0YXRpYyB1bnNpZ25lZCBsb25nIHAybV90eXBl X3RvX2ZsYWdzKHAybV90eXBlX3QgdCwgbWZuX3QgbWZuLAo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGV2ZWwpCj4gK3N0YXRpYyB1bnNpZ25l ZCBsb25nIHAybV90eXBlX3RvX2ZsYWdzKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHAybV90eXBl X3QgdCwKCmNvbnN0Cgo+ICtpbnQgcDJtX3NldF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAq ZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcykKPiArewo+ ICsgICAgc3RydWN0IHAybV9kb21haW4gKnAybSA9IHAybV9nZXRfaG9zdHAybShkKTsKPiArICAg IGludCByYzsKPiArCj4gKyAgICBzcGluX2xvY2soJnAybS0+aW9yZXEubG9jayk7Cj4gKwo+ICsg ICAgcmMgPSAtRUJVU1k7Cj4gKyAgICBpZiAoIChmbGFncyAhPSAwKSAmJiAocDJtLT5pb3JlcS5z ZXJ2ZXIgIT0gTlVMTCkgKQo+ICsgICAgICAgIGdvdG8gb3V0Owo+ICsKPiArICAgIHJjID0gLUVJ TlZBTDsKPiArICAgIC8qIHVubWFwIGlvcmVxIHNlcnZlciBmcm9tIHAybSB0eXBlIGJ5IHBhc3Np bmcgZmxhZ3Mgd2l0aCAwICovCgpDb21tZW50IHN0eWxlIChhbHNvIGVsc2V3aGVyZSkuCgo+ICsg ICAgaWYgKCAoZmxhZ3MgPT0gMCkgJiYgKHAybS0+aW9yZXEuc2VydmVyICE9IHMpICkKPiArICAg ICAgICBnb3RvIG91dDsKClRoZSB0d28gZmxhZ3MgY2hlY2tzIGFib3ZlIGFyZSByZWR1bmRhbnQg d2l0aCAuLi4KCj4gKyAgICBpZiAoIGZsYWdzID09IDAgKQo+ICsgICAgewo+ICsgICAgICAgIHAy bS0+aW9yZXEuc2VydmVyID0gTlVMTDsKPiArICAgICAgICBwMm0tPmlvcmVxLmZsYWdzID0gMDsK PiArICAgIH0KPiArICAgIGVsc2UKPiArICAgIHsKPiArICAgICAgICBwMm0tPmlvcmVxLnNlcnZl ciA9IHM7Cj4gKyAgICAgICAgcDJtLT5pb3JlcS5mbGFncyA9IGZsYWdzOwo+ICsgICAgfQoKLi4u IHRoaXMgLSBJIHRoaW5rIHRoZSBlYXJsaWVyIG9uZXMgc2hvdWxkIGJlIGZvbGRlZCBpbnRvIHRo aXMuCgo+ICsgICAgLyoKPiArICAgICAqIEVhY2ggdGltZSB3ZSBtYXAvdW5tYXAgYW4gaW9yZXEg c2VydmVyIHRvL2Zyb20gcDJtX2lvcmVxX3NlcnZlciwKPiArICAgICAqIHdlIG1hcmsgdGhlIHAy bSB0YWJsZSB0byBiZSByZWNhbGN1bGF0ZWQsIHNvIHRoYXQgZ2ZucyB3aGljaCB3ZXJlCj4gKyAg ICAgKiBwcmV2aW91c2x5IG1hcmtlZCB3aXRoIHAybV9pb3JlcV9zZXJ2ZXIgY2FuIGJlIHJlc3lu Y2VkLgo+ICsgICAgICovCj4gKyAgICBwMm1fY2hhbmdlX2VudHJ5X3R5cGVfZ2xvYmFsKGQsIHAy bV9pb3JlcV9zZXJ2ZXIsIHAybV9yYW1fcncpOwoKV2hhdCBkb2VzICJyZXN5bmNlZCIgaGVyZSBt ZWFuPyBJLmUuIEkgY2FuIHNlZSB3aHkgdGhpcyBpcyB3YW50ZWQKd2hlbiB1bm1hcHBpbmcgYSBz ZXJ2ZXIsIGJ1dCB3aGVuIG1hcHBpbmcgYSBzZXJ2ZXIgdGhlcmUgc2hvdWxkbid0CmJlIGFueSBz dWNoIHBhZ2VzIGluIHRoZSBmaXJzdCBwbGFjZS4KCj4gKyAgICByYyA9IDA7Cj4gKwo+ICtvdXQ6 CgpMYWJlbHMgaW5kZW50ZWQgYnkgYXQgbGVhc3Qgb25lIHNwYWNlIHBsZWFzZS4KCj4gQEAgLTMy MCw2ICszMjEsMjcgQEAgc3RydWN0IHAybV9kb21haW4gewo+ICAgICAgICAgIHN0cnVjdCBlcHRf ZGF0YSBlcHQ7Cj4gICAgICAgICAgLyogTlBULWVxdWl2YWxlbnQgc3RydWN0dXJlIGNvdWxkIGJl IGFkZGVkIGhlcmUuICovCj4gICAgICB9Owo+ICsKPiArICAgIHN0cnVjdCB7Cj4gKyAgICAgICAg c3BpbmxvY2tfdCBsb2NrOwo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogaW9yZXEgc2VydmVy IHdobydzIHJlc3BvbnNpYmxlIGZvciB0aGUgZW11bGF0aW9uIG9mCj4gKyAgICAgICAgICogZ2Zu cyB3aXRoIHNwZWNpZmljIHAybSB0eXBlKGZvciBub3csIHAybV9pb3JlcV9zZXJ2ZXIpLgo+ICsg ICAgICAgICAqIEJlaGF2aW9ycyBvZiBnZm5zIHdpdGggcDJtX2lvcmVxX3NlcnZlciBzZXQgYnV0 IG5vCj4gKyAgICAgICAgICogaW9yZXEgc2VydmVyIG1hcHBlZCBpbiBhZHZhbmNlIHNob3VsZCBi ZSB0aGUgc2FtZSBhcwo+ICsgICAgICAgICAqIHAybV9yYW1fcncuCj4gKyAgICAgICAgICovCj4g KyAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnNlcnZlcjsKPiArICAgICAgICAvKgo+ ICsgICAgICAgICAqIGZsYWdzIHNwZWNpZmllcyB3aGV0aGVyIHJlYWQsIHdyaXRlIG9yIGJvdGgg b3BlcmF0aW9ucwo+ICsgICAgICAgICAqIGFyZSB0byBiZSBlbXVsYXRlZCBieSBhbiBpb3JlcSBz ZXJ2ZXIuCj4gKyAgICAgICAgICovCj4gKyAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCnVu c2lnbmVkIGludAoKPiAtLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2bV9vcC5oCj4gKysr IGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaAo+IEBAIC00ODksNiArNDg5LDQzIEBA IHN0cnVjdCB4ZW5faHZtX2FsdHAybV9vcCB7Cj4gIHR5cGVkZWYgc3RydWN0IHhlbl9odm1fYWx0 cDJtX29wIHhlbl9odm1fYWx0cDJtX29wX3Q7Cj4gIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhl bl9odm1fYWx0cDJtX29wX3QpOwo+ICAKPiArI2lmIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5l ZChfX1hFTl9UT09MU19fKQoKSW5zdGVhZCBvZiBhZGRpbmcgeWV0IGFub3RoZXIgc3VjaCBzZWN0 aW9uLCBjb3VsZG4ndCB0aGlzIGJlIGFkZGVkCnRvIGFuIGFscmVhZHkgZXhpc3Rpbmcgb25lPwoK PiArc3RydWN0IHhlbl9odm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlciB7Cj4gKyAgICBk b21pZF90IGRvbWlkOyAgICAgIC8qIElOIC0gZG9tYWluIHRvIGJlIHNlcnZpY2VkICovCj4gKyAg ICBpb3NlcnZpZF90IGlkOyAgICAgIC8qIElOIC0gaW9yZXEgc2VydmVyIGlkICovCj4gKyAgICBo dm1tZW1fdHlwZV90IHR5cGU7IC8qIElOIC0gbWVtb3J5IHR5cGUgKi8KCllvdSBjYW4ndCB1c2Ug dGhpcyB0eXBlIGZvciBwdWJsaWMgaW50ZXJmYWNlIHN0cnVjdHVyZSBmaWVsZHMgLSB0aGlzCm11 c3QgYmUgdWludFhYX3QuCgpKYW4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5v cmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==