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 42023426D6; Fri, 6 Oct 2023 22:06:23 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B4111402E6; Fri, 6 Oct 2023 22:06:22 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.115]) by mails.dpdk.org (Postfix) with ESMTP id E4F91402E1 for ; Fri, 6 Oct 2023 22:06:19 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1696622780; x=1728158780; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=aklKfb3lFQCXKi+/w9ZbArTHajhXMXFcSKS0Zjdk3DA=; b=WV6LspyYwmHGG3OasUTx0es6ccUepkKd5Cj/IC7VlRocQOxSouwvTStt jFkqHAGfqM/wC4JsOJ+8desE14OfrfFf27RM7B3i5By6+8nwqbfpPz5Nl 3QnoeNNnztXa9ETmHPcKCxmfhFgmJl3PFRvhVUkhKhSSlR1VhR+4fZrKz NVfCeq3+wHcEV2KI44LMrY8qDHQPgtydupfdBxHDA5s0JRkwpaqmoM38n 1PehkiLnNhqHdVbKZBYB4HswwUQG+qoe/bHXA1WxwOZPam1Z7gZyPwQvn CkDm4SV33wIKilVSCEcXMVy9oMaq9bDk0nSP6vq0HMsJVNVEDJc60FdBl A==; X-IronPort-AV: E=McAfee;i="6600,9927,10855"; a="383711311" X-IronPort-AV: E=Sophos;i="6.03,204,1694761200"; d="scan'208";a="383711311" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2023 13:06:14 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10855"; a="868458111" X-IronPort-AV: E=Sophos;i="6.03,204,1694761200"; d="scan'208";a="868458111" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga002.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 06 Oct 2023 13:06:14 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Fri, 6 Oct 2023 13:06:13 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Fri, 6 Oct 2023 13:06:13 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32 via Frontend Transport; Fri, 6 Oct 2023 13:06:13 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.176) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.32; Fri, 6 Oct 2023 13:05:52 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Km0PQBTWw4ogHuQ6N1fM6B1cWUCsE1l8eHJzVco1J/KttUPjMDL7/ozWiaVQswqRUIiRJmziZKFEuISRSVZ1qha43ojzRyFNh8pWqcnwQejOjN5X5OZfxyLqe24r+YOTsO09zDwEn2oz9RO2iiOS1GTS4cRlnDc7IlAx8v7uXJgvnm4Dcq37/HjcOW2Kcfo45mTE3Ai/AXUjEhQahpCvee+3MkqqKRDzchGDYvkEN0DAsmhOwwNUOBbeCfWzlynA9QhJzRK9l0w7ebZzRlbPPn4/0u8fvyOE2Mtnt2fr8UGsglYCT68uVqXg8EDAUJh4AOfYE5jklThmBmc4nLfk+w== 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=aklKfb3lFQCXKi+/w9ZbArTHajhXMXFcSKS0Zjdk3DA=; b=SqjP3YICXwZJdqpWfsZv/LTZobV+z42b60IIfu7DQzrM/n+kFAI3v6Qp3bYGHkPWzFZt+8q8dJydBmiyqX4GriYYd42cyfrQ8aNso9uCZWCwUpBAyLRKIJzWbDTeF5RqJG0wU3k94oWglODMBBevIGDsPqEMXFawYu7hsytgc7tsTa4T3hCZ3dP1yCHvi3H2bnUPzHbZ2vI5UKSzv6i1qrMTjwPxm0StYCDRGqBvnFrFZX/7XkC32VNvE8Moe+iAhyEGj8uAd/jeY1/PygLJQVzWZiy7Sd/0l1ycM0JoaCf0BuFHp5cl21iFyHkLVyaXg5tDxIlN10kK4PKms5Duqg== 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 BY5PR11MB4451.namprd11.prod.outlook.com (2603:10b6:a03:1cb::30) by MN6PR11MB8242.namprd11.prod.outlook.com (2603:10b6:208:474::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.25; Fri, 6 Oct 2023 20:05:47 +0000 Received: from BY5PR11MB4451.namprd11.prod.outlook.com ([fe80::c10d:65be:798a:520a]) by BY5PR11MB4451.namprd11.prod.outlook.com ([fe80::c10d:65be:798a:520a%7]) with mapi id 15.20.6838.040; Fri, 6 Oct 2023 20:05:47 +0000 From: "Chautru, Nicolas" To: Maxime Coquelin , "dev@dpdk.org" CC: "hemant.agrawal@nxp.com" , "david.marchand@redhat.com" , "Vargas, Hernan" Subject: RE: [PATCH v5 08/12] baseband/acc: add FEC capabilities for the VRB2 variant Thread-Topic: [PATCH v5 08/12] baseband/acc: add FEC capabilities for the VRB2 variant Thread-Index: AQHZ98YgXKuqmEkqk0+v+m/C6dKP27A8hcQAgACrMVA= Date: Fri, 6 Oct 2023 20:05:47 +0000 Message-ID: References: <20231005194907.557517-1-nicolas.chautru@intel.com> <20231005194907.557517-9-nicolas.chautru@intel.com> <5fb98daa-f452-bab5-52da-1cdd7f5ba0ae@redhat.com> In-Reply-To: <5fb98daa-f452-bab5-52da-1cdd7f5ba0ae@redhat.com> 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=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BY5PR11MB4451:EE_|MN6PR11MB8242:EE_ x-ms-office365-filtering-correlation-id: 01f9c418-1b5c-41ad-1dfb-08dbc6a7a18a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: TUwkAgV/OcB/uAB036TtDl0Wu+V7INJCQPulgiI78sRqBYExVm0mAcSzCwd82nosCmrgpCWarZ5tPuXST1YE9xY9WvkwRcntwg9ZbDZzhg9vDg6Gb5NeroJzk0ljotg/RphxzaMwdVr5Ne0JtaMLRAPA6DX0L+b/AZwj7Ljvj2LvbdyQLpdebwIhJKuUX7Osb3GAFFK/BhNnSAXwPc2cEP5e7TviNM5lHG5sOJ68agpHdKWiibQ+RgRK+4R/QYPA+P/oqJFo0DHAEszOeJ2WQdVCAdyHKlg/27i6Ei6xGayqkdgnpbIl1SR3QYU08mX4Sj7rHmgg984p7NlXtuULfhJ5lf02Sjd6r454/zRsDHnUfghEvS4UqSONkh855fKCZCHrA8IcFfLH9CbVHtX47Q1+G19G9ZM3Z6LvYjLKM5a1tI1D6zAwNCUFobjn1zsKeu2GzpgWhYsiRFo6bklgxp6hOht0Oai4dbK00jNSQXyJPxuTw6y3stb8nqisb4WNRmHU7FwoO2G1znIZoS2cVOlJTDMZN0HF4X0Riw24oCBLuIUZPQXQGfS1SSk80XU53SxKBc7/cSQNDm+WM0k9kdsyx+iT1Kob6fXJov+PCT1v7yUI9yY9TM2dfgl6umNs x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY5PR11MB4451.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366004)(376002)(396003)(39860400002)(346002)(136003)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(107886003)(71200400001)(9686003)(4326008)(53546011)(2906002)(66946007)(30864003)(5660300002)(52536014)(55016003)(316002)(54906003)(41300700001)(8676002)(8936002)(478600001)(76116006)(66446008)(82960400001)(6506007)(38100700002)(33656002)(7696005)(66476007)(64756008)(66556008)(122000001)(110136005)(38070700005)(86362001)(83380400001)(26005)(579004)(559001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?L0xDcU9GWFByQmdwTGFZWTVoRVFLVHVQRjZFVjV0dXBWSk9uTEFQNFJnY0Q0?= =?utf-8?B?MXB6M0RQNmx3Q2VrVS91TEhDTXdjeEVRRWZ6amF5VG8vTGlRSWZFcGVTU2xq?= =?utf-8?B?dlgvaWVCTUZuVnlzT0t2YVFtM0JJa0RIWk5vaWFmZlZFbmdHdG1TM3NnYzkz?= =?utf-8?B?aHc3blV2QW1ZOWNLNzRJTXQ2ME4vRGRsL0V2QTJPNVlZcTFDRFcxMXFzSTA2?= =?utf-8?B?YnFiRUgwa1FSTEVyMEwwQmU4SGtDZHp3STZxVkthYVhoV2FSbkpETTA2SVpm?= =?utf-8?B?TnBtTFEwandzY280TkdITGd4OTdudFUvV0I5VjRRTFJ6T1lNaW40emlHWURO?= =?utf-8?B?WVlFOGR0WWFIYlNjbUtmeWRBWEQxQU1aYkNBWERjenZPeDRNRHRuNnlsSlpj?= =?utf-8?B?RnpFZlFNYTJTVkNlMVpIRmJPc3R4ZC9yUUxJdEhwQXZNZ2YzZ09wMi83Y3F6?= =?utf-8?B?cWtQNTlmR2IzWGN1KzZ2MktQQ0w1MDVqSlU3MXRrd0ZoQUdqOFFVajhNZ3JO?= =?utf-8?B?aXpoK1IzNWF1Qm04WlZrYU01MGd3VkRiOVlzWVBHeUZKY1JqVEpnNXFwZUUx?= =?utf-8?B?UFRpL2s4R3hraTJ5eWc2L0IrUE1Gem9lZ2x6RHV5cncwRVYrQUV0d1J1MSsw?= =?utf-8?B?dnpOcG14eHpRdXZkN1JZK2ZjYk5ZeiswNDZ5OFE3ZEJObnhaQWtQQ0cxaHgx?= =?utf-8?B?WVFteUdiRUxKTStVK1BvREppQ3NGamhZL0tSL0FEU1I0dmpPRWVlbE02MThj?= =?utf-8?B?dDVpT2VCVWNzOXRRTGZNcCtYS25PYTBSQmdKM2RJUEo4RU1CS0d3OFNzTW5i?= =?utf-8?B?YXZhSm9nWG5IRFd1Yk91WHJQL2xaNW9zYm1YWnFhc24wTm15L25YM3RWU2pX?= =?utf-8?B?VGRMK1NWcSs4ajR6ZmcvL1VYcUdUazhRb3B2eHBjeFc3RHUrZFJkL1Qram9H?= =?utf-8?B?c3M0V1R3UlJSMEVac2l2S1A0My9RWHI2d1N2bTdsVC9TWm1lSHp1L2VrSEcz?= =?utf-8?B?Nzc1aUlaM3RyWmhNdFRMNlFHeXMwaUtVdEVqNTI1Wjcrbjl0RTl3aXNHaFFK?= =?utf-8?B?ME10aDhTTjZtb1VjZUFUZXhyeU40cnEyTjEybkdFbFRFcUFKVzJXV2pUOENM?= =?utf-8?B?cGthZzlNUE43ZStxdWl4T0k4WDZOS2dEVDNUejZhbnVnQlZLSXVJai9vMUlN?= =?utf-8?B?c3dMZjRtNWhIQi9lazlHNDR3aDRuSlRkc3BHaVpQTCtxLzF2aXd4Z1U5dENJ?= =?utf-8?B?VjZkMUR1YUJpbGMzNHJrbWpPNmI5Uitxb0VyazJBNXozWFNDUkVnYTM2bkRr?= =?utf-8?B?M3FaYjNNV2pscEszU0FOaW01QzN1TUlaYitPMDNRaThBcGZWUkkvNktSS1hv?= =?utf-8?B?VVFQMDc1YVRKczY5RGo1MlU1TDJ5SHowVHRrYkpxM0V0UzgvekhTUDEvdVJU?= =?utf-8?B?a0E0RTR0cU1zd1AwakNtTG1CYTJNZjk5MGo3S1FGRk1SYU1MN21yaXNmWjNZ?= =?utf-8?B?WHUxcXFSa3MwZmIxUUZLbHhvNWg4MFpVektkc0p0L0RCSkZsMWM5Nnl6bVVY?= =?utf-8?B?ei8rZlhUVkY2cGpNZm9qRDdVTjAvdHZOVERIb2dZRHJTUHJTYlgvUGluYnhn?= =?utf-8?B?cTZndFRHcnIwZ0FZVmIxajVlTERPSHFyWkllQ096cG43bHViaytINm1IZ0FH?= =?utf-8?B?U3gvZzFnby9QWG9EVUgyU0FUSmlYUE5Nd1FEa21lZGJzdFlPYWV2eHBaU1Rh?= =?utf-8?B?RThKZVl6WHFhUnN2YmZJWFB4RFBGRnFqTHdYdHdUT21zZER6R2VYa3VZNnlE?= =?utf-8?B?aGtuYnlMRHBxTmNyRkpxOGVBL1lYTkFTaDJ6Z2ZjVExQTjVkRENkUWl0WVBs?= =?utf-8?B?azMzUll6b0lXdmVYTzFDUE5TL0ZNNVpROWgwNVRPbE4wMmJSZG85SkZGdkpO?= =?utf-8?B?YjVRZXQ5R3gxdWpQVE1YTUNqK3A0M0I0YWhEbHZrbWJOUjlMaENCQXhMUDBG?= =?utf-8?B?VkMzWThWVU81ZWtHWkFXN3hrZUd2ZTlWR2Ywa0QyTlg5VncxMkNYNHYzdUs0?= =?utf-8?B?ekc4aEh5TE9PSm1BWlBTeWZLcnE1VU44YjluTDVqU0FUYVVSWXNjL1NzTFdm?= =?utf-8?Q?6nqddTp48Ti8xbaU2GWgrTw3r?= 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: BY5PR11MB4451.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 01f9c418-1b5c-41ad-1dfb-08dbc6a7a18a X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Oct 2023 20:05:47.4546 (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: XXRyGDegVduDUzeKdBhplyY4Id+0KtMd/8UH7Ywf1rREPD4GeWy1ulgpmGK8A9xAdlYEfe7yacLi092uu8+dpUcpAWBZwC2soll/4r/g9nQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR11MB8242 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 SGkgTWF4aW1lLCANCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNYXhp bWUgQ29xdWVsaW4gPG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiBTZW50OiBGcmlkYXks IE9jdG9iZXIgNiwgMjAyMyAyOjUxIEFNDQo+IFRvOiBDaGF1dHJ1LCBOaWNvbGFzIDxuaWNvbGFz LmNoYXV0cnVAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+IENjOiBoZW1hbnQuYWdyYXdhbEBu eHAuY29tOyBkYXZpZC5tYXJjaGFuZEByZWRoYXQuY29tOyBWYXJnYXMsIEhlcm5hbg0KPiA8aGVy bmFuLnZhcmdhc0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjUgMDgvMTJdIGJh c2ViYW5kL2FjYzogYWRkIEZFQyBjYXBhYmlsaXRpZXMgZm9yIHRoZSBWUkIyDQo+IHZhcmlhbnQN Cj4gDQo+IA0KPiANCj4gT24gMTAvNS8yMyAyMTo0OSwgTmljb2xhcyBDaGF1dHJ1IHdyb3RlOg0K PiA+IE5ldyBpbXBsZW1lbnRhdGlvbiBmb3Igc29tZSBvZiB0aGUgRkVDIGZlYXR1cmVzIHNwZWNp ZmljIHRvIHRoZSBWUkIyDQo+ID4gdmFyaWFudC4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IE5p Y29sYXMgQ2hhdXRydSA8bmljb2xhcy5jaGF1dHJ1QGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAg IGRyaXZlcnMvYmFzZWJhbmQvYWNjL3J0ZV92cmJfcG1kLmMgfCAzNzAgKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0NCj4gPiAgIDEgZmlsZSBjaGFuZ2VkLCAzMjggaW5zZXJ0aW9ucygrKSwg NDIgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9iYXNlYmFuZC9h Y2MvcnRlX3ZyYl9wbWQuYw0KPiA+IGIvZHJpdmVycy9iYXNlYmFuZC9hY2MvcnRlX3ZyYl9wbWQu Yw0KPiA+IGluZGV4IGIzNmRkNmNjZDguLmRhYjYxZmQ1ZGYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJp dmVycy9iYXNlYmFuZC9hY2MvcnRlX3ZyYl9wbWQuYw0KPiA+ICsrKyBiL2RyaXZlcnMvYmFzZWJh bmQvYWNjL3J0ZV92cmJfcG1kLmMNCj4gPiBAQCAtMTIzNSw2ICsxMjM1LDk0IEBAIHZyYl9kZXZf aW5mb19nZXQoc3RydWN0IHJ0ZV9iYmRldiAqZGV2LCBzdHJ1Y3QNCj4gcnRlX2JiZGV2X2RyaXZl cl9pbmZvICpkZXZfaW5mbykNCj4gPiAgIAl9Ow0KPiA+DQo+ID4gICAJc3RhdGljIGNvbnN0IHN0 cnVjdCBydGVfYmJkZXZfb3BfY2FwIHZyYjJfYmJkZXZfY2FwYWJpbGl0aWVzW10gPSB7DQo+ID4g KwkJew0KPiA+ICsJCQkudHlwZSA9IFJURV9CQkRFVl9PUF9UVVJCT19ERUMsDQo+ID4gKwkJCS5j YXAudHVyYm9fZGVjID0gew0KPiA+ICsJCQkJLmNhcGFiaWxpdHlfZmxhZ3MgPQ0KPiA+ICsNCj4g CVJURV9CQkRFVl9UVVJCT19TVUJCTE9DS19ERUlOVEVSTEVBVkUgfA0KPiA+ICsJCQkJCVJURV9C QkRFVl9UVVJCT19DUkNfVFlQRV8yNEIgfA0KPiA+ICsNCj4gCVJURV9CQkRFVl9UVVJCT19ERUNf Q1JDXzI0Ql9EUk9QIHwNCj4gPiArCQkJCQlSVEVfQkJERVZfVFVSQk9fRVFVQUxJWkVSIHwNCj4g PiArDQo+IAlSVEVfQkJERVZfVFVSQk9fU09GVF9PVVRfU0FUVVJBVEUgfA0KPiA+ICsNCj4gCVJU RV9CQkRFVl9UVVJCT19IQUxGX0lURVJBVElPTl9FVkVOIHwNCj4gPiArDQo+IAlSVEVfQkJERVZf VFVSQk9fQ09OVElOVUVfQ1JDX01BVENIIHwNCj4gPiArCQkJCQlSVEVfQkJERVZfVFVSQk9fU09G VF9PVVRQVVQgfA0KPiA+ICsNCj4gCVJURV9CQkRFVl9UVVJCT19FQVJMWV9URVJNSU5BVElPTiB8 DQo+ID4gKwkJCQkJUlRFX0JCREVWX1RVUkJPX0RFQ19JTlRFUlJVUFRTDQo+IHwNCj4gPiArDQo+ IAlSVEVfQkJERVZfVFVSQk9fTkVHX0xMUl8xX0JJVF9JTiB8DQo+ID4gKw0KPiAJUlRFX0JCREVW X1RVUkJPX05FR19MTFJfMV9CSVRfU09GVF9PVVQgfA0KPiA+ICsJCQkJCVJURV9CQkRFVl9UVVJC T19NQVBfREVDIHwNCj4gPiArDQo+IAlSVEVfQkJERVZfVFVSQk9fREVDX1RCX0NSQ18yNEJfS0VF UCB8DQo+ID4gKw0KPiAJUlRFX0JCREVWX1RVUkJPX0RFQ19TQ0FUVEVSX0dBVEhFUiwNCj4gPiAr CQkJCS5tYXhfbGxyX21vZHVsdXMgPSBJTlQ4X01BWCwNCj4gPiArCQkJCS5udW1fYnVmZmVyc19z cmMgPQ0KPiA+ICsNCj4gCVJURV9CQkRFVl9UVVJCT19NQVhfQ09ERV9CTE9DS1MsDQo+ID4gKwkJ CQkubnVtX2J1ZmZlcnNfaGFyZF9vdXQgPQ0KPiA+ICsNCj4gCVJURV9CQkRFVl9UVVJCT19NQVhf Q09ERV9CTE9DS1MsDQo+ID4gKwkJCQkubnVtX2J1ZmZlcnNfc29mdF9vdXQgPQ0KPiA+ICsNCj4g CVJURV9CQkRFVl9UVVJCT19NQVhfQ09ERV9CTE9DS1MsDQo+ID4gKwkJCX0NCj4gPiArCQl9LA0K PiA+ICsJCXsNCj4gPiArCQkJLnR5cGUgPSBSVEVfQkJERVZfT1BfVFVSQk9fRU5DLA0KPiA+ICsJ CQkuY2FwLnR1cmJvX2VuYyA9IHsNCj4gPiArCQkJCS5jYXBhYmlsaXR5X2ZsYWdzID0NCj4gPiAr DQo+IAlSVEVfQkJERVZfVFVSQk9fQ1JDXzI0Ql9BVFRBQ0ggfA0KPiA+ICsNCj4gCVJURV9CQkRF Vl9UVVJCT19SVl9JTkRFWF9CWVBBU1MgfA0KPiA+ICsJCQkJCVJURV9CQkRFVl9UVVJCT19SQVRF X01BVENIIHwNCj4gPiArCQkJCQlSVEVfQkJERVZfVFVSQk9fRU5DX0lOVEVSUlVQVFMNCj4gfA0K PiA+ICsNCj4gCVJURV9CQkRFVl9UVVJCT19FTkNfU0NBVFRFUl9HQVRIRVIsDQo+ID4gKwkJCQku bnVtX2J1ZmZlcnNfc3JjID0NCj4gPiArDQo+IAlSVEVfQkJERVZfVFVSQk9fTUFYX0NPREVfQkxP Q0tTLA0KPiA+ICsJCQkJLm51bV9idWZmZXJzX2RzdCA9DQo+ID4gKw0KPiAJUlRFX0JCREVWX1RV UkJPX01BWF9DT0RFX0JMT0NLUywNCj4gPiArCQkJfQ0KPiA+ICsJCX0sDQo+ID4gKwkJew0KPiA+ ICsJCQkudHlwZSAgID0gUlRFX0JCREVWX09QX0xEUENfRU5DLA0KPiA+ICsJCQkuY2FwLmxkcGNf ZW5jID0gew0KPiA+ICsJCQkJLmNhcGFiaWxpdHlfZmxhZ3MgPQ0KPiA+ICsJCQkJCVJURV9CQkRF Vl9MRFBDX1JBVEVfTUFUQ0ggfA0KPiA+ICsJCQkJCVJURV9CQkRFVl9MRFBDX0NSQ18yNEJfQVRU QUNIDQo+IHwNCj4gPiArDQo+IAlSVEVfQkJERVZfTERQQ19JTlRFUkxFQVZFUl9CWVBBU1MgfA0K PiA+ICsJCQkJCVJURV9CQkRFVl9MRFBDX0VOQ19JTlRFUlJVUFRTIHwNCj4gPiArDQo+IAlSVEVf QkJERVZfTERQQ19FTkNfU0NBVFRFUl9HQVRIRVIgfA0KPiA+ICsNCj4gCVJURV9CQkRFVl9MRFBD X0VOQ19DT05DQVRFTkFUSU9OLA0KPiA+ICsJCQkJLm51bV9idWZmZXJzX3NyYyA9DQo+ID4gKw0K PiAJUlRFX0JCREVWX0xEUENfTUFYX0NPREVfQkxPQ0tTLA0KPiA+ICsJCQkJLm51bV9idWZmZXJz X2RzdCA9DQo+ID4gKw0KPiAJUlRFX0JCREVWX0xEUENfTUFYX0NPREVfQkxPQ0tTLA0KPiA+ICsJ CQl9DQo+ID4gKwkJfSwNCj4gPiArCQl7DQo+ID4gKwkJCS50eXBlICAgPSBSVEVfQkJERVZfT1Bf TERQQ19ERUMsDQo+ID4gKwkJCS5jYXAubGRwY19kZWMgPSB7DQo+ID4gKwkJCS5jYXBhYmlsaXR5 X2ZsYWdzID0NCj4gPiArCQkJCVJURV9CQkRFVl9MRFBDX0NSQ19UWVBFXzI0Ql9DSEVDSyB8DQo+ ID4gKwkJCQlSVEVfQkJERVZfTERQQ19DUkNfVFlQRV8yNEJfRFJPUCB8DQo+ID4gKwkJCQlSVEVf QkJERVZfTERQQ19DUkNfVFlQRV8yNEFfQ0hFQ0sgfA0KPiA+ICsJCQkJUlRFX0JCREVWX0xEUENf Q1JDX1RZUEVfMTZfQ0hFQ0sgfA0KPiA+ICsJCQkJUlRFX0JCREVWX0xEUENfSFFfQ09NQklORV9J Tl9FTkFCTEUNCj4gfA0KPiA+ICsNCj4gCVJURV9CQkRFVl9MRFBDX0hRX0NPTUJJTkVfT1VUX0VO QUJMRSB8DQo+ID4gKwkJCQlSVEVfQkJERVZfTERQQ19JVEVSQVRJT05fU1RPUF9FTkFCTEUgfA0K PiA+ICsJCQkJUlRFX0JCREVWX0xEUENfREVJTlRFUkxFQVZFUl9CWVBBU1MgfA0KPiA+ICsJCQkJ UlRFX0JCREVWX0xEUENfREVDX1NDQVRURVJfR0FUSEVSIHwNCj4gPiArCQkJCVJURV9CQkRFVl9M RFBDX0hBUlFfNkJJVF9DT01QUkVTU0lPTg0KPiB8DQo+ID4gKwkJCQlSVEVfQkJERVZfTERQQ19I QVJRXzRCSVRfQ09NUFJFU1NJT04NCj4gfA0KPiA+ICsJCQkJUlRFX0JCREVWX0xEUENfTExSX0NP TVBSRVNTSU9OIHwNCj4gPiArCQkJCVJURV9CQkRFVl9MRFBDX1NPRlRfT1VUX0VOQUJMRSB8DQo+ ID4gKwkJCQlSVEVfQkJERVZfTERQQ19TT0ZUX09VVF9STV9CWVBBU1MgfA0KPiA+ICsNCj4gCVJU RV9CQkRFVl9MRFBDX1NPRlRfT1VUX0RFSU5URVJMRUFWRVJfQllQQVNTIHwNCj4gPiArCQkJCVJU RV9CQkRFVl9MRFBDX0RFQ19JTlRFUlJVUFRTLA0KPiA+ICsJCQkubGxyX3NpemUgPSA4LA0KPiA+ ICsJCQkubGxyX2RlY2ltYWxzID0gMiwNCj4gPiArCQkJLm51bV9idWZmZXJzX3NyYyA9DQo+ID4g Kw0KPiAJUlRFX0JCREVWX0xEUENfTUFYX0NPREVfQkxPQ0tTLA0KPiA+ICsJCQkubnVtX2J1ZmZl cnNfaGFyZF9vdXQgPQ0KPiA+ICsNCj4gCVJURV9CQkRFVl9MRFBDX01BWF9DT0RFX0JMT0NLUywN Cj4gPiArCQkJLm51bV9idWZmZXJzX3NvZnRfb3V0ID0gMCwNCj4gPiArCQkJfQ0KPiA+ICsJCX0s DQo+ID4gICAJCVJURV9CQkRFVl9FTkRfT0ZfQ0FQQUJJTElUSUVTX0xJU1QoKQ0KPiA+ICAgCX07 DQo+ID4NCj4gPiBAQCAtMTQxOSw4ICsxNTA3LDggQEAgdnJiX2Zjd190ZF9maWxsKGNvbnN0IHN0 cnVjdCBydGVfYmJkZXZfZGVjX29wDQo+ID4gKm9wLCBzdHJ1Y3QgYWNjX2Zjd190ZCAqZmN3KQ0K PiA+DQo+ID4gICAvKiBGaWxsIGluIGEgZnJhbWUgY29udHJvbCB3b3JkIGZvciBMRFBDIGRlY29k aW5nLiAqLw0KPiA+ICAgc3RhdGljIGlubGluZSB2b2lkDQo+ID4gLXZyYjFfZmN3X2xkX2ZpbGwo c3RydWN0IHJ0ZV9iYmRldl9kZWNfb3AgKm9wLCBzdHJ1Y3QgYWNjX2Zjd19sZCAqZmN3LA0KPiA+ IC0JCXVuaW9uIGFjY19oYXJxX2xheW91dF9kYXRhICpoYXJxX2xheW91dCkNCj4gPiArdnJiX2Zj d19sZF9maWxsKHN0cnVjdCBydGVfYmJkZXZfZGVjX29wICpvcCwgc3RydWN0IGFjY19mY3dfbGQg KmZjdywNCj4gPiArCQl1bmlvbiBhY2NfaGFycV9sYXlvdXRfZGF0YSAqaGFycV9sYXlvdXQsIHVp bnQxNl90DQo+IGRldmljZV92YXJpYW50KQ0KPiA+ICAgew0KPiA+ICAgCXVpbnQxNl90IGhhcnFf b3V0X2xlbmd0aCwgaGFycV9pbl9sZW5ndGgsIG5jYl9wLCBrMF9wLCBwYXJpdHlfb2Zmc2V0Ow0K PiA+ICAgCXVpbnQzMl90IGhhcnFfaW5kZXg7DQo+ID4gQEAgLTE0NjYsMTggKzE1NTQsMjYgQEAg dnJiMV9mY3dfbGRfZmlsbChzdHJ1Y3QgcnRlX2JiZGV2X2RlY19vcCAqb3AsDQo+IHN0cnVjdCBh Y2NfZmN3X2xkICpmY3csDQo+ID4gICAJCWZjdy0+YnlwYXNzX2ludGx2ID0gMTsNCj4gPiAgIAkJ ZmN3LT5xbSA9IDI7DQo+ID4gICAJfQ0KPiA+IC0JZmN3LT5oY2luX2RlY29tcF9tb2RlID0gY2hl Y2tfYml0KG9wLT5sZHBjX2RlYy5vcF9mbGFncywNCj4gPiAtCQkJUlRFX0JCREVWX0xEUENfSEFS UV82QklUX0NPTVBSRVNTSU9OKTsNCj4gPiAtCWZjdy0+aGNvdXRfY29tcF9tb2RlID0gY2hlY2tf Yml0KG9wLT5sZHBjX2RlYy5vcF9mbGFncywNCj4gPiAtCQkJUlRFX0JCREVWX0xEUENfSEFSUV82 QklUX0NPTVBSRVNTSU9OKTsNCj4gPiArCWlmIChjaGVja19iaXQob3AtPmxkcGNfZGVjLm9wX2Zs YWdzLA0KPiBSVEVfQkJERVZfTERQQ19IQVJRXzZCSVRfQ09NUFJFU1NJT04pKSB7DQo+ID4gKwkJ ZmN3LT5oY2luX2RlY29tcF9tb2RlID0gMTsNCj4gPiArCQlmY3ctPmhjb3V0X2NvbXBfbW9kZSA9 IDE7DQo+ID4gKwl9IGVsc2UgaWYgKGNoZWNrX2JpdChvcC0+bGRwY19kZWMub3BfZmxhZ3MsDQo+ IFJURV9CQkRFVl9MRFBDX0hBUlFfNEJJVF9DT01QUkVTU0lPTikpIHsNCj4gPiArCQlmY3ctPmhj aW5fZGVjb21wX21vZGUgPSA0Ow0KPiA+ICsJCWZjdy0+aGNvdXRfY29tcF9tb2RlID0gNDsNCj4g PiArCX0gZWxzZSB7DQo+ID4gKwkJZmN3LT5oY2luX2RlY29tcF9tb2RlID0gMDsNCj4gPiArCQlm Y3ctPmhjb3V0X2NvbXBfbW9kZSA9IDA7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICAgCWZjdy0+bGxy X3BhY2tfbW9kZSA9IGNoZWNrX2JpdChvcC0+bGRwY19kZWMub3BfZmxhZ3MsDQo+ID4gICAJCQlS VEVfQkJERVZfTERQQ19MTFJfQ09NUFJFU1NJT04pOw0KPiA+ICAgCWhhcnFfaW5kZXggPSBocV9p bmRleChvcC0+bGRwY19kZWMuaGFycV9jb21iaW5lZF9vdXRwdXQub2Zmc2V0KTsNCj4gPiAtDQo+ ID4gICAJaWYgKGZjdy0+aGNpbl9lbiA+IDApIHsNCj4gPiAgIAkJaGFycV9pbl9sZW5ndGggPSBv cC0+bGRwY19kZWMuaGFycV9jb21iaW5lZF9pbnB1dC5sZW5ndGg7DQo+ID4gLQkJaWYgKGZjdy0+ aGNpbl9kZWNvbXBfbW9kZSA+IDApDQo+ID4gKwkJaWYgKGZjdy0+aGNpbl9kZWNvbXBfbW9kZSA9 PSAxKQ0KPiA+ICAgCQkJaGFycV9pbl9sZW5ndGggPSBoYXJxX2luX2xlbmd0aCAqIDggLyA2Ow0K PiA+ICsJCWVsc2UgaWYgKGZjdy0+aGNpbl9kZWNvbXBfbW9kZSA9PSA0KQ0KPiA+ICsJCQloYXJx X2luX2xlbmd0aCA9IGhhcnFfaW5fbGVuZ3RoICogMjsNCj4gPiAgIAkJaGFycV9pbl9sZW5ndGgg PSBSVEVfTUlOKGhhcnFfaW5fbGVuZ3RoLCBvcC0+bGRwY19kZWMubl9jYg0KPiA+ICAgCQkJCS0g b3AtPmxkcGNfZGVjLm5fZmlsbGVyKTsNCj4gPiAgIAkJaGFycV9pbl9sZW5ndGggPSBSVEVfQUxJ R05fQ0VJTChoYXJxX2luX2xlbmd0aCwgNjQpOyBAQCAtDQo+IDE0OTEsMjANCj4gPiArMTU4Nywy NyBAQCB2cmIxX2Zjd19sZF9maWxsKHN0cnVjdCBydGVfYmJkZXZfZGVjX29wICpvcCwgc3RydWN0 DQo+IGFjY19mY3dfbGQgKmZjdywNCj4gPiAgIAl9DQo+ID4NCj4gPiAgIAlmY3ctPml0bWF4ID0g b3AtPmxkcGNfZGVjLml0ZXJfbWF4Ow0KPiA+IC0JZmN3LT5pdHN0b3AgPSBjaGVja19iaXQob3At PmxkcGNfZGVjLm9wX2ZsYWdzLA0KPiA+IC0JCQlSVEVfQkJERVZfTERQQ19JVEVSQVRJT05fU1RP UF9FTkFCTEUpOw0KPiA+ICsJZmN3LT5pdHN0b3AgPSBjaGVja19iaXQob3AtPmxkcGNfZGVjLm9w X2ZsYWdzLA0KPiA+ICtSVEVfQkJERVZfTERQQ19JVEVSQVRJT05fU1RPUF9FTkFCTEUpOw0KPiA+ ICAgCWZjdy0+Y251X2FsZ28gPSBBQ0NfQUxHT19NU0E7DQo+ID4gICAJZmN3LT5zeW5kX3ByZWNv ZGVyID0gZmN3LT5pdHN0b3A7DQo+ID4gKw0KPiA+ICsJaWYgKGRldmljZV92YXJpYW50ICE9IFZS QjFfVkFSSUFOVCkgew0KPiA+ICsJCWZjdy0+c29faXQgPSBvcC0+bGRwY19kZWMuaXRlcl9tYXg7 DQo+ID4gKwkJZmN3LT5zb19lbiA9IGNoZWNrX2JpdChvcC0+bGRwY19kZWMub3BfZmxhZ3MsDQo+ IFJURV9CQkRFVl9MRFBDX1NPRlRfT1VUX0VOQUJMRSk7DQo+ID4gKwkJZmN3LT5zb19ieXBhc3Nf aW50bHYgPSBjaGVja19iaXQob3AtPmxkcGNfZGVjLm9wX2ZsYWdzLA0KPiA+ICsNCj4gCVJURV9C QkRFVl9MRFBDX1NPRlRfT1VUX0RFSU5URVJMRUFWRVJfQllQQVNTKTsNCj4gPiArCQlmY3ctPnNv X2J5cGFzc19ybSA9IGNoZWNrX2JpdChvcC0+bGRwY19kZWMub3BfZmxhZ3MsDQo+ID4gKwkJCQlS VEVfQkJERVZfTERQQ19TT0ZUX09VVF9STV9CWVBBU1MpOw0KPiA+ICsJCWZjdy0+bWluc3VtX29m ZnNldCA9IDE7DQo+ID4gKwkJZmN3LT5kZWNfbGxyY2xpcCAgID0gMjsNCj4gPiArCX0NCj4gDQo+ IFdlIHNob3VsZCBiZSBhYmxlIHRvIHJlbHkgb24gdGhlIGNhcGFiaWxpdGllcyBpbnN0ZWFkIG9m IHRoZSB2YXJpYW50Og0KDQpOb3QgcmVhbGx5LCB0aGF0IHdvdWxkIGJlIHBvb3IgZm9yIG1haW50 YWluYWJpbGl0eS4gVGhpcyBpcyByZWFsbHkgcmVsYXRlZCB0byB0aGUgdmFyaWFudCBzaG91bGQg bm90IHNldCB0aGVzZSwgcmVnYXJkbGVzcyB3aGF0IGhhcHBlbnMgdG8gY2FwYWJpbGllcyBtb3Zp bmcgZm9yd2FyZC4NClRoYXQgd291bGQgYmUgY29udm9sdXRlZC4gDQoNCj4gDQo+IGlmIChjaGVj a19iaXQob3AtPmxkcGNfZGVjLm9wX2ZsYWdzLCBSVEVfQkJERVZfTERQQ19TT0ZUX09VVF9FTkFC TEUpKSB7DQo+IAlmY3ctPnNvX2l0ID0gb3AtPmxkcGNfZGVjLml0ZXJfbWF4Ow0KPiAJZmN3LT5z b19lbiA9IHRydWU7DQo+IAlmY3ctPnNvX2J5cGFzc19pbnRsdiA9IGNoZWNrX2JpdChvcC0+bGRw Y19kZWMub3BfZmxhZ3MsDQo+IA0KPiAJUlRFX0JCREVWX0xEUENfU09GVF9PVVRfREVJTlRFUkxF QVZFUl9CWVBBU1MpOw0KPiAJZmN3LT5zb19ieXBhc3Nfcm0gPSBjaGVja19iaXQob3AtPmxkcGNf ZGVjLm9wX2ZsYWdzLA0KPiAJCQlSVEVfQkJERVZfTERQQ19TT0ZUX09VVF9STV9CWVBBU1MpOw0K PiB9DQo+IA0KPiBGb3IgbWluc3VtICYgbGxyY2xpcCBJIGRvbid0IGtub3cgd2hhdCB0aGV5IGFy ZSByZWZlcnJpbmcgdG8sIGNvdWxkIHlvdSBwcm92aWRlDQo+IG1vcmUgaW5mb3JtYXRpb24/DQoN ClRoZXNlIGFyZSBzcGVjaWZpYyB0byB0aGUgSVAgaW4gdGhlIDJuZCBpbXBsZW1lbnRhdGlvbi4g DQoNCj4gDQo+ID4gKw0KPiA+ICAgCS8qDQo+ID4gLQkgKiBUaGVzZSBhcmUgYWxsIGltcGxpY2l0 bHkgc2V0Og0KPiA+ICsJICogVGhlc2UgYXJlIGFsbCBpbXBsaWNpdGx5IHNldA0KPiA+ICAgCSAq IGZjdy0+c3luZF9wb3N0ID0gMDsNCj4gPiAtCSAqIGZjdy0+c29fZW4gPSAwOw0KPiA+IC0JICog ZmN3LT5zb19ieXBhc3Nfcm0gPSAwOw0KPiA+IC0JICogZmN3LT5zb19ieXBhc3NfaW50bHYgPSAw Ow0KPiA+ICAgCSAqIGZjdy0+ZGVjX2NvbnZsbHIgPSAwOw0KPiA+ICAgCSAqIGZjdy0+aGNvdXRf Y29udmxsciA9IDA7DQo+ID4gICAJICogZmN3LT5oY291dF9zaXplMSA9IDA7DQo+ID4gLQkgKiBm Y3ctPnNvX2l0ID0gMDsNCj4gPiAgIAkgKiBmY3ctPmhjb3V0X29mZnNldCA9IDA7DQo+ID4gICAJ ICogZmN3LT5uZWdzdG9wX3RoID0gMDsNCj4gPiAgIAkgKiBmY3ctPm5lZ3N0b3BfaXQgPSAwOw0K PiA+IEBAIC0xNTE1LDcgKzE2MTgsOCBAQCB2cmIxX2Zjd19sZF9maWxsKHN0cnVjdCBydGVfYmJk ZXZfZGVjX29wICpvcCwNCj4gc3RydWN0IGFjY19mY3dfbGQgKmZjdywNCj4gPiAgIAlpZiAoZmN3 LT5oY291dF9lbiA+IDApIHsNCj4gPiAgIAkJcGFyaXR5X29mZnNldCA9IChvcC0+bGRwY19kZWMu YmFzZWdyYXBoID09IDEgPyAyMCA6IDgpDQo+ID4gICAJCQkJKiBvcC0+bGRwY19kZWMuel9jIC0g b3AtPmxkcGNfZGVjLm5fZmlsbGVyOw0KPiA+IC0JCWswX3AgPSAoZmN3LT5rMCA+IHBhcml0eV9v ZmZzZXQpID8gZmN3LT5rMCAtIG9wLQ0KPiA+bGRwY19kZWMubl9maWxsZXIgOiBmY3ctPmswOw0K PiA+ICsJCWswX3AgPSAoZmN3LT5rMCA+IHBhcml0eV9vZmZzZXQpID8NCj4gPiArCQkJCWZjdy0+ azAgLSBvcC0+bGRwY19kZWMubl9maWxsZXIgOiBmY3ctPmswOw0KPiA+ICAgCQluY2JfcCA9IGZj dy0+bmNiIC0gb3AtPmxkcGNfZGVjLm5fZmlsbGVyOw0KPiA+ICAgCQlsID0gazBfcCArIGZjdy0+ cm1fZTsNCj4gPiAgIAkJaGFycV9vdXRfbGVuZ3RoID0gKHVpbnQxNl90KSBmY3ctPmhjaW5fc2l6 ZTA7IEBAIC0xNjU4LDE5DQo+ICsxNzYyLDI4DQo+ID4gQEAgdnJiX2RtYV9kZXNjX3RkX2ZpbGwo c3RydWN0IHJ0ZV9iYmRldl9kZWNfb3AgKm9wLA0KPiA+ICAgfQ0KPiA+DQo+ID4gICBzdGF0aWMg aW5saW5lIGludA0KPiA+IC12cmIxX2RtYV9kZXNjX2xkX2ZpbGwoc3RydWN0IHJ0ZV9iYmRldl9k ZWNfb3AgKm9wLA0KPiA+ICt2cmJfZG1hX2Rlc2NfbGRfZmlsbChzdHJ1Y3QgcnRlX2JiZGV2X2Rl Y19vcCAqb3AsDQo+ID4gICAJCXN0cnVjdCBhY2NfZG1hX3JlcV9kZXNjICpkZXNjLA0KPiA+ICAg CQlzdHJ1Y3QgcnRlX21idWYgKippbnB1dCwgc3RydWN0IHJ0ZV9tYnVmICpoX291dHB1dCwNCj4g PiAgIAkJdWludDMyX3QgKmluX29mZnNldCwgdWludDMyX3QgKmhfb3V0X29mZnNldCwNCj4gPiAg IAkJdWludDMyX3QgKmhfb3V0X2xlbmd0aCwgdWludDMyX3QgKm1idWZfdG90YWxfbGVmdCwNCj4g PiAtCQl1aW50MzJfdCAqc2VnX3RvdGFsX2xlZnQsIHN0cnVjdCBhY2NfZmN3X2xkICpmY3cpDQo+ ID4gKwkJdWludDMyX3QgKnNlZ190b3RhbF9sZWZ0LCBzdHJ1Y3QgYWNjX2Zjd19sZCAqZmN3LCB1 aW50MTZfdA0KPiA+ICtkZXZpY2VfdmFyaWFudCkNCj4gPiAgIHsNCj4gPiAgIAlzdHJ1Y3QgcnRl X2JiZGV2X29wX2xkcGNfZGVjICpkZWMgPSAmb3AtPmxkcGNfZGVjOw0KPiA+ICAgCWludCBuZXh0 X3RyaXBsZXQgPSAxOyAvKiBGQ1cgYWxyZWFkeSBkb25lLiAqLw0KPiA+ICAgCXVpbnQzMl90IGlu cHV0X2xlbmd0aDsNCj4gPiAgIAl1aW50MTZfdCBvdXRwdXRfbGVuZ3RoLCBjcmMyNF9vdmVybGFw ID0gMDsNCj4gPiAgIAl1aW50MTZfdCBzeXNfY29scywgSywgaF9wX3NpemUsIGhfbnBfc2l6ZTsN Cj4gPiAtCWJvb2wgaF9jb21wID0gY2hlY2tfYml0KGRlYy0+b3BfZmxhZ3MsDQo+IFJURV9CQkRF Vl9MRFBDX0hBUlFfNkJJVF9DT01QUkVTU0lPTik7DQo+ID4gKw0KPiA+ICsJaWYgKGRldmljZV92 YXJpYW50ID09IFZSQjFfVkFSSUFOVCkgew0KPiA+ICsJCWlmIChjaGVja19iaXQob3AtPmxkcGNf ZGVjLm9wX2ZsYWdzLA0KPiBSVEVfQkJERVZfTERQQ19IQVJRXzRCSVRfQ09NUFJFU1NJT04pIHx8 DQo+ID4gKwkJCQljaGVja19iaXQob3AtPmxkcGNfZGVjLm9wX2ZsYWdzLA0KPiBSVEVfQkJERVZf TERQQ19TT0ZUX09VVF9FTkFCTEUpKSB7DQo+ID4gKwkJCXJ0ZV9iYmRldl9sb2coRVJSLA0KPiA+ ICsJCQkJCSJWUkIxIGRvZXMgbm90IHN1cHBvcnQgdGhlIHJlcXVlc3RlZA0KPiBjYXBhYmlsaXRp ZXMgJXgiLA0KPiA+ICsJCQkJCW9wLT5sZHBjX2RlYy5vcF9mbGFncyk7DQo+ID4gKwkJCXJldHVy biAtMTsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4NCj4gPiAgIAlhY2NfaGVhZGVyX2luaXQoZGVz Yyk7DQo+ID4NCj4gPiBAQCAtMTcxMSw4ICsxODI0LDEwIEBAIHZyYjFfZG1hX2Rlc2NfbGRfZmls bChzdHJ1Y3QgcnRlX2JiZGV2X2RlY19vcA0KPiAqb3AsDQo+ID4gICAJCQlyZXR1cm4gLTE7DQo+ ID4gICAJCX0NCj4gPiAgIAkJaF9wX3NpemUgPSBmY3ctPmhjaW5fc2l6ZTAgKyBmY3ctPmhjaW5f c2l6ZTE7DQo+ID4gLQkJaWYgKGhfY29tcCkNCj4gPiArCQlpZiAoZmN3LT5oY2luX2RlY29tcF9t b2RlID09IDEpDQo+ID4gICAJCQloX3Bfc2l6ZSA9IChoX3Bfc2l6ZSAqIDMgKyAzKSAvIDQ7DQo+ ID4gKwkJZWxzZSBpZiAoZmN3LT5oY2luX2RlY29tcF9tb2RlID09IDQpDQo+ID4gKwkJCWhfcF9z aXplID0gaF9wX3NpemUgLyAyOw0KPiA+ICAgCQlpZiAob3AtPmxkcGNfZGVjLmhhcnFfY29tYmlu ZWRfaW5wdXQuZGF0YSA9PSAwKSB7DQo+ID4gICAJCQlydGVfYmJkZXZfbG9nKEVSUiwgIkhBUlEg aW5wdXQgaXMgbm90IGRlZmluZWQiKTsNCj4gPiAgIAkJCXJldHVybiAtMTsNCj4gPiBAQCAtMTcz NSwyMSArMTg1MCwzNiBAQCB2cmIxX2RtYV9kZXNjX2xkX2ZpbGwoc3RydWN0IHJ0ZV9iYmRldl9k ZWNfb3ANCj4gKm9wLA0KPiA+ICAgCQkJKmhfb3V0X29mZnNldCwgb3V0cHV0X2xlbmd0aCA+PiAz LCBuZXh0X3RyaXBsZXQsDQo+ID4gICAJCQlBQ0NfRE1BX0JMS0lEX09VVF9IQVJEKTsNCj4gPg0K PiA+IC0JaWYgKGNoZWNrX2JpdChvcC0+bGRwY19kZWMub3BfZmxhZ3MsDQo+IFJURV9CQkRFVl9M RFBDX0hRX0NPTUJJTkVfT1VUX0VOQUJMRSkpIHsNCj4gPiArCWlmIChjaGVja19iaXQob3AtPmxk cGNfZGVjLm9wX2ZsYWdzLA0KPiBSVEVfQkJERVZfTERQQ19TT0ZUX09VVF9FTkFCTEUpKSB7DQo+ ID4gKwkJaWYgKG9wLT5sZHBjX2RlYy5zb2Z0X291dHB1dC5kYXRhID09IDApIHsNCj4gPiArCQkJ cnRlX2JiZGV2X2xvZyhFUlIsICJTb2Z0IG91dHB1dCBpcyBub3QgZGVmaW5lZCIpOw0KPiA+ICsJ CQlyZXR1cm4gLTE7DQo+ID4gKwkJfQ0KPiA+ICsJCWRlYy0+c29mdF9vdXRwdXQubGVuZ3RoID0g ZmN3LT5ybV9lOw0KPiA+ICsJCWFjY19kbWFfZmlsbF9ibGtfdHlwZShkZXNjLCBkZWMtPnNvZnRf b3V0cHV0LmRhdGEsIGRlYy0NCj4gPnNvZnRfb3V0cHV0Lm9mZnNldCwNCj4gPiArCQkJCWZjdy0+ cm1fZSwgbmV4dF90cmlwbGV0LA0KPiBBQ0NfRE1BX0JMS0lEX09VVF9TT0ZUKTsNCj4gPiArCQlu ZXh0X3RyaXBsZXQrKzsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAoY2hlY2tfYml0KG9wLT5s ZHBjX2RlYy5vcF9mbGFncywNCj4gPiArDQo+IAlSVEVfQkJERVZfTERQQ19IUV9DT01CSU5FX09V VF9FTkFCTEUpKSB7DQo+ID4gICAJCWlmIChvcC0+bGRwY19kZWMuaGFycV9jb21iaW5lZF9vdXRw dXQuZGF0YSA9PSAwKSB7DQo+ID4gICAJCQlydGVfYmJkZXZfbG9nKEVSUiwgIkhBUlEgb3V0cHV0 IGlzIG5vdCBkZWZpbmVkIik7DQo+ID4gICAJCQlyZXR1cm4gLTE7DQo+ID4gICAJCX0NCj4gPg0K PiA+IC0JCS8qIFBydW5lZCBzaXplIG9mIHRoZSBIQVJRLiAqLw0KPiA+ICsJCS8qIFBydW5lZCBz aXplIG9mIHRoZSBIQVJRICovDQo+ID4gICAJCWhfcF9zaXplID0gZmN3LT5oY291dF9zaXplMCAr IGZjdy0+aGNvdXRfc2l6ZTE7DQo+ID4gLQkJLyogTm9uLVBydW5lZCBzaXplIG9mIHRoZSBIQVJR LiAqLw0KPiA+ICsJCS8qIE5vbi1QcnVuZWQgc2l6ZSBvZiB0aGUgSEFSUSAqLw0KPiA+ICAgCQlo X25wX3NpemUgPSBmY3ctPmhjb3V0X29mZnNldCA+IDAgPw0KPiA+ICAgCQkJCWZjdy0+aGNvdXRf b2Zmc2V0ICsgZmN3LT5oY291dF9zaXplMSA6DQo+ID4gICAJCQkJaF9wX3NpemU7DQo+ID4gLQkJ aWYgKGhfY29tcCkgew0KPiA+ICsJCWlmIChmY3ctPmhjaW5fZGVjb21wX21vZGUgPT0gMSkgew0K PiA+ICAgCQkJaF9ucF9zaXplID0gKGhfbnBfc2l6ZSAqIDMgKyAzKSAvIDQ7DQo+ID4gICAJCQlo X3Bfc2l6ZSA9IChoX3Bfc2l6ZSAqIDMgKyAzKSAvIDQ7DQo+ID4gKwkJfSBlbHNlIGlmIChmY3ct PmhjaW5fZGVjb21wX21vZGUgPT0gNCkgew0KPiA+ICsJCQloX25wX3NpemUgPSBoX25wX3NpemUg LyAyOw0KPiA+ICsJCQloX3Bfc2l6ZSA9IGhfcF9zaXplIC8gMjsNCj4gPiAgIAkJfQ0KPiA+ICAg CQlkZWMtPmhhcnFfY29tYmluZWRfb3V0cHV0Lmxlbmd0aCA9IGhfbnBfc2l6ZTsNCj4gPiAgIAkJ YWNjX2RtYV9maWxsX2Jsa190eXBlKA0KPiA+IEBAIC0xODc3LDYgKzIwMDcsNyBAQCBlbnF1ZXVl X2xkcGNfZW5jX25fb3BfY2Ioc3RydWN0IGFjY19xdWV1ZSAqcSwNCj4gc3RydWN0IHJ0ZV9iYmRl dl9lbmNfb3AgKipvcHMsDQo+ID4gICAJLyoqIFRoaXMgY291bGQgYmUgZG9uZSBhdCBwb2xsaW5n LiAqLw0KPiA+ICAgCWFjY19oZWFkZXJfaW5pdCgmZGVzYy0+cmVxKTsNCj4gPiAgIAlkZXNjLT5y ZXEubnVtQ0JzID0gbnVtOw0KPiA+ICsJZGVzYy0+cmVxLmRsdGIgPSAwOw0KPiA+DQo+ID4gICAJ aW5fbGVuZ3RoX2luX2J5dGVzID0gb3BzWzBdLT5sZHBjX2VuYy5pbnB1dC5kYXRhLT5kYXRhX2xl bjsNCj4gPiAgIAlvdXRfbGVuZ3RoID0gKGVuYy0+Y2JfcGFyYW1zLmUgKyA3KSA+PiAzOyBAQCAt MjEwMiw2ICsyMjMzLDEwNCBAQA0KPiA+IHZyYjFfZW5xdWV1ZV9sZHBjX2VuY19vbmVfb3BfdGIo c3RydWN0IGFjY19xdWV1ZSAqcSwgc3RydWN0DQo+IHJ0ZV9iYmRldl9lbmNfb3AgKm9wDQo+ID4g ICAJcmV0dXJuIHJldHVybl9kZXNjczsNCj4gPiAgIH0NCj4gPg0KPiA+ICsvKiBGaWxsIGluIGEg ZnJhbWUgY29udHJvbCB3b3JkIGZvciBMRFBDIGVuY29kaW5nLiAqLyBzdGF0aWMgaW5saW5lDQo+ ID4gK3ZvaWQgdnJiMl9mY3dfbGV0Yl9maWxsKGNvbnN0IHN0cnVjdCBydGVfYmJkZXZfZW5jX29w ICpvcCwgc3RydWN0DQo+ID4gK2FjY19mY3dfbGUgKmZjdykgew0KPiA+ICsJZmN3LT5xbSA9IG9w LT5sZHBjX2VuYy5xX207DQo+ID4gKwlmY3ctPm5maWxsZXIgPSBvcC0+bGRwY19lbmMubl9maWxs ZXI7DQo+ID4gKwlmY3ctPkJHID0gKG9wLT5sZHBjX2VuYy5iYXNlZ3JhcGggLSAxKTsNCj4gPiAr CWZjdy0+WmMgPSBvcC0+bGRwY19lbmMuel9jOw0KPiA+ICsJZmN3LT5uY2IgPSBvcC0+bGRwY19l bmMubl9jYjsNCj4gPiArCWZjdy0+azAgPSBnZXRfazAoZmN3LT5uY2IsIGZjdy0+WmMsIG9wLT5s ZHBjX2VuYy5iYXNlZ3JhcGgsDQo+ID4gKwkJCW9wLT5sZHBjX2VuYy5ydl9pbmRleCk7DQo+ID4g KwlmY3ctPnJtX2UgPSBvcC0+bGRwY19lbmMudGJfcGFyYW1zLmVhOw0KPiA+ICsJZmN3LT5ybV9l X2IgPSBvcC0+bGRwY19lbmMudGJfcGFyYW1zLmViOw0KPiA+ICsJZmN3LT5jcmNfc2VsZWN0ID0g Y2hlY2tfYml0KG9wLT5sZHBjX2VuYy5vcF9mbGFncywNCj4gPiArCQkJUlRFX0JCREVWX0xEUENf Q1JDXzI0Ql9BVFRBQ0gpOw0KPiA+ICsJZmN3LT5ieXBhc3NfaW50bHYgPSAwOw0KPiA+ICsJaWYg KG9wLT5sZHBjX2VuYy50Yl9wYXJhbXMuYyA+IDEpIHsNCj4gPiArCQlmY3ctPm1jYl9jb3VudCA9 IDA7DQo+ID4gKwkJZmN3LT5DID0gb3AtPmxkcGNfZW5jLnRiX3BhcmFtcy5jOw0KPiA+ICsJCWZj dy0+Q2FiID0gb3AtPmxkcGNfZW5jLnRiX3BhcmFtcy5jYWI7DQo+ID4gKwl9IGVsc2Ugew0KPiA+ ICsJCWZjdy0+bWNiX2NvdW50ID0gMTsNCj4gPiArCQlmY3ctPkMgPSAwOw0KPiA+ICsJfQ0KPiA+ ICt9DQo+ID4gKw0KPiA+ICsvKiBFbnF1ZXVlIG9uZSBlbmNvZGUgb3BlcmF0aW9ucyBmb3IgZGV2 aWNlIGluIFRCIG1vZGUuDQo+ID4gKyAqIHJldHVybnMgdGhlIG51bWJlciBvZiBkZXNjcyB1c2Vk Lg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGlubGluZSBpbnQNCj4gPiArdnJiMl9lbnF1ZXVlX2xk cGNfZW5jX29uZV9vcF90YihzdHJ1Y3QgYWNjX3F1ZXVlICpxLCBzdHJ1Y3QNCj4gcnRlX2JiZGV2 X2VuY19vcCAqb3AsDQo+ID4gKwkJdWludDE2X3QgZW5xX2Rlc2NzKQ0KPiA+ICt7DQo+ID4gKwl1 bmlvbiBhY2NfZG1hX2Rlc2MgKmRlc2MgPSBOVUxMOw0KPiA+ICsJdWludDMyX3QgaW5fb2Zmc2V0 LCBvdXRfb2Zmc2V0LCBvdXRfbGVuZ3RoLCBzZWdfdG90YWxfbGVmdDsNCj4gPiArCXN0cnVjdCBy dGVfbWJ1ZiAqaW5wdXQsICpvdXRwdXRfaGVhZCwgKm91dHB1dDsNCj4gPiArCXN0cnVjdCBydGVf YmJkZXZfb3BfbGRwY19lbmMgKmVuYyA9ICZvcC0+bGRwY19lbmM7DQo+ID4gKwlpbnQgbmV4dF90 cmlwbGV0ID0gMTsgLyogRkNXIGFscmVhZHkgZG9uZS4gKi8NCj4gPiArCXVpbnQzMl90IGluX2xl bmd0aF9pbl9ieXRlczsNCj4gPiArCXVpbnQxNl90IEssIGluX2xlbmd0aF9pbl9iaXRzOw0KPiA+ ICsNCj4gPiArCWRlc2MgPSBhY2NfZGVzYyhxLCBlbnFfZGVzY3MpOw0KPiA+ICsJdnJiMl9mY3df bGV0Yl9maWxsKG9wLCAmZGVzYy0+cmVxLmZjd19sZSk7DQo+ID4gKw0KPiA+ICsJaW5wdXQgPSBl bmMtPmlucHV0LmRhdGE7DQo+ID4gKwlvdXRwdXRfaGVhZCA9IG91dHB1dCA9IGVuYy0+b3V0cHV0 LmRhdGE7DQo+ID4gKwlpbl9vZmZzZXQgPSBlbmMtPmlucHV0Lm9mZnNldDsNCj4gPiArCW91dF9v ZmZzZXQgPSBlbmMtPm91dHB1dC5vZmZzZXQ7DQo+ID4gKwlzZWdfdG90YWxfbGVmdCA9IHJ0ZV9w a3RtYnVmX2RhdGFfbGVuKGVuYy0+aW5wdXQuZGF0YSkgLSBpbl9vZmZzZXQ7DQo+ID4gKw0KPiA+ ICsJYWNjX2hlYWRlcl9pbml0KCZkZXNjLT5yZXEpOw0KPiA+ICsJSyA9IChlbmMtPmJhc2VncmFw aCA9PSAxID8gMjIgOiAxMCkgKiBlbmMtPnpfYzsNCj4gPiArCWluX2xlbmd0aF9pbl9iaXRzID0g SyAtIGVuYy0+bl9maWxsZXI7DQo+ID4gKwlpZiAoKGVuYy0+b3BfZmxhZ3MgJiBSVEVfQkJERVZf TERQQ19DUkNfMjRBX0FUVEFDSCkgfHwNCj4gPiArCQkJKGVuYy0+b3BfZmxhZ3MgJg0KPiBSVEVf QkJERVZfTERQQ19DUkNfMjRCX0FUVEFDSCkpDQo+ID4gKwkJaW5fbGVuZ3RoX2luX2JpdHMgLT0g MjQ7DQo+ID4gKwlpbl9sZW5ndGhfaW5fYnl0ZXMgPSAoaW5fbGVuZ3RoX2luX2JpdHMgPj4gMykg KiBlbmMtPnRiX3BhcmFtcy5jOw0KPiA+ICsNCj4gPiArCW5leHRfdHJpcGxldCA9IGFjY19kbWFf ZmlsbF9ibGtfdHlwZV9pbigmZGVzYy0+cmVxLCAmaW5wdXQsICZpbl9vZmZzZXQsDQo+ID4gKwkJ CWluX2xlbmd0aF9pbl9ieXRlcywgJnNlZ190b3RhbF9sZWZ0LCBuZXh0X3RyaXBsZXQsDQo+ID4g KwkJCWNoZWNrX2JpdChlbmMtPm9wX2ZsYWdzLA0KPiBSVEVfQkJERVZfTERQQ19FTkNfU0NBVFRF Ul9HQVRIRVIpKTsNCj4gPiArCWlmICh1bmxpa2VseShuZXh0X3RyaXBsZXQgPCAwKSkgew0KPiA+ ICsJCXJ0ZV9iYmRldl9sb2coRVJSLA0KPiA+ICsJCQkJIk1pc21hdGNoIGJldHdlZW4gZGF0YSB0 byBwcm9jZXNzIGFuZCBtYnVmDQo+IGRhdGEgbGVuZ3RoIGluIGJiZGV2X29wOiAlcCIsDQo+ID4g KwkJCQlvcCk7DQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsJfQ0KPiA+ICsJZGVzYy0+cmVxLmRh dGFfcHRyc1tuZXh0X3RyaXBsZXQgLSAxXS5sYXN0ID0gMTsNCj4gPiArCWRlc2MtPnJlcS5tMmRs ZW4gPSBuZXh0X3RyaXBsZXQ7DQo+ID4gKw0KPiA+ICsJLyogU2V0IG91dHB1dCBsZW5ndGggKi8N Cj4gPiArCS8qIEludGVnZXIgcm91bmQgdXAgZGl2aXNpb24gYnkgOCAqLw0KPiA+ICsJb3V0X2xl bmd0aCA9IChlbmMtPnRiX3BhcmFtcy5lYSAqIGVuYy0+dGJfcGFyYW1zLmNhYiArDQo+ID4gKwkJ CWVuYy0+dGJfcGFyYW1zLmViICogKGVuYy0+dGJfcGFyYW1zLmMgLSBlbmMtDQo+ID50Yl9wYXJh bXMuY2FiKSAgKyA3KQ0KPiA+ICs+PiAzOw0KPiA+ICsNCj4gPiArCW5leHRfdHJpcGxldCA9IGFj Y19kbWFfZmlsbF9ibGtfdHlwZSgmZGVzYy0+cmVxLCBvdXRwdXQsIG91dF9vZmZzZXQsDQo+ID4g KwkJCW91dF9sZW5ndGgsIG5leHRfdHJpcGxldCwgQUNDX0RNQV9CTEtJRF9PVVRfRU5DKTsNCj4g PiArCWVuYy0+b3V0cHV0Lmxlbmd0aCA9IG91dF9sZW5ndGg7DQo+ID4gKwlvdXRfb2Zmc2V0ICs9 IG91dF9sZW5ndGg7DQo+ID4gKwlkZXNjLT5yZXEuZGF0YV9wdHJzW25leHRfdHJpcGxldCAtIDFd Lmxhc3QgPSAxOw0KPiA+ICsJZGVzYy0+cmVxLmRhdGFfcHRyc1tuZXh0X3RyaXBsZXQgLSAxXS5k bWFfZXh0ID0gMDsNCj4gPiArCWRlc2MtPnJlcS5kMm1sZW4gPSBuZXh0X3RyaXBsZXQgLSBkZXNj LT5yZXEubTJkbGVuOw0KPiA+ICsJZGVzYy0+cmVxLm51bUNCcyA9IGVuYy0+dGJfcGFyYW1zLmM7 DQo+ID4gKwlpZiAoZGVzYy0+cmVxLm51bUNCcyA+IDEpDQo+ID4gKwkJZGVzYy0+cmVxLmRsdGIg PSAxOw0KPiA+ICsJZGVzYy0+cmVxLm9wX2FkZHIgPSBvcDsNCj4gPiArDQo+ID4gKwlpZiAob3V0 X2xlbmd0aCA8IEFDQ19NQVhfRV9NQlVGKQ0KPiA+ICsJCW1idWZfYXBwZW5kKG91dHB1dF9oZWFk LCBvdXRwdXQsIG91dF9sZW5ndGgpOw0KPiA+ICsNCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfQkJE RVZfREVCVUcNCj4gPiArCXJ0ZV9tZW1kdW1wKHN0ZGVyciwgIkZDVyIsICZkZXNjLT5yZXEuZmN3 X2xlLCBzaXplb2YoZGVzYy0NCj4gPnJlcS5mY3dfbGUpKTsNCj4gPiArCXJ0ZV9tZW1kdW1wKHN0 ZGVyciwgIlJlcSBEZXNjLiIsIGRlc2MsIHNpemVvZigqZGVzYykpOyAjZW5kaWYNCj4gPiArCS8q IE9uZSBDQiAob25lIG9wKSB3YXMgc3VjY2Vzc2Z1bGx5IHByZXBhcmVkIHRvIGVucXVldWUgKi8N Cj4gPiArCXJldHVybiAxOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgLyoqIEVucXVldWUgb25lIGRl Y29kZSBvcGVyYXRpb25zIGZvciBkZXZpY2UgaW4gQ0IgbW9kZS4gKi8NCj4gPiAgIHN0YXRpYyBp bmxpbmUgaW50DQo+ID4gICBlbnF1ZXVlX2RlY19vbmVfb3BfY2Ioc3RydWN0IGFjY19xdWV1ZSAq cSwgc3RydWN0IHJ0ZV9iYmRldl9kZWNfb3ANCj4gPiAqb3AsIEBAIC0yMjA2LDcgKzI0MzUsNyBA QCB2cmJfZW5xdWV1ZV9sZHBjX2RlY19vbmVfb3BfY2Ioc3RydWN0DQo+IGFjY19xdWV1ZSAqcSwg c3RydWN0IHJ0ZV9iYmRldl9kZWNfb3AgKm9wLA0KPiA+ICAgCQlzdHJ1Y3QgYWNjX2Zjd19sZCAq ZmN3Ow0KPiA+ICAgCQl1aW50MzJfdCBzZWdfdG90YWxfbGVmdDsNCj4gPiAgIAkJZmN3ID0gJmRl c2MtPnJlcS5mY3dfbGQ7DQo+ID4gLQkJcS0+ZC0+ZmN3X2xkX2ZpbGwob3AsIGZjdywgaGFycV9s YXlvdXQpOw0KPiA+ICsJCXZyYl9mY3dfbGRfZmlsbChvcCwgZmN3LCBoYXJxX2xheW91dCwgcS0+ ZC0+ZGV2aWNlX3ZhcmlhbnQpOw0KPiA+DQo+ID4gICAJCS8qIFNwZWNpYWwgaGFuZGxpbmcgd2hl biB1c2luZyBtYnVmIG9yIG5vdC4gKi8NCj4gPiAgIAkJaWYgKGNoZWNrX2JpdChvcC0+bGRwY19k ZWMub3BfZmxhZ3MsIEBAIC0yMjE1LDEwICsyNDQ0LDEwDQo+IEBADQo+ID4gdnJiX2VucXVldWVf bGRwY19kZWNfb25lX29wX2NiKHN0cnVjdCBhY2NfcXVldWUgKnEsIHN0cnVjdA0KPiBydGVfYmJk ZXZfZGVjX29wICpvcCwNCj4gPiAgIAkJZWxzZQ0KPiA+ICAgCQkJc2VnX3RvdGFsX2xlZnQgPSBm Y3ctPnJtX2U7DQo+ID4NCj4gPiAtCQlyZXQgPSB2cmIxX2RtYV9kZXNjX2xkX2ZpbGwob3AsICZk ZXNjLT5yZXEsICZpbnB1dCwgaF9vdXRwdXQsDQo+ID4gKwkJcmV0ID0gdnJiX2RtYV9kZXNjX2xk X2ZpbGwob3AsICZkZXNjLT5yZXEsICZpbnB1dCwgaF9vdXRwdXQsDQo+ID4gICAJCQkJJmluX29m ZnNldCwgJmhfb3V0X29mZnNldCwNCj4gPiAgIAkJCQkmaF9vdXRfbGVuZ3RoLCAmbWJ1Zl90b3Rh bF9sZWZ0LA0KPiA+IC0JCQkJJnNlZ190b3RhbF9sZWZ0LCBmY3cpOw0KPiA+ICsJCQkJJnNlZ190 b3RhbF9sZWZ0LCBmY3csIHEtPmQtPmRldmljZV92YXJpYW50KTsNCj4gPiAgIAkJaWYgKHVubGlr ZWx5KHJldCA8IDApKQ0KPiA+ICAgCQkJcmV0dXJuIHJldDsNCj4gPiAgIAl9DQo+ID4gQEAgLTIy NzUsNyArMjUwNCw4IEBAIHZyYl9lbnF1ZXVlX2xkcGNfZGVjX29uZV9vcF90YihzdHJ1Y3QNCj4g YWNjX3F1ZXVlICpxLCBzdHJ1Y3QgcnRlX2JiZGV2X2RlY19vcCAqb3AsDQo+ID4gICAJZGVzY19m aXJzdCA9IGRlc2M7DQo+ID4gICAJZmN3X29mZnNldCA9IChkZXNjX2lkeCA8PCA4KSArIEFDQ19E RVNDX0ZDV19PRkZTRVQ7DQo+ID4gICAJaGFycV9sYXlvdXQgPSBxLT5kLT5oYXJxX2xheW91dDsN Cj4gPiAtCXEtPmQtPmZjd19sZF9maWxsKG9wLCAmZGVzYy0+cmVxLmZjd19sZCwgaGFycV9sYXlv dXQpOw0KPiA+ICsNCj4gPiArCXZyYl9mY3dfbGRfZmlsbChvcCwgJmRlc2MtPnJlcS5mY3dfbGQs IGhhcnFfbGF5b3V0LA0KPiA+ICtxLT5kLT5kZXZpY2VfdmFyaWFudCk7DQo+ID4NCj4gPiAgIAlp bnB1dCA9IG9wLT5sZHBjX2RlYy5pbnB1dC5kYXRhOw0KPiA+ICAgCWhfb3V0cHV0X2hlYWQgPSBo X291dHB1dCA9IG9wLT5sZHBjX2RlYy5oYXJkX291dHB1dC5kYXRhOyBAQA0KPiA+IC0yMzA3LDEy ICsyNTM3LDExIEBAIHZyYl9lbnF1ZXVlX2xkcGNfZGVjX29uZV9vcF90YihzdHJ1Y3QgYWNjX3F1 ZXVlDQo+ICpxLCBzdHJ1Y3QgcnRlX2JiZGV2X2RlY19vcCAqb3AsDQo+ID4gICAJCWRlc2MtPnJl cS5kYXRhX3B0cnNbMF0uYmxlbiA9IEFDQ19GQ1dfTERfQkxFTjsNCj4gPiAgIAkJcnRlX21lbWNw eSgmZGVzYy0+cmVxLmZjd19sZCwgJmRlc2NfZmlyc3QtPnJlcS5mY3dfbGQsDQo+IEFDQ19GQ1df TERfQkxFTik7DQo+ID4gICAJCWRlc2MtPnJlcS5mY3dfbGQudGJfdHJhaWxlcl9zaXplID0gKGMg LSByIC0gMSkgKiB0cmFpbF9sZW47DQo+ID4gLQ0KPiA+IC0JCXJldCA9IHZyYjFfZG1hX2Rlc2Nf bGRfZmlsbChvcCwgJmRlc2MtPnJlcSwgJmlucHV0LA0KPiA+ICsJCXJldCA9IHZyYl9kbWFfZGVz Y19sZF9maWxsKG9wLCAmZGVzYy0+cmVxLCAmaW5wdXQsDQo+ID4gICAJCQkJaF9vdXRwdXQsICZp bl9vZmZzZXQsICZoX291dF9vZmZzZXQsDQo+ID4gICAJCQkJJmhfb3V0X2xlbmd0aCwNCj4gPiAg IAkJCQkmbWJ1Zl90b3RhbF9sZWZ0LCAmc2VnX3RvdGFsX2xlZnQsDQo+ID4gLQkJCQkmZGVzYy0+ cmVxLmZjd19sZCk7DQo+ID4gKwkJCQkmZGVzYy0+cmVxLmZjd19sZCwgcS0+ZC0+ZGV2aWNlX3Zh cmlhbnQpOw0KPiA+DQo+ID4gICAJCWlmICh1bmxpa2VseShyZXQgPCAwKSkNCj4gPiAgIAkJCXJl dHVybiByZXQ7DQo+ID4gQEAgLTI1NzYsMTQgKzI4MDUsMjIgQEAgdnJiX2VucXVldWVfbGRwY19l bmNfdGIoc3RydWN0DQo+IHJ0ZV9iYmRldl9xdWV1ZV9kYXRhICpxX2RhdGEsDQo+ID4gICAJaW50 IGRlc2NzX3VzZWQ7DQo+ID4NCj4gPiAgIAlmb3IgKGkgPSAwOyBpIDwgbnVtOyArK2kpIHsNCj4g PiAtCQljYnNfaW5fdGIgPSBnZXRfbnVtX2Nic19pbl90Yl9sZHBjX2VuYygmb3BzW2ldLT5sZHBj X2VuYyk7DQo+ID4gLQkJLyogQ2hlY2sgaWYgdGhlcmUgYXJlIGF2YWlsYWJsZSBzcGFjZSBmb3Ig ZnVydGhlciBwcm9jZXNzaW5nLiAqLw0KPiA+IC0JCWlmICh1bmxpa2VseSgoYXZhaWwgLSBjYnNf aW5fdGIgPCAwKSB8fCAoY2JzX2luX3RiID09IDApKSkgew0KPiA+IC0JCQlhY2NfZW5xdWV1ZV9y aW5nX2Z1bGwocV9kYXRhKTsNCj4gPiAtCQkJYnJlYWs7DQo+ID4gKwkJaWYgKHEtPmQtPmRldmlj ZV92YXJpYW50ID09IFZSQjFfVkFSSUFOVCkgew0KPiA+ICsJCQljYnNfaW5fdGIgPSBnZXRfbnVt X2Nic19pbl90Yl9sZHBjX2VuYygmb3BzW2ldLQ0KPiA+bGRwY19lbmMpOw0KPiA+ICsJCQkvKiBD aGVjayBpZiB0aGVyZSBhcmUgYXZhaWxhYmxlIHNwYWNlIGZvciBmdXJ0aGVyDQo+IHByb2Nlc3Np bmcuICovDQo+ID4gKwkJCWlmICh1bmxpa2VseSgoYXZhaWwgLSBjYnNfaW5fdGIgPCAwKSB8fCAo Y2JzX2luX3RiID09IDApKSkgew0KPiA+ICsJCQkJYWNjX2VucXVldWVfcmluZ19mdWxsKHFfZGF0 YSk7DQo+ID4gKwkJCQlicmVhazsNCj4gPiArCQkJfQ0KPiA+ICsJCQlkZXNjc191c2VkID0gdnJi MV9lbnF1ZXVlX2xkcGNfZW5jX29uZV9vcF90YihxLA0KPiBvcHNbaV0sDQo+ID4gKwkJCQkJZW5x dWV1ZWRfZGVzY3MsIGNic19pbl90Yik7DQo+ID4gKwkJfSBlbHNlIHsNCj4gPiArCQkJaWYgKHVu bGlrZWx5KGF2YWlsIDwgMSkpIHsNCj4gPiArCQkJCWFjY19lbnF1ZXVlX3JpbmdfZnVsbChxX2Rh dGEpOw0KPiA+ICsJCQkJYnJlYWs7DQo+ID4gKwkJCX0NCj4gPiArCQkJZGVzY3NfdXNlZCA9IHZy YjJfZW5xdWV1ZV9sZHBjX2VuY19vbmVfb3BfdGIocSwNCj4gb3BzW2ldLA0KPiA+ICtlbnF1ZXVl ZF9kZXNjcyk7DQo+ID4gICAJCX0NCj4gPiAtDQo+ID4gLQkJZGVzY3NfdXNlZCA9IHZyYjFfZW5x dWV1ZV9sZHBjX2VuY19vbmVfb3BfdGIocSwgb3BzW2ldLA0KPiBlbnF1ZXVlZF9kZXNjcywgY2Jz X2luX3RiKTsNCj4gPiAgIAkJaWYgKGRlc2NzX3VzZWQgPCAwKSB7DQo+ID4gICAJCQlhY2NfZW5x dWV1ZV9pbnZhbGlkKHFfZGF0YSk7DQo+ID4gICAJCQlicmVhazsNCj4gPiBAQCAtMjg2NSw2ICsz MTAyLDUxIEBAIHZyYl9kZXF1ZXVlX2VuY19vbmVfb3BfY2Ioc3RydWN0IGFjY19xdWV1ZQ0KPiAq cSwgc3RydWN0IHJ0ZV9iYmRldl9lbmNfb3AgKipyZWZfb3AsDQo+ID4gICAJcmV0dXJuIGRlc2Mt PnJlcS5udW1DQnM7DQo+ID4gICB9DQo+ID4NCj4gPiArLyogRGVxdWV1ZSBvbmUgTERQQyBlbmNv ZGUgb3BlcmF0aW9ucyBmcm9tIFZSQjIgZGV2aWNlIGluIFRCIG1vZGUuICovDQo+ID4gK3N0YXRp YyBpbmxpbmUgaW50IHZyYjJfZGVxdWV1ZV9sZHBjX2VuY19vbmVfb3BfdGIoc3RydWN0IGFjY19x dWV1ZQ0KPiA+ICsqcSwgc3RydWN0IHJ0ZV9iYmRldl9lbmNfb3AgKipyZWZfb3AsDQo+ID4gKwkJ dWludDE2X3QgKmRlcXVldWVkX29wcywgdWludDMyX3QgKmFxX2RlcXVldWVkLA0KPiA+ICsJCXVp bnQxNl90ICpkZXF1ZXVlZF9kZXNjcykNCj4gPiArew0KPiA+ICsJdW5pb24gYWNjX2RtYV9kZXNj ICpkZXNjLCBhdG9tX2Rlc2M7DQo+ID4gKwl1bmlvbiBhY2NfZG1hX3JzcF9kZXNjIHJzcDsNCj4g PiArCXN0cnVjdCBydGVfYmJkZXZfZW5jX29wICpvcDsNCj4gPiArDQo+ID4gKwlkZXNjID0gYWNj X2Rlc2NfdGFpbChxLCAqZGVxdWV1ZWRfZGVzY3MpOw0KPiA+ICsJYXRvbV9kZXNjLmF0b21faGRy ID0gX19hdG9taWNfbG9hZF9uKCh1aW50NjRfdCAqKWRlc2MsDQo+ID4gK19fQVRPTUlDX1JFTEFY RUQpOw0KPiA+ICsNCj4gPiArCS8qIENoZWNrIGZkb25lIGJpdC4gKi8NCj4gPiArCWlmICghKGF0 b21fZGVzYy5yc3AudmFsICYgQUNDX0ZET05FKSkNCj4gPiArCQlyZXR1cm4gLTE7DQo+ID4gKw0K PiA+ICsJcnNwLnZhbCA9IGF0b21fZGVzYy5yc3AudmFsOw0KPiA+ICsJcnRlX2JiZGV2X2xvZ19k ZWJ1ZygiUmVzcC4gZGVzYyAlcDogJXgiLCBkZXNjLCByc3AudmFsKTsNCj4gPiArDQo+ID4gKwkv KiBEZXF1ZXVlLiAqLw0KPiA+ICsJb3AgPSBkZXNjLT5yZXEub3BfYWRkcjsNCj4gPiArDQo+ID4g KwkvKiBDbGVhcmluZyBzdGF0dXMsIGl0IHdpbGwgYmUgc2V0IGJhc2VkIG9uIHJlc3BvbnNlLiAq Lw0KPiA+ICsJb3AtPnN0YXR1cyA9IDA7DQo+ID4gKwlvcC0+c3RhdHVzIHw9IHJzcC5pbnB1dF9l cnIgPDwgUlRFX0JCREVWX0RBVEFfRVJST1I7DQo+ID4gKwlvcC0+c3RhdHVzIHw9IHJzcC5kbWFf ZXJyIDw8IFJURV9CQkRFVl9EUlZfRVJST1I7DQo+ID4gKwlvcC0+c3RhdHVzIHw9IHJzcC5mY3df ZXJyIDw8IFJURV9CQkRFVl9EUlZfRVJST1I7DQo+ID4gKwlvcC0+c3RhdHVzIHw9IHJzcC5lbmdp bmVfaHVuZyA8PCBSVEVfQkJERVZfRU5HSU5FX0VSUk9SOw0KPiA+ICsNCj4gPiArCWlmIChkZXNj LT5yZXEubGFzdF9kZXNjX2luX2JhdGNoKSB7DQo+ID4gKwkJKCphcV9kZXF1ZXVlZCkrKzsNCj4g PiArCQlkZXNjLT5yZXEubGFzdF9kZXNjX2luX2JhdGNoID0gMDsNCj4gPiArCX0NCj4gPiArCWRl c2MtPnJzcC52YWwgPSBBQ0NfRE1BX0RFU0NfVFlQRTsNCj4gPiArCWRlc2MtPnJzcC5hZGRfaW5m b18wID0gMDsgLyogUmVzZXJ2ZWQgYml0cy4gKi8NCj4gPiArCWRlc2MtPnJzcC5hZGRfaW5mb18x ID0gMDsgLyogUmVzZXJ2ZWQgYml0cy4gKi8NCj4gPiArDQo+ID4gKwkvKiBPbmUgb3Agd2FzIHN1 Y2Nlc3NmdWxseSBkZXF1ZXVlZCAqLw0KPiA+ICsJcmVmX29wWzBdID0gb3A7DQo+ID4gKwkoKmRl cXVldWVkX2Rlc2NzKSsrOw0KPiA+ICsJKCpkZXF1ZXVlZF9vcHMpKys7DQo+ID4gKwlyZXR1cm4g MTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgIC8qIERlcXVldWUgb25lIExEUEMgZW5jb2RlIG9wZXJh dGlvbnMgZnJvbSBkZXZpY2UgaW4gVEIgbW9kZS4NCj4gPiAgICAqIFRoYXQgb3BlcmF0aW9uIG1h eSBjb3ZlciBtdWx0aXBsZSBkZXNjcmlwdG9ycy4NCj4gPiAgICAqLw0KPiA+IEBAIC0zMTg5LDkg KzM0NzEsMTQgQEAgdnJiX2RlcXVldWVfbGRwY19lbmMoc3RydWN0DQo+ID4gcnRlX2JiZGV2X3F1 ZXVlX2RhdGEgKnFfZGF0YSwNCj4gPg0KPiA+ICAgCWZvciAoaSA9IDA7IGkgPCBhdmFpbDsgaSsr KSB7DQo+ID4gICAJCWlmIChjYm0gPT0gUlRFX0JCREVWX1RSQU5TUE9SVF9CTE9DSykNCj4gPiAt CQkJcmV0ID0gdnJiX2RlcXVldWVfZW5jX29uZV9vcF90YihxLA0KPiAmb3BzW2RlcXVldWVkX29w c10sDQo+ID4gLQkJCQkJJmRlcXVldWVkX29wcywgJmFxX2RlcXVldWVkLA0KPiA+IC0JCQkJCSZk ZXF1ZXVlZF9kZXNjcywgbnVtKTsNCj4gPiArCQkJaWYgKHEtPmQtPmRldmljZV92YXJpYW50ID09 IFZSQjFfVkFSSUFOVCkNCj4gPiArCQkJCXJldCA9IHZyYl9kZXF1ZXVlX2VuY19vbmVfb3BfdGIo cSwNCj4gJm9wc1tkZXF1ZXVlZF9vcHNdLA0KPiA+ICsJCQkJCQkmZGVxdWV1ZWRfb3BzLA0KPiAm YXFfZGVxdWV1ZWQsDQo+ID4gKwkJCQkJCSZkZXF1ZXVlZF9kZXNjcywgbnVtKTsNCj4gPiArCQkJ ZWxzZQ0KPiA+ICsJCQkJcmV0ID0gdnJiMl9kZXF1ZXVlX2xkcGNfZW5jX29uZV9vcF90YihxLA0K PiAmb3BzW2RlcXVldWVkX29wc10sDQo+ID4gKwkJCQkJCSZkZXF1ZXVlZF9vcHMsDQo+ICZhcV9k ZXF1ZXVlZCwNCj4gPiArCQkJCQkJJmRlcXVldWVkX2Rlc2NzKTsNCj4gPiAgIAkJZWxzZQ0KPiA+ ICAgCQkJcmV0ID0gdnJiX2RlcXVldWVfZW5jX29uZV9vcF9jYihxLA0KPiAmb3BzW2RlcXVldWVk X29wc10sDQo+ID4gICAJCQkJCSZkZXF1ZXVlZF9vcHMsICZhcV9kZXF1ZXVlZCwNCj4gPiBAQCAt MzUyNiw3ICszODEzLDYgQEAgdnJiX2JiZGV2X2luaXQoc3RydWN0IHJ0ZV9iYmRldiAqZGV2LCBz dHJ1Y3QNCj4gcnRlX3BjaV9kcml2ZXIgKmRydikNCj4gPiAgIAkJCShwY2lfZGV2LT5pZC5kZXZp Y2VfaWQgPT0gUlRFX1ZSQjFfVkZfREVWSUNFX0lEKSkgew0KPiA+ICAgCQlkLT5kZXZpY2VfdmFy aWFudCA9IFZSQjFfVkFSSUFOVDsNCj4gPiAgIAkJZC0+cXVldWVfb2Zmc2V0ID0gdnJiMV9xdWV1 ZV9vZmZzZXQ7DQo+ID4gLQkJZC0+ZmN3X2xkX2ZpbGwgPSB2cmIxX2Zjd19sZF9maWxsOw0KPiA+ ICAgCQlkLT5udW1fcWdyb3VwcyA9IFZSQjFfTlVNX1FHUlBTOw0KPiA+ICAgCQlkLT5udW1fYXFz ID0gVlJCMV9OVU1fQVFTOw0KPiA+ICAgCQlpZiAoZC0+cGZfZGV2aWNlKQ0KPiANCj4gVGhhbmtz LA0KPiBNYXhpbWUNCg0K