From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C0464C433ED for ; Wed, 19 May 2021 09:03:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A0BC96139A for ; Wed, 19 May 2021 09:03:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344542AbhESJEq (ORCPT ); Wed, 19 May 2021 05:04:46 -0400 Received: from smtp-fw-9103.amazon.com ([207.171.188.200]:62905 "EHLO smtp-fw-9103.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344405AbhESJEV (ORCPT ); Wed, 19 May 2021 05:04:21 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1621414981; x=1652950981; h=from:to:cc:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version:subject; bh=Ur/yNNmiLu7q5UoSkN3Ot4iwLisadGjWzllpfs0OrQg=; b=EFIHaCQIzrucIfBPL4MZ9stBF9u9qw6ay0kOechLKh6+MWS7UEFYU2KF Du6z1oBkSBHMEJccSPLvubwNsyJhhYtAjjwjTXqJXS/Jrf79ctecOJc7j g1ip0ftuS77ruPs3upSPEtgerEWctLiVjVWDg2ZPy63KOPJxmaIpKOaou 4=; X-IronPort-AV: E=Sophos;i="5.82,312,1613433600"; d="scan'208";a="933861368" Subject: Re: [PATCH v2 03/10] KVM: X86: Add kvm_scale_tsc_l1() and kvm_compute_tsc_offset_l1() Thread-Topic: [PATCH v2 03/10] KVM: X86: Add kvm_scale_tsc_l1() and kvm_compute_tsc_offset_l1() Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO email-inbound-relay-1d-37fd6b3d.us-east-1.amazon.com) ([10.25.36.214]) by smtp-border-fw-9103.sea19.amazon.com with ESMTP; 19 May 2021 09:02:50 +0000 Received: from EX13MTAUEE001.ant.amazon.com (iad12-ws-svc-p26-lb9-vlan2.iad.amazon.com [10.40.163.34]) by email-inbound-relay-1d-37fd6b3d.us-east-1.amazon.com (Postfix) with ESMTPS id D65E8280289; Wed, 19 May 2021 09:02:46 +0000 (UTC) Received: from EX13D08UEE004.ant.amazon.com (10.43.62.182) by EX13MTAUEE001.ant.amazon.com (10.43.62.200) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Wed, 19 May 2021 09:02:45 +0000 Received: from EX13D18EUA001.ant.amazon.com (10.43.165.58) by EX13D08UEE004.ant.amazon.com (10.43.62.182) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Wed, 19 May 2021 09:02:45 +0000 Received: from EX13D18EUA001.ant.amazon.com ([10.43.165.58]) by EX13D18EUA001.ant.amazon.com ([10.43.165.58]) with mapi id 15.00.1497.018; Wed, 19 May 2021 09:02:45 +0000 From: "Stamatis, Ilias" To: "seanjc@google.com" CC: "kvm@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "jmattson@google.com" , "Woodhouse, David" , "vkuznets@redhat.com" , "joro@8bytes.org" , "mtosatti@redhat.com" , "zamsden@gmail.com" , "pbonzini@redhat.com" , "mlevitsk@redhat.com" , "wanpengli@tencent.com" Thread-Index: AQHXR0Eu985oRo9Cq0eeOk7jLKEluarp5bsAgACnOAA= Date: Wed, 19 May 2021 09:02:44 +0000 Message-ID: <772e232c27d180f876a5b49d7f188c0c3acd7560.camel@amazon.com> References: <20210512150945.4591-1-ilstam@amazon.com> <20210512150945.4591-4-ilstam@amazon.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.43.166.129] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org T24gVHVlLCAyMDIxLTA1LTE4IGF0IDIzOjA0ICswMDAwLCBTZWFuIENocmlzdG9waGVyc29uIHdy b3RlOg0KPiBPbiBXZWQsIE1heSAxMiwgMjAyMSwgSWxpYXMgU3RhbWF0aXMgd3JvdGU6DQo+ID4g VGhlIGV4aXN0aW5nIGt2bV9zY2FsZV90c2MoKSBzY2FsZXMgdGhlIFRTQyB1c2luZyB0aGUgY3Vy cmVudCBUU0MNCj4gPiBzY2FsaW5nIHJhdGlvLiBUaGF0IHVzZWQgdG8gYmUgdGhlIHNhbWUgYXMg TDEncyBzY2FsaW5nIHJhdGlvIGJ1dCBub3cNCj4gPiB3aXRoIG5lc3RlZCBUU0Mgc2NhbGluZyBz dXBwb3J0IGl0IGlzIG5vIGxvbmdlciB0aGUgY2FzZS4NCj4gPiANCj4gPiBUaGlzIHBhdGNoIGFk ZHMgYSBuZXcga3ZtX3NjYWxlX3RzY19sMSgpIGZ1bmN0aW9uIHRoYXQgc2NhbGVzIHRoZSBUU0MN Cj4gPiB1c2luZyBMMSdzIHNjYWxpbmcgcmF0aW8uIFRoZSBleGlzdGluZyBrdm1fc2NhbGVfdHNj KCkgY2FuIHN0aWxsIGJlIHVzZWQNCj4gPiBmb3Igc2NhbGluZyBMMiBUU0MgdmFsdWVzLg0KPiA+ IA0KPiA+IEFkZGl0aW9uYWxseSwgdGhpcyBwYXRjaCByZW5hbWVzIHRoZSBrdm1fY29tcHV0ZV90 c2Nfb2Zmc2V0KCkgZnVuY3Rpb24NCj4gPiB0byBrdm1fY29tcHV0ZV90c2Nfb2Zmc2V0X2wxKCkg YW5kIGhhcyB0aGUgZnVuY3Rpb24gdHJlYXQgaXRzIFRTQw0KPiA+IGFyZ3VtZW50IGFzIGFuIEwx IFRTQyB2YWx1ZS4gQWxsIGV4aXN0aW5nIGNvZGUgdXNlcyB0aGlzIGZ1bmN0aW9uDQo+ID4gcGFz c2luZyBMMSB2YWx1ZXMgdG8gaXQuDQo+ID4gDQo+ID4gU2lnbmVkLW9mZi1ieTogSWxpYXMgU3Rh bWF0aXMgPGlsc3RhbUBhbWF6b24uY29tPg0KPiA+IC0tLQ0KPiA+ICBhcmNoL3g4Ni9pbmNsdWRl L2FzbS9rdm1faG9zdC5oIHwgIDEgKw0KPiA+ICBhcmNoL3g4Ni9rdm0veDg2LmMgICAgICAgICAg ICAgIHwgNDEgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tDQo+ID4gIDIgZmlsZXMg Y2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pDQo+ID4gDQo+ID4gZGlm ZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9rdm1faG9zdC5oDQo+ID4gaW5kZXggN2RmYzYwOWVhY2Q2Li5iZTU5MTk3ZTVlYjcg MTAwNjQ0DQo+ID4gLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaA0KPiA+ICsr KyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgNCj4gPiBAQCAtMTc4OSw2ICsxNzg5 LDcgQEAgc3RhdGljIGlubGluZSBib29sIGt2bV9pc19zdXBwb3J0ZWRfdXNlcl9yZXR1cm5fbXNy KHUzMiBtc3IpDQo+ID4gIH0NCj4gPiANCj4gPiAgdTY0IGt2bV9zY2FsZV90c2Moc3RydWN0IGt2 bV92Y3B1ICp2Y3B1LCB1NjQgdHNjKTsNCj4gPiArdTY0IGt2bV9zY2FsZV90c2NfbDEoc3RydWN0 IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdHNjKTsNCj4gPiAgdTY0IGt2bV9yZWFkX2wxX3RzYyhzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBob3N0X3RzYyk7DQo+IA0KPiBJIGRvbid0IHJlYWxseSBj YXJlIHdoaWNoIHZlcnNpb24gaXMgdXNlZCwgYnV0IHdlIHNob3VsZCBiZSBjb25zaXN0ZW50LCBp LmUuIGNob29zZQ0KPiBrdm1fPGFjdGlvbj5fdHNjX2wxIG9yIGt2bV88YWN0aW9uPl90c2NfbDEs IG5vdCBib3RoLiAgVGhlIGVhc3kgY2hvaWNlIGlzIHRoZQ0KPiBmb3JtZXIgc2luY2UgaXQncyBh bHJlYWR5IHRoZXJlLg0KDQpPSw0KDQo+IA0KPiA+ICB1bnNpZ25lZCBsb25nIGt2bV9nZXRfbGlu ZWFyX3JpcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOw0KPiA+IGRpZmYgLS1naXQgYS9hcmNoL3g4 Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMNCj4gPiBpbmRleCAwN2NmNWQ3ZWNlMzgu Ljg0YWYxYWY3YTJjYyAxMDA2NDQNCj4gPiAtLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmMNCj4gPiAr KysgYi9hcmNoL3g4Ni9rdm0veDg2LmMNCj4gPiBAQCAtMjMxOSwxOCArMjMxOSwzMCBAQCB1NjQg a3ZtX3NjYWxlX3RzYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0c2MpDQo+ID4gIH0NCj4g PiAgRVhQT1JUX1NZTUJPTF9HUEwoa3ZtX3NjYWxlX3RzYyk7DQo+ID4gDQo+ID4gLXN0YXRpYyB1 NjQga3ZtX2NvbXB1dGVfdHNjX29mZnNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB0YXJn ZXRfdHNjKQ0KPiA+ICt1NjQga3ZtX3NjYWxlX3RzY19sMShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUs IHU2NCB0c2MpDQo+ID4gK3sNCj4gPiArICAgICB1NjQgX3RzYyA9IHRzYzsNCj4gPiArICAgICB1 NjQgcmF0aW8gPSB2Y3B1LT5hcmNoLmwxX3RzY19zY2FsaW5nX3JhdGlvOw0KPiA+ICsNCj4gPiAr ICAgICBpZiAocmF0aW8gIT0ga3ZtX2RlZmF1bHRfdHNjX3NjYWxpbmdfcmF0aW8pDQo+ID4gKyAg ICAgICAgICAgICBfdHNjID0gX19zY2FsZV90c2MocmF0aW8sIHRzYyk7DQo+ID4gKw0KPiA+ICsg ICAgIHJldHVybiBfdHNjOw0KPiA+ICt9DQo+IA0KPiBKdXN0IG1ha2UgdGhlIHJhdGlvIGEgcGFy YW0uICBUaGlzIGlzIGNvbXBsZXRlIGNvcHkrcGFzdGUgb2Yga3ZtX3NjYWxlX3RzYygpLA0KPiB3 aXRoIDMgY2hhcmFjdGVycyBhZGRlZC4gIEFuZCBhbGwgb2YgdGhlIGNhbGxlcnMgYXJlIGFscmVh ZHkgaW4gYW4gTDEtc3BlY2lmaWMNCj4gZnVuY3Rpb24gb3IgaGF2ZSBMMSB2cy4gTDIgYXdhcmVu ZXNzLiAgSU1PLCB0aGF0IG1ha2VzIHRoZSBjb2RlIGxlc3MgbWFnaWNhbCwgdG9vLA0KPiBhcyBJ IGRvbid0IGhhdmUgdG8gZGl2ZSBpbnRvIGEgaGVscGVyIHRvIHNlZSB0aGF0IGl0IHJlYWRzIGwx X3RzY19zY2FsaW5nX3JhdGlvDQo+IHZlcnN1cyB0c2Nfc2NhbGluZ19yYXRpby4NCj4gDQoNClRo YXQncyBob3cgSSBkaWQgaXQgaW5pdGlhbGx5IGJ1dCBjaGFuZ2VkIGl0IGludG8gYSBzZXBhcmF0 ZSBmdW5jdGlvbiBhZnRlcg0KcmVjZWl2aW5nIGZlZWRiYWNrIG9uIHYxLiBJJ20gbmV1dHJhbCwg SSBkb24ndCBtaW5kIGNoYW5naW5nIGl0IGJhY2suDQoNCk1vcmUNCm9waW5pb25zPw0KDQo+ID4g K0VYUE9SVF9TWU1CT0xfR1BMKGt2bV9zY2FsZV90c2NfbDEpOw0KPiA+ICsNCj4gPiArc3RhdGlj IHU2NCBrdm1fY29tcHV0ZV90c2Nfb2Zmc2V0X2wxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0 IHRhcmdldF90c2MpDQo+ID4gIHsNCj4gPiAgICAgICB1NjQgdHNjOw0KPiA+IA0KPiA+IC0gICAg IHRzYyA9IGt2bV9zY2FsZV90c2ModmNwdSwgcmR0c2MoKSk7DQo+ID4gKyAgICAgdHNjID0ga3Zt X3NjYWxlX3RzY19sMSh2Y3B1LCByZHRzYygpKTsNCj4gPiANCj4gPiAgICAgICByZXR1cm4gdGFy Z2V0X3RzYyAtIHRzYzsNCj4gPiAgfQ0KPiA+IA0KPiA+ICB1NjQga3ZtX3JlYWRfbDFfdHNjKHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGhvc3RfdHNjKQ0KPiA+ICB7DQo+ID4gLSAgICAgcmV0 dXJuIHZjcHUtPmFyY2gubDFfdHNjX29mZnNldCArIGt2bV9zY2FsZV90c2ModmNwdSwgaG9zdF90 c2MpOw0KPiA+ICsgICAgIHJldHVybiB2Y3B1LT5hcmNoLmwxX3RzY19vZmZzZXQgKyBrdm1fc2Nh bGVfdHNjX2wxKHZjcHUsIGhvc3RfdHNjKTsNCj4gPiAgfQ0KPiA+ICBFWFBPUlRfU1lNQk9MX0dQ TChrdm1fcmVhZF9sMV90c2MpOw0KPiA+IA0KPiA+IEBAIC0yMzYzLDcgKzIzNzUsNyBAQCBzdGF0 aWMgdm9pZCBrdm1fc3luY2hyb25pemVfdHNjKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGRh dGEpDQo+ID4gICAgICAgYm9vbCBzeW5jaHJvbml6aW5nID0gZmFsc2U7DQo+ID4gDQo+ID4gICAg ICAgcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZrdm0tPmFyY2gudHNjX3dyaXRlX2xvY2ssIGZsYWdz KTsNCj4gPiAtICAgICBvZmZzZXQgPSBrdm1fY29tcHV0ZV90c2Nfb2Zmc2V0KHZjcHUsIGRhdGEp Ow0KPiA+ICsgICAgIG9mZnNldCA9IGt2bV9jb21wdXRlX3RzY19vZmZzZXRfbDEodmNwdSwgZGF0 YSk7DQo+ID4gICAgICAgbnMgPSBnZXRfa3ZtY2xvY2tfYmFzZV9ucygpOw0KPiA+ICAgICAgIGVs YXBzZWQgPSBucyAtIGt2bS0+YXJjaC5sYXN0X3RzY19uc2VjOw0KPiA+IA0KPiA+IEBAIC0yNDAy LDcgKzI0MTQsNyBAQCBzdGF0aWMgdm9pZCBrdm1fc3luY2hyb25pemVfdHNjKHN0cnVjdCBrdm1f dmNwdSAqdmNwdSwgdTY0IGRhdGEpDQo+ID4gICAgICAgICAgICAgICB9IGVsc2Ugew0KPiA+ICAg ICAgICAgICAgICAgICAgICAgICB1NjQgZGVsdGEgPSBuc2VjX3RvX2N5Y2xlcyh2Y3B1LCBlbGFw c2VkKTsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgZGF0YSArPSBkZWx0YTsNCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0ga3ZtX2NvbXB1dGVfdHNjX29mZnNldCh2Y3B1LCBk YXRhKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0ga3ZtX2NvbXB1dGVfdHNj X29mZnNldF9sMSh2Y3B1LCBkYXRhKTsNCj4gPiAgICAgICAgICAgICAgIH0NCj4gPiAgICAgICAg ICAgICAgIG1hdGNoZWQgPSB0cnVlOw0KPiA+ICAgICAgICAgICAgICAgYWxyZWFkeV9tYXRjaGVk ID0gKHZjcHUtPmFyY2gudGhpc190c2NfZ2VuZXJhdGlvbiA9PSBrdm0tPmFyY2guY3VyX3RzY19n ZW5lcmF0aW9uKTsNCj4gPiBAQCAtMjQ2Myw3ICsyNDc1LDcgQEAgc3RhdGljIGlubGluZSB2b2lk IGFkanVzdF90c2Nfb2Zmc2V0X2hvc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzNjQgYWRqdXN0 bWVudCkNCj4gPiAgew0KPiA+ICAgICAgIGlmICh2Y3B1LT5hcmNoLmwxX3RzY19zY2FsaW5nX3Jh dGlvICE9IGt2bV9kZWZhdWx0X3RzY19zY2FsaW5nX3JhdGlvKQ0KPiA+ICAgICAgICAgICAgICAg V0FSTl9PTihhZGp1c3RtZW50IDwgMCk7DQo+ID4gLSAgICAgYWRqdXN0bWVudCA9IGt2bV9zY2Fs ZV90c2ModmNwdSwgKHU2NCkgYWRqdXN0bWVudCk7DQo+ID4gKyAgICAgYWRqdXN0bWVudCA9IGt2 bV9zY2FsZV90c2NfbDEodmNwdSwgKHU2NCkgYWRqdXN0bWVudCk7DQo+ID4gICAgICAgYWRqdXN0 X3RzY19vZmZzZXRfZ3Vlc3QodmNwdSwgYWRqdXN0bWVudCk7DQo+ID4gIH0NCj4gPiANCj4gPiBA QCAtMjg0Niw3ICsyODU4LDcgQEAgc3RhdGljIGludCBrdm1fZ3Vlc3RfdGltZV91cGRhdGUoc3Ry dWN0IGt2bV92Y3B1ICp2KQ0KPiA+ICAgICAgIC8qIFdpdGggYWxsIHRoZSBpbmZvIHdlIGdvdCwg ZmlsbCBpbiB0aGUgdmFsdWVzICovDQo+ID4gDQo+ID4gICAgICAgaWYgKGt2bV9oYXNfdHNjX2Nv bnRyb2wpDQo+ID4gLSAgICAgICAgICAgICB0Z3RfdHNjX2toeiA9IGt2bV9zY2FsZV90c2Modiwg dGd0X3RzY19raHopOw0KPiA+ICsgICAgICAgICAgICAgdGd0X3RzY19raHogPSBrdm1fc2NhbGVf dHNjX2wxKHYsIHRndF90c2Nfa2h6KTsNCj4gPiANCj4gPiAgICAgICBpZiAodW5saWtlbHkodmNw dS0+aHdfdHNjX2toeiAhPSB0Z3RfdHNjX2toeikpIHsNCj4gPiAgICAgICAgICAgICAgIGt2bV9n ZXRfdGltZV9zY2FsZShOU0VDX1BFUl9TRUMsIHRndF90c2Nfa2h6ICogMTAwMExMLA0KPiA+IEBA IC0zMjM1LDcgKzMyNDcsNyBAQCBpbnQga3ZtX3NldF9tc3JfY29tbW9uKHN0cnVjdCBrdm1fdmNw dSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbykNCj4gPiAgICAgICAgICAgICAgIGlm IChtc3JfaW5mby0+aG9zdF9pbml0aWF0ZWQpIHsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAg a3ZtX3N5bmNocm9uaXplX3RzYyh2Y3B1LCBkYXRhKTsNCj4gPiAgICAgICAgICAgICAgIH0gZWxz ZSB7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgIHU2NCBhZGogPSBrdm1fY29tcHV0ZV90c2Nf b2Zmc2V0KHZjcHUsIGRhdGEpIC0gdmNwdS0+YXJjaC5sMV90c2Nfb2Zmc2V0Ow0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICB1NjQgYWRqID0ga3ZtX2NvbXB1dGVfdHNjX29mZnNldF9sMSh2Y3B1 LCBkYXRhKSAtIHZjcHUtPmFyY2gubDFfdHNjX29mZnNldDsNCj4gPiAgICAgICAgICAgICAgICAg ICAgICAgYWRqdXN0X3RzY19vZmZzZXRfZ3Vlc3QodmNwdSwgYWRqKTsNCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgdmNwdS0+YXJjaC5pYTMyX3RzY19hZGp1c3RfbXNyICs9IGFkajsNCj4gPiAg ICAgICAgICAgICAgIH0NCj4gPiBAQCAtMzUzNywxMCArMzU0OSwxMyBAQCBpbnQga3ZtX2dldF9t c3JfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5m bykNCj4gPiAgICAgICAgICAgICAgICAqIHJldHVybiBMMSdzIFRTQyB2YWx1ZSB0byBlbnN1cmUg YmFja3dhcmRzLWNvbXBhdGlibGUNCj4gPiAgICAgICAgICAgICAgICAqIGJlaGF2aW9yIGZvciBt aWdyYXRpb24uDQo+ID4gICAgICAgICAgICAgICAgKi8NCj4gPiAtICAgICAgICAgICAgIHU2NCB0 c2Nfb2Zmc2V0ID0gbXNyX2luZm8tPmhvc3RfaW5pdGlhdGVkID8gdmNwdS0+YXJjaC5sMV90c2Nf b2Zmc2V0IDoNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdmNwdS0+YXJjaC50c2Nfb2Zmc2V0Ow0KPiA+IC0NCj4gPiAtICAgICAg ICAgICAgIG1zcl9pbmZvLT5kYXRhID0ga3ZtX3NjYWxlX3RzYyh2Y3B1LCByZHRzYygpKSArIHRz Y19vZmZzZXQ7DQo+ID4gKyAgICAgICAgICAgICBpZiAobXNyX2luZm8tPmhvc3RfaW5pdGlhdGVk KSB7DQo+IA0KPiBVbm5lY2Vzc2FyeSBjdXJseSBicmFjZXMuDQo+IA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICBtc3JfaW5mby0+ZGF0YSA9IGt2bV9zY2FsZV90c2NfbDEodmNwdSwgcmR0c2Mo KSkgKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZjcHUtPmFy Y2gubDFfdHNjX29mZnNldDsNCj4gPiArICAgICAgICAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIG1zcl9pbmZvLT5kYXRhID0ga3ZtX3NjYWxlX3RzYyh2Y3B1LCByZHRz YygpKSArDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmNwdS0+ YXJjaC50c2Nfb2Zmc2V0Ow0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ICAgICAgICAgICAgICAg YnJlYWs7DQo+ID4gICAgICAgfQ0KPiA+ICAgICAgIGNhc2UgTVNSX01UUlJjYXA6DQo+ID4gQEAg LTQxMjMsNyArNDEzOCw3IEBAIHZvaWQga3ZtX2FyY2hfdmNwdV9sb2FkKHN0cnVjdCBrdm1fdmNw dSAqdmNwdSwgaW50IGNwdSkNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgbWFya190c2NfdW5z dGFibGUoIktWTSBkaXNjb3ZlcmVkIGJhY2t3YXJkcyBUU0MiKTsNCj4gPiANCj4gPiAgICAgICAg ICAgICAgIGlmIChrdm1fY2hlY2tfdHNjX3Vuc3RhYmxlKCkpIHsNCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgdTY0IG9mZnNldCA9IGt2bV9jb21wdXRlX3RzY19vZmZzZXQodmNwdSwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgdTY0IG9mZnNldCA9IGt2bV9jb21wdXRlX3RzY19vZmZzZXRf bDEodmNwdSwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdmNwdS0+YXJjaC5sYXN0X2d1ZXN0X3RzYyk7DQo+ID4gICAgICAgICAgICAgICAgICAgICAg IGt2bV92Y3B1X3dyaXRlX3RzY19vZmZzZXQodmNwdSwgb2Zmc2V0KTsNCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgdmNwdS0+YXJjaC50c2NfY2F0Y2h1cCA9IDE7DQo+ID4gLS0NCj4gPiAyLjE3 LjENCj4gPiANCg0K