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 F00C8A00C4; Fri, 28 Oct 2022 19:23:01 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 955A940151; Fri, 28 Oct 2022 19:23:01 +0200 (CEST) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by mails.dpdk.org (Postfix) with ESMTP id C3E0C40146 for ; Fri, 28 Oct 2022 19:22:59 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1666977780; x=1698513780; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=5YsLLo/DN3a+kozVGaAag+5uPQBVUJPzahgYhlxKJC8=; b=R6bdyv21sRdZiCWz6pbhZtNK4VrilrJicPaB9JLMAagCqczyO23+01qn SC2+yODoLkt8MyeqW58UVUoTfmG8lTYoAOCLa0RETlp1HI/rrLMmeMEjb kOcoyRhLt4Yvst2O5CMOd7YQyQzNR5txijV2jjbMn/3jCTLzRe1JjkIW9 jvDRzZf3fq5Sg8R9Z44818GRSVKBbuEJbrLCcrDZ9bDShY2bpn19e6HE9 x2Jcv7E4lteq2d8ud9APkYzlk+Dx+TQPC2s8Kh4R3snU6/OwDXUwPlotf sd7T407A1LNyxFMVWqJROBiOK0AYOWRHUWaaExAshej9sFGcIwPARWKuy w==; X-IronPort-AV: E=McAfee;i="6500,9779,10514"; a="370616986" X-IronPort-AV: E=Sophos;i="5.95,221,1661842800"; d="scan'208";a="370616986" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Oct 2022 10:22:58 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10514"; a="666136022" X-IronPort-AV: E=Sophos;i="5.95,221,1661842800"; d="scan'208";a="666136022" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga001.jf.intel.com with ESMTP; 28 Oct 2022 10:22:58 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 28 Oct 2022 10:22:58 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 28 Oct 2022 10:22:58 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Fri, 28 Oct 2022 10:22:57 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.177) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Fri, 28 Oct 2022 10:22:57 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PAqGu4i/ylqtDVjbKxe6TxYZUaHQ5rt00wSSjriAnlAx3b4z+ztDimNdl06LDnu4C8KwLYYvtElDzRfv9QXIK/zPSWsv637iYSmxYyIChPcC7EMi6FTDA2kk/iVYsmJDo69CAm6za8ZjoS04ihblGh9cWsbFM488hTwZSrZE7QmnpapQDIToAc6rN+2CrOXQnDMQjxn52w5o/+OafewgOh/3esGGYmIL/SR2/v++AdlvYpJq3sKWVGqHkhIfy/eBQw8OEgjLsztWICToOThMPMl/Stom6bHHcMiMxwr4S20Ifd+WVU0pltJQiE4yRzLHQmkRSsEprHfcWZzdikXUzw== 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=5YsLLo/DN3a+kozVGaAag+5uPQBVUJPzahgYhlxKJC8=; b=L1NWC0rayfEx6nlfAgc8dA9q0PPjYv9T2kWiXtS4bK/OXQgK3wjWpNNAN9TDBSisBOXytfFQBN5H72HTSgQ11Jx4TPx3VIvILNpkPnPPoXATd5TBnJiJoPnJAZQaucgvTXtS7cCNw++KmSFuNayJOrpqYNxMuCuDMno3icMlWJEUvokCEfZQTfbVZ9nEzIIDekVWS7cCHlaKtzpfQt/jUEemdnRYQ9gRajV6WE9jEN+c0vwOftpwPOuMyIyYOv7860DGcWekE1ZCLiGiHKLbV54i7zhgv7D8eco9BLFsVozB+gWRUvm8gZ/ClC8WvUA6Ff5poQahEfNvxI8Co2lrTA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from LV2PR11MB5997.namprd11.prod.outlook.com (2603:10b6:408:17f::10) by PH0PR11MB4839.namprd11.prod.outlook.com (2603:10b6:510:42::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.28; Fri, 28 Oct 2022 17:22:56 +0000 Received: from LV2PR11MB5997.namprd11.prod.outlook.com ([fe80::2f7c:bd4:a635:6cdb]) by LV2PR11MB5997.namprd11.prod.outlook.com ([fe80::2f7c:bd4:a635:6cdb%5]) with mapi id 15.20.5769.014; Fri, 28 Oct 2022 17:22:55 +0000 From: "Xing, Beilei" To: Andrew Rybchenko , "Guo, Junfeng" , "Zhang, Qi Z" , "Wu, Jingjing" CC: "dev@dpdk.org" , "Li, Xiaoyun" , "Wang, Xiao W" , "Wu, Wenjun1" Subject: RE: [PATCH v14 02/18] net/idpf: add support for device initialization Thread-Topic: [PATCH v14 02/18] net/idpf: add support for device initialization Thread-Index: AQHY6digzCw19Fwb00unzZd+al1/ja4j8gyAgAAdLFA= Date: Fri, 28 Oct 2022 17:22:55 +0000 Message-ID: References: <20221027054505.1369248-2-junfeng.guo@intel.com> <20221027074729.1494529-1-junfeng.guo@intel.com> <20221027074729.1494529-3-junfeng.guo@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.500.17 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LV2PR11MB5997:EE_|PH0PR11MB4839:EE_ x-ms-office365-filtering-correlation-id: cf379c7d-7554-48de-d8fb-08dab9090d72 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: OctPq7rz0JOQy5ykpWWVEokmT8RW/YJt8ex09l52TR8Xjr6IZ1JPmRWwj1NIfh9BgQ4tHwlnI+TP6RbQGxKAud5g3kDPNe0WbN9UaxJXuRCFq103YOOSUu9n1MW1vJYB++x0JA54rzq6rHoOlgYBc3+eTqG+gcLX3dnTuucPTftIyOXXIylBN6GklTTQsdkbjtv+b4v3GLSIa2m8OhEAAZOXU2NS7lCiTAnNss/Qj/fR0p4LyVky/dcqE84uUI1OcBJbcMeZ2Ov5dwmq9E3xUIwACgWGVK36iW1D4sIFCHowbMYkjs08WYnRvAKEkyWJBwHKRhwPKYPt93DY40DBAI1gDzN4yHSyz2uNtKkPUEIDkeDFNEgcPCLQzoOUBtgH2QFoDv5UBhJZKAYyLb+0PR95nDEvABEMeGkbY4nS0cJdDLiceN7vmxNR/Veld2SxRAdfuIDwET+kuOp+SQymSW6EL8ESLO/o7YjeAHrssiPiEFgrlJcInBoYk/MMv22oNaqh0t3pS72Xun1feTCeGtMZU9ZfDOay5iA7mjCFj27llkWT65eFl/4YRXqYpwCDFfKKliTk52Whg7bs09Wpz/sqKIJOfnZd4DetiYG+VlQ2UtJc/VHdS3j/3IYV4zY5kCJFk3n3XL+KoFx6dZrVLkcJnzo+Ox6jpmXa2zY73N13PrkQBmmWvUTngLTwdxUEpfNqZlAxoZFc5/Y7HlhPAL91HHX18glNMxFSbAE+p2VDPxdXj1sDlX06Ri+15hHSgFAJWxmN8kb7iLi46YeXxQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:LV2PR11MB5997.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(136003)(346002)(376002)(396003)(39860400002)(366004)(451199015)(66556008)(33656002)(55016003)(83380400001)(52536014)(66446008)(30864003)(66946007)(38070700005)(110136005)(8936002)(4326008)(8676002)(64756008)(2906002)(54906003)(41300700001)(6636002)(5660300002)(66476007)(71200400001)(478600001)(186003)(76116006)(86362001)(9686003)(316002)(26005)(53546011)(82960400001)(122000001)(6506007)(7696005)(107886003)(38100700002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bFQwZnl1cFFMRzNtNEJhUU5Nd2puZWxadi9uYXNzbE5rd1lLOFc4VWJLOGpk?= =?utf-8?B?K29DN1BpMkpZeCtpNFUxejVDRUo2all0S05PaFFRaXBia0RTcFFTNjFPYjdT?= =?utf-8?B?cXBLTFVtV0JPQ2h6aldZbExHb3VqRUJ0THF4bEdrQ1paWmdCU2R4RTZyQ2dC?= =?utf-8?B?OWJlNzhWMWNKTFJMVU5SU2ZVNHBaOTRaR3hDcW5tRFhEVEJoeDVkcGRFbjd4?= =?utf-8?B?dGYzZ3d6WFFkY0F4Vk1TUWV4OUZoOVo0NnA3dVZhYW8xK2dpaUtHOFcwTVJy?= =?utf-8?B?N0diazF5Y2E0UmlpcUNIbmR0TFFzTUhuZ1IrRDVDT0tleEx4MmxKdTRSK3c1?= =?utf-8?B?M0JseGx0NjlsNHBZd29xaXlGblJRZXZlZHE0K2dtUFRIZ1hhUUdVbDdRd1Nx?= =?utf-8?B?bDBPWGk5cURRSmY5ektJV3g2eUdzS1NGMm95TEJNWFRoQmFTMGlJeUlScHUy?= =?utf-8?B?djJZTE10MXdYbmFFSlo0QXpEcFozS1c3Q2xTcDJLdmt3MWl6c0NRaHE5SmxB?= =?utf-8?B?ZFpNKzc5SytmN0dzY01lUUk2UEpUMXJWZU82cFZSbitJN2d1bGlTYnlWN3hj?= =?utf-8?B?MFVOcjRRZXFndnduNEZwdlZmOTIzV2cxTVJQMWpzU2M0NHdJckFaeWhtMjli?= =?utf-8?B?MDBkZzkrZllPamNQMXViUTY1S0JqYXcxM2hhbkFNK0J2cWhZbmcxdGt5dVd4?= =?utf-8?B?cFB4YitjS3BWZTlQdUdlbWg1cmdPb0hQMGUzSVBmWGhnS0d1MS9SZmFyVThC?= =?utf-8?B?TUxHQmphc2d0UEdhN0dCQmZwa2ZiOE5nVjNXQmJrUUVoanJOL3N6QlJCdUVT?= =?utf-8?B?aEZPS2lCYnh5NGsxQnpJMGJwYUVOREI4eXhYV1lIQll3eUFPSUUxb1J1WGRN?= =?utf-8?B?eERienVLQ3FoOExMVWF0NjZSbzZ2Q1ZJV2ZyWFR0UDB3dE10ZFRYR0lDU1Zr?= =?utf-8?B?NVlSUFR3Q2tiUFozTXZlQUN1T3FuN0pLWVRTbjkrc2E0NHh2bnp5aGEwaVZv?= =?utf-8?B?VmI5b0RUMktkVjZ1WlpHQnVTNGdjTm5uNGdrcXlsYzduYnVTc00vSDBaamxX?= =?utf-8?B?V0cwNHRPSXhONnV4UU81V1M0N1YxU0J3aUZwQ3JUOXpZcW9JdTRWVk1hU2tP?= =?utf-8?B?WGd0eGxMQVFzVkRHRnQ4cTV5bzF1b3ZZbnZaNjlLOHlDb1JETExvWVRBQlQv?= =?utf-8?B?VnhkYUJRckwzRzhxTGhYR0FOc24vRkV6d3dWQ0pnRTlVOGpvYng2UVhlYXRC?= =?utf-8?B?ZVhkdkNJUzdMYTlrVVp4RjNDemRnMkwwRWdleHlYSEtqUGc1WlVrTDRBZ0Ns?= =?utf-8?B?aXJBSXQyZkt6NEFOVWFHdEY3Y0JFU0ZWdG54YUJUSHRqUXoyZEkwN0E5eHlw?= =?utf-8?B?a3BudURuVTE1M1VrZThIVEF2a0p1Z09BY3JjaUFJZTBMOTlhZW5RYTlnTFpo?= =?utf-8?B?Ujh4TERKRE5qZUVvV1ZVc3E2TkFiYkdpc3pYNXRJbk5BVmpkMlNuSXFPUkhl?= =?utf-8?B?ZnkrVW1SVGNiMVpKbWZFaVoxb3NQZ0RTUzFjMnd5akI4eWZka0pONE1Kak9z?= =?utf-8?B?SzM2dVBvOFhhanI2RGEzK2U0Y0lZcU9WMzhFRXMrVWxaNkZlYVFlQnhzQW1p?= =?utf-8?B?alp6dXUrZy9ncktPZlNQWlNKVzVwdGNSbjVZTFZ0NUxKUzU5QlE3ZFByUlpm?= =?utf-8?B?M3o2MmptdnNURTRUdnlTM3EvUGR5L0pBRGFRWEVqM2g2UXd6Yit0S2tIc3dy?= =?utf-8?B?ZnROWW9hSk1yYVYyV2RxamJrbjNzTW9WRFhUNmtYM1FYZnVkQUh2MldBNjRh?= =?utf-8?B?UXEvaUhJaHhzMTZDOHUwN0gwanpxZ1BlK3RFRHI1TjRZbnNHZXVFcEJILzc4?= =?utf-8?B?SktaOElrWUFVWFdvQ2JNS2NGUzRUZW9FMFFLMlVVSmMyUE01bDJ1NHJxMzFw?= =?utf-8?B?WU1pMW9NVWNZdXhuNGdReG5rV1ZxMXk4dytmVUgrOUYvMkd5ZVovMU9jUEpR?= =?utf-8?B?bmMyNFh0dllFdjI0dnZkTGFLM2xtTko2S0RiWUxYdmo4YTNENENWUm1raElB?= =?utf-8?B?Y1MrZ0ZSa3Q2eUFSN0gxdHJUcWFNVHJzc3FzckIxVmNTWm9EMEdFR25EK0RQ?= =?utf-8?Q?d9VufaXxaLjmQZuGbaUrZQu0T?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LV2PR11MB5997.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: cf379c7d-7554-48de-d8fb-08dab9090d72 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Oct 2022 17:22:55.7664 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: S09JKXr8WAycE2vr0c39mwoEl9Qvu77/6nKneE8wqiVTLTElTJlOzuHG3UO0ApiUAkoQ3NHAgQBycbTm7Npazw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB4839 X-OriginatorOrg: intel.com 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 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQW5kcmV3IFJ5YmNoZW5r byA8YW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU+DQo+IFNlbnQ6IEZyaWRheSwgT2N0b2Jl ciAyOCwgMjAyMiAxMTozNSBQTQ0KPiBUbzogR3VvLCBKdW5mZW5nIDxqdW5mZW5nLmd1b0BpbnRl bC5jb20+OyBaaGFuZywgUWkgWg0KPiA8cWkuei56aGFuZ0BpbnRlbC5jb20+OyBXdSwgSmluZ2pp bmcgPGppbmdqaW5nLnd1QGludGVsLmNvbT47IFhpbmcsIEJlaWxlaQ0KPiA8YmVpbGVpLnhpbmdA aW50ZWwuY29tPg0KPiBDYzogZGV2QGRwZGsub3JnOyBMaSwgWGlhb3l1biA8eGlhb3l1bi5saUBp bnRlbC5jb20+OyBXYW5nLCBYaWFvIFcNCj4gPHhpYW8udy53YW5nQGludGVsLmNvbT47IFd1LCBX ZW5qdW4xIDx3ZW5qdW4xLnd1QGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MTQg MDIvMThdIG5ldC9pZHBmOiBhZGQgc3VwcG9ydCBmb3IgZGV2aWNlIGluaXRpYWxpemF0aW9uDQo+ IA0KPiBPbiAxMC8yNy8yMiAxMDo0NywgSnVuZmVuZyBHdW8gd3JvdGU6DQo+ID4gU3VwcG9ydCBk ZXZpY2UgaW5pdCBhbmQgYWRkIHRoZSBmb2xsb3dpbmcgZGV2IG9wczoNCj4gPiAgIC0gZGV2X2Nv bmZpZ3VyZQ0KPiA+ICAgLSBkZXZfY2xvc2UNCj4gPiAgIC0gZGV2X2luZm9zX2dldA0KPiA+DQo+ ID4gU2lnbmVkLW9mZi1ieTogQmVpbGVpIFhpbmcgPGJlaWxlaS54aW5nQGludGVsLmNvbT4NCj4g PiBTaWduZWQtb2ZmLWJ5OiBYaWFveXVuIExpIDx4aWFveXVuLmxpQGludGVsLmNvbT4NCj4gPiBT aWduZWQtb2ZmLWJ5OiBYaWFvIFdhbmcgPHhpYW8udy53YW5nQGludGVsLmNvbT4NCj4gPiBTaWdu ZWQtb2ZmLWJ5OiBXZW5qdW4gV3UgPHdlbmp1bjEud3VAaW50ZWwuY29tPg0KPiA+IFNpZ25lZC1v ZmYtYnk6IEp1bmZlbmcgR3VvIDxqdW5mZW5nLmd1b0BpbnRlbC5jb20+DQo+IA0KPiBbc25pcF0N Cj4gDQo+ID4gK3N0YXRpYyBpbnQgaWRwZl9kZXZfY29uZmlndXJlKHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2KTsgc3RhdGljIGludA0KPiA+ICtpZHBmX2Rldl9jbG9zZShzdHJ1Y3QgcnRlX2V0aF9k ZXYgKmRldik7IHN0YXRpYyBpbnQNCj4gPiAraWRwZl9kZXZfaW5mb19nZXQoc3RydWN0IHJ0ZV9l dGhfZGV2ICpkZXYsDQo+ID4gKwkJCSAgICAgc3RydWN0IHJ0ZV9ldGhfZGV2X2luZm8gKmRldl9p bmZvKTsgc3RhdGljIHZvaWQNCj4gPiAraWRwZl9hZGFwdGVyX3JlbChzdHJ1Y3QgaWRwZl9hZGFw dGVyICphZGFwdGVyKTsNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZXRoX2Rldl9v cHMgaWRwZl9ldGhfZGV2X29wcyA9IHsNCj4gPiArCS5kZXZfY29uZmlndXJlCQkJPSBpZHBmX2Rl dl9jb25maWd1cmUsDQo+ID4gKwkuZGV2X2Nsb3NlCQkJPSBpZHBmX2Rldl9jbG9zZSwNCj4gPiAr CS5kZXZfaW5mb3NfZ2V0CQkJPSBpZHBmX2Rldl9pbmZvX2dldCwNCj4gPiArfTsNCj4gDQo+IFR5 cGljYWxseSBpdCBpcyBiZXR0ZXIgdG8gYXZvaWQgZm9yd2FyZCBzdGF0aWMgZGVjbGFyYXRpb25z IGFuZCBzaW1wbHkgZGVmaW5lDQo+IHRoZSBvcHMgc3RydWN0dXJlIGFmdGVyIGNhbGxiYWNrcy4N Cg0KT0ssIHdpbGwgZml4IGl0IGluIHYxNS4NCg0KPiANCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQN Cj4gPiAraWRwZl9kZXZfaW5mb19nZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBy dGVfZXRoX2Rldl9pbmZvDQo+ID4gKypkZXZfaW5mbykgew0KPiA+ICsJc3RydWN0IGlkcGZfdnBv cnQgKnZwb3J0ID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsNCj4gPiArCXN0cnVjdCBpZHBmX2Fk YXB0ZXIgKmFkYXB0ZXIgPSB2cG9ydC0+YWRhcHRlcjsNCj4gPiArDQo+ID4gKwlkZXZfaW5mby0+ bWF4X3J4X3F1ZXVlcyA9IGFkYXB0ZXItPmNhcHMtPm1heF9yeF9xOw0KPiA+ICsJZGV2X2luZm8t Pm1heF90eF9xdWV1ZXMgPSBhZGFwdGVyLT5jYXBzLT5tYXhfdHhfcTsNCj4gPiArCWRldl9pbmZv LT5taW5fcnhfYnVmc2l6ZSA9IElEUEZfTUlOX0JVRl9TSVpFOw0KPiA+ICsJZGV2X2luZm8tPm1h eF9yeF9wa3RsZW4gPSBJRFBGX01BWF9GUkFNRV9TSVpFOw0KPiA+ICsNCj4gPiArCWRldl9pbmZv LT5tYXhfbXR1ID0gZGV2X2luZm8tPm1heF9yeF9wa3RsZW4gLQ0KPiBJRFBGX0VUSF9PVkVSSEVB RDsNCj4gPiArCWRldl9pbmZvLT5taW5fbXR1ID0gUlRFX0VUSEVSX01JTl9NVFU7DQo+ID4gKw0K PiA+ICsJZGV2X2luZm8tPm1heF9tYWNfYWRkcnMgPSBJRFBGX05VTV9NQUNBRERSX01BWDsNCj4g DQo+IEkgZ3Vlc3MgaXQgbWFrZSBzZW5zZSBpZiBhbmQgb25seSBpZiB5b3Ugc3VwcG9ydCBBUEkg dG8gYWRkL3JlbW92ZSB1bmljYXN0DQo+IE1BQyBhZGRyZXNzZXMuDQoNClllcywgd2lsbCByZW1v dmUgdGhpcyBpbmZvLg0KPiANCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArDQo+IA0KPiBb c25pcF0NCj4gDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiAraWRwZl9pbml0X3Zwb3J0KHN0cnVjdCBy dGVfZXRoX2RldiAqZGV2KSB7DQo+ID4gKwlzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQgPSBkZXYt PmRhdGEtPmRldl9wcml2YXRlOw0KPiA+ICsJc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlciA9 IHZwb3J0LT5hZGFwdGVyOw0KPiA+ICsJdWludDE2X3QgaWR4ID0gYWRhcHRlci0+Y3VyX3Zwb3J0 X2lkeDsNCj4gPiArCXN0cnVjdCB2aXJ0Y2hubDJfY3JlYXRlX3Zwb3J0ICp2cG9ydF9pbmZvID0N Cj4gPiArCQkoc3RydWN0IHZpcnRjaG5sMl9jcmVhdGVfdnBvcnQgKilhZGFwdGVyLQ0KPiA+dnBv cnRfcmVjdl9pbmZvW2lkeF07DQo+ID4gKwlpbnQgaSwgdHlwZSwgcmV0Ow0KPiA+ICsNCj4gPiAr CXZwb3J0LT52cG9ydF9pZCA9IHZwb3J0X2luZm8tPnZwb3J0X2lkOw0KPiA+ICsJdnBvcnQtPnR4 cV9tb2RlbCA9IHZwb3J0X2luZm8tPnR4cV9tb2RlbDsNCj4gPiArCXZwb3J0LT5yeHFfbW9kZWwg PSB2cG9ydF9pbmZvLT5yeHFfbW9kZWw7DQo+ID4gKwl2cG9ydC0+bnVtX3R4X3EgPSB2cG9ydF9p bmZvLT5udW1fdHhfcTsNCj4gPiArCXZwb3J0LT5udW1fdHhfY29tcGxxID0gdnBvcnRfaW5mby0+ bnVtX3R4X2NvbXBscTsNCj4gPiArCXZwb3J0LT5udW1fcnhfcSA9IHZwb3J0X2luZm8tPm51bV9y eF9xOw0KPiA+ICsJdnBvcnQtPm51bV9yeF9idWZxID0gdnBvcnRfaW5mby0+bnVtX3J4X2J1ZnE7 DQo+ID4gKwl2cG9ydC0+bWF4X210dSA9IHZwb3J0X2luZm8tPm1heF9tdHU7DQo+ID4gKwlydGVf bWVtY3B5KHZwb3J0LT5kZWZhdWx0X21hY19hZGRyLA0KPiA+ICsJCSAgIHZwb3J0X2luZm8tPmRl ZmF1bHRfbWFjX2FkZHIsIEVUSF9BTEVOKTsNCj4gPiArCXZwb3J0LT5zd19pZHggPSBpZHg7DQo+ ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IHZwb3J0X2luZm8tPmNodW5rcy5udW1fY2h1bmtz OyBpKyspIHsNCj4gPiArCQl0eXBlID0gdnBvcnRfaW5mby0+Y2h1bmtzLmNodW5rc1tpXS50eXBl Ow0KPiA+ICsJCXN3aXRjaCAodHlwZSkgew0KPiA+ICsJCWNhc2UgVklSVENITkwyX1FVRVVFX1RZ UEVfVFg6DQo+ID4gKwkJCXZwb3J0LT5jaHVua3NfaW5mby50eF9zdGFydF9xaWQgPQ0KPiA+ICsJ CQkJdnBvcnRfaW5mby0+Y2h1bmtzLmNodW5rc1tpXS5zdGFydF9xdWV1ZV9pZDsNCj4gPiArCQkJ dnBvcnQtPmNodW5rc19pbmZvLnR4X3F0YWlsX3N0YXJ0ID0NCj4gPiArCQkJCXZwb3J0X2luZm8t PmNodW5rcy5jaHVua3NbaV0ucXRhaWxfcmVnX3N0YXJ0Ow0KPiA+ICsJCQl2cG9ydC0+Y2h1bmtz X2luZm8udHhfcXRhaWxfc3BhY2luZyA9DQo+ID4gKwkJCQl2cG9ydF9pbmZvLQ0KPiA+Y2h1bmtz LmNodW5rc1tpXS5xdGFpbF9yZWdfc3BhY2luZzsNCj4gPiArCQkJYnJlYWs7DQo+ID4gKwkJY2Fz ZSBWSVJUQ0hOTDJfUVVFVUVfVFlQRV9SWDoNCj4gPiArCQkJdnBvcnQtPmNodW5rc19pbmZvLnJ4 X3N0YXJ0X3FpZCA9DQo+ID4gKwkJCQl2cG9ydF9pbmZvLT5jaHVua3MuY2h1bmtzW2ldLnN0YXJ0 X3F1ZXVlX2lkOw0KPiA+ICsJCQl2cG9ydC0+Y2h1bmtzX2luZm8ucnhfcXRhaWxfc3RhcnQgPQ0K PiA+ICsJCQkJdnBvcnRfaW5mby0+Y2h1bmtzLmNodW5rc1tpXS5xdGFpbF9yZWdfc3RhcnQ7DQo+ ID4gKwkJCXZwb3J0LT5jaHVua3NfaW5mby5yeF9xdGFpbF9zcGFjaW5nID0NCj4gPiArCQkJCXZw b3J0X2luZm8tDQo+ID5jaHVua3MuY2h1bmtzW2ldLnF0YWlsX3JlZ19zcGFjaW5nOw0KPiA+ICsJ CQlicmVhazsNCj4gPiArCQljYXNlIFZJUlRDSE5MMl9RVUVVRV9UWVBFX1RYX0NPTVBMRVRJT046 DQo+ID4gKwkJCXZwb3J0LT5jaHVua3NfaW5mby50eF9jb21wbF9zdGFydF9xaWQgPQ0KPiA+ICsJ CQkJdnBvcnRfaW5mby0+Y2h1bmtzLmNodW5rc1tpXS5zdGFydF9xdWV1ZV9pZDsNCj4gPiArCQkJ dnBvcnQtPmNodW5rc19pbmZvLnR4X2NvbXBsX3F0YWlsX3N0YXJ0ID0NCj4gPiArCQkJCXZwb3J0 X2luZm8tPmNodW5rcy5jaHVua3NbaV0ucXRhaWxfcmVnX3N0YXJ0Ow0KPiA+ICsJCQl2cG9ydC0+ Y2h1bmtzX2luZm8udHhfY29tcGxfcXRhaWxfc3BhY2luZyA9DQo+ID4gKwkJCQl2cG9ydF9pbmZv LQ0KPiA+Y2h1bmtzLmNodW5rc1tpXS5xdGFpbF9yZWdfc3BhY2luZzsNCj4gPiArCQkJYnJlYWs7 DQo+ID4gKwkJY2FzZSBWSVJUQ0hOTDJfUVVFVUVfVFlQRV9SWF9CVUZGRVI6DQo+ID4gKwkJCXZw b3J0LT5jaHVua3NfaW5mby5yeF9idWZfc3RhcnRfcWlkID0NCj4gPiArCQkJCXZwb3J0X2luZm8t PmNodW5rcy5jaHVua3NbaV0uc3RhcnRfcXVldWVfaWQ7DQo+ID4gKwkJCXZwb3J0LT5jaHVua3Nf aW5mby5yeF9idWZfcXRhaWxfc3RhcnQgPQ0KPiA+ICsJCQkJdnBvcnRfaW5mby0+Y2h1bmtzLmNo dW5rc1tpXS5xdGFpbF9yZWdfc3RhcnQ7DQo+ID4gKwkJCXZwb3J0LT5jaHVua3NfaW5mby5yeF9i dWZfcXRhaWxfc3BhY2luZyA9DQo+ID4gKwkJCQl2cG9ydF9pbmZvLQ0KPiA+Y2h1bmtzLmNodW5r c1tpXS5xdGFpbF9yZWdfc3BhY2luZzsNCj4gPiArCQkJYnJlYWs7DQo+ID4gKwkJZGVmYXVsdDoN Cj4gPiArCQkJUE1EX0lOSVRfTE9HKEVSUiwgIlVuc3VwcG9ydGVkIHF1ZXVlIHR5cGUiKTsNCj4g PiArCQkJYnJlYWs7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldCA9IGlkcGZf cGFyc2VfZGV2YXJnX2lkKGRldi0+ZGF0YS0+bmFtZSk7DQo+ID4gKwlpZiAocmV0IDwgMCkgew0K PiA+ICsJCVBNRF9JTklUX0xPRyhFUlIsICJGYWlsZWQgdG8gcGFyc2UgZGV2YXJnIGlkLiIpOw0K PiA+ICsJCXJldHVybiAtMTsNCj4gDQo+IE5lZ2F0aXZlIGVycm5vIG11c3QgYmUgcmV0dXJuZWQg c2luY2UgZmluYWxseSBpdCBpcyB1c2VkIGFzDQo+IHJ0ZV9ldGhfZGV2X2NyZWF0ZSgpIHJldHVy biB2YWx1ZSB3aGljaCBpcyBuZWdhdGl2ZSBlcnJuby4NCg0KDQpNYWtlIHNlbnNlLCB3aWxsIHJl ZmluZSB0aGUgcmV0dXJuIHZhbHVlLCBhbmQgY2hlY2sgYWxsIHNpbWlsYXIgY2FzZXMuDQo+IA0K PiA+ICsJfQ0KPiA+ICsJdnBvcnQtPmRldmFyZ19pZCA9IHJldDsNCj4gPiArDQo+ID4gKwl2cG9y dC0+ZGV2X2RhdGEgPSBkZXYtPmRhdGE7DQo+ID4gKw0KPiA+ICsJYWRhcHRlci0+dnBvcnRzW2lk eF0gPSB2cG9ydDsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIGludA0KPiA+ICtpZHBmX2Rldl9jb25maWd1cmUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpk ZXYpIHsNCj4gPiArCXN0cnVjdCBydGVfZXRoX2NvbmYgKmNvbmYgPSAmZGV2LT5kYXRhLT5kZXZf Y29uZjsNCj4gPiArDQo+ID4gKwlpZiAoY29uZi0+bGlua19zcGVlZHMgJiBSVEVfRVRIX0xJTktf U1BFRURfRklYRUQpIHsNCj4gPiArCQlQTURfSU5JVF9MT0coRVJSLCAiU2V0dGluZyBsaW5rIHNw ZWVkIGlzIG5vdCBzdXBwb3J0ZWQiKTsNCj4gPiArCQlyZXR1cm4gLTE7DQo+IA0KPiBUaGUgcmV0 dXJuIHZhbHVlIGlzIHVzZWQgYXMgcnRlX2V0aF9kZXZfY29uZmlndXJlKCkgcmV0dXJuIHZhbHVl IHdoaWNoDQo+IHNob3VsZCBiZSBuZWdhdGl2ZSBlcnJubywgbm90IC0xLg0KPiANCj4gUGxlYXNl LCBkb3VibGUtY2hlY2sgYWxsIG90aGVyIHNpbWlsYXIgY2FzZXMuDQo+IA0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCWlmICgoZGV2LT5kYXRhLT5uYl9yeF9xdWV1ZXMgPT0gMSAmJiBjb25mLT5yeG1v ZGUubXFfbW9kZSAhPQ0KPiBSVEVfRVRIX01RX1JYX05PTkUpIHx8DQo+ID4gKwkgICAgKGRldi0+ ZGF0YS0+bmJfcnhfcXVldWVzID4gMSAmJiBjb25mLT5yeG1vZGUubXFfbW9kZSAhPQ0KPiA+ICtS VEVfRVRIX01RX1JYX1JTUykpIHsNCj4gDQo+IFJpZ3RoIG5vdyAoanVzdCBhZnRlciB0aGUgcGF0 Y2gpIHlvdSBkb24ndCBzdXBwb3J0IFJTUyBzaW5jZSB5b3UgZG9uJ3QNCj4gaGFuZGxlIGNvcnJl c3BvbmRpbmcgY29uZmlndXJhdG9pbiBpdGVtcy4gU28sIE5vdGhpbmcgZXhjZXB0IFJYX05PTkUg aXMNCj4gc3VwcG9ydGVkLiBSWF9SU1Mgc2hvdWxkIGJlIGFkZGVkIHdoZW4geW91IHJlYWxseSBz dXBwb3J0IGl0IChsYXRlcikuDQo+IA0KPiA+ICsJCVBNRF9JTklUX0xPRyhFUlIsICJNdWx0aS1x dWV1ZSBwYWNrZXQgZGlzdHJpYnV0aW9uDQo+IG1vZGUgJWQgaXMgbm90IHN1cHBvcnRlZCIsDQo+ ID4gKwkJCSAgICAgY29uZi0+cnhtb2RlLm1xX21vZGUpOw0KPiA+ICsJCXJldHVybiAtMTsNCj4g PiArCX0NCj4gDQo+IFtzbmlwXQ0KPiANCj4gPiArc3RydWN0IGlkcGZfYWRhcHRlciAqDQo+ID4g K2lkcGZfZmluZF9hZGFwdGVyKHN0cnVjdCBydGVfcGNpX2RldmljZSAqcGNpX2Rldikgew0KPiA+ ICsJc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcjsNCj4gPiArDQo+ID4gKwlydGVfc3Bpbmxv Y2tfbG9jaygmaWRwZl9hZGFwdGVyX2xvY2spOw0KPiA+ICsJVEFJTFFfRk9SRUFDSChhZGFwdGVy LCAmaWRwZl9hZGFwdGVyX2xpc3QsIG5leHQpIHsNCj4gPiArCQlpZiAoc3RybmNtcChhZGFwdGVy LT5uYW1lLCBwY2lfZGV2LT5kZXZpY2UubmFtZSwNCj4gUENJX1BSSV9TVFJfU0laRSkgPT0gMCkg ew0KPiA+ICsJCQlydGVfc3BpbmxvY2tfdW5sb2NrKCZpZHBmX2FkYXB0ZXJfbG9jayk7DQo+ID4g KwkJCXJldHVybiBhZGFwdGVyOw0KPiANCj4gUG9pbnRlciB0byBhbiBlbGVtZW50IG9mIHRoZSBs aXN0IHByb3RlY3RlZCBieSBzcGluIGxvY2sgaXMgcmV0dXJuZWQgaGVyZS4NCg0KWWVzLCB3aWxs IGZpeCBpdCBpbiB2MTUuDQo+IA0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArCXJ0ZV9zcGlubG9j a191bmxvY2soJmlkcGZfYWRhcHRlcl9sb2NrKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gTlVMTDsN Cj4gPiArfQ0KPiANCj4gW3NuaXBdDQo+IA0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK2lkcGZfcGNp X3JlbW92ZShzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9kZXYpIHsNCj4gPiArCXN0cnVjdCBp ZHBmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBpZHBmX2ZpbmRfYWRhcHRlcihwY2lfZGV2KTsNCj4gDQo+ IFF1ZXN0aW9uIGFib3V0IGxvY2tpbmcgc3RpbGwgc3RhbmRzLiBJJ20gbm90IHN1cmUgdGhhdCBJ IHVuZGVyc3RhbmQgdGhlDQo+IHB1cnBvc2Ugb2YgbG9ja2luZyBoZXJlLiBPciB3aHkgY2FuIGl0 IGJlIG9taXR0ZWQuDQo+IEFueXdheSwgcmV0dXJpbmcgcG9pbnRlciB0byB0aGUgbGlzdCBlbGVt ZW50IHdoZW4gdGhlIGxpc3QgaXMgcHJvdGVjdGVkIGJ5DQo+IGxvY2sgbG9va3Mgc3VzcGljb3Vz Lg0KPiANCj4gPiArCXVpbnQxNl90IHBvcnRfaWQ7DQo+ID4gKw0KPiA+ICsJLyogRXRoZGV2IGNy ZWF0ZWQgY2FuIGJlIGZvdW5kIFJURV9FVEhfRk9SRUFDSF9ERVZfT0YNCj4gdGhyb3VnaCBydGVf ZGV2aWNlICovDQo+ID4gKwlSVEVfRVRIX0ZPUkVBQ0hfREVWX09GKHBvcnRfaWQsICZwY2lfZGV2 LT5kZXZpY2UpIHsNCj4gPiArCQkJcnRlX2V0aF9kZXZfY2xvc2UocG9ydF9pZCk7DQo+ID4gKwl9 DQo+ID4gKw0KPiA+ICsJcnRlX3NwaW5sb2NrX2xvY2soJmlkcGZfYWRhcHRlcl9sb2NrKTsNCj4g PiArCVRBSUxRX1JFTU9WRSgmaWRwZl9hZGFwdGVyX2xpc3QsIGFkYXB0ZXIsIG5leHQpOw0KPiA+ ICsJcnRlX3NwaW5sb2NrX3VubG9jaygmaWRwZl9hZGFwdGVyX2xvY2spOw0KPiA+ICsJaWRwZl9h ZGFwdGVyX3JlbChhZGFwdGVyKTsNCj4gPiArCXJ0ZV9mcmVlKGFkYXB0ZXIpOw0KPiA+ICsNCj4g PiArCXJldHVybiAwOw0KPiA+ICt9DQo+IA0KPiBbc25pcF0NCj4gDQo+ID4gK2ludA0KPiA+ICtp ZHBmX3ZjX2dldF9jYXBzKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpIHsNCj4gPiArCXN0 cnVjdCB2aXJ0Y2hubDJfZ2V0X2NhcGFiaWxpdGllcyBjYXBzX21zZzsNCj4gPiArCXN0cnVjdCBp ZHBmX2NtZF9pbmZvIGFyZ3M7DQo+ID4gKwlpbnQgZXJyOw0KPiA+ICsNCj4gPiArCSBtZW1zZXQo JmNhcHNfbXNnLCAwLCBzaXplb2Yoc3RydWN0IHZpcnRjaG5sMl9nZXRfY2FwYWJpbGl0aWVzKSk7 DQo+ID4gKwkgY2Fwc19tc2cuY3N1bV9jYXBzID0NCj4gPiArCQkgVklSVENITkwyX0NBUF9UWF9D U1VNX0wzX0lQVjQJCXwNCj4gPiArCQkgVklSVENITkwyX0NBUF9UWF9DU1VNX0w0X0lQVjRfVENQ CXwNCj4gPiArCQkgVklSVENITkwyX0NBUF9UWF9DU1VNX0w0X0lQVjRfVURQCXwNCj4gPiArCQkg VklSVENITkwyX0NBUF9UWF9DU1VNX0w0X0lQVjRfU0NUUAl8DQo+ID4gKwkJIFZJUlRDSE5MMl9D QVBfVFhfQ1NVTV9MNF9JUFY2X1RDUAl8DQo+ID4gKwkJIFZJUlRDSE5MMl9DQVBfVFhfQ1NVTV9M NF9JUFY2X1VEUAl8DQo+ID4gKwkJIFZJUlRDSE5MMl9DQVBfVFhfQ1NVTV9MNF9JUFY2X1NDVFAJ fA0KPiA+ICsJCSBWSVJUQ0hOTDJfQ0FQX1RYX0NTVU1fR0VORVJJQwkJfA0KPiA+ICsJCSBWSVJU Q0hOTDJfQ0FQX1JYX0NTVU1fTDNfSVBWNAkJfA0KPiA+ICsJCSBWSVJUQ0hOTDJfQ0FQX1JYX0NT VU1fTDRfSVBWNF9UQ1AJfA0KPiA+ICsJCSBWSVJUQ0hOTDJfQ0FQX1JYX0NTVU1fTDRfSVBWNF9V RFAJfA0KPiA+ICsJCSBWSVJUQ0hOTDJfQ0FQX1JYX0NTVU1fTDRfSVBWNF9TQ1RQCXwNCj4gPiAr CQkgVklSVENITkwyX0NBUF9SWF9DU1VNX0w0X0lQVjZfVENQCXwNCj4gPiArCQkgVklSVENITkwy X0NBUF9SWF9DU1VNX0w0X0lQVjZfVURQCXwNCj4gPiArCQkgVklSVENITkwyX0NBUF9SWF9DU1VN X0w0X0lQVjZfU0NUUAl8DQo+ID4gKwkJIFZJUlRDSE5MMl9DQVBfUlhfQ1NVTV9HRU5FUklDOw0K PiA+ICsNCj4gPiArCSBjYXBzX21zZy5zZWdfY2FwcyA9DQo+ID4gKwkJIFZJUlRDSE5MMl9DQVBf U0VHX0lQVjRfVENQCQl8DQo+ID4gKwkJIFZJUlRDSE5MMl9DQVBfU0VHX0lQVjRfVURQCQl8DQo+ ID4gKwkJIFZJUlRDSE5MMl9DQVBfU0VHX0lQVjRfU0NUUAkJfA0KPiA+ICsJCSBWSVJUQ0hOTDJf Q0FQX1NFR19JUFY2X1RDUAkJfA0KPiA+ICsJCSBWSVJUQ0hOTDJfQ0FQX1NFR19JUFY2X1VEUAkJ fA0KPiA+ICsJCSBWSVJUQ0hOTDJfQ0FQX1NFR19JUFY2X1NDVFAJCXwNCj4gPiArCQkgVklSVENI TkwyX0NBUF9TRUdfR0VORVJJQzsNCj4gPiArDQo+ID4gKwkgY2Fwc19tc2cucnNzX2NhcHMgPQ0K PiA+ICsJCSBWSVJUQ0hOTDJfQ0FQX1JTU19JUFY0X1RDUAkJfA0KPiA+ICsJCSBWSVJUQ0hOTDJf Q0FQX1JTU19JUFY0X1VEUAkJfA0KPiA+ICsJCSBWSVJUQ0hOTDJfQ0FQX1JTU19JUFY0X1NDVFAJ CXwNCj4gPiArCQkgVklSVENITkwyX0NBUF9SU1NfSVBWNF9PVEhFUgkJfA0KPiA+ICsJCSBWSVJU Q0hOTDJfQ0FQX1JTU19JUFY2X1RDUAkJfA0KPiA+ICsJCSBWSVJUQ0hOTDJfQ0FQX1JTU19JUFY2 X1VEUAkJfA0KPiA+ICsJCSBWSVJUQ0hOTDJfQ0FQX1JTU19JUFY2X1NDVFAJCXwNCj4gPiArCQkg VklSVENITkwyX0NBUF9SU1NfSVBWNl9PVEhFUgkJfA0KPiA+ICsJCSBWSVJUQ0hOTDJfQ0FQX1JT U19JUFY0X0FICQl8DQo+ID4gKwkJIFZJUlRDSE5MMl9DQVBfUlNTX0lQVjRfRVNQCQl8DQo+ID4g KwkJIFZJUlRDSE5MMl9DQVBfUlNTX0lQVjRfQUhfRVNQCQl8DQo+ID4gKwkJIFZJUlRDSE5MMl9D QVBfUlNTX0lQVjZfQUgJCXwNCj4gPiArCQkgVklSVENITkwyX0NBUF9SU1NfSVBWNl9FU1AJCXwN Cj4gPiArCQkgVklSVENITkwyX0NBUF9SU1NfSVBWNl9BSF9FU1A7DQo+ID4gKw0KPiA+ICsJIGNh cHNfbXNnLm90aGVyX2NhcHMgPQ0KPiA+ICsJCSBWSVJUQ0hOTDJfQ0FQX1NQTElUUV9RU0NIRUQJ CXwNCj4gPiArCQkgVklSVENITkwyX0NBUF9DUkMJCQl8DQo+ID4gKwkJIFZJUlRDSE5MMl9DQVBf V0JfT05fSVRSCQl8DQo+ID4gKwkJIFZJUlRDSE5MMl9DQVBfUFJPTUlTQwkJCXwNCj4gPiArCQkg VklSVENITkwyX0NBUF9MSU5LX1NQRUVECQl8DQo+ID4gKwkJIFZJUlRDSE5MMl9DQVBfVkxBTjsN Cj4gPiArDQo+IA0KPiBNeSBxdWVzdGlvbiBhc2tlIGluIHYxMSBzdGlsbCBzdGFuZHMgc2luY2Ug SSBoYXZlIG5vIGFuIGFuc3dlciB5ZXQuDQo+IEJhc2ljYWxseSBpdCBsb29rcyBsaWtlIGNvcnJl c3BvbmRpbmcgY2FwcyBzaG91bGQgYmUgYWRkZWQgd2hlbg0KPiBjb3JyZXNwb25kaW5nIG9mZmxv YWQgc3VwcG9ydCBpcyBhZGRlZCBsYXRlci4gSWYgbm8sIEknZCBsaWtlIHRvIHVuZGVyc3RhbmQN Cj4gd2h5Lg0KPiANCj4gPiArCWFyZ3Mub3BzID0gVklSVENITkwyX09QX0dFVF9DQVBTOw0KPiA+ ICsJYXJncy5pbl9hcmdzID0gKHVpbnQ4X3QgKikmY2Fwc19tc2c7DQo+ID4gKwlhcmdzLmluX2Fy Z3Nfc2l6ZSA9IHNpemVvZihjYXBzX21zZyk7DQo+ID4gKwlhcmdzLm91dF9idWZmZXIgPSBhZGFw dGVyLT5tYnhfcmVzcDsNCj4gPiArCWFyZ3Mub3V0X3NpemUgPSBJRFBGX0RGTFRfTUJYX0JVRl9T SVpFOw0KPiA+ICsNCj4gPiArCWVyciA9IGlkcGZfZXhlY3V0ZV92Y19jbWQoYWRhcHRlciwgJmFy Z3MpOw0KPiA+ICsJaWYgKGVyciAhPSAwKSB7DQo+ID4gKwkJUE1EX0RSVl9MT0coRVJSLA0KPiA+ ICsJCQkgICAgIkZhaWxlZCB0byBleGVjdXRlIGNvbW1hbmQgb2YNCj4gVklSVENITkwyX09QX0dF VF9DQVBTIik7DQo+ID4gKwkJcmV0dXJuIGVycjsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlydGVf bWVtY3B5KGFkYXB0ZXItPmNhcHMsIGFyZ3Mub3V0X2J1ZmZlciwgc2l6ZW9mKGNhcHNfbXNnKSk7 DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gDQo+IFtzbmlwXQ0KPiANCj4gPiAr aW50DQo+ID4gK2lkcGZfdmNfZW5hX2Rpc192cG9ydChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQs IGJvb2wgZW5hYmxlKSB7DQo+ID4gKwlzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyID0gdnBv cnQtPmFkYXB0ZXI7DQo+ID4gKwlzdHJ1Y3QgdmlydGNobmwyX3Zwb3J0IHZjX3Zwb3J0Ow0KPiA+ ICsJc3RydWN0IGlkcGZfY21kX2luZm8gYXJnczsNCj4gPiArCWludCBlcnI7DQo+ID4gKw0KPiA+ ICsJdmNfdnBvcnQudnBvcnRfaWQgPSB2cG9ydC0+dnBvcnRfaWQ7DQo+ID4gKwlhcmdzLm9wcyA9 IGVuYWJsZSA/IFZJUlRDSE5MMl9PUF9FTkFCTEVfVlBPUlQgOg0KPiA+ICsJCQkgICAgVklSVENI TkwyX09QX0RJU0FCTEVfVlBPUlQ7DQo+ID4gKwlhcmdzLmluX2FyZ3MgPSAodTggKikmdmNfdnBv cnQ7DQo+IA0KPiB1aW50OF90IHNob3VsZCBiZSB1c2VkIGFzIHlvdSBkbyBhYm92ZSBpbiBpZHBm X3ZjX2Rlc3Ryb3lfdnBvcnQoKSBhbmQNCj4gbWFueSBvdGhlciBjYXNlcy4NCj4gDQo+IFtzbmlw XQ0K