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 40D50A034C; Mon, 8 Aug 2022 13:32:35 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2DDFC4067B; Mon, 8 Aug 2022 13:32:35 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2107.outbound.protection.outlook.com [40.107.223.107]) by mails.dpdk.org (Postfix) with ESMTP id CE2464014F for ; Mon, 8 Aug 2022 13:32:32 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EecWHAfeeNt1fJS2bvlgRgt1lmp4ehldR/IB5NNbMQMds7tGJbA9O4zESdcYng3QabJap+VZEgyLGyiUNP6feHFRcrPw5GCtUbj6DW4/mVFZXHnGIPjs3ODcOE8rhQMFGyGtZRWCG6QEVnbbOfdzGngJRfGEBCbkHKOUX0vxbIu4M58l4pkOeY2wnX0rWrx37i2heof4OteC4t1qrw6tpSonFLtJqmnip/Nd0UJ5lC1sS8YpNOj1+Nslr3911RSYcnJ/cGYx5E/+ZcgfaMxh5PAiT9Pc0xQP8iwsytcJA0Tt3TDhrqga8KF4aYukkRzjKk4VMdfIehe7i1XC44ciEg== 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=qfaEb6NZJSjMkGpo26euPFIkME3GqA0Q/Ey6V+Gx3YI=; b=Q5N8+a/LsWzBlxUcdunFW6brN9JBox8Clw0bBm6oxanaAW9jmIxK/hxHgo7W9igZ0zmEu292X69Ht5/MIOal2nMNEq4TUO5XJi05rionZ2ukjNba9Rr2sl+0aEFtssBN4Xq6wdt81AuQ/8aqMkYDWfGGyECsHepw/QvSZ+A50okWDZdY3mX4gMUvLSEAjaD+IX6gXrQ7SoBEdyIo9AfR/8aCDDGRMr9cXreKOqHcfeIh5Dd1br+bDPOXVAgG5FYq4V02+nVTwWH4XH4VTsvz2h+pBEwd9Aio8s+H8fpNv2wQ8w3rQxd7Q43ol2wg6gx7SdneyDO3AkO2hvbYYlgBrw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qfaEb6NZJSjMkGpo26euPFIkME3GqA0Q/Ey6V+Gx3YI=; b=q6zUgHhRyLjFBSML06U2/0H5tc/IdC3GWTh+Jgy0M++PD1IklFANGFx06kEIsh5WCBIssQLti2Gmm6LN8TnJyz73QOKzSVXMNi/47PiLZaTqWZdp9uwm63tyUcH6bmerRkrHNStqbWKeU/SsyOSI5K8bQi/C9NN93run2TUsoTw= Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by BY5PR13MB4519.namprd13.prod.outlook.com (2603:10b6:a03:1d5::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5525.8; Mon, 8 Aug 2022 11:32:31 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::402d:6abc:83a8:2431]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::402d:6abc:83a8:2431%5]) with mapi id 15.20.5525.009; Mon, 8 Aug 2022 11:32:31 +0000 From: Chaoyong He To: Andrew Rybchenko CC: Niklas Soderlund , "dev@dpdk.org" Subject: RE: [PATCH v5 07/12] net/nfp: add flower ctrl VNIC related logics Thread-Topic: [PATCH v5 07/12] net/nfp: add flower ctrl VNIC related logics Thread-Index: AQHYqJU9nf0jVmv1NUy1br3lf7tlGq2gRvkAgASajMA= Date: Mon, 8 Aug 2022 11:32:30 +0000 Message-ID: References: <1659681155-16525-1-git-send-email-chaoyong.he@corigine.com> <1659681155-16525-8-git-send-email-chaoyong.he@corigine.com> In-Reply-To: Accept-Language: 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=corigine.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1b6efff9-41cb-408b-3fb5-08da7931ae4b x-ms-traffictypediagnostic: BY5PR13MB4519:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: hQaZzbRZNA6SaYWDcvGCCWRBvln3n/+hDz/OIEI8n3cq5qyqaCw8uQT5/mov25OURBn8kIFvvgBISPFa/I6iqtVJfm28ci+Q7fU/FLMWLOeF75FWmRJts+AY0rw83pYriYaqWemZnao3RUF463IsgXVW5dPqCK6NlOwXRjtT3EhLRfoBMyFhyivRdtz7SBqHFzNjJ/NQupaIXqtJTjZAsBNof1eYw2aPKQJ1PeQl9oS8kA9fxQNvhRbGzAnnJfsTxWf0s5fNOgPoMaaqwcKuz3IxbzUVQuedv7sqy1UsTjLqqyLiaYkGlSzbbNEtxHOFnS8jmpwaGWc4H35ZQuwjed+n9XBrq4/FOxA5ENlqGkdZ+Zo/4jZQWg47p3M57zHcsOYOGcC4Qs10d0Hq8KZEBayKf7uc6WW+9ZcIhOL9novjsFAJIGgwgnGojzSfthlSVhE87qKAdweDhcDh6FC+Gl93l8RhQy8oA63KDf4C85CrYK1LA5t55lSKxKRpi7lc6/WM3xnj8FWzja2qefzdyY9wWU+4yBxg4jnZvlIFqC4hyNj6f/kMHVnETwP4707P8P2IigkKLCYn5OKSauoJQQBd2/SqUa6KeoGCai7q/ntW3eUGEXoPzId6KX23Y+CNreDuvOHapmC2hDckZh7bhVXVqZxQtbb6ogRLPlbXSqh57ncavQMNvcxcJZcXQ/G4ZOv7QeK7a1pTpv/WmhXrrBfy0gXDFb4XumAPhpK0c7qZzQNYPxVkdDRXXyxEzEM/16/NTbgijLjwh6QHikrebkYeXZejM7tsQoOrUTTUBlk= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(366004)(346002)(376002)(39840400004)(396003)(136003)(38100700002)(38070700005)(186003)(478600001)(26005)(66574015)(71200400001)(41300700001)(6506007)(9686003)(53546011)(7696005)(55016003)(86362001)(4326008)(8676002)(66446008)(66946007)(5660300002)(64756008)(66556008)(66476007)(76116006)(54906003)(6916009)(316002)(2906002)(122000001)(83380400001)(33656002)(44832011)(52536014)(30864003)(8936002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TDQvemRCTnFiOFVINW9pNjJNN01mbm1MR2djMjJwcGRJalg0TUFMUEY3dXdq?= =?utf-8?B?Q1BmL3AwM0ZOY1RXaENVVVRkTVh5cHFMRkZuOXZXanhEdkRiVzg2UE84V09U?= =?utf-8?B?cm9TTWZRVWZ1cHhROGgzdkp5UVhCcDEwYUFwalhjcUxiRnJPS1hQTUovSWV6?= =?utf-8?B?eVMwR1hnTnlEd0R4SkZsWithSllCTEpKaFN3OG5pS0tiS2hRb1hITVFDUUR6?= =?utf-8?B?Y2MzMW04VEs5cWppYUpHR2tXRkJvdERTQzVhSXExbzBlUUJNYXZuTnBVRk12?= =?utf-8?B?TWlQTThPOERmOTVra2txL3dUclNjRWV5U2hSdW1KV0xDeEhrR1hIbmJyRjZZ?= =?utf-8?B?T1BsOU02TW15OWg2dHZZc3pUNThhRDU4dkRnb2NGcnprU3NJeHV1RGdaeGxl?= =?utf-8?B?Z2d0MnFXSUJUeW80VHJxVyt3RzhGeXpLRGU3bHBuWXAySFV2dW1VQVduNEJi?= =?utf-8?B?allhL0pTcmlGdFVmMElBVXpPUENHWE9aTVV6QnpPZzlhOGN1aEFIaGFwY2VV?= =?utf-8?B?ODFkT3JkczBuV1JoK0t4TkdScUVsNjJXekhyblVTc2M0OXRrUlZKUTZmK1Nv?= =?utf-8?B?OC8vTDFad1pGSS9IQjVtd0lIRTA1YU1RNnhrbDN3Um5qSjNQVGZHV0hTWlVR?= =?utf-8?B?QVIxNUYvc0FnOTJ5aFJkRHk0dG1CNGw2N0xObTIxcmNmQlI0ZmpKL2E0YTJl?= =?utf-8?B?ZmhvZW9BbktYWGVleHZZdFZTaXh3N1BDNmRXQ2pVOUJrSk96YWQrTSs3bnVX?= =?utf-8?B?NjJSUUMyS2J4V0xnOHFDU3pkc3ZOSWVlVVZvd1ZRMExlclFubUdWMnJjV2Y1?= =?utf-8?B?b3BhQnpCTEVTazJsbDEwd0tKb29KRWVwR0VwUFJwSjBWaCtmWGFyZGdqamJp?= =?utf-8?B?bDFFMnhkQURuaHVITXFqeXprVFJ4VWRpOTgzRWJRU2VIRGpiQ05rNGRJRXN0?= =?utf-8?B?dDNHc2tGa1hTNGNtSjd6cStqc3IwTDY1MW11bUliNEZxbE9kVlBBR0F1Zlo3?= =?utf-8?B?N1REY29nNTJJMVpYOHNoTjFnSHFXc3kyNGN1aTlBQ3RvMlFzYW0vOUJJTW8x?= =?utf-8?B?eHJOT0JBSUlGaEUwWStLemVIY1BuWlIyY0R1Sm9TVU90SnhjNWYwZ3ZaeEll?= =?utf-8?B?NmkvZlJJa2szR0FLR2xwZzNMQndXZnIwbVhhRFZuclZmVVJqZ1BsbHVUUU9F?= =?utf-8?B?U1hSbFFVWEJNbzd4Y0k5bHpIbWE2ZkFNWDMydFpmUE5DMi9ZWTI2MGQ4Zita?= =?utf-8?B?ejZhY1hORDBmTDNvK1VRNDF5bnBzdFlFNTNiM1Mwd3BTMkRYVHNmd2dlN2ts?= =?utf-8?B?d05ub0lZMzBxazM5SjM2WUg4Qnh6QVQ3Y0pmRXhndlA0eEl0Y2ZmOEdJUWN2?= =?utf-8?B?cDBONEdrelhxK1lVV2VoTWQ2WEMrUXpHczB1Y1dWQjVIOEpRQWg1Vkkva0ZB?= =?utf-8?B?M25WdzdISjEvSlRuOUk5bDVvWTVTdnpUcGNFTDRMc2VBMERSOWlTanptakk0?= =?utf-8?B?WHF5VXNYbTdEV2VrdjljdVVERXFORURCZmVKMXMyR0VKZTZIOGRTRTdwQ0xW?= =?utf-8?B?d1NLWWpGck8yLy81UHlMRE1LTGlzczhIOU4xMEdhb0lOd2F0UWs1MEZCeXVG?= =?utf-8?B?Vm9JdmxOc01TSVpXZno2VXMwMWhpaVpIcFJzOEpBL1J6YkZnZ3lnWWZ1OE1M?= =?utf-8?B?ZXhZNktVd2gyUnFRYmRMNmZkSDYxdWdQMDl0N1c3NTZkOWlTditUSFBESkJW?= =?utf-8?B?aFdTVEk2R3NIa2NVTzYzOUJTS05jOVZ3WDdYVWc5eTZaYzNqUHRyNlFwaXh5?= =?utf-8?B?N3UrOUJGY3Y0WDFJTHh4NUE2ZThiOWhSYkszNDlqalE3UW9Lcnd6Zk8zUUln?= =?utf-8?B?UnQxQVJyU1hnVjJCSnJ0UnVHYkRtWDBmb0pzTVMrNGRsMVFvRGh5RytleU04?= =?utf-8?B?cEZlRW4ycVQ5c2hwcWl1T2NPYTk2NVYxZVFnRHBCb05HS0d0Z1Y5UlhqaXlo?= =?utf-8?B?NWU4dzFRd2lPenUxdGhYVXpIeUtPYjVjcjVFcFBMNkJEK3RxQng3bXlaZmw2?= =?utf-8?B?Vk5PNkNwTXluWUtQSEVZOXRuaCtBdDViL2Q2c0tiZXhPTTRWdDV4cUY4YU02?= =?utf-8?Q?JU8diUTd1dELIhy1ry0fAeEcU?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1b6efff9-41cb-408b-3fb5-08da7931ae4b X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Aug 2022 11:32:31.0247 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: fnNnv8/JnHAqTH2j7K5amyfA630Z3FfG9LEh3BFTpwzlA4l76T7lYNrsSzQx44d+0Mk8vrJrRpf89Y6SK4EeDynLRH0gJ6t8nkCfzhAnNL0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR13MB4519 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 PiBPbiA4LzUvMjIgMDk6MzIsIENoYW95b25nIEhlIHdyb3RlOg0KPiA+IFRoaXMgY29tbWl0IGFk ZHMgdGhlIHNldHVwL3N0YXJ0IGxvZ2ljIGZvciB0aGUgY3RybCB2TklDLiBUaGlzIHZOSUMNCj4g DQo+ICJUaGlzIGNvbW1pdCBhZGRzIiAtPiAiQWRkIg0KPiANCj4gPiBpcyB1c2VkIGJ5IHRoZSBQ TUQgYW5kIGZsb3dlciBmaXJtd2FyZSBhcyBhIGNvbW11bmljYXRpb24gY2hhbm5lbA0KPiA+IGJl dHdlZW4gZHJpdmVyIGFuZCBmaXJtd2FyZS4gSW4gdGhlIGNhc2Ugb2YgT1ZTIGl0IGlzIGFsc28g dXNlZCB0bw0KPiA+IGNvbW11bmljYXRlIGZsb3cgc3RhdGlzdGljcyBmcm9tIGhhcmR3YXJlIHRv IHRoZSBkcml2ZXIuDQo+ID4NCj4gPiBBIHJ0ZV9ldGggZGV2aWNlIGlzIG5vdCBleHBvc2VkIHRv IERQREsgZm9yIHRoaXMgdk5JQyBhcyBpdCBpcw0KPiA+IHN0cmljdGx5IHVzZWQgaW50ZXJuYWxs eSBieSBmbG93ZXIgbG9naWMuIFJ4IGFuZCBUeCBsb2dpYyB3aWxsIGJlDQo+ID4gYWRkZWQgbGF0 ZXIgZm9yIHRoaXMgdk5JQy4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IENoYW95b25nIEhlIDxj aGFveW9uZy5oZUBjb3JpZ2luZS5jb20+DQo+ID4gUmV2aWV3ZWQtYnk6IE5pa2xhcyBTw7ZkZXJs dW5kIDxuaWtsYXMuc29kZXJsdW5kQGNvcmlnaW5lLmNvbT4NCj4gPiAtLS0NCj4gPiAgIGRyaXZl cnMvbmV0L25mcC9mbG93ZXIvbmZwX2Zsb3dlci5jIHwgMzg1DQo+ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLQ0KPiA+ICAgZHJpdmVycy9uZXQvbmZwL2Zsb3dlci9uZnBfZmxv d2VyLmggfCAgIDYgKw0KPiA+ICAgMiBmaWxlcyBjaGFuZ2VkLCAzODggaW5zZXJ0aW9ucygrKSwg MyBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZnAvZmxv d2VyL25mcF9mbG93ZXIuYw0KPiA+IGIvZHJpdmVycy9uZXQvbmZwL2Zsb3dlci9uZnBfZmxvd2Vy LmMNCj4gPiBpbmRleCAyNDk4MDIwLi41MWRmNTA0IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMv bmV0L25mcC9mbG93ZXIvbmZwX2Zsb3dlci5jDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvbmZwL2Zs b3dlci9uZnBfZmxvd2VyLmMNCj4gPiBAQCAtMjYsNiArMjYsMTAgQEANCj4gPiAgICNkZWZpbmUg TUVNUE9PTF9DQUNIRV9TSVpFIDUxMg0KPiA+ICAgI2RlZmluZSBERUZBVUxUX0ZMQlVGX1NJWkUg OTIxNg0KPiA+DQo+ID4gKyNkZWZpbmUgQ1RSTF9WTklDX05CX0RFU0MgNjQNCj4gPiArI2RlZmlu ZSBDVFJMX1ZOSUNfUlhfRlJFRV9USFJFU0ggMzINCj4gPiArI2RlZmluZSBDVFJMX1ZOSUNfVFhf RlJFRV9USFJFU0ggMzINCj4gPiArDQo+ID4gICAvKg0KPiA+ICAgICogU2ltcGxlIGRldiBvcHMg ZnVuY3Rpb25zIGZvciB0aGUgZmxvd2VyIFBGLiBCZWNhdXNlIGEgcnRlX2RldmljZSBpcw0KPiBl eHBvc2VkDQo+ID4gICAgKiB0byBEUERLIHRoZSBmbG93ZXIgbG9naWMgYWxzbyBtYWtlcyB1c2Ug b2YgaGVscGVyIGZ1bmN0aW9ucyBsaWtlDQo+ID4gQEAgLTU0Myw2ICs1NDcsMzAyIEBADQo+ID4g ICAJcmV0dXJuIHJldDsNCj4gPiAgIH0NCj4gPg0KPiA+ICtzdGF0aWMgdm9pZA0KPiA+ICtuZnBf Zmxvd2VyX2NsZWFudXBfY3RybF92bmljKHN0cnVjdCBuZnBfbmV0X2h3ICpodykgew0KPiA+ICsJ dWludDMyX3QgaTsNCj4gPiArCXN0cnVjdCBuZnBfbmV0X3J4cSAqcnhxOw0KPiA+ICsJc3RydWN0 IG5mcF9uZXRfdHhxICp0eHE7DQo+ID4gKwlzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXY7DQo+ ID4gKw0KPiA+ICsJZXRoX2RldiA9IGh3LT5ldGhfZGV2Ow0KPiA+ICsNCj4gPiArCWZvciAoaSA9 IDA7IGkgPCBody0+bWF4X3R4X3F1ZXVlczsgaSsrKSB7DQo+ID4gKwkJdHhxID0gZXRoX2Rldi0+ ZGF0YS0+dHhfcXVldWVzW2ldOw0KPiA+ICsJCWlmICh0eHEpIHsNCj4gDQo+IENvbXBhcmUgdnMg TlVMTCBhcyB5b3UgZG8gaW4gb3RoZXIgY2FzZXMgYW5kIGFzIERQREsgY29kaW5nIHN0eWxlDQo+ IHJlY29tbWVuZHMuDQo+IA0KPiA+ICsJCQlydGVfZnJlZSh0eHEtPnR4YnVmcyk7DQo+ID4gKwkJ CXJ0ZV9ldGhfZG1hX3pvbmVfZnJlZShldGhfZGV2LCAiY3RybF90eF9yaW5nIiwgaSk7DQo+ID4g KwkJCXJ0ZV9mcmVlKHR4cSk7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWZvciAo aSA9IDA7IGkgPCBody0+bWF4X3J4X3F1ZXVlczsgaSsrKSB7DQo+ID4gKwkJcnhxID0gZXRoX2Rl di0+ZGF0YS0+cnhfcXVldWVzW2ldOw0KPiA+ICsJCWlmIChyeHEpIHsNCj4gDQo+IENvbXBhcmUg dnMgTlVMTA0KPiANCj4gPiArCQkJcnRlX2ZyZWUocnhxLT5yeGJ1ZnMpOw0KPiA+ICsJCQlydGVf ZXRoX2RtYV96b25lX2ZyZWUoZXRoX2RldiwgImN0cmxfcnhfcmluZyIsIGkpOw0KPiA+ICsJCQly dGVfZnJlZShyeHEpOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ID4gKwlydGVfZnJlZShl dGhfZGV2LT5kYXRhLT50eF9xdWV1ZXMpOw0KPiA+ICsJcnRlX2ZyZWUoZXRoX2Rldi0+ZGF0YS0+ cnhfcXVldWVzKTsNCj4gPiArCXJ0ZV9mcmVlKGV0aF9kZXYtPmRhdGEpOw0KPiA+ICsJcnRlX2Zy ZWUoZXRoX2Rldik7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArbmZwX2Zs b3dlcl9pbml0X2N0cmxfdm5pYyhzdHJ1Y3QgbmZwX25ldF9odyAqaHcpIHsNCj4gPiArCXVpbnQz Ml90IGk7DQo+ID4gKwlpbnQgcmV0ID0gMDsNCj4gPiArCXVpbnQxNl90IG5iX2Rlc2M7DQo+ID4g Kwl1bnNpZ25lZCBpbnQgbnVtYV9ub2RlOw0KPiA+ICsJc3RydWN0IHJ0ZV9tZW1wb29sICptcDsN Cj4gPiArCXVpbnQxNl90IHJ4X2ZyZWVfdGhyZXNoOw0KPiA+ICsJdWludDE2X3QgdHhfZnJlZV90 aHJlc2g7DQo+ID4gKwlzdHJ1Y3QgbmZwX25ldF9yeHEgKnJ4cTsNCj4gPiArCXN0cnVjdCBuZnBf bmV0X3R4cSAqdHhxOw0KPiA+ICsJc3RydWN0IG5mcF9wZl9kZXYgKnBmX2RldjsNCj4gPiArCXN0 cnVjdCBydGVfZXRoX2RldiAqZXRoX2RldjsNCj4gPiArCWNvbnN0IHN0cnVjdCBydGVfbWVtem9u ZSAqdHo7DQo+ID4gKwlzdHJ1Y3QgbmZwX2FwcF9mbG93ZXIgKmFwcF9mbG93ZXI7DQo+ID4gKw0K PiA+ICsJLyogSGFyZGNvZGVkIHZhbHVlcyBmb3Igbm93ICovDQo+ID4gKwluYl9kZXNjID0gQ1RS TF9WTklDX05CX0RFU0M7DQo+ID4gKwlyeF9mcmVlX3RocmVzaCA9IENUUkxfVk5JQ19SWF9GUkVF X1RIUkVTSDsNCj4gDQo+IFdoYXQncyB0aGUgcG9pbnQgdG8gaW50cm9kdWNlIHRoZSB2YXJpYWJs ZSBhbmQgdXNlIGl0IG9ubHkgb25jZSBiZWxvdz8NCj4gDQo+ID4gKwl0eF9mcmVlX3RocmVzaCA9 IENUUkxfVk5JQ19UWF9GUkVFX1RIUkVTSDsNCj4gDQo+IFNhbWUgaGVyZS4NCj4gDQo+ID4gKwlu dW1hX25vZGUgPSBydGVfc29ja2V0X2lkKCk7DQo+ID4gKw0KPiA+ICsJLyogU2V0IHVwIHNvbWUg cG9pbnRlcnMgaGVyZSBmb3IgZWFzZSBvZiB1c2UgKi8NCj4gPiArCXBmX2RldiA9IGh3LT5wZl9k ZXY7DQo+ID4gKwlhcHBfZmxvd2VyID0gTkZQX0FQUF9QUklWX1RPX0FQUF9GTE9XRVIocGZfZGV2 LT5hcHBfcHJpdik7DQo+ID4gKw0KPiA+ICsJcmV0ID0gbmZwX2Zsb3dlcl9pbml0X3ZuaWNfY29t bW9uKGh3LCAiY3RybF92bmljIik7DQo+ID4gKwlpZiAocmV0KQ0KPiANCj4gQ29tcGFyZSB2cyAw DQo+IA0KPiA+ICsJCWdvdG8gZG9uZTsNCj4gPiArDQo+ID4gKwkvKiBBbGxvY2F0ZSBtZW1vcnkg Zm9yIHRoZSBldGhfZGV2IG9mIHRoZSB2TklDICovDQo+ID4gKwlody0+ZXRoX2RldiA9IHJ0ZV96 bWFsbG9jKCJjdHJsX3ZuaWNfZXRoX2RldiIsDQo+IA0KPiBXaHkgbm90IHJ0ZV9ldGhfZGV2X2Fs bG9jYXRlKCk/IElzbid0IGFuIGV0aGRldj8NCj4gV2h5IGRvIHlvdSBieXBzc3MgZXRoZGV2IGxh eWVyIGluIHRoaXMgY2FzZSBjb21wbGV0ZWx5IGFuZCBkbyBldmVyeXRoaW5nDQo+IHlvdXJzZWxm Pw0KDQpIZXJlIHdlIGNyZWF0ZWQgYW4gZXRoZGV2IGxvY2FsbHkgdG8gbmZwIFBNRCwgd2Ugd2Fu dCB0aGUgdXNlciB0b3RhbGx5IHdvbid0IGJlIGF3YXJlIG9mIGl0Lg0KSWYgd2UgdXNlIHJ0ZV9l dGhfZGV2X2FsbG9jYXRlKCkgdG8gY3JlYXRlIGl0LCBpdCB3aWxsIGJlIGluIGFycmF5ICdydGVf ZXRoZGV2X2RldmljZXNbXScsIHRoYXQncyBub3Qgd2Ugd2FudC4NCg0KPiANCj4gPiArCQlzaXpl b2Yoc3RydWN0IHJ0ZV9ldGhfZGV2KSwgUlRFX0NBQ0hFX0xJTkVfU0laRSk7DQo+ID4gKwlpZiAo aHctPmV0aF9kZXYgPT0gTlVMTCkgew0KPiA+ICsJCXJldCA9IC1FTk9NRU07DQo+ID4gKwkJZ290 byBkb25lOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIEdyYWIgdGhlIHBvaW50ZXIgdG8gdGhl IG5ld2x5IGNyZWF0ZWQgcnRlX2V0aF9kZXYgaGVyZSAqLw0KPiA+ICsJZXRoX2RldiA9IGh3LT5l dGhfZGV2Ow0KPiA+ICsNCj4gPiArCS8qIEFsc28gYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgZGF0 YSBwYXJ0IG9mIHRoZSBldGhfZGV2ICovDQo+ID4gKwlldGhfZGV2LT5kYXRhID0gcnRlX3ptYWxs b2MoImN0cmxfdm5pY19ldGhfZGV2X2RhdGEiLA0KPiA+ICsJCXNpemVvZihzdHJ1Y3QgcnRlX2V0 aF9kZXZfZGF0YSksIFJURV9DQUNIRV9MSU5FX1NJWkUpOw0KPiA+ICsJaWYgKGV0aF9kZXYtPmRh dGEgPT0gTlVMTCkgew0KPiA+ICsJCXJldCA9IC1FTk9NRU07DQo+ID4gKwkJZ290byBldGhfZGV2 X2NsZWFudXA7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJZXRoX2Rldi0+ZGF0YS0+cnhfcXVldWVz ID0gcnRlX3ptYWxsb2MoImV0aGRldi0+cnhfcXVldWVzIiwNCj4gPiArCQlzaXplb2YoZXRoX2Rl di0+ZGF0YS0+cnhfcXVldWVzWzBdKSAqIGh3LQ0KPiA+bWF4X3J4X3F1ZXVlcywNCj4gPiArCQlS VEVfQ0FDSEVfTElORV9TSVpFKTsNCj4gPiArCWlmIChldGhfZGV2LT5kYXRhLT5yeF9xdWV1ZXMg PT0gTlVMTCkgew0KPiA+ICsJCVBNRF9JTklUX0xPRyhFUlIsICJydGVfem1hbGxvYyBmYWlsZWQg Zm9yIGN0cmwgdm5pYyByeA0KPiBxdWV1ZXMiKTsNCj4gPiArCQlyZXQgPSAtRU5PTUVNOw0KPiA+ ICsJCWdvdG8gZGV2X2RhdGFfY2xlYW51cDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlldGhfZGV2 LT5kYXRhLT50eF9xdWV1ZXMgPSBydGVfem1hbGxvYygiZXRoZGV2LT50eF9xdWV1ZXMiLA0KPiA+ ICsJCXNpemVvZihldGhfZGV2LT5kYXRhLT50eF9xdWV1ZXNbMF0pICogaHctDQo+ID5tYXhfdHhf cXVldWVzLA0KPiA+ICsJCVJURV9DQUNIRV9MSU5FX1NJWkUpOw0KPiA+ICsJaWYgKGV0aF9kZXYt PmRhdGEtPnR4X3F1ZXVlcyA9PSBOVUxMKSB7DQo+ID4gKwkJUE1EX0lOSVRfTE9HKEVSUiwgInJ0 ZV96bWFsbG9jIGZhaWxlZCBmb3IgY3RybCB2bmljIHR4DQo+IHF1ZXVlcyIpOw0KPiA+ICsJCXJl dCA9IC1FTk9NRU07DQo+ID4gKwkJZ290byByeF9xdWV1ZV9jbGVhbnVwOw0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCWV0aF9kZXYtPmRldmljZSA9ICZwZl9kZXYtPnBjaV9kZXYtPmRldmljZTsNCj4g PiArCWV0aF9kZXYtPmRhdGEtPm5iX3R4X3F1ZXVlcyA9IGh3LT5tYXhfdHhfcXVldWVzOw0KPiA+ ICsJZXRoX2Rldi0+ZGF0YS0+bmJfcnhfcXVldWVzID0gaHctPm1heF9yeF9xdWV1ZXM7DQo+ID4g KwlldGhfZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZSA9IGh3Ow0KPiA+ICsNCj4gPiArCS8qIENyZWF0 ZSBhIG1idWYgcG9vbCBmb3IgdGhlIHZOSUMgKi8NCj4gPiArCWFwcF9mbG93ZXItPmN0cmxfcGt0 bWJ1Zl9wb29sID0NCj4gcnRlX3BrdG1idWZfcG9vbF9jcmVhdGUoImN0cmxfbWJ1Zl9wb29sIiwN Cj4gPiArCQk0ICogbmJfZGVzYywgNjQsIDAsIDkyMTYsIG51bWFfbm9kZSk7DQo+ID4gKwlpZiAo YXBwX2Zsb3dlci0+Y3RybF9wa3RtYnVmX3Bvb2wgPT0gTlVMTCkgew0KPiA+ICsJCVBNRF9JTklU X0xPRyhFUlIsICJjcmVhdGUgbWJ1ZiBwb29sIGZvciBjdHJsIHZuaWMgZmFpbGVkIik7DQo+ID4g KwkJcmV0ID0gLUVOT01FTTsNCj4gPiArCQlnb3RvIHR4X3F1ZXVlX2NsZWFudXA7DQo+ID4gKwl9 DQo+ID4gKw0KPiA+ICsJbXAgPSBhcHBfZmxvd2VyLT5jdHJsX3BrdG1idWZfcG9vbDsNCj4gPiAr DQo+ID4gKwkvKiBTZXQgdXAgdGhlIFJ4IHF1ZXVlcyAqLw0KPiA+ICsJUE1EX0lOSVRfTE9HKElO Rk8sICJDb25maWd1cmluZyBmbG93ZXIgY3RybCB2TklDIFJ4IHF1ZXVlIik7DQo+ID4gKwlmb3Ig KGkgPSAwOyBpIDwgaHctPm1heF9yeF9xdWV1ZXM7IGkrKykgew0KPiA+ICsJCS8qIEhhcmRjb2Rl ZCBudW1iZXIgb2YgZGVzYyB0byA2NCAqLw0KPiA+ICsJCXJ4cSA9IHJ0ZV96bWFsbG9jX3NvY2tl dCgiZXRoZGV2IFJYIHF1ZXVlIiwNCj4gPiArCQkJc2l6ZW9mKHN0cnVjdCBuZnBfbmV0X3J4cSks IFJURV9DQUNIRV9MSU5FX1NJWkUsDQo+ID4gKwkJCW51bWFfbm9kZSk7DQo+ID4gKwkJaWYgKHJ4 cSA9PSBOVUxMKSB7DQo+ID4gKwkJCVBNRF9EUlZfTE9HKEVSUiwgIkVycm9yIGFsbG9jYXRpbmcg cnhxIik7DQo+ID4gKwkJCXJldCA9IC1FTk9NRU07DQo+ID4gKwkJCWdvdG8gcnhfcXVldWVfc2V0 dXBfY2xlYW51cDsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCWV0aF9kZXYtPmRhdGEtPnJ4X3F1 ZXVlc1tpXSA9IHJ4cTsNCj4gPiArDQo+ID4gKwkJLyogSHcgcXVldWVzIG1hcHBpbmcgYmFzZWQg b24gZmlybXdhcmUgY29uZmlndXJhdGlvbiAqLw0KPiA+ICsJCXJ4cS0+cWlkeCA9IGk7DQo+ID4g KwkJcnhxLT5mbF9xY2lkeCA9IGkgKiBody0+c3RyaWRlX3J4Ow0KPiA+ICsJCXJ4cS0+cnhfcWNp ZHggPSByeHEtPmZsX3FjaWR4ICsgKGh3LT5zdHJpZGVfcnggLSAxKTsNCj4gPiArCQlyeHEtPnFj cF9mbCA9IGh3LT5yeF9iYXIgKyBORlBfUUNQX1FVRVVFX09GRihyeHEtDQo+ID5mbF9xY2lkeCk7 DQo+ID4gKwkJcnhxLT5xY3BfcnggPSBody0+cnhfYmFyICsgTkZQX1FDUF9RVUVVRV9PRkYocnhx LQ0KPiA+cnhfcWNpZHgpOw0KPiA+ICsNCj4gPiArCQkvKg0KPiA+ICsJCSAqIFRyYWNraW5nIG1i dWYgc2l6ZSBmb3IgZGV0ZWN0aW5nIGEgcG90ZW50aWFsIG1idWYgb3ZlcmZsb3cNCj4gZHVlIHRv DQo+ID4gKwkJICogUlggb2Zmc2V0DQo+ID4gKwkJICovDQo+ID4gKwkJcnhxLT5tZW1fcG9vbCA9 IG1wOw0KPiA+ICsJCXJ4cS0+bWJ1Zl9zaXplID0gcnhxLT5tZW1fcG9vbC0+ZWx0X3NpemU7DQo+ ID4gKwkJcnhxLT5tYnVmX3NpemUgLT0gKHNpemVvZihzdHJ1Y3QgcnRlX21idWYpICsNCj4gUlRF X1BLVE1CVUZfSEVBRFJPT00pOw0KPiA+ICsJCWh3LT5mbGJ1ZnN6ID0gcnhxLT5tYnVmX3NpemU7 DQo+ID4gKw0KPiA+ICsJCXJ4cS0+cnhfY291bnQgPSBuYl9kZXNjOw0KPiA+ICsJCXJ4cS0+cnhf ZnJlZV90aHJlc2ggPSByeF9mcmVlX3RocmVzaDsNCj4gPiArCQlyeHEtPmRyb3BfZW4gPSAxOw0K PiA+ICsNCj4gPiArCQkvKg0KPiA+ICsJCSAqIEFsbG9jYXRlIFJYIHJpbmcgaGFyZHdhcmUgZGVz Y3JpcHRvcnMuIEEgbWVtem9uZSBsYXJnZQ0KPiBlbm91Z2ggdG8NCj4gPiArCQkgKiBoYW5kbGUg dGhlIG1heGltdW0gcmluZyBzaXplIGlzIGFsbG9jYXRlZCBpbiBvcmRlciB0byBhbGxvdw0KPiBm b3INCj4gPiArCQkgKiByZXNpemluZyBpbiBsYXRlciBjYWxscyB0byB0aGUgcXVldWUgc2V0dXAg ZnVuY3Rpb24uDQo+ID4gKwkJICovDQo+ID4gKwkJdHogPSBydGVfZXRoX2RtYV96b25lX3Jlc2Vy dmUoZXRoX2RldiwgImN0cmxfcnhfcmluZyIsIGksDQo+ID4gKwkJCXNpemVvZihzdHJ1Y3QgbmZw X25ldF9yeF9kZXNjKSAqDQo+IE5GUF9ORVRfTUFYX1JYX0RFU0MsDQo+ID4gKwkJCU5GUF9NRU1a T05FX0FMSUdOLCBudW1hX25vZGUpOw0KPiA+ICsJCWlmICh0eiA9PSBOVUxMKSB7DQo+ID4gKwkJ CVBNRF9EUlZfTE9HKEVSUiwgIkVycm9yIGFsbG9jYXRpbmcgcnggZG1hIik7DQo+ID4gKwkJCXJ0 ZV9mcmVlKHJ4cSk7DQo+ID4gKwkJCXJldCA9IC1FTk9NRU07DQo+ID4gKwkJCWdvdG8gcnhfcXVl dWVfc2V0dXBfY2xlYW51cDsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCS8qIFNhdmluZyBwaHlz aWNhbCBhbmQgdmlydHVhbCBhZGRyZXNzZXMgZm9yIHRoZSBSWCByaW5nICovDQo+ID4gKwkJcnhx LT5kbWEgPSAodWludDY0X3QpdHotPmlvdmE7DQo+ID4gKwkJcnhxLT5yeGRzID0gKHN0cnVjdCBu ZnBfbmV0X3J4X2Rlc2MgKil0ei0+YWRkcjsNCj4gPiArDQo+ID4gKwkJLyogbWJ1ZiBwb2ludGVy cyBhcnJheSBmb3IgcmVmZXJlbmNpbmcgbWJ1ZnMgbGlua2VkIHRvIFJYDQo+IGRlc2NyaXB0b3Jz ICovDQo+ID4gKwkJcnhxLT5yeGJ1ZnMgPSBydGVfem1hbGxvY19zb2NrZXQoInJ4cS0+cnhidWZz IiwNCj4gPiArCQkJc2l6ZW9mKCpyeHEtPnJ4YnVmcykgKiBuYl9kZXNjLA0KPiBSVEVfQ0FDSEVf TElORV9TSVpFLA0KPiA+ICsJCQludW1hX25vZGUpOw0KPiA+ICsJCWlmIChyeHEtPnJ4YnVmcyA9 PSBOVUxMKSB7DQo+ID4gKwkJCXJ0ZV9ldGhfZG1hX3pvbmVfZnJlZShldGhfZGV2LCAiY3RybF9y eF9yaW5nIiwgaSk7DQo+ID4gKwkJCXJ0ZV9mcmVlKHJ4cSk7DQo+ID4gKwkJCXJldCA9IC1FTk9N RU07DQo+ID4gKwkJCWdvdG8gcnhfcXVldWVfc2V0dXBfY2xlYW51cDsNCj4gPiArCQl9DQo+ID4g Kw0KPiA+ICsJCW5mcF9uZXRfcmVzZXRfcnhfcXVldWUocnhxKTsNCj4gPiArDQo+ID4gKwkJcnhx LT5odyA9IGh3Ow0KPiA+ICsNCj4gPiArCQkvKg0KPiA+ICsJCSAqIFRlbGxpbmcgdGhlIEhXIGFi b3V0IHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBSWCByaW5nDQo+IGFuZCBudW1iZXINCj4g PiArCQkgKiBvZiBkZXNjcmlwdG9ycyBpbiBsb2cyIGZvcm1hdA0KPiA+ICsJCSAqLw0KPiA+ICsJ CW5uX2NmZ193cml0ZXEoaHcsIE5GUF9ORVRfQ0ZHX1JYUl9BRERSKGkpLCByeHEtPmRtYSk7DQo+ ID4gKwkJbm5fY2ZnX3dyaXRlYihodywgTkZQX05FVF9DRkdfUlhSX1NaKGkpLA0KPiBydGVfbG9n Ml91MzIobmJfZGVzYykpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIE5vdyB0aGUgVHggcXVl dWVzICovDQo+ID4gKwlQTURfSU5JVF9MT0coSU5GTywgIkNvbmZpZ3VyaW5nIGZsb3dlciBjdHJs IHZOSUMgVHggcXVldWUiKTsNCj4gPiArCWZvciAoaSA9IDA7IGkgPCBody0+bWF4X3R4X3F1ZXVl czsgaSsrKSB7DQo+ID4gKwkJLyogSGFyZGNvZGVkIG51bWJlciBvZiBkZXNjIHRvIDY0ICovDQo+ ID4gKwkJLyogQWxsb2NhdGluZyB0eCBxdWV1ZSBkYXRhIHN0cnVjdHVyZSAqLw0KPiA+ICsJCXR4 cSA9IHJ0ZV96bWFsbG9jX3NvY2tldCgiZXRoZGV2IFRYIHF1ZXVlIiwNCj4gPiArCQkJc2l6ZW9m KHN0cnVjdCBuZnBfbmV0X3R4cSksIFJURV9DQUNIRV9MSU5FX1NJWkUsDQo+ID4gKwkJCW51bWFf bm9kZSk7DQo+ID4gKwkJaWYgKHR4cSA9PSBOVUxMKSB7DQo+ID4gKwkJCVBNRF9EUlZfTE9HKEVS UiwgIkVycm9yIGFsbG9jYXRpbmcgdHhxIik7DQo+ID4gKwkJCXJldCA9IC1FTk9NRU07DQo+ID4g KwkJCWdvdG8gdHhfcXVldWVfc2V0dXBfY2xlYW51cDsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJ CWV0aF9kZXYtPmRhdGEtPnR4X3F1ZXVlc1tpXSA9IHR4cTsNCj4gPiArDQo+ID4gKwkJLyoNCj4g PiArCQkgKiBBbGxvY2F0ZSBUWCByaW5nIGhhcmR3YXJlIGRlc2NyaXB0b3JzLiBBIG1lbXpvbmUg bGFyZ2UNCj4gZW5vdWdoIHRvDQo+ID4gKwkJICogaGFuZGxlIHRoZSBtYXhpbXVtIHJpbmcgc2l6 ZSBpcyBhbGxvY2F0ZWQgaW4gb3JkZXIgdG8gYWxsb3cNCj4gZm9yDQo+ID4gKwkJICogcmVzaXpp bmcgaW4gbGF0ZXIgY2FsbHMgdG8gdGhlIHF1ZXVlIHNldHVwIGZ1bmN0aW9uLg0KPiA+ICsJCSAq Lw0KPiA+ICsJCXR6ID0gcnRlX2V0aF9kbWFfem9uZV9yZXNlcnZlKGV0aF9kZXYsICJjdHJsX3R4 X3JpbmciLCBpLA0KPiA+ICsJCQlzaXplb2Yoc3RydWN0IG5mcF9uZXRfbmZkM190eF9kZXNjKSAq DQo+IE5GUF9ORVRfTUFYX1RYX0RFU0MsDQo+ID4gKwkJCU5GUF9NRU1aT05FX0FMSUdOLCBudW1h X25vZGUpOw0KPiA+ICsJCWlmICh0eiA9PSBOVUxMKSB7DQo+ID4gKwkJCVBNRF9EUlZfTE9HKEVS UiwgIkVycm9yIGFsbG9jYXRpbmcgdHggZG1hIik7DQo+ID4gKwkJCXJ0ZV9mcmVlKHR4cSk7DQo+ ID4gKwkJCXJldCA9IC1FTk9NRU07DQo+ID4gKwkJCWdvdG8gdHhfcXVldWVfc2V0dXBfY2xlYW51 cDsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCXR4cS0+dHhfY291bnQgPSBuYl9kZXNjOw0KPiA+ ICsJCXR4cS0+dHhfZnJlZV90aHJlc2ggPSB0eF9mcmVlX3RocmVzaDsNCj4gPiArCQl0eHEtPnR4 X3B0aHJlc2ggPSBERUZBVUxUX1RYX1BUSFJFU0g7DQo+ID4gKwkJdHhxLT50eF9odGhyZXNoID0g REVGQVVMVF9UWF9IVEhSRVNIOw0KPiA+ICsJCXR4cS0+dHhfd3RocmVzaCA9IERFRkFVTFRfVFhf V1RIUkVTSDsNCj4gPiArDQo+ID4gKwkJLyogcXVldWUgbWFwcGluZyBiYXNlZCBvbiBmaXJtd2Fy ZSBjb25maWd1cmF0aW9uICovDQo+ID4gKwkJdHhxLT5xaWR4ID0gaTsNCj4gPiArCQl0eHEtPnR4 X3FjaWR4ID0gaSAqIGh3LT5zdHJpZGVfdHg7DQo+ID4gKwkJdHhxLT5xY3BfcSA9IGh3LT50eF9i YXIgKyBORlBfUUNQX1FVRVVFX09GRih0eHEtDQo+ID50eF9xY2lkeCk7DQo+ID4gKw0KPiA+ICsJ CS8qIFNhdmluZyBwaHlzaWNhbCBhbmQgdmlydHVhbCBhZGRyZXNzZXMgZm9yIHRoZSBUWCByaW5n ICovDQo+ID4gKwkJdHhxLT5kbWEgPSAodWludDY0X3QpdHotPmlvdmE7DQo+ID4gKwkJdHhxLT50 eGRzID0gKHN0cnVjdCBuZnBfbmV0X25mZDNfdHhfZGVzYyAqKXR6LT5hZGRyOw0KPiA+ICsNCj4g PiArCQkvKiBtYnVmIHBvaW50ZXJzIGFycmF5IGZvciByZWZlcmVuY2luZyBtYnVmcyBsaW5rZWQg dG8gVFgNCj4gZGVzY3JpcHRvcnMgKi8NCj4gPiArCQl0eHEtPnR4YnVmcyA9IHJ0ZV96bWFsbG9j X3NvY2tldCgidHhxLT50eGJ1ZnMiLA0KPiA+ICsJCQlzaXplb2YoKnR4cS0+dHhidWZzKSAqIG5i X2Rlc2MsDQo+IFJURV9DQUNIRV9MSU5FX1NJWkUsDQo+ID4gKwkJCW51bWFfbm9kZSk7DQo+ID4g KwkJaWYgKHR4cS0+dHhidWZzID09IE5VTEwpIHsNCj4gPiArCQkJcnRlX2V0aF9kbWFfem9uZV9m cmVlKGV0aF9kZXYsICJjdHJsX3R4X3JpbmciLCBpKTsNCj4gPiArCQkJcnRlX2ZyZWUodHhxKTsN Cj4gPiArCQkJcmV0ID0gLUVOT01FTTsNCj4gPiArCQkJZ290byB0eF9xdWV1ZV9zZXR1cF9jbGVh bnVwOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJbmZwX25ldF9yZXNldF90eF9xdWV1ZSh0eHEp Ow0KPiA+ICsNCj4gPiArCQl0eHEtPmh3ID0gaHc7DQo+ID4gKw0KPiA+ICsJCS8qDQo+ID4gKwkJ ICogVGVsbGluZyB0aGUgSFcgYWJvdXQgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIFRYIHJp bmcNCj4gYW5kIG51bWJlcg0KPiA+ICsJCSAqIG9mIGRlc2NyaXB0b3JzIGluIGxvZzIgZm9ybWF0 DQo+ID4gKwkJICovDQo+ID4gKwkJbm5fY2ZnX3dyaXRlcShodywgTkZQX05FVF9DRkdfVFhSX0FE RFIoaSksIHR4cS0+ZG1hKTsNCj4gPiArCQlubl9jZmdfd3JpdGViKGh3LCBORlBfTkVUX0NGR19U WFJfU1ooaSksDQo+IHJ0ZV9sb2cyX3UzMihuYl9kZXNjKSk7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ ICsJcmV0dXJuIDA7DQo+ID4gKw0KPiA+ICt0eF9xdWV1ZV9zZXR1cF9jbGVhbnVwOg0KPiA+ICsJ Zm9yIChpID0gMDsgaSA8IGh3LT5tYXhfdHhfcXVldWVzOyBpKyspIHsNCj4gPiArCQl0eHEgPSBl dGhfZGV2LT5kYXRhLT50eF9xdWV1ZXNbaV07DQo+ID4gKwkJaWYgKHR4cSkgew0KPiANCj4gQ29t cGFyZSB2cyBOVUxMDQo+IA0KPiA+ICsJCQlydGVfZnJlZSh0eHEtPnR4YnVmcyk7DQo+ID4gKwkJ CXJ0ZV9ldGhfZG1hX3pvbmVfZnJlZShldGhfZGV2LCAiY3RybF90eF9yaW5nIiwgaSk7DQo+ID4g KwkJCXJ0ZV9mcmVlKHR4cSk7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICtyeF9xdWV1ZV9zZXR1 cF9jbGVhbnVwOg0KPiA+ICsJZm9yIChpID0gMDsgaSA8IGh3LT5tYXhfcnhfcXVldWVzOyBpKysp IHsNCj4gPiArCQlyeHEgPSBldGhfZGV2LT5kYXRhLT5yeF9xdWV1ZXNbaV07DQo+ID4gKwkJaWYg KHJ4cSkgew0KPiANCj4gQ29tcGFyZSB2cyBOVUxMDQo+IA0KPiA+ICsJCQlydGVfZnJlZShyeHEt PnJ4YnVmcyk7DQo+ID4gKwkJCXJ0ZV9ldGhfZG1hX3pvbmVfZnJlZShldGhfZGV2LCAiY3RybF9y eF9yaW5nIiwgaSk7DQo+ID4gKwkJCXJ0ZV9mcmVlKHJ4cSk7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0K PiA+ICt0eF9xdWV1ZV9jbGVhbnVwOg0KPiA+ICsJcnRlX2ZyZWUoZXRoX2Rldi0+ZGF0YS0+dHhf cXVldWVzKTsNCj4gPiArcnhfcXVldWVfY2xlYW51cDoNCj4gPiArCXJ0ZV9mcmVlKGV0aF9kZXYt PmRhdGEtPnJ4X3F1ZXVlcyk7DQo+ID4gK2Rldl9kYXRhX2NsZWFudXA6DQo+ID4gKwlydGVfZnJl ZShldGhfZGV2LT5kYXRhKTsNCj4gPiArZXRoX2Rldl9jbGVhbnVwOg0KPiA+ICsJcnRlX2ZyZWUo ZXRoX2Rldik7DQo+ID4gK2RvbmU6DQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0K PiA+ICAgc3RhdGljIGludA0KPiA+ICAgbmZwX2Zsb3dlcl9zdGFydF9wZl92bmljKHN0cnVjdCBu ZnBfbmV0X2h3ICpodykNCj4gPiAgIHsNCj4gPiBAQCAtNTYxLDEyICs4NjEsNTcgQEANCj4gPiAg IAlyZXR1cm4gMDsNCj4gPiAgIH0NCj4gPg0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK25mcF9mbG93 ZXJfc3RhcnRfY3RybF92bmljKHN0cnVjdCBuZnBfbmV0X2h3ICpodykgew0KPiA+ICsJaW50IHJl dDsNCj4gPiArCXVpbnQzMl90IHVwZGF0ZTsNCj4gPiArCXVpbnQzMl90IG5ld19jdHJsOw0KPiA+ ICsJc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXY7DQo+ID4gKw0KPiA+ICsJZGV2ID0gaHctPmV0aF9k ZXY7DQo+ID4gKw0KPiA+ICsJLyogRGlzYWJsaW5nIHF1ZXVlcyBqdXN0IGluIGNhc2UuLi4gKi8N Cj4gPiArCW5mcF9uZXRfZGlzYWJsZV9xdWV1ZXMoZGV2KTsNCj4gPiArDQo+ID4gKwkvKiBFbmFi bGluZyB0aGUgcmVxdWlyZWQgcXVldWVzIGluIHRoZSBkZXZpY2UgKi8NCj4gPiArCW5mcF9uZXRf ZW5hYmxlX3F1ZXVlcyhkZXYpOw0KPiA+ICsNCj4gPiArCS8qIFdyaXRpbmcgY29uZmlndXJhdGlv biBwYXJhbWV0ZXJzIGluIHRoZSBkZXZpY2UgKi8NCj4gPiArCW5mcF9uZXRfcGFyYW1zX3NldHVw KGh3KTsNCj4gPiArDQo+ID4gKwluZXdfY3RybCA9IE5GUF9ORVRfQ0ZHX0NUUkxfRU5BQkxFOw0K PiA+ICsJdXBkYXRlID0gTkZQX05FVF9DRkdfVVBEQVRFX0dFTiB8DQo+IE5GUF9ORVRfQ0ZHX1VQ REFURV9SSU5HIHwNCj4gPiArCQkgTkZQX05FVF9DRkdfVVBEQVRFX01TSVg7DQo+ID4gKw0KPiA+ ICsJcnRlX3dtYigpOw0KPiA+ICsNCj4gPiArCS8qIElmIGFuIGVycm9yIHdoZW4gcmVjb25maWcg d2UgYXZvaWQgdG8gY2hhbmdlIGh3IHN0YXRlICovDQo+ID4gKwlyZXQgPSBuZnBfbmV0X3JlY29u ZmlnKGh3LCBuZXdfY3RybCwgdXBkYXRlKTsNCj4gPiArCWlmIChyZXQpIHsNCj4gDQo+IENvbXBh cmUgdnMgMA0KPiANCj4gPiArCQlQTURfSU5JVF9MT0coRVJSLCAiRmFpbGVkIHRvIHJlY29uZmln IGN0cmwgdm5pYyIpOw0KPiA+ICsJCXJldHVybiAtRUlPOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAr CWh3LT5jdHJsID0gbmV3X2N0cmw7DQo+ID4gKw0KPiA+ICsJLyogU2V0dXAgdGhlIGZyZWVsaXN0 IHJpbmcgKi8NCj4gPiArCXJldCA9IG5mcF9uZXRfcnhfZnJlZWxpc3Rfc2V0dXAoZGV2KTsNCj4g PiArCWlmIChyZXQpIHsNCj4gDQo+IENvbXBhcmUgdnMgMA0KPiANCj4gPiArCQlQTURfSU5JVF9M T0coRVJSLCAiRXJyb3Igd2l0aCBmbG93ZXIgY3RybCB2TklDIGZyZWVsaXN0DQo+IHNldHVwIik7 DQo+ID4gKwkJcmV0dXJuIC1FSU87DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ ID4gK30NCj4gPiArDQo+ID4gICBpbnQNCj4gPiAgIG5mcF9pbml0X2FwcF9mbG93ZXIoc3RydWN0 IG5mcF9wZl9kZXYgKnBmX2RldikNCj4gPiAgIHsNCj4gPiAgIAlpbnQgcmV0Ow0KPiA+ICAgCXVu c2lnbmVkIGludCBudW1hX25vZGU7DQo+ID4gICAJc3RydWN0IG5mcF9uZXRfaHcgKnBmX2h3Ow0K PiA+ICsJc3RydWN0IG5mcF9uZXRfaHcgKmN0cmxfaHc7DQo+ID4gICAJc3RydWN0IG5mcF9hcHBf Zmxvd2VyICphcHBfZmxvd2VyOw0KPiA+DQo+ID4gICAJbnVtYV9ub2RlID0gcnRlX3NvY2tldF9p ZCgpOw0KPiA+IEBAIC02MTIsMjkgKzk1Nyw2MyBAQA0KPiA+ICAgCXBmX2h3LT5wZl9kZXYgPSBw Zl9kZXY7DQo+ID4gICAJcGZfaHctPmNwcCA9IHBmX2Rldi0+Y3BwOw0KPiA+DQo+ID4gKwkvKiBU aGUgY3RybCB2TklDIHN0cnVjdCBjb21lcyBkaXJlY3RseSBhZnRlciB0aGUgUEYgb25lICovDQo+ ID4gKwlhcHBfZmxvd2VyLT5jdHJsX2h3ID0gcGZfaHcgKyAxOw0KPiA+ICsJY3RybF9odyA9IGFw cF9mbG93ZXItPmN0cmxfaHc7DQo+ID4gKw0KPiA+ICsJLyogTWFwIHRoZSBjdHJsIHZOSUMgY3Ry bCBiYXIgKi8NCj4gPiArCWN0cmxfaHctPmN0cmxfYmFyID0gbmZwX3J0c3ltX21hcChwZl9kZXYt PnN5bV90YmwsDQo+ICJfcGYwX25ldF9jdHJsX2JhciIsDQo+ID4gKwkJMzI3NjgsICZjdHJsX2h3 LT5jdHJsX2FyZWEpOw0KPiA+ICsJaWYgKGN0cmxfaHctPmN0cmxfYmFyID09IE5VTEwpIHsNCj4g PiArCQlQTURfSU5JVF9MT0coRVJSLCAiQ2xvdWQgbm90IG1hcCB0aGUgY3RybCB2TklDIGN0cmwg YmFyIik7DQo+ID4gKwkJcmV0ID0gLUVOT0RFVjsNCj4gPiArCQlnb3RvIHBmX2NwcF9hcmVhX2Ns ZWFudXA7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJLyogTm93IHBvcHVsYXRlIHRoZSBjdHJsIHZO SUMgKi8NCj4gPiArCWN0cmxfaHctPnBmX2RldiA9IHBmX2RldjsNCj4gPiArCWN0cmxfaHctPmNw cCA9IHBmX2Rldi0+Y3BwOw0KPiA+ICsNCj4gPiAgIAlyZXQgPSBuZnBfZmxvd2VyX2luaXRfcGZf dm5pYyhhcHBfZmxvd2VyLT5wZl9odyk7DQo+ID4gICAJaWYgKHJldCkgew0KPiA+ICAgCQlQTURf SU5JVF9MT0coRVJSLCAiQ291bGQgbm90IGluaXRpYWxpemUgZmxvd2VyIFBGIHZOSUMiKTsNCj4g PiAtCQlnb3RvIHBmX2NwcF9hcmVhX2NsZWFudXA7DQo+ID4gKwkJZ290byBjdHJsX2NwcF9hcmVh X2NsZWFudXA7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0ID0gbmZwX2Zsb3dlcl9pbml0X2N0 cmxfdm5pYyhhcHBfZmxvd2VyLT5jdHJsX2h3KTsNCj4gPiArCWlmIChyZXQpIHsNCj4gDQo+IENv bXBhcmUgdnMgMA0KPiANCj4gPiArCQlQTURfSU5JVF9MT0coRVJSLCAiQ291bGQgbm90IGluaXRp YWxpemUgZmxvd2VyIGN0cmwgdk5JQyIpOw0KPiA+ICsJCWdvdG8gcGZfdm5pY19jbGVhbnVwOw0K PiA+ICAgCX0NCj4gPg0KPiA+ICAgCS8qIFN0YXJ0IHRoZSBQRiB2TklDICovDQo+ID4gICAJcmV0 ID0gbmZwX2Zsb3dlcl9zdGFydF9wZl92bmljKGFwcF9mbG93ZXItPnBmX2h3KTsNCj4gPiAgIAlp ZiAocmV0KSB7DQo+ID4gICAJCVBNRF9JTklUX0xPRyhFUlIsICJDb3VsZCBub3Qgc3RhcnQgZmxv d2VyIFBGIHZOSUMiKTsNCj4gPiAtCQlnb3RvIHBmX3ZuaWNfY2xlYW51cDsNCj4gPiArCQlnb3Rv IGN0cmxfdm5pY19jbGVhbnVwOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIFN0YXJ0IHRoZSBj dHJsIHZOSUMgKi8NCj4gPiArCXJldCA9IG5mcF9mbG93ZXJfc3RhcnRfY3RybF92bmljKGFwcF9m bG93ZXItPmN0cmxfaHcpOw0KPiA+ICsJaWYgKHJldCkgew0KPiANCj4gQ29tcGFyZSB2cyAwDQo+ IA0KPiA+ICsJCVBNRF9JTklUX0xPRyhFUlIsICJDb3VsZCBub3Qgc3RhcnQgZmxvd2VyIGN0cmwg dk5JQyIpOw0KPiA+ICsJCWdvdG8gY3RybF92bmljX2NsZWFudXA7DQo+ID4gICAJfQ0KPiA+DQo+ ID4gICAJLyogU3RhcnQgdXAgZmxvd2VyIHNlcnZpY2VzICovDQo+ID4gICAJaWYgKG5mcF9mbG93 ZXJfZW5hYmxlX3NlcnZpY2VzKGFwcF9mbG93ZXIpKSB7DQo+ID4gICAJCXJldCA9IC1FU1JDSDsN Cj4gPiAtCQlnb3RvIHBmX3ZuaWNfY2xlYW51cDsNCj4gPiArCQlnb3RvIGN0cmxfdm5pY19jbGVh bnVwOw0KPiA+ICAgCX0NCj4gPg0KPiA+ICAgCXJldHVybiAwOw0KPiA+DQo+ID4gK2N0cmxfdm5p Y19jbGVhbnVwOg0KPiA+ICsJbmZwX2Zsb3dlcl9jbGVhbnVwX2N0cmxfdm5pYyhhcHBfZmxvd2Vy LT5jdHJsX2h3KTsNCj4gPiAgIHBmX3ZuaWNfY2xlYW51cDoNCj4gPiAgIAluZnBfZmxvd2VyX2Ns ZWFudXBfcGZfdm5pYyhhcHBfZmxvd2VyLT5wZl9odyk7DQo+ID4gK2N0cmxfY3BwX2FyZWFfY2xl YW51cDoNCj4gPiArCW5mcF9jcHBfYXJlYV9mcmVlKGN0cmxfaHctPmN0cmxfYXJlYSk7DQo+ID4g ICBwZl9jcHBfYXJlYV9jbGVhbnVwOg0KPiA+ICAgCW5mcF9jcHBfYXJlYV9mcmVlKHBmX2Rldi0+ Y3RybF9hcmVhKTsNCj4gPiAgIGV0aF90YmxfY2xlYW51cDoNCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvbmZwL2Zsb3dlci9uZnBfZmxvd2VyLmgNCj4gPiBiL2RyaXZlcnMvbmV0L25mcC9m bG93ZXIvbmZwX2Zsb3dlci5oDQo+ID4gaW5kZXggZjZmZDRlYi4uZjExZWY2ZCAxMDA2NDQNCj4g PiAtLS0gYS9kcml2ZXJzL25ldC9uZnAvZmxvd2VyL25mcF9mbG93ZXIuaA0KPiA+ICsrKyBiL2Ry aXZlcnMvbmV0L25mcC9mbG93ZXIvbmZwX2Zsb3dlci5oDQo+ID4gQEAgLTIxLDYgKzIxLDEyIEBA IHN0cnVjdCBuZnBfYXBwX2Zsb3dlciB7DQo+ID4gICAJLyogUG9pbnRlciB0byB0aGUgUEYgdk5J QyAqLw0KPiA+ICAgCXN0cnVjdCBuZnBfbmV0X2h3ICpwZl9odzsNCj4gPg0KPiA+ICsJLyogUG9p bnRlciB0byBhIG1lbXBvb2wgZm9yIHRoZSBjdHJsdk5JQyAqLw0KPiA+ICsJc3RydWN0IHJ0ZV9t ZW1wb29sICpjdHJsX3BrdG1idWZfcG9vbDsNCj4gPiArDQo+ID4gKwkvKiBQb2ludGVyIHRvIHRo ZSBjdHJsIHZOSUMgKi8NCj4gPiArCXN0cnVjdCBuZnBfbmV0X2h3ICpjdHJsX2h3Ow0KPiA+ICsN Cj4gPiAgIAkvKiB0aGUgZXRoIHRhYmxlIGFzIHJlcG9ydGVkIGJ5IGZpcm13YXJlICovDQo+ID4g ICAJc3RydWN0IG5mcF9ldGhfdGFibGUgKm5mcF9ldGhfdGFibGU7DQo+ID4gICB9Ow0KDQo=