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 31F43CD128A for ; Thu, 11 Apr 2024 13:17:24 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 985E589CA4; Thu, 11 Apr 2024 13:17:21 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="Cz2fw23O"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0B8A410F0C5 for ; Thu, 11 Apr 2024 13:17:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1712841439; x=1744377439; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=9mDIEPXtoBUWYrR2Vvb7xphNV3YR4/8kZ1y4jawV7Uc=; b=Cz2fw23O26NEaUt2nzNfk9MryTOEo9jqzUWOicDhwjwbVurFwQzWuATS 33DTe+Q/4rGEvwRbYGv8of2+1RbCGXBzYhbJ28UaqBKH90p0mWtuBa7EB b87R98GYMrAaQz4Z3Kuwx/ZDyn1Ige1+qrXL8qEqvAOHaV8QYnafQmb5i pcT2+4Zjww/qLNcwjYFgiGr9TXZQp40+B8eQXy8LXg/xf4uwsPtFTlZGY yLUFevejs6gvQSK6ZImDocMh+9UYq89B1/jx4+KeW0Du6WZIMd3xUeR3Y fCY1u+LQUOH1jb/DrxmqWt7YxOeeNg2H6TfpTrIkhOvhQXz55JTQpIemA w==; X-CSE-ConnectionGUID: XjEWqLUhT6aWaHZutJGCZA== X-CSE-MsgGUID: SYhJhq5yRxeMNWvwa+ggjQ== X-IronPort-AV: E=McAfee;i="6600,9927,11041"; a="8809614" X-IronPort-AV: E=Sophos;i="6.07,193,1708416000"; d="scan'208";a="8809614" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Apr 2024 06:17:07 -0700 X-CSE-ConnectionGUID: bQfenAtWQdeTniygWxowKA== X-CSE-MsgGUID: 0hEWzvpAQGCiBwc7b3Cnvw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,193,1708416000"; d="scan'208";a="20859406" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orviesa009.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 11 Apr 2024 06:17:07 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) 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.35; Thu, 11 Apr 2024 06:17:05 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 11 Apr 2024 06:17:05 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Thu, 11 Apr 2024 06:17:05 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.172) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Thu, 11 Apr 2024 06:17:05 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N5at04PMfJg30TEn19snZjOdgsrKe2+RTo0XHkoQaMhnwV0XxK0ftF6vWtx/4Q/+0LbIBESIPLD1shLTkX72al4GcbiE9Cq0DxxM3R2f2Q662DBEGfZZ8xvMiB3ywzlymdb9GbGOcT3kOCCrdR8Db/X/RFGc8HzmJrBTuajitKdK5zgDaEYjXWEHZThQUoUeKOs6X/W6rtYwQjA428z/Cie014clltXJ8+o0+c3Brkjw84xG57FbgpjQ6kpQnf7Qij0p3jgKZkw9gssU0w94eaLBK8HLq4bJRMhuITercDk45MfrO8/fLqi0a3gDntWdi5OvxTBtdh7QJkLHZDEQ6w== 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=9mDIEPXtoBUWYrR2Vvb7xphNV3YR4/8kZ1y4jawV7Uc=; b=bPaoC3Ke+jO2hILyQfW2gNtilWKRRfEFk1IHx+xUYwgpHfKVjtaqsvREcclfVpxNo46lDmDq3mTTCbfP3QF+dxRWPffLrblInHP09ldjrAUAeNp74KwncUFVBGB3lZkw26wXUqiXfbstwL4CkBMXfumjN1Tiozvu8qo0OjnShgFbSpYmH6KUJ02PtHZLns5BqwAuTY+7wDBRc4rnAG5we7xjSBBffzKsq+n3L0xMReR+0UKy9DD+2liXIYhPOWAbAmEAoj/5uZmQL1sAOXb96XLoIe6skXQ3CXupGKUw8yM/5+TW3aUJMpRTtqdhqZBKawzYKyBhjp3be1rJiFUAMw== 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 DS0PR11MB7733.namprd11.prod.outlook.com (2603:10b6:8:dc::19) by SA2PR11MB5131.namprd11.prod.outlook.com (2603:10b6:806:116::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.26; Thu, 11 Apr 2024 13:16:58 +0000 Received: from DS0PR11MB7733.namprd11.prod.outlook.com ([fe80::81be:4798:fcb1:288c]) by DS0PR11MB7733.namprd11.prod.outlook.com ([fe80::81be:4798:fcb1:288c%3]) with mapi id 15.20.7452.019; Thu, 11 Apr 2024 13:16:58 +0000 From: "Hellstrom, Thomas" To: "intel-xe@lists.freedesktop.org" , "Ghimiray, Himal Prasad" CC: "Brost, Matthew" , "Vishwanathapura, Niranjana" , "Welty, Brian" , "Zeng, Oak" Subject: Re: [PATCH v4 1/2] drm/xe: Introduce helper to populate userptr Thread-Topic: [PATCH v4 1/2] drm/xe: Introduce helper to populate userptr Thread-Index: AQHah4pSwW0aXIStVEWMMEiX9OY8NrFjFfgA Date: Thu, 11 Apr 2024 13:16:57 +0000 Message-ID: References: <20240405190508.244177-1-himal.prasad.ghimiray@intel.com> <20240405190508.244177-2-himal.prasad.ghimiray@intel.com> In-Reply-To: <20240405190508.244177-2-himal.prasad.ghimiray@intel.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.50.4 (3.50.4-1.fc39) 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: DS0PR11MB7733:EE_|SA2PR11MB5131:EE_ x-ms-office365-filtering-correlation-id: 76877d24-619c-486f-0dde-08dc5a29aa6e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: fYIEFYrCS2wHq0jLV20fscde1VqPDFzZKrEZMB6xw70S23wo/O5KyCp4avE7zC7GZlbFkFBMkcPAFFnO/2LVJLUqgMH7fmhUdDlCCqYqk1dP1IccsEFkybvQf2j5cnf5HylBnUNiDnnQ39mps33i42yCN9ZmsUZdOTnpV1Zm8AMxC+XjkI9HrxwHgcpg26US/Nf/Qa+/KHmAGZEWxu0y8vFugOMguFhC9UWHU+AHoZhErvv7wRUOROZ4tSs5OY1Ywhg3cyZ7V7yroMylyY/yFY2VaLvQc2zyxk4lrraV7Lxus/WWtD7uq0a6Knqf2P9PySvrfzFM3iyy3jj9J+pujYkCffHzZx6DIrphgvp/n6Wke6O3FsRlplsBxR+XgsnciowGTfPYJmRqSPoS6a/8vSMAXfKbGiFfIeVGSvk5kXqBIUnRURtxJqEp0q768KkbXrhNlnfWM/THK9lCtGAGGLF6rJtGXgyQEiUSqie/LdblJM3pfNiOan9g3u5sf7bpjsqNl6q9ib8Br52zXjs4H0ssJ/r0APWcA45HS7/Uow6+Y3CNZlc4xN7QmhF3/z9evzU1V1OXxUMQeHEs6NjB/uxeK/XMHdxVuyVHNE4SoCKhHmE94uTLsADwxdP5qwe+qMqN2TT1rq+FRjXwl1xzgBKv9cUPf9OvNG3b2cKVAR1xhcNRnzpku1+lxpIRlTRIRgeNO2SuStqG0IHAOajEiNdiPvnTe22kc5NgwTRtfJo= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS0PR11MB7733.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(376005)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?d2RHT2pwd0ZXQmhjZE4xRldsK1FwRnNBRFd0ZWJleGp0cFhoZnltUUJ4bGFr?= =?utf-8?B?THFyekZYSzNXTXk3SkhlaUs3L2tCSmxzODhsTTVWb3R0UVZnZGtzTzk0RXhT?= =?utf-8?B?c3k5aTNibkZYd2dWQnY5aU82NGg0VFNVekd3ejFlMUlBSUE5T3ppTjZpSVBS?= =?utf-8?B?VXdnd0pGb1BncXBJNlJUWElQZ0cweUJPY3RQQUxjRnUxeGYvVFJuRHNKNWJW?= =?utf-8?B?WGZNYnU4MVdYUkNFNmlaZmZub3c0bWNXU0ZXSE9YNkt6YUpLTUxOQy9ORmR1?= =?utf-8?B?WWNhS2tYNDcrUEVOWHZXS1hnK1d3Y0p2dURuMndYQzR1bGR3M0k3SmlkcVJJ?= =?utf-8?B?Q013RHBDeXRybExtbjhUa1hPTkt6Uzc3dDFSekF0eEZwa3AvS2h1Sm1makZW?= =?utf-8?B?MStvbGF5emNkd1RvZUZGek5NVXpsM2hIaUlhMEpjMGwydUtJYzd5TVBDMzc0?= =?utf-8?B?RGZiejFwUjhEV0U5aXlyQVFKbUZEbTc2bFBXeEt0UElUUUhTa056RVFYc3RC?= =?utf-8?B?Z01tdHRzSSsxT2VhM09Vc0x5Lzd3b1RudVVxK0grSWY3Ump5WEZUZGxtUlVR?= =?utf-8?B?Ri9FMEZWemRKeVhGWDE5WkIwSnp2bElvVkc4QU5CUTlpVTFYdzZEVUpNQkQy?= =?utf-8?B?ZXB5NDgwZyszMUdveXFkWTV2dEVOMmVHWVo2SllBVkhEV3E4M1k4V0RCMkFX?= =?utf-8?B?cUN3Nyt4UllacC9SdDVFUGIvT1g0ZGJPWFJ6U0U5ZzZLY1Uxa0lma0NCRnlT?= =?utf-8?B?RndmTkpnTTZ2bDdtak4waHpDSXBxYnZvaHJtc2NqUnhqV3ROSis5bHJoenQ1?= =?utf-8?B?NTEvZUs5UFZLU0ptQkU5N3ZDWEdSUFNCby9qSDNFa3RUUTBPdTBuRGhjL2h0?= =?utf-8?B?d2tFVG1KRWc3c3ZyRTBJbjE0VFBib0lONVYyS1dUOFRDRDVtTjRSTSs2QkVL?= =?utf-8?B?N0VqQ0VoYzk5NkRhRGhOUk9sK0gvRWFOVnRpVDlEbTk3WmlkN0h4TjRXQkp6?= =?utf-8?B?Yk9zS0pieGxabUlSaUREcVNyRkoxV0ttVlo1VjUzbmlhRUtQZ2lVNTZKTERv?= =?utf-8?B?Mis1eUFCbzZXY2xPRTBlbHZnMm13WXlCcElWcFdxYXlUMCs2cTllRUdGYjhK?= =?utf-8?B?dXZ4N0h3TFpSMGxZd3ZKNDJOVUZOWUVFbHl0YUZkWVVnYWJScXZVT29wTFNt?= =?utf-8?B?U1ZzekZkMTZsSzJtb1Q2SmVUMEtXSGNUYmwrQVBSWk1KaDMxZVNuRjZSb3VL?= =?utf-8?B?TUxuOHB6VjBXL2xoNWQwZ2RKTjBmemI5QTlEcGd2WlpyQ3BmKzVjRUtVYyt4?= =?utf-8?B?b2Roem5iTGVteEdjY3pzdkpPT21rZG9acjdZWUM4R3VzcEI4Q29hK2Y0Q0NC?= =?utf-8?B?R29qbVVUSk56ZHk3c0J4WEpGdGtYTUJKWS92RE9Nenhodk4yY0ZYbU41R3lC?= =?utf-8?B?b04vYW5yMkJQMjlUcU9pMWRlOE05TkhrMmtVUTRmUzI0MjlwY3hqa01yOS8r?= =?utf-8?B?Z0lldFFuc1lna2lyQkc1V3ZXU2Foc01TSHlVeWdPWWJTTzZXenBZMzFDYXJH?= =?utf-8?B?SmRBMjN1UEpZbTB5Y09yMGlGK3E5UGwwR1NtQkkwak1CejVVNGc5Y2NJMVcr?= =?utf-8?B?RGNXRmNTcVJSMEZjQ2pOZC9RWEVKaS9TY1lCY1BUeCsyOWI1NUlhZUR3eHkv?= =?utf-8?B?elBJalpuV0prZlNwajN6RFNOMmFYV3AzNlpsR2RVem55Z2diUHZVc2xBR2J0?= =?utf-8?B?VFRIVVhYeEo4b1M0MFZoQkJYUUpOcE1yeHdHM3V2YW5FdlJ0RVZ2OHBNZlVn?= =?utf-8?B?WHdwKzY1N0pNM1d2VEtXM3hGVWhqaDJieUUrNWYrZHFpS1NBWC9LSnRoTzV4?= =?utf-8?B?QmpGaDFLaTc0RHNPc2pDYWhqOGN3dEZ2QnZwKzdqRHdqUGIzM2hmaEtDbGFK?= =?utf-8?B?RHBtNDlJSWxMMVhiWkN4QmNjUnNiT3NkTWUyTUhCbCsra211VEg3U2tNVWhI?= =?utf-8?B?R2d0NVZKMmtTN1BxWkltbHFTVkwxU1Z3dnEzQm5xeWhBS3hRWGFiNUFmRG1Z?= =?utf-8?B?bGxKM3BLZ2wxVXA5bnNrK0cxS1h0N3RDMFhmbmp6RTM0OVBVLzlSc3hleDh1?= =?utf-8?B?WW5kNXl1dCtnempkV2ExRGpxVXFXcVF0cXlOZEp5QW9YaWNSd3o5MTVMTlI2?= =?utf-8?Q?XwYiEJJVNBaKD2twAeuf///mgB6ikCYxAhdMQe6NEP+f?= Content-Type: text/plain; charset="utf-8" Content-ID: <213EA0E7746FC84A96CB3AAC8835DB0A@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB7733.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 76877d24-619c-486f-0dde-08dc5a29aa6e X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Apr 2024 13:16:57.8713 (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: IXCUdv6DrRKz1zI9HIKEewpVJQo5mz9MjrR8tdKCqlNo2fv+d1AE54AYTgkSMrfGPnOvObJ8cOl/xGijcKOkSEO7lbouhuMkPxRnRfQxmv8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB5131 X-OriginatorOrg: intel.com X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" SGksDQoNCk9uIFNhdCwgMjAyNC0wNC0wNiBhdCAwMDozNSArMDUzMCwgSGltYWwgUHJhc2FkIEdo aW1pcmF5IHdyb3RlOg0KPiBGcm9tOiBPYWsgWmVuZyA8b2FrLnplbmdAaW50ZWwuY29tPg0KPiAN Cj4gSW50cm9kdWNlIGEgaGVscGVyIGZ1bmN0aW9uIHhlX3VzZXJwdHJfcG9wdWxhdGVfcmFuZ2Ug dG8gcG9wdWxhdGUNCj4gYSBhIHVzZXJwdHIgcmFuZ2UuIFRoaXMgZnVuY3Rpb25zIGNhbGxzIGht bV9yYW5nZV9mYXVsdCB0byByZWFkDQo+IENQVSBwYWdlIHRhYmxlcyBhbmQgcG9wdWxhdGUgYWxs IHBmbnMvcGFnZXMgb2YgdGhpcyB2aXJ0dWFsIGFkZHJlc3MNCj4gcmFuZ2UuDQo+IA0KPiBJZiB0 aGUgcG9wdWxhdGVkIHBhZ2UgaXMgc3lzdGVtIG1lbW9yeSBwYWdlLCBkbWEtbWFwcGluZyBpcyBw ZXJmb3JtZWQNCj4gdG8gZ2V0IGEgZG1hLWFkZHJlc3Mgd2hpY2ggY2FuIGJlIHVzZWQgbGF0ZXIg Zm9yIEdQVSB0byBhY2Nlc3MgcGFnZXMuDQo+IA0KPiBJZiB0aGUgcG9wdWxhdGVkIHBhZ2UgaXMg ZGV2aWNlIHByaXZhdGUgcGFnZSwgd2UgY2FsY3VsYXRlIHRoZSBkcGEgKA0KPiBkZXZpY2UgcGh5 c2ljYWwgYWRkcmVzcykgb2YgdGhlIHBhZ2UuIFRoaXMgd2lsbCBiZSBoYW5kbGVkIGluIGZ1dHVy ZQ0KPiBwYXRjaGVzLg0KPiANCj4gVGhlIGRtYS1hZGRyZXNzIG9yIGRwYSBpcyB0aGVuIHNhdmVk IGluIHVzZXJwdHIncyBzZyB0YWJsZS4gVGhpcyBpcw0KPiBwcmVwYXJlIHdvcmsgdG8gcmVwbGFj ZSB0aGUgZ2V0X3VzZXJfcGFnZXNfZmFzdCBjb2RlIGluIHVzZXJwdHIgY29kZQ0KPiBwYXRoLg0K DQpXaGF0J3Mgc2FpZCBhYm92ZSBhYm91dCBkZXZpY2UtcHJpdmF0ZSBwYWdlcyBpcyBub3QgdHJ1 ZSB3aXRoIHRoaXMNCnZlcnNpb24sIHJpZ2h0Pw0KDQo+IA0KPiB2MTogQWRkcmVzcyByZXZpZXcg Y29tbWVudHM6DQo+IMKgwqDCoCBzZXBhcmF0ZSBhIG5wYWdlX2luX3JhbmdlIGZ1bmN0aW9uIChN YXR0KQ0KPiDCoMKgwqAgcmVwYXJhbWV0ZXJpemUgZnVuY3Rpb24geGVfdXNlcnB0cl9wb3B1bGF0 ZV9yYW5nZSBmdW5jdGlvbiAoTWF0dCkNCj4gwqDCoMKgIG1vdmUgbW11X2ludGVydmFsX3JlYWRf YmVnaW4oKSBjYWxsIGludG8gd2hpbGUgbG9vcCAoVGhvbWFzKQ0KPiDCoMKgwqAgcy9tYXJrX3Jh bmdlX2FjY2Vzc2VkL3hlX21hcmtfcmFuZ2VfYWNjZXNzZWQgKFRob21hcykNCj4gwqDCoMKgIHVz ZSBzZXRfcGFnZV9kaXJ0eV9sb2NrICh2cyBzZXRfcGFnZV9kaXJ0eSkgKFRob21hcykNCj4gwqDC oMKgIG1vdmUgYSBmZXcgY2hlY2tpbmcgaW4geGVfdm1hX3VzZXJwdHJfcGluX3BhZ2VzIHRvIGht bS5jIChNYXR0KQ0KPiB2MjogUmVtb3ZlIGRldmljZSBwcml2YXRlIHBhZ2Ugc3VwcG9ydC4gT25s eSBzdXBwb3J0IHN5c3RlbQ0KPiDCoMKgwqAgcGFnZXMgZm9yIG5vdy4gdXNlIGRtYS1tYXAtc2cg cmF0aGVyIHRoYW4gZG1hLW1hcC1wYWdlDQo+IChNYXR0L1Rob21hcykNCj4gdjM6IEFkZHJlc3Mg cmV2aWV3IGNvbW1lbnRzOg0KPiDCoMKgwqAgU3F1YXNoIHBhdGNoICJkcm0veGU6IEludHJvZHVj ZSBhIGhlbHBlciB0byBmcmVlIHNnIHRhYmxlIiB0bw0KPiBjdXJyZW50DQo+IMKgwqDCoCBwYXRj aCAoTWF0dCkNCj4gwqDCoMKgIHN0YXJ0IGFuZCBlbmQgYWRkcmVzc2VzIGFyZSBhbHJlYWR5IHBh Z2UgYWxpZ25lZCAoTWF0dCkNCj4gwqDCoMKgIERvIG1tYXBfcmVhZF9sb2NrIGFuZCBtbWFwX3Jl YWRfdW5sb2NrIGZvciBobW1fcmFuZ2VfZmF1bHQgaW5jYXNlDQo+IG9mDQo+IMKgwqDCoCBub24g c3lzdGVtIGFsbG9jYXRvciBjYWxsLiAoTWF0dCkNCj4gwqDCoMKgIERyb3Aga3RocmVhZF91c2Vf bW0gYW5kIGt0aHJlYWRfdW51c2VfbW0uIChNYXR0KQ0KPiDCoMKgwqAgTm8gbmVlZCBvZiBrZXJu ZWwtZG9jIGZvciBzdGF0aWMgZnVuY3Rpb25zLihNYXR0KQ0KPiDCoMKgwqAgTW9kaWZ5IGZ1bmN0 aW9uIG5hbWVzLiAoTWF0dCkNCj4gwqDCoMKgIEZyZWUgc2d0YWJsZSBpbmNhc2Ugb2YgZG1hX21h cF9zZ3RhYmxlIGZhaWx1cmUuKE1hdHQpDQo+IMKgwqDCoCBNb2RpZnkgbG9vcCBmb3IgaG1tX3Jh bmdlX2ZhdWx0LihNYXR0KQ0KPiB2NDogUmVtb3ZlIHRoZSBkdW1teSBmdW5jdGlvbiBmb3IgeGVf aG1tX3VzZXJwdHJfcG9wdWxhdGVfcmFuZ2UNCj4gwqDCoMKgIHNpbmNlIENPTkZJR19ITU1fTUlS Uk9SIGlzIG5lZWRlZC4gKE1hdHQpDQo+IMKgwqDCoCBDaGFuZ2UgdmFyaWFibGUgbmFtZXMgc3Rh cnQvZW5kIHRvDQo+IHVzZXJwdHJfc3RhcnQvdXNlcnB0cl9lbmQuKE1hdHQpDQo+IA0KPiBTaWdu ZWQtb2ZmLWJ5OiBPYWsgWmVuZyA8b2FrLnplbmdAaW50ZWwuY29tPg0KPiBDby1kZXZlbG9wZWQt Ynk6IE5pcmFuamFuYSBWaXNod2FuYXRoYXB1cmENCj4gPG5pcmFuamFuYS52aXNod2FuYXRoYXB1 cmFAaW50ZWwuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBOaXJhbmphbmEgVmlzaHdhbmF0aGFwdXJh DQo+IDxuaXJhbmphbmEudmlzaHdhbmF0aGFwdXJhQGludGVsLmNvbT4NCj4gQ2M6IE1hdHRoZXcg QnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPg0KPiBDYzogVGhvbWFzIEhlbGxzdHLDtm0g PHRob21hcy5oZWxsc3Ryb21AaW50ZWwuY29tPg0KPiBDYzogQnJpYW4gV2VsdHkgPGJyaWFuLndl bHR5QGludGVsLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogSGltYWwgUHJhc2FkIEdoaW1pcmF5DQo+ IDxoaW1hbC5wcmFzYWQuZ2hpbWlyYXlAaW50ZWwuY29tPg0KPiAtLS0NCj4gwqBkcml2ZXJzL2dw dS9kcm0veGUvS2NvbmZpZ8KgIHzCoMKgIDEgKw0KPiDCoGRyaXZlcnMvZ3B1L2RybS94ZS9NYWtl ZmlsZSB8wqDCoCAyICsNCj4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfaG1tLmMgfCAyNTMNCj4g KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+IMKgZHJpdmVycy9ncHUvZHJt L3hlL3hlX2htbS5oIHzCoCAxMSArKw0KPiDCoDQgZmlsZXMgY2hhbmdlZCwgMjY3IGluc2VydGlv bnMoKykNCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2htbS5j DQo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9obW0uaA0KPiAN Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnIGIvZHJpdmVycy9ncHUv ZHJtL3hlL0tjb25maWcNCj4gaW5kZXggMWE1NTZkMDg3ZTYzLi40NDlhMWVjYmM5MmEgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnDQo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS94ZS9LY29uZmlnDQo+IEBAIC00MSw2ICs0MSw3IEBAIGNvbmZpZyBEUk1fWEUNCj4gwqAJ c2VsZWN0IE1NVV9OT1RJRklFUg0KPiDCoAlzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVANCj4gwqAJ c2VsZWN0IEFVWElMSUFSWV9CVVMNCj4gKwlzZWxlY3QgSE1NX01JUlJPUg0KPiDCoAloZWxwDQo+ IMKgCcKgIEV4cGVyaW1lbnRhbCBkcml2ZXIgZm9yIEludGVsIFhlIHNlcmllcyBHUFVzDQo+IMKg DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUvTWFrZWZpbGUNCj4gYi9kcml2ZXJz L2dwdS9kcm0veGUvTWFrZWZpbGUNCj4gaW5kZXggMjEzMTZlZTQ3MDI2Li4wNzAzMWI1YmE5Nzcg MTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS9NYWtlZmlsZQ0KPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0veGUvTWFrZWZpbGUNCj4gQEAgLTE0Niw2ICsxNDYsOCBAQCB4ZS15ICs9IHhl X2JiLm8gXA0KPiDCoAl4ZV93YS5vIFwNCj4gwqAJeGVfd29wY20ubw0KPiDCoA0KPiAreGUtJChD T05GSUdfSE1NX01JUlJPUikgKz0geGVfaG1tLm8NCj4gKw0KPiDCoCMgZ3JhcGhpY3MgaGFyZHdh cmUgbW9uaXRvcmluZyAoSFdNT04pIHN1cHBvcnQNCj4gwqB4ZS0kKENPTkZJR19IV01PTikgKz0g eGVfaHdtb24ubw0KPiDCoA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2ht bS5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2htbS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMmMzMmRjNDZmN2Q0DQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2htbS5jDQo+IEBAIC0wLDAgKzEsMjUzIEBA DQo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUDQo+ICsvKg0KPiArICogQ29weXJp Z2h0IMKpIDIwMjQgSW50ZWwgQ29ycG9yYXRpb24NCj4gKyAqLw0KPiArDQo+ICsjaW5jbHVkZSA8 bGludXgvc2NhdHRlcmxpc3QuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9tbXVfbm90aWZpZXIuaD4N Cj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L21l bXJlbWFwLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvc3dhcC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4 L2htbS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L21tLmg+DQo+ICsjaW5jbHVkZSAieGVfaG1tLmgi DQo+ICsjaW5jbHVkZSAieGVfdm0uaCINCj4gKyNpbmNsdWRlICJ4ZV9iby5oIg0KPiArDQo+ICtz dGF0aWMgdTY0IHhlX25wYWdlc19pbl9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25l ZCBsb25nDQo+IGVuZCkNCj4gK3sNCj4gKwlyZXR1cm4gKGVuZCAtIHN0YXJ0KSA+PiBQQUdFX1NI SUZUOw0KPiArfQ0KPiArDQo+ICsvKg0KPiArICogeGVfbWFya19yYW5nZV9hY2Nlc3NlZCgpIC0g bWFyayBhIHJhbmdlIGlzIGFjY2Vzc2VkLCBzbyBjb3JlIG1tDQo+ICsgKiBoYXZlIHN1Y2ggaW5m b3JtYXRpb24gZm9yIG1lbW9yeSBldmljdGlvbiBvciB3cml0ZSBiYWNrIHRvDQo+ICsgKiBoYXJk IGRpc2sNCj4gKyAqDQo+ICsgKiBAcmFuZ2U6IHRoZSByYW5nZSB0byBtYXJrDQo+ICsgKiBAd3Jp dGU6IGlmIHdyaXRlIHRvIHRoaXMgcmFuZ2UsIHdlIG1hcmsgcGFnZXMgaW4gdGhpcyByYW5nZQ0K PiArICogYXMgZGlydHkNCj4gKyAqLw0KPiArc3RhdGljIHZvaWQgeGVfbWFya19yYW5nZV9hY2Nl c3NlZChzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSwgYm9vbA0KPiB3cml0ZSkNCj4gK3sNCj4gKwlz dHJ1Y3QgcGFnZSAqcGFnZTsNCj4gKwl1NjQgaSwgbnBhZ2VzOw0KPiArDQo+ICsJbnBhZ2VzID0g eGVfbnBhZ2VzX2luX3JhbmdlKHJhbmdlLT5zdGFydCwgcmFuZ2UtPmVuZCk7DQo+ICsJZm9yIChp ID0gMDsgaSA8IG5wYWdlczsgaSsrKSB7DQo+ICsJCXBhZ2UgPSBobW1fcGZuX3RvX3BhZ2UocmFu Z2UtPmhtbV9wZm5zW2ldKTsNCj4gKwkJaWYgKHdyaXRlKQ0KPiArCQkJc2V0X3BhZ2VfZGlydHlf bG9jayhwYWdlKTsNCj4gKw0KPiArCQltYXJrX3BhZ2VfYWNjZXNzZWQocGFnZSk7DQo+ICsJfQ0K PiArfQ0KPiArDQo+ICsvKg0KPiArICogeGVfYnVpbGRfc2coKSAtIGJ1aWxkIGEgc2NhdHRlciBn YXRoZXIgdGFibGUgZm9yIGFsbCB0aGUgcGh5c2ljYWwNCj4gcGFnZXMvcGZuDQo+ICsgKiBpbiBh IGhtbV9yYW5nZS4gZG1hLW1hcCBwYWdlcyBpZiBuZWNlc3NhcnkuIGRtYS1hZGRyZXNzIGlzIHNh dmUNCj4gaW4gc2cgdGFibGUNCj4gKyAqIGFuZCB3aWxsIGJlIHVzZWQgdG8gcHJvZ3JhbSBHUFUg cGFnZSB0YWJsZSBsYXRlci4NCj4gKyAqDQo+ICsgKiBAeGU6IHRoZSB4ZSBkZXZpY2Ugd2hvIHdp bGwgYWNjZXNzIHRoZSBkbWEtYWRkcmVzcyBpbiBzZyB0YWJsZQ0KPiArICogQHJhbmdlOiB0aGUg aG1tIHJhbmdlIHRoYXQgd2UgYnVpbGQgdGhlIHNnIHRhYmxlIGZyb20uIHJhbmdlLQ0KPiA+aG1t X3BmbnNbXQ0KPiArICogaGFzIHRoZSBwZm4gbnVtYmVycyBvZiBwYWdlcyB0aGF0IGJhY2sgdXAg dGhpcyBobW0gYWRkcmVzcyByYW5nZS4NCj4gKyAqIEBzdDogcG9pbnRlciB0byB0aGUgc2cgdGFi bGUuDQo+ICsgKiBAd3JpdGU6IHdoZXRoZXIgd2Ugd3JpdGUgdG8gdGhpcyByYW5nZS4gVGhpcyBk ZWNpZGVzIGRtYSBtYXANCj4gZGlyZWN0aW9uDQo+ICsgKiBmb3Igc3lzdGVtIHBhZ2VzLiBJZiB3 cml0ZSB3ZSBtYXAgaXQgYmktZGlyZXRpb25hbDsgb3RoZXJ3aXNlDQo+ICsgKiBETUFfVE9fREVW SUNFDQo+ICsgKg0KPiArICogQWxsIHRoZSBjb250aWd1b3VzIHBmbnMgd2lsbCBiZSBjb2xsYXBz ZWQgaW50byBvbmUgZW50cnkgaW4NCj4gKyAqIHRoZSBzY2F0dGVyIGdhdGhlciB0YWJsZS4gVGhp cyBpcyBmb3IgdGhlIHB1cnBvc2Ugb2YgZWZmaWNpZW50bHkNCj4gKyAqIHByb2dyYW1taW5nIEdQ VSBwYWdlIHRhYmxlLg0KPiArICoNCj4gKyAqIFRoZSBkbWFfYWRkcmVzcyBpbiB0aGUgc2cgdGFi bGUgd2lsbCBsYXRlciBiZSB1c2VkIGJ5IEdQVSB0bw0KPiArICogYWNjZXNzIG1lbW9yeS4gU28g aWYgdGhlIG1lbW9yeSBpcyBzeXN0ZW0gbWVtb3J5LCB3ZSBuZWVkIHRvDQo+ICsgKiBkbyBhIGRt YS1tYXBwaW5nIHNvIGl0IGNhbiBiZSBhY2Nlc3NlZCBieSBHUFUvRE1BLg0KPiArICoNCj4gKyAq IEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGN1cnJlbnRseSBvbmx5IHN1cHBvcnQgcGFnZXMgaW4gc3lz dGVtDQo+ICsgKiBtZW1vcnkuIElmIHRoZSBtZW1vcnkgaXMgR1BVIGxvY2FsIG1lbW9yeSAob2Yg dGhlIEdQVSB3aG8NCj4gKyAqIGlzIGdvaW5nIHRvIGFjY2VzcyBtZW1vcnkpLCB3ZSBuZWVkIGdw dSBkcGEgKGRldmljZSBwaHlzaWNhbA0KPiArICogYWRkcmVzcyksIGFuZCB0aGVyZSBpcyBubyBu ZWVkIG9mIGRtYS1tYXBwaW5nLiBUaGlzIGlzIFRCRC4NCj4gKyAqDQo+ICsgKiBGSVhNRTogZG1h LW1hcHBpbmcgZm9yIHBlZXIgZ3B1IGRldmljZSB0byBhY2Nlc3MgcmVtb3RlIGdwdSdzDQo+ICsg KiBtZW1vcnkuIEFkZCB0aGlzIHdoZW4geW91IHN1cHBvcnQgcDJwDQo+ICsgKg0KPiArICogVGhp cyBmdW5jdGlvbiBhbGxvY2F0ZXMgdGhlIHN0b3JhZ2Ugb2YgdGhlIHNnIHRhYmxlLiBJdCBpcw0K PiArICogY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZnJlZSBpdCBjYWxsaW5nIHNnX2ZyZWVf dGFibGUuDQo+ICsgKg0KPiArICogUmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWw7IC1FTk9NRU0gaWYg ZmFpbHMgdG8gYWxsb2NhdGUgbWVtb3J5DQo+ICsgKi8NCj4gK3N0YXRpYyBpbnQgeGVfYnVpbGRf c2coc3RydWN0IHhlX2RldmljZSAqeGUsIHN0cnVjdCBobW1fcmFuZ2UNCj4gKnJhbmdlLA0KPiAr CQnCoMKgwqDCoMKgwqAgc3RydWN0IHNnX3RhYmxlICpzdCwgYm9vbCB3cml0ZSkNCj4gK3sNCj4g KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSB4ZS0+ZHJtLmRldjsNCj4gKwlzdHJ1Y3QgcGFnZSAqKnBh Z2VzOw0KPiArCXU2NCBpLCBucGFnZXM7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCW5wYWdlcyA9 IHhlX25wYWdlc19pbl9yYW5nZShyYW5nZS0+c3RhcnQsIHJhbmdlLT5lbmQpOw0KPiArCXBhZ2Vz ID0ga3ZtYWxsb2NfYXJyYXkobnBhZ2VzLCBzaXplb2YoKnBhZ2VzKSwgR0ZQX0tFUk5FTCk7DQo+ ICsJaWYgKCFwYWdlcykNCj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ICsNCj4gKwlmb3IgKGkgPSAw OyBpIDwgbnBhZ2VzOyBpKyspIHsNCj4gKwkJcGFnZXNbaV0gPSBobW1fcGZuX3RvX3BhZ2UocmFu Z2UtPmhtbV9wZm5zW2ldKTsNCj4gKwkJeGVfYXNzZXJ0KHhlLCAhaXNfZGV2aWNlX3ByaXZhdGVf cGFnZShwYWdlc1tpXSkpOw0KPiArCX0NCj4gKw0KPiArCXJldCA9IHNnX2FsbG9jX3RhYmxlX2Zy b21fcGFnZXNfc2VnbWVudChzdCwgcGFnZXMsIG5wYWdlcywNCj4gMCwgbnBhZ2VzIDw8IFBBR0Vf U0hJRlQsDQo+ICsJCQkJCQl4ZV9zZ19zZWdtZW50X3NpemUoZA0KPiBldiksIEdGUF9LRVJORUwp Ow0KPiArCWlmIChyZXQpDQo+ICsJCWdvdG8gZnJlZV9wYWdlczsNCj4gKw0KPiArCXJldCA9IGRt YV9tYXBfc2d0YWJsZShkZXYsIHN0LCB3cml0ZSA/IERNQV9CSURJUkVDVElPTkFMIDoNCj4gRE1B X1RPX0RFVklDRSwNCj4gKwkJCcKgwqDCoMKgwqAgRE1BX0FUVFJfU0tJUF9DUFVfU1lOQyB8DQo+ IERNQV9BVFRSX05PX0tFUk5FTF9NQVBQSU5HKTsNCj4gKwlpZiAocmV0KSB7DQo+ICsJCXNnX2Zy ZWVfdGFibGUoc3QpOw0KPiArCQlzdCA9IE5VTEw7DQo+ICsJfQ0KPiArDQo+ICtmcmVlX3BhZ2Vz Og0KPiArCWt2ZnJlZShwYWdlcyk7DQo+ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArLyoN Cj4gKyAqIHhlX2htbV91c2VycHRyX2ZyZWVfc2coKSAtIEZyZWUgdGhlIHNjYXR0ZXIgZ2F0aGVy IHRhYmxlIG9mDQo+IHVzZXJwdHINCj4gKyAqDQo+ICsgKiBAdXZtYTogdGhlIHVzZXJwdHIgdm1h IHdoaWNoIGhvbGQgdGhlIHNjYXR0ZXIgZ2F0aGVyIHRhYmxlDQo+ICsgKg0KPiArICogV2l0aCBm dW5jdGlvbiB4ZV91c2VycHRyX3BvcHVsYXRlX3JhbmdlLCB3ZSBhbGxvY2F0ZSBzdG9yYWdlIG9m DQo+ICsgKiB0aGUgdXNlcnB0ciBzZyB0YWJsZS4gVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiB0 byBmcmVlIHRoaXMNCj4gKyAqIHNnIHRhYmxlLCBhbmQgZG1hIHVubWFwIHRoZSBhZGRyZXNzIGlu IHRoZSB0YWJsZS4NCj4gKyAqLw0KPiArdm9pZCB4ZV9obW1fdXNlcnB0cl9mcmVlX3NnKHN0cnVj dCB4ZV91c2VycHRyX3ZtYSAqdXZtYSkNCj4gK3sNCj4gKwlzdHJ1Y3QgeGVfdXNlcnB0ciAqdXNl cnB0ciA9ICZ1dm1hLT51c2VycHRyOw0KPiArCXN0cnVjdCB4ZV92bWEgKnZtYSA9ICZ1dm1hLT52 bWE7DQo+ICsJYm9vbCB3cml0ZSA9ICF4ZV92bWFfcmVhZF9vbmx5KHZtYSk7DQo+ICsJc3RydWN0 IHhlX3ZtICp2bSA9IHhlX3ZtYV92bSh2bWEpOw0KPiArCXN0cnVjdCB4ZV9kZXZpY2UgKnhlID0g dm0tPnhlOw0KPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IHhlLT5kcm0uZGV2Ow0KPiArDQo+ICsJ eGVfYXNzZXJ0KHhlLCB1c2VycHRyLT5zZyk7DQo+ICsJZG1hX3VubWFwX3NndGFibGUoZGV2LCB1 c2VycHRyLT5zZywNCj4gKwkJCcKgIHdyaXRlID8gRE1BX0JJRElSRUNUSU9OQUwgOiBETUFfVE9f REVWSUNFLA0KPiAwKTsNCj4gKw0KPiArCXNnX2ZyZWVfdGFibGUodXNlcnB0ci0+c2cpOw0KPiAr CXVzZXJwdHItPnNnID0gTlVMTDsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgKiB4ZV9obW1fdXNl cnB0cl9wb3B1bGF0ZV9yYW5nZSgpIC0gUG9wdWxhdGUgcGh5c2ljYWwgcGFnZXMgb2YgYQ0KPiB2 aXJ0dWFsDQo+ICsgKiBhZGRyZXNzIHJhbmdlDQo+ICsgKg0KPiArICogQHV2bWE6IHVzZXJwdHIg dm1hIHdoaWNoIGhhcyBpbmZvcm1hdGlvbiBvZiB0aGUgcmFuZ2UgdG8NCj4gcG9wdWxhdGUuDQo+ ICsgKiBAaXNfbW1fbW1hcF9sb2NrZWQ6IFRydWUgaWYgbW1hcF9yZWFkX2xvY2sgaXMgYWxyZWFk eSBhY3F1aXJlZCBieQ0KPiBjYWxsZXIuDQo+ICsgKg0KPiArICogVGhpcyBmdW5jdGlvbiBwb3B1 bGF0ZSB0aGUgcGh5c2ljYWwgcGFnZXMgb2YgYSB2aXJ0dWFsDQo+ICsgKiBhZGRyZXNzIHJhbmdl LiBUaGUgcG9wdWxhdGVkIHBoeXNpY2FsIHBhZ2VzIGlzIHNhdmVkIGluDQo+ICsgKiB1c2VycHRy J3Mgc2cgdGFibGUuIEl0IGlzIHNpbWlsYXIgdG8gZ2V0X3VzZXJfcGFnZXMgYnV0IGNhbGwNCj4g KyAqIGhtbV9yYW5nZV9mYXVsdC4NCj4gKyAqDQo+ICsgKiBUaGlzIGZ1bmN0aW9uIGFsc28gcmVh ZCBtbXUgbm90aWZpZXIgc2VxdWVuY2UgIyAoDQo+ICsgKiBtbXVfaW50ZXJ2YWxfcmVhZF9iZWdp biksIGZvciB0aGUgcHVycG9zZSBvZiBsYXRlcg0KPiArICogY29tcGFyaXNvbiAodGhyb3VnaCBt bXVfaW50ZXJ2YWxfcmVhZF9yZXRyeSkuDQo+ICsgKg0KPiArICogVGhpcyBtdXN0IGJlIGNhbGxl ZCB3aXRoIG1tYXAgcmVhZCBvciB3cml0ZSBsb2NrIGhlbGQuDQo+ICsgKg0KPiArICogVGhpcyBm dW5jdGlvbiBhbGxvY2F0ZXMgdGhlIHN0b3JhZ2Ugb2YgdGhlIHVzZXJwdHIgc2cgdGFibGUuDQo+ ICsgKiBJdCBpcyBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBmcmVlIGl0IGNhbGxpbmcgc2df ZnJlZV90YWJsZS4NCj4gKyAqDQo+ICsgKiByZXR1cm5zOiAwIGZvciBzdWNjdXNzOyBuZWdhdGl2 ZSBlcnJvciBubyBvbiBmYWlsdXJlDQo+ICsgKi8NCj4gK2ludCB4ZV9obW1fdXNlcnB0cl9wb3B1 bGF0ZV9yYW5nZShzdHJ1Y3QgeGVfdXNlcnB0cl92bWEgKnV2bWEsDQo+ICsJCQkJwqAgYm9vbCBp c19tbV9tbWFwX2xvY2tlZCkNCj4gK3sNCj4gKwl1bnNpZ25lZCBsb25nIHRpbWVvdXQgPQ0KPiAr CQlqaWZmaWVzICsNCj4gbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VU KTsNCj4gKwl1bnNpZ25lZCBsb25nICpwZm5zLCBmbGFncyA9IEhNTV9QRk5fUkVRX0ZBVUxUOw0K PiArCXN0cnVjdCB4ZV91c2VycHRyICp1c2VycHRyOw0KPiArCXN0cnVjdCB4ZV92bWEgKnZtYSA9 ICZ1dm1hLT52bWE7DQo+ICsJdTY0IHVzZXJwdHJfc3RhcnQgPSB4ZV92bWFfdXNlcnB0cih2bWEp Ow0KPiArCXU2NCB1c2VycHRyX2VuZCA9IHVzZXJwdHJfc3RhcnQgKyB4ZV92bWFfc2l6ZSh2bWEp Ow0KPiArCXN0cnVjdCB4ZV92bSAqdm0gPSB4ZV92bWFfdm0odm1hKTsNCj4gKwlzdHJ1Y3QgaG1t X3JhbmdlIGhtbV9yYW5nZTsNCj4gKwlib29sIHdyaXRlID0gIXhlX3ZtYV9yZWFkX29ubHkodm1h KTsNCj4gKwl1bnNpZ25lZCBsb25nIG5vdGlmaWVyX3NlcTsNCj4gKwl1NjQgbnBhZ2VzOw0KPiAr CWludCByZXQ7DQo+ICsNCj4gKwl1c2VycHRyID0gJnV2bWEtPnVzZXJwdHI7DQo+ICsNCj4gKwlp ZiAoaXNfbW1fbW1hcF9sb2NrZWQpDQo+ICsJCW1tYXBfYXNzZXJ0X2xvY2tlZCh1c2VycHRyLT5u b3RpZmllci5tbSk7DQo+ICsNCj4gKwlpZiAodm1hLT5ncHV2YS5mbGFncyAmIFhFX1ZNQV9ERVNU Uk9ZRUQpDQo+ICsJCXJldHVybiAwOw0KPiArDQo+ICsJbm90aWZpZXJfc2VxID0gbW11X2ludGVy dmFsX3JlYWRfYmVnaW4oJnVzZXJwdHItPm5vdGlmaWVyKTsNCj4gKwlpZiAobm90aWZpZXJfc2Vx ID09IHVzZXJwdHItPm5vdGlmaWVyX3NlcSkNCj4gKwkJcmV0dXJuIDA7DQoNCkNvdWxkbid0IHRo aXMgYmUgcmVwbGFjZWQgd2l0aA0KDQppZiAoIW1tdV9pbnRlcnZhbF9jaGVja19yZXRyeSgmdXNl cnB0ci0+bm90aWZpZXIsIHVzZXJwdHItDQo+bm90aWZpZXJfc2VxKSkNCglyZXR1cm4gMDsNCg0K PiArDQo+ICsJaWYgKHVzZXJwdHItPnNnKQ0KPiArCQl4ZV9obW1fdXNlcnB0cl9mcmVlX3NnKHV2 bWEpOw0KPiArDQo+ICsJbnBhZ2VzID0geGVfbnBhZ2VzX2luX3JhbmdlKHVzZXJwdHJfc3RhcnQs IHVzZXJwdHJfZW5kKTsNCj4gKwlwZm5zID0ga3ZtYWxsb2NfYXJyYXkobnBhZ2VzLCBzaXplb2Yo KnBmbnMpLCBHRlBfS0VSTkVMKTsNCj4gKwlpZiAodW5saWtlbHkoIXBmbnMpKQ0KPiArCQlyZXR1 cm4gLUVOT01FTTsNCj4gKw0KPiArCWlmICh3cml0ZSkNCj4gKwkJZmxhZ3MgfD0gSE1NX1BGTl9S RVFfV1JJVEU7DQo+ICsNCj4gKwlpZiAoIW1tZ2V0X25vdF96ZXJvKHVzZXJwdHItPm5vdGlmaWVy Lm1tKSkgew0KPiArCQlyZXQgPSAtRUZBVUxUOw0KPiArCQlnb3RvIGZyZWVfcGZuczsNCj4gKwl9 DQo+ICsNCj4gKwlobW1fcmFuZ2UuZGVmYXVsdF9mbGFncyA9IGZsYWdzOw0KPiArCWhtbV9yYW5n ZS5obW1fcGZucyA9IHBmbnM7DQo+ICsJaG1tX3JhbmdlLm5vdGlmaWVyID0gJnVzZXJwdHItPm5v dGlmaWVyOw0KPiArCWhtbV9yYW5nZS5zdGFydCA9IHVzZXJwdHJfc3RhcnQ7DQo+ICsJaG1tX3Jh bmdlLmVuZCA9IHVzZXJwdHJfZW5kOw0KPiArCWhtbV9yYW5nZS5kZXZfcHJpdmF0ZV9vd25lciA9 IHZtLT54ZTsNCj4gKw0KPiArCXdoaWxlICh0cnVlKSB7DQo+ICsJCWhtbV9yYW5nZS5ub3RpZmll cl9zZXEgPQ0KPiBtbXVfaW50ZXJ2YWxfcmVhZF9iZWdpbigmdXNlcnB0ci0+bm90aWZpZXIpOw0K PiArDQo+ICsJCWlmICghaXNfbW1fbW1hcF9sb2NrZWQpDQo+ICsJCQltbWFwX3JlYWRfbG9jayh1 c2VycHRyLT5ub3RpZmllci5tbSk7DQo+ICsNCj4gKwkJcmV0ID0gaG1tX3JhbmdlX2ZhdWx0KCZo bW1fcmFuZ2UpOw0KPiArDQo+ICsJCWlmICghaXNfbW1fbW1hcF9sb2NrZWQpDQo+ICsJCQltbWFw X3JlYWRfdW5sb2NrKHVzZXJwdHItPm5vdGlmaWVyLm1tKTsNCj4gKw0KPiArCQlpZiAocmV0ID09 IC1FQlVTWSkgew0KPiArCQkJaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpDQo+ICsJ CQkJYnJlYWs7DQo+ICsNCj4gKwkJCWNvbnRpbnVlOw0KPiArCQl9DQo+ICsJCWJyZWFrOw0KPiAr CX0NCj4gKw0KPiArCW1tcHV0KHVzZXJwdHItPm5vdGlmaWVyLm1tKTsNCj4gKw0KPiArCWlmIChy ZXQpDQo+ICsJCWdvdG8gZnJlZV9wZm5zOw0KPiArDQo+ICsJcmV0ID0geGVfYnVpbGRfc2codm0t PnhlLCAmaG1tX3JhbmdlLCAmdXNlcnB0ci0+c2d0LCB3cml0ZSk7DQo+ICsJaWYgKHJldCkNCj4g KwkJZ290byBmcmVlX3BmbnM7DQo+ICsNCj4gKwl4ZV9tYXJrX3JhbmdlX2FjY2Vzc2VkKCZobW1f cmFuZ2UsIHdyaXRlKTsNCj4gKwl1c2VycHRyLT5zZyA9ICZ1c2VycHRyLT5zZ3Q7DQo+ICsJdXNl cnB0ci0+bm90aWZpZXJfc2VxID0gaG1tX3JhbmdlLm5vdGlmaWVyX3NlcTsNCj4gKw0KPiArZnJl ZV9wZm5zOg0KPiArCWt2ZnJlZShwZm5zKTsNCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfaG1tLmgNCj4gYi9kcml2ZXJzL2dw dS9kcm0veGUveGVfaG1tLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwMDAwLi45MDlkYzJiZGNkOTcNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL2dw dS9kcm0veGUveGVfaG1tLmgNCj4gQEAgLTAsMCArMSwxMSBAQA0KPiArLyogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IE1JVA0KPiArICoNCj4gKyAqIENvcHlyaWdodCDCqSAyMDI0IEludGVsIENv cnBvcmF0aW9uDQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+DQo+ICsN Cj4gK3N0cnVjdCB4ZV91c2VycHRyX3ZtYTsNCj4gKw0KPiAraW50IHhlX2htbV91c2VycHRyX3Bv cHVsYXRlX3JhbmdlKHN0cnVjdCB4ZV91c2VycHRyX3ZtYSAqdXZtYSwgYm9vbA0KPiBpc19tbV9t bWFwX2xvY2tlZCk7DQo+ICt2b2lkIHhlX2htbV91c2VycHRyX2ZyZWVfc2coc3RydWN0IHhlX3Vz ZXJwdHJfdm1hICp1dm1hKTsNCg0K