From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH] dm_op: Add xendevicemodel_modified_memory_bulk. Date: Fri, 17 Mar 2017 10:42:02 +0000 Message-ID: <79ee867c26774757a30f1cdd58b826ad@AMSPEX02CL03.citrite.net> References: <1489675444-34062-1-git-send-email-jennifer.herbert@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1489675444-34062-1-git-send-email-jennifer.herbert@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: Xen-devel Cc: Ian Jackson , Jennifer Herbert , Wei Liu , Jan Beulich , Andrew Cooper List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEplbm5pZmVyIEhlcmJlcnQgW21h aWx0bzpqZW5uaWZlci5oZXJiZXJ0QGNpdHJpeC5jb21dCj4gU2VudDogMTYgTWFyY2ggMjAxNyAx NDo0NAo+IFRvOiBYZW4tZGV2ZWwgPHhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnPgo+IENjOiBKZW5u aWZlciBIZXJiZXJ0IDxqZW5uaWZlci5oZXJiZXJ0QGNpdHJpeC5jb20+OyBKYW4gQmV1bGljaAo+ IDxqYmV1bGljaEBzdXNlLmNvbT47IElhbiBKYWNrc29uIDxJYW4uSmFja3NvbkBjaXRyaXguY29t PjsgV2VpIExpdQo+IDx3ZWkubGl1MkBjaXRyaXguY29tPjsgQW5kcmV3IENvb3BlciA8QW5kcmV3 LkNvb3BlcjNAY2l0cml4LmNvbT47IFBhdWwKPiBEdXJyYW50IDxQYXVsLkR1cnJhbnRAY2l0cml4 LmNvbT4KPiBTdWJqZWN0OiBbUEFUQ0hdIGRtX29wOiBBZGQgeGVuZGV2aWNlbW9kZWxfbW9kaWZp ZWRfbWVtb3J5X2J1bGsuCj4gCj4gRnJvbTogSmVubmlmZXIgSGVyYmVydCA8SmVubmlmZXIuSGVy YmVydEBjaXRyaXguY29tPgo+IAo+IFRoaXMgbmV3IGxpYiBkZXZpY2Vtb2RlbCBjYWxsIGFsbG93 cyBtdWx0aXBsZSBleHRlbnRzIG9mIHBhZ2VzIHRvIGJlCj4gbWFya2VkIGFzIG1vZGlmaWVkIGlu IGEgc2luZ2xlIGNhbGwuICBUaGlzIGlzIHNvbWV0aGluZyBuZWVkZWQgZm9yIGEKPiB1c2VjYXNl IEknbSB3b3JraW5nIG9uLgo+IAo+IFRoZSB4ZW4gc2lkZSBvZiB0aGUgbW9kaWZpZWRfbWVtb3J5 IGNhbGwgaGFzIGJlZW4gbW9kaWZpZWQgdG8gYWNjZXB0Cj4gYW4gYXJyYXkgb2YgZXh0ZW50cy4g IFRoZSBkZXZpY2Vtb2RsZSBsaWJyYXJ5IGVpdGhlciBwcm92aWRlcyBhbiBhcnJheQo+IG9mIGxl bmd0aCAxLCB0byBzdXBwb3J0IHRoZSBvcmlnaW5hbCBsaWJyYXJ5IGZ1bmN0aW9uLCBvciBhIHNl Y29uZAo+IGZ1bmN0aW9uIGFsbG93cyBhbiBhcnJheSB0byBiZSBwcm92aWRlZC4KPiAKPiBTaWdu ZWQtb2ZmLWJ5OiBKZW5uaWZlciBIZXJiZXJ0IDxKZW5uaWZlci5IZXJiZXJ0QGNpdHJpeC5jb20+ Cj4gLS0tCj4gQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KPiBDYzogSWFuIEph Y2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+Cj4gQ2M6IFdlaSBMaXUgPHdlaS5saXUy QGNpdHJpeC5jb20+Cj4gQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5j b20+Cj4gQ2M6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Cj4gLS0tCj4g IHRvb2xzL2xpYnMvZGV2aWNlbW9kZWwvY29yZS5jICAgICAgICAgICAgICAgICAgIHwgICAzMCAr KysrLS0KPiAgdG9vbHMvbGlicy9kZXZpY2Vtb2RlbC9pbmNsdWRlL3hlbmRldmljZW1vZGVsLmgg fCAgIDIwICsrKy0KPiAgeGVuL2FyY2gveDg2L2h2bS9kbS5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMTE3ICsrKysrKysrKysrKysrKy0tLS0tLS0tCj4gIHhlbi9pbmNsdWRlL3B1Ymxp Yy9odm0vZG1fb3AuaCAgICAgICAgICAgICAgICAgIHwgICAxMiArKy0KPiAgNCBmaWxlcyBjaGFu Z2VkLCAxMjUgaW5zZXJ0aW9ucygrKSwgNTQgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh L3Rvb2xzL2xpYnMvZGV2aWNlbW9kZWwvY29yZS5jIGIvdG9vbHMvbGlicy9kZXZpY2Vtb2RlbC9j b3JlLmMKPiBpbmRleCBhODVjYjQ5Li4xZjdhOWRjIDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2xpYnMv ZGV2aWNlbW9kZWwvY29yZS5jCj4gKysrIGIvdG9vbHMvbGlicy9kZXZpY2Vtb2RlbC9jb3JlLmMK PiBAQCAtNDM0LDIyICs0MzQsMzYgQEAgaW50IHhlbmRldmljZW1vZGVsX3RyYWNrX2RpcnR5X3Zy YW0oCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlydHlfYml0bWFwLCAoc2l6ZV90 KShuciArIDcpIC8gOCk7Cj4gIH0KPiAKPiAtaW50IHhlbmRldmljZW1vZGVsX21vZGlmaWVkX21l bW9yeSgKPiAtICAgIHhlbmRldmljZW1vZGVsX2hhbmRsZSAqZG1vZCwgZG9taWRfdCBkb21pZCwg dWludDY0X3QgZmlyc3RfcGZuLAo+IC0gICAgdWludDMyX3QgbnIpCj4gK2ludCB4ZW5kZXZpY2Vt b2RlbF9tb2RpZmllZF9tZW1vcnlfYnVsaygKPiArICAgIHhlbmRldmljZW1vZGVsX2hhbmRsZSAq ZG1vZCwgZG9taWRfdCBkb21pZCwKPiArICAgIHN0cnVjdCB4ZW5fZG1fb3BfbW9kaWZpZWRfbWVt b3J5X2V4dGVudCAqZXh0ZW50cywgdWludDMyX3QgbnIpCj4gIHsKPiAgICAgIHN0cnVjdCB4ZW5f ZG1fb3Agb3A7Cj4gLSAgICBzdHJ1Y3QgeGVuX2RtX29wX21vZGlmaWVkX21lbW9yeSAqZGF0YTsK PiArICAgIHN0cnVjdCB4ZW5fZG1fb3BfbW9kaWZpZWRfbWVtb3J5ICpoZWFkZXI7Cj4gKyAgICBz aXplX3QgZXh0ZW50c19zaXplID0gbnIgKiBzaXplb2Yoc3RydWN0Cj4geGVuX2RtX29wX21vZGlm aWVkX21lbW9yeV9leHRlbnQpOwo+IAo+ICAgICAgbWVtc2V0KCZvcCwgMCwgc2l6ZW9mKG9wKSk7 Cj4gCj4gICAgICBvcC5vcCA9IFhFTl9ETU9QX21vZGlmaWVkX21lbW9yeTsKPiAtICAgIGRhdGEg PSAmb3AudS5tb2RpZmllZF9tZW1vcnk7Cj4gKyAgICBoZWFkZXIgPSAmb3AudS5tb2RpZmllZF9t ZW1vcnk7Cj4gCj4gLSAgICBkYXRhLT5maXJzdF9wZm4gPSBmaXJzdF9wZm47Cj4gLSAgICBkYXRh LT5uciA9IG5yOwo+ICsgICAgaGVhZGVyLT5ucl9leHRlbnRzID0gbnI7Cj4gKyAgICBoZWFkZXIt Pm9mZnNldCA9IDA7Cj4gCj4gLSAgICByZXR1cm4geGVuZGV2aWNlbW9kZWxfb3AoZG1vZCwgZG9t aWQsIDEsICZvcCwgc2l6ZW9mKG9wKSk7Cj4gKyAgICByZXR1cm4geGVuZGV2aWNlbW9kZWxfb3Ao ZG1vZCwgZG9taWQsIDIsICZvcCwgc2l6ZW9mKG9wKSwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBleHRlbnRzLCBleHRlbnRzX3NpemUpOwo+ICt9Cj4gKwo+ICtpbnQgeGVuZGV2aWNl bW9kZWxfbW9kaWZpZWRfbWVtb3J5KAo+ICsgICAgeGVuZGV2aWNlbW9kZWxfaGFuZGxlICpkbW9k LCBkb21pZF90IGRvbWlkLCB1aW50NjRfdCBmaXJzdF9wZm4sCj4gKyAgICB1aW50MzJfdCBucikK PiArewo+ICsgICAgc3RydWN0IHhlbl9kbV9vcF9tb2RpZmllZF9tZW1vcnlfZXh0ZW50IGV4dGVu dDsKPiArCj4gKyAgICBleHRlbnQuZmlyc3RfcGZuID0gZmlyc3RfcGZuOwo+ICsgICAgZXh0ZW50 Lm5yID0gbnI7Cj4gKwo+ICsgICAgcmV0dXJuIHhlbmRldmljZW1vZGVsX21vZGlmaWVkX21lbW9y eV9idWxrKGRtb2QsIGRvbWlkLCAmZXh0ZW50LAo+IDEpOwo+ICB9Cj4gCj4gIGludCB4ZW5kZXZp Y2Vtb2RlbF9zZXRfbWVtX3R5cGUoCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZGV2aWNlbW9k ZWwvaW5jbHVkZS94ZW5kZXZpY2Vtb2RlbC5oCj4gYi90b29scy9saWJzL2RldmljZW1vZGVsL2lu Y2x1ZGUveGVuZGV2aWNlbW9kZWwuaAo+IGluZGV4IGIzZjYwMGUuLmI4OGQ3M2MgMTAwNjQ0Cj4g LS0tIGEvdG9vbHMvbGlicy9kZXZpY2Vtb2RlbC9pbmNsdWRlL3hlbmRldmljZW1vZGVsLmgKPiAr KysgYi90b29scy9saWJzL2RldmljZW1vZGVsL2luY2x1ZGUveGVuZGV2aWNlbW9kZWwuaAo+IEBA IC0yMzYsOCArMjM2LDggQEAgaW50IHhlbmRldmljZW1vZGVsX3RyYWNrX2RpcnR5X3ZyYW0oCj4g ICAgICB1aW50MzJfdCBuciwgdW5zaWduZWQgbG9uZyAqZGlydHlfYml0bWFwKTsKPiAKPiAgLyoq Cj4gLSAqIFRoaXMgZnVuY3Rpb24gbm90aWZpZXMgdGhlIGh5cGVydmlzb3IgdGhhdCBhIHNldCBv ZiBkb21haW4gcGFnZXMKPiAtICogaGF2ZSBiZWVuIG1vZGlmaWVkLgo+ICsgKiBUaGlzIGZ1bmN0 aW9uIG5vdGlmaWVzIHRoZSBoeXBlcnZpc29yIHRoYXQgYSBzZXQgb2YgY29udGlndW91cwo+ICsg KiBkb21haW4gcGFnZXMgaGF2ZSBiZWVuIG1vZGlmaWVkLgo+ICAgKgo+ICAgKiBAcGFybSBkbW9k IGEgaGFuZGxlIHRvIGFuIG9wZW4gZGV2aWNlbW9kZWwgaW50ZXJmYWNlLgo+ICAgKiBAcGFybSBk b21pZCB0aGUgZG9tYWluIGlkIHRvIGJlIHNlcnZpY2VkCj4gQEAgLTI0OSw2ICsyNDksMjIgQEAg aW50IHhlbmRldmljZW1vZGVsX21vZGlmaWVkX21lbW9yeSgKPiAgICAgIHhlbmRldmljZW1vZGVs X2hhbmRsZSAqZG1vZCwgZG9taWRfdCBkb21pZCwgdWludDY0X3QgZmlyc3RfcGZuLAo+ICAgICAg dWludDMyX3QgbnIpOwo+IAo+ICsKCkl0IGxvb2tzIGxpa2UgdGhpcyBibGFuayBsaW5lIGlzIGV4 dHJhbmVvdXMuCgo+ICsvKioKPiArICogVGhpcyBmdW5jdGlvbiBub3RpZmllcyB0aGUgaHlwZXJ2 aXNvciB0aGF0IGEgc2V0IG9mIGRpc2NvbnRpZ3VvdXMKPiArICogZG9tYWluIHBhZ2VzIGhhdmUg YmVlbiBtb2RpZmllZC4KPiArICoKPiArICogQHBhcm0gZG1vZCBhIGhhbmRsZSB0byBhbiBvcGVu IGRldmljZW1vZGVsIGludGVyZmFjZS4KPiArICogQHBhcm0gZG9taWQgdGhlIGRvbWFpbiBpZCB0 byBiZSBzZXJ2aWNlZAo+ICsgKiBAcGFybSBleHRlbnRzIGFuIGFycmF5IG9mIGV4dGVudCBzdHJ1 Y3RzLCB3aGljaCBlYWNoIGhvbGQKPiArICAgICAgICAgICAgICAgICBhIHN0YXJ0X3BmbiBhbmQg bnIgKG51bWJlciBvZiBwZm5zKS4KPiArICogQHBhcm0gbnIgdGhlIG51bWJlciBvZiBleHRlbnRz IGluIHRoZSBhcnJheQo+ICsgKiBAcmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZS4K PiArICovCj4gK2ludCB4ZW5kZXZpY2Vtb2RlbF9tb2RpZmllZF9tZW1vcnlfYnVsaygKPiArICAg IHhlbmRldmljZW1vZGVsX2hhbmRsZSAqZG1vZCwgZG9taWRfdCBkb21pZCwKPiArICAgIHN0cnVj dCB4ZW5fZG1fb3BfbW9kaWZpZWRfbWVtb3J5X2V4dGVudCBleHRlbnRzW10sIHVpbnQzMl90IG5y KTsKPiArCj4gIC8qKgo+ICAgKiBUaGlzIGZ1bmN0aW9uIG5vdGlmaWVzIHRoZSBoeXBlcnZpc29y IHRoYXQgYSBzZXQgb2YgZG9tYWluIHBhZ2VzCj4gICAqIGFyZSB0byBiZSB0cmVhdGVkIGluIGEg c3BlY2lmaWMgd2F5LiAoU2VlIHRoZSBkZWZpbml0aW9uIG9mCj4gZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9odm0vZG0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vZG0uYwo+IGluZGV4IDIxMjJjNDUu LjBjNGE4MjAgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9kbS5jCj4gKysrIGIveGVu L2FyY2gveDg2L2h2bS9kbS5jCj4gQEAgLTExOSw1NiArMTE5LDk2IEBAIHN0YXRpYyBpbnQgc2V0 X2lzYV9pcnFfbGV2ZWwoc3RydWN0IGRvbWFpbiAqZCwKPiB1aW50OF90IGlzYV9pcnEsCj4gIH0K PiAKPiAgc3RhdGljIGludCBtb2RpZmllZF9tZW1vcnkoc3RydWN0IGRvbWFpbiAqZCwKPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhlbl9kbV9vcF9tb2RpZmllZF9tZW1vcnkg KmRhdGEpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4ZW5fZG1fb3BfbW9k aWZpZWRfbWVtb3J5ICpoZWFkZXIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHhlbl9k bV9vcF9idWZfdCogYnVmKQo+ICB7Cj4gLSAgICB4ZW5fcGZuX3QgbGFzdF9wZm4gPSBkYXRhLT5m aXJzdF9wZm4gKyBkYXRhLT5uciAtIDE7Cj4gLSAgICB1bnNpZ25lZCBpbnQgaXRlciA9IDA7Cj4g LSAgICBpbnQgcmMgPSAwOwo+ICsgICAgLyogUHJvY2VzcyBtYXhpbXVtIG9mIDI1NSBwZm5zIGJl Zm9yZSBjaGVja2luZyBmb3IgY29udGludWF0aW9uICovCgoyNTUgb3IgMjU2PwoKPiArICAgIGNv bnN0IHVpbnQzMl90IG1heF9wZm5zID0gMHhmZjsKPiAKPiAtICAgIGlmICggKGRhdGEtPmZpcnN0 X3BmbiA+IGxhc3RfcGZuKSB8fAo+IC0gICAgICAgICAobGFzdF9wZm4gPiBkb21haW5fZ2V0X21h eGltdW1fZ3BmbihkKSkgKQo+IC0gICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsgICAgeGVuX3Bm bl90IGxhc3RfcGZuOwo+ICsgICAgaW50IHJjID0gMDsKPiArICAgIHVpbnQzMl90IG9mZnNldCA9 IGhlYWRlci0+b2Zmc2V0Owo+ICsgICAgdW5zaWduZWQgbG9uZyBwZm47Cj4gKyAgICB1bnNpZ25l ZCBsb25nIG1heF9wZm47Cj4gKyAgICB1bnNpZ25lZCBtYXhfbnI7Cj4gKyAgICB1aW50MzJfdCBy ZW1fcGZucyA9IG1heF9wZm5zOwo+IAo+ICAgICAgaWYgKCAhcGFnaW5nX21vZGVfbG9nX2RpcnR5 KGQpICkKPiAgICAgICAgICByZXR1cm4gMDsKPiAKPiAtICAgIHdoaWxlICggaXRlciA8IGRhdGEt Pm5yICkKPiArICAgIGlmICggKGJ1Zi0+c2l6ZSAvIHNpemVvZihzdHJ1Y3QgeGVuX2RtX29wX21v ZGlmaWVkX21lbW9yeV9leHRlbnQpKSA8Cj4gKyAgICAgICAgaGVhZGVyLT5ucl9leHRlbnRzICkK PiArICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArCj4gKyAgICB3aGlsZSAoIG9mZnNldCA8IGhl YWRlci0+bnJfZXh0ZW50cyApCj4gICAgICB7Cj4gLSAgICAgICAgdW5zaWduZWQgbG9uZyBwZm4g PSBkYXRhLT5maXJzdF9wZm4gKyBpdGVyOwo+IC0gICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBh Z2U7Cj4gKyAgICAgICAgc3RydWN0IHhlbl9kbV9vcF9tb2RpZmllZF9tZW1vcnlfZXh0ZW50IGV4 dGVudDsKPiAKPiAtICAgICAgICBwYWdlID0gZ2V0X3BhZ2VfZnJvbV9nZm4oZCwgcGZuLCBOVUxM LCBQMk1fVU5TSEFSRSk7Cj4gLSAgICAgICAgaWYgKCBwYWdlICkKPiArICAgICAgICBpZiAoIGNv cHlfZnJvbV9ndWVzdF9vZmZzZXQoJmV4dGVudCwgYnVmLT5oLCBvZmZzZXQsIDEpICkKPiArICAg ICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7Cj4gKwo+ICsgICAgICAgIGxhc3RfcGZuID0gZXh0ZW50 LmZpcnN0X3BmbiArIGV4dGVudC5uciAtIDE7Cj4gKwo+ICsgICAgICAgIGlmICggbGFzdF9wZm4g PiBkb21haW5fZ2V0X21heGltdW1fZ3BmbihkKSApCj4gKyAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOwo+ICsKPiArICAgICAgICBpZiAoIGV4dGVudC5uciA+IHJlbV9wZm5zICkKPiArICAgICAg ICAgICBtYXhfbnIgPSByZW1fcGZuczsKPiArICAgICAgICBlbHNlCj4gICAgICAgICAgewo+IC0g ICAgICAgICAgICBtZm5fdCBnbWZuID0gX21mbihwYWdlX3RvX21mbihwYWdlKSk7Cj4gLQo+IC0g ICAgICAgICAgICBwYWdpbmdfbWFya19kaXJ0eShkLCBnbWZuKTsKPiAtICAgICAgICAgICAgLyoK PiAtICAgICAgICAgICAgICogVGhlc2UgYXJlIG1vc3QgcHJvYmFibHkgbm90IHBhZ2UgdGFibGVz IGFueSBtb3JlCj4gLSAgICAgICAgICAgICAqIGRvbid0IHRha2UgYSBsb25nIHRpbWUgYW5kIGRv bid0IGRpZSBlaXRoZXIuCj4gLSAgICAgICAgICAgICAqLwo+IC0gICAgICAgICAgICBzaF9yZW1v dmVfc2hhZG93cyhkLCBnbWZuLCAxLCAwKTsKPiAtICAgICAgICAgICAgcHV0X3BhZ2UocGFnZSk7 Cj4gKyAgICAgICAgICAgIG1heF9uciA9IGV4dGVudC5ucjsKPiArICAgICAgICAgICAgb2Zmc2V0 Kys7Cj4gICAgICAgICAgfQo+IAo+IC0gICAgICAgIGl0ZXIrKzsKPiArICAgICAgICByZW1fcGZu cyAtPSBtYXhfbnI7Cj4gKyAgICAgICAgbWF4X3BmbiA9IGV4dGVudC5maXJzdF9wZm4gKyBtYXhf bnI7Cj4gCj4gLSAgICAgICAgLyoKPiAtICAgICAgICAgKiBDaGVjayBmb3IgY29udGludWF0aW9u IGV2ZXJ5IDI1NnRoIGl0ZXJhdGlvbiBhbmQgaWYgdGhlCj4gLSAgICAgICAgICogaXRlcmF0aW9u IGlzIG5vdCB0aGUgbGFzdC4KPiAtICAgICAgICAgKi8KPiAtICAgICAgICBpZiAoIChpdGVyIDwg ZGF0YS0+bnIpICYmICgoaXRlciAmIDB4ZmYpID09IDApICYmCj4gLSAgICAgICAgICAgICBoeXBl cmNhbGxfcHJlZW1wdF9jaGVjaygpICkKPiArICAgICAgICBwZm4gPSBleHRlbnQuZmlyc3RfcGZu Owo+ICsgICAgICAgIHdoaWxlICggcGZuIDwgbWF4X3BmbiApCj4gICAgICAgICAgewo+IC0gICAg ICAgICAgICBkYXRhLT5maXJzdF9wZm4gKz0gaXRlcjsKPiAtICAgICAgICAgICAgZGF0YS0+bnIg LT0gaXRlcjsKPiArICAgICAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKPiArICAgICAg ICAgICAgcGFnZSA9IGdldF9wYWdlX2Zyb21fZ2ZuKGQsIHBmbiwgTlVMTCwgUDJNX1VOU0hBUkUp Owo+ICsKPiArICAgICAgICAgICAgaWYgKCBwYWdlICkKPiArICAgICAgICAgICAgewo+ICsgICAg ICAgICAgICAgICAgbWZuX3QgZ21mbiA9IF9tZm4ocGFnZV90b19tZm4ocGFnZSkpOwo+ICsKPiAr ICAgICAgICAgICAgICAgIHBhZ2luZ19tYXJrX2RpcnR5KGQsIGdtZm4pOwo+ICsgICAgICAgICAg ICAgICAgLyoKPiArICAgICAgICAgICAgICAgICAqIFRoZXNlIGFyZSBtb3N0IHByb2JhYmx5IG5v dCBwYWdlIHRhYmxlcyBhbnkgbW9yZQo+ICsgICAgICAgICAgICAgICAgICogZG9uJ3QgdGFrZSBh IGxvbmcgdGltZSBhbmQgZG9uJ3QgZGllIGVpdGhlci4KPiArICAgICAgICAgICAgICAgICAqLwo+ ICsgICAgICAgICAgICAgICAgc2hfcmVtb3ZlX3NoYWRvd3MoZCwgZ21mbiwgMSwgMCk7Cj4gKyAg ICAgICAgICAgICAgICBwdXRfcGFnZShwYWdlKTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAg ICAgICBwZm4rKzsKPiArICAgICAgICB9Cj4gCj4gLSAgICAgICAgICAgIHJjID0gLUVSRVNUQVJU Owo+IC0gICAgICAgICAgICBicmVhazsKPiArICAgICAgICBpZiAoIG1heF9uciA8IGV4dGVudC5u ciApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICBleHRlbnQuZmlyc3RfcGZuICs9IG1heF9u cjsKPiArICAgICAgICAgICAgZXh0ZW50Lm5yLT0gbWF4X25yOwoKTWlzc2luZyBzcGFjZSBiZWZv cmUgLT0uCgo+ICsgICAgICAgICAgICBpZiAoIGNvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KGJ1Zi0+aCwg b2Zmc2V0LCAmZXh0ZW50LCAxKSApCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsK PiAgICAgICAgICB9Cj4gLSAgICB9Cj4gCj4gLSAgICByZXR1cm4gcmM7Cj4gKyAgICAgICAgLyoK PiArICAgICAgICAgKiBDaGVjayBmb3IgY29udGludWF0aW9uIGV2ZXJ5IDI1NnRoIHBmbiBhbmQg aWYgdGhlCj4gKyAgICAgICAgICogcGZuIGlzIG5vdCB0aGUgbGFzdC4KPiArICAgICAgICAgKi8K PiArCj4gKyAgICAgICAgaWYgKCAocmVtX3BmbnMgPT0gMCkgJiYgKG9mZnNldCA8PSBoZWFkZXIt Pm5yX2V4dGVudHMpICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIGlmICggaHlwZXJjYWxs X3ByZWVtcHRfY2hlY2soKSApCj4gKyAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgIGhl YWRlci0+b2Zmc2V0ID0gb2Zmc2V0Owo+ICsgICAgICAgICAgICAgICAgcmMgPSAtRVJFU1RBUlQ7 Cj4gKyAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgICAg ICByZW1fcGZucyArPSBtYXhfcGZuczsKPiArICAgICAgICB9Cj4gKyAgIH0KPiArICAgcmV0dXJu IHJjOwo+ICB9Cj4gCj4gIHN0YXRpYyBib29sIGFsbG93X3AybV90eXBlX2NoYW5nZShwMm1fdHlw ZV90IG9sZCwgcDJtX3R5cGVfdCBuZXcpCj4gQEAgLTQ0MSwxMyArNDgxLDggQEAgc3RhdGljIGlu dCBkbV9vcChkb21pZF90IGRvbWlkLAo+ICAgICAgICAgIHN0cnVjdCB4ZW5fZG1fb3BfbW9kaWZp ZWRfbWVtb3J5ICpkYXRhID0KPiAgICAgICAgICAgICAgJm9wLnUubW9kaWZpZWRfbWVtb3J5Owo+ IAo+IC0gICAgICAgIGNvbnN0X29wID0gZmFsc2U7Cj4gLQo+IC0gICAgICAgIHJjID0gLUVJTlZB TDsKPiAtICAgICAgICBpZiAoIGRhdGEtPnBhZCApCj4gLSAgICAgICAgICAgIGJyZWFrOwo+IC0K PiAtICAgICAgICByYyA9IG1vZGlmaWVkX21lbW9yeShkLCBkYXRhKTsKPiArICAgICAgICByYyA9 IG1vZGlmaWVkX21lbW9yeShkLCBkYXRhLCAmYnVmc1sxXSk7Cj4gKyAgICAgICAgY29uc3Rfb3Ag PSAocmMgIT0gLUVSRVNUQVJUKTsKPiAgICAgICAgICBicmVhazsKPiAgICAgIH0KPiAKPiBkaWZm IC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oCj4gYi94ZW4vaW5jbHVkZS9w dWJsaWMvaHZtL2RtX29wLmgKPiBpbmRleCBmNTRjZWNlLi4xYzYwMmIxIDEwMDY0NAo+IC0tLSBh L3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3B1Ymxp Yy9odm0vZG1fb3AuaAo+IEBAIC0yMzcsMTMgKzIzNywxOSBAQCBzdHJ1Y3QgeGVuX2RtX29wX3Nl dF9wY2lfbGlua19yb3V0ZSB7Cj4gICAqIFhFTl9ETU9QX21vZGlmaWVkX21lbW9yeTogTm90aWZ5 IHRoYXQgYSBzZXQgb2YgcGFnZXMgd2VyZSBtb2RpZmllZAo+IGJ5Cj4gICAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgYW4gZW11bGF0b3IuCj4gICAqCj4gLSAqIE5PVEU6IEluIHRoZSBldmVu dCBvZiBhIGNvbnRpbnVhdGlvbiwgdGhlIEBmaXJzdF9wZm4gaXMgc2V0IHRvIHRoZQo+IC0gKiAg ICAgICB2YWx1ZSBvZiB0aGUgcGZuIG9mIHRoZSByZW1haW5pbmcgc2V0IG9mIHBhZ2VzIGFuZCBA bnIgcmVkdWNlZAo+IC0gKiAgICAgICB0byB0aGUgc2l6ZSBvZiB0aGUgcmVtYWluaW5nIHNldC4K ClRoaXMgY29tbWVudCBzaG91bGQgcmVhbGx5IGJlIHRyYW5zZmVycmVkIGludG8gYSBjb21tZW50 IGJsb2NrIGZvciB4ZW5fZG1fb3BfbW9kaWZpZWRfbWVtb3J5X2V4dGVudCBiZWxvdyBzaW5jZSB0 aGUgZXh0ZW50cyBhcmUgbW9kaWZpZWQgaW4gdGhlIGV2ZW50IG9mIGEgY29udGludWF0aW9uLgoK PiArICogRE1PUCBidWYgMSBjb250YWlucyBhbiBhcnJheSBvZiB4ZW5fZG1fb3BfbW9kaWZpZWRf bWVtb3J5X2V4dGVudAo+IHdpdGgKPiArICogbnJfZXh0ZW50IGVudHJpZXMuCj4gKyAqCj4gKyAq IE9uIGNvbnRpbnVhdGlvbiwgQG9mZnNldCBpcyBzZXQgdG8gdGhlIG5leHQgZXh0ZW50IHRvIGJl IHByb2Nlc3NlZC4KPiAgICovCj4gICNkZWZpbmUgWEVOX0RNT1BfbW9kaWZpZWRfbWVtb3J5IDEx Cj4gCj4gIHN0cnVjdCB4ZW5fZG1fb3BfbW9kaWZpZWRfbWVtb3J5IHsKPiArICAgIHVpbnQzMl90 IG5yX2V4dGVudHM7IC8qIElOIC0gbnVtYmVyIG9mIGV4dGVudHMuICovCj4gKyAgICB1aW50MzJf dCBvZmZzZXQ7ICAgICAvKiBDYWxsZXIgbXVzdCBzZXQgdG8gMC4gKi8KCkFnYWluLCBJIHRoaW5r IGl0IHdvdWxkIGJlIGdvb2QgdG8gZXhwbGFpbiB0aGF0IHRoaXMgaXMgdXNlZCBmb3IgY29udGlu dWF0aW9ucyAodG8gaW5kaWNhdGUgdGhlIG5leHQgZXh0ZW50IHRvIHByb2Nlc3MpIHdoaWNoIGlz IHdoeSBpdCBtdXN0IGJlIHNldCB0byAwLgoKICBQYXVsCgo+ICt9Owo+ICsKPiArc3RydWN0IHhl bl9kbV9vcF9tb2RpZmllZF9tZW1vcnlfZXh0ZW50IHsKPiAgICAgIC8qIElOIC0gbnVtYmVyIG9m IGNvbnRpZ3VvdXMgcGFnZXMgbW9kaWZpZWQgKi8KPiAgICAgIHVpbnQzMl90IG5yOwo+ICAgICAg dWludDMyX3QgcGFkOwo+IC0tCj4gMS43LjEwLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK