From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: Re: [PATCH 15/25] argo: implement the sendv op Date: Wed, 12 Dec 2018 04:52:58 -0700 Message-ID: <5C10F69A0200007800205711@prv1-mh.provo.novell.com> References: <1543627984-21394-1-git-send-email-christopher.w.clark@gmail.com> <1543627984-21394-16-git-send-email-christopher.w.clark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gX34b-0005zb-A3 for xen-devel@lists.xenproject.org; Wed, 12 Dec 2018 11:53:05 +0000 In-Reply-To: <1543627984-21394-16-git-send-email-christopher.w.clark@gmail.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Christopher Clark , xen-devel Cc: Tim Deegan , Stefano Stabellini , Wei Liu , ross.philipson@gmail.com, Jason Andryuk , Daniel Smith , Andrew Cooper , Konrad Rzeszutek Wilk , Ian Jackson , Rich Persaud , James McKenzie , George Dunlap , Julien Grall , Paul Durrant , eric chanudet List-Id: xen-devel@lists.xenproject.org Pj4+IE9uIDAxLjEyLjE4IGF0IDAyOjMyLCA8Y2hyaXN0b3BoZXIudy5jbGFya0BnbWFpbC5jb20+ IHdyb3RlOgo+ICtzdGF0aWMgdm9pZAo+ICthcmdvX3NpZ25hbF9kb21haW4oc3RydWN0IGRvbWFp biAqZCkKPiArewo+ICsgICAgYXJnb19kcHJpbnRrKCJzaWduYWxsaW5nIGRvbWlkOiVkXG4iLCBk LT5kb21haW5faWQpOwo+ICsKPiArICAgIGlmICggIWQtPmFyZ28gKSAvKiBUaGlzIGNhbiBoYXBw ZW4gaWYgdGhlIGRvbWFpbiBpcyBiZWluZyBkZXN0cm95ZWQgKi8KPiArICAgICAgICByZXR1cm47 CgpJZiBzdWNoIGEgcHJlY2F1dGlvbiBpcyBuZWNlc3NhcnksIGhvdyBpcyBpdCBndWFyYW50ZWVk IHRoYXQKdGhlIHBvaW50ZXIgZG9lc24ndCBjaGFuZ2UgdG8gTlVMTCBiZXR3ZWVuIHRoZSBjaGVj ayBhYm92ZQphbmQgLi4uCgo+ICsgICAgZXZ0Y2huX3NlbmQoZCwgZC0+YXJnby0+ZXZ0Y2huX3Bv cnQpOwoKLi4uIHRoZSB1c2UgaGVyZT8KCj4gK3N0YXRpYyBpbnQKPiArYXJnb19pb3ZfY291bnQo WEVOX0dVRVNUX0hBTkRMRV9QQVJBTShhcmdvX2lvdl90KSBpb3ZzLCB1aW50OF90IG5pb3YsCj4g KyAgICAgICAgICAgICAgIHVpbnQzMl90ICpjb3VudCkKPiArewo+ICsgICAgYXJnb19pb3ZfdCBp b3Y7Cj4gKyAgICB1aW50MzJfdCBzdW1faW92X2xlbnMgPSAwOwo+ICsgICAgaW50IHJldDsKPiAr Cj4gKyAgICBpZiAoIG5pb3YgPiBBUkdPX01BWElPViApCj4gKyAgICAgICAgcmV0dXJuIC1FSU5W QUw7Cj4gKwo+ICsgICAgd2hpbGUgKCBuaW92LS0gKQo+ICsgICAgewo+ICsgICAgICAgIHJldCA9 IGNvcHlfZnJvbV9ndWVzdF9lcnJubygmaW92LCBpb3ZzLCAxKTsKPiArICAgICAgICBpZiAoIHJl dCApCj4gKyAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKwo+ICsgICAgICAgIC8qIGNoZWNrIGVh Y2ggdG8gcHJvdGVjdCBzdW0gYWdhaW5zdCBpbnRlZ2VyIG92ZXJmbG93ICovCj4gKyAgICAgICAg aWYgKCBpb3YuaW92X2xlbiA+IEFSR09fTUFYX1JJTkdfU0laRSApCj4gKyAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOwo+ICsKPiArICAgICAgICBzdW1faW92X2xlbnMgKz0gaW92Lmlvdl9sZW47 Cj4gKwo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogQWdhaW4gcHJvdGVjdCBzdW0gZnJvbSBp bnRlZ2VyIG92ZXJmbG93Cj4gKyAgICAgICAgICogYW5kIGVuc3VyZSB0b3RhbCBtc2cgc2l6ZSB3 aWxsIGJlIHdpdGhpbiBib3VuZHMuCj4gKyAgICAgICAgICovCj4gKyAgICAgICAgaWYgKCBzdW1f aW92X2xlbnMgPiBBUkdPX01BWF9NU0dfU0laRSApCj4gKyAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOwoKU28geW91IGRvIG92ZXJmbG93IGNoZWNrcyBoZXJlLiBCdXQgaG93IGRvZXMgdGhpcyBo ZWxwIHdoZW4gLi4uCgo+ICsgICAgICAgIGd1ZXN0X2hhbmRsZV9hZGRfb2Zmc2V0KGlvdnMsIDEp Owo+ICsgICAgfQo+ICsKPiArICAgICpjb3VudCA9IHN1bV9pb3ZfbGVuczsKPiArICAgIHJldHVy biAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK2FyZ29fcmluZ2J1Zl9pbnNlcnQoc3RydWN0 IGRvbWFpbiAqZCwKPiArICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYXJnb19yaW5nX2luZm8g KnJpbmdfaW5mbywKPiArICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYXJnb19yaW5n X2lkICpzcmNfaWQsCj4gKyAgICAgICAgICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJB TShhcmdvX2lvdl90KSBpb3ZzLCB1aW50OF90IG5pb3YsCj4gKyAgICAgICAgICAgICAgICAgICAg dWludDMyX3QgbWVzc2FnZV90eXBlLCB1bnNpZ25lZCBsb25nICpvdXRfbGVuKQo+ICt7Cj4gKyAg ICBhcmdvX3JpbmdfdCByaW5nOwo+ICsgICAgc3RydWN0IGFyZ29fcmluZ19tZXNzYWdlX2hlYWRl ciBtaCA9IHsgMCB9Owo+ICsgICAgaW50MzJfdCBzcDsKPiArICAgIGludDMyX3QgcmV0ID0gMDsK PiArICAgIHVpbnQzMl90IGxlbjsKPiArICAgIHVpbnQzMl90IGlvdl9sZW47Cj4gKyAgICB1aW50 MzJfdCBzdW1faW92X2xlbiA9IDA7Cj4gKwo+ICsgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZy aW5nX2luZm8tPmxvY2spKTsKPiArCj4gKyAgICBpZiAoIChyZXQgPSBhcmdvX2lvdl9jb3VudChp b3ZzLCBuaW92LCAmbGVuKSkgKQo+ICsgICAgICAgIHJldHVybiByZXQ7Cj4gKwo+ICsgICAgaWYg KCAoKEFSR09fUk9VTkRVUChsZW4pICsgc2l6ZW9mIChzdHJ1Y3QgYXJnb19yaW5nX21lc3NhZ2Vf aGVhZGVyKSApID49Cj4gKyAgICAgICAgICByaW5nX2luZm8tPmxlbikKPiArICAgICAgICAgfHwg KGxlbiA+IEFSR09fTUFYX01TR19TSVpFKSApCj4gKyAgICAgICAgcmV0dXJuIC1FTVNHU0laRTsK PiArCj4gKyAgICBkbyB7Cj4gKyAgICAgICAgcmV0ID0gIGFyZ29fcmluZ2J1Zl9nZXRfcnhfcHRy KHJpbmdfaW5mbywgJnJpbmcucnhfcHRyKTsKPiArICAgICAgICBpZiAoIHJldCApCj4gKyAgICAg ICAgICAgIGJyZWFrOwo+ICsKPiArICAgICAgICBhcmdvX3Nhbml0aXplX3JpbmcoJnJpbmcsIHJp bmdfaW5mbyk7Cj4gKwo+ICsgICAgICAgIGFyZ29fZHByaW50aygicmluZy50eF9wdHI9JWQgcmlu Zy5yeF9wdHI9JWQgcmluZy5sZW49JWQiCj4gKyAgICAgICAgICAgICAgICAgICAgICIgcmluZ19p bmZvLT50eF9wdHI9JWRcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgIHJpbmcudHhfcHRyLCBy aW5nLnJ4X3B0ciwgcmluZy5sZW4sIHJpbmdfaW5mby0+dHhfcHRyKTsKPiArCj4gKyAgICAgICAg aWYgKCByaW5nLnJ4X3B0ciA9PSByaW5nLnR4X3B0ciApCj4gKyAgICAgICAgICAgIHNwID0gcmlu Z19pbmZvLT5sZW47Cj4gKyAgICAgICAgZWxzZQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAg c3AgPSByaW5nLnJ4X3B0ciAtIHJpbmcudHhfcHRyOwo+ICsgICAgICAgICAgICBpZiAoIHNwIDwg MCApCj4gKyAgICAgICAgICAgICAgICBzcCArPSByaW5nLmxlbjsKPiArICAgICAgICB9Cj4gKwo+ ICsgICAgICAgIGlmICggKEFSR09fUk9VTkRVUChsZW4pICsgc2l6ZW9mKHN0cnVjdCBhcmdvX3Jp bmdfbWVzc2FnZV9oZWFkZXIpKSA+PSBzcCApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICBh cmdvX2RwcmludGsoIkVBR0FJTlxuIik7Cj4gKyAgICAgICAgICAgIHJldCA9IC1FQUdBSU47Cj4g KyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgbWgubGVuID0g bGVuICsgc2l6ZW9mKHN0cnVjdCBhcmdvX3JpbmdfbWVzc2FnZV9oZWFkZXIpOwo+ICsgICAgICAg IG1oLnNvdXJjZS5wb3J0ID0gc3JjX2lkLT5hZGRyLnBvcnQ7Cj4gKyAgICAgICAgbWguc291cmNl LmRvbWFpbl9pZCA9IHNyY19pZC0+YWRkci5kb21haW5faWQ7Cj4gKyAgICAgICAgbWgubWVzc2Fn ZV90eXBlID0gbWVzc2FnZV90eXBlOwo+ICsKPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIEZv ciB0aGlzIGNvcHkgdG8gdGhlIGd1ZXN0IHJpbmcsIHR4X3B0ciBpcyBhbHdheXMgMTYtYnl0ZSBh bGlnbmVkCj4gKyAgICAgICAgICogYW5kIHRoZSBtZXNzYWdlIGhlYWRlciBpcyAxNiBieXRlcyBs b25nLgo+ICsgICAgICAgICAqLwo+ICsgICAgICAgIEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0 IGFyZ29fcmluZ19tZXNzYWdlX2hlYWRlcikgIT0gQVJHT19ST1VORFVQKDEpKTsKPiArCj4gKyAg ICAgICAgaWYgKCAocmV0ID0gYXJnb19tZW1jcHlfdG9fZ3Vlc3RfcmluZyhyaW5nX2luZm8sCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaW5nLnR4X3B0 ciArIHNpemVvZihhcmdvX3JpbmdfdCksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmbWgsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX05VTEwodWludDhfdCksCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobWgpKSkgKQo+ICsg ICAgICAgICAgICBicmVhazsKPiArCj4gKyAgICAgICAgcmluZy50eF9wdHIgKz0gc2l6ZW9mKG1o KTsKPiArICAgICAgICBpZiAoIHJpbmcudHhfcHRyID09IHJpbmdfaW5mby0+bGVuICkKPiArICAg ICAgICAgICAgcmluZy50eF9wdHIgPSAwOwo+ICsKPiArICAgICAgICB3aGlsZSAoIG5pb3YtLSAp Cj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHVpbnQ4 X3QpIGJ1ZnBfaG5kOwo+ICsgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFKHVpbnQ4X3QpIGJ1 Zl9obmQ7Cj4gKyAgICAgICAgICAgIGFyZ29faW92X3QgaW92Owo+ICsKPiArICAgICAgICAgICAg cmV0ID0gY29weV9mcm9tX2d1ZXN0X2Vycm5vKCZpb3YsIGlvdnMsIDEpOwoKLi4uIGhlcmUgeW91 IGNvcHkgdGhlIHN0cnVjdHVyZSBhZ2FpbiBmcm9tIGd1ZXN0IG1lbW9yeSwgYXQKd2hpY2ggcG9p bnQgaXQgbWF5IGhhdmUgY2hhbmdlZD8gSSBzZWUgeW91IGRvIHNvbWUgY2hlY2tzCmZ1cnRoZXIg ZG93biwgYnV0IHRoZSBxdWVzdGlvbiB0aGVuIGlzIC0gaXMgdGhlIGNoZWNraW5nIGluCmFyZ29f aW92X2NvdW50KCkgcmVkdW5kYW50IGFuZCBoZW5jZSB1bm5lY2Vzc2FyeT8gQXJlCnlvdSByZWFs bHkgc2FmZSBoZXJlIGFnYWluc3QgaW5jb25zaXN0ZW5jaWVzIGJldHdlZW4gdGhlCmZpcnN0IGFu ZCBzZWNvbmQgcmVhZHM/IElmIHNvLCBhIHRob3JvdWdoIGV4cGxhbmF0aW9uIGluIGEKY29tbWVu dCBpcyBuZWVkZWQgaGVyZS4KCj4gKyAgICAgICAgICAgIGlmICggcmV0ICkKPiArICAgICAgICAg ICAgICAgIGJyZWFrOwo+ICsKPiArICAgICAgICAgICAgYnVmcF9obmQgPSBndWVzdF9oYW5kbGVf ZnJvbV9wdHIoKHVpbnRwdHJfdClpb3YuaW92X2Jhc2UsIHVpbnQ4X3QpOwoKUGxlYXNlIHVzZSBh IGhhbmRsZSBpbiB0aGUgcHVibGljIGludGVyZmFjZSBpbnN0ZWFkIG9mIHN1Y2ggYQpjYXN0LgoK PiArICAgICAgICAgICAgYnVmX2huZCA9IGd1ZXN0X2hhbmRsZV9mcm9tX3BhcmFtKGJ1ZnBfaG5k LCB1aW50OF90KTsKPiArICAgICAgICAgICAgaW92X2xlbiA9IGlvdi5pb3ZfbGVuOwo+ICsKPiAr ICAgICAgICAgICAgaWYgKCAhaW92X2xlbiApCj4gKyAgICAgICAgICAgIHsKPiArICAgICAgICAg ICAgICAgIHByaW50ayhYRU5MT0dfRVJSICJhcmdvOiBpb3YuaW92X2xlbj0wIGlvdi5pb3ZfYmFz ZT0lIgo+ICsgICAgICAgICAgICAgICAgICAgICAgIFBSSXg2NCIgcmluZyAodm0ldToleCB2bSVk KVxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICBpb3YuaW92X2Jhc2UsIHJpbmdfaW5mby0+ aWQuYWRkci5kb21haW5faWQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmluZ19pbmZvLT5p ZC5hZGRyLnBvcnQsIHJpbmdfaW5mby0+aWQucGFydG5lcik7Cj4gKwo+ICsgICAgICAgICAgICAg ICAgZ3Vlc3RfaGFuZGxlX2FkZF9vZmZzZXQoaW92cywgMSk7Cj4gKyAgICAgICAgICAgICAgICBj b250aW51ZTsKPiArICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgaWYgKCBpb3ZfbGVu ID4gQVJHT19NQVhfTVNHX1NJWkUgKQo+ICsgICAgICAgICAgICB7Cj4gKyAgICAgICAgICAgICAg ICByZXQgPSAtRUlOVkFMOwo+ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAg IH0KPiArCj4gKyAgICAgICAgICAgIHN1bV9pb3ZfbGVuICs9IGlvdl9sZW47Cj4gKyAgICAgICAg ICAgIGlmICggc3VtX2lvdl9sZW4gPiBsZW4gKQo+ICsgICAgICAgICAgICB7Cj4gKyAgICAgICAg ICAgICAgICByZXQgPSAtRUlOVkFMOwo+ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAg ICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgIGlmICggdW5saWtlbHkoIWd1ZXN0X2hhbmRsZV9v a2F5KGJ1Zl9obmQsIGlvdl9sZW4pKSApCj4gKyAgICAgICAgICAgIHsKPiArICAgICAgICAgICAg ICAgIHJldCA9IC1FRkFVTFQ7Cj4gKyAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAg ICAgfQo+ICsKPiArICAgICAgICAgICAgc3AgPSByaW5nLmxlbiAtIHJpbmcudHhfcHRyOwo+ICsK PiArICAgICAgICAgICAgaWYgKCBpb3ZfbGVuID4gc3AgKQo+ICsgICAgICAgICAgICB7Cj4gKyAg ICAgICAgICAgICAgICByZXQgPSBhcmdvX21lbWNweV90b19ndWVzdF9yaW5nKHJpbmdfaW5mbywK PiArICAgICAgICAgICAgICAgICAgICAgICAgcmluZy50eF9wdHIgKyBzaXplb2YoYXJnb19yaW5n X3QpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBidWZfaG5kLCBzcCk7Cj4gKyAg ICAgICAgICAgICAgICBpZiAoIHJldCApCj4gKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4g Kwo+ICsgICAgICAgICAgICAgICAgcmluZy50eF9wdHIgPSAwOwo+ICsgICAgICAgICAgICAgICAg aW92X2xlbiAtPSBzcDsKPiArICAgICAgICAgICAgICAgIGd1ZXN0X2hhbmRsZV9hZGRfb2Zmc2V0 KGJ1Zl9obmQsIHNwKTsKPiArICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgcmV0ID0g YXJnb19tZW1jcHlfdG9fZ3Vlc3RfcmluZyhyaW5nX2luZm8sCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIHJpbmcudHhfcHRyICsgc2l6ZW9mKGFyZ29fcmluZ190KSwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgTlVMTCwgYnVmX2huZCwgaW92X2xlbik7CgpFeHRlbmRpbmcgdGhlIHJlbWFy ayBvbiBkb3VibGUgZ3Vlc3QgbWVtb3J5IHJlYWQgYWJvdmUsIGlzCml0IGNlcnRhaW4geW91IHdv bid0IG92ZXJydW4gdGhlIHJpbmcgaGVyZT8KCj4gKyAgICAgICAgICAgIGlmICggcmV0ICkKPiAr ICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsKPiArICAgICAgICAgICAgcmluZy50eF9wdHIgKz0g aW92X2xlbjsKPiArCj4gKyAgICAgICAgICAgIGlmICggcmluZy50eF9wdHIgPT0gcmluZ19pbmZv LT5sZW4gKQo+ICsgICAgICAgICAgICAgICAgcmluZy50eF9wdHIgPSAwOwo+ICsKPiArICAgICAg ICAgICAgZ3Vlc3RfaGFuZGxlX2FkZF9vZmZzZXQoaW92cywgMSk7Cj4gKyAgICAgICAgfQo+ICsK PiArICAgICAgICBpZiAoIHJldCApCj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsKPiArICAgICAg ICByaW5nLnR4X3B0ciA9IEFSR09fUk9VTkRVUChyaW5nLnR4X3B0cik7Cj4gKwo+ICsgICAgICAg IGlmICggcmluZy50eF9wdHIgPj0gcmluZ19pbmZvLT5sZW4gKQo+ICsgICAgICAgICAgICByaW5n LnR4X3B0ciAtPSByaW5nX2luZm8tPmxlbjsKPiArCj4gKyAgICAgICAgbWIoKTsKPiArICAgICAg ICByaW5nX2luZm8tPnR4X3B0ciA9IHJpbmcudHhfcHRyOwoKV2hhdCBkb2VzIHRoZSBhYm92ZSBi YXJyaWVyIGd1YXJkIGFnYWluc3Q/IEl0J3MgYWxsIGh5cGVydmlzb3IKbG9jYWwgbWVtb3J5IHdo aWNoIGdldHMgYWx0ZXJlZCBhZmFpY3QuCgo+ICtzdGF0aWMgaW50Cj4gK2FyZ29fcGVuZGluZ19y ZXF1ZXVlKHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvLCBkb21pZF90IHNyY19pZCwg aW50IGxlbikKPiArewo+ICsgICAgc3RydWN0IGhsaXN0X25vZGUgKm5vZGU7Cj4gKyAgICBzdHJ1 Y3QgYXJnb19wZW5kaW5nX2VudCAqZW50Owo+ICsKPiArICAgIEFTU0VSVChzcGluX2lzX2xvY2tl ZCgmcmluZ19pbmZvLT5sb2NrKSk7Cj4gKwo+ICsgICAgaGxpc3RfZm9yX2VhY2hfZW50cnkoZW50 LCBub2RlLCAmcmluZ19pbmZvLT5wZW5kaW5nLCBub2RlKQo+ICsgICAgewo+ICsgICAgICAgIGlm ICggZW50LT5pZCA9PSBzcmNfaWQgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgaWYgKCBl bnQtPmxlbiA8IGxlbiApCj4gKyAgICAgICAgICAgICAgICBlbnQtPmxlbiA9IGxlbjsKCldoYXQg ZG9lcyB0aGlzIGFjaGlldmU/IEkuZS4gd2h5IGlzIHRoaXMgbm90IGVpdGhlciBhIHBsYWluCmFz c2lnbm1lbnQgb3IgYSBjaGVjayB0aGF0IHRoZSBsZW5ndGggaXMgdGhlIHNhbWU/Cgo+ICtzdGF0 aWMgc3RydWN0IGFyZ29fcmluZ19pbmZvICoKPiArYXJnb19yaW5nX2ZpbmRfaW5mb19ieV9tYXRj aChjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCB1aW50MzJfdCBwb3J0LAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRvbWlkX3QgcGFydG5lcl9pZCwgdWludDY0X3QgcGFydG5lcl9jb29r aWUpCj4gK3sKPiArICAgIGFyZ29fcmluZ19pZF90IGlkOwo+ICsgICAgc3RydWN0IGFyZ29fcmlu Z19pbmZvICpyaW5nX2luZm87Cj4gKwo+ICsgICAgQVNTRVJUKHJ3X2lzX2xvY2tlZCgmZC0+YXJn by0+bG9jaykpOwo+ICsKPiArICAgIGlkLmFkZHIucG9ydCA9IHBvcnQ7Cj4gKyAgICBpZC5hZGRy LmRvbWFpbl9pZCA9IGQtPmRvbWFpbl9pZDsKPiArICAgIGlkLnBhcnRuZXIgPSBwYXJ0bmVyX2lk Owo+ICsKPiArICAgIHJpbmdfaW5mbyA9IGFyZ29fcmluZ19maW5kX2luZm8oZCwgJmlkKTsKPiAr ICAgIGlmICggcmluZ19pbmZvICYmIChwYXJ0bmVyX2Nvb2tpZSA9PSByaW5nX2luZm8tPnBhcnRu ZXJfY29va2llKSApCj4gKyAgICAgICAgcmV0dXJuIHJpbmdfaW5mbzsKClN1Y2ggYSBjb29raWUg bWFrZXMgbWlzbWF0Y2hlcyB1bmxpa2VseSwgYnV0IGl0IGRvZXNuJ3QgZXhjbHVkZQp0aGVtLiBJ ZiB0aGVyZSBhcmUgb3RoZXIgY2hlY2tzLCBpcyB0aGUgY29va2llIHVzZWZ1bCBhdCBhbGw/Cgo+ IEBAIC04MTMsNiArMTMxOCwyOSBAQCBkb19hcmdvX21lc3NhZ2Vfb3AoaW50IGNtZCwgWEVOX0dV RVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcxLAo+ICAgICAgICAgIHJjID0gYXJnb191bnJlZ2lz dGVyX3JpbmcoZCwgcmluZ19obmQpOwo+ICAgICAgICAgIGJyZWFrOwo+ICAgICAgfQo+ICsgICAg Y2FzZSBBUkdPX01FU1NBR0VfT1Bfc2VuZHY6Cj4gKyAgICB7Cj4gKyAgICAgICAgYXJnb19zZW5k X2FkZHJfdCBzZW5kX2FkZHI7Cj4gKyAgICAgICAgdWludDMyX3QgbmlvdiA9IGFyZzM7Cj4gKyAg ICAgICAgdWludDMyX3QgbWVzc2FnZV90eXBlID0gYXJnNDsKCkF0IHRoZSBleGFtcGxlIG9mIHRo ZXNlIChwZXJoYXBzIEkndmUgYWdhaW4gb3Zlcmxvb2tlZCBlYXJsaWVyCmluc3RhbmNlcyksIHdo YXQgYWJvdXQgdGhlIHVwcGVyIGhhbHZlcyBvbiA2NC1iaXQ/IEdpdmVuIHRoZQpyYXRoZXIgZ2Vu ZXJpYyBpbnRlcmZhY2Ugb2YgdGhlIGFjdHVhbCBoeXBlcmNhbGwsIEkgZG9uJ3QgdGhpbmsgaXQK aXMgYSBnb29kIGlkZWEgdG8gaWdub3JlIHRoZSBiaXRzLiBUaGUgc2l0dWF0aW9uIGlzIGRpZmZl cmVudCBmb3IKdGhlICJjbWQiIHBhcmFtZXRlciwgd2hpY2ggaXMgdW5pZm9ybWx5IDMyLWJpdCBm b3IgYWxsIHN1Yi1vcHMuCgpUYWxraW5nIG9mICJjbWQiIGFuZCBpdHMgdHlwZTogSW4gY2FzZSBp dCB3YXNuJ3Qgc2FpZCBieSBhbnlvbmUKZWxzZSB5ZXQsIHBsZWFzZSB1c2UgdW5zaWduZWQgdHlw ZXMgd2hlcmV2ZXIgbmVnYXRpdmUgdmFsdWVzCmFyZSBpbXBvc3NpYmxlLgoKPiArICAgICAgICBY RU5fR1VFU1RfSEFORExFX1BBUkFNKGFyZ29fc2VuZF9hZGRyX3QpIHNlbmRfYWRkcl9obmQgPQo+ ICsgICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcxLCBhcmdvX3NlbmRfYWRkcl90KTsK PiArICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKGFyZ29faW92X3QpIGlvdnMgPQo+ICsg ICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcyLCBhcmdvX2lvdl90KTsKPiArCj4gKyAg ICAgICAgaWYgKCB1bmxpa2VseSghZ3Vlc3RfaGFuZGxlX29rYXkoc2VuZF9hZGRyX2huZCwgMSkp ICkKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgcmMgPSBjb3B5X2Zyb21fZ3Vlc3Rf ZXJybm8oJnNlbmRfYWRkciwgc2VuZF9hZGRyX2huZCwgMSk7Cj4gKyAgICAgICAgaWYgKCByYyAp Cj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsKPiArICAgICAgICBzZW5kX2FkZHIuc3JjLmRvbWFp bl9pZCA9IGQtPmRvbWFpbl9pZDsKCldoYXQgdXNlIGlzIHRoZSBmaWVsZCBpZiB5b3Ugb3ZlcnJp ZGUgaXQgbGlrZSB0aGlzPwoKPiAtLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJnby5oCj4gKysr IGIveGVuL2luY2x1ZGUvcHVibGljL2FyZ28uaAo+IEBAIC0zMiw2ICszMiwyOCBAQAo+ICAgKi8K PiAgI2RlZmluZSBBUkdPX01BWF9SSU5HX1NJWkUgICgxNjc3NzIxNlVMTCkKPiAgCj4gKy8qCj4g KyAqIEFSR09fTUFYSU9WIDogbWF4aW11bSBudW1iZXIgb2YgaW92cyBhY2NlcHRlZCBpbiBhIHNp bmdsZSBzZW5kdi4KPiArICogUmF0aW9uYWxlIGZvciB0aGUgdmFsdWU6Cj4gKyAqIFRoZSBMaW51 eCBhcmdvIGRyaXZlciBuZXZlciBwYXNzZXMgbW9yZSB0aGFuIHR3byBpb3ZzLgo+ICsgKiBMaW51 eCBkZWZpbmVzIFVJT19NQVhJT1YgYXMgMTAyNC4KPiArICogUE9TSVggbWFuZGF0ZXMgYXQgbGVh c3QgMTYgLS0gbm90IHRoYXQgdGhpcyBpcyBhIFBPU0lYIEFQSSBvZiBjb3Vyc2UuCj4gKyAqCj4g KyAqIExpbWl0IHRoZSB0b3RhbCBhbW91bnQgb2YgZGF0YSBwb3N0ZWQgaW4gYSBzaW5nbGUgYXJn byBvcGVyYXRpb24gdG8KPiArICogbm8gbW9yZSB0aGFuIDJeMzEgYnl0ZXMgdG8gcmVkdWNlIHJp c2sgb2YgaW50ZWdlciBvdmVyZmxvdyBkZWZlY3RzLgo+ICsgKiBFYWNoIGFyZ28gaW92IGNhbiBo b2xkIH4gMl4yNCBieXRlcywgc28gc2V0IEFSR09fTUFYSU9WIHRvIDJeKDMxLTI0KSwKPiArICog bWludXMgb25lIHRvIGVuYWJsZSBzaW1wbGUgZWZmaWNpZW50IGJvdW5kcyBjaGVja2luZyB2aWEg bWFza2luZzogMTI3Lgo+ICsqLwo+ICsjZGVmaW5lIEFSR09fTUFYSU9WICAgICAgICAgIDEyN1UK PiArCj4gK3R5cGVkZWYgc3RydWN0IGFyZ29faW92Cj4gK3sKPiArICAgIHVpbnQ2NF90IGlvdl9i YXNlOwo+ICsgICAgdWludDMyX3QgaW92X2xlbjsKPiArICAgIHVpbnQzMl90IHBhZDsKCkkgZG9u J3QgdGhpbmsgSSd2ZSBmb3VuZCBhbnkgY2hlY2tpbmcgb2YgdGhpcyBmaWVsZCB0byBiZSB6ZXJv LCB0bwphbGxvdyBmb3IgZnV0dXJlIHJlLXVzZS4KCkphbgoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp bG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=