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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 902FBC433EF for ; Sun, 7 Nov 2021 13:22:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6B8C761215 for ; Sun, 7 Nov 2021 13:22:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232742AbhKGNZ2 (ORCPT ); Sun, 7 Nov 2021 08:25:28 -0500 Received: from szxga08-in.huawei.com ([45.249.212.255]:27116 "EHLO szxga08-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232562AbhKGNZZ (ORCPT ); Sun, 7 Nov 2021 08:25:25 -0500 Received: from dggemv703-chm.china.huawei.com (unknown [172.30.72.56]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4HnFGx1JK6z1DDCw; Sun, 7 Nov 2021 21:20:25 +0800 (CST) Received: from dggpemm500008.china.huawei.com (7.185.36.136) by dggemv703-chm.china.huawei.com (10.3.19.46) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.15; Sun, 7 Nov 2021 21:22:35 +0800 Received: from dggpeml100016.china.huawei.com (7.185.36.216) by dggpemm500008.china.huawei.com (7.185.36.136) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.15; Sun, 7 Nov 2021 21:22:35 +0800 Received: from dggpeml100016.china.huawei.com ([7.185.36.216]) by dggpeml100016.china.huawei.com ([7.185.36.216]) with mapi id 15.01.2308.015; Sun, 7 Nov 2021 21:22:34 +0800 From: "Longpeng (Mike, Cloud Infrastructure Service Product Dept.)" To: "Paraschiv, Andra-Irina" CC: "Gonglei (Arei)" , "gregkh@linuxfoundation.org" , "kamal@canonical.com" , "pbonzini@redhat.com" , "sgarzare@redhat.com" , "stefanha@redhat.com" , "vkuznets@redhat.com" , "linux-kernel@vger.kernel.org" , "ne-devel-upstream@amazon.com" , "lexnv@amazon.com" , "alcioa@amazon.com" Subject: RE: [PATCH v4 4/4] nitro_enclaves: Add KUnit tests for contiguous physical memory regions merging Thread-Topic: [PATCH v4 4/4] nitro_enclaves: Add KUnit tests for contiguous physical memory regions merging Thread-Index: AQHX0LswsWjXeLFGeUelxtGIRV95Xav3jKaAgACGpVA= Date: Sun, 7 Nov 2021 13:22:34 +0000 Message-ID: <8351e0a0e6554e68b1f3d2f9190625aa@huawei.com> References: <20211103140035.2001-1-longpeng2@huawei.com> <20211103140035.2001-5-longpeng2@huawei.com> <30adfb11-36e1-3bc2-13f5-824ced78fcd1@amazon.com> In-Reply-To: <30adfb11-36e1-3bc2-13f5-824ced78fcd1@amazon.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.174.148.223] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUGFyYXNjaGl2LCBBbmRy YS1JcmluYSBbbWFpbHRvOmFuZHJhcHJzQGFtYXpvbi5jb21dDQo+IFNlbnQ6IFN1bmRheSwgTm92 ZW1iZXIgNywgMjAyMSA5OjIwIFBNDQo+IFRvOiBMb25ncGVuZyAoTWlrZSwgQ2xvdWQgSW5mcmFz dHJ1Y3R1cmUgU2VydmljZSBQcm9kdWN0IERlcHQuKQ0KPiA8bG9uZ3BlbmcyQGh1YXdlaS5jb20+ DQo+IENjOiBHb25nbGVpIChBcmVpKSA8YXJlaS5nb25nbGVpQGh1YXdlaS5jb20+OyBncmVna2hA bGludXhmb3VuZGF0aW9uLm9yZzsNCj4ga2FtYWxAY2Fub25pY2FsLmNvbTsgcGJvbnppbmlAcmVk aGF0LmNvbTsgc2dhcnphcmVAcmVkaGF0LmNvbTsNCj4gc3RlZmFuaGFAcmVkaGF0LmNvbTsgdmt1 em5ldHNAcmVkaGF0LmNvbTsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsNCj4gbmUtZGV2 ZWwtdXBzdHJlYW1AYW1hem9uLmNvbTsgbGV4bnZAYW1hem9uLmNvbTsgYWxjaW9hQGFtYXpvbi5j b20NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2NCA0LzRdIG5pdHJvX2VuY2xhdmVzOiBBZGQgS1Vu aXQgdGVzdHMgZm9yIGNvbnRpZ3VvdXMNCj4gcGh5c2ljYWwgbWVtb3J5IHJlZ2lvbnMgbWVyZ2lu Zw0KPiANCj4gDQo+IA0KPiBPbiAwMy8xMS8yMDIxIDE2OjAwLCBMb25ncGVuZyhNaWtlKSB3cm90 ZToNCj4gPiBGcm9tOiBMb25ncGVuZyA8bG9uZ3BlbmcyQGh1YXdlaS5jb20+DQo+ID4NCj4gPiBB ZGQgS1VuaXQgdGVzdHMgZm9yIHRoZSBjb250aWd1b3VzIHBoeXNpY2FsIG1lbW9yeSByZWdpb25z IG1lcmdpbmcNCj4gPiBmdW5jdGlvbmFsaXR5IGZyb20gdGhlIE5pdHJvIEVuY2xhdmVzIG1pc2Mg ZGV2aWNlIGxvZ2ljLg0KPiA+DQo+ID4gV2UgY2FuIGJ1aWxkIHRoZSB0ZXN0IGJpbmFyeSB3aXRo IHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbjoNCj4gPiAgICBDT05GSUdfS1VOSVQ9eQ0KPiA+ ICAgIENPTkZJR19OSVRST19FTkNMQVZFUz1tDQo+ID4gICAgQ09ORklHX05JVFJPX0VOQ0xBVkVT X01JU0NfREVWX1RFU1Q9eQ0KPiA+IGFuZCBpbnN0YWxsIHRoZSBuaXRyb19lbmNsYXZlcyBtb2R1 bGUgdG8gcnVuIHRoZSB0ZXN0Y2FzZXMuDQo+ID4NCj4gPiBXZSdsbCBzZWUgdGhlIGZvbGxvd2lu ZyBtZXNzYWdlIHVzaW5nIGRtZXNnIGlmIGV2ZXJ5dGhpbmcgZ29lcyB3ZWxsOg0KPiA+DQo+ID4g Wy4uLl0gICAgICMgU3VidGVzdDogbmVfbWlzY19kZXZfdGVzdA0KPiA+IFsuLi5dICAgICAxLi4x DQo+ID4gWy4uLl0gKE5VTEwgZGV2aWNlICopOiBQaHlzaWNhbCBtZW0gcmVnaW9uIGFkZHJlc3Mg aXMgbm90IDIgTWlCIGFsaWduZWQNCj4gPiBbLi4uXSAoTlVMTCBkZXZpY2UgKik6IFBoeXNpY2Fs IG1lbSByZWdpb24gc2l6ZSBpcyBub3QgbXVsdGlwbGUgb2YgMiBNaUINCj4gPiBbLi4uXSAoTlVM TCBkZXZpY2UgKik6IFBoeXNpY2FsIG1lbSByZWdpb24gYWRkcmVzcyBpcyBub3QgMiBNaUIgYWxp Z25lZA0KPiA+IFsuLi5dICAgICBvayAxIC0gbmVfbWlzY19kZXZfdGVzdF9tZXJnZV9waHlzX2Nv bnRpZ19tZW1vcnlfcmVnaW9ucw0KPiA+IFsuLi5dIG9rIDEgLSBuZV9taXNjX2Rldl90ZXN0DQo+ ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBMb25ncGVuZyA8bG9uZ3BlbmcyQGh1YXdlaS5jb20+DQo+ ID4gLS0tDQo+ID4gQ2hhbmdlcyB2MyAtPiB2NDoNCj4gPiAgICAtICJpbnQgZXhwZWN0X251bSIg LT4gInVuc2lnbmVkIGxvbmcgIGV4cGVjdF9udW0iICBbQW5kcmFdDQo+ID4gICAgLSByZW5hbWUg c2V2ZXJhbCB2YXJpYWJsZXMgYW5kIHN0cnVjdHVyZXMgIFtBbmRyYV0NCj4gPiAgICAtIGludm9r ZSAia3VuaXRfa2ZyZWUiIHRvIGZyZWUgdGhlICJyZWdpb25zIiAgW0FuZHJhXQ0KPiA+DQo+ID4g Q2hhbmdlcyB2MiAtPiB2MzoNCj4gPiAgICAtIHVwZGF0ZSB0aGUgY29tbWl0IHRpdGxlIGFuZCBj b21taXQgbWVzc2FnZS4gIFtBbmRyYV0NCj4gPiAgICAtIGFsaWduIHRoZSBmaWxlZHMgaW4gJ3N0 cnVjdCBwaHlzX3JlZ2lvbnNfdGVzdCcuICBbQW5kcmFdDQo+ID4gICAgLSByZW5hbWUgJ3BoeXNf cmVnaW9uc190ZXN0Y2FzZXMnIHRvICdwaHlzX3JlZ2lvbnNfdGVzdF9jYXNlcycuICBbQW5kcmFd DQo+ID4gICAgLSBhZGQgY29tbWVudHMgYmVmb3JlIGVhY2ggdGVzdCBjYXNlcy4gIFtBbmRyYV0N Cj4gPiAgICAtIGluaXRpYWxpemUgdGhlIHZhcmlhYmxlcyBpbg0KPiBuZV9taXNjX2Rldl90ZXN0 X21lcmdlX3BoeXNfY29udGlnX21lbW9yeV9yZWdpb25zLiAgW0FuZHJhXQ0KPiA+IC0tLQ0KPiA+ ICAgZHJpdmVycy92aXJ0L25pdHJvX2VuY2xhdmVzL25lX21pc2NfZGV2X3Rlc3QuYyB8IDEzOQ0K PiArKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gICAxIGZpbGUgY2hhbmdlZCwgMTM5IGlu c2VydGlvbnMoKykNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpcnQvbml0cm9fZW5j bGF2ZXMvbmVfbWlzY19kZXZfdGVzdC5jDQo+IGIvZHJpdmVycy92aXJ0L25pdHJvX2VuY2xhdmVz L25lX21pc2NfZGV2X3Rlc3QuYw0KPiA+IGluZGV4IDY4NjJlOTkuLjQ2NDhlYzAyIDEwMDY0NA0K PiA+IC0tLSBhL2RyaXZlcnMvdmlydC9uaXRyb19lbmNsYXZlcy9uZV9taXNjX2Rldl90ZXN0LmMN Cj4gPiArKysgYi9kcml2ZXJzL3ZpcnQvbml0cm9fZW5jbGF2ZXMvbmVfbWlzY19kZXZfdGVzdC5j DQo+ID4gQEAgLTIsNyArMiwxNDYgQEANCj4gPg0KPiA+ICAgI2luY2x1ZGUgPGt1bml0L3Rlc3Qu aD4NCj4gPg0KPiA+ICsjZGVmaW5lIE1BWF9QSFlTX1JFR0lPTlMJMTYNCj4gPiArI2RlZmluZSBJ TlZBTElEX1ZBTFVFCQkofjB1bGwpDQo+ID4gKw0KPiA+ICtzdHJ1Y3QgbmVfcGh5c19yZWdpb25z X3Rlc3Qgew0KPiA+ICsJdTY0ICAgICAgICAgICBwYWRkcjsNCj4gPiArCXU2NCAgICAgICAgICAg c2l6ZTsNCj4gPiArCWludCAgICAgICAgICAgZXhwZWN0X3JjOw0KPiA+ICsJdW5zaWduZWQgbG9u ZyBleHBlY3RfbnVtOw0KPiA+ICsJdTY0ICAgICAgICAgICBleHBlY3RfbGFzdF9wYWRkcjsNCj4g PiArCXU2NCAgICAgICAgICAgZXhwZWN0X2xhc3Rfc2l6ZTsNCj4gPiArfSBwaHlzX3JlZ2lvbnNf dGVzdF9jYXNlc1tdID0gew0KPiA+ICsJLyoNCj4gPiArCSAqIEFkZCB0aGUgcmVnaW9uIGZyb20g MHgxMDAwIHRvICgweDEwMDAgKyAweDIwMDAwMCAtIDEpOg0KPiA+ICsJICogICBFeHBlY3RlZCBy ZXN1bHQ6DQo+ID4gKwkgKiAgICAgICBGYWlsZWQsIHN0YXJ0IGFkZHJlc3MgaXMgbm90IDJNLWFs aWduZWQNCj4gPiArCSAqDQo+ID4gKwkgKiBOb3cgdGhlIGluc3RhbmNlIG9mIHN0cnVjdCBuZV9w aHlzX2NvbnRpZ19tZW1fcmVnaW9ucyBpczoNCj4gPiArCSAqICAgbnVtID0gMA0KPiA+ICsJICog ICByZWdpb25zID0ge30NCj4gPiArCSAqLw0KPiA+ICsJezB4MTAwMCwgMHgyMDAwMDAsIC1FSU5W QUwsIDAsIElOVkFMSURfVkFMVUUsIElOVkFMSURfVkFMVUV9LA0KPiA+ICsNCj4gPiArCS8qDQo+ ID4gKwkgKiBBZGQgdGhlIHJlZ2lvbiBmcm9tIDB4MjAwMDAwIHRvICgweDIwMDAwMCArIDB4MTAw MCAtIDEpOg0KPiA+ICsJICogICBFeHBlY3RlZCByZXN1bHQ6DQo+ID4gKwkgKiAgICAgICBGYWls ZWQsIHNpemUgaXMgbm90IDJNLWFsaWduZWQNCj4gPiArCSAqDQo+ID4gKwkgKiBOb3cgdGhlIGlu c3RhbmNlIG9mIHN0cnVjdCBuZV9waHlzX2NvbnRpZ19tZW1fcmVnaW9ucyBpczoNCj4gPiArCSAq ICAgbnVtID0gMA0KPiA+ICsJICogICByZWdpb25zID0ge30NCj4gPiArCSAqLw0KPiA+ICsJezB4 MjAwMDAwLCAweDEwMDAsIC1FSU5WQUwsIDAsIElOVkFMSURfVkFMVUUsIElOVkFMSURfVkFMVUV9 LA0KPiA+ICsNCj4gPiArCS8qDQo+ID4gKwkgKiBBZGQgdGhlIHJlZ2lvbiBmcm9tIDB4MjAwMDAw IHRvICgweDIwMDAwMCArIDB4MjAwMDAwIC0gMSk6DQo+ID4gKwkgKiAgIEV4cGVjdGVkIHJlc3Vs dDoNCj4gPiArCSAqICAgICAgIFN1Y2Nlc3NmdWwNCj4gPiArCSAqDQo+ID4gKwkgKiBOb3cgdGhl IGluc3RhbmNlIG9mIHN0cnVjdCBuZV9waHlzX2NvbnRpZ19tZW1fcmVnaW9ucyBpczoNCj4gPiAr CSAqICAgbnVtID0gMQ0KPiA+ICsJICogICByZWdpb25zID0gew0KPiA+ICsJICogICAgICAge3N0 YXJ0PTB4MjAwMDAwLCBlbmQ9MHgzZmZmZmZ9LCAvLyBsZW49MHgyMDAwMDANCj4gPiArCSAqICAg fQ0KPiA+ICsJICovDQo+ID4gKwl7MHgyMDAwMDAsIDB4MjAwMDAwLCAwLCAxLCAweDIwMDAwMCwg MHgyMDAwMDB9LA0KPiA+ICsNCj4gPiArCS8qDQo+ID4gKwkgKiBBZGQgdGhlIHJlZ2lvbiBmcm9t IDB4MCB0byAoMHgwICsgMHgyMDAwMDAgLSAxKToNCj4gPiArCSAqICAgRXhwZWN0ZWQgcmVzdWx0 Og0KPiA+ICsJICogICAgICAgU3VjY2Vzc2Z1bA0KPiA+ICsJICoNCj4gPiArCSAqIE5vdyB0aGUg aW5zdGFuY2Ugb2Ygc3RydWN0IG5lX3BoeXNfY29udGlnX21lbV9yZWdpb25zIGlzOg0KPiA+ICsJ ICogICBudW0gPSAyDQo+ID4gKwkgKiAgIHJlZ2lvbnMgPSB7DQo+ID4gKwkgKiAgICAgICB7c3Rh cnQ9MHgyMDAwMDAsIGVuZD0weDNmZmZmZn0sIC8vIGxlbj0weDIwMDAwMA0KPiA+ICsJICogICAg ICAge3N0YXJ0PTB4MCwgICAgICBlbmQ9MHgxZmZmZmZ9LCAvLyBsZW49MHgyMDAwMDANCj4gPiAr CSAqICAgfQ0KPiA+ICsJICovDQo+ID4gKwl7MHgwLCAweDIwMDAwMCwgMCwgMiwgMHgwLCAweDIw MDAwMH0sDQo+ID4gKw0KPiA+ICsJLyoNCj4gPiArCSAqIEFkZCB0aGUgcmVnaW9uIGZyb20gMHg2 MDAwMDAgdG8gKDB4NjAwMDAwICsgMHg0MDAwMDAgLSAxKToNCj4gPiArCSAqICAgRXhwZWN0ZWQg cmVzdWx0Og0KPiA+ICsJICogICAgICAgU3VjY2Vzc2Z1bA0KPiA+ICsJICoNCj4gPiArCSAqIE5v dyB0aGUgaW5zdGFuY2Ugb2Ygc3RydWN0IG5lX3BoeXNfY29udGlnX21lbV9yZWdpb25zIGlzOg0K PiA+ICsJICogICBudW0gPSAzDQo+ID4gKwkgKiAgIHJlZ2lvbnMgPSB7DQo+ID4gKwkgKiAgICAg ICB7c3RhcnQ9MHgyMDAwMDAsIGVuZD0weDNmZmZmZn0sIC8vIGxlbj0weDIwMDAwMA0KPiA+ICsJ ICogICAgICAge3N0YXJ0PTB4MCwgICAgICBlbmQ9MHgxZmZmZmZ9LCAvLyBsZW49MHgyMDAwMDAN Cj4gPiArCSAqICAgICAgIHtzdGFydD0weDYwMDAwMCwgZW5kPTB4OWZmZmZmfSwgLy8gbGVuPTB4 NDAwMDAwDQo+ID4gKwkgKiAgIH0NCj4gPiArCSAqLw0KPiA+ICsJezB4NjAwMDAwLCAweDQwMDAw MCwgMCwgMywgMHg2MDAwMDAsIDB4NDAwMDAwfSwNCj4gPiArDQo+ID4gKwkvKg0KPiA+ICsJICog QWRkIHRoZSByZWdpb24gZnJvbSAweGEwMDAwMCB0byAoMHhhMDAwMDAgKyAweDQwMDAwMCAtIDEp Og0KPiA+ICsJICogICBFeHBlY3RlZCByZXN1bHQ6DQo+ID4gKwkgKiAgICAgICBTdWNjZXNzZnVs LCBtZXJnaW5nIGNhc2UhDQo+ID4gKwkgKg0KPiA+ICsJICogTm93IHRoZSBpbnN0YW5jZSBvZiBz dHJ1Y3QgbmVfcGh5c19jb250aWdfbWVtX3JlZ2lvbnMgaXM6DQo+ID4gKwkgKiAgIG51bSA9IDMN Cj4gPiArCSAqICAgcmVnaW9ucyA9IHsNCj4gPiArCSAqICAgICAgIHtzdGFydD0weDIwMDAwMCwg ZW5kPTB4M2ZmZmZmfSwgLy8gbGVuPTB4MjAwMDAwDQo+ID4gKwkgKiAgICAgICB7c3RhcnQ9MHgw LCAgICAgIGVuZD0weDFmZmZmZn0sIC8vIGxlbj0weDIwMDAwMA0KPiA+ICsJICogICAgICAge3N0 YXJ0PTB4NjAwMDAwLCBlbmQ9MHhkZmZmZmZ9LCAvLyBsZW49MHg4MDAwMDANCj4gPiArCSAqICAg fQ0KPiA+ICsJICovDQo+ID4gKwl7MHhhMDAwMDAsIDB4NDAwMDAwLCAwLCAzLCAweDYwMDAwMCwg MHg4MDAwMDB9LA0KPiA+ICsNCj4gPiArCS8qDQo+ID4gKwkgKiBBZGQgdGhlIHJlZ2lvbiBmcm9t IDB4MTAwMCB0byAoMHgxMDAwICsgMHgyMDAwMDAgLSAxKToNCj4gPiArCSAqICAgRXhwZWN0ZWQg cmVzdWx0Og0KPiA+ICsJICogICAgICAgRmFpbGVkLCBzdGFydCBhZGRyZXNzIGlzIG5vdCAyTS1h bGlnbmVkDQo+ID4gKwkgKg0KPiA+ICsJICogTm93IHRoZSBpbnN0YW5jZSBvZiBzdHJ1Y3QgbmVf cGh5c19jb250aWdfbWVtX3JlZ2lvbnMgaXM6DQo+ID4gKwkgKiAgIG51bSA9IDMNCj4gPiArCSAq ICAgcmVnaW9ucyA9IHsNCj4gPiArCSAqICAgICAgIHtzdGFydD0weDIwMDAwMCwgZW5kPTB4M2Zm ZmZmfSwgLy8gbGVuPTB4MjAwMDAwDQo+ID4gKwkgKiAgICAgICB7c3RhcnQ9MHgwLCAgICAgIGVu ZD0weDFmZmZmZn0sIC8vIGxlbj0weDIwMDAwMA0KPiA+ICsJICogICAgICAge3N0YXJ0PTB4NjAw MDAwLCBlbmQ9MHhkZmZmZmZ9LCAvLyBsZW49MHg4MDAwMDANCj4gPiArCSAqICAgfQ0KPiA+ICsJ ICovDQo+ID4gKwl7MHgxMDAwLCAweDIwMDAwMCwgLUVJTlZBTCwgMywgMHg2MDAwMDAsIDB4ODAw MDAwfSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIG5lX21pc2NfZGV2X3Rlc3Rf bWVyZ2VfcGh5c19jb250aWdfbWVtb3J5X3JlZ2lvbnMoc3RydWN0IGt1bml0DQo+ICp0ZXN0KQ0K PiA+ICt7DQo+ID4gKwlzdHJ1Y3QgbmVfcGh5c19jb250aWdfbWVtX3JlZ2lvbnMgcGh5c19jb250 aWdfbWVtX3JlZ2lvbnMgPSB7fTsNCj4gPiArCWludCByYyA9IDA7DQo+ID4gKwlpbnQgaSA9IDA7 DQo+ID4gKw0KPiA+ICsJcGh5c19jb250aWdfbWVtX3JlZ2lvbnMucmVnaW9ucyA9IGt1bml0X2tj YWxsb2ModGVzdCwgTUFYX1BIWVNfUkVHSU9OUywNCj4gPiArCQkJCQlzaXplb2YoKnBoeXNfY29u dGlnX21lbV9yZWdpb25zLnJlZ2lvbnMpLCBHRlBfS0VSTkVMKTsNCj4gPiArCUtVTklUX0FTU0VS VF9UUlVFKHRlc3QsIHBoeXNfY29udGlnX21lbV9yZWdpb25zLnJlZ2lvbnMgIT0gTlVMTCk7DQo+ IA0KPiBQbGVhc2UgdXBkYXRlIHRoZSBjb2RlYmFzZSBhcyBwZXIgdGhlc2UgdHdvICJjaGVja3Bh dGNoIiBtZXNzYWdlczoNCj4gDQo+IENIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4g cGFyZW50aGVzaXMNCj4gIzExODogRklMRToNCj4gL2hvbWUvdWJ1bnR1L2xpbnV4L2RyaXZlcnMv dmlydC9uaXRyb19lbmNsYXZlcy9uZV9taXNjX2Rldl90ZXN0LmM6MTE4Og0KPiArCXBoeXNfY29u dGlnX21lbV9yZWdpb25zLnJlZ2lvbnMgPSBrdW5pdF9rY2FsbG9jKHRlc3QsIE1BWF9QSFlTX1JF R0lPTlMsDQo+ICsJCQkJCXNpemVvZigqcGh5c19jb250aWdfbWVtX3JlZ2lvbnMucmVnaW9ucyks IEdGUF9LRVJORUwpOw0KPiANCj4gDQo+IENIRUNLOiBDb21wYXJpc29uIHRvIE5VTEwgY291bGQg YmUgd3JpdHRlbiAicGh5c19jb250aWdfbWVtX3JlZ2lvbnMucmVnaW9ucyINCj4gIzExOTogRklM RToNCj4gL2hvbWUvdWJ1bnR1L2xpbnV4L2RyaXZlcnMvdmlydC9uaXRyb19lbmNsYXZlcy9uZV9t aXNjX2Rldl90ZXN0LmM6MTE5Og0KPiArCUtVTklUX0FTU0VSVF9UUlVFKHRlc3QsIHBoeXNfY29u dGlnX21lbV9yZWdpb25zLnJlZ2lvbnMgIT0gTlVMTCk7DQo+IA0KPiBUaGUgZmlyc3Qgb25lIGlz IHNpbWlsYXIgdG8gdGhlIGFsaWdubWVudCBjaGVjayBmcm9tIHRoZSBmaXJzdCBwYXRjaCBpbg0K PiB0aGlzIHNlcmllcy4gVGhlIHNlY29uZCBvbmUgaXMganVzdCAiS1VOSVRfQVNTRVJUX1RSVUUo dGVzdCwNCj4gcGh5c19jb250aWdfbWVtX3JlZ2lvbnMucmVnaW9ucyk7Ii4NCj4gDQoNCk9LLCB3 aWxsIGZpeCB0aGVtIChpbmNsdWRpbmcgdGhlIGZpcnN0IHBhdGNoKSBpbiB0aGUgbmV4dCB2ZXJz aW9uLCBUaGFua3MuDQoNCj4gT3RoZXIgdGhhbiB0aGF0LCBsb29rcyBnb29kIHRvIG1lLg0KPiAN Cj4gVGhhbmtzLA0KPiBBbmRyYQ0KPiANCj4gPiArDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRShwaHlzX3JlZ2lvbnNfdGVzdF9jYXNlcyk7IGkrKykgew0KPiA+ICsJCXN0cnVjdCBu ZV9waHlzX3JlZ2lvbnNfdGVzdCAqdGVzdF9jYXNlID0gJnBoeXNfcmVnaW9uc190ZXN0X2Nhc2Vz W2ldOw0KPiA+ICsJCXVuc2lnbmVkIGxvbmcgbnVtID0gMDsNCj4gPiArDQo+ID4gKwkJcmMgPSBu ZV9tZXJnZV9waHlzX2NvbnRpZ19tZW1vcnlfcmVnaW9ucygmcGh5c19jb250aWdfbWVtX3JlZ2lv bnMsDQo+ID4gKwkJCQkJCQkgdGVzdF9jYXNlLT5wYWRkciwgdGVzdF9jYXNlLT5zaXplKTsNCj4g PiArCQlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgcmMsIHRlc3RfY2FzZS0+ZXhwZWN0X3JjKTsNCj4g PiArCQlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgcGh5c19jb250aWdfbWVtX3JlZ2lvbnMubnVtLA0K PiB0ZXN0X2Nhc2UtPmV4cGVjdF9udW0pOw0KPiA+ICsNCj4gPiArCQlpZiAodGVzdF9jYXNlLT5l eHBlY3RfbGFzdF9wYWRkciA9PSBJTlZBTElEX1ZBTFVFKQ0KPiA+ICsJCQljb250aW51ZTsNCj4g PiArDQo+ID4gKwkJbnVtID0gcGh5c19jb250aWdfbWVtX3JlZ2lvbnMubnVtOw0KPiA+ICsJCUtV TklUX0VYUEVDVF9FUSh0ZXN0LCBwaHlzX2NvbnRpZ19tZW1fcmVnaW9ucy5yZWdpb25zW251bSAt IDFdLnN0YXJ0LA0KPiA+ICsJCQkJdGVzdF9jYXNlLT5leHBlY3RfbGFzdF9wYWRkcik7DQo+ID4g KwkJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIHJhbmdlX2xlbigmcGh5c19jb250aWdfbWVtX3JlZ2lv bnMucmVnaW9uc1tudW0NCj4gLSAxXSksDQo+ID4gKwkJCQl0ZXN0X2Nhc2UtPmV4cGVjdF9sYXN0 X3NpemUpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWt1bml0X2tmcmVlKHRlc3QsIHBoeXNfY29u dGlnX21lbV9yZWdpb25zLnJlZ2lvbnMpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgc3RhdGljIHN0 cnVjdCBrdW5pdF9jYXNlIG5lX21pc2NfZGV2X3Rlc3RfY2FzZXNbXSA9IHsNCj4gPiArCUtVTklU X0NBU0UobmVfbWlzY19kZXZfdGVzdF9tZXJnZV9waHlzX2NvbnRpZ19tZW1vcnlfcmVnaW9ucyks DQo+ID4gICAJe30NCj4gPiAgIH07DQo+ID4NCj4gPg0KPiANCj4gDQo+IA0KPiBBbWF6b24gRGV2 ZWxvcG1lbnQgQ2VudGVyIChSb21hbmlhKSBTLlIuTC4gcmVnaXN0ZXJlZCBvZmZpY2U6IDI3QSBT Zi4gTGF6YXINCj4gU3RyZWV0LCBVQkM1LCBmbG9vciAyLCBJYXNpLCBJYXNpIENvdW50eSwgNzAw MDQ1LCBSb21hbmlhLiBSZWdpc3RlcmVkIGluIFJvbWFuaWEuDQo+IFJlZ2lzdHJhdGlvbiBudW1i ZXIgSjIyLzI2MjEvMjAwNS4NCg==