From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 30C7CC433F5 for ; Mon, 3 Jan 2022 04:09:02 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3554A89DA5; Mon, 3 Jan 2022 04:09:01 +0000 (UTC) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 89D2789BFD; Mon, 3 Jan 2022 04:08:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1641182939; x=1672718939; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=ByfPtWpE2yuKiRo8eDy5rY3Zwtl22LyzyIKiy+nOYtU=; b=D8zkpkYIh+6gRwstIkbmcGGtxLtFGbMBPwEqUODQkO0j9maPtlI+5T75 ozz77G26VYOJkw7/W04Spu3PLyUTbnREonbgFqjNllyTx6+Om+ShySWnF wsKW9X2pOe4wKMe0N3o3j2L4GYIMYEAhLLUdPaYoCikle0rvrzrRfyle/ 14gGPOj8DRFZQYUc11M+JEwd0Odr6h2AyMMbMpulAYXARdUVkMcTNNIOb iRuXerQy/QGXbNno7rmYdIk4NZYdcXqYYhYZZvUAp+N/YbFRcsmFKpgmR x9ny6WSOsLgch23RPuhZwv6oh7G5aX/5xczjEfv2U66wyxBBwC/loX4vz Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10215"; a="222683558" X-IronPort-AV: E=Sophos;i="5.88,256,1635231600"; d="scan'208";a="222683558" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jan 2022 20:08:59 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,256,1635231600"; d="scan'208";a="471530080" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by orsmga006.jf.intel.com with ESMTP; 02 Jan 2022 20:08:58 -0800 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Sun, 2 Jan 2022 20:08:58 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Sun, 2 Jan 2022 20:08:58 -0800 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.46) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Sun, 2 Jan 2022 20:08:58 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R1OFZdiRO6hvxceVXVD28x2IunE+cIPj+TZX4J23GzjUdpjp4IUn+wRZFFxF7kIt5zhh/dxxWFSRdPg2gCXPqxYndMOJMTTVdCfUPVE4OUEooTFk82a2skTZY0t3lEqcsVCZqfHNvlOtJ6WCbCXSNK6v062xJ7mV3GoCbXjOMOD3isNrB2OqiIpO/90H5LUDzMGWknr4xwtLYrn0oSDmm3N2PenBQew/rdLYIyZ5Vu/G6lOgJmmzv6QQOiGpPVo8DYNqGCI8CbAoLw8O3nwe0FbzImJKartnssVUZMej1YfLSFgboJuGXF7KqFs0n054s/OIqAjjEWdF9qNyaxaZKw== 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=ByfPtWpE2yuKiRo8eDy5rY3Zwtl22LyzyIKiy+nOYtU=; b=Bij/LfFLx+lzyIh958Bp1tZgCrMRxaya93Chauy1NYCtx9diCOiqZddcHt5+WyqyXZR+j/VerMfSmSN2ZMyvgdCNYhwTLaq24zawZICSlAcLeH819ptDlnmFaOgwxBi5kceadipY60OVzXHMukgjrPPWzjYuALrBjb8YTPSWgVx1L42L3B3rJlvt9jrZ04jdnlQPhEq/imOh1SJBtnCfNGECkV0E96nAaErH9gjYGOYVx0MQBIlTJ9ZZ153BqTQnZA9gBOGlIVbnTQTsKo4Ix10nwberX16rNqDfhkQpU5pE4f63MQa6LM8Hmmgjz/mc4SPum2emH7qzAjqBW32KEg== 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 DM8PR11MB5719.namprd11.prod.outlook.com (2603:10b6:8:10::6) by DM5PR1101MB2204.namprd11.prod.outlook.com (2603:10b6:4:58::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.13; Mon, 3 Jan 2022 04:08:54 +0000 Received: from DM8PR11MB5719.namprd11.prod.outlook.com ([fe80::4c47:45d4:7870:1c79]) by DM8PR11MB5719.namprd11.prod.outlook.com ([fe80::4c47:45d4:7870:1c79%5]) with mapi id 15.20.4844.016; Mon, 3 Jan 2022 04:08:54 +0000 From: "Modem, Bhanuprakash" To: Harry Wentland , "igt-dev@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" Subject: RE: [i-g-t 12/14] kms_color_helper: Add helper functions to support logarithmic gamma mode Thread-Topic: [i-g-t 12/14] kms_color_helper: Add helper functions to support logarithmic gamma mode Thread-Index: AQHX2gZM/J6dzpxS30aFhY15v21QFKwWGK0AgDUz0VA= Date: Mon, 3 Jan 2022 04:08:54 +0000 Message-ID: References: <20211115094759.520955-1-bhanuprakash.modem@intel.com> <20211115094759.520955-13-bhanuprakash.modem@intel.com> <1f1abd7f-90c1-3f36-04ba-4ee9eed7eab7@amd.com> In-Reply-To: <1f1abd7f-90c1-3f36-04ba-4ee9eed7eab7@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.6.200.16 dlp-product: dlpe-windows authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3bb13412-7aad-47a4-d539-08d9ce6ec1e9 x-ms-traffictypediagnostic: DM5PR1101MB2204:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 2y5a/+Oo0MhQhBtcFvXLBgUMGAxlfaIql2eTmYifBqvKwvxx1BdKrR7aWrjCpO8sdCFpXax5FL+x7F2Lp5mrOLgbttYoHS3owrEU+wJD0P1PaUIUaq++4J8twRzNh1+8qWOFW8hYwEW1QUPrq1WmO8GUttTGPy3mQt8061bHtco7eIvd5mNdfocnQzUeWIe2aNtVs9Vi8/NZKgqx9Z4/1Ym35p7gmuyxLTFoGw6s0v02EpptKwTc9+YBI+bKag9mm8+tP1XL5jVcwQpimrt41GZvZMrjUXPZrwiCC5w7CIxUPcUpL1ndhg3YqHDiOcQ24Ys4tdEWXV7GCEATlVDWZzNNC5VqgnB/cyhP0TCAOCNscOsz7YE9+7DZysy4aswaxAxZw6DJ1lP9OLuh3pvftCdqRIlVOApfmoawsLJdkWB1Vklkr5A0HdZ0yfbsLXQghVvUhevIQ2DGOf432/WRChRw+stPOSXMavCMdAjxZBfXjwDM7BIrGREh8giLDZyorm1R+GePFoNRCtL481dnS/5CEQAYDVf2vPy9D7rp87qr47Nh/GJs766z/eHp8/3swqcYm4c/w/Tuje3JZW8rlEihQPpvKsg+BGahomiSB/6nYWSrqfUKJHDspbnXoi7KTMYlXpBTsK4VQ4PWY0ABzpAYUh5+chChU2ArRjfHnTL6lmLhckzyVF/jLiWDhN0wISeY++CHE5OTqmpBfSCZ8w== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM8PR11MB5719.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(2906002)(71200400001)(52536014)(38070700005)(82960400001)(8936002)(8676002)(38100700002)(122000001)(33656002)(110136005)(55016003)(54906003)(186003)(64756008)(66556008)(76116006)(66476007)(66946007)(4326008)(4001150100001)(66446008)(86362001)(508600001)(7696005)(53546011)(316002)(6506007)(9686003)(26005)(66574015)(5660300002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eUx0bk8yMlE5L0RaY09yb0JtMHZabDlhRHpaQ25vZjJrK1N2OC94WnNwRzRm?= =?utf-8?B?T21aaWlSRTNzSEpvcEI0V1plWFdTa1dXNTJ0S3FwZkE2aG5yeUxpVm12WlA4?= =?utf-8?B?Q2crMXM5WWE0V1JhaWNGMmh5QklhM2Y5R0RkVzlhRGJYMEhrR0FxakttUzRU?= =?utf-8?B?RVJoVjdvWE5wNytkMUxtczRkY3dZcmtsZjVsUzlZa0E5YjFNVkNrM1pxRmxU?= =?utf-8?B?Mk9rM0ZCemlrT29GMDVDWkdDcVZlYVJ6cG1vY2pFSzc5YVpVVVJ1V05Ecm9H?= =?utf-8?B?VGhYNkpKM2loT1BmWGtPZEtsMStsY2NRekdmMzdaZDFDRWNtcWp0VGgzdVc0?= =?utf-8?B?bFJMQmp0MWZjc2FyTXhseThCZnBxakpxakVidVNIc1JBeHVqZ1lIWWF1Ynlk?= =?utf-8?B?eVFpTjBPNmRHNnhsOXlMQkpEb3MxL3BaZFJXMzZNcjRhYUdINUV0SVY0RU5h?= =?utf-8?B?Qzhkdk8zQjRlQVhhckdYYk90QU5ZUzY0SlpZU2VGTHRiMXhLTVhSV1V3clRu?= =?utf-8?B?aWhKYldGWTRyQWltN0N2dzJwYjcwdFc3VzkwbjhoSlhRcjZ5NjFmUG9ESGZL?= =?utf-8?B?L2duZWZSQjh4UHdncjZPaGZ1NVF6U0RKMncxUWw0RlQ5a2FEYW5EcVNrOTlD?= =?utf-8?B?NTQ0eE1OSUJCQVpYRkxrU0tzVDA1am1jbkgwZnluSWtmZ3Q4dGcybm95RWdv?= =?utf-8?B?ckpwS2dUeGpzZmg0bkxjT24vQloxTnVlZmNQVGVVcXIxK0dybmtBK3NHaEd0?= =?utf-8?B?bEFVbzBabmZVUjVSUGcvQjYvdUJMN0ZWSjI1Y3IzQnQ2aFU3QUptbUEySTJq?= =?utf-8?B?T1czTVJDdzlON1VzYStFMTRZM0E1YzhSUnJTcjRMODJ0b1V5T3FZZ3RBakg3?= =?utf-8?B?Y0VBSUZaSFQ2dVVGd2ZSZjFuN1JFNEFhU2dXVzVjUk4rT1NaWUkwaEZCbVFQ?= =?utf-8?B?dHVRN2tHNzU3UVBXelNxZ01nV1YzaFM0MEExZDh0WjEydEEzb1NYdEMxc0ND?= =?utf-8?B?K1F3SThqNnQvdktVSHhnYjZ3cnNGNU12eWFvY0E3VVlaN0dtb2g2UnhWeFpL?= =?utf-8?B?VW9yNzRWMGNvclFhUTB6SVllcnYyKzBZOWhpQitHaFVpUVNpeEVSU2Z6ODRN?= =?utf-8?B?Y09iMGcxTW9IbmNFZ01ZUmY1MEZ1YWIrWWNYb3JZekttK0FhUWZhU2ZEeHJR?= =?utf-8?B?a21VVExmc3VxVVR1b0xBcThPVTJ4SmYyRlY3Qk5jeDFLbW02eEdEQVpGVTc1?= =?utf-8?B?NWRTTkY1dWsyS2ZuUDluRjhpRm9xRTJvK1RaN3NuTllXNm5QL1BkeHZMSDJC?= =?utf-8?B?QVZOL2lNK1ZqVHVibnh4Y0FxY0hCdTN3TDFaUU43T0UxMkYzazNCUVF4RVcv?= =?utf-8?B?WnhVTkZWdUVQRzk1S204eHEvdHIwMHRaVDU4OThKRGxnSkRtU0drb1A2cXov?= =?utf-8?B?VnZIb1gyYTZLazgrZ2Rnc1NCMVBUL2J2YUtWVlJteFBYOVowTjFaTEpOVzFL?= =?utf-8?B?Qi9Ua0EvSG1DMCtrQjJSbUNZL3ZsZnNFWXd2YUtZRm05ME9VRTVxN3BSV1FL?= =?utf-8?B?Nm13MlZsSUd2R3gwd2FHcTBYWUtZSXhVNjNFS2VGOVdaMm1kQXFZeG5wTkgx?= =?utf-8?B?L3pDcC82aWhKMzZMNTg3ZE1DRStlVS9lUmptaDZPK1BSQnllblVLSXVqTW5H?= =?utf-8?B?a3NUTzRacnlXU0Zac2dTWGhYSWpGdUxzb2RrOTRoQzZ2enF2MFkvL2wva1Bi?= =?utf-8?B?YStwQytTMFRPWnk1T081TTJrZ0EvdEZPUEdwY05aQXFTTEJjTERvd2NtdG1Q?= =?utf-8?B?dXIvNGI2NVZpMDBBNGFIelZpTk1vUlIzM05Ja1ZMOE1tQzBBTXJQVmoxdndF?= =?utf-8?B?OGxTWFNwZFF0Q3pLRkhLMkl3WmdOTm5jemtpOVFzdHNHWEt6eFhyWlA1dXR1?= =?utf-8?B?YU5LUVhvcTFQdjdvWDk1Mkhja1NPZjZOY1EybkZXeENTbURPRHNhSVM0akQy?= =?utf-8?B?ZXZBaFdnSWtOTTNPQ3p4SXlHMzdJSlFPNVNsWUZMUEVrRGxrNm9WUGpmd0JC?= =?utf-8?B?YmRaWE10SXp5dTBpMGVKRU9wdFBvQXBtbjlOcHBUc3JJY1RXMkNDOXlaNkF4?= =?utf-8?B?K0pZeWExek9mN0VidStyZmR1ZlBqVTRDbm4yMzd3VzNpclJWZDhGa0FrYW9O?= =?utf-8?B?L0xRNHZsRCtySFBHcEpycmh4eGtnQXlSRlVvV3JxZnREbTFCOVI0T1pKNEFy?= =?utf-8?B?MDdxbndtQ0tEaGFRS0dIV0JMN1NnPT0=?= 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: DM8PR11MB5719.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3bb13412-7aad-47a4-d539-08d9ce6ec1e9 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jan 2022 04:08:54.3593 (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: 8WLpWNT4x+DjQiv++YFAkEvoTzsORgpzW9jw1nJHSrSr1OconDM6igkNcy8n/ZtzpHqFPDYFhG+isTiXEm8+4DlbOOHRKXmwLsRzqKDOXMY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR1101MB2204 X-OriginatorOrg: intel.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Shankar, Uma" , "Kumar, Mukunda Pramodh" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" PiBGcm9tOiBIYXJyeSBXZW50bGFuZCA8aGFycnkud2VudGxhbmRAYW1kLmNvbT4NCj4gU2VudDog RnJpZGF5LCBOb3ZlbWJlciAyNiwgMjAyMSAxMDoyNSBQTQ0KPiBUbzogTW9kZW0sIEJoYW51cHJh a2FzaCA8YmhhbnVwcmFrYXNoLm1vZGVtQGludGVsLmNvbT47IGlndC0NCj4gZGV2QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZzsgZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPiBDYzogS3Vt YXIsIE11a3VuZGEgUHJhbW9kaCA8bXVrdW5kYS5wcmFtb2RoLmt1bWFyQGludGVsLmNvbT47IFZp bGxlIFN5cmrDpGzDpA0KPiA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+OyBKdWhhLVBl a2thIEhlaWtraWxhDQo+IDxqdWhhcGVra2EuaGVpa2tpbGFAZ21haWwuY29tPjsgU2hhbmthciwg VW1hIDx1bWEuc2hhbmthckBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbaS1nLXQgMTIvMTRd IGttc19jb2xvcl9oZWxwZXI6IEFkZCBoZWxwZXIgZnVuY3Rpb25zIHRvIHN1cHBvcnQNCj4gbG9n YXJpdGhtaWMgZ2FtbWEgbW9kZQ0KPiANCj4gT24gMjAyMS0xMS0xNSAwNDo0NywgQmhhbnVwcmFr YXNoIE1vZGVtIHdyb3RlOg0KPiA+IEZyb206IE11a3VuZGEgUHJhbW9kaCBLdW1hciA8bXVrdW5k YS5wcmFtb2RoLmt1bWFyQGludGVsLmNvbT4NCj4gPg0KPiA+IEFkZCBoZWxwZXIgZnVuY3Rpb25z IHRvIHN1cHBvcnQgbG9nYXJpdGhtaWMgZ2FtbWEgbW9kZQ0KPiA+DQo+ID4gQ2M6IEhhcnJ5IFdl bnRsYW5kIDxoYXJyeS53ZW50bGFuZEBhbWQuY29tPg0KPiA+IENjOiBWaWxsZSBTeXJqw6Rsw6Qg PHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPg0KPiA+IENjOiBKdWhhLVBla2thIEhlaWtr aWxhIDxqdWhhcGVra2EuaGVpa2tpbGFAZ21haWwuY29tPg0KPiA+IENjOiBVbWEgU2hhbmthciA8 dW1hLnNoYW5rYXJAaW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IE11a3VuZGEgUHJhbW9k aCBLdW1hciA8bXVrdW5kYS5wcmFtb2RoLmt1bWFyQGludGVsLmNvbT4NCj4gPiBTaWduZWQtb2Zm LWJ5OiBCaGFudXByYWthc2ggTW9kZW0gPGJoYW51cHJha2FzaC5tb2RlbUBpbnRlbC5jb20+DQo+ ID4gLS0tDQo+ID4gIHRlc3RzL2ttc19jb2xvcl9oZWxwZXIuYyB8IDEyNyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiAgdGVzdHMva21zX2NvbG9yX2hlbHBlci5o IHwgIDE2ICsrKysrDQo+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMTQzIGluc2VydGlvbnMoKykNCj4g Pg0KPiA+IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNfY29sb3JfaGVscGVyLmMgYi90ZXN0cy9rbXNf Y29sb3JfaGVscGVyLmMNCj4gPiBpbmRleCBjNjViN2EwZjUwLi43ZWE4MjgyZGYzIDEwMDY0NA0K PiA+IC0tLSBhL3Rlc3RzL2ttc19jb2xvcl9oZWxwZXIuYw0KPiA+ICsrKyBiL3Rlc3RzL2ttc19j b2xvcl9oZWxwZXIuYw0KPiA+IEBAIC0xOTAsNiArMTkwLDMzIEBAIHN0cnVjdCBkcm1fY29sb3Jf bHV0ICpjb2VmZnNfdG9fbHV0KGRhdGFfdCAqZGF0YSwNCj4gPiAgCXJldHVybiBsdXQ7DQo+ID4g IH0NCj4gPg0KPiA+ICtzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29lZmZzX3RvX2xvZ2FyaXRobWlj X2x1dChkYXRhX3QgKmRhdGEsDQo+ID4gKwkJCQkJCWNvbnN0IGdhbW1hX2x1dF90ICpnYW1tYSwN Cj4gPiArCQkJCQkJdWludDMyX3QgY29sb3JfZGVwdGgsDQo+ID4gKwkJCQkJCWludCBvZmYpDQo+ IA0KPiBIb3cgZG9lcyB0aGlzIGNyZWF0ZSBhIGxvZ2FyaXRobWljIExVVD8gSXQgc2VlbXMgdG8g ZG8gdGhlIHNhbWUNCj4gYXMgY29lZmZzX3RvX2x1dCAod2hpY2ggaXMgYWxzbyBmdWxsIG9mIGlu dGVsbGlzbXMpIGV4Y2VwdCB0aGF0DQo+IGl0IGFsc28gc2NhbGVzIHRoZSB2YWx1ZXMgYnkgbWF4 X2h3X3ZhbHVlIC8gbWF4X3NlZ21lbnRfdmFsdWUgZm9yDQo+IHJlYXNvbnMgdGhhdCBhcmUgbm90 IG9idmlvdXMgdG8gbWUuDQoNClllcywgdGhpcyBpcyBqdXN0IGFuIGFub3RoZXIgdmVyc2lvbiBv ZiBjb2VmZnNfdG9fbHV0LCBJJ2xsIGZsb2F0DQphIG5ldyByZXYgd2l0aCB0aGlzIGNoYW5nZS4N Cg0KPiANCj4gPiArew0KPiA+ICsJc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dDsNCj4gPiArCWlu dCBpLCBsdXRfc2l6ZSA9IGdhbW1hLT5zaXplOw0KPiA+ICsJLyogVGhpcyBpcyB0aGUgbWF4aW11 bSB2YWx1ZSBkdWUgdG8gMTYgYml0IHByZWNpc2lvbiBpbiBoYXJkd2FyZS4gKi8NCj4gPiArCXVp bnQzMl90IG1heF9od192YWx1ZSA9ICgxIDw8IDE2KSAtIDE7DQo+ID4gKwl1bnNpZ25lZCBpbnQg bWF4X3NlZ21lbnRfdmFsdWUgPSAxIDw8IDI0Ow0KPiA+ICsNCj4gDQo+IA0KPiBUaGlzIGxvb2tz IGxpa2UgaXQgaXMgc3BlY2lmaWMgdG8gSW50ZWwgSFcuIEludGVsLXNwZWNpZmljIHRoaW5ncyBz aG91bGQNCj4gbm90IGxpdmUgaW4ga21zXyB0ZXN0cy4NCj4gDQo+IFNob3VsZG4ndCB0aGVzZSBi ZSBlbmNvZGVkIGluIHRoZSBkcm1fY29sb3JfbHV0X3JhbmdlIGRlZmluaXRpb25zPw0KPiANCj4g VG8gYmUgaG9uZXN0IEkgYW0gbm90IGNsZWFyIHdoeSBtYXhfaHdfdmFsdWUgYW5kIG1heF9zZWdt ZW50X3ZhbHVlDQo+IGRpZmZlciBoZXJlLg0KDQpZZWFoLCB0aGUgY29tbWVudCBpcyBtaXNsZWFk aW5nIGFuZCB2YXJpYWJsZSBuYW1lcyBhbHNvIGJpdCBjb25mdXNpbmcuDQoNCkFzIHVhcGkgc3Vw cG9ydHMgVTAuMTYgcHJlY2lzaW9uIHRoZSBtYXggc3VwcG9ydGVkIHZhbHVlIHdvdWxkIGJlICgx IDw8IDE2KSAtIDENCmFuZCBJbnRlbCBoL3cgc3VwcG9ydHMgbWF4IHZhbHVlIG9mICgxIDw8IDI0 KSBzbyB3ZSBuZWVkIHRvIHNjYWxlIHRoZSB2YWx1ZXMNCmFjY29yZGluZ2x5Lg0KDQpTbywgbmVl ZCB0byBkcm9wIGgvdyBzcGVjaWZpYyBoYXJkY29kZWQgc3R1ZmYgYW5kIHJlYWQgZnJvbSB1YXBp ICYgcmVuYW1lIHRoZQ0KdmFyaWFibGVzIGFzIGJlbG93Og0KDQptYXhfdWFwaV92YWx1ZSA9ICgx IDw8IDE2KSAtIDE7DQptYXhfaHdfdmFsdWUgPSAvKiBSZWFkIGZyb20gdGhlIHVhcGkuICovDQoN Cj4gDQo+IEhhcnJ5DQo+IA0KPiA+ICsJbHV0ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZHJtX2Nv bG9yX2x1dCkgKiBsdXRfc2l6ZSk7DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IGx1dF9z aXplOyBpKyspIHsNCj4gPiArCQlkb3VibGUgc2NhbGluZ19mYWN0b3IgPSAoZG91YmxlKW1heF9o d192YWx1ZSAvDQo+IChkb3VibGUpbWF4X3NlZ21lbnRfdmFsdWU7DQo+ID4gKwkJdWludDMyX3Qg ciA9IE1JTigoZ2FtbWEtPmNvZWZmc1tpXS5yICogc2NhbGluZ19mYWN0b3IpLA0KPiBtYXhfaHdf dmFsdWUpOw0KPiA+ICsJCXVpbnQzMl90IGcgPSBNSU4oKGdhbW1hLT5jb2VmZnNbaV0uZyAqIHNj YWxpbmdfZmFjdG9yKSwNCj4gbWF4X2h3X3ZhbHVlKTsNCj4gPiArCQl1aW50MzJfdCBiID0gTUlO KChnYW1tYS0+Y29lZmZzW2ldLmIgKiBzY2FsaW5nX2ZhY3RvciksDQo+IG1heF9od192YWx1ZSk7 DQo+ID4gKw0KPiA+ICsJCWx1dFtpXS5yZWQgPSByOw0KPiA+ICsJCWx1dFtpXS5ncmVlbiA9IGc7 DQo+ID4gKwkJbHV0W2ldLmJsdWUgPSBiOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiBs dXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gIHZvaWQgc2V0X2RlZ2FtbWEoZGF0YV90ICpkYXRhLA0K PiA+ICAJCSBpZ3RfcGlwZV90ICpwaXBlLA0KPiA+ICAJCSBjb25zdCBnYW1tYV9sdXRfdCAqZ2Ft bWEpDQo+ID4gQEAgLTIwMyw2ICsyMzAsMTUgQEAgdm9pZCBzZXRfZGVnYW1tYShkYXRhX3QgKmRh dGEsDQo+ID4gIAlmcmVlKGx1dCk7DQo+ID4gIH0NCj4gPg0KPiA+ICt2b2lkIHNldF9waXBlX2dh bW1hKGlndF9waXBlX3QgKnBpcGUsDQo+ID4gKwkJICAgIHVpbnQ2NF90IHZhbHVlLA0KPiA+ICsJ CSAgICBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0LA0KPiA+ICsJCSAgICB1aW50MzJfdCBzaXpl KQ0KPiA+ICt7DQo+ID4gKwlpZ3RfcGlwZV9vYmpfc2V0X3Byb3BfdmFsdWUocGlwZSwgSUdUX0NS VENfR0FNTUFfTU9ERSwgdmFsdWUpOw0KPiA+ICsJaWd0X3BpcGVfb2JqX3JlcGxhY2VfcHJvcF9i bG9iKHBpcGUsIElHVF9DUlRDX0dBTU1BX0xVVCwgbHV0LCBzaXplKTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiAgdm9pZCBzZXRfZ2FtbWEoZGF0YV90ICpkYXRhLA0KPiA+ICAJICAgICAgIGlndF9waXBl X3QgKnBpcGUsIGNvbnN0IGdhbW1hX2x1dF90ICpnYW1tYSkNCj4gPiAgew0KPiA+IEBAIC0yNDEs NiArMjc3LDUxIEBAIHZvaWQgZGlzYWJsZV9wcm9wKGlndF9waXBlX3QgKnBpcGUsIGVudW0NCj4g aWd0X2F0b21pY19jcnRjX3Byb3BlcnRpZXMgcHJvcCkNCj4gPiAgCQlpZ3RfcGlwZV9vYmpfcmVw bGFjZV9wcm9wX2Jsb2IocGlwZSwgcHJvcCwgTlVMTCwgMCk7DQo+ID4gIH0NCj4gPg0KPiA+ICtk cm1Nb2RlUHJvcGVydHlQdHIgZ2V0X3BpcGVfZ2FtbWFfZGVnYW1tYV9tb2RlKGlndF9waXBlX3Qg KnBpcGUsDQo+ID4gKwkJCQkJICAgICAgIGVudW0gaWd0X2F0b21pY19jcnRjX3Byb3BlcnRpZXMg cHJvcCkNCj4gPiArew0KPiA+ICsJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9IHBpcGUtPmRpc3Bs YXk7DQo+ID4gKwl1aW50MzJfdCBwcm9wX2lkID0gcGlwZS0+cHJvcHNbcHJvcF07DQo+ID4gKwlk cm1Nb2RlUHJvcGVydHlQdHIgZHJtUHJvcDsNCj4gPiArDQo+ID4gKwlpZ3RfYXNzZXJ0KHByb3Bf aWQpOw0KPiA+ICsNCj4gPiArCWRybVByb3AgPSBkcm1Nb2RlR2V0UHJvcGVydHkoZGlzcGxheS0+ ZHJtX2ZkLCBwcm9wX2lkKTsNCj4gPiArDQo+ID4gKwlpZ3RfYXNzZXJ0KGRybVByb3ApOw0KPiA+ ICsJaWd0X2Fzc2VydChkcm1Qcm9wLT5jb3VudF9lbnVtcyk7DQo+ID4gKw0KPiA+ICsJcmV0dXJu IGRybVByb3A7DQo+ID4gK30NCj4gPiArDQo+ID4gK2dhbW1hX2x1dF90ICpwaXBlX2NyZWF0ZV9s aW5lYXJfbHV0KHNlZ21lbnRfZGF0YV90ICppbmZvKQ0KPiA+ICt7DQo+ID4gKwl1aW50MzJfdCBz ZWdtZW50LCBlbnRyeSwgaW5kZXggPSAwOw0KPiA+ICsJZG91YmxlIHZhbDsNCj4gPiArCWludCBp ID0gMDsNCj4gPiArCWdhbW1hX2x1dF90ICpnYW1tYSA9IGFsbG9jX2x1dChpbmZvLT5lbnRyaWVz X2NvdW50KTsNCj4gPiArDQo+ID4gKwlpZ3RfYXNzZXJ0KGdhbW1hKTsNCj4gPiArDQo+ID4gKwln YW1tYS0+c2l6ZSA9IGluZm8tPmVudHJpZXNfY291bnQ7DQo+ID4gKwlmb3IgKHNlZ21lbnQgPSAw OyBzZWdtZW50IDwgaW5mby0+c2VnbWVudF9jb3VudDsgc2VnbWVudCsrKSB7DQo+ID4gKwkJdWlu dDMyX3QgZW50cnlfY291bnQgPSBpbmZvLT5zZWdtZW50X2RhdGFbc2VnbWVudF0uY291bnQ7DQo+ ID4gKwkJdWludDMyX3Qgc3RhcnQgPSAoc2VnbWVudCA9PSAwKSA/IDAgOiAoMSA8PCAoc2VnbWVu dCAtIDEpKTsNCj4gPiArCQl1aW50MzJfdCBlbmQgPSAxIDw8IHNlZ21lbnQ7DQo+ID4gKw0KPiA+ ICsJCWZvciAoZW50cnkgPSAwOyBlbnRyeSA8IGVudHJ5X2NvdW50OyBlbnRyeSsrKSB7DQo+ID4g KwkJCXZhbCA9IChpbmRleCA9PSAwKSA/IC8qIEZpcnN0IGVudHJ5IGlzIFplcm8uICovDQo+ID4g KwkJCQkwIDogc3RhcnQgKyBlbnRyeSAqDQo+ID4gKwkJCQkoKGVuZCAtIHN0YXJ0KSAqIDEuMCAv IGVudHJ5X2NvdW50KTsNCj4gPiArDQo+ID4gKwkJCXNldF9yZ2IoJmdhbW1hLT5jb2VmZnNbaSsr XSwgdmFsKTsNCj4gPiArCQkJaW5kZXgrKzsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gKw0KPiA+ ICsJcmV0dXJuIGdhbW1hOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICBkcm1Nb2RlUHJvcGVydHlQdHIg Z2V0X3BsYW5lX2dhbW1hX2RlZ2FtbWFfbW9kZShpZ3RfcGxhbmVfdCAqcGxhbmUsDQo+ID4gIAkJ CQllbnVtIGlndF9hdG9taWNfcGxhbmVfcHJvcGVydGllcyBwcm9wKQ0KPiA+ICB7DQo+ID4gQEAg LTMzMSw2ICs0MTIsNyBAQCBzZWdtZW50X2RhdGFfdCAqZ2V0X3NlZ21lbnRfZGF0YShkYXRhX3Qg KmRhdGEsDQo+ID4gIAlpbmZvLT5zZWdtZW50X2RhdGEgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBk cm1fY29sb3JfbHV0X3JhbmdlKSAqIGluZm8tDQo+ID5zZWdtZW50X2NvdW50KTsNCj4gPiAgCWln dF9hc3NlcnQoaW5mby0+c2VnbWVudF9kYXRhKTsNCj4gPg0KPiA+ICsJaW5mby0+ZW50cmllc19j b3VudCA9IDA7DQo+ID4gIAlmb3IgKGkgPSAwOyBpIDwgaW5mby0+c2VnbWVudF9jb3VudDsgaSsr KSB7DQo+ID4gIAkJaW5mby0+ZW50cmllc19jb3VudCArPSBsdXRfcmFuZ2VbaV0uY291bnQ7DQo+ ID4gIAkJaW5mby0+c2VnbWVudF9kYXRhW2ldID0gbHV0X3JhbmdlW2ldOw0KPiA+IEBAIC0zNDEs NiArNDIzLDUxIEBAIHNlZ21lbnRfZGF0YV90ICpnZXRfc2VnbWVudF9kYXRhKGRhdGFfdCAqZGF0 YSwNCj4gPiAgCXJldHVybiBpbmZvOw0KPiA+ICB9DQo+ID4NCj4gPiArdm9pZCBzZXRfYWR2YW5j ZV9nYW1tYShkYXRhX3QgKmRhdGEsIGlndF9waXBlX3QgKnBpcGUsIGVudW0gZ2FtbWFfdHlwZQ0K PiB0eXBlKQ0KPiA+ICt7DQo+ID4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRp c3BsYXk7DQo+ID4gKwlnYW1tYV9sdXRfdCAqZ2FtbWFfbG9nOw0KPiA+ICsJZHJtTW9kZVByb3Bl cnR5UHRyIGdhbW1hX21vZGUgPSBOVUxMOw0KPiA+ICsJc2VnbWVudF9kYXRhX3QgKnNlZ21lbnRf aW5mbyA9IE5VTEw7DQo+ID4gKwlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0gTlVMTDsNCj4g PiArCWludCBsdXRfc2l6ZSA9IDA7DQo+ID4gKw0KPiA+ICsJZHJtU2V0Q2xpZW50Q2FwKGRhdGEt PmRybV9mZCwgRFJNX0NMSUVOVF9DQVBfQURWQU5DRV9HQU1NQV9NT0RFUywgMSk7DQo+ID4gKwln YW1tYV9tb2RlID0gZ2V0X3BpcGVfZ2FtbWFfZGVnYW1tYV9tb2RlKHBpcGUsIElHVF9DUlRDX0dB TU1BX01PREUpOw0KPiA+ICsNCj4gPiArCWZvciAoaW50IGkgPSAwOyBpIDwgZ2FtbWFfbW9kZS0+ Y291bnRfZW51bXM7IGkrKykgew0KPiA+ICsJCWlmICghc3RyY21wKGdhbW1hX21vZGUtPmVudW1z W2ldLm5hbWUsICJsb2dhcml0aG1pYyBnYW1tYSIpKSB7DQo+ID4gKwkJCXNlZ21lbnRfaW5mbyA9 IGdldF9zZWdtZW50X2RhdGEoZGF0YSwNCj4gPiArCQkJCQkJCWdhbW1hX21vZGUtPmVudW1zW2ld LnZhbHVlLA0KPiA+ICsJCQkJCQkJZ2FtbWFfbW9kZS0+ZW51bXNbaV0ubmFtZSk7DQo+ID4gKwkJ CWx1dF9zaXplID0gc2l6ZW9mKHN0cnVjdCBkcm1fY29sb3JfbHV0KSAqDQo+ID4gKwkJCQkJICBz ZWdtZW50X2luZm8tPmVudHJpZXNfY291bnQ7DQo+ID4gKwkJCWlmICh0eXBlID09IExJTkVBUl9H QU1NQSkgew0KPiA+ICsJCQkJZ2FtbWFfbG9nID0gcGlwZV9jcmVhdGVfbGluZWFyX2x1dChzZWdt ZW50X2luZm8pOw0KPiA+ICsJCQkJbHV0ID0gY29lZmZzX3RvX2xvZ2FyaXRobWljX2x1dChkYXRh LA0KPiA+ICsJCQkJCQkJCWdhbW1hX2xvZywNCj4gPiArCQkJCQkJCQlkYXRhLT5jb2xvcl9kZXB0 aCwNCj4gPiArCQkJCQkJCQkwKTsNCj4gPiArCQkJfSBlbHNlIGlmICh0eXBlID09IE1BWF9HQU1N QSkgew0KPiA+ICsJCQkJZ2FtbWFfbG9nID0gZ2VuZXJhdGVfdGFibGVfbWF4KHNlZ21lbnRfaW5m by0NCj4gPmVudHJpZXNfY291bnQpOw0KPiA+ICsJCQkJZ2FtbWFfbG9nLT5zaXplID0gc2VnbWVu dF9pbmZvLT5lbnRyaWVzX2NvdW50Ow0KPiA+ICsJCQkJbHV0ID0gY29lZmZzX3RvX2x1dChkYXRh LCBnYW1tYV9sb2csDQo+ID4gKwkJCQkJCSAgICBkYXRhLT5jb2xvcl9kZXB0aCwgMCk7DQo+ID4g KwkJCX0NCj4gPiArCQkJc2V0X3BpcGVfZ2FtbWEocGlwZSwgZ2FtbWFfbW9kZS0+ZW51bXNbaV0u dmFsdWUsDQo+ID4gKwkJCQkgICAgICAgbHV0LCBsdXRfc2l6ZSk7DQo+ID4gKwkJCWlndF9kaXNw bGF5X2NvbW1pdDIoZGlzcGxheSwgZGlzcGxheS0+aXNfYXRvbWljDQo+ID4gKwkJCQkJICAgID8g Q09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1kpOw0KPiA+ICsJCQlicmVhazsNCj4gPiArCQl9 DQo+ID4gKwl9DQo+ID4gKwlkcm1TZXRDbGllbnRDYXAoZGF0YS0+ZHJtX2ZkLCBEUk1fQ0xJRU5U X0NBUF9BRFZBTkNFX0dBTU1BX01PREVTLCAwKTsNCj4gPiArCWZyZWUoZ2FtbWFfbG9nKTsNCj4g PiArCWZyZWUobHV0KTsNCj4gPiArCWNsZWFyX3NlZ21lbnRfZGF0YShzZWdtZW50X2luZm8pOw0K PiA+ICsJZHJtTW9kZUZyZWVQcm9wZXJ0eShnYW1tYV9tb2RlKTsNCj4gPiArfQ0KPiA+ICsNCj4g PiAgdm9pZCBzZXRfcGxhbmVfZ2FtbWEoaWd0X3BsYW5lX3QgKnBsYW5lLA0KPiA+ICAJCWNoYXIg Km1vZGUsDQo+ID4gIAkJc3RydWN0IGRybV9jb2xvcl9sdXRfZXh0ICpsdXQsDQo+ID4gZGlmZiAt LWdpdCBhL3Rlc3RzL2ttc19jb2xvcl9oZWxwZXIuaCBiL3Rlc3RzL2ttc19jb2xvcl9oZWxwZXIu aA0KPiA+IGluZGV4IDVhMzVkY2FhYzEuLmM4NjM4NzRmMGMgMTAwNjQ0DQo+ID4gLS0tIGEvdGVz dHMva21zX2NvbG9yX2hlbHBlci5oDQo+ID4gKysrIGIvdGVzdHMva21zX2NvbG9yX2hlbHBlci5o DQo+ID4gQEAgLTcwLDYgKzcwLDExIEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gPiAgCXVpbnQzMl90 IGVudHJpZXNfY291bnQ7DQo+ID4gIH0gc2VnbWVudF9kYXRhX3Q7DQo+ID4NCj4gPiArZW51bSBn YW1tYV90eXBlIHsNCj4gPiArCUxJTkVBUl9HQU1NQSwNCj4gPiArCU1BWF9HQU1NQQ0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiAgI2RlZmluZSBNSU4oYSwgYikgKChhKSA8IChiKSA/IChhKSA6IChiKSkN Cj4gPg0KPiA+ICB2b2lkIHBhaW50X2dyYWRpZW50X3JlY3RhbmdsZXMoZGF0YV90ICpkYXRhLA0K PiA+IEBAIC04OSw2ICs5NCwxMCBAQCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29lZmZzX3RvX2x1 dChkYXRhX3QgKmRhdGEsDQo+ID4gIAkJCQkgICAgY29uc3QgZ2FtbWFfbHV0X3QgKmdhbW1hLA0K PiA+ICAJCQkJICAgIHVpbnQzMl90IGNvbG9yX2RlcHRoLA0KPiA+ICAJCQkJICAgIGludCBvZmYp Ow0KPiA+ICtzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29lZmZzX3RvX2xvZ2FyaXRobWljX2x1dChk YXRhX3QgKmRhdGEsDQo+ID4gKwkJCQkJCWNvbnN0IGdhbW1hX2x1dF90ICpnYW1tYSwNCj4gPiAr CQkJCQkJdWludDMyX3QgY29sb3JfZGVwdGgsDQo+ID4gKwkJCQkJCWludCBvZmYpOw0KPiA+ICB2 b2lkIHNldF9kZWdhbW1hKGRhdGFfdCAqZGF0YSwNCj4gPiAgCQkgaWd0X3BpcGVfdCAqcGlwZSwN Cj4gPiAgCQkgY29uc3QgZ2FtbWFfbHV0X3QgKmdhbW1hKTsNCj4gPiBAQCAtOTgsMTIgKzEwNywx OSBAQCB2b2lkIHNldF9nYW1tYShkYXRhX3QgKmRhdGEsDQo+ID4gIHZvaWQgc2V0X2N0bShpZ3Rf cGlwZV90ICpwaXBlLCBjb25zdCBkb3VibGUgKmNvZWZmaWNpZW50cyk7DQo+ID4gIHZvaWQgZGlz YWJsZV9wcm9wKGlndF9waXBlX3QgKnBpcGUsIGVudW0gaWd0X2F0b21pY19jcnRjX3Byb3BlcnRp ZXMgcHJvcCk7DQo+ID4NCj4gPiArZHJtTW9kZVByb3BlcnR5UHRyIGdldF9waXBlX2dhbW1hX2Rl Z2FtbWFfbW9kZShpZ3RfcGlwZV90ICpwaXBlLA0KPiA+ICsJCQkJCSAgICAgICBlbnVtIGlndF9h dG9taWNfY3J0Y19wcm9wZXJ0aWVzDQo+ID4gKwkJCQkJICAgICAgIHByb3ApOw0KPiA+ICBkcm1N b2RlUHJvcGVydHlQdHIgZ2V0X3BsYW5lX2dhbW1hX2RlZ2FtbWFfbW9kZShpZ3RfcGxhbmVfdCAq cGxhbmUsDQo+ID4gIAllbnVtIGlndF9hdG9taWNfcGxhbmVfcHJvcGVydGllcyBwcm9wKTsNCj4g PiAgdm9pZCBjbGVhcl9zZWdtZW50X2RhdGEoc2VnbWVudF9kYXRhX3QgKmluZm8pOw0KPiA+ICtn YW1tYV9sdXRfdCAqcGlwZV9jcmVhdGVfbGluZWFyX2x1dChzZWdtZW50X2RhdGFfdCAqaW5mbyk7 DQo+ID4gIHN0cnVjdCBkcm1fY29sb3JfbHV0X2V4dCAqY3JlYXRlX2xpbmVhcl9sdXQoc2VnbWVu dF9kYXRhX3QgKmluZm8pOw0KPiA+ICBzdHJ1Y3QgZHJtX2NvbG9yX2x1dF9leHQgKmNyZWF0ZV9t YXhfbHV0KHNlZ21lbnRfZGF0YV90ICppbmZvKTsNCj4gPiAgc2VnbWVudF9kYXRhX3QgKmdldF9z ZWdtZW50X2RhdGEoZGF0YV90ICpkYXRhLCB1aW50NjRfdCBibG9iX2lkLCBjaGFyDQo+ICptb2Rl KTsNCj4gPiArdm9pZCBzZXRfcGlwZV9nYW1tYShpZ3RfcGlwZV90ICpwaXBlLCB1aW50NjRfdCB2 YWx1ZSwNCj4gPiArCQkgICAgc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCwgdWludDMyX3Qgc2l6 ZSk7DQo+ID4gK3ZvaWQgc2V0X2FkdmFuY2VfZ2FtbWEoZGF0YV90ICpkYXRhLCBpZ3RfcGlwZV90 ICpwaXBlLCBlbnVtIGdhbW1hX3R5cGUNCj4gdHlwZSk7DQo+ID4gIHZvaWQgc2V0X3BsYW5lX2dh bW1hKGlndF9wbGFuZV90ICpwbGFuZSwNCj4gPiAgCWNoYXIgKm1vZGUsIHN0cnVjdCBkcm1fY29s b3JfbHV0X2V4dCAqbHV0LCB1aW50MzJfdCBzaXplKTsNCj4gPiAgdm9pZCBzZXRfcGxhbmVfZGVn YW1tYShpZ3RfcGxhbmVfdCAqcGxhbmUsDQo+ID4NCg0K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: "Modem, Bhanuprakash" Date: Mon, 3 Jan 2022 04:08:54 +0000 Message-ID: References: <20211115094759.520955-1-bhanuprakash.modem@intel.com> <20211115094759.520955-13-bhanuprakash.modem@intel.com> <1f1abd7f-90c1-3f36-04ba-4ee9eed7eab7@amd.com> In-Reply-To: <1f1abd7f-90c1-3f36-04ba-4ee9eed7eab7@amd.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [igt-dev] [i-g-t 12/14] kms_color_helper: Add helper functions to support logarithmic gamma mode List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Harry Wentland , "igt-dev@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" Cc: "ppaalanen@gmail.com" , "Kumar, Mukunda Pramodh" List-ID: PiBGcm9tOiBIYXJyeSBXZW50bGFuZCA8aGFycnkud2VudGxhbmRAYW1kLmNvbT4NCj4gU2VudDog RnJpZGF5LCBOb3ZlbWJlciAyNiwgMjAyMSAxMDoyNSBQTQ0KPiBUbzogTW9kZW0sIEJoYW51cHJh a2FzaCA8YmhhbnVwcmFrYXNoLm1vZGVtQGludGVsLmNvbT47IGlndC0NCj4gZGV2QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZzsgZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPiBDYzogS3Vt YXIsIE11a3VuZGEgUHJhbW9kaCA8bXVrdW5kYS5wcmFtb2RoLmt1bWFyQGludGVsLmNvbT47IFZp bGxlIFN5cmrDpGzDpA0KPiA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+OyBKdWhhLVBl a2thIEhlaWtraWxhDQo+IDxqdWhhcGVra2EuaGVpa2tpbGFAZ21haWwuY29tPjsgU2hhbmthciwg VW1hIDx1bWEuc2hhbmthckBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbaS1nLXQgMTIvMTRd IGttc19jb2xvcl9oZWxwZXI6IEFkZCBoZWxwZXIgZnVuY3Rpb25zIHRvIHN1cHBvcnQNCj4gbG9n YXJpdGhtaWMgZ2FtbWEgbW9kZQ0KPiANCj4gT24gMjAyMS0xMS0xNSAwNDo0NywgQmhhbnVwcmFr YXNoIE1vZGVtIHdyb3RlOg0KPiA+IEZyb206IE11a3VuZGEgUHJhbW9kaCBLdW1hciA8bXVrdW5k YS5wcmFtb2RoLmt1bWFyQGludGVsLmNvbT4NCj4gPg0KPiA+IEFkZCBoZWxwZXIgZnVuY3Rpb25z IHRvIHN1cHBvcnQgbG9nYXJpdGhtaWMgZ2FtbWEgbW9kZQ0KPiA+DQo+ID4gQ2M6IEhhcnJ5IFdl bnRsYW5kIDxoYXJyeS53ZW50bGFuZEBhbWQuY29tPg0KPiA+IENjOiBWaWxsZSBTeXJqw6Rsw6Qg PHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPg0KPiA+IENjOiBKdWhhLVBla2thIEhlaWtr aWxhIDxqdWhhcGVra2EuaGVpa2tpbGFAZ21haWwuY29tPg0KPiA+IENjOiBVbWEgU2hhbmthciA8 dW1hLnNoYW5rYXJAaW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IE11a3VuZGEgUHJhbW9k aCBLdW1hciA8bXVrdW5kYS5wcmFtb2RoLmt1bWFyQGludGVsLmNvbT4NCj4gPiBTaWduZWQtb2Zm LWJ5OiBCaGFudXByYWthc2ggTW9kZW0gPGJoYW51cHJha2FzaC5tb2RlbUBpbnRlbC5jb20+DQo+ ID4gLS0tDQo+ID4gIHRlc3RzL2ttc19jb2xvcl9oZWxwZXIuYyB8IDEyNyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiAgdGVzdHMva21zX2NvbG9yX2hlbHBlci5o IHwgIDE2ICsrKysrDQo+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMTQzIGluc2VydGlvbnMoKykNCj4g Pg0KPiA+IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNfY29sb3JfaGVscGVyLmMgYi90ZXN0cy9rbXNf Y29sb3JfaGVscGVyLmMNCj4gPiBpbmRleCBjNjViN2EwZjUwLi43ZWE4MjgyZGYzIDEwMDY0NA0K PiA+IC0tLSBhL3Rlc3RzL2ttc19jb2xvcl9oZWxwZXIuYw0KPiA+ICsrKyBiL3Rlc3RzL2ttc19j b2xvcl9oZWxwZXIuYw0KPiA+IEBAIC0xOTAsNiArMTkwLDMzIEBAIHN0cnVjdCBkcm1fY29sb3Jf bHV0ICpjb2VmZnNfdG9fbHV0KGRhdGFfdCAqZGF0YSwNCj4gPiAgCXJldHVybiBsdXQ7DQo+ID4g IH0NCj4gPg0KPiA+ICtzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29lZmZzX3RvX2xvZ2FyaXRobWlj X2x1dChkYXRhX3QgKmRhdGEsDQo+ID4gKwkJCQkJCWNvbnN0IGdhbW1hX2x1dF90ICpnYW1tYSwN Cj4gPiArCQkJCQkJdWludDMyX3QgY29sb3JfZGVwdGgsDQo+ID4gKwkJCQkJCWludCBvZmYpDQo+ IA0KPiBIb3cgZG9lcyB0aGlzIGNyZWF0ZSBhIGxvZ2FyaXRobWljIExVVD8gSXQgc2VlbXMgdG8g ZG8gdGhlIHNhbWUNCj4gYXMgY29lZmZzX3RvX2x1dCAod2hpY2ggaXMgYWxzbyBmdWxsIG9mIGlu dGVsbGlzbXMpIGV4Y2VwdCB0aGF0DQo+IGl0IGFsc28gc2NhbGVzIHRoZSB2YWx1ZXMgYnkgbWF4 X2h3X3ZhbHVlIC8gbWF4X3NlZ21lbnRfdmFsdWUgZm9yDQo+IHJlYXNvbnMgdGhhdCBhcmUgbm90 IG9idmlvdXMgdG8gbWUuDQoNClllcywgdGhpcyBpcyBqdXN0IGFuIGFub3RoZXIgdmVyc2lvbiBv ZiBjb2VmZnNfdG9fbHV0LCBJJ2xsIGZsb2F0DQphIG5ldyByZXYgd2l0aCB0aGlzIGNoYW5nZS4N Cg0KPiANCj4gPiArew0KPiA+ICsJc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dDsNCj4gPiArCWlu dCBpLCBsdXRfc2l6ZSA9IGdhbW1hLT5zaXplOw0KPiA+ICsJLyogVGhpcyBpcyB0aGUgbWF4aW11 bSB2YWx1ZSBkdWUgdG8gMTYgYml0IHByZWNpc2lvbiBpbiBoYXJkd2FyZS4gKi8NCj4gPiArCXVp bnQzMl90IG1heF9od192YWx1ZSA9ICgxIDw8IDE2KSAtIDE7DQo+ID4gKwl1bnNpZ25lZCBpbnQg bWF4X3NlZ21lbnRfdmFsdWUgPSAxIDw8IDI0Ow0KPiA+ICsNCj4gDQo+IA0KPiBUaGlzIGxvb2tz IGxpa2UgaXQgaXMgc3BlY2lmaWMgdG8gSW50ZWwgSFcuIEludGVsLXNwZWNpZmljIHRoaW5ncyBz aG91bGQNCj4gbm90IGxpdmUgaW4ga21zXyB0ZXN0cy4NCj4gDQo+IFNob3VsZG4ndCB0aGVzZSBi ZSBlbmNvZGVkIGluIHRoZSBkcm1fY29sb3JfbHV0X3JhbmdlIGRlZmluaXRpb25zPw0KPiANCj4g VG8gYmUgaG9uZXN0IEkgYW0gbm90IGNsZWFyIHdoeSBtYXhfaHdfdmFsdWUgYW5kIG1heF9zZWdt ZW50X3ZhbHVlDQo+IGRpZmZlciBoZXJlLg0KDQpZZWFoLCB0aGUgY29tbWVudCBpcyBtaXNsZWFk aW5nIGFuZCB2YXJpYWJsZSBuYW1lcyBhbHNvIGJpdCBjb25mdXNpbmcuDQoNCkFzIHVhcGkgc3Vw cG9ydHMgVTAuMTYgcHJlY2lzaW9uIHRoZSBtYXggc3VwcG9ydGVkIHZhbHVlIHdvdWxkIGJlICgx IDw8IDE2KSAtIDENCmFuZCBJbnRlbCBoL3cgc3VwcG9ydHMgbWF4IHZhbHVlIG9mICgxIDw8IDI0 KSBzbyB3ZSBuZWVkIHRvIHNjYWxlIHRoZSB2YWx1ZXMNCmFjY29yZGluZ2x5Lg0KDQpTbywgbmVl ZCB0byBkcm9wIGgvdyBzcGVjaWZpYyBoYXJkY29kZWQgc3R1ZmYgYW5kIHJlYWQgZnJvbSB1YXBp ICYgcmVuYW1lIHRoZQ0KdmFyaWFibGVzIGFzIGJlbG93Og0KDQptYXhfdWFwaV92YWx1ZSA9ICgx IDw8IDE2KSAtIDE7DQptYXhfaHdfdmFsdWUgPSAvKiBSZWFkIGZyb20gdGhlIHVhcGkuICovDQoN Cj4gDQo+IEhhcnJ5DQo+IA0KPiA+ICsJbHV0ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZHJtX2Nv bG9yX2x1dCkgKiBsdXRfc2l6ZSk7DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IGx1dF9z aXplOyBpKyspIHsNCj4gPiArCQlkb3VibGUgc2NhbGluZ19mYWN0b3IgPSAoZG91YmxlKW1heF9o d192YWx1ZSAvDQo+IChkb3VibGUpbWF4X3NlZ21lbnRfdmFsdWU7DQo+ID4gKwkJdWludDMyX3Qg ciA9IE1JTigoZ2FtbWEtPmNvZWZmc1tpXS5yICogc2NhbGluZ19mYWN0b3IpLA0KPiBtYXhfaHdf dmFsdWUpOw0KPiA+ICsJCXVpbnQzMl90IGcgPSBNSU4oKGdhbW1hLT5jb2VmZnNbaV0uZyAqIHNj YWxpbmdfZmFjdG9yKSwNCj4gbWF4X2h3X3ZhbHVlKTsNCj4gPiArCQl1aW50MzJfdCBiID0gTUlO KChnYW1tYS0+Y29lZmZzW2ldLmIgKiBzY2FsaW5nX2ZhY3RvciksDQo+IG1heF9od192YWx1ZSk7 DQo+ID4gKw0KPiA+ICsJCWx1dFtpXS5yZWQgPSByOw0KPiA+ICsJCWx1dFtpXS5ncmVlbiA9IGc7 DQo+ID4gKwkJbHV0W2ldLmJsdWUgPSBiOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiBs dXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gIHZvaWQgc2V0X2RlZ2FtbWEoZGF0YV90ICpkYXRhLA0K PiA+ICAJCSBpZ3RfcGlwZV90ICpwaXBlLA0KPiA+ICAJCSBjb25zdCBnYW1tYV9sdXRfdCAqZ2Ft bWEpDQo+ID4gQEAgLTIwMyw2ICsyMzAsMTUgQEAgdm9pZCBzZXRfZGVnYW1tYShkYXRhX3QgKmRh dGEsDQo+ID4gIAlmcmVlKGx1dCk7DQo+ID4gIH0NCj4gPg0KPiA+ICt2b2lkIHNldF9waXBlX2dh bW1hKGlndF9waXBlX3QgKnBpcGUsDQo+ID4gKwkJICAgIHVpbnQ2NF90IHZhbHVlLA0KPiA+ICsJ CSAgICBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0LA0KPiA+ICsJCSAgICB1aW50MzJfdCBzaXpl KQ0KPiA+ICt7DQo+ID4gKwlpZ3RfcGlwZV9vYmpfc2V0X3Byb3BfdmFsdWUocGlwZSwgSUdUX0NS VENfR0FNTUFfTU9ERSwgdmFsdWUpOw0KPiA+ICsJaWd0X3BpcGVfb2JqX3JlcGxhY2VfcHJvcF9i bG9iKHBpcGUsIElHVF9DUlRDX0dBTU1BX0xVVCwgbHV0LCBzaXplKTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiAgdm9pZCBzZXRfZ2FtbWEoZGF0YV90ICpkYXRhLA0KPiA+ICAJICAgICAgIGlndF9waXBl X3QgKnBpcGUsIGNvbnN0IGdhbW1hX2x1dF90ICpnYW1tYSkNCj4gPiAgew0KPiA+IEBAIC0yNDEs NiArMjc3LDUxIEBAIHZvaWQgZGlzYWJsZV9wcm9wKGlndF9waXBlX3QgKnBpcGUsIGVudW0NCj4g aWd0X2F0b21pY19jcnRjX3Byb3BlcnRpZXMgcHJvcCkNCj4gPiAgCQlpZ3RfcGlwZV9vYmpfcmVw bGFjZV9wcm9wX2Jsb2IocGlwZSwgcHJvcCwgTlVMTCwgMCk7DQo+ID4gIH0NCj4gPg0KPiA+ICtk cm1Nb2RlUHJvcGVydHlQdHIgZ2V0X3BpcGVfZ2FtbWFfZGVnYW1tYV9tb2RlKGlndF9waXBlX3Qg KnBpcGUsDQo+ID4gKwkJCQkJICAgICAgIGVudW0gaWd0X2F0b21pY19jcnRjX3Byb3BlcnRpZXMg cHJvcCkNCj4gPiArew0KPiA+ICsJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9IHBpcGUtPmRpc3Bs YXk7DQo+ID4gKwl1aW50MzJfdCBwcm9wX2lkID0gcGlwZS0+cHJvcHNbcHJvcF07DQo+ID4gKwlk cm1Nb2RlUHJvcGVydHlQdHIgZHJtUHJvcDsNCj4gPiArDQo+ID4gKwlpZ3RfYXNzZXJ0KHByb3Bf aWQpOw0KPiA+ICsNCj4gPiArCWRybVByb3AgPSBkcm1Nb2RlR2V0UHJvcGVydHkoZGlzcGxheS0+ ZHJtX2ZkLCBwcm9wX2lkKTsNCj4gPiArDQo+ID4gKwlpZ3RfYXNzZXJ0KGRybVByb3ApOw0KPiA+ ICsJaWd0X2Fzc2VydChkcm1Qcm9wLT5jb3VudF9lbnVtcyk7DQo+ID4gKw0KPiA+ICsJcmV0dXJu IGRybVByb3A7DQo+ID4gK30NCj4gPiArDQo+ID4gK2dhbW1hX2x1dF90ICpwaXBlX2NyZWF0ZV9s aW5lYXJfbHV0KHNlZ21lbnRfZGF0YV90ICppbmZvKQ0KPiA+ICt7DQo+ID4gKwl1aW50MzJfdCBz ZWdtZW50LCBlbnRyeSwgaW5kZXggPSAwOw0KPiA+ICsJZG91YmxlIHZhbDsNCj4gPiArCWludCBp ID0gMDsNCj4gPiArCWdhbW1hX2x1dF90ICpnYW1tYSA9IGFsbG9jX2x1dChpbmZvLT5lbnRyaWVz X2NvdW50KTsNCj4gPiArDQo+ID4gKwlpZ3RfYXNzZXJ0KGdhbW1hKTsNCj4gPiArDQo+ID4gKwln YW1tYS0+c2l6ZSA9IGluZm8tPmVudHJpZXNfY291bnQ7DQo+ID4gKwlmb3IgKHNlZ21lbnQgPSAw OyBzZWdtZW50IDwgaW5mby0+c2VnbWVudF9jb3VudDsgc2VnbWVudCsrKSB7DQo+ID4gKwkJdWlu dDMyX3QgZW50cnlfY291bnQgPSBpbmZvLT5zZWdtZW50X2RhdGFbc2VnbWVudF0uY291bnQ7DQo+ ID4gKwkJdWludDMyX3Qgc3RhcnQgPSAoc2VnbWVudCA9PSAwKSA/IDAgOiAoMSA8PCAoc2VnbWVu dCAtIDEpKTsNCj4gPiArCQl1aW50MzJfdCBlbmQgPSAxIDw8IHNlZ21lbnQ7DQo+ID4gKw0KPiA+ ICsJCWZvciAoZW50cnkgPSAwOyBlbnRyeSA8IGVudHJ5X2NvdW50OyBlbnRyeSsrKSB7DQo+ID4g KwkJCXZhbCA9IChpbmRleCA9PSAwKSA/IC8qIEZpcnN0IGVudHJ5IGlzIFplcm8uICovDQo+ID4g KwkJCQkwIDogc3RhcnQgKyBlbnRyeSAqDQo+ID4gKwkJCQkoKGVuZCAtIHN0YXJ0KSAqIDEuMCAv IGVudHJ5X2NvdW50KTsNCj4gPiArDQo+ID4gKwkJCXNldF9yZ2IoJmdhbW1hLT5jb2VmZnNbaSsr XSwgdmFsKTsNCj4gPiArCQkJaW5kZXgrKzsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gKw0KPiA+ ICsJcmV0dXJuIGdhbW1hOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICBkcm1Nb2RlUHJvcGVydHlQdHIg Z2V0X3BsYW5lX2dhbW1hX2RlZ2FtbWFfbW9kZShpZ3RfcGxhbmVfdCAqcGxhbmUsDQo+ID4gIAkJ CQllbnVtIGlndF9hdG9taWNfcGxhbmVfcHJvcGVydGllcyBwcm9wKQ0KPiA+ICB7DQo+ID4gQEAg LTMzMSw2ICs0MTIsNyBAQCBzZWdtZW50X2RhdGFfdCAqZ2V0X3NlZ21lbnRfZGF0YShkYXRhX3Qg KmRhdGEsDQo+ID4gIAlpbmZvLT5zZWdtZW50X2RhdGEgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBk cm1fY29sb3JfbHV0X3JhbmdlKSAqIGluZm8tDQo+ID5zZWdtZW50X2NvdW50KTsNCj4gPiAgCWln dF9hc3NlcnQoaW5mby0+c2VnbWVudF9kYXRhKTsNCj4gPg0KPiA+ICsJaW5mby0+ZW50cmllc19j b3VudCA9IDA7DQo+ID4gIAlmb3IgKGkgPSAwOyBpIDwgaW5mby0+c2VnbWVudF9jb3VudDsgaSsr KSB7DQo+ID4gIAkJaW5mby0+ZW50cmllc19jb3VudCArPSBsdXRfcmFuZ2VbaV0uY291bnQ7DQo+ ID4gIAkJaW5mby0+c2VnbWVudF9kYXRhW2ldID0gbHV0X3JhbmdlW2ldOw0KPiA+IEBAIC0zNDEs NiArNDIzLDUxIEBAIHNlZ21lbnRfZGF0YV90ICpnZXRfc2VnbWVudF9kYXRhKGRhdGFfdCAqZGF0 YSwNCj4gPiAgCXJldHVybiBpbmZvOw0KPiA+ICB9DQo+ID4NCj4gPiArdm9pZCBzZXRfYWR2YW5j ZV9nYW1tYShkYXRhX3QgKmRhdGEsIGlndF9waXBlX3QgKnBpcGUsIGVudW0gZ2FtbWFfdHlwZQ0K PiB0eXBlKQ0KPiA+ICt7DQo+ID4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRp c3BsYXk7DQo+ID4gKwlnYW1tYV9sdXRfdCAqZ2FtbWFfbG9nOw0KPiA+ICsJZHJtTW9kZVByb3Bl cnR5UHRyIGdhbW1hX21vZGUgPSBOVUxMOw0KPiA+ICsJc2VnbWVudF9kYXRhX3QgKnNlZ21lbnRf aW5mbyA9IE5VTEw7DQo+ID4gKwlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0gTlVMTDsNCj4g PiArCWludCBsdXRfc2l6ZSA9IDA7DQo+ID4gKw0KPiA+ICsJZHJtU2V0Q2xpZW50Q2FwKGRhdGEt PmRybV9mZCwgRFJNX0NMSUVOVF9DQVBfQURWQU5DRV9HQU1NQV9NT0RFUywgMSk7DQo+ID4gKwln YW1tYV9tb2RlID0gZ2V0X3BpcGVfZ2FtbWFfZGVnYW1tYV9tb2RlKHBpcGUsIElHVF9DUlRDX0dB TU1BX01PREUpOw0KPiA+ICsNCj4gPiArCWZvciAoaW50IGkgPSAwOyBpIDwgZ2FtbWFfbW9kZS0+ Y291bnRfZW51bXM7IGkrKykgew0KPiA+ICsJCWlmICghc3RyY21wKGdhbW1hX21vZGUtPmVudW1z W2ldLm5hbWUsICJsb2dhcml0aG1pYyBnYW1tYSIpKSB7DQo+ID4gKwkJCXNlZ21lbnRfaW5mbyA9 IGdldF9zZWdtZW50X2RhdGEoZGF0YSwNCj4gPiArCQkJCQkJCWdhbW1hX21vZGUtPmVudW1zW2ld LnZhbHVlLA0KPiA+ICsJCQkJCQkJZ2FtbWFfbW9kZS0+ZW51bXNbaV0ubmFtZSk7DQo+ID4gKwkJ CWx1dF9zaXplID0gc2l6ZW9mKHN0cnVjdCBkcm1fY29sb3JfbHV0KSAqDQo+ID4gKwkJCQkJICBz ZWdtZW50X2luZm8tPmVudHJpZXNfY291bnQ7DQo+ID4gKwkJCWlmICh0eXBlID09IExJTkVBUl9H QU1NQSkgew0KPiA+ICsJCQkJZ2FtbWFfbG9nID0gcGlwZV9jcmVhdGVfbGluZWFyX2x1dChzZWdt ZW50X2luZm8pOw0KPiA+ICsJCQkJbHV0ID0gY29lZmZzX3RvX2xvZ2FyaXRobWljX2x1dChkYXRh LA0KPiA+ICsJCQkJCQkJCWdhbW1hX2xvZywNCj4gPiArCQkJCQkJCQlkYXRhLT5jb2xvcl9kZXB0 aCwNCj4gPiArCQkJCQkJCQkwKTsNCj4gPiArCQkJfSBlbHNlIGlmICh0eXBlID09IE1BWF9HQU1N QSkgew0KPiA+ICsJCQkJZ2FtbWFfbG9nID0gZ2VuZXJhdGVfdGFibGVfbWF4KHNlZ21lbnRfaW5m by0NCj4gPmVudHJpZXNfY291bnQpOw0KPiA+ICsJCQkJZ2FtbWFfbG9nLT5zaXplID0gc2VnbWVu dF9pbmZvLT5lbnRyaWVzX2NvdW50Ow0KPiA+ICsJCQkJbHV0ID0gY29lZmZzX3RvX2x1dChkYXRh LCBnYW1tYV9sb2csDQo+ID4gKwkJCQkJCSAgICBkYXRhLT5jb2xvcl9kZXB0aCwgMCk7DQo+ID4g KwkJCX0NCj4gPiArCQkJc2V0X3BpcGVfZ2FtbWEocGlwZSwgZ2FtbWFfbW9kZS0+ZW51bXNbaV0u dmFsdWUsDQo+ID4gKwkJCQkgICAgICAgbHV0LCBsdXRfc2l6ZSk7DQo+ID4gKwkJCWlndF9kaXNw bGF5X2NvbW1pdDIoZGlzcGxheSwgZGlzcGxheS0+aXNfYXRvbWljDQo+ID4gKwkJCQkJICAgID8g Q09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1kpOw0KPiA+ICsJCQlicmVhazsNCj4gPiArCQl9 DQo+ID4gKwl9DQo+ID4gKwlkcm1TZXRDbGllbnRDYXAoZGF0YS0+ZHJtX2ZkLCBEUk1fQ0xJRU5U X0NBUF9BRFZBTkNFX0dBTU1BX01PREVTLCAwKTsNCj4gPiArCWZyZWUoZ2FtbWFfbG9nKTsNCj4g PiArCWZyZWUobHV0KTsNCj4gPiArCWNsZWFyX3NlZ21lbnRfZGF0YShzZWdtZW50X2luZm8pOw0K PiA+ICsJZHJtTW9kZUZyZWVQcm9wZXJ0eShnYW1tYV9tb2RlKTsNCj4gPiArfQ0KPiA+ICsNCj4g PiAgdm9pZCBzZXRfcGxhbmVfZ2FtbWEoaWd0X3BsYW5lX3QgKnBsYW5lLA0KPiA+ICAJCWNoYXIg Km1vZGUsDQo+ID4gIAkJc3RydWN0IGRybV9jb2xvcl9sdXRfZXh0ICpsdXQsDQo+ID4gZGlmZiAt LWdpdCBhL3Rlc3RzL2ttc19jb2xvcl9oZWxwZXIuaCBiL3Rlc3RzL2ttc19jb2xvcl9oZWxwZXIu aA0KPiA+IGluZGV4IDVhMzVkY2FhYzEuLmM4NjM4NzRmMGMgMTAwNjQ0DQo+ID4gLS0tIGEvdGVz dHMva21zX2NvbG9yX2hlbHBlci5oDQo+ID4gKysrIGIvdGVzdHMva21zX2NvbG9yX2hlbHBlci5o DQo+ID4gQEAgLTcwLDYgKzcwLDExIEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gPiAgCXVpbnQzMl90 IGVudHJpZXNfY291bnQ7DQo+ID4gIH0gc2VnbWVudF9kYXRhX3Q7DQo+ID4NCj4gPiArZW51bSBn YW1tYV90eXBlIHsNCj4gPiArCUxJTkVBUl9HQU1NQSwNCj4gPiArCU1BWF9HQU1NQQ0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiAgI2RlZmluZSBNSU4oYSwgYikgKChhKSA8IChiKSA/IChhKSA6IChiKSkN Cj4gPg0KPiA+ICB2b2lkIHBhaW50X2dyYWRpZW50X3JlY3RhbmdsZXMoZGF0YV90ICpkYXRhLA0K PiA+IEBAIC04OSw2ICs5NCwxMCBAQCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29lZmZzX3RvX2x1 dChkYXRhX3QgKmRhdGEsDQo+ID4gIAkJCQkgICAgY29uc3QgZ2FtbWFfbHV0X3QgKmdhbW1hLA0K PiA+ICAJCQkJICAgIHVpbnQzMl90IGNvbG9yX2RlcHRoLA0KPiA+ICAJCQkJICAgIGludCBvZmYp Ow0KPiA+ICtzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29lZmZzX3RvX2xvZ2FyaXRobWljX2x1dChk YXRhX3QgKmRhdGEsDQo+ID4gKwkJCQkJCWNvbnN0IGdhbW1hX2x1dF90ICpnYW1tYSwNCj4gPiAr CQkJCQkJdWludDMyX3QgY29sb3JfZGVwdGgsDQo+ID4gKwkJCQkJCWludCBvZmYpOw0KPiA+ICB2 b2lkIHNldF9kZWdhbW1hKGRhdGFfdCAqZGF0YSwNCj4gPiAgCQkgaWd0X3BpcGVfdCAqcGlwZSwN Cj4gPiAgCQkgY29uc3QgZ2FtbWFfbHV0X3QgKmdhbW1hKTsNCj4gPiBAQCAtOTgsMTIgKzEwNywx OSBAQCB2b2lkIHNldF9nYW1tYShkYXRhX3QgKmRhdGEsDQo+ID4gIHZvaWQgc2V0X2N0bShpZ3Rf cGlwZV90ICpwaXBlLCBjb25zdCBkb3VibGUgKmNvZWZmaWNpZW50cyk7DQo+ID4gIHZvaWQgZGlz YWJsZV9wcm9wKGlndF9waXBlX3QgKnBpcGUsIGVudW0gaWd0X2F0b21pY19jcnRjX3Byb3BlcnRp ZXMgcHJvcCk7DQo+ID4NCj4gPiArZHJtTW9kZVByb3BlcnR5UHRyIGdldF9waXBlX2dhbW1hX2Rl Z2FtbWFfbW9kZShpZ3RfcGlwZV90ICpwaXBlLA0KPiA+ICsJCQkJCSAgICAgICBlbnVtIGlndF9h dG9taWNfY3J0Y19wcm9wZXJ0aWVzDQo+ID4gKwkJCQkJICAgICAgIHByb3ApOw0KPiA+ICBkcm1N b2RlUHJvcGVydHlQdHIgZ2V0X3BsYW5lX2dhbW1hX2RlZ2FtbWFfbW9kZShpZ3RfcGxhbmVfdCAq cGxhbmUsDQo+ID4gIAllbnVtIGlndF9hdG9taWNfcGxhbmVfcHJvcGVydGllcyBwcm9wKTsNCj4g PiAgdm9pZCBjbGVhcl9zZWdtZW50X2RhdGEoc2VnbWVudF9kYXRhX3QgKmluZm8pOw0KPiA+ICtn YW1tYV9sdXRfdCAqcGlwZV9jcmVhdGVfbGluZWFyX2x1dChzZWdtZW50X2RhdGFfdCAqaW5mbyk7 DQo+ID4gIHN0cnVjdCBkcm1fY29sb3JfbHV0X2V4dCAqY3JlYXRlX2xpbmVhcl9sdXQoc2VnbWVu dF9kYXRhX3QgKmluZm8pOw0KPiA+ICBzdHJ1Y3QgZHJtX2NvbG9yX2x1dF9leHQgKmNyZWF0ZV9t YXhfbHV0KHNlZ21lbnRfZGF0YV90ICppbmZvKTsNCj4gPiAgc2VnbWVudF9kYXRhX3QgKmdldF9z ZWdtZW50X2RhdGEoZGF0YV90ICpkYXRhLCB1aW50NjRfdCBibG9iX2lkLCBjaGFyDQo+ICptb2Rl KTsNCj4gPiArdm9pZCBzZXRfcGlwZV9nYW1tYShpZ3RfcGlwZV90ICpwaXBlLCB1aW50NjRfdCB2 YWx1ZSwNCj4gPiArCQkgICAgc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCwgdWludDMyX3Qgc2l6 ZSk7DQo+ID4gK3ZvaWQgc2V0X2FkdmFuY2VfZ2FtbWEoZGF0YV90ICpkYXRhLCBpZ3RfcGlwZV90 ICpwaXBlLCBlbnVtIGdhbW1hX3R5cGUNCj4gdHlwZSk7DQo+ID4gIHZvaWQgc2V0X3BsYW5lX2dh bW1hKGlndF9wbGFuZV90ICpwbGFuZSwNCj4gPiAgCWNoYXIgKm1vZGUsIHN0cnVjdCBkcm1fY29s b3JfbHV0X2V4dCAqbHV0LCB1aW50MzJfdCBzaXplKTsNCj4gPiAgdm9pZCBzZXRfcGxhbmVfZGVn YW1tYShpZ3RfcGxhbmVfdCAqcGxhbmUsDQo+ID4NCg0K