From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2AE4DA0544; Mon, 6 Jun 2022 15:16:37 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C58EF4021E; Mon, 6 Jun 2022 15:16:36 +0200 (CEST) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2055.outbound.protection.outlook.com [40.107.92.55]) by mails.dpdk.org (Postfix) with ESMTP id 2105140150 for ; Mon, 6 Jun 2022 15:16:35 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nhCgtJ75qtDkibbc5NnprAOVWuu3fHLI3atYP2adYw07Nis34s7FJrX3++KOdLpoTjfYFSocF0UmU7AMZv0qK7RQ27iliAZYHM6aD2IRC9L3JQpidHh9gA0Atg9v1C7nNQAiq5hKMNTZdPUJR1kUvjX2UJcUrMFuWGx2Fr/2eqMqM3TJwnRkWDDbNYBHFDlc4CrjzdxA3qt5Mlmi6Z5tAHgW6c1GcPJQGWziPMe+jXDRjhC7kLczmhe8vysfJoxtWaHR+TQ0+c87Iae7QIcGM4DUruHGxd2SqzUQSFd2VUkCq640R1BYhaLr8la2dS7rZv4fmR6fleIXya3703OByg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=z1f+fXXeVEE8EG0FML8Y8q4WbXkgzgl46d8ottxBEso=; b=DY2UyIeXOMykQLuMcrLS1dJCzX6r83UX5kEnpNQdG8THEhQjQvirS5D0WgupVCtGSeDQz/vSecTO/wcHH/IYPvtcU73CkLTyCsJL1dx7+0inBxjF2UZlHbObkVWbgj0a2oWDtqiRi6onUHt9UnrO5kFsRNH6NgNAaFK19Rv/L4l7GEhTQ4083JWNUlstBAxs877ngD3LF9HVKJGa0lauTcuosMcEbcHe1ukig1bCFXFt0jkDOIXLHlPUPmSEFYtq2309YdllqPQvGKv8i4dei2rZebUd9qGG+bQAM+rHa7e6wcN5mv6gY0OpZw3LcZVskETyP63lSn6CUKwwHgCC/A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=z1f+fXXeVEE8EG0FML8Y8q4WbXkgzgl46d8ottxBEso=; b=kZ0sNqxzKPjhdLBwBNjSzuzK5PA8BmYHQOdKR58bb70KcWGFUZzY+hTp+ONQiXgYaKdRrPd8R7sdcv3SxNyu5ckFqxLpArlRegn0UpAF5Cqw0BZIE8qc4EgVxn85RmqhmA8WxD+4ubZ6Kxi4HJpLffst4RLB+WJxlfettBUylqHBLFFIB9fsLoDIcksqJ+rO4ZPQdOsEODyagZ9EV+2xwlEHg/WBFDcdi5amTG/GuMqG+oKHSiKbdC77mi3Lwk0cCM2zAgamHmMoo2rk1XRzAuc5RL/GVJZZAybhFmmr1QTZ6J0kLjYMk4FhcjL5jnbMNE09MmieKWmaGyCtZeeVFw== Received: from MN2PR12MB3647.namprd12.prod.outlook.com (2603:10b6:208:c4::17) by MW3PR12MB4425.namprd12.prod.outlook.com (2603:10b6:303:5e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.13; Mon, 6 Jun 2022 13:16:32 +0000 Received: from MN2PR12MB3647.namprd12.prod.outlook.com ([fe80::d4b6:b1d7:8090:98b9]) by MN2PR12MB3647.namprd12.prod.outlook.com ([fe80::d4b6:b1d7:8090:98b9%6]) with mapi id 15.20.5314.019; Mon, 6 Jun 2022 13:16:32 +0000 From: Spike Du To: Andrew Rybchenko , Matan Azrad , Slava Ovsiienko , Ori Kam , "NBU-Contact-Thomas Monjalon (EXTERNAL)" , Wenzhuo Lu , Beilei Xing , Bernard Iremonger , Ray Kinsella , Neil Horman CC: "stephen@networkplumber.org" , "mb@smartsharesystems.com" , "dev@dpdk.org" , Raslan Darawsheh Subject: RE: [PATCH v4 3/7] ethdev: introduce Rx queue based fill threshold Thread-Topic: [PATCH v4 3/7] ethdev: introduce Rx queue based fill threshold Thread-Index: AQHYeBEZfKBXGrFdxEO2hMF98LvoIq1CToVw Date: Mon, 6 Jun 2022 13:16:32 +0000 Message-ID: References: <20220524152041.737154-1-spiked@nvidia.com> <20220603124821.1148119-1-spiked@nvidia.com> <20220603124821.1148119-4-spiked@nvidia.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 29da10ae-56d7-4738-442c-08da47bec663 x-ms-traffictypediagnostic: MW3PR12MB4425:EE_ x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ZIK/4jwra6SURnOX4BASd4aQUfZVZUiVTV0ZL5Ye5W0eRMk43tIZ+lilWkPJ6gM0WNGoA2JCu/RPVPjBLTDYbptFk9Wr04pTve/vShpWPtOcq2rWYxLCWe1hyT4H7VF+YXHW57gFExc9asZRJpDALkNEUZ951rA6Nw15BS/KA57HmWyQAlIERMV61N94PQj/2E/XomCIxfAnaTftVCPFZ6EfAJmowhw9Ro18mH6GSWQ7oJZI6acJdiTDy5GLWlQuWZv/NpKGO69SshdVZ/Shs6hpou+b4dzMYF1LwA8ASRFXY05Ekou/cP3BytNBHDiwWmT2Lyfb0I2eec9+9A+fvBWyxnhTKjGsy+eU3Yr+5lMV6+UHs0QxKpjMiFVa9YjIrkHCvvVOMsXvabLR0D5GXfXjD4Yq+C+pXrT/RaANHjHV2rYQYp9Fe5tAeMGlfZ9sbOLoK/H5rZ4RBA/yKCNUTB1U6OFVSl5p2NzJjZt3Aw5iyQiDVcDgPO35R0e6m8xfQ8J4xppP7SvPBeM5KssGJlK/OuWV6zPjH3IEmyRQPArT4J8u7qgF+6NQ1563Ea0cizawmdm9H/bD8quoOV0MNlW8jEMnhB9i2Bt5wEf5Gt7pVKe+RaaMAhAzz1kKnzgAteTp/T00zslSq2Ka1OjTM1OiikWOkRaqXP8WJ6bZIxdepCzY/By4/lo/Wgw4VyP88x1vQx7ZZIggPVRGTsA3TRFt91wH7Lq3nSw+ThWjnTs= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR12MB3647.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(186003)(83380400001)(66946007)(107886003)(38100700002)(8936002)(508600001)(52536014)(5660300002)(316002)(33656002)(71200400001)(86362001)(122000001)(110136005)(6506007)(53546011)(9686003)(26005)(921005)(66446008)(64756008)(7696005)(38070700005)(55016003)(30864003)(76116006)(2906002)(7416002)(54906003)(8676002)(4326008)(66556008)(66476007)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZGZpWVNtNFluaEdqZFd4ZkJRVzFkK2YxeldOcGI2WUp6M1dsQkhMSlNPM3dO?= =?utf-8?B?OU9ya2tXTkN3NXZaeWY4THZhZWZXWGw0OSt5QklESm1jV0lLWmtuWGozYk8v?= =?utf-8?B?UGZ0aEhIM01xVHpXTFE5K0hML2RnZ2JPSlBYSDJEZ3lNaUN3VElQVUhQNTBH?= =?utf-8?B?czJvZS9YdGx5dGRIVnA0eElkUDkwODdhY0d4bEhMU2x4Rlc0Y2NndmpPM3h1?= =?utf-8?B?Q0w5dXFJRzAzVFVybkVMWE1QRlBGci9WajN5a3p5dzZXbnljbHZWenFwRFUy?= =?utf-8?B?TkxrOHVzRXllM1BtZkJoMlQ2K0JZbnNzSU5FdG8rZDQ4M0h2eEJjazQ5WmZJ?= =?utf-8?B?bHQ1Qy9aaHpBbU9qMGI5dHk5RDVzclloV0pZeUsyL0VtYllCdy9JQitjRWJz?= =?utf-8?B?MjBOdGJPK1FrUXJVSFNPcVdVS09MUEQveUNvQ1pEVEhtZHl0VmovaWl6d05v?= =?utf-8?B?K2hCbXR2MDc1eTNkUDJmNTZaR0lWNjJHaWdJS1FvWUFPNHN3T1VrdExxTllL?= =?utf-8?B?WHU5Q0FCNDJqb2NNL24zdE9COURzeHlMNTg4RXR5cWN0RUlMUHAycHhhVFJG?= =?utf-8?B?eUVhNzdCYnIxTDJ1bTYwb1NXcDFvL0VORVIzUmRwQUZZV290L2IwQ1dKVVhm?= =?utf-8?B?ZURoZURHVk1hNHVwb1Zjam85RHR4V2xYK0hkaEltWWZVOGJNczJjV0ZtYjA4?= =?utf-8?B?WGtlS3pSQlBVT2pMOEJkWnRHdUhyUDRkTWI4SHp1R3lla09vQkxPSjdDVGJ2?= =?utf-8?B?ekZxV2ZZMjh5eDV5WjNCS3F3bUNBaVFZcVROU25tYjJwSEtxOHBJS0F5YVZM?= =?utf-8?B?YWQ0c2VnWXBBcGduMCtsVEprVzBpeHp5Z3U4R3RDQTFiYXZJQVdmdVBiR3Jr?= =?utf-8?B?UVlnZVB1TTJ2U0NIQnFnZ3dMNFRNemlveEZhV3FMSUFsRjBqMldhQ2dLdVFI?= =?utf-8?B?ajZrOGkzMHR5RTNzeXRGZXFmSXhGbUpkc0pKV21TQ3cwQnFwemJxT3puaUU0?= =?utf-8?B?T1hhTjU5YS9idlNZOFZaNGlybjdOQkk2bWRWSzFkdW5DL21XZGVNMko4YjFR?= =?utf-8?B?Qk5nbzB1Z0Mrc2tuOGlPSTBCQ1lRZUdPT2FQTDVPVUFHRWwwS1pTbDZ6ZkVp?= =?utf-8?B?cUJzQ0x0andoTU9GamZDdGJ5OUMveVYwYUVlRHBrN28xMkN3ajJHR0RTbkZn?= =?utf-8?B?T2ovMzJEV2Z4c09mVmRyZmZ2WHJLdUYyUjdOVlFGU1Brd0h3VlJ2eVk2NlNo?= =?utf-8?B?eG1TeFp2N2cvMGlQTjROUk84Z0ZBUkpnL0FwLzA2YW5IaXlwYThrQnJjeWlG?= =?utf-8?B?QUVTcW5xNi9NOXRBWUxITWRiejNWS1U0cWNFTjlJNEkrNTgwSzBuWklPRDFK?= =?utf-8?B?UDdoTnFPaWhoWERqQzdYMkNNejR6b3dLY3VzTS9yRlNZRUlPaE9iWll6QUZD?= =?utf-8?B?T2llS1BSYnJMd2tKUzNkQjRFWGxuTFYxbSs4L3FUbjliLy9MdU9ZZXF1NE02?= =?utf-8?B?Y0JRVDZXUVh2NS9kYngxRXp6QTFqcUN6Sjczc1JOZ0FnQnFlU3NSelllYlpr?= =?utf-8?B?bCtpQytvZms1YnhFNk14QTQ3anZka0NLYWo5NWJzcmRudmFPL3gxZGVqRndB?= =?utf-8?B?TE10KytRUHNjQk1XOWVYc3RJTGJDMWRRd1FOU0JLcWx5L2VES0llUzFERWFt?= =?utf-8?B?MTFZUDFzK2hsTk5ZQXJ5cXNaVkZCNTJuTkVYRnNwU2R6RUhyUEw4eHM0d0dY?= =?utf-8?B?NTZlLzlpay9KZFg5TnlsY0dGc01XWk9pN2o5UHRnc20zQWlhb1FEbk1Ta3Ni?= =?utf-8?B?VHZmbm1hRFh5L0dqVmhzMk0vSXRkaDZsaDZVdHdaZG1sRW5Vay96dk5EdHlK?= =?utf-8?B?ZUVtTFVKbk9qRFJDQ2IrejBmYVpkUEJiVEJXQnRpMGlZeWl5ZU1hM21LbklJ?= =?utf-8?B?aWhzbHZuLzZzd2dyNHR2MHQyejlmRE1aeVJ4TkVYT0pvT0tnK3lWUFFFOFF3?= =?utf-8?B?RGZhYy9lYmVSMmlZMmNZNVkvSFJuNk1JNlFSVm1WU25BMUd1b083dytTOEUw?= =?utf-8?B?WU01Ni9HQy9qMmtrbUJsZk1XeW5ZR2RlR2tPWFZlZ3lFUHFKcVZGR3ZFQzkv?= =?utf-8?B?UGU2K2g5RFZieGFUaENKV09heGpaQUZISlY0ZmNzTVdCZVBPRWFYRmNMaE1C?= =?utf-8?B?WFZqTENLTkRXL2swY2doN1VVZ2pad0pDSTZTM1dsUk9aV2VmSm5HQWZwbXZT?= =?utf-8?B?ajV4N1JJL2FEcDdiUjQvTmRMbysvbWM5NXBFNitTYzMwUkV2WUFQQU96K2FF?= =?utf-8?Q?ikUq33AJXqXnY4ychg?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3647.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 29da10ae-56d7-4738-442c-08da47bec663 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jun 2022 13:16:32.3786 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: okwOx1zQiM9DwTv83rw/hkXHxKIR/f8Al0Av1wsnYPHfag+Tl1nx2lSpBsnbgK/OjtAXelzGqm3Npd1kw6eDJg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR12MB4425 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org SGkgQW5kcmV3LA0KCVBsZWFzZSBzZWUgYmVsb3cgZm9yICJmaWxsIHRocmVzaG9sZCIgY29uY2Vw dCwgSSdtIG9rIHdpdGggb3RoZXIgY29tbWVudHMgYWJvdXQgY29kZS4NCg0KUmVnYXJkcywNClNw aWtlLg0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQW5kcmV3IFJ5 YmNoZW5rbyA8YW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU+DQo+IFNlbnQ6IFNhdHVyZGF5 LCBKdW5lIDQsIDIwMjIgODo0NiBQTQ0KPiBUbzogU3Bpa2UgRHUgPHNwaWtlZEBudmlkaWEuY29t PjsgTWF0YW4gQXpyYWQgPG1hdGFuQG52aWRpYS5jb20+Ow0KPiBTbGF2YSBPdnNpaWVua28gPHZp YWNoZXNsYXZvQG52aWRpYS5jb20+OyBPcmkgS2FtIDxvcmlrYUBudmlkaWEuY29tPjsNCj4gTkJV LUNvbnRhY3QtVGhvbWFzIE1vbmphbG9uIChFWFRFUk5BTCkgPHRob21hc0Btb25qYWxvbi5uZXQ+ Ow0KPiBXZW56aHVvIEx1IDx3ZW56aHVvLmx1QGludGVsLmNvbT47IEJlaWxlaSBYaW5nIDxiZWls ZWkueGluZ0BpbnRlbC5jb20+Ow0KPiBCZXJuYXJkIElyZW1vbmdlciA8YmVybmFyZC5pcmVtb25n ZXJAaW50ZWwuY29tPjsgUmF5IEtpbnNlbGxhDQo+IDxtZHJAYXNocm9lLmV1PjsgTmVpbCBIb3Jt YW4gPG5ob3JtYW5AdHV4ZHJpdmVyLmNvbT4NCj4gQ2M6IHN0ZXBoZW5AbmV0d29ya3BsdW1iZXIu b3JnOyBtYkBzbWFydHNoYXJlc3lzdGVtcy5jb207DQo+IGRldkBkcGRrLm9yZzsgUmFzbGFuIERh cmF3c2hlaCA8cmFzbGFuZEBudmlkaWEuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHY0IDMv N10gZXRoZGV2OiBpbnRyb2R1Y2UgUnggcXVldWUgYmFzZWQgZmlsbCB0aHJlc2hvbGQNCj4gDQo+ IEV4dGVybmFsIGVtYWlsOiBVc2UgY2F1dGlvbiBvcGVuaW5nIGxpbmtzIG9yIGF0dGFjaG1lbnRz DQo+IA0KPiANCj4gT24gNi8zLzIyIDE1OjQ4LCBTcGlrZSBEdSB3cm90ZToNCj4gPiBGaWxsIHRo cmVzaG9sZCBkZXNjcmliZXMgdGhlIGZ1bGxuZXNzIG9mIGEgUnggcXVldWUuIElmIHRoZSBSeCBx dWV1ZQ0KPiA+IGZ1bGxuZXNzIGlzIGFib3ZlIHRoZSB0aHJlc2hvbGQsIHRoZSBkZXZpY2Ugd2ls bCB0cmlnZ2VyIHRoZSBldmVudA0KPiA+IFJURV9FVEhfRVZFTlRfUlhfRklMTF9USFJFU0guDQo+ IA0KPiBTb3JyeSwgSSdtIG5vdCBzdXJlIHRoYXQgSSB1bmRlcnN0YW5kLiBBcyBmYXIgYXMgSSBr bm93IHRoZSBwcm9jZXNzIHRvIGFkZA0KPiBtb3JlIFJ4IGJ1ZmZlcnMgdG8gUnggcXVldWUgaXMg Y2FsbGVkICdyZWZpbGwnIGluIG1hbnkgZHJpdmVycy4gU28gZmlsbCBsZXZlbCBpcyBhDQo+IG51 bWJlciAob3IgcGVyY2VudGFnZSkgb2YgZnJlZSBidWZmZXJzIGluIGFuIFJ4IHF1ZXVlLg0KPiBJ ZiBzbywgZmlsbCB0aHJlYXNob2xkIHNob3VsZCBiZSBhIG1pbmltdW0gZmlsbCBsZXZlbCBhbmQg YmVsb3cgdGhlIGxldmVsIHdlDQo+IHNob3VsZCBnZW5lcmF0ZSBhbiBldmVudC4NCj4gDQo+IEhv d2V2ZXIgcmVhZGluZyB0aGUgZmlyc3QgcGFyYWdyYXBoIG9mIHRoZSBkZXNjcml0aW9uIGl0IGxv b2tzIGxpa2UgeW91IG1lYW4NCj4gb3Bvc2l0ZSB0aGluZyAtIGEgbnVtYmVyIChvciBwZXJjZW50 YWdlKSBvZiByZWFkeSBSeCBidWZmZXJzIHdpdGggcmVjZWl2ZWQNCj4gcGFja2V0cy4NCj4gDQo+ IEkgdGhpbmsgdGhhdCB0aGUgdGVybSAiZmlsbCB0aHJlc2hvbGQiIGlzIHN1Z2dlc3RlZCBieSBt ZSwgYnV0IEkgZGlkIGl0IHdpdGggbWluZQ0KPiB1bmRlcnN0YW5kaW5nIG9mIHRoZSBhZGRlZCBm ZWF0dXJlLiBOb3cgSSdtIGNvbmZ1c2VkLg0KPiANCj4gTW9yZW92ZXIsIEkgZG9uJ3QgdW5kZXJz dGFuZCBob3cgImZpbGwgdGhyZXNob2xkIiBjb3VsZCBiZSBpbiB0ZXJtcyBvZiByZWFkeQ0KPiBS eCBidWZmZXJzLiBIVyBzaW1wbHkgZG9uJ3QgcmVhbGx5IGtub3cgd2hlbiByZWFkeSBSeCBidWZm ZXJzIGFyZQ0KPiBwcm9jZXNzZWQgYnkgU1cuIFNvLCBIVyBjYW4ndCBzYXkgZm9yIHN1cmUgaG93 IG1hbnkgcmVhZHkgUnggYnVmZmVycyBhcmUNCj4gcGVuZGluZy4gSXQgY291bGQgYmUgY2FsY3Vs YXRlZCBhcyBSeCBxdWV1ZSBzaXplIG1pbnVzIG51bWJlciBvZiBmcmVlIFJ4DQo+IGJ1ZmZlcnMs IGJ1dCBpdCBpcyBpbXByZWNpc2UuIEZpcnN0IG9mIGFsbCBub3QgYWxsIFJ4IGRlc2NyaXB0b3Jz IGNvdWxkIGJlIHVzZWQuDQo+IFNlY29uZCwgSFcgcmluZyBzaXplIGNvdWxkIGRpZmZlciBxdWV1 ZSBzaXplIHNwZWNpZmllZCBpbiBTVy4NCj4gUXVldWUgc2l6ZSBzcGVjaWZpZWQgaW4gU1cgY291 bGQganVzdCBsaW1pdCBtYXhpbXVtIG51Ym1lciBvZiBmcmVlIFJ4DQo+IGJ1ZmZlcnMgcHJvdmlk ZWQgYnkgdGhlIGRyaXZlci4NCj4gDQoNCkxldCBtZSB1c2Ugb3RoZXIgdGVybXMgYmVjYXVzZSAi ZmlsbCIvInJlZmlsbCIgaXMgYWxzbyBhbWJpZ3VvdXMgdG8gbWUuDQpJbiBhIFJYIHJpbmcsIHRo ZXJlIGFyZSBSeCBidWZmZXJzIHdpdGggcmVjZWl2ZWQgcGFja2V0cywgeW91IGNhbGwgaXQgInJl YWR5IFJ4IGJ1ZmZlcnMiLCB0aGVyZSBpcyBhIFJURSBhcGkgcnRlX2V0aF9yeF9xdWV1ZV9jb3Vu dCgpIHRvIGdldCB0aGUgbnVtYmVyLA0KSXQncyBhbHNvIGNhbGxlZCAidXNlZCBkZXNjcmlwdG9y cyIgaW4gdGhlIGNvZGUuDQpBbHNvIHRoZXJlIGFyZSBSeCBidWZmZXJzIHByb3ZpZGVkIGJ5IFNX IHRvIGFsbG93IEhXICJmaWxsIGluIiByZWNlaXZlZCBwYWNrZXRzLCB3ZSBjYW4gY2FsbCBpdCAi dXNhYmxlIFJ4IGJ1ZmZlcnMiIChoZXJlICJ1c2FibGUiIG1lYW5zIHVzYWJsZSBmb3IgSFcpLg0K TGV0J3MgZGVmaW5lIFJ4IHF1ZXVlICJmdWxsbmVzcyI6DQoJRnVsbG5lc3MgPSByZWFkeS1SeC1i dWZmZXJzL1J4cS1zaXplDQpPbiB0aGUgb3Bwb3NpdGUsIHdlIGhhdmUgImVtcHRpbmVzcyINCglF bXB0aW5lc3MgPSB1c2FibGUtUngtYnVmZmVycy9SeHEtc2l6ZQ0KSGVyZSAiZmlsbCB0aHJlc2hv bGQiIGRlc2NyaWJlcyAiZnVsbG5lc3MiLCBpdCdzIG5vdCAicmVmaWxsIiBkZXNjcmliZWQgaW4g eW91IGFib3ZlIHdvcmRzLiBCZWNhdXNlIGluIHlvdXIgd29yZHMsICJyZWZpbGwiIGlzIHRoZSBv cHBvc2l0ZSwgaXQncyBmaWxsaW5nICJ1c2FibGUvZnJlZSBSeCBidWZmZXJzIiwgb3IgImVtcHRp bmVzcyIuDQoNCkkgY2FuIG9ubHkgYnJpZWZseSBleHBsYWluIGhvdyBtbHg1IHdvcmtzIHRvIGdl dCBMV00sIGJlY2F1c2UgSSdtIG5vdCBhIEZpcm13YXJlIGd1eS4NCk1seDUgUnggcXVldWUgaXMg YmFzaWNhbGx5IFJETUEgcXVldWUuIEl0IGhhcyB0d28gaW5kZXhlczogcHJvZHVjZXIgaW5kZXgg d2hpY2ggaW5jcmVhc2VzIHdoZW4gSFcgZmlsbHMgaW4gcGFja2V0LCBjb25zdW1lciBpbmRleCB3 aGljaCBpbmNyZWFzZXMgd2hlbiBTVyBjb25zdW1lcyB0aGUgcGFja2V0Lg0KVGhlIHF1ZXVlIHNp emUgaXMga25vd24gd2hlbiBpdCdzIGNyZWF0ZWQuIFRoZSBmdWxsbmVzcyBpcyBzb21ldGhpbmcg bGlrZSAocHJvZHVjZXJfaW5kZXggLSBjb25zdW1lcl9pbmRleCkgKEkgZG9uJ3QgY29uc2lkZXIg aW4gd3JhcC1hcm91bmQgaGVyZSkuDQpTbyBtbHg1IGhhcyB0aGUgd2F5IHRvIGdldCB0aGUgZnVs bG5lc3Mgb3IgZW1wdGluZXNzIGluIEhXIG9yIEZXLiANCkFub3RoZXIgZGV0YWlsIGlzIG1seDUg dXNlcyB0aGUgdGVybSAiTFdNIihsaW1pdCB3YXRlcm1hcmspLCB3aGljaCBkZXNjcmliZXMgImVt cHRpbmVzcyIuIFdoZW4gdXNhYmxlLVJ4LWJ1ZmZlcnMgaXMgYmVsb3cgTFdNLCB3ZSB0cmlnZ2Vy IGFuIGV2ZW50Lg0KQnV0IFRob21hcyB0aGluayAiZnVsbG5lc3MiIGlzIGVhc2llciB0byB1bmRl cnN0YW5kLCBzbyB3ZSB1c2UgImZ1bGxuZXNzIiBpbiBydGUgQVBJcyBhbmQgd2UnbGwgdHJhbnNs YXRlIGl0IHRvIExXTSBpbiBtbHg1IFBNRC4NCg0KDQo+ID4gRmlsbCB0aHJlc2hvbGQgaXMgZGVm aW5lZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgUnggcXVldWUgc2l6ZSB3aXRoIHZhbGlkDQo+ID4gdmFs dWUgb2YgWzAsOTldLg0KPiA+IFNldHRpbmcgZmlsbCB0aHJlc2hvbGQgdG8gMCBtZWFucyBkaXNh YmxlIGl0LCB3aGljaCBpcyB0aGUgZGVmYXVsdC4NCj4gPiBBZGQgZmlsbCB0aHJlc2hvbGQgY29u ZmlndXJhdGlvbiBhbmQgcXVlcnkgZHJpdmVyIGNhbGxiYWNrcyBpbiBldGhfZGV2X29wcy4NCj4g PiBBZGQgY29tbWFuZCBsaW5lIG9wdGlvbnMgdG8gc3VwcG9ydCBmaWxsX3RocmVzaCBwZXItcnhx IGNvbmZpZ3VyZS4NCj4gPiAtIENvbW1hbmQgc3ludGF4Og0KPiA+ICAgIHNldCBwb3J0IDxwb3J0 X2lkPiByeHEgPHJ4cV9pZD4gZmlsbF90aHJlc2ggPGZpbGxfdGhyZXNoX251bT4NCj4gPg0KPiA+ IC0gRXhhbXBsZSBjb21tYW5kczoNCj4gPiBUbyBjb25maWd1cmUgZmlsbF90aHJlc2ggYXMgMzAl IG9mIHJ4cSBzaXplIG9uIHBvcnQgMSByeHEgMDoNCj4gPiB0ZXN0cG1kPiBzZXQgcG9ydCAxIHJ4 cSAwIGZpbGxfdGhyZXNoIDMwDQo+ID4NCj4gPiBUbyBkaXNhYmxlIGZpbGxfdGhyZXNoIG9uIHBv cnQgMSByeHEgMDoNCj4gPiB0ZXN0cG1kPiBzZXQgcG9ydCAxIHJ4cSAwIGZpbGxfdGhyZXNoIDAN Cj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFNwaWtlIER1IDxzcGlrZWRAbnZpZGlhLmNvbT4NCj4g PiAtLS0NCj4gPiAgIGFwcC90ZXN0LXBtZC9jbWRsaW5lLmMgICAgIHwgNjgNCj4gKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICAgYXBwL3Rlc3QtcG1kL2Nv bmZpZy5jICAgICAgfCAyMSArKysrKysrKysrKysrKw0KPiA+ICAgYXBwL3Rlc3QtcG1kL3Rlc3Rw bWQuYyAgICAgfCAxOCArKysrKysrKysrKysNCj4gPiAgIGFwcC90ZXN0LXBtZC90ZXN0cG1kLmgg ICAgIHwgIDIgKysNCj4gPiAgIGxpYi9ldGhkZXYvZXRoZGV2X2RyaXZlci5oIHwgMjIgKysrKysr KysrKysrKysNCj4gPiAgIGxpYi9ldGhkZXYvcnRlX2V0aGRldi5jICAgIHwgNTIgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gICBsaWIvZXRoZGV2L3J0ZV9ldGhkZXYuaCAg ICB8IDcyDQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysN Cj4gPiAgIGxpYi9ldGhkZXYvdmVyc2lvbi5tYXAgICAgIHwgIDIgKysNCj4gPiAgIDggZmlsZXMg Y2hhbmdlZCwgMjU3IGluc2VydGlvbnMoKykNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9hcHAvdGVz dC1wbWQvY21kbGluZS5jIGIvYXBwL3Rlc3QtcG1kL2NtZGxpbmUuYyBpbmRleA0KPiA+IDA0MTBi YWQuLjkxODU4MWUgMTAwNjQ0DQo+ID4gLS0tIGEvYXBwL3Rlc3QtcG1kL2NtZGxpbmUuYw0KPiA+ ICsrKyBiL2FwcC90ZXN0LXBtZC9jbWRsaW5lLmMNCj4gPiBAQCAtMTc4MjMsNiArMTc4MjMsNzMg QEAgc3RydWN0DQo+IGNtZF9zaG93X3BvcnRfZmxvd190cmFuc2Zlcl9wcm94eV9yZXN1bHQgew0K PiA+ICAgICAgIH0NCj4gPiAgIH07DQo+ID4NCj4gPiArLyogKioqIFNFVCBGSUxMIFRIUkVTSE9M RCBGT1IgQSBSWFEgT0YgQSBQT1JUICoqKiAqLyBzdHJ1Y3QNCj4gPiArY21kX3J4cV9maWxsX3Ro cmVzaF9yZXN1bHQgew0KPiA+ICsgICAgIGNtZGxpbmVfZml4ZWRfc3RyaW5nX3Qgc2V0Ow0KPiA+ ICsgICAgIGNtZGxpbmVfZml4ZWRfc3RyaW5nX3QgcG9ydDsNCj4gPiArICAgICB1aW50MTZfdCBw b3J0X251bTsNCj4gPiArICAgICBjbWRsaW5lX2ZpeGVkX3N0cmluZ190IHJ4cTsNCj4gPiArICAg ICB1aW50MTZfdCByeHFfbnVtOw0KPiA+ICsgICAgIGNtZGxpbmVfZml4ZWRfc3RyaW5nX3QgZmls bF90aHJlc2g7DQo+ID4gKyAgICAgdWludDE2X3QgZmlsbF90aHJlc2hfbnVtOw0KPiANCj4gdWlu dDhfdCB0byBiZSBjb25zaXN0ZW50IHdpdGggZXRoZGV2DQo+IA0KPiA+ICt9Ow0KPiA+ICsNCj4g PiArc3RhdGljIHZvaWQgY21kX3J4cV9maWxsX3RocmVzaF9wYXJzZWQodm9pZCAqcGFyc2VkX3Jl c3VsdCwNCj4gPiArICAgICAgICAgICAgIF9fcnRlX3VudXNlZCBzdHJ1Y3QgY21kbGluZSAqY2ws DQo+ID4gKyAgICAgICAgICAgICBfX3J0ZV91bnVzZWQgdm9pZCAqZGF0YSkgew0KPiA+ICsgICAg IHN0cnVjdCBjbWRfcnhxX2ZpbGxfdGhyZXNoX3Jlc3VsdCAqcmVzID0gcGFyc2VkX3Jlc3VsdDsN Cj4gPiArICAgICBpbnQgcmV0ID0gMDsNCj4gPiArDQo+ID4gKyAgICAgaWYgKChzdHJjbXAocmVz LT5zZXQsICJzZXQiKSA9PSAwKSAmJiAoc3RyY21wKHJlcy0+cG9ydCwgInBvcnQiKSA9PSAwKQ0K PiA+ICsgICAgICAgICAmJiAoc3RyY21wKHJlcy0+cnhxLCAicnhxIikgPT0gMCkNCj4gPiArICAg ICAgICAgJiYgKHN0cmNtcChyZXMtPmZpbGxfdGhyZXNoLCAiZmlsbF90aHJlc2giKSA9PSAwKSkN Cj4gPiArICAgICAgICAgICAgIHJldCA9IHNldF9yeHFfZmlsbF90aHJlc2gocmVzLT5wb3J0X251 bSwgcmVzLT5yeHFfbnVtLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz LT5maWxsX3RocmVzaF9udW0pOw0KPiA+ICsgICAgIGlmIChyZXQgPCAwKQ0KPiA+ICsgICAgICAg ICAgICAgcHJpbnRmKCJyeHFfZmlsbF90aHJlc2hfY21kIGVycm9yOiAoJXMpXG4iLA0KPiA+ICsg c3RyZXJyb3IoLXJldCkpOw0KPiA+ICsNCj4gPiArfQ0KPiA+ICsNCj4gPiArY21kbGluZV9wYXJz ZV90b2tlbl9zdHJpbmdfdCBjbWRfcnhxX2ZpbGxfdGhyZXNoX3NldCA9DQo+ID4gKyAgICAgVE9L RU5fU1RSSU5HX0lOSVRJQUxJWkVSKHN0cnVjdCBjbWRfcnhxX2ZpbGxfdGhyZXNoX3Jlc3VsdCwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQsICJzZXQiKTsNCj4gPiArY21k bGluZV9wYXJzZV90b2tlbl9zdHJpbmdfdCBjbWRfcnhxX2ZpbGxfdGhyZXNoX3BvcnQgPQ0KPiA+ ICsgICAgIFRPS0VOX1NUUklOR19JTklUSUFMSVpFUihzdHJ1Y3QgY21kX3J4cV9maWxsX3RocmVz aF9yZXN1bHQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydCwgInBvcnQi KTsgY21kbGluZV9wYXJzZV90b2tlbl9udW1fdA0KPiA+ICtjbWRfcnhxX2ZpbGxfdGhyZXNoX3Bv cnRudW0gPQ0KPiA+ICsgICAgIFRPS0VOX05VTV9JTklUSUFMSVpFUihzdHJ1Y3QgY21kX3J4cV9m aWxsX3RocmVzaF9yZXN1bHQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9y dF9udW0sIFJURV9VSU5UMTYpOw0KPiA+ICtjbWRsaW5lX3BhcnNlX3Rva2VuX3N0cmluZ190IGNt ZF9yeHFfZmlsbF90aHJlc2hfcnhxID0NCj4gPiArICAgICBUT0tFTl9TVFJJTkdfSU5JVElBTEla RVIoc3RydWN0IGNtZF9yeHFfZmlsbF90aHJlc2hfcmVzdWx0LA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJ4cSwgInJ4cSIpOyBjbWRsaW5lX3BhcnNlX3Rva2VuX251bV90DQo+ ID4gK2NtZF9yeHFfZmlsbF90aHJlc2hfcnhxbnVtID0NCj4gPiArICAgICBUT0tFTl9OVU1fSU5J VElBTElaRVIoc3RydWN0IGNtZF9yeHFfZmlsbF90aHJlc2hfcmVzdWx0LA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJ4cV9udW0sIFJURV9VSU5UOCk7DQo+IA0KPiBSVEVfVUlO VDE2IHNpbmNlIGl0IGlzIGFuIFJ4IHF1ZXVlIElEDQo+IA0KPiA+ICtjbWRsaW5lX3BhcnNlX3Rv a2VuX3N0cmluZ190IGNtZF9yeHFfZmlsbF90aHJlc2hfZmlsbF90aHJlc2ggPQ0KPiA+ICsgICAg IFRPS0VOX1NUUklOR19JTklUSUFMSVpFUihzdHJ1Y3QgY21kX3J4cV9maWxsX3RocmVzaF9yZXN1 bHQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbF90aHJlc2gsICJmaWxs X3RocmVzaCIpOw0KPiA+ICtjbWRsaW5lX3BhcnNlX3Rva2VuX251bV90IGNtZF9yeHFfZmlsbF90 aHJlc2hfZmlsbF90aHJlc2hudW0gPQ0KPiA+ICsgICAgIFRPS0VOX05VTV9JTklUSUFMSVpFUihz dHJ1Y3QgY21kX3J4cV9maWxsX3RocmVzaF9yZXN1bHQsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZmlsbF90aHJlc2hfbnVtLCBSVEVfVUlOVDE2KTsNCj4gDQo+IFJURV9VSU5U MTYgLT4gUlRFX1VJTlQ4DQo+IA0KPiA+ICsNCj4gPiArY21kbGluZV9wYXJzZV9pbnN0X3QgY21k X3J4cV9maWxsX3RocmVzaCA9IHsNCj4gPiArICAgICAuZiA9IGNtZF9yeHFfZmlsbF90aHJlc2hf cGFyc2VkLA0KPiA+ICsgICAgIC5kYXRhID0gKHZvaWQgKikwLA0KPiA+ICsgICAgIC5oZWxwX3N0 ciA9ICJzZXQgcG9ydCA8cG9ydF9pZD4gcnhxIDxyeHFfaWQ+IGZpbGxfdGhyZXNoDQo+IDxmaWxs X3RocmVzaF9udW0+Ig0KPiA+ICsgICAgICAgICAgICAgIlNldCBmaWxsX3RocmVzaCBmb3Igcnhx IG9uIHBvcnRfaWQiLA0KPiA+ICsgICAgIC50b2tlbnMgPSB7DQo+ID4gKyAgICAgICAgICAgICAo dm9pZCAqKSZjbWRfcnhxX2ZpbGxfdGhyZXNoX3NldCwNCj4gPiArICAgICAgICAgICAgICh2b2lk ICopJmNtZF9yeHFfZmlsbF90aHJlc2hfcG9ydCwNCj4gPiArICAgICAgICAgICAgICh2b2lkICop JmNtZF9yeHFfZmlsbF90aHJlc2hfcG9ydG51bSwNCj4gPiArICAgICAgICAgICAgICh2b2lkICop JmNtZF9yeHFfZmlsbF90aHJlc2hfcnhxLA0KPiA+ICsgICAgICAgICAgICAgKHZvaWQgKikmY21k X3J4cV9maWxsX3RocmVzaF9yeHFudW0sDQo+ID4gKyAgICAgICAgICAgICAodm9pZCAqKSZjbWRf cnhxX2ZpbGxfdGhyZXNoX2ZpbGxfdGhyZXNoLA0KPiA+ICsgICAgICAgICAgICAgKHZvaWQgKikm Y21kX3J4cV9maWxsX3RocmVzaF9maWxsX3RocmVzaG51bSwNCj4gPiArICAgICAgICAgICAgIE5V TEwsDQo+ID4gKyAgICAgfSwNCj4gPiArfTsNCj4gDQo+IFBsZWFzZSwgYWRkICdzdGF0aWMnIGtl eXdvcmQgdG8gYWxsIGFib3ZlIGNtZGxpbmVfcGFyc2VfKiB2YXJpYWJsZS4NCj4gDQo+ID4gKw0K PiA+ICAgLyoNCj4gPg0KPiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqDQo+ICoqKioqKioqKioqKg0KPiA+ICoqKioqKioqKiogKi8NCj4g Pg0KPiA+ICAgLyogbGlzdCBvZiBpbnN0cnVjdGlvbnMgKi8NCj4gPiBAQCAtMTgxMTAsNiArMTgx NzcsNyBAQCBzdHJ1Y3QNCj4gY21kX3Nob3dfcG9ydF9mbG93X3RyYW5zZmVyX3Byb3h5X3Jlc3Vs dCB7DQo+ID4gICAgICAgKGNtZGxpbmVfcGFyc2VfaW5zdF90ICopJmNtZF9zaG93X2NhcGFiaWxp dHksDQo+ID4gICAgICAgKGNtZGxpbmVfcGFyc2VfaW5zdF90ICopJmNtZF9zZXRfZmxleF9pc19w YXR0ZXJuLA0KPiA+ICAgICAgIChjbWRsaW5lX3BhcnNlX2luc3RfdCAqKSZjbWRfc2V0X2ZsZXhf c3BlY19wYXR0ZXJuLA0KPiA+ICsgICAgIChjbWRsaW5lX3BhcnNlX2luc3RfdCAqKSZjbWRfcnhx X2ZpbGxfdGhyZXNoLA0KPiA+ICAgICAgIE5VTEwsDQo+ID4gICB9Ow0KPiA+DQo+ID4gZGlmZiAt LWdpdCBhL2FwcC90ZXN0LXBtZC9jb25maWcuYyBiL2FwcC90ZXN0LXBtZC9jb25maWcuYyBpbmRl eA0KPiA+IDFiMWU3MzguLmQwYzUxOWIgMTAwNjQ0DQo+ID4gLS0tIGEvYXBwL3Rlc3QtcG1kL2Nv bmZpZy5jDQo+ID4gKysrIGIvYXBwL3Rlc3QtcG1kL2NvbmZpZy5jDQo+ID4gQEAgLTYzNDIsMyAr NjM0MiwyNCBAQCBzdHJ1Y3QgaWdiX3JpbmdfZGVzY18xNl9ieXRlcyB7DQo+ID4gICAgICAgICAg ICAgICBwcmludGYoIiAgJXNcbiIsIGJ1Zik7DQo+ID4gICAgICAgfQ0KPiA+ICAgfQ0KPiA+ICsN Cj4gPiAraW50DQo+ID4gK3NldF9yeHFfZmlsbF90aHJlc2gocG9ydGlkX3QgcG9ydF9pZCwgdWlu dDE2X3QgcXVldWVfaWR4LCB1aW50MTZfdA0KPiA+ICtmaWxsX3RocmVzaCkNCj4gDQo+IHVpbnQ4 X3QgZm9yIGZpbGxfdGhyZWFzaCBzaW5jZSB0aGUgdHlwZSBpcyB1c2VkIGluIGV0aGRldiBBUEkN Cj4gDQo+ID4gK3sNCj4gPiArICAgICBzdHJ1Y3QgcnRlX2V0aF9saW5rIGxpbms7DQo+ID4gKyAg ICAgaW50IHJldDsNCj4gPiArDQo+ID4gKyAgICAgaWYgKHBvcnRfaWRfaXNfaW52YWxpZChwb3J0 X2lkLCBFTkFCTEVEX1dBUk4pKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ ID4gKyAgICAgcmV0ID0gZXRoX2xpbmtfZ2V0X25vd2FpdF9wcmludF9lcnIocG9ydF9pZCwgJmxp bmspOw0KPiA+ICsgICAgIGlmIChyZXQgPCAwKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7DQo+ID4gKyAgICAgaWYgKGZpbGxfdGhyZXNoID4gOTkpDQo+ID4gKyAgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICByZXQgPSBydGVfZXRoX3J4X2ZpbGxfdGhyZXNo X3NldChwb3J0X2lkLCBxdWV1ZV9pZHgsDQo+ID4gKyBmaWxsX3RocmVzaCk7DQo+ID4gKw0KPiA+ ICsgICAgIGlmIChyZXQpDQo+IA0KPiBQbGVhc2UgcmVtb3ZlIGV4dHJhIGVtcHR5IGxpbmUgYWJv dmUgYW5kIGNvbXBhcmUgd2l0aCAwIGV4cGxpY2l0bHkuDQo+IA0KPiA+ICsgICAgICAgICAgICAg cmV0dXJuIHJldDsNCj4gPiArICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiBkaWZm IC0tZ2l0IGEvYXBwL3Rlc3QtcG1kL3Rlc3RwbWQuYyBiL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmMg aW5kZXgNCj4gPiA3Njc3NjVkLi4xMjA5MjMwIDEwMDY0NA0KPiA+IC0tLSBhL2FwcC90ZXN0LXBt ZC90ZXN0cG1kLmMNCj4gPiArKysgYi9hcHAvdGVzdC1wbWQvdGVzdHBtZC5jDQo+ID4gQEAgLTQy MCw2ICs0MjAsNyBAQCBzdHJ1Y3QgZndkX2VuZ2luZSAqIGZ3ZF9lbmdpbmVzW10gPSB7DQo+ID4g ICAgICAgW1JURV9FVEhfRVZFTlRfTkVXXSA9ICJkZXZpY2UgcHJvYmVkIiwNCj4gPiAgICAgICBb UlRFX0VUSF9FVkVOVF9ERVNUUk9ZXSA9ICJkZXZpY2UgcmVsZWFzZWQiLA0KPiA+ICAgICAgIFtS VEVfRVRIX0VWRU5UX0ZMT1dfQUdFRF0gPSAiZmxvdyBhZ2VkIiwNCj4gPiArICAgICBbUlRFX0VU SF9FVkVOVF9SWF9GSUxMX1RIUkVTSF0gPSAicnhxIGZpbGwgdGhyZXNob2xkIHJlYWNoZWQiLA0K PiA+ICAgICAgIFtSVEVfRVRIX0VWRU5UX01BWF0gPSBOVUxMLA0KPiA+ICAgfTsNCj4gPg0KPiA+ IEBAIC0zNjE2LDYgKzM2MTcsMTAgQEAgc3RydWN0IHBtZF90ZXN0X2NvbW1hbmQgew0KPiA+ICAg ZXRoX2V2ZW50X2NhbGxiYWNrKHBvcnRpZF90IHBvcnRfaWQsIGVudW0gcnRlX2V0aF9ldmVudF90 eXBlIHR5cGUsDQo+IHZvaWQgKnBhcmFtLA0KPiA+ICAgICAgICAgICAgICAgICB2b2lkICpyZXRf cGFyYW0pDQo+ID4gICB7DQo+ID4gKyAgICAgc3RydWN0IHJ0ZV9ldGhfZGV2X2luZm8gZGV2X2lu Zm87DQo+ID4gKyAgICAgdWludDE2X3QgcnhxX2lkOw0KPiA+ICsgICAgIHVpbnQ4X3QgZmlsbF90 aHJlc2g7DQo+ID4gKyAgICAgaW50IHJldDsNCj4gPiAgICAgICBSVEVfU0VUX1VTRUQocGFyYW0p Ow0KPiA+ICAgICAgIFJURV9TRVRfVVNFRChyZXRfcGFyYW0pOw0KPiA+DQo+ID4gQEAgLTM2NDcs NiArMzY1MiwxOSBAQCBzdHJ1Y3QgcG1kX3Rlc3RfY29tbWFuZCB7DQo+ID4gICAgICAgICAgICAg ICBwb3J0c1twb3J0X2lkXS5wb3J0X3N0YXR1cyA9IFJURV9QT1JUX0NMT1NFRDsNCj4gPiAgICAg ICAgICAgICAgIHByaW50ZigiUG9ydCAldSBpcyBjbG9zZWRcbiIsIHBvcnRfaWQpOw0KPiA+ICAg ICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgY2FzZSBSVEVfRVRIX0VWRU5UX1JYX0ZJTExf VEhSRVNIOg0KPiA+ICsgICAgICAgICAgICAgcmV0ID0gcnRlX2V0aF9kZXZfaW5mb19nZXQocG9y dF9pZCwgJmRldl9pbmZvKTsNCj4gPiArICAgICAgICAgICAgIGlmIChyZXQgIT0gMCkNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+IA0KPiBXaGF0J3MgdGhlIHBvaW50IHRvIGdl dCBkZXZpY2UgaW5mbyBhYm92ZT8gSXQgaXMgdW51c2VkIGFzIGZhciBhcyBJIGNhbiBzZWUuDQo+ IA0KPiA+ICsgICAgICAgICAgICAgLyogZmlsbF90aHJlc2ggcXVlcnkgQVBJIHJld2luZHMgcnhx X2lkLCBubyBuZWVkIHRvIGNoZWNrIG1heCByeHENCj4gbnVtLiAqLw0KPiA+ICsgICAgICAgICAg ICAgZm9yIChyeHFfaWQgPSAwOyA7IHJ4cV9pZCsrKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgIHJldCA9IHJ0ZV9ldGhfcnhfZmlsbF90aHJlc2hfcXVlcnkocG9ydF9pZCwgJnJ4cV9pZCwN Cj4gJmZpbGxfdGhyZXNoKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCA8PSAw KQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyA+ICsgICAgICAgICAg ICAgICAgICAgICAgcHJpbnRmKCJSZWNlaXZlZCBmaWxsX3RocmVzaCBldmVudCwNCj4gcG9ydDol ZCByeHFfaWQ6JWRcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2lk LCByeHFfaWQpOw0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAgICAgYnJlYWs7 DQo+ID4gICAgICAgZGVmYXVsdDoNCj4gPiAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICAgICAg IH0NCj4gPiBkaWZmIC0tZ2l0IGEvYXBwL3Rlc3QtcG1kL3Rlc3RwbWQuaCBiL2FwcC90ZXN0LXBt ZC90ZXN0cG1kLmggaW5kZXgNCj4gPiA3OGE1ZjRlLi5jN2ExNDRlIDEwMDY0NA0KPiA+IC0tLSBh L2FwcC90ZXN0LXBtZC90ZXN0cG1kLmgNCj4gPiArKysgYi9hcHAvdGVzdC1wbWQvdGVzdHBtZC5o DQo+ID4gQEAgLTExNzMsNiArMTE3Myw4IEBAIHVpbnQxNl90IHR4X3BrdF9zZXRfZHluZih1aW50 MTZfdCBwb3J0X2lkLA0KPiBfX3J0ZV91bnVzZWQgdWludDE2X3QgcXVldWUsDQo+ID4gICB2b2lk IGZsZXhfaXRlbV9jcmVhdGUocG9ydGlkX3QgcG9ydF9pZCwgdWludDE2X3QgZmxleF9pZCwgY29u c3QgY2hhcg0KPiAqZmlsZW5hbWUpOw0KPiA+ICAgdm9pZCBmbGV4X2l0ZW1fZGVzdHJveShwb3J0 aWRfdCBwb3J0X2lkLCB1aW50MTZfdCBmbGV4X2lkKTsNCj4gPiAgIHZvaWQgcG9ydF9mbGV4X2l0 ZW1fZmx1c2gocG9ydGlkX3QgcG9ydF9pZCk7DQo+ID4gK2ludCBzZXRfcnhxX2ZpbGxfdGhyZXNo KHBvcnRpZF90IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVlX2lkeCwNCj4gDQo+IGl0IGlzIGJldHRl ciB0byBiZSBjb25zaXN0ZW50IHdpdGggdmFyaWFibGUgbmFtZWluZyBxdWV1ZV9pZHggLT4gcXVl dWVfaWQNCj4gDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGZpbGxfdGhyZXNo KTsNCj4gDQo+IHVpbnQxNl90IC0+IHVpbnQ4X3Qgc2luY2UgZXRoZGV2IEFQSSB1c2VzIHVpbnQ4 X3QuIEl0IG11c3QgYmUgY29uc2lzdGVudCB3aXRoDQo+IGV0aGRldi4NCj4gDQo+ID4NCj4gPiAg IGV4dGVybiBpbnQgZmxvd19wYXJzZShjb25zdCBjaGFyICpzcmMsIHZvaWQgKnJlc3VsdCwgdW5z aWduZWQgaW50IHNpemUsDQo+ID4gICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2Zsb3df YXR0ciAqKmF0dHIsIGRpZmYgLS1naXQNCj4gPiBhL2xpYi9ldGhkZXYvZXRoZGV2X2RyaXZlci5o IGIvbGliL2V0aGRldi9ldGhkZXZfZHJpdmVyLmggaW5kZXgNCj4gPiA2OWQ5ZGMyLi43ZWY3ZGJh IDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9ldGhkZXYvZXRoZGV2X2RyaXZlci5oDQo+ID4gKysrIGIv bGliL2V0aGRldi9ldGhkZXZfZHJpdmVyLmgNCj4gPiBAQCAtNDcwLDYgKzQ3MCwyMyBAQCB0eXBl ZGVmIGludCAoKmV0aF9yeF9xdWV1ZV9zZXR1cF90KShzdHJ1Y3QNCj4gcnRlX2V0aF9kZXYgKmRl diwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJ0 ZV9ldGhfcnhjb25mICpyeF9jb25mLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgcnRlX21lbXBvb2wgKm1iX3Bvb2wpOw0KPiA+DQo+ID4gKy8qKg0KPiA+ICsg KiBAaW50ZXJuYWwgU2V0IFJ4IHF1ZXVlIGZpbGwgdGhyZXNob2xkLg0KPiA+ICsgKiBAc2VlIHJ0 ZV9ldGhfcnhfZmlsbF90aHJlc2hfc2V0KCkNCj4gPiArICovDQo+ID4gK3R5cGVkZWYgaW50ICgq ZXRoX3J4X3F1ZXVlX2ZpbGxfdGhyZXNoX3NldF90KShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCByeF9xdWV1 ZV9pZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGZp bGxfdGhyZXNoKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBAaW50ZXJuYWwgUXVlcnkgcXVl dWUgZmlsbCB0aHJlc2hvbGQgZXZlbnQuDQo+ID4gKyAqIEBzZWUgcnRlX2V0aF9yeF9maWxsX3Ro cmVzaF9xdWVyeSgpICAqLw0KPiA+ICsNCj4gPiArdHlwZWRlZiBpbnQgKCpldGhfcnhfcXVldWVf ZmlsbF90aHJlc2hfcXVlcnlfdCkoc3RydWN0IHJ0ZV9ldGhfZGV2DQo+ICpkZXYsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCAqcnhfcXVldWVfaWQs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpmaWxs X3RocmVzaCk7DQo+IA0KPiBTaG91bGQgZmlsbF90aHJlc2ggYmUgcm91bmQgVVAgb3IgRE9XTiBi eSB0aGUgZHJpdmVyPw0KPiBPcmRlciBvZiBwcm90b3R5cGVzIGRlZmluaXRpb24gbXVzdCBmb2xs b3cgb3JkZXIgb2Ygb3BzIGluIHRoZSBzdHJ1Y3R1cmUuDQo+IA0KPiA+ICsNCj4gPiAgIC8qKiBA aW50ZXJuYWwgU2V0dXAgYSB0cmFuc21pdCBxdWV1ZSBvZiBhbiBFdGhlcm5ldCBkZXZpY2UuICov DQo+ID4gICB0eXBlZGVmIGludCAoKmV0aF90eF9xdWV1ZV9zZXR1cF90KShzdHJ1Y3QgcnRlX2V0 aF9kZXYgKmRldiwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2 X3QgdHhfcXVldWVfaWQsIEBAIC0xMTY4LDYNCj4gPiArMTE4NSwxMSBAQCBzdHJ1Y3QgZXRoX2Rl dl9vcHMgew0KPiA+ICAgICAgIC8qKiBQcmlvcml0eSBmbG93IGNvbnRyb2wgcXVldWUgY29uZmln dXJlICovDQo+ID4gICAgICAgcHJpb3JpdHlfZmxvd19jdHJsX3F1ZXVlX2NvbmZpZ190DQo+ID4g cHJpb3JpdHlfZmxvd19jdHJsX3F1ZXVlX2NvbmZpZzsNCj4gPg0KPiA+ICsgICAgIC8qKiBTZXQg UnggcXVldWUgZmlsbCB0aHJlc2hvbGQuICovDQo+ID4gKyAgICAgZXRoX3J4X3F1ZXVlX2ZpbGxf dGhyZXNoX3NldF90IHJ4X3F1ZXVlX2ZpbGxfdGhyZXNoX3NldDsNCj4gPiArICAgICAvKiogUXVl cnkgUnggcXVldWUgZmlsbCB0aHJlc2hvbGQgZXZlbnQuICovDQo+ID4gKyAgICAgZXRoX3J4X3F1 ZXVlX2ZpbGxfdGhyZXNoX3F1ZXJ5X3QgcnhfcXVldWVfZmlsbF90aHJlc2hfcXVlcnk7DQo+ID4g Kw0KPiANCj4gV2h5IGlzIGl0IGFkZGVkIGluIHRoZSBtaWRkbGUgZm8gdGhlIHN0cnVjdHVyZT8N Cj4gSXNuJ3QgaXQgYmV0dGVyIHRvIGFkZCBhdCB0aGUgZW5kPw0KPiANCj4gPiAgICAgICAvKiog U2V0IFVuaWNhc3QgVGFibGUgQXJyYXkgKi8NCj4gPiAgICAgICBldGhfdWNfaGFzaF90YWJsZV9z ZXRfdCAgICB1Y19oYXNoX3RhYmxlX3NldDsNCj4gPiAgICAgICAvKiogU2V0IFVuaWNhc3QgaGFz aCBiaXRtYXAgKi8NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2V0aGRldi9ydGVfZXRoZGV2LmMgYi9s aWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyBpbmRleA0KPiA+IGExNzU4NjcuLjY5YTFmNzUgMTAwNjQ0 DQo+ID4gLS0tIGEvbGliL2V0aGRldi9ydGVfZXRoZGV2LmMNCj4gPiArKysgYi9saWIvZXRoZGV2 L3J0ZV9ldGhkZXYuYw0KPiA+IEBAIC00NDI0LDYgKzQ0MjQsNTggQEAgaW50IHJ0ZV9ldGhfc2V0 X3F1ZXVlX3JhdGVfbGltaXQodWludDE2X3QNCj4gcG9ydF9pZCwgdWludDE2X3QgcXVldWVfaWR4 LA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHF1ZXVlX2lkeCwgdHhfcmF0ZSkpOw0KPiA+ICAgfQ0KPiA+DQo+ID4gK2ludCBydGVfZXRo X3J4X2ZpbGxfdGhyZXNoX3NldCh1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZfdCBxdWV1ZV9pZCwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZmlsbF90aHJlc2gpIHsN Cj4gPiArICAgICBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldjsNCj4gPiArICAgICBzdHJ1Y3QgcnRl X2V0aF9kZXZfaW5mbyBkZXZfaW5mbzsNCj4gPiArICAgICBpbnQgcmV0Ow0KPiA+ICsNCj4gPiAr ICAgICBSVEVfRVRIX1ZBTElEX1BPUlRJRF9PUl9FUlJfUkVUKHBvcnRfaWQsIC1FTk9ERVYpOw0K PiA+ICsgICAgIGRldiA9ICZydGVfZXRoX2RldmljZXNbcG9ydF9pZF07DQo+ID4gKw0KPiA+ICsg ICAgIHJldCA9IHJ0ZV9ldGhfZGV2X2luZm9fZ2V0KHBvcnRfaWQsICZkZXZfaW5mbyk7DQo+ID4g KyAgICAgaWYgKHJldCAhPSAwKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiAr DQo+ID4gKyAgICAgaWYgKHF1ZXVlX2lkID4gZGV2X2luZm8ubWF4X3J4X3F1ZXVlcykgew0KPiAN Cj4gV2UgZG9uJ3QgbmVlZCBkZXZfaW5mbyB0byBnZXQgbnVtYmVyIG9mIFJ4IHF1ZXVlcy4NCj4g ZGV2LT5kYXRhLT5uYl9yeF9xdWV1ZXMgZG9lcyB0aGUgam9iLg0KPiANCj4gPiArICAgICAgICAg ICAgIFJURV9FVEhERVZfTE9HKEVSUiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIlNldCBx dWV1ZSBmaWxsIHRocmVzaDogcG9ydCAldTogaW52YWxpZCBxdWV1ZSBJRD0ldS5cbiIsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgIHBvcnRfaWQsIHF1ZXVlX2lkKTsNCj4gPiArICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgaWYgKGZp bGxfdGhyZXNoID4gOTkpDQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gDQo+ IFdoeSBkbyB5b3UgaGF2ZSBlcnJvciBsb2cgYWJvdmUsIGJ1dCBkb24ndCBoYXZlIGl0IGhlcmU/ DQo+IA0KPiA+ICsgICAgIFJURV9GVU5DX1BUUl9PUl9FUlJfUkVUKCpkZXYtPmRldl9vcHMtDQo+ ID5yeF9xdWV1ZV9maWxsX3RocmVzaF9zZXQsIC1FTk9UU1VQKTsNCj4gPiArICAgICByZXR1cm4g ZXRoX2Vycihwb3J0X2lkLCAoKmRldi0+ZGV2X29wcy0NCj4gPnJ4X3F1ZXVlX2ZpbGxfdGhyZXNo X3NldCkoZGV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcXVldWVfaWQsDQo+ID4gK2ZpbGxfdGhyZXNoKSk7IH0NCj4gPiAr DQo+ID4gK2ludCBydGVfZXRoX3J4X2ZpbGxfdGhyZXNoX3F1ZXJ5KHVpbnQxNl90IHBvcnRfaWQs IHVpbnQxNl90ICpxdWV1ZV9pZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDhfdCAqZmlsbF90aHJlc2gpIHsNCj4gPiArICAgICBzdHJ1Y3QgcnRlX2V0aF9kZXZfaW5m byBkZXZfaW5mbzsNCj4gPiArICAgICBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldjsNCj4gPiArICAg ICBpbnQgcmV0Ow0KPiA+ICsNCj4gPiArICAgICBSVEVfRVRIX1ZBTElEX1BPUlRJRF9PUl9FUlJf UkVUKHBvcnRfaWQsIC1FTk9ERVYpOw0KPiA+ICsgICAgIGRldiA9ICZydGVfZXRoX2RldmljZXNb cG9ydF9pZF07DQo+ID4gKw0KPiA+ICsgICAgIHJldCA9IHJ0ZV9ldGhfZGV2X2luZm9fZ2V0KHBv cnRfaWQsICZkZXZfaW5mbyk7DQo+ID4gKyAgICAgaWYgKHJldCAhPSAwKQ0KPiA+ICsgICAgICAg ICAgICAgcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKyAgICAgaWYgKHF1ZXVlX2lkID09IE5VTEwp DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICBpZiAoKnF1ZXVl X2lkID49IGRldl9pbmZvLm1heF9yeF9xdWV1ZXMpDQo+IA0KPiBTYW1lIGhlcmUuIHlvdSBkb24n dCBuZWVkIGRldl9pbmZvDQo+IA0KPiA+ICsgICAgICAgICAgICAgKnF1ZXVlX2lkID0gMDsNCj4g PiArDQo+ID4gKyAgICAgUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmRldi0+ZGV2X29wcy0NCj4g PnJ4X3F1ZXVlX2ZpbGxfdGhyZXNoX3F1ZXJ5LCAtRU5PVFNVUCk7DQo+ID4gKyAgICAgcmV0dXJu IGV0aF9lcnIocG9ydF9pZCwgKCpkZXYtPmRldl9vcHMtDQo+ID5yeF9xdWV1ZV9maWxsX3RocmVz aF9xdWVyeSkoZGV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcXVldWVfaWQsDQo+ID4gK2ZpbGxfdGhyZXNoKSk7IH0NCj4g PiArDQo+ID4gICBSVEVfSU5JVChldGhfZGV2X2luaXRfZnBfb3BzKQ0KPiA+ICAgew0KPiA+ICAg ICAgIHVpbnQzMl90IGk7DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5o IGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmggaW5kZXgNCj4gPiAwNDIyNWJiLi5kNDRlNWRhIDEw MDY0NA0KPiA+IC0tLSBhL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5oDQo+ID4gKysrIGIvbGliL2V0 aGRldi9ydGVfZXRoZGV2LmgNCj4gPiBAQCAtMTkzMSw2ICsxOTMxLDE0IEBAIHN0cnVjdCBydGVf ZXRoX3J4cV9pbmZvIHsNCj4gPiAgICAgICB1aW50OF90IHF1ZXVlX3N0YXRlOyAgICAgICAgLyoq PCBvbmUgb2YgUlRFX0VUSF9RVUVVRV9TVEFURV8qLiAqLw0KPiA+ICAgICAgIHVpbnQxNl90IG5i X2Rlc2M7ICAgICAgICAgICAvKio8IGNvbmZpZ3VyZWQgbnVtYmVyIG9mIFJYRHMuICovDQo+ID4g ICAgICAgdWludDE2X3QgcnhfYnVmX3NpemU7ICAgICAgIC8qKjwgaGFyZHdhcmUgcmVjZWl2ZSBi dWZmZXIgc2l6ZS4gKi8NCj4gPiArICAgICAvKioNCj4gPiArICAgICAgKiBQZXItcXVldWUgUngg ZmlsbCB0aHJlc2hvbGQgZGVmaW5lZCBhcyBwZXJjZW50YWdlIG9mIFJ4IHF1ZXVlDQo+ID4gKyAg ICAgICogc2l6ZS4gSWYgUnggcXVldWUgcmVjZWl2ZXMgdHJhZmZpYyBoaWdoZXIgdGhhbiB0aGlz IHBlcmNlbnRhZ2UsDQo+ID4gKyAgICAgICogdGhlIGV2ZW50IFJURV9FVEhfRVZFTlRfUlhfRklM TF9USEVTSCBpcyB0cmlnZ2VyZWQuDQo+ID4gKyAgICAgICogVmFsdWUgMCBtZWFucyB0aHJlc2hv bGQgbW9uaXRvcmluZyBpcyBkaXNhYmxlZCwgbm8gZXZlbnQgaXMNCj4gPiArICAgICAgKiB0cmln Z2VyZWQuDQo+ID4gKyAgICAgICovDQo+ID4gKyAgICAgdWludDhfdCBmaWxsX3RocmVzaDsNCj4g PiAgIH0gX19ydGVfY2FjaGVfbWluX2FsaWduZWQ7DQo+ID4NCj4gPiAgIC8qKg0KPiA+IEBAIC0z NjcyLDYgKzM2ODAsNjUgQEAgaW50IHJ0ZV9ldGhfZGV2X3NldF92bGFuX2V0aGVyX3R5cGUodWlu dDE2X3QNCj4gcG9ydF9pZCwNCj4gPiAgICAqLw0KPiA+ICAgaW50IHJ0ZV9ldGhfZGV2X3NldF92 bGFuX3B2aWQodWludDE2X3QgcG9ydF9pZCwgdWludDE2X3QgcHZpZCwgaW50DQo+ID4gb24pOw0K PiA+DQo+ID4gKy8qKg0KPiA+ICsgKiBAd2FybmluZw0KPiA+ICsgKiBAYiBFWFBFUklNRU5UQUw6 IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ID4gKyAqDQo+ID4g KyAqIFNldCBSeCBxdWV1ZSBiYXNlZCBmaWxsIHRocmVzaG9sZC4NCj4gPiArICoNCj4gPiArICog QHBhcmFtIHBvcnRfaWQNCj4gPiArICogIFRoZSBwb3J0IGlkZW50aWZpZXIgb2YgdGhlIEV0aGVy bmV0IGRldmljZS4NCj4gPiArICogQHBhcmFtIHF1ZXVlX2lkDQo+ID4gKyAqICBUaGUgaW5kZXgg b2YgdGhlIHJlY2VpdmUgcXVldWUuDQo+ID4gKyAqIEBwYXJhbSBmaWxsX3RocmVzaA0KPiA+ICsg KiAgVGhlIGZpbGwgdGhyZXNob2xkIHBlcmNlbnRhZ2Ugb2YgUnggcXVldWUgc2l6ZSB3aGljaCBk ZXNjcmliZXMNCj4gPiArICogIHRoZSBmdWxsbmVzcyBvZiBSeCBxdWV1ZS4gSWYgdGhlIFJ4IHF1 ZXVlIGZ1bGxuZXNzIGlzIGFib3ZlIGl0LA0KPiA+ICsgKiAgdGhlIGRldmljZSB3aWxsIHRyaWdn ZXIgdGhlIGV2ZW50IFJURV9FVEhfRVZFTlRfUlhfRklMTF9USFJFU0guDQo+ID4gKyAqICBbMS05 OV0gdG8gc2V0IGEgbmV3IGZpbGwgdGhyZXNvbGQuDQo+ID4gKyAqICAwIHRvIGRpc2FibGUgdGhy ZXNvbGQgbW9uaXRvcmluZy4NCj4gPiArICoNCj4gPiArICogQHJldHVybg0KPiA+ICsgKiAgIC0g MCBpZiBzdWNjZXNzZnVsLg0KPiA+ICsgKiAgIC0gbmVnYXRpdmUgaWYgZmFpbGVkLg0KPiA+ICsg Ki8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4gK2ludCBydGVfZXRoX3J4X2ZpbGxfdGhy ZXNoX3NldCh1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZfdCBxdWV1ZV9pZCwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZmlsbF90aHJlc2gpOw0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIEB3YXJuaW5nDQo+ID4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkg bWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gPiArICoNCj4gPiArICogUXVlcnkg UnggcXVldWUgYmFzZWQgZmlsbCB0aHJlc2hvbGQgZXZlbnQuDQo+ID4gKyAqIFRoZSBmdW5jdGlv biBxdWVyaWVzIGFsbCBxdWV1ZXMgaW4gdGhlIHBvcnQgY2lyY3VsYXJseSB1bnRpbCBvbmUNCj4g PiArICogcGVuZGluZyBmaWxsX3RocmVzaCBldmVudCBpcyBmb3VuZCBvciBubyBwZW5kaW5nIGZp bGxfdGhyZXNoIGV2ZW50IGlzDQo+IGZvdW5kLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gcG9y dF9pZA0KPiA+ICsgKiAgVGhlIHBvcnQgaWRlbnRpZmllciBvZiB0aGUgRXRoZXJuZXQgZGV2aWNl Lg0KPiA+ICsgKiBAcGFyYW0gcXVldWVfaWQNCj4gPiArICogIFRoZSBBUEkgY2FsbGVyIHNldHMg dGhlIHN0YXJ0aW5nIFJ4IHF1ZXVlIGlkIGluIHRoZSBwb2ludGVyLg0KPiA+ICsgKiAgSWYgdGhl IHF1ZXVlX2lkIGlzIGJpZ2dlciB0aGFuIG1heGltdW0gcXVldWUgaWQgb2YgdGhlIHBvcnQsDQo+ ID4gKyAqICBpdCdzIHJld2luZGVkIHRvIDAgc28gdGhhdCBhcHBsaWNhdGlvbiBjYW4ga2VlcCBj YWxsaW5nDQo+ID4gKyAqICB0aGlzIGZ1bmN0aW9uIHRvIGhhbmRsZSBhbGwgcGVuZGluZyBmaWxs X3RocmVzaCBldmVudHMgaW4gdGhlDQo+ID4gK3F1ZXVlcw0KPiA+ICsgKiAgd2l0aCBhIHNpbXBs ZSBpbmNyZW1lbnQgYmV0d2VlbiBjYWxscy4NCj4gPiArICogIElmIGEgUnggcXVldWUgaGFzIHBl bmRpbmcgZmlsbF90aHJlc2ggZXZlbnQsIHRoZSBwb2ludGVyIGlzDQo+ID4gK3VwZGF0ZWQNCj4g PiArICogIHdpdGggdGhpcyBSeCBxdWV1ZSBpZDsgb3RoZXJ3aXNlIHRoaXMgcG9pbnRlcidzIGNv bnRlbnQgaXMNCj4gPiArICogIHVuY2hhbmdlZC4NCj4gPiArICogQHBhcmFtIGZpbGxfdGhyZXNo DQo+ID4gKyAqICBUaGUgcG9pbnRlciB0byB0aGUgZmlsbCB0aHJlc2hvbGQgcGVyY2VudGFnZSBv ZiBSeCBxdWV1ZS4NCj4gPiArICogIElmIFJ4IHF1ZXVlIHdpdGggcGVuZGluZyBmaWxsX3RocmVz aCBldmVudCBpcyBmb3VuZCwgdGhlIHF1ZXVlJ3MNCj4gPiArZmlsbF90aHJlc2gNCj4gPiArICog IHBlcmNlbnRhZ2UgaXMgc3RvcmVkIGluIHRoaXMgcG9pbnRlciwgb3RoZXJ3aXNlIHRoZSBwb2lu dGVyJ3MNCj4gPiArICogIGNvbnRlbnQgaXMgdW5jaGFuZ2VkLg0KPiA+ICsgKg0KPiA+ICsgKiBA cmV0dXJuDQo+ID4gKyAqICAgLSAxIGlmIGEgUnggcXVldWUgd2l0aCBwZW5kaW5nIGZpbGxfdGhy ZXNoIGV2ZW50IGlzIGZvdW5kLg0KPiA+ICsgKiAgIC0gMCBpZiBubyBSeCBxdWV1ZSB3aXRoIHBl bmRpbmcgZmlsbF90aHJlc2ggZXZlbnQgaXMgZm91bmQuDQo+ID4gKyAqICAgLSAtRUlOVkFMIGlm IHF1ZXVlX2lkIGlzIE5VTEwuDQo+ID4gKyAqLw0KPiA+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4g PiAraW50IHJ0ZV9ldGhfcnhfZmlsbF90aHJlc2hfcXVlcnkodWludDE2X3QgcG9ydF9pZCwgdWlu dDE2X3QgKnF1ZXVlX2lkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 OF90ICpmaWxsX3RocmVzaCk7DQo+ID4gKw0KPiA+ICAgdHlwZWRlZiB2b2lkICgqYnVmZmVyX3R4 X2Vycm9yX2ZuKShzdHJ1Y3QgcnRlX21idWYgKip1bnNlbnQsIHVpbnQxNl90DQo+IGNvdW50LA0K PiA+ICAgICAgICAgICAgICAgdm9pZCAqdXNlcmRhdGEpOw0KPiA+DQo+ID4gQEAgLTM4NzcsNiAr Mzk0NCwxMSBAQCBlbnVtIHJ0ZV9ldGhfZXZlbnRfdHlwZSB7DQo+ID4gICAgICAgUlRFX0VUSF9F VkVOVF9ERVNUUk9ZLCAgLyoqPCBwb3J0IGlzIHJlbGVhc2VkICovDQo+ID4gICAgICAgUlRFX0VU SF9FVkVOVF9JUFNFQywgICAgLyoqPCBJUHNlYyBvZmZsb2FkIHJlbGF0ZWQgZXZlbnQgKi8NCj4g PiAgICAgICBSVEVfRVRIX0VWRU5UX0ZMT1dfQUdFRCwvKio8IE5ldyBhZ2VkLW91dCBmbG93cyBp cyBkZXRlY3RlZCAqLw0KPiA+ICsgICAgIC8qKg0KPiA+ICsgICAgICAqICBGaWxsIHRocmVzaG9s ZCB2YWx1ZSBpcyBleGNlZWRlZCBpbiBhIHF1ZXVlLg0KPiA+ICsgICAgICAqICBAc2VlIHJ0ZV9l dGhfcnhfZmlsbF90aHJlc2hfc2V0KCkNCj4gPiArICAgICAgKi8NCj4gPiArICAgICBSVEVfRVRI X0VWRU5UX1JYX0ZJTExfVEhSRVNILA0KPiA+ICAgICAgIFJURV9FVEhfRVZFTlRfTUFYICAgICAg IC8qKjwgbWF4IHZhbHVlIG9mIHRoaXMgZW51bSAqLw0KPiA+ICAgfTsNCj4gPg0KPiA+IGRpZmYg LS1naXQgYS9saWIvZXRoZGV2L3ZlcnNpb24ubWFwIGIvbGliL2V0aGRldi92ZXJzaW9uLm1hcCBp bmRleA0KPiA+IGRhY2E3ODUuLjI5YjFmZTggMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2V0aGRldi92 ZXJzaW9uLm1hcA0KPiA+ICsrKyBiL2xpYi9ldGhkZXYvdmVyc2lvbi5tYXANCj4gPiBAQCAtMjg1 LDYgKzI4NSw4IEBAIEVYUEVSSU1FTlRBTCB7DQo+ID4gICAgICAgcnRlX210cl9jb2xvcl9pbl9w cm90b2NvbF9wcmlvcml0eV9nZXQ7DQo+ID4gICAgICAgcnRlX210cl9jb2xvcl9pbl9wcm90b2Nv bF9zZXQ7DQo+ID4gICAgICAgcnRlX210cl9tZXRlcl92bGFuX3RhYmxlX3VwZGF0ZTsNCj4gPiAr ICAgICBydGVfZXRoX3J4X2ZpbGxfdGhyZXNoX3NldDsNCj4gPiArICAgICBydGVfZXRoX3J4X2Zp bGxfdGhyZXNoX3F1ZXJ5Ow0KPiA+ICAgfTsNCj4gPg0KPiA+ICAgSU5URVJOQUwgew0KDQo=