From mboxrd@z Thu Jan 1 00:00:00 1970 From: Corneliu ZUZU Subject: Re: [PATCH 05/16] x86/monitor: relocate code more appropriately Date: Mon, 11 Jul 2016 09:19:28 +0300 Message-ID: References: <1468037509-6428-1-git-send-email-czuzu@bitdefender.com> <1468037707-6663-1-git-send-email-czuzu@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1468037707-6663-1-git-send-email-czuzu@bitdefender.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Kevin Tian , Tamas K Lengyel , Jan Beulich , Razvan Cojocaru , Andrew Cooper , Jun Nakajima List-Id: xen-devel@lists.xenproject.org VGhpcyB3YXMgMi84IGluIHRoZSBvbGQgdjMtc2VyaWVzICJ4ODYvdm0tZXZlbnQ6IEFkanVzdG1l bnRzICYgZml4ZXMiLgpUcmFuc2ZlcnJpbmcgY29kZS1yZXZpZXcgZnJvbSAiVGlhbiwgS2V2aW4g PGtldmluLnRpYW5AaW50ZWwuY29tPiIgKEp1bHkgCjExLCAyMDE2KSBhbmQgcmVzcG9uZGluZy4u LgoKCk9uIDcvOS8yMDE2IDc6MTUgQU0sIENvcm5lbGl1IFpVWlUgd3JvdGU6Cj4gRm9yIHJlYWRh YmlsaXR5Ogo+Cj4gKiBBZGQgZnVuY3Rpb24gbW9uaXRvcl9jdHJscmVnX3dyaXRlX2RhdGEoKSAo aW4geDg2L21vbml0b3IuYykgYW5kIHNlcGFyYXRlCj4gaGFuZGxpbmcgb2YgbW9uaXRvcl93cml0 ZV9kYXRhIHRoZXJlIChwcmV2aW91c2x5IGRvbmUgZGlyZWN0bHkgaW4KPiBodm1fZG9fcmVzdW1l KCkpLgo+Cj4gKiBTZXBhcmF0ZSBlbmFibGluZy9kaXNhYmxpbmcgb2YgQ1BVX0JBU0VEX0NSM19M T0FEX0VYSVRJTkcgZm9yIENSMyBtb25pdG9yCj4gdm0tZXZlbnRzIGZyb20gQ1IwIG5vZGUgQCB2 bXhfdXBkYXRlX2d1ZXN0X2NyKHYsIDApIGludG8gbmV3bHkgYWRkZWQgZnVuY3Rpb24KPiB2bXhf dm1fZXZlbnRfdXBkYXRlX2NyM190cmFwcyhkKTsgYWxzbywgZm9yIGEgYmV0dGVyIGludGVyZmFj ZSwgY3JlYXRlIGdlbmVyaWMKPiBmdW5jdGlvbnMgbW9uaXRvcl9jdHJscmVnX2FkanVzdF90cmFw cygpIGFuZCBtb25pdG9yX2N0cmxyZWdfZGlzYWJsZV90cmFwcygpIChpbgo+IHg4Ni9tb25pdG9y LmMpIHdoaWNoIGRlYWwgd2l0aCBzZXR0aW5nL3Vuc2V0dGluZyBhbnkgdHJhcHMgZm9yIGNyLXdy aXRlIG1vbml0b3IKPiB2bS1ldmVudHMuCj4KPiBTaWduZWQtb2ZmLWJ5OiBDb3JuZWxpdSBaVVpV IDxjenV6dUBiaXRkZWZlbmRlci5jb20+Cj4gLS0tCj4gICB4ZW4vYXJjaC94ODYvaHZtL2h2bS5j ICAgICAgICAgICAgfCA0NiArKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQo+ICAgeGVuL2FyY2gv eDg2L2h2bS92bXgvdm14LmMgICAgICAgIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tCj4gICB4ZW4vYXJjaC94ODYvbW9uaXRvci5jICAgICAgICAgICAgfCA2OCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KPiAgIHhlbi9pbmNsdWRlL2FzbS14ODYv aHZtL3ZteC92bXguaCB8ICAxICsKPiAgIHhlbi9pbmNsdWRlL2FzbS14ODYvbW9uaXRvci5oICAg ICB8ICAyICsrCj4gICA1IGZpbGVzIGNoYW5nZWQsIDEzNSBpbnNlcnRpb25zKCspLCA0MSBkZWxl dGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIveGVuL2Fy Y2gveDg2L2h2bS9odm0uYwo+IGluZGV4IDdmOTkwODcuLjc5YmExODUgMTAwNjQ0Cj4gLS0tIGEv eGVuL2FyY2gveDg2L2h2bS9odm0uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKPiBA QCAtNDczLDggKzQ3Myw2IEBAIHZvaWQgaHZtX2RvX3Jlc3VtZShzdHJ1Y3QgdmNwdSAqdikKPiAg IAo+ICAgICAgIGlmICggdW5saWtlbHkodi0+YXJjaC52bV9ldmVudCkgKQo+ICAgICAgIHsKPiAt ICAgICAgICBzdHJ1Y3QgbW9uaXRvcl93cml0ZV9kYXRhICp3ID0gJnYtPmFyY2gudm1fZXZlbnQt PndyaXRlX2RhdGE7Cj4gLQo+ICAgICAgICAgICBpZiAoIHVubGlrZWx5KHYtPmFyY2gudm1fZXZl bnQtPmVtdWxhdGVfZmxhZ3MpICkKPiAgICAgICAgICAgewo+ICAgICAgICAgICAgICAgZW51bSBl bXVsX2tpbmQga2luZCA9IEVNVUxfS0lORF9OT1JNQUw7Cj4gQEAgLTQ5MiwyOSArNDkwLDcgQEAg dm9pZCBodm1fZG9fcmVzdW1lKHN0cnVjdCB2Y3B1ICp2KQo+ICAgICAgICAgICAgICAgdi0+YXJj aC52bV9ldmVudC0+ZW11bGF0ZV9mbGFncyA9IDA7Cj4gICAgICAgICAgIH0KPiAgIAo+IC0gICAg ICAgIGlmICggdy0+ZG9fd3JpdGUubXNyICkKPiAtICAgICAgICB7Cj4gLSAgICAgICAgICAgIGh2 bV9tc3Jfd3JpdGVfaW50ZXJjZXB0KHctPm1zciwgdy0+dmFsdWUsIDApOwo+IC0gICAgICAgICAg ICB3LT5kb193cml0ZS5tc3IgPSAwOwo+IC0gICAgICAgIH0KPiAtCj4gLSAgICAgICAgaWYgKCB3 LT5kb193cml0ZS5jcjAgKQo+IC0gICAgICAgIHsKPiAtICAgICAgICAgICAgaHZtX3NldF9jcjAo dy0+Y3IwLCAwKTsKPiAtICAgICAgICAgICAgdy0+ZG9fd3JpdGUuY3IwID0gMDsKPiAtICAgICAg ICB9Cj4gLQo+IC0gICAgICAgIGlmICggdy0+ZG9fd3JpdGUuY3I0ICkKPiAtICAgICAgICB7Cj4g LSAgICAgICAgICAgIGh2bV9zZXRfY3I0KHctPmNyNCwgMCk7Cj4gLSAgICAgICAgICAgIHctPmRv X3dyaXRlLmNyNCA9IDA7Cj4gLSAgICAgICAgfQo+IC0KPiAtICAgICAgICBpZiAoIHctPmRvX3dy aXRlLmNyMyApCj4gLSAgICAgICAgewo+IC0gICAgICAgICAgICBodm1fc2V0X2NyMyh3LT5jcjMs IDApOwo+IC0gICAgICAgICAgICB3LT5kb193cml0ZS5jcjMgPSAwOwo+IC0gICAgICAgIH0KPiAr ICAgICAgICBtb25pdG9yX2N0cmxyZWdfd3JpdGVfZGF0YSh2KTsKPiAgICAgICB9Cj4gICAKPiAg ICAgICAvKiBJbmplY3QgcGVuZGluZyBody9zdyB0cmFwICovCj4gQEAgLTIyMDQsNyArMjE4MCwx MCBAQCBpbnQgaHZtX3NldF9jcjAodW5zaWduZWQgbG9uZyB2YWx1ZSwgYm9vbF90IG1heV9kZWZl cikKPiAgIAo+ICAgICAgICAgICBpZiAoIGh2bV9tb25pdG9yX2NyWChDUjAsIHZhbHVlLCBvbGRf dmFsdWUpICkKPiAgICAgICAgICAgewo+IC0gICAgICAgICAgICAvKiBUaGUgYWN0dWFsIHdyaXRl IHdpbGwgb2NjdXIgaW4gaHZtX2RvX3Jlc3VtZSgpLCBpZiBwZXJtaXR0ZWQuICovCj4gKyAgICAg ICAgICAgIC8qCj4gKyAgICAgICAgICAgICAqIFRoZSBhY3R1YWwgd3JpdGUgd2lsbCBvY2N1ciBp biBtb25pdG9yX2N0cmxyZWdfd3JpdGVfZGF0YSgpLCBpZgo+ICsgICAgICAgICAgICAgKiBwZXJt aXR0ZWQuCj4gKyAgICAgICAgICAgICAqLwo+ICAgICAgICAgICAgICAgdi0+YXJjaC52bV9ldmVu dC0+d3JpdGVfZGF0YS5kb193cml0ZS5jcjAgPSAxOwo+ICAgICAgICAgICAgICAgdi0+YXJjaC52 bV9ldmVudC0+d3JpdGVfZGF0YS5jcjAgPSB2YWx1ZTsKPiAgIAo+IEBAIC0yMzA2LDcgKzIyODUs MTAgQEAgaW50IGh2bV9zZXRfY3IzKHVuc2lnbmVkIGxvbmcgdmFsdWUsIGJvb2xfdCBtYXlfZGVm ZXIpCj4gICAKPiAgICAgICAgICAgaWYgKCBodm1fbW9uaXRvcl9jclgoQ1IzLCB2YWx1ZSwgb2xk KSApCj4gICAgICAgICAgIHsKPiAtICAgICAgICAgICAgLyogVGhlIGFjdHVhbCB3cml0ZSB3aWxs IG9jY3VyIGluIGh2bV9kb19yZXN1bWUoKSwgaWYgcGVybWl0dGVkLiAqLwo+ICsgICAgICAgICAg ICAvKgo+ICsgICAgICAgICAgICAgKiBUaGUgYWN0dWFsIHdyaXRlIHdpbGwgb2NjdXIgaW4gbW9u aXRvcl9jdHJscmVnX3dyaXRlX2RhdGEoKSwgaWYKPiArICAgICAgICAgICAgICogcGVybWl0dGVk Lgo+ICsgICAgICAgICAgICAgKi8KPiAgICAgICAgICAgICAgIHYtPmFyY2gudm1fZXZlbnQtPndy aXRlX2RhdGEuZG9fd3JpdGUuY3IzID0gMTsKPiAgICAgICAgICAgICAgIHYtPmFyY2gudm1fZXZl bnQtPndyaXRlX2RhdGEuY3IzID0gdmFsdWU7Cj4gICAKPiBAQCAtMjM4Niw3ICsyMzY4LDEwIEBA IGludCBodm1fc2V0X2NyNCh1bnNpZ25lZCBsb25nIHZhbHVlLCBib29sX3QgbWF5X2RlZmVyKQo+ ICAgCj4gICAgICAgICAgIGlmICggaHZtX21vbml0b3JfY3JYKENSNCwgdmFsdWUsIG9sZF9jcikg KQo+ICAgICAgICAgICB7Cj4gLSAgICAgICAgICAgIC8qIFRoZSBhY3R1YWwgd3JpdGUgd2lsbCBv Y2N1ciBpbiBodm1fZG9fcmVzdW1lKCksIGlmIHBlcm1pdHRlZC4gKi8KPiArICAgICAgICAgICAg LyoKPiArICAgICAgICAgICAgICogVGhlIGFjdHVhbCB3cml0ZSB3aWxsIG9jY3VyIGluIG1vbml0 b3JfY3RybHJlZ193cml0ZV9kYXRhKCksIGlmCj4gKyAgICAgICAgICAgICAqIHBlcm1pdHRlZC4K PiArICAgICAgICAgICAgICovCj4gICAgICAgICAgICAgICB2LT5hcmNoLnZtX2V2ZW50LT53cml0 ZV9kYXRhLmRvX3dyaXRlLmNyNCA9IDE7Cj4gICAgICAgICAgICAgICB2LT5hcmNoLnZtX2V2ZW50 LT53cml0ZV9kYXRhLmNyNCA9IHZhbHVlOwo+ICAgCj4gQEAgLTM3NjUsNyArMzc1MCwxMCBAQCBp bnQgaHZtX21zcl93cml0ZV9pbnRlcmNlcHQodW5zaWduZWQgaW50IG1zciwgdWludDY0X3QgbXNy X2NvbnRlbnQsCj4gICAgICAgewo+ICAgICAgICAgICBBU1NFUlQodi0+YXJjaC52bV9ldmVudCk7 Cj4gICAKPiAtICAgICAgICAvKiBUaGUgYWN0dWFsIHdyaXRlIHdpbGwgb2NjdXIgaW4gaHZtX2Rv X3Jlc3VtZSgpIChpZiBwZXJtaXR0ZWQpLiAqLwo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICog VGhlIGFjdHVhbCB3cml0ZSB3aWxsIG9jY3VyIGluIG1vbml0b3JfY3RybHJlZ193cml0ZV9kYXRh KCksIGlmCj4gKyAgICAgICAgICogcGVybWl0dGVkLgo+ICsgICAgICAgICAqLwo+ICAgICAgICAg ICB2LT5hcmNoLnZtX2V2ZW50LT53cml0ZV9kYXRhLmRvX3dyaXRlLm1zciA9IDE7Cj4gICAgICAg ICAgIHYtPmFyY2gudm1fZXZlbnQtPndyaXRlX2RhdGEubXNyID0gbXNyOwo+ICAgICAgICAgICB2 LT5hcmNoLnZtX2V2ZW50LT53cml0ZV9kYXRhLnZhbHVlID0gbXNyX2NvbnRlbnQ7Cj4gZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jIGIveGVuL2FyY2gveDg2L2h2bS92bXgv dm14LmMKPiBpbmRleCAwNzk4MjQ1Li43YTMxNTgyIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4 Ni9odm0vdm14L3ZteC5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKPiBAQCAt MTQ0MSwxMSArMTQ0MSw2IEBAIHN0YXRpYyB2b2lkIHZteF91cGRhdGVfZ3Vlc3RfY3Ioc3RydWN0 IHZjcHUgKnYsIHVuc2lnbmVkIGludCBjcikKPiAgICAgICAgICAgICAgIGlmICggIWh2bV9wYWdp bmdfZW5hYmxlZCh2KSAmJiAhdm14X3VucmVzdHJpY3RlZF9ndWVzdCh2KSApCj4gICAgICAgICAg ICAgICAgICAgdi0+YXJjaC5odm1fdm14LmV4ZWNfY29udHJvbCB8PSBjcjNfY3RsczsKPiAgIAo+ IC0gICAgICAgICAgICAvKiBUcmFwIENSMyB1cGRhdGVzIGlmIENSMyBtZW1vcnkgZXZlbnRzIGFy ZSBlbmFibGVkLiAqLwo+IC0gICAgICAgICAgICBpZiAoIHYtPmRvbWFpbi0+YXJjaC5tb25pdG9y LndyaXRlX2N0cmxyZWdfZW5hYmxlZCAmCj4gLSAgICAgICAgICAgICAgICAgbW9uaXRvcl9jdHJs cmVnX2JpdG1hc2soVk1fRVZFTlRfWDg2X0NSMykgKQo+IC0gICAgICAgICAgICAgICAgdi0+YXJj aC5odm1fdm14LmV4ZWNfY29udHJvbCB8PSBDUFVfQkFTRURfQ1IzX0xPQURfRVhJVElORzsKPiAt Cj4gICAgICAgICAgICAgICBpZiAoIG9sZF9jdGxzICE9IHYtPmFyY2guaHZtX3ZteC5leGVjX2Nv bnRyb2wgKQo+ICAgICAgICAgICAgICAgICAgIHZteF91cGRhdGVfY3B1X2V4ZWNfY29udHJvbCh2 KTsKPiAgICAgICAgICAgfQo+IEBAIC0zODk4LDYgKzM4OTMsNjAgQEAgdm9pZCB2bXhfdm1lbnRl cl9oZWxwZXIoY29uc3Qgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCj4gICB9Cj4gICAKPiAg IC8qCj4gKyAqIEFkanVzdHMgZG9tYWluIENSMyBsb2FkLWV4aXRpbmcgZXhlY3V0aW9uIGNvbnRy b2wgZm9yIENSMy13cml0ZSBtb25pdG9yCj4gKyAqIHZtLWV2ZW50Lgo+ICsgKi8KPiArdm9pZCB2 bXhfdm1fZXZlbnRfdXBkYXRlX2NyM190cmFwcyhjb25zdCBzdHJ1Y3QgZG9tYWluICpkKQo+ICt7 Cj4gKyAgICBzdHJ1Y3QgdmNwdSAqdjsKPiArICAgIHN0cnVjdCBhcmNoX3ZteF9zdHJ1Y3QgKmF2 bXg7CiAgICAgW0tldmluIHdyb3RlXToKCgliZXR0ZXIgbW92ZSB0byBpbm5lciBsYXRlciBsb29w LgoKLS0tCgoKQWNrLgoKCj4gKyAgICB1bnNpZ25lZCBpbnQgY3IzX2JpdG1hc2s7Cj4gKyAgICBi b29sX3QgY3IzX3ZtZXZlbnQsIGNyM19sZGV4aXQ7Cj4gKwo+ICsgICAgLyogRG9tYWluIG11c3Qg YmUgcGF1c2VkLiAqLwo+ICsgICAgQVNTRVJUKGF0b21pY19yZWFkKCZkLT5wYXVzZV9jb3VudCkp OwoKICAgICBbS2V2aW4gd3JvdGVdOgoKCVRoZSBjb21tZW50IGRvZXNuJ3QgYWRkIG1vcmUgaW5m byB0aGFuIHRoZSBjb2RlIGl0c2VsZiwgdW5sZXNzIHlvdSB3YW50IHRvCglleHBsYWluIHRoZSBy ZWFzb24gd2h5IGRvbWFpbiBtdXN0IGJlIHBhdXNlZCBoZXJlLgotLS0KCgpBY2ssIHdpbGwgcmVt b3ZlIHRoZSBjb21tZW50IChvciBleHBsYWluIHdoeSB0aGUgZG9tYWluIGlzIHBhdXNlZDogcHJv YmFibHkgYmVjYXVzZSB3ZSdyZSB3cml0aW5nIGV4ZWNfY29udHJvbCBvZiBhbGwgaXRzIHZjcHVz KS4KCgo+ICsKPiArICAgIC8qIE5vbi1oYXAgZG9tYWlucyB0cmFwIENSMyB3cml0ZXMgdW5jb25k aXRpb25hbGx5LiAqLwo+ICsgICAgaWYgKCAhcGFnaW5nX21vZGVfaGFwKGQpICkKPiArICAgIHsK PiArI2lmbmRlZiBOREVCVUcKPiArICAgICAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCj4gKyAg ICAgICAgICAgIEFTU0VSVCh2LT5hcmNoLmh2bV92bXguZXhlY19jb250cm9sICYgQ1BVX0JBU0VE X0NSM19MT0FEX0VYSVRJTkcpOwo+ICsjZW5kaWYKPiArICAgICAgICByZXR1cm47Cj4gKyAgICB9 Cj4gKwo+ICsgICAgY3IzX2JpdG1hc2sgPSBtb25pdG9yX2N0cmxyZWdfYml0bWFzayhWTV9FVkVO VF9YODZfQ1IzKTsKPiArICAgIGNyM192bWV2ZW50ID0gISEoZC0+YXJjaC5tb25pdG9yLndyaXRl X2N0cmxyZWdfZW5hYmxlZCAmIGNyM19iaXRtYXNrKTsKPiArCj4gKyAgICBmb3JfZWFjaF92Y3B1 ICggZCwgdiApCj4gKyAgICB7Cj4gKyAgICAgICAgYXZteCA9ICZ2LT5hcmNoLmh2bV92bXg7Cj4g KyAgICAgICAgY3IzX2xkZXhpdCA9ICEhKGF2bXgtPmV4ZWNfY29udHJvbCAmIENQVV9CQVNFRF9D UjNfTE9BRF9FWElUSU5HKTsKPiArCj4gKyAgICAgICAgaWYgKCBjcjNfdm1ldmVudCA9PSBjcjNf bGRleGl0ICkKPiArICAgICAgICAgICAgY29udGludWU7Cj4gKwo+ICsgICAgICAgIC8qCj4gKyAg ICAgICAgICogSWYgZG9tYWluIHBhZ2luZyBpcyBkaXNhYmxlZCAoQ1IwLlBHPTApIGFuZAo+ICsg ICAgICAgICAqIHRoZSBkb21haW4gaXMgbm90IGluIHJlYWwtbW9kZSwgdGhlbiBDUjMgbG9hZC1l eGl0aW5nCj4gKyAgICAgICAgICogbXVzdCByZW1haW4gZW5hYmxlZCAoc2VlIHZteF91cGRhdGVf Z3Vlc3RfY3IodiwgY3IpIHdoZW4gY3IgPSAwKS4KPiArICAgICAgICAgKi8KCiAgICAgW0tldmlu IHdyb3RlXToKCglQbGVhc2UgZ2l2ZSB0aGUgcmVhbCBpbmZvcm1hdGl2ZSBtZXNzYWdlIGhlcmUg aW5zdGVhZCBvZiBhc2tpbmcgcGVvcGxlIHRvCglsb29rIGF0IG90aGVyIHBsYWNlCi0tLQoKCkkg b25seSBub3cgcmVhbGl6ZWQgSSBtaWdodCBoYXZlIG1pc3Rha2VubHkgYXNzdW1lZCBzb21ldGhp bmcgd2hlbiB3cml0aW5nIHVwIHRoaXMgZnVuY3Rpb24uCkknbGwgYW1lbmQgdGhhdCBpbiBhIHYy IGFuZCBjb25zaWRlciBtYWtpbmcgdGhpcyBjb21tZW50IGNsZWFyZXIgKHdpbGwgYXNrIGZvciBm ZWVkYmFjayBmcm9tIHlvdSBhZ2FpbiBoZXJlIGJlZm9yZSBzZW5kaW5nIHYyKS4KCgo+ICsgICAg ICAgIGlmICggY3IzX2xkZXhpdCAmJiAhaHZtX3BhZ2luZ19lbmFibGVkKHYpICYmICF2bXhfdW5y ZXN0cmljdGVkX2d1ZXN0KHYpICkKPiArICAgICAgICAgICAgY29udGludWU7CiAgICAgW0tldmlu IHdyb3RlXToKCglpZiAhY3IzX2xkZXhpdCBpcyBub3QgZXhwZWN0ZWQgdG8gb2NjdXIgaW4gc3Vj aCBzY2VuYXJpbywgaXMgaXQgbW9yZSBzdHJpY3QgYXMgYmVsb3c/CgoJaWYgKCAhaHZtX3BhZ2lu Z19lbmFibGVkKHYpICYmICF2bXhfdW5yZXN0cmljdGVkX2d1ZXN0KHYpICkKCXsKCQlBU1NFUlQo Y3IzX2xkZXhpdCk7CgkJY29udGludWU7Cgl9Ci0tLQoKVGhhdCBhY3R1YWxseSBzZWVtcyB0byBi ZSBjb3JyZWN0LCBJIHRob3VnaHQgaXQgd2FzIHBvc3NpYmxlIHRvIGhhdmUgQ1IzIApsb2FkLWV4 aXRpbmcgZGlzYWJsZWQgd2l0aCB0aGUgYWJvdmUgY29uZGl0aW9uIHRydWUgKGJ5IGxvb2tpbmcg QCBvbGQgCnRoZSBjb2RlKS4gSSBtdXN0IGF0dGVudGl2ZWx5IHJlLXJldmlldyB0aGlzIGVudGly ZSBmdW5jdGlvbiBzbyB0aGF0IGl0IApwcmVzZXJ2ZXMgdGhlIG9sZCBiZWhhdmlvci4KCj4gKwo+ ICsgICAgICAgIGlmICggY3IzX3ZtZXZlbnQgKQo+ICsgICAgICAgICAgICBhdm14LT5leGVjX2Nv bnRyb2wgfD0gQ1BVX0JBU0VEX0NSM19MT0FEX0VYSVRJTkc7Cj4gKyAgICAgICAgZWxzZQo+ICsg ICAgICAgICAgICBhdm14LT5leGVjX2NvbnRyb2wgJj0gfkNQVV9CQVNFRF9DUjNfTE9BRF9FWElU SU5HOwo+ICsKPiArICAgICAgICB2bXhfdm1jc19lbnRlcih2KTsKPiArICAgICAgICB2bXhfdXBk YXRlX2NwdV9leGVjX2NvbnRyb2wodik7Cj4gKyAgICAgICAgdm14X3ZtY3NfZXhpdCh2KTsKPiAr ICAgIH0KPiArfQo+ICsKPiArLyoKPiAgICAqIExvY2FsIHZhcmlhYmxlczoKPiAgICAqIG1vZGU6 IEMKPiAgICAqIGMtZmlsZS1zdHlsZTogIkJTRCIKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L21vbml0b3IuYyBiL3hlbi9hcmNoL3g4Ni9tb25pdG9yLmMKPiBpbmRleCAwNmQyMWIxLi4yOTE4 OGU1IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tb25pdG9yLmMKPiArKysgYi94ZW4vYXJj aC94ODYvbW9uaXRvci5jCj4gQEAgLTE5LDEwICsxOSwzOSBAQAo+ICAgICogTGljZW5zZSBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+Lgo+ICAgICovCj4gICAKPiArI2luY2x1ZGUgPGFzbS9odm0vdm14L3ZteC5oPgo+ICAg I2luY2x1ZGUgPGFzbS9tb25pdG9yLmg+Cj4gICAjaW5jbHVkZSA8YXNtL3ZtX2V2ZW50Lmg+Cj4g ICAjaW5jbHVkZSA8cHVibGljL3ZtX2V2ZW50Lmg+Cj4gICAKPiArc3RhdGljIGlubGluZQo+ICt2 b2lkIG1vbml0b3JfY3RybHJlZ19hZGp1c3RfdHJhcHMoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgaW50IGluZGV4KQo+ICt7Cj4gKyAgICAvKiBGb3Igbm93LCBWTVggb25seS4gKi8KPiArICAg IEFTU0VSVChjcHVfaGFzX3ZteCk7Cj4gKwo+ICsgICAgLyogT3RoZXIgQ1JzIHRoYW4gQ1IzIGFy ZSBhbHdheXMgdHJhcHBlZC4gKi8KPiArICAgIGlmICggVk1fRVZFTlRfWDg2X0NSMyA9PSBpbmRl eCApCj4gKyAgICAgICAgdm14X3ZtX2V2ZW50X3VwZGF0ZV9jcjNfdHJhcHMoZCk7CiAgICAgW0tl dmluIHdyb3RlXToKCglQbGVhc2UgYWRkIGFib3ZlIGludG8gYSBodm0gZnVuY3Rpb24gaW5zdGVh ZCBvZiBkaXJlY3RseSBjYWxsaW5nCgl2bXggaW4gY29tbW9uIGZpbGUuIChvdGhlciBhcmNoIGNh biBoYXZlIGl0IHVuaW1wbGVtZW50ZWQpLgoJVGhlbiB5b3UgZG9uJ3QgbmVlZCBjaGFuZ2UgdGhp cyBjb21tb24gY29kZSBhZ2FpbiBsYXRlciB3aGVuCglvdGhlciBhcmNocyBhcmUgYWRkZWQKCi0t LQoKClRoaXMgaXMgbm90IGNvbW1vbiBjb2RlLCBpdCdzIGluIGFyY2gveDg2L21vbml0b3IuYyAo PykgYW5kIGN1cnJlbnRseSwgCmFzIHRoZSBhYm92ZSBBU1NFUlQgaW5kaWNhdGVzLCBvbmx5IFZN WCBpcyBzdXBwb3J0ZWQuIElmIGluIHRoZSBmdXR1cmUgCnN1cHBvcnQgZm9yIFNWTSBmb3IgZXhh bXBsZSB3aWxsIGJlIGFkZGVkLCB0aGVuIHRoZSBodm0gbW92ZSB5b3Ugc3VnZ2VzdCAKbXVzdCBi ZSBkb25lIChKYW4gYWxzbyBzdWdnZXN0ZWQgdGhpcykuCk9yLCBJIG9ubHkgbm93IHJlYWxpemUs IGlmIHlvdSBndXlzIHByZWZlciBkb2luZyB0aGlzIG5vdyBJIGNvdWxkIGFkZCBhIAp2bV9ldmVu dF91cGRhdGVfY3IzX3RyYXBzIGZpZWxkIGluIGh2bV9mdW5jdGlvbl90YWJsZSwgYnV0IEJVRygp IGluIHRoZSAKU1ZNIG9uZS4uCgo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgbW9uaXRv cl9jdHJscmVnX2Rpc2FibGVfdHJhcHMoc3RydWN0IGRvbWFpbiAqZCkKPiArewo+ICsgICAgdW5z aWduZWQgaW50IG9sZCA9IGQtPmFyY2gubW9uaXRvci53cml0ZV9jdHJscmVnX2VuYWJsZWQ7Cj4g Kwo+ICsgICAgZC0+YXJjaC5tb25pdG9yLndyaXRlX2N0cmxyZWdfZW5hYmxlZCA9IDA7Cj4gKwo+ ICsgICAgaWYgKCBvbGQgKQo+ICsgICAgewo+ICsgICAgICAgIC8qIEZvciBub3csIFZNWCBvbmx5 LiAqLwo+ICsgICAgICAgIEFTU0VSVChjcHVfaGFzX3ZteCk7Cj4gKwo+ICsgICAgICAgIC8qIFdh cyBDUjMgbG9hZC1leGl0aW5nIGVuYWJsZWQgZHVlIHRvIG1vbml0b3Jpbmc/ICovCj4gKyAgICAg ICAgaWYgKCBvbGQgJiBtb25pdG9yX2N0cmxyZWdfYml0bWFzayhWTV9FVkVOVF9YODZfQ1IzKSAp Cj4gKyAgICAgICAgICAgIHZteF92bV9ldmVudF91cGRhdGVfY3IzX3RyYXBzKGQpOwo+ICsgICAg fQo+ICt9Cj4gKwo+ICAgaW50IG1vbml0b3JfaW5pdF9kb21haW4oc3RydWN0IGRvbWFpbiAqZCkK PiAgIHsKPiAgICAgICBpZiAoICFkLT5hcmNoLm1vbml0b3IubXNyX2JpdG1hcCApCj4gQEAgLTM4 LDYgKzY3LDggQEAgdm9pZCBtb25pdG9yX2NsZWFudXBfZG9tYWluKHN0cnVjdCBkb21haW4gKmQp Cj4gICB7Cj4gICAgICAgeGZyZWUoZC0+YXJjaC5tb25pdG9yLm1zcl9iaXRtYXApOwo+ICAgCj4g KyAgICBtb25pdG9yX2N0cmxyZWdfZGlzYWJsZV90cmFwcyhkKTsKPiArCj4gICAgICAgbWVtc2V0 KCZkLT5hcmNoLm1vbml0b3IsIDAsIHNpemVvZihkLT5hcmNoLm1vbml0b3IpKTsKPiAgICAgICBt ZW1zZXQoJmQtPm1vbml0b3IsIDAsIHNpemVvZihkLT5tb25pdG9yKSk7Cj4gICB9Cj4gQEAgLTc5 LDYgKzExMCwzNSBAQCB2b2lkIG1vbml0b3JfY3RybHJlZ193cml0ZV9yZXN1bWUoc3RydWN0IHZj cHUgKnYsIHZtX2V2ZW50X3Jlc3BvbnNlX3QgKnJzcCkKPiAgICAgICB9Cj4gICB9Cj4gICAKPiAr dm9pZCBtb25pdG9yX2N0cmxyZWdfd3JpdGVfZGF0YShzdHJ1Y3QgdmNwdSAqdikKPiArewo+ICsg ICAgc3RydWN0IG1vbml0b3Jfd3JpdGVfZGF0YSAqdyA9ICZ2LT5hcmNoLnZtX2V2ZW50LT53cml0 ZV9kYXRhOwo+ICsKPiArICAgIGlmICggdy0+ZG9fd3JpdGUubXNyICkKPiArICAgIHsKPiArICAg ICAgICBodm1fbXNyX3dyaXRlX2ludGVyY2VwdCh3LT5tc3IsIHctPnZhbHVlLCAwKTsKPiArICAg ICAgICB3LT5kb193cml0ZS5tc3IgPSAwOwo+ICsgICAgfQo+ICsKPiArICAgIGlmICggdy0+ZG9f d3JpdGUuY3IwICkKPiArICAgIHsKPiArICAgICAgICBodm1fc2V0X2NyMCh3LT5jcjAsIDApOwo+ ICsgICAgICAgIHctPmRvX3dyaXRlLmNyMCA9IDA7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKCB3 LT5kb193cml0ZS5jcjQgKQo+ICsgICAgewo+ICsgICAgICAgIGh2bV9zZXRfY3I0KHctPmNyNCwg MCk7Cj4gKyAgICAgICAgdy0+ZG9fd3JpdGUuY3I0ID0gMDsKPiArICAgIH0KPiArCj4gKyAgICBp ZiAoIHctPmRvX3dyaXRlLmNyMyApCj4gKyAgICB7Cj4gKyAgICAgICAgaHZtX3NldF9jcjMody0+ Y3IzLCAwKTsKPiArICAgICAgICB3LT5kb193cml0ZS5jcjMgPSAwOwo+ICsgICAgfQo+ICt9Cj4g Kwo+ICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgKm1vbml0b3JfYml0bWFwX2Zvcl9tc3IoY29uc3Qg c3RydWN0IGRvbWFpbiAqZCwgdTMyICptc3IpCj4gICB7Cj4gICAgICAgQVNTRVJUKGQtPmFyY2gu bW9uaXRvci5tc3JfYml0bWFwICYmIG1zcik7Cj4gQEAgLTE5NywxMyArMjU3LDcgQEAgaW50IGFy Y2hfbW9uaXRvcl9kb21jdGxfZXZlbnQoc3RydWN0IGRvbWFpbiAqZCwKPiAgICAgICAgICAgZWxz ZQo+ICAgICAgICAgICAgICAgYWQtPm1vbml0b3Iud3JpdGVfY3RybHJlZ19lbmFibGVkICY9IH5j dHJscmVnX2JpdG1hc2s7Cj4gICAKPiAtICAgICAgICBpZiAoIFZNX0VWRU5UX1g4Nl9DUjMgPT0g bW9wLT51Lm1vdl90b19jci5pbmRleCApCj4gLSAgICAgICAgewo+IC0gICAgICAgICAgICBzdHJ1 Y3QgdmNwdSAqdjsKPiAtICAgICAgICAgICAgLyogTGF0Y2hlcyBuZXcgQ1IzIG1hc2sgdGhyb3Vn aCBDUjAgY29kZS4gKi8KPiAtICAgICAgICAgICAgZm9yX2VhY2hfdmNwdSAoIGQsIHYgKQo+IC0g ICAgICAgICAgICAgICAgaHZtX3VwZGF0ZV9ndWVzdF9jcih2LCAwKTsKPiAtICAgICAgICB9Cj4g KyAgICAgICAgbW9uaXRvcl9jdHJscmVnX2FkanVzdF90cmFwcyhkLCBtb3AtPnUubW92X3RvX2Ny LmluZGV4KTsKPiAgIAo+ICAgICAgICAgICBkb21haW5fdW5wYXVzZShkKTsKPiAgIAo+IGRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92bXgvdm14LmggYi94ZW4vaW5jbHVkZS9h c20teDg2L2h2bS92bXgvdm14LmgKPiBpbmRleCAzNTliMmE5Li4zMDFkZjU2IDEwMDY0NAo+IC0t LSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZteC92bXguaAo+ICsrKyBiL3hlbi9pbmNsdWRl L2FzbS14ODYvaHZtL3ZteC92bXguaAo+IEBAIC0xMDEsNiArMTAxLDcgQEAgdm9pZCB2bXhfdXBk YXRlX2RlYnVnX3N0YXRlKHN0cnVjdCB2Y3B1ICp2KTsKPiAgIHZvaWQgdm14X3VwZGF0ZV9leGNl cHRpb25fYml0bWFwKHN0cnVjdCB2Y3B1ICp2KTsKPiAgIHZvaWQgdm14X3VwZGF0ZV9jcHVfZXhl Y19jb250cm9sKHN0cnVjdCB2Y3B1ICp2KTsKPiAgIHZvaWQgdm14X3VwZGF0ZV9zZWNvbmRhcnlf ZXhlY19jb250cm9sKHN0cnVjdCB2Y3B1ICp2KTsKPiArdm9pZCB2bXhfdm1fZXZlbnRfdXBkYXRl X2NyM190cmFwcyhjb25zdCBzdHJ1Y3QgZG9tYWluICpkKTsKPiAgIAo+ICAgI2RlZmluZSBQT1NU RURfSU5UUl9PTiAgMAo+ICAgI2RlZmluZSBQT1NURURfSU5UUl9TTiAgMQo+IGRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9hc20teDg2L21vbml0b3IuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW9u aXRvci5oCj4gaW5kZXggYWRjYTM3OC4uM2FlMjRkZCAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVk ZS9hc20teDg2L21vbml0b3IuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW9uaXRvci5o Cj4gQEAgLTkzLDYgKzkzLDggQEAgdm9pZCBtb25pdG9yX2NsZWFudXBfZG9tYWluKHN0cnVjdCBk b21haW4gKmQpOwo+ICAgCj4gICB2b2lkIG1vbml0b3JfY3RybHJlZ193cml0ZV9yZXN1bWUoc3Ry dWN0IHZjcHUgKnYsIHZtX2V2ZW50X3Jlc3BvbnNlX3QgKnJzcCk7Cj4gICAKPiArdm9pZCBtb25p dG9yX2N0cmxyZWdfd3JpdGVfZGF0YShzdHJ1Y3QgdmNwdSAqdik7Cj4gKwo+ICAgYm9vbF90IG1v bml0b3JlZF9tc3IoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgdTMyIG1zcik7Cj4gICAKPiAgICNl bmRpZiAvKiBfX0FTTV9YODZfTU9OSVRPUl9IX18gKi8KClRoYW5rcywKWnV6dSBDLgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVu LWRldmVsCg==