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 66626430E6; Thu, 24 Aug 2023 05:38:30 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1614C40EE1; Thu, 24 Aug 2023 05:38:30 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2050.outbound.protection.outlook.com [40.107.22.50]) by mails.dpdk.org (Postfix) with ESMTP id 682A240C35 for ; Thu, 24 Aug 2023 05:38:28 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Lub275XBYBCnT78NcNHvucJMYTTrELZF0W1iCMavr8sgkx44qwTev69MgXEo+Ze+xxqEtrIU9tPR4lUkrLDIKzKXKJRWYu2HdIbtiobtTAJhs2Y0rfDNOwvKpg9S2nPDaMkMvJlHhxAaIMOAdw7vWtFRaELM+Tz6pytJUh7u0A2Wih0YLfh1SvlzwA1s6odA/ypi59eBx+pzIKWtYeCEM0EJtfdb694iC5Tptl0ANJi5Fx64eL8dQ0Xe+GgrOnOcXTOap49WL219cizdnoHR4I4iyXU4h7TntyGpDjNomcdf9GUwe5tmMEYFuEaKSFEtS8szQMGh6baqFXgRvvUWRw== 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=8Y6X3RAUnIxMk8Q176pvHTGXYY4N6dQ6jmFfXhwJi5c=; b=eQ6JOxjsAtSvW2f8L7DIcybjivTAX6wvRou7p50YjvqCNbaJAFU98hnaiKyqJFMfcTNZ042lWzF+Rv87o2a5gzBlU7mPZ+6G6cT92xSnk0t2v1pcb81XDWyuyE0vWDjcWymx00Lo9gPkLq5RKNLioMgoLdmAgNwSxCfsptpuC9UYmbZqGIxHviiAgo7rfc3ub5MKoMWrjinbuV5Wrm3K5BrS5Snp7LgRzdybKjo8OMEbfNdJJlMHkpNzCOgT2o1yUQyUXFYE99hGRrMPS9xSzuojfn2TTMZhDqoqWFpqL84g88zNv8Peh2w+RpXxBDh6np3iDu2IEAEdKaFtY0K9Fw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8Y6X3RAUnIxMk8Q176pvHTGXYY4N6dQ6jmFfXhwJi5c=; b=8XFsTIuWu1VwHpIcKpC6UbD9GhcS67E5ecMsIQndswF/EW/YP6Syosq2McZLNaYls9cCLT0kNV4/+N6a7cRFCUe2PeKnaVVbe0tfh+KnrkiJn0apybfEaYC4dEqtDtTR87x/kN2RNttI39wxmZrPh2JQWXA0YA08vppFygDzhAI= Received: from AS8PR08MB7718.eurprd08.prod.outlook.com (2603:10a6:20b:50a::22) by DBAPR08MB5557.eurprd08.prod.outlook.com (2603:10a6:10:1a1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6699.26; Thu, 24 Aug 2023 03:38:25 +0000 Received: from AS8PR08MB7718.eurprd08.prod.outlook.com ([fe80::70e8:2daa:5a39:dc50]) by AS8PR08MB7718.eurprd08.prod.outlook.com ([fe80::70e8:2daa:5a39:dc50%4]) with mapi id 15.20.6699.027; Thu, 24 Aug 2023 03:38:25 +0000 From: Feifei Wang To: Feifei Wang , Konstantin Ananyev CC: "dev@dpdk.org" , nd , Honnappa Nagarahalli , Ruifeng Wang , =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , "thomas@monjalon.net" , Ferruh Yigit , Andrew Rybchenko , nd Subject: RE: [PATCH v11 1/4] ethdev: add API for mbufs recycle mode Thread-Topic: [PATCH v11 1/4] ethdev: add API for mbufs recycle mode Thread-Index: AQHZ1MoeeL/Z8xZ6IU6IpI9ubJXzt6/4zl5w Date: Thu, 24 Aug 2023 03:38:25 +0000 Message-ID: References: <20220420081650.2043183-1-feifei.wang2@arm.com> <20230822072710.1945027-1-feifei.wang2@arm.com> <20230822072710.1945027-2-feifei.wang2@arm.com> In-Reply-To: <20230822072710.1945027-2-feifei.wang2@arm.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 410BC19282AC5642AC83184BE03A5751.0 x-checkrecipientchecked: true authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS8PR08MB7718:EE_|DBAPR08MB5557:EE_ x-ms-office365-filtering-correlation-id: 445794f0-b6d7-499d-1cb7-08dba45392b9 x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr nodisclaimer: true x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: spKAwIEGETBqp6sgS7PQHNy5QdM8LZcFUQlKLM9M+OIu+BjtqJ9QplKjwplMb1GB4GoKvX7AKfyhYi4KcF8LegSkZGjrf6l50ljGyQ4xEkVpApldvtgJTWP7Mtk6t4FphUvKLidXbp8kd8Rj1T6R5HI9t7zbsuNK8ytFR25d8Xacc1k6Ytr3pnlE6VBAMCkabcY0IDlzUQ4LSDHolsVp99Xom42rCeUbFE4dYjWjdqGmG7SQ8cAS9n9mstNoJBfDs9NsbDkoYInTdrP2JUnSChik+P6fkXPl+RV6nOEuet7BTsDWFKWRL3hvPlU5SdQ5Q1nxXL6He50hRWMXxKrbXaAWQUVX11xnZyHXauy0mqIfj5nEbLccr+0GeT5uieP36vsDaGhV508MWj9UvBsd+ZQRWYCBwTuklkiFCgkZFZzY15EotIHD9GoOoMRl4jBjN7jnxoDr2K6Y99aRuR8iRn1it6jVhZa1xq60bt0TRyP5A9TFS0u80NmUJaYbae2RAveLGykxfZMcdzH+Ry4IhwHkFIup0OHZyhx2FPCOxcCGFi8l7PbfUwVR5RCyVmCAzig5VDeDjJQkUehhlicsetMB5UDZz0SikLi2PyO1+UJcybjRzDoQ0pXuk2+8u6Q+ x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB7718.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(366004)(346002)(376002)(396003)(39860400002)(451199024)(186009)(1800799009)(478600001)(33656002)(86362001)(6506007)(66476007)(54906003)(66556008)(7696005)(316002)(71200400001)(64756008)(76116006)(110136005)(66946007)(53546011)(41300700001)(9686003)(38100700002)(8676002)(38070700005)(4326008)(8936002)(122000001)(52536014)(5660300002)(26005)(30864003)(83380400001)(66446008)(66574015)(2906002)(55016003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cEoyZzlwOE9aN05IM0tsK0dEUXFJZHNjSlVJbU1VSzMxelo5b3hWeGJHeW1T?= =?utf-8?B?R2FVbEdsVFJoZVRjb2lvOWdkbEY5SUoydmJMVW9IL0RWb2lBaWhGQzYzQ1VP?= =?utf-8?B?c01VVlRNNU16SnlSVE55SHI1WjdQWk92QWRaaEVkUlhkSks4WjR4VHE5SXE0?= =?utf-8?B?YVpKdTZ2TDB3S2dONUR1ODVubnhMTXozMlVnb3d3eEd3RHJJSStHMHZrVGsw?= =?utf-8?B?Z1pLL1hkYStRTFM1RHVDQ1NJTG5pVDQzanJnNzZOY0NSRWJOamRjKzQyOUVz?= =?utf-8?B?WC9CZ0JWMDY3V251RVBnTHdvZFR4ZXhKR05BVzNCY2Q1NS9SNDRtZHVaMUdu?= =?utf-8?B?L1lUQWx1MW5FeTF1T3BPUE1qMTVQOVhNSXVqTjI2TmRQeUY0dEVxc3RtcmZD?= =?utf-8?B?d1U4aWpNWnZYRGdPbU03blZiOGh0aHhrVnJ4L2pTaVF4RmRsOFdmWWpiQ2JJ?= =?utf-8?B?ZUV1akdpQm91ZG1OYjQ0cXg3NFlFWFdmN2dDR2w4OUJvY00xSmt0ZUlNdW9h?= =?utf-8?B?bWZzMWM3U254cWJwMzl6SlV5MHdHV0wvekR6WUNkZDd2MFF0cVVNRVI5ajh6?= =?utf-8?B?WmpXZnJVVTY2RDdXMXVLTXhyYWFYVW90eDkyWkQwck1uV09TNUpoZUx3T1dE?= =?utf-8?B?WG0zQnFEOWZYRTZ1TnVaU2tabjVQa0I4UStTWG90QmF1QmN6VXV3dWx4NnMr?= =?utf-8?B?dTlLRjlsOWRkR1IwUTdkbUt0L3lxSlB2c2wreXRpbEgzTi94bEd1ZjQ1TEl0?= =?utf-8?B?VEpDZC96ekFKVTk2L2V1bWtEbnQwZkNjTjNrZ1BrbUhVMXpDbmI3SU54N1M2?= =?utf-8?B?YUhZeUYxWjRvczdSQ3FOL0JtSTMwWElCVG10d0w3eGpwRGcvemNQRjI2YWlq?= =?utf-8?B?eW5YZmxWd1llZHJCakhmVUs2NS9PM1lINzlxODQ0OTBJRVZpamt3bndhQ2ow?= =?utf-8?B?Z3lNTVpsMjBpTkpvY293bkd6Y3pUMlhrNmdvZndCSWlTN3R0UXRVaURHeEtn?= =?utf-8?B?Q2VwY1dtbDBtRW96NW1VdW1ZL0xzUkRyYlNOVzNmV2ZVWXJ2UzVrMm5wU2ZP?= =?utf-8?B?SkJ4VlNpUUlHa29CL2NtRklLY1pYS0VkaE9wMzlZMFZIekpXUm9pUUZxUFVJ?= =?utf-8?B?M1VZcStnV21nU21EU0RHN0NicDZHQ0I3U1hrRzBtcE5kbnYzZGVCVWtPWVVq?= =?utf-8?B?OWJEQTd6RE9rNlBKQUhOcnZOZDRWeEFQOVhKTiszWjA5MEF0R3QxOExVTVpj?= =?utf-8?B?OUw1RXV5TXo0RnQ3WjU0UHJyT2Z3MUUrcWE1UDMycUpqKzN1V3RxZDV2aHZy?= =?utf-8?B?Q3Yvdmd6cHFxK2ZQc0ZHNkpSWWlnaThaV01TdlN4NDJTNnZVZEd1OW1WN3ha?= =?utf-8?B?RXdCUUs5RDk3ZUlvcEVwa29ZUVp6dzBmUWVpWEY5eXk4Tm1aVVJTUzQxVnJV?= =?utf-8?B?VFJEb1l6bVNtOTVmK1JPMkhZWXVueU8xUm5yNEs1cTB6WVMwWWFuT0VUd1N3?= =?utf-8?B?elJYQjdIeklLWHVlbkd2cCtEVHZjK0JITzVvTFlteVBJM01SR3RKdlRqWTE4?= =?utf-8?B?WldHRyszOExCN3VjREowcVZjanJXS21OU3NVVlF2U3hUTGZYLysxN01KSEk0?= =?utf-8?B?eFcwQW5Hc3FWWGxvWTgvaUZwRXBoeFJaNUwvS2wzSnBjZCtrdFBIOFRTR2tC?= =?utf-8?B?YjBteDl4NlJTTEdYNzRFVk5jUm1xUVlueC81QTJnMlFIU1ZnK0htSmxENEc3?= =?utf-8?B?dmVLTkp5ZXVUT21FMUJwRVJWc0JsZzlOUnJlN0hrNFBhUEdFcWtkTEdFTk5D?= =?utf-8?B?dXBhekh2NmRZYWQrL0Qwb0pWd2QvbXBjUXBSaFZ4aWxleTE4c0FHVVVIZ0NE?= =?utf-8?B?ZlAzSU0wdmlmNUhWRFFDUUw5WmNxanZVUGxYYkRXckw3cjJlT3QyMGx6ZnBQ?= =?utf-8?B?U00yNm1MZWpLZytYZmNtTDFoZGtPdy9FL09LNkd6Q0gvRDdscjdRY0ZkaWhJ?= =?utf-8?B?Sldncmg2Q0RLYkhyVnZuZEpTbjU0dHNzdjZYY3RzN0JobFV6aitJSHdEL0Zx?= =?utf-8?B?MTg0Y21FTmhsWnRrV1dOc2ozMHlHRGtuT2o4TEpuakdybktIcjVYR0M0S3Zp?= =?utf-8?Q?uMmBhQq4WUbyg9DYFp93Ru1k2?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7718.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 445794f0-b6d7-499d-1cb7-08dba45392b9 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Aug 2023 03:38:25.3825 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 90aebNcpyHltivJf9eIKyUx5NfUmKQenGReeDdLLZTdWIaIXpVBmS6Lfi7lGdQWhfcRae9vWJoJPWQ/N28Kc6A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR08MB5557 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 Rm9yIEtvbnN0YW50aW4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBG ZWlmZWkgV2FuZyA8ZmVpZmVpLndhbmcyQGFybS5jb20+DQo+IFNlbnQ6IFR1ZXNkYXksIEF1Z3Vz dCAyMiwgMjAyMyAzOjI3IFBNDQo+IFRvOiB0aG9tYXNAbW9uamFsb24ubmV0OyBGZXJydWggWWln aXQgPGZlcnJ1aC55aWdpdEBhbWQuY29tPjsgQW5kcmV3DQo+IFJ5YmNoZW5rbyA8YW5kcmV3LnJ5 YmNoZW5rb0Bva3RldGxhYnMucnU+DQo+IENjOiBkZXZAZHBkay5vcmc7IG5kIDxuZEBhcm0uY29t PjsgRmVpZmVpIFdhbmcNCj4gPEZlaWZlaS5XYW5nMkBhcm0uY29tPjsgSG9ubmFwcGEgTmFnYXJh aGFsbGkNCj4gPEhvbm5hcHBhLk5hZ2FyYWhhbGxpQGFybS5jb20+OyBSdWlmZW5nIFdhbmcNCj4g PFJ1aWZlbmcuV2FuZ0Bhcm0uY29tPjsgTW9ydGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVzeXN0 ZW1zLmNvbT4NCj4gU3ViamVjdDogW1BBVENIIHYxMSAxLzRdIGV0aGRldjogYWRkIEFQSSBmb3Ig bWJ1ZnMgcmVjeWNsZSBtb2RlDQo+IA0KPiBBZGQgJ3J0ZV9ldGhfcmVjeWNsZV9yeF9xdWV1ZV9p bmZvX2dldCcgYW5kICdydGVfZXRoX3JlY3ljbGVfbWJ1ZnMnDQo+IEFQSXMgdG8gcmVjeWNsZSB1 c2VkIG1idWZzIGZyb20gYSB0cmFuc21pdCBxdWV1ZSBvZiBhbiBFdGhlcm5ldCBkZXZpY2UsIGFu ZA0KPiBtb3ZlIHRoZXNlIG1idWZzIGludG8gYSBtYnVmIHJpbmcgZm9yIGEgcmVjZWl2ZSBxdWV1 ZSBvZiBhbiBFdGhlcm5ldCBkZXZpY2UuDQo+IFRoaXMgY2FuIGJ5cGFzcyBtZW1wb29sICdwdXQv Z2V0JyBvcGVyYXRpb25zIGhlbmNlIHNhdmluZyBDUFUgY3ljbGVzLg0KPiANCj4gRm9yIGVhY2gg cmVjeWNsaW5nIG1idWZzLCB0aGUgcnRlX2V0aF9yZWN5Y2xlX21idWZzKCkgZnVuY3Rpb24gcGVy Zm9ybXMgdGhlDQo+IGZvbGxvd2luZyBvcGVyYXRpb25zOg0KPiAtIENvcHkgdXNlZCAqcnRlX21i dWYqIGJ1ZmZlciBwb2ludGVycyBmcm9tIFR4IG1idWYgcmluZyBpbnRvIFJ4IG1idWYgcmluZy4N Cj4gLSBSZXBsZW5pc2ggdGhlIFJ4IGRlc2NyaXB0b3JzIHdpdGggdGhlIHJlY3ljbGluZyAqcnRl X21idWYqIG1idWZzIGZyZWVkIGZyb20NCj4gdGhlIFR4IG1idWYgcmluZy4NCj4gDQo+IFN1Z2dl c3RlZC1ieTogSG9ubmFwcGEgTmFnYXJhaGFsbGkgPGhvbm5hcHBhLm5hZ2FyYWhhbGxpQGFybS5j b20+DQo+IFN1Z2dlc3RlZC1ieTogUnVpZmVuZyBXYW5nIDxydWlmZW5nLndhbmdAYXJtLmNvbT4N Cj4gU2lnbmVkLW9mZi1ieTogRmVpZmVpIFdhbmcgPGZlaWZlaS53YW5nMkBhcm0uY29tPg0KPiBS ZXZpZXdlZC1ieTogUnVpZmVuZyBXYW5nIDxydWlmZW5nLndhbmdAYXJtLmNvbT4NCj4gUmV2aWV3 ZWQtYnk6IEhvbm5hcHBhIE5hZ2FyYWhhbGxpIDxob25uYXBwYS5uYWdhcmFoYWxsaUBhcm0uY29t Pg0KPiBBY2tlZC1ieTogTW9ydGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbT4N Cj4gLS0tDQo+ICBkb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIzXzExLnJzdCB8ICAxNSAr Kw0KPiAgbGliL2V0aGRldi9ldGhkZXZfZHJpdmVyLmggICAgICAgICAgICAgfCAgMTAgKysNCj4g IGxpYi9ldGhkZXYvZXRoZGV2X3ByaXZhdGUuYyAgICAgICAgICAgIHwgICAyICsNCj4gIGxpYi9l dGhkZXYvcnRlX2V0aGRldi5jICAgICAgICAgICAgICAgIHwgIDMxICsrKysrDQo+ICBsaWIvZXRo ZGV2L3J0ZV9ldGhkZXYuaCAgICAgICAgICAgICAgICB8IDE4MSArKysrKysrKysrKysrKysrKysr KysrKysrDQo+ICBsaWIvZXRoZGV2L3J0ZV9ldGhkZXZfY29yZS5oICAgICAgICAgICB8ICAyMyAr KystDQo+ICBsaWIvZXRoZGV2L3ZlcnNpb24ubWFwICAgICAgICAgICAgICAgICB8ICAgMyArDQo+ ICA3IGZpbGVzIGNoYW5nZWQsIDI1OSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQ0KPiAN Cj4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjNfMTEucnN0DQo+ IGIvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yM18xMS5yc3QNCj4gaW5kZXggNDQxMWJi MzJjMS4uMDJlZTM4NjdhMCAxMDA2NDQNCj4gLS0tIGEvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVs ZWFzZV8yM18xMS5yc3QNCj4gKysrIGIvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yM18x MS5yc3QNCj4gQEAgLTcyLDYgKzcyLDEzIEBAIE5ldyBGZWF0dXJlcw0KPiAgICAgICBBbHNvLCBt YWtlIHN1cmUgdG8gc3RhcnQgdGhlIGFjdHVhbCB0ZXh0IGF0IHRoZSBtYXJnaW4uDQo+ICAgICAg ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Cj4gDQo+ICsqICoqQWRkIG1idWZzIHJlY3ljbGluZyBzdXBwb3J0LioqDQo+ICsNCj4gKyAgQWRk ZWQgYGBydGVfZXRoX3JlY3ljbGVfcnhfcXVldWVfaW5mb19nZXRgYCBhbmQNCj4gKyBgYHJ0ZV9l dGhfcmVjeWNsZV9tYnVmc2BgICBBUElzIHdoaWNoIGFsbG93IHRoZSB1c2VyIHRvIGNvcHkgdXNl ZA0KPiArIG1idWZzIGZyb20gdGhlIFR4IG1idWYgcmluZyAgaW50byB0aGUgUnggbWJ1ZiByaW5n LiBUaGlzIGZlYXR1cmUNCj4gKyBzdXBwb3J0cyB0aGUgY2FzZSB0aGF0IHRoZSBSeCBFdGhlcm5l dCAgZGV2aWNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZQ0KPiArIFR4IEV0aGVybmV0IGRldmljZSB3 aXRoIHJlc3BlY3RpdmUgZHJpdmVyICBjYWxsYmFjayBmdW5jdGlvbnMgaW4NCj4gYGBydGVfZXRo X3JlY3ljbGVfbWJ1ZnNgYC4NCj4gDQo+ICBSZW1vdmVkIEl0ZW1zDQo+ICAtLS0tLS0tLS0tLS0t DQo+IEBAIC0xMjMsNiArMTMwLDE0IEBAIEFCSSBDaGFuZ2VzDQo+ICAgICBBbHNvLCBtYWtlIHN1 cmUgdG8gc3RhcnQgdGhlIGFjdHVhbCB0ZXh0IGF0IHRoZSBtYXJnaW4uDQo+ICAgICA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+IA0KPiAr KiBldGhkZXY6IEFkZGVkIGBgcmVjeWNsZV90eF9tYnVmc19yZXVzZWBgIGFuZA0KPiArYGByZWN5 Y2xlX3J4X2Rlc2NyaXB0b3JzX3JlZmlsbGBgDQo+ICsgIGZpZWxkcyB0byBgYHJ0ZV9ldGhfZGV2 YGAgc3RydWN0dXJlLg0KPiArDQo+ICsqIGV0aGRldjogU3RydWN0dXJlIGBgcnRlX2V0aF9mcF9v cHNgYCB3YXMgYWZmZWN0ZWQgdG8gYWRkDQo+ICsgIGBgcmVjeWNsZV90eF9tYnVmc19yZXVzZWBg IGFuZCBgYHJlY3ljbGVfcnhfZGVzY3JpcHRvcnNfcmVmaWxsYGANCj4gKyAgZmllbGRzLCB0byBt b3ZlIGBgcnhxYGAgYW5kIGBgdHhxYGAgZmllbGRzLCB0byBjaGFuZ2UgdGhlIHNpemUgb2YNCj4g KyAgYGByZXNlcnZlZDFgYCBhbmQgYGByZXNlcnZlZDJgYCBmaWVsZHMuDQo+ICsNCj4gDQo+ICBL bm93biBJc3N1ZXMNCj4gIC0tLS0tLS0tLS0tLQ0KPiBkaWZmIC0tZ2l0IGEvbGliL2V0aGRldi9l dGhkZXZfZHJpdmVyLmggYi9saWIvZXRoZGV2L2V0aGRldl9kcml2ZXIuaCBpbmRleA0KPiA5ODBm ODM3YWI2Li5iMGM1NWE4NTIzIDEwMDY0NA0KPiAtLS0gYS9saWIvZXRoZGV2L2V0aGRldl9kcml2 ZXIuaA0KPiArKysgYi9saWIvZXRoZGV2L2V0aGRldl9kcml2ZXIuaA0KPiBAQCAtNTgsNiArNTgs MTAgQEAgc3RydWN0IHJ0ZV9ldGhfZGV2IHsNCj4gIAlldGhfcnhfZGVzY3JpcHRvcl9zdGF0dXNf dCByeF9kZXNjcmlwdG9yX3N0YXR1czsNCj4gIAkvKiogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhIFR4 IGRlc2NyaXB0b3IgKi8NCj4gIAlldGhfdHhfZGVzY3JpcHRvcl9zdGF0dXNfdCB0eF9kZXNjcmlw dG9yX3N0YXR1czsNCj4gKwkvKiogUG9pbnRlciB0byBQTUQgdHJhbnNtaXQgbWJ1ZnMgcmV1c2Ug ZnVuY3Rpb24gKi8NCj4gKwlldGhfcmVjeWNsZV90eF9tYnVmc19yZXVzZV90IHJlY3ljbGVfdHhf bWJ1ZnNfcmV1c2U7DQo+ICsJLyoqIFBvaW50ZXIgdG8gUE1EIHJlY2VpdmUgZGVzY3JpcHRvcnMg cmVmaWxsIGZ1bmN0aW9uICovDQo+ICsJZXRoX3JlY3ljbGVfcnhfZGVzY3JpcHRvcnNfcmVmaWxs X3QgcmVjeWNsZV9yeF9kZXNjcmlwdG9yc19yZWZpbGw7DQo+IA0KPiAgCS8qKg0KPiAgCSAqIERl dmljZSBkYXRhIHRoYXQgaXMgc2hhcmVkIGJldHdlZW4gcHJpbWFyeSBhbmQgc2Vjb25kYXJ5DQo+ IHByb2Nlc3NlcyBAQCAtNTA3LDYgKzUxMSwxMCBAQCB0eXBlZGVmIHZvaWQgKCpldGhfcnhxX2lu Zm9fZ2V0X3QpKHN0cnVjdA0KPiBydGVfZXRoX2RldiAqZGV2LCAgdHlwZWRlZiB2b2lkICgqZXRo X3R4cV9pbmZvX2dldF90KShzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gKmRldiwNCj4gIAl1aW50MTZf dCB0eF9xdWV1ZV9pZCwgc3RydWN0IHJ0ZV9ldGhfdHhxX2luZm8gKnFpbmZvKTsNCj4gDQo+ICt0 eXBlZGVmIHZvaWQgKCpldGhfcmVjeWNsZV9yeHFfaW5mb19nZXRfdCkoc3RydWN0IHJ0ZV9ldGhf ZGV2ICpkZXYsDQo+ICsJdWludDE2X3QgcnhfcXVldWVfaWQsDQo+ICsJc3RydWN0IHJ0ZV9ldGhf cmVjeWNsZV9yeHFfaW5mbyAqcmVjeWNsZV9yeHFfaW5mbyk7DQo+ICsNCj4gIHR5cGVkZWYgaW50 ICgqZXRoX2J1cnN0X21vZGVfZ2V0X3QpKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiAgCXVp bnQxNl90IHF1ZXVlX2lkLCBzdHJ1Y3QgcnRlX2V0aF9idXJzdF9tb2RlICptb2RlKTsNCj4gDQo+ IEBAIC0xMjUwLDYgKzEyNTgsOCBAQCBzdHJ1Y3QgZXRoX2Rldl9vcHMgew0KPiAgCWV0aF9yeHFf aW5mb19nZXRfdCAgICAgICAgIHJ4cV9pbmZvX2dldDsNCj4gIAkvKiogUmV0cmlldmUgVHggcXVl dWUgaW5mb3JtYXRpb24gKi8NCj4gIAlldGhfdHhxX2luZm9fZ2V0X3QgICAgICAgICB0eHFfaW5m b19nZXQ7DQo+ICsJLyoqIFJldHJpZXZlIG1idWZzIHJlY3ljbGUgUnggcXVldWUgaW5mb3JtYXRp b24gKi8NCj4gKwlldGhfcmVjeWNsZV9yeHFfaW5mb19nZXRfdCByZWN5Y2xlX3J4cV9pbmZvX2dl dDsNCj4gIAlldGhfYnVyc3RfbW9kZV9nZXRfdCAgICAgICByeF9idXJzdF9tb2RlX2dldDsgLyoq PCBHZXQgUnggYnVyc3QNCj4gbW9kZSAqLw0KPiAgCWV0aF9idXJzdF9tb2RlX2dldF90ICAgICAg IHR4X2J1cnN0X21vZGVfZ2V0OyAvKio8IEdldCBUeCBidXJzdA0KPiBtb2RlICovDQo+ICAJZXRo X2Z3X3ZlcnNpb25fZ2V0X3QgICAgICAgZndfdmVyc2lvbl9nZXQ7IC8qKjwgR2V0IGZpcm13YXJl IHZlcnNpb24NCj4gKi8NCj4gZGlmZiAtLWdpdCBhL2xpYi9ldGhkZXYvZXRoZGV2X3ByaXZhdGUu YyBiL2xpYi9ldGhkZXYvZXRoZGV2X3ByaXZhdGUuYyBpbmRleA0KPiAxNGVjOGM2Y2NmLi5mOGFi NjRmMTk1IDEwMDY0NA0KPiAtLS0gYS9saWIvZXRoZGV2L2V0aGRldl9wcml2YXRlLmMNCj4gKysr IGIvbGliL2V0aGRldi9ldGhkZXZfcHJpdmF0ZS5jDQo+IEBAIC0yNzcsNiArMjc3LDggQEAgZXRo X2Rldl9mcF9vcHNfc2V0dXAoc3RydWN0IHJ0ZV9ldGhfZnBfb3BzICpmcG8sDQo+ICAJZnBvLT5y eF9xdWV1ZV9jb3VudCA9IGRldi0+cnhfcXVldWVfY291bnQ7DQo+ICAJZnBvLT5yeF9kZXNjcmlw dG9yX3N0YXR1cyA9IGRldi0+cnhfZGVzY3JpcHRvcl9zdGF0dXM7DQo+ICAJZnBvLT50eF9kZXNj cmlwdG9yX3N0YXR1cyA9IGRldi0+dHhfZGVzY3JpcHRvcl9zdGF0dXM7DQo+ICsJZnBvLT5yZWN5 Y2xlX3R4X21idWZzX3JldXNlID0gZGV2LT5yZWN5Y2xlX3R4X21idWZzX3JldXNlOw0KPiArCWZw by0+cmVjeWNsZV9yeF9kZXNjcmlwdG9yc19yZWZpbGwgPQ0KPiArZGV2LT5yZWN5Y2xlX3J4X2Rl c2NyaXB0b3JzX3JlZmlsbDsNCj4gDQo+ICAJZnBvLT5yeHEuZGF0YSA9IGRldi0+ZGF0YS0+cnhf cXVldWVzOw0KPiAgCWZwby0+cnhxLmNsYmsgPSAodm9pZCAqKikodWludHB0cl90KWRldi0+cG9z dF9yeF9idXJzdF9jYnM7DQo+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyBi L2xpYi9ldGhkZXYvcnRlX2V0aGRldi5jIGluZGV4DQo+IDA4NDBkMmI1OTQuLmVhODlhMTAxYTEg MTAwNjQ0DQo+IC0tLSBhL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5jDQo+ICsrKyBiL2xpYi9ldGhk ZXYvcnRlX2V0aGRldi5jDQo+IEBAIC01ODc2LDYgKzU4NzYsMzcgQEAgcnRlX2V0aF90eF9xdWV1 ZV9pbmZvX2dldCh1aW50MTZfdCBwb3J0X2lkLA0KPiB1aW50MTZfdCBxdWV1ZV9pZCwNCj4gIAly ZXR1cm4gMDsNCj4gIH0NCj4gDQo+ICtpbnQNCj4gK3J0ZV9ldGhfcmVjeWNsZV9yeF9xdWV1ZV9p bmZvX2dldCh1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZfdCBxdWV1ZV9pZCwNCj4gKwkJc3RydWN0 IHJ0ZV9ldGhfcmVjeWNsZV9yeHFfaW5mbyAqcmVjeWNsZV9yeHFfaW5mbykgew0KPiArCXN0cnVj dCBydGVfZXRoX2RldiAqZGV2Ow0KPiArDQo+ICsJUlRFX0VUSF9WQUxJRF9QT1JUSURfT1JfRVJS X1JFVChwb3J0X2lkLCAtRU5PREVWKTsNCj4gKwlkZXYgPSAmcnRlX2V0aF9kZXZpY2VzW3BvcnRf aWRdOw0KPiArDQo+ICsJaWYgKHF1ZXVlX2lkID49IGRldi0+ZGF0YS0+bmJfcnhfcXVldWVzKSB7 DQo+ICsJCVJURV9FVEhERVZfTE9HKEVSUiwgIkludmFsaWQgUnggcXVldWVfaWQ9JXVcbiIsDQo+ IHF1ZXVlX2lkKTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKGRl di0+ZGF0YS0+cnhfcXVldWVzID09IE5VTEwgfHwNCj4gKwkJCWRldi0+ZGF0YS0+cnhfcXVldWVz W3F1ZXVlX2lkXSA9PSBOVUxMKSB7DQo+ICsJCVJURV9FVEhERVZfTE9HKEVSUiwNCj4gKwkJCSAg ICJSeCBxdWV1ZSAlIlBSSXUxNiIgb2YgZGV2aWNlIHdpdGggcG9ydF9pZD0lIg0KPiArCQkJICAg UFJJdTE2IiBoYXMgbm90IGJlZW4gc2V0dXBcbiIsDQo+ICsJCQkgICBxdWV1ZV9pZCwgcG9ydF9p ZCk7DQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArCX0NCj4gKw0KPiArCWlmICgqZGV2LT5kZXZf b3BzLT5yZWN5Y2xlX3J4cV9pbmZvX2dldCA9PSBOVUxMKQ0KPiArCQlyZXR1cm4gLUVOT1RTVVA7 DQo+ICsNCj4gKwlkZXYtPmRldl9vcHMtPnJlY3ljbGVfcnhxX2luZm9fZ2V0KGRldiwgcXVldWVf aWQsIHJlY3ljbGVfcnhxX2luZm8pOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4g IGludA0KPiAgcnRlX2V0aF9yeF9idXJzdF9tb2RlX2dldCh1aW50MTZfdCBwb3J0X2lkLCB1aW50 MTZfdCBxdWV1ZV9pZCwNCj4gIAkJCSAgc3RydWN0IHJ0ZV9ldGhfYnVyc3RfbW9kZSAqbW9kZSkN Cj4gZGlmZiAtLWdpdCBhL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5oIGIvbGliL2V0aGRldi9ydGVf ZXRoZGV2LmggaW5kZXgNCj4gMDRhMjU2NGYyMi4uOWRjNTc0OWQ4MyAxMDA2NDQNCj4gLS0tIGEv bGliL2V0aGRldi9ydGVfZXRoZGV2LmgNCj4gKysrIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmgN Cj4gQEAgLTE4MjAsNiArMTgyMCwzMCBAQCBzdHJ1Y3QgcnRlX2V0aF90eHFfaW5mbyB7DQo+ICAJ dWludDhfdCBxdWV1ZV9zdGF0ZTsgICAgICAgIC8qKjwgb25lIG9mIFJURV9FVEhfUVVFVUVfU1RB VEVfKi4gKi8NCj4gIH0gX19ydGVfY2FjaGVfbWluX2FsaWduZWQ7DQo+IA0KPiArLyoqDQo+ICsg KiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIHN0cnVjdHVyZSBtYXkgY2hh bmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlLg0KPiArICoNCj4gKyAqIEV0aGVybmV0IGRldmljZSBS eCBxdWV1ZSBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUgZm9yIHJlY3ljbGluZyBtYnVmcy4NCj4gKyAq IFVzZWQgdG8gcmV0cmlldmUgUnggcXVldWUgaW5mb3JtYXRpb24gd2hlbiBUeCBxdWV1ZSByZXVz aW5nIG1idWZzDQo+ICthbmQgbW92aW5nDQo+ICsgKiB0aGVtIGludG8gUnggbWJ1ZiByaW5nLg0K PiArICovDQo+ICtzdHJ1Y3QgcnRlX2V0aF9yZWN5Y2xlX3J4cV9pbmZvIHsNCj4gKwlzdHJ1Y3Qg cnRlX21idWYgKiptYnVmX3Jpbmc7IC8qKjwgbWJ1ZiByaW5nIG9mIFJ4IHF1ZXVlLiAqLw0KPiAr CXN0cnVjdCBydGVfbWVtcG9vbCAqbXA7ICAgICAvKio8IG1lbXBvb2wgb2YgUnggcXVldWUuICov DQo+ICsJdWludDE2X3QgKnJlZmlsbF9oZWFkOyAgICAgIC8qKjwgaGVhZCBvZiBSeCBxdWV1ZSBy ZWZpbGxpbmcgbWJ1ZnMuICovDQo+ICsJdWludDE2X3QgKnJlY2VpdmVfdGFpbDsgICAgIC8qKjwg dGFpbCBvZiBSeCBxdWV1ZSByZWNlaXZpbmcgcGt0cy4gKi8NCj4gKwl1aW50MTZfdCBtYnVmX3Jp bmdfc2l6ZTsgICAgIC8qKjwgY29uZmlndXJlZCBudW1iZXIgb2YgbWJ1ZiByaW5nIHNpemUuDQo+ ICovDQo+ICsJLyoqDQo+ICsJICogUmVxdWlyZW1lbnQgb24gbWJ1ZiByZWZpbGxpbmcgYmF0Y2gg c2l6ZSBvZiBSeCBtYnVmIHJpbmcuDQo+ICsJICogRm9yIHNvbWUgUE1EIGRyaXZlcnMsIHRoZSBu dW1iZXIgb2YgUnggbWJ1ZiByaW5nIHJlZmlsbGluZyBtYnVmcw0KPiArCSAqIHNob3VsZCBiZSBh bGlnbmVkIHdpdGggbWJ1ZiByaW5nIHNpemUsIGluIG9yZGVyIHRvIHNpbXBsaWZ5DQo+ICsJICog cmluZyB3cmFwcGluZyBhcm91bmQuDQo+ICsJICogVmFsdWUgMCBtZWFucyB0aGF0IFBNRCBkcml2 ZXJzIGhhdmUgbm8gcmVxdWlyZW1lbnQgZm9yIHRoaXMuDQo+ICsJICovDQo+ICsJdWludDE2X3Qg cmVmaWxsX3JlcXVpcmVtZW50Ow0KPiArfSBfX3J0ZV9jYWNoZV9taW5fYWxpZ25lZDsNCj4gKw0K PiAgLyogR2VuZXJpYyBCdXJzdCBtb2RlIGZsYWcgZGVmaW5pdGlvbiwgdmFsdWVzIGNhbiBiZSBP UmVkLiAqLw0KPiANCj4gIC8qKg0KPiBAQCAtNDg1Myw2ICs0ODc3LDMxIEBAIGludCBydGVfZXRo X3J4X3F1ZXVlX2luZm9fZ2V0KHVpbnQxNl90IHBvcnRfaWQsDQo+IHVpbnQxNl90IHF1ZXVlX2lk LCAgaW50IHJ0ZV9ldGhfdHhfcXVldWVfaW5mb19nZXQodWludDE2X3QgcG9ydF9pZCwgdWludDE2 X3QNCj4gcXVldWVfaWQsDQo+ICAJc3RydWN0IHJ0ZV9ldGhfdHhxX2luZm8gKnFpbmZvKTsNCj4g DQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJ IG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92ZWQsIHdpdGhvdXQgcHJpb3INCj4gK25vdGljZQ0KPiAr ICoNCj4gKyAqIFJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IGdpdmVuIHBvcnRzJ3MgUnggcXVl dWUgZm9yIHJlY3ljbGluZyBtYnVmcy4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gcG9ydF9pZA0KPiAr ICogICBUaGUgcG9ydCBpZGVudGlmaWVyIG9mIHRoZSBFdGhlcm5ldCBkZXZpY2UuDQo+ICsgKiBA cGFyYW0gcXVldWVfaWQNCj4gKyAqICAgVGhlIFJ4IHF1ZXVlIG9uIHRoZSBFdGhlcm5ldCBkZXZp Y2Vmb3Igd2hpY2ggaW5mb3JtYXRpb24NCj4gKyAqICAgd2lsbCBiZSByZXRyaWV2ZWQuDQo+ICsg KiBAcGFyYW0gcmVjeWNsZV9yeHFfaW5mbw0KPiArICogICBBIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1 cmUgb2YgdHlwZSAqcnRlX2V0aF9yZWN5Y2xlX3J4cV9pbmZvKiB0byBiZSBmaWxsZWQuDQo+ICsg Kg0KPiArICogQHJldHVybg0KPiArICogICAtIDA6IFN1Y2Nlc3MNCj4gKyAqICAgLSAtRU5PREVW OiAgSWYgKnBvcnRfaWQqIGlzIGludmFsaWQuDQo+ICsgKiAgIC0gLUVOT1RTVVA6IHJvdXRpbmUg aXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlIFBNRC4NCj4gKyAqICAgLSAtRUlOVkFMOiAg VGhlIHF1ZXVlX2lkIGlzIG91dCBvZiByYW5nZS4NCj4gKyAqLw0KPiArX19ydGVfZXhwZXJpbWVu dGFsDQo+ICtpbnQgcnRlX2V0aF9yZWN5Y2xlX3J4X3F1ZXVlX2luZm9fZ2V0KHVpbnQxNl90IHBv cnRfaWQsDQo+ICsJCXVpbnQxNl90IHF1ZXVlX2lkLA0KPiArCQlzdHJ1Y3QgcnRlX2V0aF9yZWN5 Y2xlX3J4cV9pbmZvICpyZWN5Y2xlX3J4cV9pbmZvKTsNCj4gKw0KPiAgLyoqDQo+ICAgKiBSZXRy aWV2ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgUnggcGFja2V0IGJ1cnN0IG1vZGUuDQo+ICAgKg0K PiBAQCAtNjUyNyw2ICs2NTc2LDEzOCBAQCBydGVfZXRoX3R4X2J1ZmZlcih1aW50MTZfdCBwb3J0 X2lkLCB1aW50MTZfdA0KPiBxdWV1ZV9pZCwNCj4gIAlyZXR1cm4gcnRlX2V0aF90eF9idWZmZXJf Zmx1c2gocG9ydF9pZCwgcXVldWVfaWQsIGJ1ZmZlcik7ICB9DQo+IA0KPiArLyoqDQo+ICsgKiBA d2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlLCBvciBi ZSByZW1vdmVkLCB3aXRob3V0IHByaW9yDQo+ICtub3RpY2UNCj4gKyAqDQo+ICsgKiBSZWN5Y2xl IHVzZWQgbWJ1ZnMgZnJvbSBhIHRyYW5zbWl0IHF1ZXVlIG9mIGFuIEV0aGVybmV0IGRldmljZSwg YW5kDQo+ICttb3ZlDQo+ICsgKiB0aGVzZSBtYnVmcyBpbnRvIGEgbWJ1ZiByaW5nIGZvciBhIHJl Y2VpdmUgcXVldWUgb2YgYW4gRXRoZXJuZXQgZGV2aWNlLg0KPiArICogVGhpcyBjYW4gYnlwYXNz IG1lbXBvb2wgcGF0aCB0byBzYXZlIENQVSBjeWNsZXMuDQo+ICsgKg0KPiArICogVGhlIHJ0ZV9l dGhfcmVjeWNsZV9tYnVmcygpIGZ1bmN0aW9uIGxvb3BzLCB3aXRoIHJ0ZV9ldGhfcnhfYnVyc3Qo KQ0KPiArYW5kDQo+ICsgKiBydGVfZXRoX3R4X2J1cnN0KCkgZnVuY3Rpb25zLCBmcmVlaW5nIFR4 IHVzZWQgbWJ1ZnMgYW5kIHJlcGxlbmlzaGluZw0KPiArUngNCj4gKyAqIGRlc2NyaXB0b3JzLiBU aGUgbnVtYmVyIG9mIHJlY3ljbGluZyBtYnVmcyBkZXBlbmRzIG9uIHRoZSByZXF1ZXN0IG9mDQo+ ICtSeCBtYnVmDQo+ICsgKiByaW5nLCB3aXRoIHRoZSBjb25zdHJhaW50IG9mIGVub3VnaCB1c2Vk IG1idWZzIGZyb20gVHggbWJ1ZiByaW5nLg0KPiArICoNCj4gKyAqIEZvciBlYWNoIHJlY3ljbGlu ZyBtYnVmcywgdGhlIHJ0ZV9ldGhfcmVjeWNsZV9tYnVmcygpIGZ1bmN0aW9uDQo+ICtwZXJmb3Jt cyB0aGUNCj4gKyAqIGZvbGxvd2luZyBvcGVyYXRpb25zOg0KPiArICoNCj4gKyAqIC0gQ29weSB1 c2VkICpydGVfbWJ1ZiogYnVmZmVyIHBvaW50ZXJzIGZyb20gVHggbWJ1ZiByaW5nIGludG8gUngg bWJ1Zg0KPiByaW5nLg0KPiArICoNCj4gKyAqIC0gUmVwbGVuaXNoIHRoZSBSeCBkZXNjcmlwdG9y cyB3aXRoIHRoZSByZWN5Y2xpbmcgKnJ0ZV9tYnVmKiBtYnVmcyBmcmVlZA0KPiArICogICBmcm9t IHRoZSBUeCBtYnVmIHJpbmcuDQo+ICsgKg0KPiArICogVGhpcyBmdW5jdGlvbiBzcGlsdHMgUngg YW5kIFR4IHBhdGggd2l0aCBkaWZmZXJlbnQgY2FsbGJhY2sNCj4gK2Z1bmN0aW9ucy4gVGhlDQo+ ICsgKiBjYWxsYmFjayBmdW5jdGlvbiByZWN5Y2xlX3R4X21idWZzX3JldXNlIGlzIGZvciBUeCBk cml2ZXIuIFRoZQ0KPiArY2FsbGJhY2sNCj4gKyAqIGZ1bmN0aW9uIHJlY3ljbGVfcnhfZGVzY3Jp cHRvcnNfcmVmaWxsIGlzIGZvciBSeCBkcml2ZXIuDQo+ICtydGVfZXRoX3JlY3ljbGVfbWJ1ZnMo KQ0KPiArICogY2FuIHN1cHBvcnQgdGhlIGNhc2UgdGhhdCBSeCBFdGhlcm5ldCBkZXZpY2UgaXMg ZGlmZmVyZW50IGZyb20gVHggRXRoZXJuZXQNCj4gZGV2aWNlLg0KPiArICoNCj4gKyAqIEl0IGlz IHRoZSByZXNwb25zaWJpbGl0eSBvZiB1c2VycyB0byBzZWxlY3QgdGhlIFJ4L1R4IHF1ZXVlIHBh aXIgdG8NCj4gK3JlY3ljbGUNCj4gKyAqIG1idWZzLiBCZWZvcmUgY2FsbCB0aGlzIGZ1bmN0aW9u LCB1c2VycyBtdXN0IGNhbGwNCj4gK3J0ZV9ldGhfcmVjeWNsZV9yeHFfaW5mb19nZXQNCj4gKyAq IGZ1bmN0aW9uIHRvIHJldHJpZXZlIHNlbGVjdGVkIFJ4IHF1ZXVlIGluZm9ybWF0aW9uLg0KPiAr ICogQHNlZSBydGVfZXRoX3JlY3ljbGVfcnhxX2luZm9fZ2V0LCBzdHJ1Y3QgcnRlX2V0aF9yZWN5 Y2xlX3J4cV9pbmZvDQo+ICsgKg0KPiArICogQ3VycmVudGx5LCB0aGUgcnRlX2V0aF9yZWN5Y2xl X21idWZzKCkgZnVuY3Rpb24gY2FuIHN1cHBvcnQgdG8gZmVlZA0KPiArMSBSeCBxdWV1ZSBmcm9t DQo+ICsgKiAyIFR4IHF1ZXVlcyBpbiB0aGUgc2FtZSB0aHJlYWQuIERvIG5vdCBwYWlyIHRoZSBS eCBxdWV1ZSBhbmQgVHgNCj4gK3F1ZXVlIGluIGRpZmZlcmVudA0KPiArICogdGhyZWFkcywgaW4g b3JkZXIgdG8gYXZvaWQgbWVtb3J5IGVycm9yIHJld3JpdGluZy4NCj4gKyAqDQo+ICsgKiBAcGFy YW0gcnhfcG9ydF9pZA0KPiArICogICBQb3J0IGlkZW50aWZ5aW5nIHRoZSByZWNlaXZlIHNpZGUu DQo+ICsgKiBAcGFyYW0gcnhfcXVldWVfaWQNCj4gKyAqICAgVGhlIGluZGV4IG9mIHRoZSByZWNl aXZlIHF1ZXVlIGlkZW50aWZ5aW5nIHRoZSByZWNlaXZlIHNpZGUuDQo+ICsgKiAgIFRoZSB2YWx1 ZSBtdXN0IGJlIGluIHRoZSByYW5nZSBbMCwgbmJfcnhfcXVldWUgLSAxXSBwcmV2aW91c2x5IHN1 cHBsaWVkDQo+ICsgKiAgIHRvIHJ0ZV9ldGhfZGV2X2NvbmZpZ3VyZSgpLg0KPiArICogQHBhcmFt IHR4X3BvcnRfaWQNCj4gKyAqICAgUG9ydCBpZGVudGlmeWluZyB0aGUgdHJhbnNtaXQgc2lkZS4N Cj4gKyAqIEBwYXJhbSB0eF9xdWV1ZV9pZA0KPiArICogICBUaGUgaW5kZXggb2YgdGhlIHRyYW5z bWl0IHF1ZXVlIGlkZW50aWZ5aW5nIHRoZSB0cmFuc21pdCBzaWRlLg0KPiArICogICBUaGUgdmFs dWUgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWzAsIG5iX3R4X3F1ZXVlIC0gMV0gcHJldmlvdXNseSBz dXBwbGllZA0KPiArICogICB0byBydGVfZXRoX2Rldl9jb25maWd1cmUoKS4NCj4gKyAqIEBwYXJh bSByZWN5Y2xlX3J4cV9pbmZvDQo+ICsgKiAgIEEgcG9pbnRlciB0byBhIHN0cnVjdHVyZSBvZiB0 eXBlICpydGVfZXRoX3JlY3ljbGVfcnhxX2luZm8qIHdoaWNoIGNvbnRhaW5zDQo+ICsgKiAgIHRo ZSBpbmZvcm1hdGlvbiBvZiB0aGUgUnggcXVldWUgbWJ1ZiByaW5nLg0KPiArICogQHJldHVybg0K PiArICogICBUaGUgbnVtYmVyIG9mIHJlY3ljbGluZyBtYnVmcy4NCj4gKyAqLw0KPiArX19ydGVf ZXhwZXJpbWVudGFsDQo+ICtzdGF0aWMgaW5saW5lIHVpbnQxNl90DQo+ICtydGVfZXRoX3JlY3lj bGVfbWJ1ZnModWludDE2X3QgcnhfcG9ydF9pZCwgdWludDE2X3QgcnhfcXVldWVfaWQsDQo+ICsJ CXVpbnQxNl90IHR4X3BvcnRfaWQsIHVpbnQxNl90IHR4X3F1ZXVlX2lkLA0KPiArCQlzdHJ1Y3Qg cnRlX2V0aF9yZWN5Y2xlX3J4cV9pbmZvICpyZWN5Y2xlX3J4cV9pbmZvKSB7DQo+ICsJc3RydWN0 IHJ0ZV9ldGhfZnBfb3BzICpwOw0KPiArCXZvaWQgKnFkOw0KPiArCXVpbnQxNl90IG5iX21idWZz Ow0KPiArDQo+ICsjaWZkZWYgUlRFX0VUSERFVl9ERUJVR19UWA0KPiArCWlmICh0eF9wb3J0X2lk ID49IFJURV9NQVhfRVRIUE9SVFMgfHwNCj4gKwkJCXR4X3F1ZXVlX2lkID49IFJURV9NQVhfUVVF VUVTX1BFUl9QT1JUKSB7DQo+ICsJCVJURV9FVEhERVZfTE9HKEVSUiwNCj4gKwkJCQkiSW52YWxp ZCB0eF9wb3J0X2lkPSV1IG9yDQo+IHR4X3F1ZXVlX2lkPSV1XG4iLA0KPiArCQkJCXR4X3BvcnRf aWQsIHR4X3F1ZXVlX2lkKTsNCj4gKwkJcmV0dXJuIDA7DQo+ICsJfQ0KPiArI2VuZGlmDQo+ICsN Cj4gKwkvKiBmZXRjaCBwb2ludGVyIHRvIHF1ZXVlIGRhdGEgKi8NCj4gKwlwID0gJnJ0ZV9ldGhf ZnBfb3BzW3R4X3BvcnRfaWRdOw0KPiArCXFkID0gcC0+dHhxLmRhdGFbdHhfcXVldWVfaWRdOw0K PiArDQo+ICsjaWZkZWYgUlRFX0VUSERFVl9ERUJVR19UWA0KPiArCVJURV9FVEhfVkFMSURfUE9S VElEX09SX0VSUl9SRVQodHhfcG9ydF9pZCwgMCk7DQo+ICsNCj4gKwlpZiAocWQgPT0gTlVMTCkg ew0KPiArCQlSVEVfRVRIREVWX0xPRyhFUlIsICJJbnZhbGlkIFR4IHF1ZXVlX2lkPSV1IGZvcg0K PiBwb3J0X2lkPSV1XG4iLA0KPiArCQkJCXR4X3F1ZXVlX2lkLCB0eF9wb3J0X2lkKTsNCj4gKwkJ cmV0dXJuIDA7DQo+ICsJfQ0KPiArI2VuZGlmDQo+ICsJaWYgKHAtPnJlY3ljbGVfdHhfbWJ1ZnNf cmV1c2UgPT0gTlVMTCkNCj4gKwkJcmV0dXJuIDA7DQo+ICsNCj4gKwkvKiBDb3B5IHVzZWQgKnJ0 ZV9tYnVmKiBidWZmZXIgcG9pbnRlcnMgZnJvbSBUeCBtYnVmIHJpbmcNCj4gKwkgKiBpbnRvIFJ4 IG1idWYgcmluZy4NCj4gKwkgKi8NCj4gKwluYl9tYnVmcyA9IHAtPnJlY3ljbGVfdHhfbWJ1ZnNf cmV1c2UocWQsIHJlY3ljbGVfcnhxX2luZm8pOw0KPiArDQpbS29uc3RhbnRpbl0NCkl0IGlzIHBy b2JhYmx5IGJldHRlciB0byBkbyB0aGF0IGNhbGwgYWZ0ZXIgcnhfcG9ydF9pZCwgcnhfcXVldWVf aWQsIA0KZXRjLiBjaGVja3MuDQpPdGhlcndpc2Ugd2l0aCBzb21lIGVycm9ybmVvdXMgcGFyYW1z IHdlIGNhbiBnZXQgbWJ1ZnMsIGZyb20gVFhRLA0KJ3J4X3JlZmlsbCcgd291bGQgbm90IGhhcHBl biBhbmQgd2Ugd2lsbCByZXR1cm4gemVyby4NCldpdGggdGhhdCBpbiBwbGFjZToNCkFja2VkLWJ5 OiBLb25zdGFudGluIEFuYW55ZXYgPGtvbnN0YW50aW4udi5hbmFueWV2QHlhbmRleC5ydT4NCg0K DQpUaGFua3MgZm9yIHRoZSBjb21tZW50cywgSSB3aWxsIHB1dCBhbGwgY2hlY2sgYmVmb3JlIGZ1 bmN0aW9uIGNhbGwuDQoNCj4gKwkvKiBJZiBubyByZWN5Y2xpbmcgbWJ1ZnMsIHJldHVybiAwLiAq Lw0KPiArCWlmIChuYl9tYnVmcyA9PSAwKQ0KPiArCQlyZXR1cm4gMDsNCj4gKw0KPiArI2lmZGVm IFJURV9FVEhERVZfREVCVUdfUlgNCj4gKwlpZiAocnhfcG9ydF9pZCA+PSBSVEVfTUFYX0VUSFBP UlRTIHx8DQo+ICsJCQlyeF9xdWV1ZV9pZCA+PSBSVEVfTUFYX1FVRVVFU19QRVJfUE9SVCkgew0K PiArCQlSVEVfRVRIREVWX0xPRyhFUlIsICJJbnZhbGlkIHJ4X3BvcnRfaWQ9JXUgb3INCj4gcnhf cXVldWVfaWQ9JXVcbiIsDQo+ICsJCQkJcnhfcG9ydF9pZCwgcnhfcXVldWVfaWQpOw0KPiArCQly ZXR1cm4gMDsNCj4gKwl9DQo+ICsjZW5kaWYNCj4gKw0KPiArCS8qIGZldGNoIHBvaW50ZXIgdG8g cXVldWUgZGF0YSAqLw0KPiArCXAgPSAmcnRlX2V0aF9mcF9vcHNbcnhfcG9ydF9pZF07DQo+ICsJ cWQgPSBwLT5yeHEuZGF0YVtyeF9xdWV1ZV9pZF07DQo+ICsNCj4gKyNpZmRlZiBSVEVfRVRIREVW X0RFQlVHX1JYDQo+ICsJUlRFX0VUSF9WQUxJRF9QT1JUSURfT1JfRVJSX1JFVChyeF9wb3J0X2lk LCAwKTsNCj4gKw0KPiArCWlmIChxZCA9PSBOVUxMKSB7DQo+ICsJCVJURV9FVEhERVZfTE9HKEVS UiwgIkludmFsaWQgUnggcXVldWVfaWQ9JXUgZm9yDQo+IHBvcnRfaWQ9JXVcbiIsDQo+ICsJCQkJ cnhfcXVldWVfaWQsIHJ4X3BvcnRfaWQpOw0KPiArCQlyZXR1cm4gMDsNCj4gKwl9DQo+ICsjZW5k aWYNCj4gKw0KPiArCWlmIChwLT5yZWN5Y2xlX3J4X2Rlc2NyaXB0b3JzX3JlZmlsbCA9PSBOVUxM KQ0KPiArCQlyZXR1cm4gMDsNCj4gKw0KPiArCS8qIFJlcGxlbmlzaCB0aGUgUnggZGVzY3JpcHRv cnMgd2l0aCB0aGUgcmVjeWNsaW5nDQo+ICsJICogaW50byBSeCBtYnVmIHJpbmcuDQo+ICsJICov DQo+ICsJcC0+cmVjeWNsZV9yeF9kZXNjcmlwdG9yc19yZWZpbGwocWQsIG5iX21idWZzKTsNCj4g Kw0KPiArCXJldHVybiBuYl9tYnVmczsNCj4gK30NCj4gKw0KPiAgLyoqDQo+ICAgKiBAd2Fybmlu Zw0KPiAgICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJp b3Igbm90aWNlIGRpZmYgLS1naXQNCj4gYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXZfY29yZS5oIGIv bGliL2V0aGRldi9ydGVfZXRoZGV2X2NvcmUuaCBpbmRleA0KPiA0NmU5NzIxZTA3Li5hMjRhZDdh NmIyIDEwMDY0NA0KPiAtLS0gYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXZfY29yZS5oDQo+ICsrKyBi L2xpYi9ldGhkZXYvcnRlX2V0aGRldl9jb3JlLmgNCj4gQEAgLTU1LDYgKzU1LDEzIEBAIHR5cGVk ZWYgaW50ICgqZXRoX3J4X2Rlc2NyaXB0b3Jfc3RhdHVzX3QpKHZvaWQgKnJ4cSwNCj4gdWludDE2 X3Qgb2Zmc2V0KTsNCj4gIC8qKiBAaW50ZXJuYWwgQ2hlY2sgdGhlIHN0YXR1cyBvZiBhIFR4IGRl c2NyaXB0b3IgKi8gIHR5cGVkZWYgaW50DQo+ICgqZXRoX3R4X2Rlc2NyaXB0b3Jfc3RhdHVzX3Qp KHZvaWQgKnR4cSwgdWludDE2X3Qgb2Zmc2V0KTsNCj4gDQo+ICsvKiogQGludGVybmFsIENvcHkg dXNlZCBtYnVmcyBmcm9tIFR4IG1idWYgcmluZyBpbnRvIFJ4IG1idWYgcmluZyAqLw0KPiArdHlw ZWRlZiB1aW50MTZfdCAoKmV0aF9yZWN5Y2xlX3R4X21idWZzX3JldXNlX3QpKHZvaWQgKnR4cSwN Cj4gKwkJc3RydWN0IHJ0ZV9ldGhfcmVjeWNsZV9yeHFfaW5mbyAqcmVjeWNsZV9yeHFfaW5mbyk7 DQo+ICsNCj4gKy8qKiBAaW50ZXJuYWwgUmVmaWxsIFJ4IGRlc2NyaXB0b3JzIHdpdGggdGhlIHJl Y3ljbGluZyBtYnVmcyAqLyB0eXBlZGVmDQo+ICt2b2lkICgqZXRoX3JlY3ljbGVfcnhfZGVzY3Jp cHRvcnNfcmVmaWxsX3QpKHZvaWQgKnJ4cSwgdWludDE2X3QgbmIpOw0KPiArDQo+ICAvKioNCj4g ICAqIEBpbnRlcm5hbA0KPiAgICogU3RydWN0dXJlIHVzZWQgdG8gaG9sZCBvcGFxdWUgcG9pbnRl cnMgdG8gaW50ZXJuYWwgZXRoZGV2IFJ4L1R4IEBAIC0NCj4gODMsMTUgKzkwLDE3IEBAIHN0cnVj dCBydGVfZXRoX2ZwX29wcyB7DQo+ICAJICogUnggZmFzdC1wYXRoIGZ1bmN0aW9ucyBhbmQgcmVs YXRlZCBkYXRhLg0KPiAgCSAqIDY0LWJpdCBzeXN0ZW1zOiBvY2N1cGllcyBmaXJzdCA2NEIgbGlu ZQ0KPiAgCSAqLw0KPiArCS8qKiBSeCBxdWV1ZXMgZGF0YS4gKi8NCj4gKwlzdHJ1Y3QgcnRlX2V0 aGRldl9xZGF0YSByeHE7DQo+ICAJLyoqIFBNRCByZWNlaXZlIGZ1bmN0aW9uLiAqLw0KPiAgCWV0 aF9yeF9idXJzdF90IHJ4X3BrdF9idXJzdDsNCj4gIAkvKiogR2V0IHRoZSBudW1iZXIgb2YgdXNl ZCBSeCBkZXNjcmlwdG9ycy4gKi8NCj4gIAlldGhfcnhfcXVldWVfY291bnRfdCByeF9xdWV1ZV9j b3VudDsNCj4gIAkvKiogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhIFJ4IGRlc2NyaXB0b3IuICovDQo+ ICAJZXRoX3J4X2Rlc2NyaXB0b3Jfc3RhdHVzX3QgcnhfZGVzY3JpcHRvcl9zdGF0dXM7DQo+IC0J LyoqIFJ4IHF1ZXVlcyBkYXRhLiAqLw0KPiAtCXN0cnVjdCBydGVfZXRoZGV2X3FkYXRhIHJ4cTsN Cj4gLQl1aW50cHRyX3QgcmVzZXJ2ZWQxWzNdOw0KPiArCS8qKiBSZWZpbGwgUnggZGVzY3JpcHRv cnMgd2l0aCB0aGUgcmVjeWNsaW5nIG1idWZzLiAqLw0KPiArCWV0aF9yZWN5Y2xlX3J4X2Rlc2Ny aXB0b3JzX3JlZmlsbF90IHJlY3ljbGVfcnhfZGVzY3JpcHRvcnNfcmVmaWxsOw0KPiArCXVpbnRw dHJfdCByZXNlcnZlZDFbMl07DQo+ICAJLyoqQH0qLw0KPiANCj4gIAkvKipAeyovDQo+IEBAIC05 OSwxNSArMTA4LDE3IEBAIHN0cnVjdCBydGVfZXRoX2ZwX29wcyB7DQo+ICAJICogVHggZmFzdC1w YXRoIGZ1bmN0aW9ucyBhbmQgcmVsYXRlZCBkYXRhLg0KPiAgCSAqIDY0LWJpdCBzeXN0ZW1zOiBv Y2N1cGllcyBzZWNvbmQgNjRCIGxpbmUNCj4gIAkgKi8NCj4gKwkvKiogVHggcXVldWVzIGRhdGEu ICovDQo+ICsJc3RydWN0IHJ0ZV9ldGhkZXZfcWRhdGEgdHhxOw0KPiAgCS8qKiBQTUQgdHJhbnNt aXQgZnVuY3Rpb24uICovDQo+ICAJZXRoX3R4X2J1cnN0X3QgdHhfcGt0X2J1cnN0Ow0KPiAgCS8q KiBQTUQgdHJhbnNtaXQgcHJlcGFyZSBmdW5jdGlvbi4gKi8NCj4gIAlldGhfdHhfcHJlcF90IHR4 X3BrdF9wcmVwYXJlOw0KPiAgCS8qKiBDaGVjayB0aGUgc3RhdHVzIG9mIGEgVHggZGVzY3JpcHRv ci4gKi8NCj4gIAlldGhfdHhfZGVzY3JpcHRvcl9zdGF0dXNfdCB0eF9kZXNjcmlwdG9yX3N0YXR1 czsNCj4gLQkvKiogVHggcXVldWVzIGRhdGEuICovDQo+IC0Jc3RydWN0IHJ0ZV9ldGhkZXZfcWRh dGEgdHhxOw0KPiAtCXVpbnRwdHJfdCByZXNlcnZlZDJbM107DQo+ICsJLyoqIENvcHkgdXNlZCBt YnVmcyBmcm9tIFR4IG1idWYgcmluZyBpbnRvIFJ4LiAqLw0KPiArCWV0aF9yZWN5Y2xlX3R4X21i dWZzX3JldXNlX3QgcmVjeWNsZV90eF9tYnVmc19yZXVzZTsNCj4gKwl1aW50cHRyX3QgcmVzZXJ2 ZWQyWzJdOw0KPiAgCS8qKkB9Ki8NCj4gDQo+ICB9IF9fcnRlX2NhY2hlX2FsaWduZWQ7DQo+IGRp ZmYgLS1naXQgYS9saWIvZXRoZGV2L3ZlcnNpb24ubWFwIGIvbGliL2V0aGRldi92ZXJzaW9uLm1h cCBpbmRleA0KPiBiOTY1ZDZhYTUyLi5lZWMxNTlkZmRkIDEwMDY0NA0KPiAtLS0gYS9saWIvZXRo ZGV2L3ZlcnNpb24ubWFwDQo+ICsrKyBiL2xpYi9ldGhkZXYvdmVyc2lvbi5tYXANCj4gQEAgLTMx Miw2ICszMTIsOSBAQCBFWFBFUklNRU5UQUwgew0KPiAgCXJ0ZV9mbG93X2FzeW5jX2FjdGlvbl9s aXN0X2hhbmRsZV9xdWVyeV91cGRhdGU7DQo+ICAJcnRlX2Zsb3dfYXN5bmNfYWN0aW9uc191cGRh dGU7DQo+ICAJcnRlX2Zsb3dfcmVzdG9yZV9pbmZvX2R5bmZsYWc7DQo+ICsNCj4gKwkjIGFkZGVk IGluIDIzLjExDQo+ICsJcnRlX2V0aF9yZWN5Y2xlX3J4X3F1ZXVlX2luZm9fZ2V0Ow0KPiAgfTsN Cj4gDQo+ICBJTlRFUk5BTCB7DQo+IC0tDQo+IDIuMjUuMQ0KDQo=