From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Raslan, KarimAllah" Subject: Re: [PATCH v4] X86/KVM: Properly update 'tsc_offset' to represent the running guest Date: Sun, 15 Apr 2018 20:46:41 +0000 Message-ID: <1523825200.22952.3.camel@amazon.de> References: <1523675452-27271-1-git-send-email-karahmed@amazon.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "jmattson@google.com" , "rkrcmar@redhat.com" , "pbonzini@redhat.com" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" Return-path: In-Reply-To: <1523675452-27271-1-git-send-email-karahmed@amazon.de> Content-Language: en-US Content-ID: Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org T24gU2F0LCAyMDE4LTA0LTE0IGF0IDA1OjEwICswMjAwLCBLYXJpbUFsbGFoIEFobWVkIHdyb3Rl Og0KPiBVcGRhdGUgJ3RzY19vZmZzZXQnIG9uIHZtZW50cnkvdm1leGl0IG9mIEwyIGd1ZXN0cyB0 byBlbnN1cmUgdGhhdCBpdCBhbHdheXMNCj4gY2FwdHVyZXMgdGhlIFRTQ19PRkZTRVQgb2YgdGhl IHJ1bm5pbmcgZ3Vlc3Qgd2hldGhlciBpdCBpcyB0aGUgTDEgb3IgTDINCj4gZ3Vlc3QuDQo+IA0K PiBDYzogSmltIE1hdHRzb24gPGptYXR0c29uQGdvb2dsZS5jb20+DQo+IENjOiBQYW9sbyBCb256 aW5pIDxwYm9uemluaUByZWRoYXQuY29tPg0KPiBDYzogUmFkaW0gS3LEjW3DocWZIDxya3JjbWFy QHJlZGhhdC5jb20+DQo+IENjOiBrdm1Admdlci5rZXJuZWwub3JnDQo+IENjOiBsaW51eC1rZXJu ZWxAdmdlci5rZXJuZWwub3JnDQo+IFN1Z2dlc3RlZC1ieTogUGFvbG8gQm9uemluaSA8cGJvbnpp bmlAcmVkaGF0LmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogS2FyaW1BbGxhaCBBaG1lZCA8a2FyYWht ZWRAYW1hem9uLmRlPg0KPiBbQU1EIGNoYW5nZXMsIGZpeCB1cGRhdGVfaWEzMl90c2NfYWRqdXN0 X21zci4gLSBQYW9sb10NCj4gU2lnbmVkLW9mZi1ieTogUGFvbG8gQm9uemluaSA8cGJvbnppbmlA cmVkaGF0LmNvbT4NCj4gDQo+IC0tLQ0KPiB2MyAtPiB2NDoNCj4gLSBSZXN0b3JlIEwwMSB0c2Nf b2Zmc2V0IG9uIGVudGVyX3ZteF9ub25fcm9vdF9tb2RlIGZhaWx1cmVzLg0KPiAtIE1vdmUgdHNj X29mZnNldCB1cGRhdGUgZm9yIEwwMiBsYXRlciBpbiBuZXN0ZWRfdm14X3J1bi4NCj4gDQo+IHYy IC0+IHYzOg0KPiAtIEFkZCBBTUQgYml0cyBhcyB3ZWxsLg0KPiAtIEZpeCB1cGRhdGVfaWEzMl90 c2NfYWRqdXN0X21zci4NCj4gDQo+IHYxIC0+IHYyOg0KPiAtIFJld3JvdGUgdGhlIHBhdGNoIHRv IGFsd2F5cyB1cGRhdGUgdHNjX29mZnNldCB0byByZXByZXNlbnQgdGhlIGN1cnJlbnQNCj4gICBn dWVzdCAocGJvbnppbmlAKQ0KPiAtLS0NCj4gIGFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0 LmggfCAgMSArDQo+ICBhcmNoL3g4Ni9rdm0vc3ZtLmMgICAgICAgICAgICAgIHwgMTcgKysrKysr KysrKysrKysrKy0NCj4gIGFyY2gveDg2L2t2bS92bXguYyAgICAgICAgICAgICAgfCAyOSArKysr KysrKysrKysrKysrKysrKysrKystLS0tLQ0KPiAgYXJjaC94ODYva3ZtL3g4Ni5jICAgICAgICAg ICAgICB8ICA2ICsrKystLQ0KPiAgNCBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCA4 IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2 bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oDQo+IGluZGV4IDdhMjAw ZjYuLmE0MGEzMmUgMTAwNjQ0DQo+IC0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0 LmgNCj4gKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaA0KPiBAQCAtMTAxNiw2 ICsxMDE2LDcgQEAgc3RydWN0IGt2bV94ODZfb3BzIHsNCj4gIA0KPiAgCWJvb2wgKCpoYXNfd2Jp bnZkX2V4aXQpKHZvaWQpOw0KPiAgDQo+ICsJdTY0ICgqcmVhZF9sMV90c2Nfb2Zmc2V0KShzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUpOw0KPiAgCXZvaWQgKCp3cml0ZV90c2Nfb2Zmc2V0KShzdHJ1Y3Qg a3ZtX3ZjcHUgKnZjcHUsIHU2NCBvZmZzZXQpOw0KPiAgDQo+ICAJdm9pZCAoKmdldF9leGl0X2lu Zm8pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0ICppbmZvMSwgdTY0ICppbmZvMik7DQo+IGRp ZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtLmMNCj4gaW5k ZXggYjU4Nzg3ZC4uMWYwMGMxOCAxMDA2NDQNCj4gLS0tIGEvYXJjaC94ODYva3ZtL3N2bS5jDQo+ ICsrKyBiL2FyY2gveDg2L2t2bS9zdm0uYw0KPiBAQCAtMTQyMywxMiArMTQyMywyMyBAQCBzdGF0 aWMgdm9pZCBpbml0X3N5c19zZWcoc3RydWN0IHZtY2Jfc2VnICpzZWcsIHVpbnQzMl90IHR5cGUp DQo+ICAJc2VnLT5iYXNlID0gMDsNCj4gIH0NCj4gIA0KPiArc3RhdGljIHU2NCBzdm1fcmVhZF9s MV90c2Nfb2Zmc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkNCj4gK3sNCj4gKwlzdHJ1Y3QgdmNw dV9zdm0gKnN2bSA9IHRvX3N2bSh2Y3B1KTsNCj4gKw0KPiArCWlmIChpc19ndWVzdF9tb2RlKHZj cHUpKQ0KPiArCQlyZXR1cm4gc3ZtLT5uZXN0ZWQuaHNhdmUtPmNvbnRyb2wudHNjX29mZnNldDsN Cj4gKw0KPiArCXJldHVybiB2Y3B1LT5hcmNoLnRzY19vZmZzZXQ7DQo+ICt9DQo+ICsNCj4gIHN0 YXRpYyB2b2lkIHN2bV93cml0ZV90c2Nfb2Zmc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0 IG9mZnNldCkNCj4gIHsNCj4gIAlzdHJ1Y3QgdmNwdV9zdm0gKnN2bSA9IHRvX3N2bSh2Y3B1KTsN Cj4gIAl1NjQgZ190c2Nfb2Zmc2V0ID0gMDsNCj4gIA0KPiAgCWlmIChpc19ndWVzdF9tb2RlKHZj cHUpKSB7DQo+ICsJCS8qIFdyaXRlIEwxJ3MgVFNDIG9mZnNldC4gICovDQo+ICAJCWdfdHNjX29m ZnNldCA9IHN2bS0+dm1jYi0+Y29udHJvbC50c2Nfb2Zmc2V0IC0NCj4gIAkJCSAgICAgICBzdm0t Pm5lc3RlZC5oc2F2ZS0+Y29udHJvbC50c2Nfb2Zmc2V0Ow0KPiAgCQlzdm0tPm5lc3RlZC5oc2F2 ZS0+Y29udHJvbC50c2Nfb2Zmc2V0ID0gb2Zmc2V0Ow0KPiBAQCAtMzMyMiw2ICszMzMzLDcgQEAg c3RhdGljIGludCBuZXN0ZWRfc3ZtX3ZtZXhpdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSkNCj4gIAkv KiBSZXN0b3JlIHRoZSBvcmlnaW5hbCBjb250cm9sIGVudHJpZXMgKi8NCj4gIAljb3B5X3ZtY2Jf Y29udHJvbF9hcmVhKHZtY2IsIGhzYXZlKTsNCj4gIA0KPiArCXZjcHUtPmFyY2gudHNjX29mZnNl dCA9IHN2bS0+dm1jYi0+Y29udHJvbC50c2Nfb2Zmc2V0Ow0KDQpQYW9sbywNCg0KJ3ZjcHUnIGlz IGFjdHVhbGx5IG5vdCBkZWZpbmVkIGluIHRoaXMgY29udGV4dCAoYW5kIGluIGFsbCBvdGhlcsKg DQpvY2N1cnJlbmNlcyBiZWxvdykuIFdvdWxkIHlvdSBsaWtlIG1lIHRvIHNlbmQgYSBmaXhlZCB2 ZXJzaW9uIG9mIHRoaXPCoA0KYml0IG9yIGNhbiB5b3UgZml4IGJlZm9yZSBhcHBseWluZz8NCg0K PiAgCWt2bV9jbGVhcl9leGNlcHRpb25fcXVldWUoJnN2bS0+dmNwdSk7DQo+ICAJa3ZtX2NsZWFy X2ludGVycnVwdF9xdWV1ZSgmc3ZtLT52Y3B1KTsNCj4gIA0KPiBAQCAtMzQ4MiwxMCArMzQ5NCwx MiBAQCBzdGF0aWMgdm9pZCBlbnRlcl9zdm1fZ3Vlc3RfbW9kZShzdHJ1Y3QgdmNwdV9zdm0gKnN2 bSwgdTY0IHZtY2JfZ3BhLA0KPiAgCS8qIFdlIGRvbid0IHdhbnQgdG8gc2VlIFZNTUNBTExzIGZy b20gYSBuZXN0ZWQgZ3Vlc3QgKi8NCj4gIAljbHJfaW50ZXJjZXB0KHN2bSwgSU5URVJDRVBUX1ZN TUNBTEwpOw0KPiAgDQo+ICsJdmNwdS0+YXJjaC50c2Nfb2Zmc2V0ICs9IG5lc3RlZF92bWNiLT5j b250cm9sLnRzY19vZmZzZXQ7DQo+ICsJc3ZtLT52bWNiLT5jb250cm9sLnRzY19vZmZzZXQgPSB2 Y3B1LT5hcmNoLnRzY19vZmZzZXQ7DQo+ICsNCj4gIAlzdm0tPnZtY2ItPmNvbnRyb2wudmlydF9l eHQgPSBuZXN0ZWRfdm1jYi0+Y29udHJvbC52aXJ0X2V4dDsNCj4gIAlzdm0tPnZtY2ItPmNvbnRy b2wuaW50X3ZlY3RvciA9IG5lc3RlZF92bWNiLT5jb250cm9sLmludF92ZWN0b3I7DQo+ICAJc3Zt LT52bWNiLT5jb250cm9sLmludF9zdGF0ZSA9IG5lc3RlZF92bWNiLT5jb250cm9sLmludF9zdGF0 ZTsNCj4gLQlzdm0tPnZtY2ItPmNvbnRyb2wudHNjX29mZnNldCArPSBuZXN0ZWRfdm1jYi0+Y29u dHJvbC50c2Nfb2Zmc2V0Ow0KPiAgCXN2bS0+dm1jYi0+Y29udHJvbC5ldmVudF9pbmogPSBuZXN0 ZWRfdm1jYi0+Y29udHJvbC5ldmVudF9pbmo7DQo+ICAJc3ZtLT52bWNiLT5jb250cm9sLmV2ZW50 X2lual9lcnIgPSBuZXN0ZWRfdm1jYi0+Y29udHJvbC5ldmVudF9pbmpfZXJyOw0KPiAgDQo+IEBA IC03MTAyLDYgKzcxMTYsNyBAQCBzdGF0aWMgc3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3Bz IF9fcm9fYWZ0ZXJfaW5pdCA9IHsNCj4gIA0KPiAgCS5oYXNfd2JpbnZkX2V4aXQgPSBzdm1faGFz X3diaW52ZF9leGl0LA0KPiAgDQo+ICsJLnJlYWRfbDFfdHNjX29mZnNldCA9IHN2bV9yZWFkX2wx X3RzY19vZmZzZXQsDQo+ICAJLndyaXRlX3RzY19vZmZzZXQgPSBzdm1fd3JpdGVfdHNjX29mZnNl dCwNCj4gIA0KPiAgCS5zZXRfdGRwX2NyMyA9IHNldF90ZHBfY3IzLA0KPiBkaWZmIC0tZ2l0IGEv YXJjaC94ODYva3ZtL3ZteC5jIGIvYXJjaC94ODYva3ZtL3ZteC5jDQo+IGluZGV4IGI2OTQyZGUu LjA1YmEzYzYgMTAwNjQ0DQo+IC0tLSBhL2FyY2gveDg2L2t2bS92bXguYw0KPiArKysgYi9hcmNo L3g4Ni9rdm0vdm14LmMNCj4gQEAgLTI4ODUsNiArMjg4NSwxNyBAQCBzdGF0aWMgdm9pZCBzZXR1 cF9tc3JzKHN0cnVjdCB2Y3B1X3ZteCAqdm14KQ0KPiAgCQl2bXhfdXBkYXRlX21zcl9iaXRtYXAo JnZteC0+dmNwdSk7DQo+ICB9DQo+ICANCj4gK3N0YXRpYyB1NjQgdm14X3JlYWRfbDFfdHNjX29m ZnNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpDQo+ICt7DQo+ICsJc3RydWN0IHZtY3MxMiAqdm1j czEyID0gZ2V0X3ZtY3MxMih2Y3B1KTsNCj4gKw0KPiArCWlmIChpc19ndWVzdF9tb2RlKHZjcHUp ICYmDQo+ICsJICAgICh2bWNzMTItPmNwdV9iYXNlZF92bV9leGVjX2NvbnRyb2wgJiBDUFVfQkFT RURfVVNFX1RTQ19PRkZTRVRJTkcpKQ0KPiArCQlyZXR1cm4gdmNwdS0+YXJjaC50c2Nfb2Zmc2V0 IC0gdm1jczEyLT50c2Nfb2Zmc2V0Ow0KPiArDQo+ICsJcmV0dXJuIHZjcHUtPmFyY2gudHNjX29m ZnNldDsNCj4gK30NCj4gKw0KPiAgLyoNCj4gICAqIHJlYWRzIGFuZCByZXR1cm5zIGd1ZXN0J3Mg dGltZXN0YW1wIGNvdW50ZXIgInJlZ2lzdGVyIg0KPiAgICogZ3Vlc3RfdHNjID0gKGhvc3RfdHNj ICogdHNjIG11bHRpcGxpZXIpID4+IDQ4ICsgdHNjX29mZnNldA0KPiBAQCAtMTExMTIsMTEgKzEx MTIzLDggQEAgc3RhdGljIGludCBwcmVwYXJlX3ZtY3MwMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUs IHN0cnVjdCB2bWNzMTIgKnZtY3MxMiwNCj4gIAkJdm1jc193cml0ZTY0KEdVRVNUX0lBMzJfUEFU LCB2bXgtPnZjcHUuYXJjaC5wYXQpOw0KPiAgCX0NCj4gIA0KPiAtCWlmICh2bWNzMTItPmNwdV9i YXNlZF92bV9leGVjX2NvbnRyb2wgJiBDUFVfQkFTRURfVVNFX1RTQ19PRkZTRVRJTkcpDQo+IC0J CXZtY3Nfd3JpdGU2NChUU0NfT0ZGU0VULA0KPiAtCQkJdmNwdS0+YXJjaC50c2Nfb2Zmc2V0ICsg dm1jczEyLT50c2Nfb2Zmc2V0KTsNCj4gLQllbHNlDQo+IC0JCXZtY3Nfd3JpdGU2NChUU0NfT0ZG U0VULCB2Y3B1LT5hcmNoLnRzY19vZmZzZXQpOw0KPiArCXZtY3Nfd3JpdGU2NChUU0NfT0ZGU0VU LCB2Y3B1LT5hcmNoLnRzY19vZmZzZXQpOw0KPiArDQo+ICAJaWYgKGt2bV9oYXNfdHNjX2NvbnRy b2wpDQo+ICAJCWRlY2FjaGVfdHNjX211bHRpcGxpZXIodm14KTsNCj4gIA0KPiBAQCAtMTEzNjYs NiArMTEzNzQsOCBAQCBzdGF0aWMgaW50IGVudGVyX3ZteF9ub25fcm9vdF9tb2RlKHN0cnVjdCBr dm1fdmNwdSAqdmNwdSwgYm9vbCBmcm9tX3ZtZW50cnkpDQo+ICAJdm14X3NlZ21lbnRfY2FjaGVf Y2xlYXIodm14KTsNCj4gIA0KPiAgCWlmIChwcmVwYXJlX3ZtY3MwMih2Y3B1LCB2bWNzMTIsIGZy b21fdm1lbnRyeSwgJmV4aXRfcXVhbCkpIHsNCj4gKwkJaWYgKHZtY3MxMi0+Y3B1X2Jhc2VkX3Zt X2V4ZWNfY29udHJvbCAmIENQVV9CQVNFRF9VU0VfVFNDX09GRlNFVElORykNCj4gKwkJCXZjcHUt PmFyY2gudHNjX29mZnNldCAtPSB2bWNzMTItPnRzY19vZmZzZXQ7DQo+ICAJCWxlYXZlX2d1ZXN0 X21vZGUodmNwdSk7DQo+ICAJCXZteF9zd2l0Y2hfdm1jcyh2Y3B1LCAmdm14LT52bWNzMDEpOw0K PiAgCQluZXN0ZWRfdm14X2VudHJ5X2ZhaWx1cmUodmNwdSwgdm1jczEyLA0KPiBAQCAtMTEzNzcs NiArMTEzODcsOCBAQCBzdGF0aWMgaW50IGVudGVyX3ZteF9ub25fcm9vdF9tb2RlKHN0cnVjdCBr dm1fdmNwdSAqdmNwdSwgYm9vbCBmcm9tX3ZtZW50cnkpDQo+ICAJCQkJCSAgICB2bWNzMTItPnZt X2VudHJ5X21zcl9sb2FkX2FkZHIsDQo+ICAJCQkJCSAgICB2bWNzMTItPnZtX2VudHJ5X21zcl9s b2FkX2NvdW50KTsNCj4gIAlpZiAobXNyX2VudHJ5X2lkeCkgew0KPiArCQlpZiAodm1jczEyLT5j cHVfYmFzZWRfdm1fZXhlY19jb250cm9sICYgQ1BVX0JBU0VEX1VTRV9UU0NfT0ZGU0VUSU5HKQ0K PiArCQkJdmNwdS0+YXJjaC50c2Nfb2Zmc2V0IC09IHZtY3MxMi0+dHNjX29mZnNldDsNCj4gIAkJ bGVhdmVfZ3Vlc3RfbW9kZSh2Y3B1KTsNCj4gIAkJdm14X3N3aXRjaF92bWNzKHZjcHUsICZ2bXgt PnZtY3MwMSk7DQo+ICAJCW5lc3RlZF92bXhfZW50cnlfZmFpbHVyZSh2Y3B1LCB2bWNzMTIsDQo+ IEBAIC0xMTQ2MSw2ICsxMTQ3Myw5IEBAIHN0YXRpYyBpbnQgbmVzdGVkX3ZteF9ydW4oc3RydWN0 IGt2bV92Y3B1ICp2Y3B1LCBib29sIGxhdW5jaCkNCj4gIAkJcmV0dXJuIDE7DQo+ICAJfQ0KPiAg DQo+ICsJaWYgKHZtY3MxMi0+Y3B1X2Jhc2VkX3ZtX2V4ZWNfY29udHJvbCAmIENQVV9CQVNFRF9V U0VfVFNDX09GRlNFVElORykNCj4gKwkJdmNwdS0+YXJjaC50c2Nfb2Zmc2V0ICs9IHZtY3MxMi0+ dHNjX29mZnNldDsNCj4gKw0KPiAgCS8qDQo+ICAJICogV2UncmUgZmluYWxseSBkb25lIHdpdGgg cHJlcmVxdWlzaXRlIGNoZWNraW5nLCBhbmQgY2FuIHN0YXJ0IHdpdGgNCj4gIAkgKiB0aGUgbmVz dGVkIGVudHJ5Lg0KPiBAQCAtMTE5NjQsNiArMTE5NzksOSBAQCBzdGF0aWMgdm9pZCBuZXN0ZWRf dm14X3ZtZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBleGl0X3JlYXNvbiwNCj4gIA0K PiAgCWxlYXZlX2d1ZXN0X21vZGUodmNwdSk7DQo+ICANCj4gKwlpZiAodm1jczEyLT5jcHVfYmFz ZWRfdm1fZXhlY19jb250cm9sICYgQ1BVX0JBU0VEX1VTRV9UU0NfT0ZGU0VUSU5HKQ0KPiArCQl2 Y3B1LT5hcmNoLnRzY19vZmZzZXQgLT0gdm1jczEyLT50c2Nfb2Zmc2V0Ow0KPiArDQo+ICAJaWYg KGxpa2VseSghdm14LT5mYWlsKSkgew0KPiAgCQlpZiAoZXhpdF9yZWFzb24gPT0gLTEpDQo+ICAJ CQlzeW5jX3ZtY3MxMih2Y3B1LCB2bWNzMTIpOw0KPiBAQCAtMTI4MDEsNiArMTI4MTksNyBAQCBz dGF0aWMgc3RydWN0IGt2bV94ODZfb3BzIHZteF94ODZfb3BzIF9fcm9fYWZ0ZXJfaW5pdCA9IHsN Cj4gIA0KPiAgCS5oYXNfd2JpbnZkX2V4aXQgPSBjcHVfaGFzX3ZteF93YmludmRfZXhpdCwNCj4g IA0KPiArCS5yZWFkX2wxX3RzY19vZmZzZXQgPSB2bXhfcmVhZF9sMV90c2Nfb2Zmc2V0LA0KPiAg CS53cml0ZV90c2Nfb2Zmc2V0ID0gdm14X3dyaXRlX3RzY19vZmZzZXQsDQo+ICANCj4gIAkuc2V0 X3RkcF9jcjMgPSB2bXhfc2V0X2NyMywNCj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYu YyBiL2FyY2gveDg2L2t2bS94ODYuYw0KPiBpbmRleCA3ODQ2YThhLi4yZjgzY2IyIDEwMDY0NA0K PiAtLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmMNCj4gKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jDQo+ IEBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0aWMgdm9pZCBrdm1fdHJhY2tfdHNjX21hdGNoaW5n KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkNCj4gIA0KPiAgc3RhdGljIHZvaWQgdXBkYXRlX2lhMzJf dHNjX2FkanVzdF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzNjQgb2Zmc2V0KQ0KPiAgew0K PiAtCXU2NCBjdXJyX29mZnNldCA9IHZjcHUtPmFyY2gudHNjX29mZnNldDsNCj4gKwl1NjQgY3Vy cl9vZmZzZXQgPSBrdm1feDg2X29wcy0+cmVhZF9sMV90c2Nfb2Zmc2V0KHZjcHUpOw0KPiAgCXZj cHUtPmFyY2guaWEzMl90c2NfYWRqdXN0X21zciArPSBvZmZzZXQgLSBjdXJyX29mZnNldDsNCj4g IH0NCj4gIA0KPiBAQCAtMTUzMiw3ICsxNTMyLDkgQEAgc3RhdGljIHU2NCBrdm1fY29tcHV0ZV90 c2Nfb2Zmc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHRhcmdldF90c2MpDQo+ICANCj4g IHU2NCBrdm1fcmVhZF9sMV90c2Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgaG9zdF90c2Mp DQo+ICB7DQo+IC0JcmV0dXJuIHZjcHUtPmFyY2gudHNjX29mZnNldCArIGt2bV9zY2FsZV90c2Mo dmNwdSwgaG9zdF90c2MpOw0KPiArCXU2NCB0c2Nfb2Zmc2V0ID0ga3ZtX3g4Nl9vcHMtPnJlYWRf bDFfdHNjX29mZnNldCh2Y3B1KTsNCj4gKw0KPiArCXJldHVybiB0c2Nfb2Zmc2V0ICsga3ZtX3Nj YWxlX3RzYyh2Y3B1LCBob3N0X3RzYyk7DQo+ICB9DQo+ICBFWFBPUlRfU1lNQk9MX0dQTChrdm1f cmVhZF9sMV90c2MpOw0KPiAgDQpBbWF6b24gRGV2ZWxvcG1lbnQgQ2VudGVyIEdlcm1hbnkgR21i SApCZXJsaW4gLSBEcmVzZGVuIC0gQWFjaGVuCm1haW4gb2ZmaWNlOiBLcmF1c2Vuc3RyLiAzOCwg MTAxMTcgQmVybGluCkdlc2NoYWVmdHNmdWVocmVyOiBEci4gUmFsZiBIZXJicmljaCwgQ2hyaXN0 aWFuIFNjaGxhZWdlcgpVc3QtSUQ6IERFMjg5MjM3ODc5CkVpbmdldHJhZ2VuIGFtIEFtdHNnZXJp Y2h0IENoYXJsb3R0ZW5idXJnIEhSQiAxNDkxNzMgQgo=