From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30047.outbound.protection.outlook.com [40.107.3.47]) by dpdk.org (Postfix) with ESMTP id D7F782862 for ; Thu, 8 Nov 2018 01:45:02 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fsOgV6yy3y+RaxQkdSfJ2kn3w3zLfmK3KvhvlN2dKCs=; b=Ka6+yWpd2FG+Ry+fJnhU1HLbf4gpeYMj1m6Pqp2vHBbfR6scpOmqNiSuOI22mWQESCbf+Uld0XCFGUD1xxaHoUwMdh8RlRsSCVrEPJzAGLba5JFPwOnGDl2+avvh5MRrixY4B1HOX7rQSrLt0KKVpl4Le5wE7yU+Vg76RuIsUqE= Received: from AM0PR08MB3409.eurprd08.prod.outlook.com (20.177.109.139) by AM0PR08MB2964.eurprd08.prod.outlook.com (52.134.92.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1294.21; Thu, 8 Nov 2018 00:45:01 +0000 Received: from AM0PR08MB3409.eurprd08.prod.outlook.com ([fe80::3074:eca6:1d39:dd5]) by AM0PR08MB3409.eurprd08.prod.outlook.com ([fe80::3074:eca6:1d39:dd5%2]) with mapi id 15.20.1294.034; Thu, 8 Nov 2018 00:45:01 +0000 From: "Tone Zhang (Arm Technology China)" To: "Burakov, Anatoly" , "dev@dpdk.org" CC: nd Thread-Topic: [dpdk-dev] [PATCH] pci_vfio: Support 64KB kernel page_size with vfio-pci driver Thread-Index: AQHUa3lCIRooCn9f+0Kigcs8A1SPlKU6P4IAgAB9OACAAqfkgIAALSbQgAUX2wCAAQ3ZwIAAdnmAgADzb9A= Date: Thu, 8 Nov 2018 00:45:01 +0000 Message-ID: References: <1540347604-18590-1-git-send-email-tone.zhang@arm.com> <9b893c0a-9ac6-ba53-16c6-d20f6a458f80@intel.com> <6556e6fc-dd84-b256-97d2-51018956bbcd@intel.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Tone.Zhang@arm.com; x-originating-ip: [113.29.88.7] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM0PR08MB2964; 6:5v1r7ZlKdFRevjyVz6t0qVOeYHCdfyQTNn3g68vmrUcf8ji2Mosd94TVcRvHtZTFJkxkXVM9pCmLbvRdWaB+kBNhA+u2V8tGv+mxdM0UrzfgNdqFBp9+RknfrDr8YCStyGgm1MWX5AsmxkIdnbJ95nfpMAYMtkUhU8ynQSqHQwaF5pgblldP4UUB1b6HKBXCdbvykEcglmcqU5dCNkGttqqiy9tfMquZFkgFqQGN3MvhSCWfv7yCAO+EB6I5H3Kva1+9a4WhndxIEQ5k2JN70tWogJ6R+QZZDjxPKSrI8J4b9b13uyqiqXZUL+5Tj2LENIAez0KKmTvvC50eg9ei0QUPonJpT8XAg/0cQGdW/T9FcX7hAhsYpd6MOcczXpO7KEHE9CQ8+1Bin+sqgWOaVFy7x/jLZo4hGDdXs4u20FX1SGb516rUusA5bJZeJntK2YDe4kF9ZEpMYYdXs9jO1w==; 5:1mQrt3qT7q0rb9TvUqMZrCDNhAWC8IJ1bntPZECB1dmRddcmj7XKgjk6JUdDIRUS0oxEIvyZe+hSmqCzXwIReZ95X8xxotWRzpW2DxdpWHpCZiwpNXWTqr4GsCDz4/DgQbOd13jhvZNHCYIlp4NBCQhHg658SmnJFq49i4p7FUQ=; 7:+VZKJdmCsAnyAd0KsXSItWUDnsrk98M+gJqwv/P06L+UkcYlTiWe8lPlUdXdhzLJziaArisK4G5MNn6eK56b6iWt0wJIlGMtRz8q+Vp+VOikh80wLrujAhzDiGF5BOzgVLbnaloVH19GqCObs0jBkQ== x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: 81bfd009-d7be-4280-ae25-08d645136a99 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM0PR08MB2964; x-ms-traffictypediagnostic: AM0PR08MB2964: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(20558992708506)(228905959029699)(180628864354917); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231382)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:AM0PR08MB2964; BCL:0; PCL:0; RULEID:; SRVR:AM0PR08MB2964; x-forefront-prvs: 0850800A29 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(979002)(346002)(376002)(366004)(136003)(39860400002)(396003)(13464003)(199004)(189003)(33656002)(186003)(2906002)(7736002)(305945005)(26005)(53546011)(74316002)(6506007)(102836004)(11346002)(446003)(486006)(55236004)(476003)(478600001)(93886005)(4326008)(25786009)(5660300001)(66066001)(7696005)(6116002)(229853002)(76176011)(106356001)(3846002)(105586002)(99286004)(2900100001)(86362001)(14454004)(68736007)(72206003)(97736004)(2501003)(8676002)(110136005)(316002)(81156014)(81166006)(8936002)(71200400001)(6246003)(53936002)(9686003)(71190400001)(55016002)(256004)(6436002)(14444005)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR08MB2964; H:AM0PR08MB3409.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: OnCdZdhVkbGZp1+SnZjprMbTCV7XYXU4+70k8AzT+BnF5macEJKroKM/++FCsLPEZOPWa28KUmAMlOLbVXA11tPrttFhdFyj6MasurBzQ5Lak5ANqFYF7joJ33sEgNIuS84LKuDI28Nh0fF3YgCMDLQa4EGH98xHO0JLRov/ErxvYTkXvomIVDmJlMRW7Gx5mD6XyvZNNgTtpeVqQ99u04NrYvRX8J0IigzxLn3HZz5w0b42BrPTsdj/a5Suar9u4q+P+aL/Gg/275hm17E6r5717aAbpodNqyuU3BFMVjQRG2248pyhxMymSX8ciw0WSonJ+Ku8dHkvH1tUR73ulxjIlDf6SR073q9uXfLJ99g= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 81bfd009-d7be-4280-ae25-08d645136a99 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Nov 2018 00:45:01.3874 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB2964 Subject: Re: [dpdk-dev] [PATCH] pci_vfio: Support 64KB kernel page_size with vfio-pci driver X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Nov 2018 00:45:03 -0000 SGkgQnVyYWtvdiwNCg0KVGhhbmtzIGEgbG90IGZvciB5b3UgcmV2aWV3LiBJIHdpbGwgdXBkYXRl IHRoZSBjaGFuZ2UgYW5kIHB1c2ggdGhlIG5leHQgdmVyc2lvbiBBU0FQLg0KDQpUaGFua3MhDQoN CkJyLA0KVG9uZQ0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogQnVyYWtvdiwg QW5hdG9seSA8YW5hdG9seS5idXJha292QGludGVsLmNvbT4gDQpTZW50OiBXZWRuZXNkYXksIE5v dmVtYmVyIDcsIDIwMTggNjoxMyBQTQ0KVG86IFRvbmUgWmhhbmcgKEFybSBUZWNobm9sb2d5IENo aW5hKSA8VG9uZS5aaGFuZ0Bhcm0uY29tPjsgZGV2QGRwZGsub3JnDQpDYzogbmQgPG5kQGFybS5j b20+DQpTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0hdIHBjaV92ZmlvOiBTdXBwb3J0IDY0 S0Iga2VybmVsIHBhZ2Vfc2l6ZSB3aXRoIHZmaW8tcGNpIGRyaXZlcg0KDQpPbiAwNy1Ob3YtMTgg NDo1NSBBTSwgVG9uZSBaaGFuZyAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIHdyb3RlOg0KPiBIaSBC dXJha292LA0KPiANCj4gUGxlYXNlIGZpbmQgbXkgdGVzdCBjYXNlIGJlbG93LiBUaGFua3MhDQo+ IA0KPiBCciwNCj4gVG9uZQ0KPiANCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJv bTogQnVyYWtvdiwgQW5hdG9seSA8YW5hdG9seS5idXJha292QGludGVsLmNvbT4NCj4gU2VudDog VHVlc2RheSwgTm92ZW1iZXIgNiwgMjAxOCA3OjAzIFBNDQo+IFRvOiBUb25lIFpoYW5nIChBcm0g VGVjaG5vbG9neSBDaGluYSkgPFRvbmUuWmhhbmdAYXJtLmNvbT47IA0KPiBkZXZAZHBkay5vcmcN Cj4gQ2M6IG5kIDxuZEBhcm0uY29tPg0KPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0hd IHBjaV92ZmlvOiBTdXBwb3J0IDY0S0Iga2VybmVsIA0KPiBwYWdlX3NpemUgd2l0aCB2ZmlvLXBj aSBkcml2ZXINCj4gDQo+IE9uIDAzLU5vdi0xOCA1OjQ2IEFNLCBUb25lIFpoYW5nIChBcm0gVGVj aG5vbG9neSBDaGluYSkgd3JvdGU6DQo+PiBIaSBCdXJha292LA0KPj4NCj4+IFRoYW5rcyENCj4+ IFBsZWFzZSBjaGVjayBteSBmZWVkYmFjayBiZWxvdy4NCj4+DQo+PiBCciwNCj4+IFRvbmUNCj4+ DQo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4gRnJvbTogZGV2IDxkZXYtYm91bmNl c0BkcGRrLm9yZz4gT24gQmVoYWxmIE9mIEJ1cmFrb3YsIEFuYXRvbHkNCj4+IFNlbnQ6IFRodXJz ZGF5LCBOb3ZlbWJlciAxLCAyMDE4IDY6MDEgUE0NCj4+IFRvOiBUb25lIFpoYW5nIChBcm0gVGVj aG5vbG9neSBDaGluYSkgPFRvbmUuWmhhbmdAYXJtLmNvbT47IA0KPj4gZGV2QGRwZGsub3JnDQo+ PiBDYzogbmQgPG5kQGFybS5jb20+DQo+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0hd IHBjaV92ZmlvOiBTdXBwb3J0IDY0S0Iga2VybmVsIA0KPj4gcGFnZV9zaXplIHdpdGggdmZpby1w Y2kgZHJpdmVyDQo+Pg0KPj4gT24gMDEtTm92LTE4IDI6MzMgQU0sIFRvbmUgWmhhbmcgKEFybSBU ZWNobm9sb2d5IENoaW5hKSB3cm90ZToNCj4+PiBIaSBCdXJha292LA0KPj4+DQo+Pj4gSSdtIHNv cnJ5IGZvciB0aGUgbGF0ZSByZXNwb25zZS4NCj4+Pg0KPj4+IFRoYW5rcyBhIGxvdCBmb3IgeW91 ciBjb21tZW50cy4gUGxlYXNlIGZpbmQgbXkgcmVzcG9uc2UgYmVsb3cgDQo+Pj4gKG1hcmtlZCB3 aXRoICJUb25lOiIpLiDwn5iKDQo+Pj4NCj4+PiBCciwNCj4+PiBUb25lDQo+Pj4NCj4+PiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4+IEZyb206IEJ1cmFrb3YsIEFuYXRvbHkgPGFuYXRv bHkuYnVyYWtvdkBpbnRlbC5jb20+DQo+Pj4gU2VudDogV2VkbmVzZGF5LCBPY3RvYmVyIDI0LCAy MDE4IDU6MDkgUE0NCj4+PiBUbzogVG9uZSBaaGFuZyAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIDxU b25lLlpoYW5nQGFybS5jb20+OyANCj4+PiBkZXZAZHBkay5vcmcNCj4+PiBDYzogbmQgPG5kQGFy bS5jb20+DQo+Pj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIXSBwY2lfdmZpbzogU3Vw cG9ydCA2NEtCIGtlcm5lbCANCj4+PiBwYWdlX3NpemUgd2l0aCB2ZmlvLXBjaSBkcml2ZXINCj4+ Pg0KPj4+IE9uIDI0LU9jdC0xOCAzOjIwIEFNLCB0b25lLnpoYW5nIHdyb3RlOg0KPj4+PiBXaXRo IGEgbGFyZ2VyIFBBR0VfU0laRSBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIE1TSSB0YWJsZSB0byB2 ZXJ5IA0KPj4+PiBjbG9zZSB0byB0aGUgZW5kIG9mIHRoZSBCQVIgcy50LiB3aGVuIHdlIGFsaWdu IHRoZSBNU0kgdGFibGUgdG8gdGhlIA0KPj4+PiBQQUdFX1NJWkUsIHRoZSBlbmQgb2Zmc2V0IG9m IHRoZSBNU0kgdGFibGUgaXMgb3V0IHRoZSBQQ0kgQkFSIA0KPj4+PiBib3VuZGFyeS4NCj4+Pj4N Cj4+Pj4gVGhpcyBwYXRjaCBhZGRyZXNzZXMgdGhlIGlzc3VlIGJ5IGNvbXBhcmluZyBib3RoIHRo ZSBzdGFydCBhbmQgdGhlIA0KPj4+PiBlbmQgb2Zmc2V0IG9mIHRoZSBNU0kgdGFibGUgd2l0aCB0 aGUgQkFSIHNpemUuDQo+Pj4+DQo+Pj4+IFRoZSBwYXRjaCBmaXhlcyB0aGUgZGVidWcgbG9nIGFz IGJlbG93Og0KPj4+PiBFQUw6IFNraXBwaW5nIEJBUjANCj4+Pj4NCj4+Pj4gU2lnbmVkLW9mZi1i eTogdG9uZS56aGFuZyA8dG9uZS56aGFuZ0Bhcm0uY29tPg0KPj4+PiBSZXZpZXdlZC1ieTogR2F2 aW4gSHUgPEdhdmluLkh1QGFybS5jb20+DQo+Pj4+IFJldmlld2VkLWJ5OiBIb25uYXBwYSBOYWdh cmFoYWxsaSA8aG9ubmFwcGEubmFnYXJhaGFsbGlAYXJtLmNvbT4NCj4+Pj4gUmV2aWV3ZWQtYnk6 IFN0ZXZlIENhcHBlciA8U3RldmUuQ2FwcGVyQGFybS5jb20+DQo+Pj4+IC0tLQ0KPj4+PiAgICAg IGRyaXZlcnMvYnVzL3BjaS9saW51eC9wY2lfdmZpby5jIHwgMjUgKysrKysrKysrKysrKysrKysr KysrLS0tLQ0KPj4+PiAgICAgIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA0IGRl bGV0aW9ucygtKQ0KPj4+Pg0KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9idXMvcGNpL2xpbnV4 L3BjaV92ZmlvLmMNCj4+Pj4gYi9kcml2ZXJzL2J1cy9wY2kvbGludXgvcGNpX3ZmaW8uYw0KPj4+ PiBpbmRleCBiMWYwNjgzLi4xMzczMzQ1IDEwMDY0NA0KPj4+PiAtLS0gYS9kcml2ZXJzL2J1cy9w Y2kvbGludXgvcGNpX3ZmaW8uYw0KPj4+PiArKysgYi9kcml2ZXJzL2J1cy9wY2kvbGludXgvcGNp X3ZmaW8uYw0KPj4+PiBAQCAtNDQ1LDkgKzQ0NSwxMSBAQCBwY2lfdmZpb19tbWFwX2JhcihpbnQg dmZpb19kZXZfZmQsIHN0cnVjdCBtYXBwZWRfcGNpX3Jlc291cmNlICp2ZmlvX3JlcywNCj4+Pj4g ICAgICAJc3RydWN0IHBjaV9tc2l4X3RhYmxlICptc2l4X3RhYmxlID0gJnZmaW9fcmVzLT5tc2l4 X3RhYmxlOw0KPj4+PiAgICAgIAlzdHJ1Y3QgcGNpX21hcCAqYmFyID0gJnZmaW9fcmVzLT5tYXBz W2Jhcl9pbmRleF07DQo+Pj4+ICAgICAgDQo+Pj4+IC0JaWYgKGJhci0+c2l6ZSA9PSAwKQ0KPj4+ PiArCWlmIChiYXItPnNpemUgPT0gMCkgew0KPj4+PiAgICAgIAkJLyogU2tpcCB0aGlzIEJBUiAq Lw0KPj4+PiArCQlSVEVfTE9HKElORk8sIEVBTCwgIlNraXBwaW5nIHRoaXMgQkFSJWRcbiIsIGJh cl9pbmRleCk7DQo+Pj4+ICAgICAgCQlyZXR1cm4gMDsNCj4+Pg0KPj4+IEkgZmVlbCBsaWtlICJ0 aGlzIiBpcyB1bm5lY2Vzc2FyeSBoZXJlIC0ganVzdCAiU2tpcHBpbmcgQkFSJWQiIA0KPj4+IHNo b3VsZCBiZSBlbm91Z2ggOikNCj4+Pg0KPj4+IFRvbmU6IFdpbGwgdXBkYXRlIGNvZGUgYW5kIHJl bW92ZSAidGhpcyIgaW4gbmV4dCB2ZXJzaW9uLg0KPj4+DQo+Pj4+ICsJfQ0KPj4+PiAgICAgIA0K Pj4+PiAgICAgIAlpZiAobXNpeF90YWJsZS0+YmFyX2luZGV4ID09IGJhcl9pbmRleCkgew0KPj4+ PiAgICAgIAkJLyoNCj4+Pj4gQEAgLTQ1Nyw3ICs0NTksMTIgQEAgcGNpX3ZmaW9fbW1hcF9iYXIo aW50IHZmaW9fZGV2X2ZkLCBzdHJ1Y3QgbWFwcGVkX3BjaV9yZXNvdXJjZSAqdmZpb19yZXMsDQo+ Pj4+ICAgICAgCQl1aW50MzJfdCB0YWJsZV9zdGFydCA9IG1zaXhfdGFibGUtPm9mZnNldDsNCj4+ Pj4gICAgICAJCXVpbnQzMl90IHRhYmxlX2VuZCA9IHRhYmxlX3N0YXJ0ICsgbXNpeF90YWJsZS0+ c2l6ZTsNCj4+Pj4gICAgICAJCXRhYmxlX2VuZCA9ICh0YWJsZV9lbmQgKyB+UEFHRV9NQVNLKSAm IFBBR0VfTUFTSzsNCj4+Pj4gLQkJdGFibGVfc3RhcnQgJj0gUEFHRV9NQVNLOw0KPj4+PiArCQl0 YWJsZV9zdGFydCA9ICh0YWJsZV9zdGFydCArIH5QQUdFX01BU0spICYgUEFHRV9NQVNLOw0KPj4+ DQo+Pj4gSU1PIHRoZXNlIHR3byBhZGRpdGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IFJURV9B TElHTiBieSBwYWdlIHNpemUuDQo+Pj4gTWFrZXMgdGhlIHB1cnBvc2Ugb2YgdGhlIGNvZGUgbXVj aCBjbGVhcmVyLg0KPj4+DQo+Pj4gVG9uZTogU3VyZSwgaXQgaXMgYmV0dGVyISBXaWxsIHVwZGF0 ZSBjb2RlIGluIG5leHQgdmVyc2lvbi4gVGhhbmtzIQ0KPj4+DQo+Pj4+ICsJCS8qIGFmdGVyIHJv dW5kaW5nIHRvIFBBR0VfU0laRSwgaXQgaXMgb3ZlciB0aGUgYmFyLT5zaXplLA0KPj4+PiArCQkg KiBmYWxsIGJhY2sgdG8gdGhlIE1TSS1YIHRhYmxlIG9mZnNldCBpbiB0aGUgYmFyLg0KPj4+PiAr CQkqLw0KPj4+PiArCQlpZiAodGFibGVfc3RhcnQgPj0gYmFyLT5zaXplKQ0KPj4+PiArCQkJdGFi bGVfc3RhcnQgPSBtc2l4X3RhYmxlLT5vZmZzZXQ7DQo+Pj4NCj4+PiBJZiBpIHVuZGVyc3RhbmQg dGhpbmdzIGNvcnJlY3RseSwgbXNpeF90YWJsZS0+b2Zmc2V0IHZhbHVlIGhlcmUgbWF5IGJlIHVu YWxpZ25lZCwgc28gZmFsbGluZyBiYWNrIHRvIHRoaXMgdmFsdWUgbWF5IGNhdXNlIG1hcHBpbmcg ZmFpbHVyZSwgYmVjYXVzZSB3ZSBsYXRlciB1c2UgdGhpcyB2YWx1ZSBhcyBhIHNpemUgb2YgbWFw cGluZyAod2hpY2ggbmVlZHMgdG8gYmUgcGFnZSBhbGlnbmVkKS4gU2hvdWxkbid0IHRoaXMgYmUg YWxpZ25lZCB1c2luZyBSVEVfQUxJR05fRkxPT1IgYnkgcGFnZSBzaXplPw0KPj4+DQo+Pj4gVG9u ZTogSXQgaXMgYSBsaXR0bGUgdHJpY2t5LiBBbGlnbiBtc2l4X3RhYmxlLT5vZmZzZXQgd2l0aCBS VEVfQUxJR05fRkxPT1IgbWF5YmUgZ2V0IDAgaWYgdGhlIG9mZnNldCBpcyBsZXNzIHRoYW4gcGFn ZSBzaXplIGluIHRoZSBQQ0kgYmFyLiBJdCB3aWxsIHRyaWdnZXIgbW1hcCgpIGVycm9yLiBJSVJD IHRoZSBpbnB1dCBwYXJhbWV0ZXIgInNpemUiIGluIG1tYXAoKSBpcyBub3QgcmVxdWlyZWQgdG8g YmUgYWxpZ25lZCB3aXRoIHBhZ2Ugc2l6ZSwgc3lzdGVtIHdpbGwgZG8gaXQuIEJ1dCBpdCBpcyBi ZXR0ZXIgaWYgd2UgY2FuIGRvIGl0LiBJZiBJIHdhcyB3cm9uZywgcGxlYXNlIGNvcnJlY3QgbWUu IFRoYW5rcyBhIGxvdC4NCj4+DQo+PiBBcG9sb2dpZXMsIHlvdSdyZSBjb3JyZWN0IC0gbGVuZ3Ro IGNhbiBiZSBtaXNhbGlnbmVkIChqdXN0IHRlc3RlZCBpdCkuDQo+Pg0KPj4gSG93ZXZlciwgaSB0 aGluayBpdCdzIHN0aWxsIHdvcnRoIGFsaWduaW5nIChhbmQgcHV0dGluZyBpbiBhbiBhZGRpdGlv bmFsIGNoZWNrKSwgYmVjYXVzZSB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSAqZG9uJ3QqIGF0dGVt cHQgdG8gbWFwIHRoZSBNU0ktWCBCQVIsIGFuZCBrZXJuZWwgbWlnaHQgZG8gdGhhdCBieSBhZGp1 c3RpbmcgbGVuZ3RoIGF1dG9tYXRpY2FsbHkgYW5kIHJldHVybiBtbWFwIGZhaWx1cmUgdGhhdCB3 YXkuDQo+Pg0KPj4gVG9uZTogVGhhbmtzIGEgbG90ISBJIGFncmVlIHdpdGggeW91LiBJdCB3b3J0 aCBhbGlnbmluZyB0aGUgc2l6ZS4gSSB3aWxsIHVwZGF0ZSBjb2RlIChSVEVfQUxJR05fRkxPT1Ig YnkgcGFnZSBzaXplKSBpbiBuZXh0IHZlcnNpb24uDQo+PiBJJ2QgbGlrZSB0byBkaXNjdXNzIG9u ZSBjYXNlIHdpdGggeW91LiBJbiB0aGUgY2FzZSwgYmFzZS0+c2l6ZSBpcyAxNjM4NCwgbXNpeF90 YWJsZS0+b2Zmc2V0IGlzIDgxOTIsIHBhZ2Vfc2l6ZSBpcyA2NTUzNi4gQWZ0ZXIgYWxpZ24gIm1z aXhfdGFibGUtPm9mZnNldCIgd2l0aCBwYWdlX3NpemUgKFJURV9BTElHTl9GTE9PUiksIHRoZSB2 YWx1ZSBvZiAidGFibGVfc3RhcnQiIGlzIDAsIG1tYXAoKSB3aWxsIHJlcG9ydCBlcnJvciwgYW5k IHRoZSBtZW1vcnkgbWFwcGluZyBpcyBmYWlsZWQuDQo+PiBGb3IgdGhlIGNhc2UgKHRhYmxlX3N0 YXJ0IGlzIDAgYWZ0ZXIgdGhlIGFnbGlubWVudCksIG1heSBJIGNvbnRpbnVlIGZhbGxpbmcgYmFj ayB0aGUgInRhYmxlX3N0YXJ0IiB0byAiIG1zaXhfdGFibGUtPm9mZnNldCIgKG5vdCBhbGlnbmVk IHdpdGggcGFnZSBzaXplKSwgYW5kIGxlZnQgc3lzdGVtIGFkanVzdCB0aGUgbGVuZ3RoIGF1dG9t YXRpY2FsbHk/IFRoYW5rcyENCj4gDQo+IFBsZWFzZSBjb3JyZWN0IG1lIGlmIGknbSB3cm9uZywg YnV0IHRoaXMgaXMgYSBjb2RlIHBhdGggZm9yIHdoZW4gd2UncmUgdHJ5aW5nIHRvIG1tYXAgYXJv dW5kIHRoZSBNU0ktWCBCQVIuIEtlcm5lbCB3aWxsIG5vdCBhbGxvdyB1cyB0byBkbyB0aGF0LCBw ZXJpb2QsIHNvIHdoYXRldmVyIHN0YXJ0L2VuZCBhZGRyZXNzZXMgeW91IGdldCwgdGhleSAqbXVz dCBub3QqIGluY2x1ZGUgYSBzaW5nbGUgYnl0ZSBvZiBNU0ktWCBCQVIuIFNvLCBpbiBjYXNlIGxp a2UgeW91IGRlc2NyaWJlZCwgaSB0aGluayB3ZSBzaG91bGQganVzdCBzdHJhaWdodCB1cCByZWZ1 c2UgdGhlIG1hcCB0aGUgZW50aXJlIEJBUi4NCj4gDQo+IEhvd2V2ZXIsIGFzIGkgZG8gbm90IGhh dmUgYSBzeXN0ZW0gd2l0aCBzdWNoIHByb3BlcnRpZXMgdG8gdGVzdCBvbiwgc28gDQo+IHBsZWFz ZSBjb3JyZWN0IG1lIGlmIGknbSB3cm9uZyBoZXJlIDopDQo+IA0KPiANCj4gVG9uZTogSSB1bmRl cnN0YW5kIGFuZCBhZ3JlZSB3aXRoIHlvdS4gIPCfmIoNCj4gDQo+IFBsZWFzZSBoYXZlIGEgbG9v ayBhdCBteSB0ZXN0IGNhc2UuIEluIG15IGNhc2UsIEkgdHJpZWQgdG8gYmluZCBOVk1lIGRldmlj ZSB3aXRoIFZGSU8gZHJpdmVyIGFuZCB0aGUga2VybmVsIHBhZ2Ugc2l6ZSBpcyA2NEtCLiBXaXRo b3V0IHRoZSBjaGFuZ2UsIHRoZSB0ZXN0IGlzIGZhaWxlZC4NCj4gDQo+ICBGcm9tIHRoZSBkZWJ1 ZyBpbmZvcm1hdGlvbiwgSSBvYnNlcnZlZCB0aGF0ICJiYXItPnNpemUiIGlzIDE2Mzg0LCAibXNp eF90YWJsZS0+b2Zmc2V0IiBpcyA4MTkyIGFuZCAibXNpeF90YWJsZS0+c2l6ZSIgaXMgNTEyLiBS ZWdhcmRpbmcgdGhlIHBhZ2Ugc2l6ZSBpcyBtdWNoIGJpZ2dlciB0aGFuIHRoZSAiYmFyLT5zaXpl IiwgaW4gdGhlIGNoYW5nZSwgdGhlIGNvZGUgbWFwcyB0aGUgZmlyc3QgODE5MiBieXRlcyBhaGVh ZCBvZiBNU0ktWCB0YWJsZS4gQWZ0ZXIgYWxpZ24gd2l0aCB0aGUgcGFnZSBzaXplIGJvdW5kYXJ5 LCB0aGUgInN0YXJ0IiBvZmZzZXQgYWZ0ZXIgdGhlIE1TSS1YIHRhYmxlIGlzIG92ZXIgImJhci0+ c2l6ZSIsIG1tYXAoKSByZXBvcnRzIGVycm9yLiBJbiB0aGlzIGNhc2UsIEkgY2FuIG9ubHkgbWFw IHRoZSBtZW1vcnkgYmVmb3JlIHRoZSBNU0ktWCB0YWJsZS4gQWZ0ZXIgZmFsbCBiYWNrICJ0YWJs ZV9zdGFydCIgdG8gIiBtc2l4X3RhYmxlLT5vZmZzZXQgIiAoaS5lLiA4MTkyIGJ5dGVzKSwgYW5k IE5PVCBtYXBwaW5nIHRoZSBtZW1vcnkgYmVoaW5kIE1TSS1YIHRhYmxlLCB0aGUgTlZNZSBkZXZp Y2UgY2FuIGJlIGJvdW5kIHRvIFZGSU8gZHJpdmVyLCBhbmQgdGhlIHRlc3QgaXMgcGFzc2VkLiBU aGUga2VybmVsIHZlcnNpb24gaW4gbXkgdGVzdCBlbnZpcm9ubWVudCBpcyA0LjE2Lg0KPiANCj4g U28gaW4gdGhlIGNoYW5nZSwgSSBkbyBub3QgbWFwIGFueSBieXRlIG9mIE1TSS1YIHRhYmxlLCB1 bmZvcnR1bmF0ZWx5IA0KPiBJIGNhbm5vdCBhbGlnbiB0aGUgbWVtb3J5ICJzaXplIiBpbiBtbWFw KCkgdG8gcGFnZSBzaXplIGJvdW5kYXJ5LiBGcm9tIA0KPiB0aGUgdGVzdCByZXN1bHQsIHRoZSBj aGFuZ2UgZml4ZXMgdGhlIGVycm9yLiBUaGUgY2FzZSBsb29rcyBhIGxpdHRsZSANCj4gdHJpY2t5 LiBJZiB3ZSByZWZ1c2UgdGhlIG1lbW9yeSBtYXAgaGVyZSwgaXQgbWVhbnMgd2UgY2Fubm90IGJp bmQgVkZJTyANCj4gZHJpdmVyIHdpdGggc29tZSBQQ0kgZGV2aWNlcyB3aXRoIDY0S0Iga2VybmVs IHBhZ2Ugc2l6ZS4gSSBob3BlIHdlIGNhbiANCj4gc3VwcG9ydCBzdWNoIGNhc2UgaW4gRFBESy4g 8J+Yig0KDQpIaSBUb25lLA0KDQpJZiBpdCB3b3JrcyBhbmQgZG9lc24ndCBpbXBhY3QgYW55IG90 aGVyIGNhc2VzLCBpJ20gaGFwcHkgdG8gaW5jbHVkZSB0aGUgYWJvdmUgY2hhbmdlIChpLmUuIGZh bGwgYmFjayB0byB1bmFsaWduZWQgb2Zmc2V0IGlmIGFsaWduaW5nIGl0IHJlc3VsdHMgaW4gemVy byBvZmZzZXQpLiBJJ20gY3VyaW91cyB3aGF0IHdvdWxkIGhhcHBlbiBpZiB0aGVyZSdzIHNvbWV0 aGluZyBlbHNlIGFmdGVyIHRoZSBNU0ktWCB0YWJsZSBhcyB3ZWxsLCBhbmQgd2hhdCBhbGlnbm1l bnRzIHdvdWxkIGJlIHJlcXVpcmVkIGZvciB0aGF0Li4uIEJ1dCBpIHdvdWxkIHJhdGhlciB3YWl0 IGZvciBzb21lb25lIHRvIGNvbWUgdG8gdXMgd2l0aCBhbiBhY3R1YWwgdGVzdCBjYXNlIGZvciB0 aGF0IGFzIHdlbGwgOikNCg0KPiANCj4+DQo+PiAtLQ0KPj4gVGhhbmtzLA0KPj4gQW5hdG9seQ0K Pj4NCj4gDQo+IA0KPiAtLQ0KPiBUaGFua3MsDQo+IEFuYXRvbHkNCj4gDQoNCg0KLS0NClRoYW5r cywNCkFuYXRvbHkNCg==