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 4DDB3C3DA4A for ; Mon, 29 Jul 2024 10:10:45 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0D96B10E386; Mon, 29 Jul 2024 10:10:45 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="TX/ONlUa"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.11]) by gabe.freedesktop.org (Postfix) with ESMTPS id A6D9710E383 for ; Mon, 29 Jul 2024 10:10:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1722247843; x=1753783843; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=uoGd/XuK//xLBrW/8Hdbc2EYU//nebvehUNojs/lkUA=; b=TX/ONlUaKhepJsyBW8eWEITAoDFH2cGRHmQ4W7d7il0jrT5dWrGvYvPk Ocu4LH+d1iuBM1fua8/vDCfM96XPzDIKTWbeI076k3CIpng66Bt96K9ns wVif6BtKfOJbezvHJH6+KLO5TN3zD0rZVQfUwjcbSnSOk0Wo6+Ha33Lkf xmj3UPXZuK0cseZo8MITLDDjNY+NwlXEhrb6dx6A4BlMqbTokjVjY+5SC 0dhiNyi14VYHma4dDHz4+Uohleq74tBzw3NgzqfHuqMUhd1legIY6mj5L pJLi+QQbXZqxLHBEeFmjeT+PrFtRl1t04PXVJj8LAFqKVJvVbSbmBufVL A==; X-CSE-ConnectionGUID: 9M/wNAywSDSXUK8cZGbetA== X-CSE-MsgGUID: gc775aw4RiSkFS+/oqOFNQ== X-IronPort-AV: E=McAfee;i="6700,10204,11147"; a="30611933" X-IronPort-AV: E=Sophos;i="6.09,245,1716274800"; d="scan'208";a="30611933" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by fmvoesa105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jul 2024 03:10:41 -0700 X-CSE-ConnectionGUID: gh59x+TpRuqKOh3iBU6F7w== X-CSE-MsgGUID: patxUgpcSLqkhu+3VUdEVw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.09,245,1716274800"; d="scan'208";a="58252552" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmviesa005.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 29 Jul 2024 03:10:29 -0700 Received: from orsmsx603.amr.corp.intel.com (10.22.229.16) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 29 Jul 2024 03:10:28 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39 via Frontend Transport; Mon, 29 Jul 2024 03:10:28 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.168) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Mon, 29 Jul 2024 03:10:28 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Y5mIcyA03tRT3SRcNCJLE+kowKABov+VVzRLtt3+wm+Dd+0oqZoX5vU84V1fQbAAuM5uveQI0LKrUNLYmHt5krQC9Pp5napAyA8NdUsmOyFs9fVGYcL7dVg5Ey2GKOxVsMt3KZPWAdSw/fKDWx5cv0/8qaKM6hCIZgvcmIlJ7N6mg6QnQzwkgyOFaCk4Ys8L2Rj2d4pYb42W8Oj013m/zayIqfyTVHmnEDP/3cznQD3WV5YXSJUX+lyI0JMoTCjSOqpwYGd7ODqCt/ohElJlZwSRCFhn46OOfWR/hsF0LISdX89aDpm2fNveTy04TINJniFV17mVN91ps0VmMBzeWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=uoGd/XuK//xLBrW/8Hdbc2EYU//nebvehUNojs/lkUA=; b=nFvl1A1lOIlsVRD5IacmMFFLMXlzyyKDJNCb8stzRJXvTlpvPwLqwofhZNirSUCdYhJn+/nkwiEb1j3NwMp5eLO8oKUTBEH9oqyyF9RSJ8UI7xUm7SpQCWZaTYY98dCZbl8QuS2HeQaXMkJ2asaPatXodfUJir185lEROtitDb6YFgpXQfHc+nuWy57eUv797les+Gb8BL3uipKv2FejkPIXQ2oWtTQSMemOBBViW15+6pEQ5tRqTS/5YDGUqoF7DsGsvk6PDYVtawiF2JCXgz2005dhElDG2mRwP358JBJedFqOrVyC5nl+Gi7otnkRJQHNJo+SfgCPJ68CfXEu2w== 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 IA0PR11MB7864.namprd11.prod.outlook.com (2603:10b6:208:3df::14) by SJ0PR11MB5101.namprd11.prod.outlook.com (2603:10b6:a03:2dc::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7807.28; Mon, 29 Jul 2024 10:10:25 +0000 Received: from IA0PR11MB7864.namprd11.prod.outlook.com ([fe80::9333:15de:faa8:4cf9]) by IA0PR11MB7864.namprd11.prod.outlook.com ([fe80::9333:15de:faa8:4cf9%5]) with mapi id 15.20.7807.026; Mon, 29 Jul 2024 10:10:24 +0000 From: "Grzegorzek, Dominik" To: "mika.kuoppala@linux.intel.com" , "Brost, Matthew" CC: "intel-xe@lists.freedesktop.org" , "Patelczyk, Maciej" , "Manszewski, Christoph" Subject: Re: [PATCH 10/21] drm/xe/eudebug: Introduce per device attention scan worker Thread-Topic: [PATCH 10/21] drm/xe/eudebug: Introduce per device attention scan worker Thread-Index: AQHa32aU44IN8KTrpUaHq3J1LzFB6bIKBxwAgAN5I4A= Date: Mon, 29 Jul 2024 10:10:24 +0000 Message-ID: <943d772d71757ded944509ef111debf197c3ad22.camel@intel.com> References: <20240726140818.54304-1-mika.kuoppala@linux.intel.com> <20240726140818.54304-11-mika.kuoppala@linux.intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: IA0PR11MB7864:EE_|SJ0PR11MB5101:EE_ x-ms-office365-filtering-correlation-id: a073ceff-3153-4697-6b36-08dcafb6a9d6 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?enQ2OTVTb2VmcStrRERWZ0FIbXhGd3BuWU4xd1d2T1V3aVE2MnJyVUY5OW1V?= =?utf-8?B?K2lvUXBFMjFSUmxlOE5PVmZCckJiK3VjSlJENkp1eUhOMDJ6ajRuUWxTQ0tp?= =?utf-8?B?MXFvRFowUHhxODBtVVJ2TU9ZazMvQUxJVDYxQlgwWWpsRWFMd2NDbDJDVjBq?= =?utf-8?B?UElMOUlZTkRjSXNWNW1MYmhJR1MraGgvWXVGVzBWdzZkTFUzcWpRWXhZTkty?= =?utf-8?B?Skw4SW9hd2VsSlJ6WENvbk95Q1JjYUZYdHU0RGhHdDZxbkM0YkxLcXhEZnhG?= =?utf-8?B?N2NlQ0crVFRkV0w0OW1LaUxmb2xGRGFSTUdEOFBhL0s1SEI2Z0pSZlVUV0NH?= =?utf-8?B?ZlM5YUVVTUlabDFJWU9xZUdoN3crSTEvWExtQjRVdFg5dHF2T3I1TmRHTzNp?= =?utf-8?B?emZ6REZCTnhzeTVCZGZnaU1zUkM3bnd2NHNYbzdTbWFLQTJDalMwYTZ6ZHBN?= =?utf-8?B?R2k3bUVJYlhvN2dLSGNXQ1JuaFRpQ0FmVngwekJoTWtCNUlhcGs3eHZTdFpF?= =?utf-8?B?TlRrV0NubFY2TitrdEdjSU9PSnhYM0xvaVI3RklybzdvN3AyVDFQQXpIVDB5?= =?utf-8?B?K0pjb09NM0RCZCsrbWdQWFAreUhvL3lWK2xCaGpBV2RJSnIzRkFqc2xKbDZo?= =?utf-8?B?SHd4WG9BK0VPbGhWTjhRQnRZb0RlcmJYLzFsUkp6a1JUUGhERVl4UWVYRlBP?= =?utf-8?B?Q1p3Q3hOaXlCTXNHZ1l5Mm5FS3NlYUJYNVZ4ZllKc2JHVWdWbmtyN0ZBR3Mr?= =?utf-8?B?WEpoUlpNaFJkNkE4bmRVUHhXdlpJWEszcmgzY2paTFpXT3BsdEU3MkVzOENB?= =?utf-8?B?TlR6Nm04c2NzRC8xa2gyMDg4VklabXJUemxsVnZmTzlveDBVR3U4NGdCbW9u?= =?utf-8?B?TGY5WEJuNkdWSWlDZ1pGQzlSbHUvYXl0YzFlUFZ0azRiRXBNVHczc3Q3RHhz?= =?utf-8?B?WFM5V0tzWlRoWXVqVGNZMFF1eHN0bEZtNEFWbVhLZWRCTUdYWGpVcjQxZDdW?= =?utf-8?B?Qk9USjhVRnVmaGhUcUcvY0NjdGRvVHRUeU1tbUZCTjY1VTFnU1pLSEIzdFlm?= =?utf-8?B?SmYxMjVHeE9ucGVOZDErU09uaFlIeHdPVkQwc2t3c0tRRW9YMDV3TWlDWEoy?= =?utf-8?B?L250eWlZL3JkTVByVkM3WVJEenJiMVpCRnBjT1dRUGozNFRIdEY4dnJlQzNY?= =?utf-8?B?aFUvZU5LSE15QUFoQVhwUXIwUTFQbUhCcFVNOHZlQldHZEJsSTFJVTUwUXEr?= =?utf-8?B?ZmZpQWZ4NHVDYlBlK1hBa2hWOVlDbkZNSUg2bU9SeURHbjhJNnVrdXQ2UUxY?= =?utf-8?B?QW9MVG9MOFUyQktFcXFFM2lvU2QybE1kSzJCYVd5cXd3MDdIK3VUMEIzYVZl?= =?utf-8?B?UWZjdWZPRWFYZ0JCSmkwVEZjN1hwbVZJdnprUXkzaUJnWEs3aWhnOG5Pc0dO?= =?utf-8?B?dnMvS3VNeEZJU0MzUlJLTnpDdlI0WG81K1l6aWJnYWtqVEdCbHlvYjgyVUdt?= =?utf-8?B?QnN3OGFJMjA3dVBZZ01naDgxL1NCYjkycDBtbFhVS3RyRnBoKzBrMC9aYzZY?= =?utf-8?B?TzNZSENUbkhQYnYrMFo0M0tEdGEyUHlQZmo3dVdmYW9wdnI4RTA0dWlwVzlU?= =?utf-8?B?dGY5alZ1SG1jRTZsVHVWVTNYZ1J0WTNhVUVjdDVJRUJIa3ZId2hkL29RaEw1?= =?utf-8?B?V1VYSGkwQ0RIUmE0SmQzTzI0VW14NEd6QmdqSnNnYlQ5MmR4WWRIcnJIZXN4?= =?utf-8?B?dGtnY3ovbHRtNk9RYnZTWGcxK0ZPVCtXWlBVTy9xdGI0dlg4Zm9PQlVnWXdm?= =?utf-8?Q?IC2M/+XeaT88jG84rBLQT2+4SDZi2AzB+PhVw=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:IA0PR11MB7864.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dnA4WFBKNk56ZkRacFJRKzEzTk1Zb3F0WlhxZjMyOTMwQy8wSFZzbGNYbFVU?= =?utf-8?B?Q3Rwamd0ZXN5Znlwc3NMc2lRWkZ3VnJEVlFVVmtvSGl2UGJhVktCaFpsc29J?= =?utf-8?B?MnNTb1hEMWozQXZDc2tSRU4yR0NQMmN6anpUaWdnWVEzZ2lHSzY0Q1ZvT1RO?= =?utf-8?B?M3VHcjNVemxzMERmK2VDTjNXeXRmbCtoY2h3dlU0NGlLS1NmOEI4OXhCSWtX?= =?utf-8?B?S051dzJxY1diVXdncGFVZHh2eXJGWWVDejZpN3RMY0pCTEhrTnk0VFBudnhm?= =?utf-8?B?TU1hVS9va01ESWFNT2xZYnVHdy9hdHFQT0d2L1FWNCtUd1pVWis5TnZuU0Fq?= =?utf-8?B?ajRUaDZxZHpCNDRpVlV1R2o2OTA0bjFJbkRmLzZZbFdGRzhQdmkzcmx3eXVS?= =?utf-8?B?UndnQ1hxYUl0MDg3dldyaXVXTlgzbG9ZTU82bnJuakQ0UVp0d0NvRUFVMFF3?= =?utf-8?B?THAvaS9iNkRZdWdkc1hsZDFSNGlBbUpzVlp5R0NOSjBXQ01QNVJDbFJmWGlL?= =?utf-8?B?WnpONzBpQmliazZkaUJ0WlZRdnNRU3RHaXFMWWN3YjBXMWxibk52TEJTeGZ0?= =?utf-8?B?dDlFWGxYdFJ2amFCUndJb3JpdEdIRkE2a2dlbmFpWXJxWDJmbXZheFh1OExV?= =?utf-8?B?SGkxMERyU085S29oWDJTUVZxbVprdGMrR1RRSWVWRitJaUt6VHFKc0pUSm1w?= =?utf-8?B?dm5ES21CdDVIdlhvR1QyOGhITXlLZ2ZxNFpSUUcwZmRZRS9IWExiVmV1VjZk?= =?utf-8?B?RXNKcmhTd1dFbXZXOG1CMW12cUFxQy93Q0RraVJKRVE5QitXeTEvaXRjRkU5?= =?utf-8?B?SnBpa1NwNmJHdmsyK2xKTTNIeC9lT2JiY1NNaW5xMmF6SWlrY0ZPb2FaUG1G?= =?utf-8?B?bk5MeHJhNGtRdUZjQk1JUEVGZ1pJNm5GL09UMjBOejU3L1J5b0hyd3V6azY5?= =?utf-8?B?Rk5JRUJCUUMrdythZEhxeGtsTitRUXcrTjVFM0o4bUt1T0NNK1VSMHRQVXZZ?= =?utf-8?B?NFprd28wTTRiakNnTGdWQkFpYjFlb2ZHT1V3WWNhRXhNZjJwTXAyZXkxNGpu?= =?utf-8?B?a1VJd00rN1d5MmpJaWlWUDJYZFV5NGN1bFY3dm00K25NSE9JRmxvMFRBTTRU?= =?utf-8?B?aXBrSGhlMUZXd0dPTkZWdi9zVHRsaTN6VWw3QkVIaG1LQ0E4b3pmaXZENVI3?= =?utf-8?B?M2xVTWJRbHo5bGtLZDBZV0NXY2FmdmlFTUtLUmQ4c0NObUpWaWhCWjBacWZK?= =?utf-8?B?d2VrTER6YzZhMCtvTU0vT3NOYmhwZkgwNzlHWCtKMzJKN2hDVi9GWkRBK2Z2?= =?utf-8?B?aUhuR243VmJKU3FFVHEwRWVkQ25jSnY1WXhyc05GMlJobG5ycHRDSHZ4akQ3?= =?utf-8?B?Tkh4bGt5dEt3R20xRVhZYmZZTE94MjhKSnpXc001SnplajdNYStKdFI0bXpY?= =?utf-8?B?bUJCTGVjSXd2TU9OWGNBNnU4ajhCS0Q2MEQrUnFmbzBieGdpT1U2UWtNTnBU?= =?utf-8?B?NzRQdWFVUHFxM3orWG5hZzV4VWhKY1YvM3NMNk90ZmhpUVljK3dZbDNkM0RC?= =?utf-8?B?R2dUUHU2REpvODNSNlpFM2Q1bDhVWDdFZXBMYjZDdWhUTlZybTV4R1kzR1cw?= =?utf-8?B?Z045dk85amRhNGZPV1VQRFRUbk5Hd2RIZXVOMlVyWlVSaTZVa1VTbWx0OXNG?= =?utf-8?B?UEplQnBubkE3dGd3R2RLT29EK3hEdDBTSG9ONW8zSXIwZmcyUTcxdFNwTzRx?= =?utf-8?B?b3lCZVowQ1gycE4vRHJ0NXoweHRSR25Yd3phd0tLMGlnWm40dmVaWDhuNlI1?= =?utf-8?B?RWczMkR1cDJDNm52WEZTU3l1ZWttZG5kN2JOWHlPMzlHUm1hYWtmR3NNRXBJ?= =?utf-8?B?REpvNk5DTHB3NTg3QXA1Y3gyekN1VVl5T3ZtK3hrUGhNU3BoNjM2dmhjcWly?= =?utf-8?B?QU50V0tyMnEzVGtUWTJZZjBOVFg4NlV0dExUaVdtN1NpakN1YU52TVU1cjEr?= =?utf-8?B?THpPRm5YZFc1T0pOeGZJUjlQU1REUDVFYlEvdmtWbVppVzVDMWRBNzlWVTNi?= =?utf-8?B?QTliUVJPTjFrNWxWb0YvMnJQSTE2enYyell3TlN5Ukg5VDFQdm5ISkFVcHZu?= =?utf-8?B?ektKZHdidVRvNGdPR3VCeTdzZEVZRGo1TVUveXlkT2Z1c25XR0drQjVrcVcr?= =?utf-8?Q?v+3Lhs2w/FbL9H9HP1QXZpo=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: IA0PR11MB7864.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a073ceff-3153-4697-6b36-08dcafb6a9d6 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jul 2024 10:10:24.8010 (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: QAl3NEAFxupohyI8SrG3N+0mHHTB3NzVvDa71QhZ477KNryXRos8/p321pxzLuYDdvW5ne+YwwYLTo41aAKGhgFYAw+gclJ4kMfHEwf16dg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5101 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" L09uIFNhdCwgMjAyNC0wNy0yNyBhdCAwNTowOCArMDAwMCwgTWF0dGhldyBCcm9zdCB3cm90ZToN Cj4gT24gRnJpLCBKdWwgMjYsIDIwMjQgYXQgMDU6MDg6MDdQTSArMDMwMCwgTWlrYSBLdW9wcGFs YSB3cm90ZToNCj4gPiBGcm9tOiBEb21pbmlrIEdyemVnb3J6ZWsgPGRvbWluaWsuZ3J6ZWdvcnpl a0BpbnRlbC5jb20+DQo+ID4gDQo+ID4gU2NhbiBmb3IgRVUgZGVidWdnaW5nIGF0dGVudGlvbiBi aXRzIHBlcmlvZGljYWxseSB0byBkZXRlY3QgaWYgc29tZSBFVQ0KPiA+IHRocmVhZCBoYXMgZW50 ZXJlZCB0aGUgc3lzdGVtIHJvdXRpbmUgKFNJUCkgZHVlIHRvIEVVIHRocmVhZCBleGNlcHRpb24u DQo+ID4gDQo+ID4gTWFrZSB0aGUgc2Nhbm5pbmcgaW50ZXJ2YWwgMTAgdGltZXMgc2xvd2VyIHdo ZW4gdGhlcmUgaXMgbm8gZGVidWdnZXINCj4gPiBjb25uZWN0aW9uIG9wZW4uIFNlbmQgYXR0ZW50 aW9uIGV2ZW50IHdoZW5ldmVyIHdlIHNlZSBhdHRlbnRpb24gd2l0aA0KPiA+IGRlYnVnZ2VyIHBy ZXNlbmNlLiBJZiB0aGVyZSBpcyBubyBkZWJ1Z2dlciBjb25uZWN0aW9uIGFjdGl2ZSAtIHJlc2V0 Lg0KPiA+IA0KPiA+IEJhc2VkIG9uIHdvcmsgYnkgYXV0aG9ycyBhbmQgb3RoZXIgZm9sa3Mgd2hv IHdlcmUgcGFydCBvZiBhdHRlbnRpb25zIGluDQo+ID4gaTkxNS4NCj4gPiANCj4gPiAtIHYyIERv IG5vdCB2YWxpZGF0ZSBwb3RlbnRpYWxseSBhY3RpdmUgaHdlIGFnYWluc3QgZW5naW5lLT5od2Uu DQo+ID4gICBXaGVuZXZlciB0aGUgZW5naW5lIGhhcyB3aWR0aCA+IDEsIHRoaXMgZmllbGQgY29u dGFpbnMgb25seSB0aGUgZmlyc3QNCj4gPiAgIGh3ZSBvZiB0aGUgY2xhc3MuDQo+ID4gLSBzcXVh c2ggZHNzIHdhbGtpbmcgYW5kIHNlbWFwaG9yZSB0byBtdXRleA0KPiA+IC0gdjMgZXJyb3IgcGF0 aCBmaXggaW4geGVfc2VuZF9ndF9hdHRlbnRpb24gKENocmlzdG9waCkNCj4gPiAtIHY0IHJ1bmFs b25lIGFjdGl2ZSBmaXggKE1pa2EpDQo+ID4gLSB2NSBxLT5scmMgY2hhbmdlcyAoTWlrYSkNCj4g PiAtIHY2IFVzZSBDOTkgZmxleGlibGUgYXJyYXlzIChNYWNpZWosIGNoZWNrcGF0Y2gpDQo+ID4g ICAgICBmdW5jdGlvbiB3aXRoICdmb3JfZWFjaCcgaW4gbmFtZSAoTWFjaWVqLCBjaGVja3BhdGNo KQ0KPiA+IC0gdjcgbG9uZyBydW5uaW5nIGFjdGl2ZSBmaXggKERvbWluaWspDQo+ID4gLSB2OCBy ZXNvdXJjZSBoYW5kbGluZyBlcnJvcnMgcmViYXNlIChNaWthKQ0KPiA+IC0gdjkgZmluZCBvdXQg bHJjIGhhbmRsZXMgZmlyc3QgYmVmb3JlIHNlbmRpbmcgZXZlbnQgKE1pa2EpDQo+ID4gLSB2MTAg YWRqdXN0IHJ1bmFsb25lIHNoaWZ0IGFjY29yZGluZyB0byBodw0KPiA+IA0KPiA+IFNpZ25lZC1v ZmYtYnk6IERvbWluaWsgR3J6ZWdvcnplayA8ZG9taW5pay5ncnplZ29yemVrQGludGVsLmNvbT4N Cj4gPiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggTWFuc3pld3NraSA8Y2hyaXN0b3BoLm1hbnN6 ZXdza2lAaW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IE1hY2llaiBQYXRlbGN6eWsgPG1h Y2llai5wYXRlbGN6eWtAaW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IE1pa2EgS3VvcHBh bGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJz L2dwdS9kcm0veGUvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAxICsNCj4gPiAgZHJpdmVycy9n cHUvZHJtL3hlL3JlZ3MveGVfZW5naW5lX3JlZ3MuaCB8ICAgMyArDQo+ID4gIGRyaXZlcnMvZ3B1 L2RybS94ZS9yZWdzL3hlX2d0X3JlZ3MuaCAgICAgfCAgIDcgKw0KPiA+ICBkcml2ZXJzL2dwdS9k cm0veGUveGVfZGV2aWNlLmMgICAgICAgICAgIHwgICAyICsNCj4gPiAgZHJpdmVycy9ncHUvZHJt L3hlL3hlX2RldmljZV90eXBlcy5oICAgICB8ICAgMyArDQo+ID4gIGRyaXZlcnMvZ3B1L2RybS94 ZS94ZV9ldWRlYnVnLmMgICAgICAgICAgfCAzODkgKysrKysrKysrKysrKysrKysrKysrKy0NCj4g PiAgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2V1ZGVidWcuaCAgICAgICAgICB8ICAgMSArDQo+ID4g IGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ldWRlYnVnX3R5cGVzLmggICAgfCAgMzIgKysNCj4gPiAg ZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X2RlYnVnLmMgICAgICAgICB8IDE1MiArKysrKysrKysN Cj4gPiAgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X2RlYnVnLmggICAgICAgICB8ICAyMSArKw0K PiA+ICBpbmNsdWRlL3VhcGkvZHJtL3hlX2RybV9ldWRlYnVnLmggICAgICAgIHwgIDE1ICstDQo+ ID4gIDExIGZpbGVzIGNoYW5nZWQsIDYyNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0K PiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X2RlYnVnLmMN Cj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9kZWJ1Zy5o DQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS9NYWtlZmlsZSBiL2Ry aXZlcnMvZ3B1L2RybS94ZS9NYWtlZmlsZQ0KPiA+IGluZGV4IDA2YmFkYzVmOTlhZi4uYjdiNmIw NDdjMDJjIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS9NYWtlZmlsZQ0KPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS9NYWtlZmlsZQ0KPiA+IEBAIC00OSw2ICs0OSw3IEBA IHhlLXkgKz0geGVfYmIubyBcDQo+ID4gIAl4ZV9ndF9kZWJ1Z2ZzLm8gXA0KPiA+ICAJeGVfZ3Rf ZnJlcS5vIFwNCj4gPiAgCXhlX2d0X2lkbGUubyBcDQo+ID4gKwl4ZV9ndF9kZWJ1Zy5vIFwNCj4g PiAgCXhlX2d0X21jci5vIFwNCj4gPiAgCXhlX2d0X3BhZ2VmYXVsdC5vIFwNCj4gPiAgCXhlX2d0 X3N5c2ZzLm8gXA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUvcmVncy94ZV9l bmdpbmVfcmVncy5oIGIvZHJpdmVycy9ncHUvZHJtL3hlL3JlZ3MveGVfZW5naW5lX3JlZ3MuaA0K PiA+IGluZGV4IDc2NGMyNzA1OTlkMC4uYjlkNzEzYTIwNjFkIDEwMDY0NA0KPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS94ZS9yZWdzL3hlX2VuZ2luZV9yZWdzLmgNCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0veGUvcmVncy94ZV9lbmdpbmVfcmVncy5oDQo+ID4gQEAgLTEzMiw2ICsxMzIsOSBA QA0KPiA+ICAjZGVmaW5lIFJJTkdfRVhFQ0xJU1RfU1RBVFVTX0xPKGJhc2UpCQlYRV9SRUcoKGJh c2UpICsgMHgyMzQpDQo+ID4gICNkZWZpbmUgUklOR19FWEVDTElTVF9TVEFUVVNfSEkoYmFzZSkJ CVhFX1JFRygoYmFzZSkgKyAweDIzNCArIDQpDQo+ID4gIA0KPiA+ICsjZGVmaW5lIFJJTkdfQ1VS UkVOVF9MUkNBKGJhc2UpCQkJWEVfUkVHKChiYXNlKSArIDB4MjQwKQ0KPiA+ICsjZGVmaW5lICAg Q1VSUkVOVF9MUkNBX1ZBTElECQkJUkVHX0JJVCgwKQ0KPiA+ICsNCj4gPiAgI2RlZmluZSBSSU5H X0NPTlRFWFRfQ09OVFJPTChiYXNlKQkJWEVfUkVHKChiYXNlKSArIDB4MjQ0LCBYRV9SRUdfT1BU SU9OX01BU0tFRCkNCj4gPiAgI2RlZmluZQkgIENUWF9DVFJMX09BQ19DT05URVhUX0VOQUJMRQkJ UkVHX0JJVCg4KQ0KPiA+ICAjZGVmaW5lCSAgQ1RYX0NUUkxfUlVOX0FMT05FCQkJUkVHX0JJVCg3 KQ0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUvcmVncy94ZV9ndF9yZWdzLmgg Yi9kcml2ZXJzL2dwdS9kcm0veGUvcmVncy94ZV9ndF9yZWdzLmgNCj4gPiBpbmRleCA5NmE1OWE5 NmRkNGMuLjAzZTgzY2UzZTM1ZCAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUv cmVncy94ZV9ndF9yZWdzLmgNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUvcmVncy94ZV9n dF9yZWdzLmgNCj4gPiBAQCAtNDM3LDYgKzQzNyw4IEBADQo+ID4gICNkZWZpbmUgICBESVNBQkxF X0VDQwkJCQlSRUdfQklUKDUpDQo+ID4gICNkZWZpbmUgICBFTkFCTEVfUFJFRkVUQ0hfSU5UT19J QwkJUkVHX0JJVCgzKQ0KPiA+ICANCj4gPiArI2RlZmluZSBURF9BVFQoeCkJCQkJWEVfUkVHX01D UigweGU0NzAgKyAoeCkgKiA0KQ0KPiA+ICsNCj4gPiAgI2RlZmluZSBST1dfQ0hJQ0tFTjQJCQkJ WEVfUkVHX01DUigweGU0OGMsIFhFX1JFR19PUFRJT05fTUFTS0VEKQ0KPiA+ICAjZGVmaW5lICAg RElTQUJMRV9HUkZfQ0xFQVIJCQlSRUdfQklUKDEzKQ0KPiA+ICAjZGVmaW5lICAgWEVIUF9ESVNf QkJMX1NZU1BJUEUJCQlSRUdfQklUKDExKQ0KPiA+IEBAIC01MTYsNiArNTE4LDExIEBADQo+ID4g ICNkZWZpbmUgICBDQ1NfTU9ERV9DU0xJQ0UoY3NsaWNlLCBjY3MpIFwNCj4gPiAgCSgoY2NzKSA8 PCAoKGNzbGljZSkgKiBDQ1NfTU9ERV9DU0xJQ0VfV0lEVEgpKQ0KPiA+ICANCj4gPiArI2RlZmlu ZSBSQ1VfREVCVUdfMQkJCQlYRV9SRUcoMHgxNGEwMCkNCj4gPiArI2RlZmluZSAgIFJDVV9ERUJV R18xX0VOR0lORV9TVEFUVVMJCVJFR19HRU5NQVNLKDIsIDApDQo+ID4gKyNkZWZpbmUgICBSQ1Vf REVCVUdfMV9SVU5BTE9ORV9BQ1RJVkUJCVJFR19CSVQoMikNCj4gPiArI2RlZmluZSAgIFJDVV9E RUJVR18xX0NPTlRFWFRfQUNUSVZFCQlSRUdfQklUKDApDQo+ID4gKw0KPiA+ICAjZGVmaW5lIEZP UkNFV0FLRV9BQ0tfR1QJCQlYRV9SRUcoMHgxMzAwNDQpDQo+ID4gIA0KPiA+ICAvKiBBcHBsaWNh YmxlIGZvciBhbGwgRk9SQ0VXQUtFX0RPTUFJTiBhbmQgRk9SQ0VXQUtFX0FDS19ET01BSU4gcmVn cyAqLw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMgYi9k cml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMNCj4gPiBpbmRleCA5MGJiMGE4YjE4ODEuLmJh MWM4MDA4OTkwNiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNl LmMNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMNCj4gPiBAQCAtNzY4 LDYgKzc2OCw4IEBAIGludCB4ZV9kZXZpY2VfcHJvYmUoc3RydWN0IHhlX2RldmljZSAqeGUpDQo+ ID4gIA0KPiA+ICAJeGVfZGVidWdmc19yZWdpc3Rlcih4ZSk7DQo+ID4gIA0KPiA+ICsJeGVfZXVk ZWJ1Z19pbml0X2xhdGUoeGUpOw0KPiA+ICsNCj4gPiAgCXhlX2h3bW9uX3JlZ2lzdGVyKHhlKTsN Cj4gPiAgDQo+ID4gIAlmb3JfZWFjaF9ndChndCwgeGUsIGlkKQ0KPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0veGUv eGVfZGV2aWNlX3R5cGVzLmgNCj4gPiBpbmRleCA0ZGNmZDM5Y2I5MDkuLjNiMzNhZGQ1NzZiZSAx MDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmgNCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmgNCj4gPiBAQCAtNTE2 LDYgKzUxNiw5IEBAIHN0cnVjdCB4ZV9kZXZpY2Ugew0KPiA+ICANCj4gPiAgCQkvKiogQG9yZGVy ZWRfd3E6IHVzZWQgdG8gZGlzY292ZXJ5ICovDQo+ID4gIAkJc3RydWN0IHdvcmtxdWV1ZV9zdHJ1 Y3QgKm9yZGVyZWRfd3E7DQo+ID4gKw0KPiA+ICsJCS8qKiBAYXR0ZW50aW9uX3NjYW46IGF0dGVu dGlvbiBzY2FuIHdvcmtlciAqLw0KPiA+ICsJCXN0cnVjdCBkZWxheWVkX3dvcmsgYXR0ZW50aW9u X3NjYW47DQo+ID4gIAl9IGV1ZGVidWc7DQo+ID4gIA0KPiA+ICAJLyogcHJpdmF0ZTogKi8NCj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2V1ZGVidWcuYyBiL2RyaXZlcnMv Z3B1L2RybS94ZS94ZV9ldWRlYnVnLmMNCj4gPiBpbmRleCA5NjExYWNlZGVlZTkuLmMyZGUwMDFj YzMzYSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZXVkZWJ1Zy5jDQo+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2V1ZGVidWcuYw0KPiA+IEBAIC0xMSwxOSAr MTEsMjkgQEANCj4gPiAgDQo+ID4gICNpbmNsdWRlIDxkcm0vZHJtX21hbmFnZWQuaD4NCj4gPiAg DQo+ID4gLSNpbmNsdWRlICJyZWdzL3hlX2d0X3JlZ3MuaCINCj4gPiAgI2luY2x1ZGUgInJlZ3Mv eGVfZW5naW5lX3JlZ3MuaCINCj4gPiArI2luY2x1ZGUgInJlZ3MveGVfZ3RfcmVncy5oIg0KPiA+ ICAjaW5jbHVkZSAieGVfZGV2aWNlLmgiDQo+ID4gICNpbmNsdWRlICJ4ZV9hc3NlcnQuaCINCj4g PiAgI2luY2x1ZGUgInhlX21hY3Jvcy5oIg0KPiA+ICAjaW5jbHVkZSAieGVfZ3QuaCINCj4gPiAr I2luY2x1ZGUgInhlX2d0X2RlYnVnLmgiDQo+ID4gKyNpbmNsdWRlICJ4ZV9scmMuaCINCj4gPiAr I2luY2x1ZGUgInhlX2h3X2VuZ2luZS5oIg0KPiA+ICsjaW5jbHVkZSAieGVfZXhlY19xdWV1ZS5o Ig0KPiA+ICAjaW5jbHVkZSAieGVfZXVkZWJ1Z190eXBlcy5oIg0KPiA+ICAjaW5jbHVkZSAieGVf ZXVkZWJ1Zy5oIg0KPiA+ICAjaW5jbHVkZSAieGVfZXhlY19xdWV1ZV90eXBlcy5oIg0KPiA+ICsj aW5jbHVkZSAieGVfZ3VjX2V4ZWNfcXVldWVfdHlwZXMuaCINCj4gPiArI2luY2x1ZGUgInhlX2V4 ZWNsaXN0X3R5cGVzLmgiDQo+ID4gKyNpbmNsdWRlICJ4ZV9tbWlvLmgiDQo+ID4gICNpbmNsdWRl ICJ4ZV9tb2R1bGUuaCINCj4gPiArI2luY2x1ZGUgInhlX3BtLmgiDQo+ID4gICNpbmNsdWRlICJ4 ZV9ydHAuaCINCj4gPiArI2luY2x1ZGUgInhlX3NjaGVkX2pvYi5oIg0KPiA+ICAjaW5jbHVkZSAi eGVfdm0uaCINCj4gPiAgI2luY2x1ZGUgInhlX3dhLmgiDQo+ID4gKyNpbmNsdWRlICJ4ZV9mb3Jj ZV93YWtlLmgiDQo+ID4gIA0KPiA+ICAvKg0KPiA+ICAgKiBJZiB0aGVyZSBpcyBubyBkZXRlY3Rl ZCBldmVudCByZWFkIGJ5IHVzZXJzcGFjZSwgZHVyaW5nIHRoaXMgcGVyaW9kLCBhc3N1bWUNCj4g PiBAQCAtODQzLDYgKzg1MywzNzEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlv bnMgZm9wcyA9IHsNCj4gPiAgCS51bmxvY2tlZF9pb2N0bAk9IHhlX2V1ZGVidWdfaW9jdGwsDQo+ ID4gIH07DQo+ID4gIA0KPiA+ICtzdGF0aWMgYm9vbCBxdWV1ZV9oYXNfYWN0aXZlX2pvYihzdHJ1 Y3QgeGVfZXhlY19xdWV1ZSAqcSkNCj4gDQo+IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIGEgZ2Vu ZXJpYyBmdW5jdGlvbiBpbiB4ZV9leGVjX3F1ZXVlLmMuIFdlIHNlZW1seQ0KPiBhbHJlYWR5IGhh dmUgb25lIC0geGVfZXhlY19xdWV1ZV9pc19pZGxlLg0KPiANCj4gPiArew0KPiA+ICsNCj4gPiAr CXN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQ7DQo+ID4gKwlzdHJ1Y3QgZHJtX3NjaGVk X2pvYiAqZHJtX2pvYjsNCj4gPiArDQo+ID4gKwlpZiAoeGVfZGV2aWNlX3VjX2VuYWJsZWQoZ3Rf dG9feGUocS0+Z3QpKSkNCj4gDQo+IEdlbmVyYWwgY29tbWVudCwgd2UgbGlrZWx5IGRvbid0IHdh bnQgdG8gdGhlIEVVIGRlYnVnZ2VyIGVuYWJsZWQgdW5sZXNzDQo+IEd1QyBzdWJtaXNzaW9uIGlz IGVuYWJsZWQgYXMgdGhlIGV4ZWNsaXN0IGJhY2tlbmQgcmVhbGx5IGRvZXNuJ3Qgd29yay4gDQo+ IA0KPiA+ICsJCXNjaGVkID0gJnEtPmd1Yy0+c2NoZWQuYmFzZTsNCj4gPiArCWVsc2UNCj4gPiAr CQlzY2hlZCA9ICZxLT5leGVjbGlzdC0+c2NoZWQ7DQo+ID4gKw0KPiA+ICsJZHJtX2pvYiA9IGxp c3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmc2NoZWQtPnBlbmRpbmdfbGlzdCwgc3RydWN0IGRybV9z Y2hlZF9qb2IsIGxpc3QpOw0KPiANCj4gUmFuZG9tIG11c2luZyB0aGF0IGRvbid0IGFwcGx5IGFz IHdlIGhhdmUgeGVfZXhlY19xdWV1ZV9pc19pZGxlIGJ1dC4uLg0KPiANCj4gWW91IG5lZWQgYSBz Y2hlZHVsZXIgbG9jayBoZXJlIHdoaWNoIGlzIG1pc3NpbmcuIElmIHlvdSB3YW50ZWQgdG8gc2Vl DQo+IHRoZSBzY2hlZHVsZXIgcGVuZGluZyBsaXN0IHdhcyBub3QgZW1wdHksIHdlJ2QgY2FsbCBp bnRvIHRoZSBkcm0NCj4gc2NoZWR1bGVyIGxheWVyLg0KPiANCj4gVGhhdCBiZWluZyBzYWlkLCBJ IHRoaW5rIHRoZSBFVSBkZWJ1Z2dlciBvbmx5IHN1cHBvcnQgTFIgVk1zPyBJZiBzbywNCj4gdGhl biB0aGlzIGFsd2F5cyBnb2luZyB0byBiZSBlbXB0eS4NClVwIHVudGlsIG5vdywgd2Ugd2VyZSBu b3QgcmVxdWlyaW5nIGEgVk0gdG8gYmUgaW4gbHIgbW9kZSwgdGh1cyBJIHdhbnRlZCB0byBzdXBw b3J0IGJvdGggcGF0aHMuDQpIb3dldmVyLCB3ZSBkbyBkZXBlbmQgb24gTFIgbW9kZSwgYXMgam9i IHRpbWVvdXRzIHdvdWxkIG1ha2UgZGVidWdnaW5nIGVmZmVjdGl2ZWx5IGluZWZmZWN0aXZlLg0K VGhlcmVmb3JlLCB3ZSBzaG91bGQgYWRkIHRoaXMgY29uc3RyYWludC4NCg0KVGhhbmtzIGZvciB5 b3VyIGNvbW1lbnRzISBJIHdpbGwgcmV1c2UgeGVfZXhlY19xdWV1ZV9pc19pZGxlIGhlcmUgYXMg cHJvcG9zZWQsIGFuZCBJIHdpbGwgdHJ5IHRvDQpmb2xsb3cgeW91ciBoaW50cyB3aXRoIHJlc3Bl Y3QgdG8gbG9ja2luZyBhbmQgZm9yY2V3YWtlLg0KDQpSZWdhcmRzLA0KRG9taW5paw0KPiANCj4g PiArDQo+ID4gKwlpZiAoZHJtX2pvYikgew0KPiA+ICsJCXN0cnVjdCB4ZV9zY2hlZF9qb2IgKmpv YiA9IHRvX3hlX3NjaGVkX2pvYihkcm1fam9iKTsNCj4gPiArDQo+ID4gKwkJcmV0dXJuIHhlX3Nj aGVkX2pvYl9zdGFydGVkKGpvYikgJiYgIXhlX3NjaGVkX2pvYl9jb21wbGV0ZWQoam9iKTsNCj4g PiArCX0gZWxzZSBpZiAoeGVfZXhlY19xdWV1ZV9pc19scihxKSAmJg0KPiA+ICsJCSAgICh4ZV9s cmNfcmluZ19oZWFkKHEtPmxyY1swXSkgIT0geGVfbHJjX3JpbmdfdGFpbChxLT5scmNbMF0pKSkg ew0KPiA+ICsJCXJldHVybiB0cnVlOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiBmYWxz ZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBjdXJyZW50X2xyYyhzdHJ1Y3QgeGVf aHdfZW5naW5lICpod2UsIHUzMiAqbHJjX2h3KQ0KPiA+ICt7DQo+ID4gKwl1MzIgbHJjX3JlZzsN Cj4gPiArCWludCBlcnI7DQo+ID4gKw0KPiA+ICsJZXJyID0geGVfZm9yY2Vfd2FrZV9nZXQoZ3Rf dG9fZncoaHdlLT5ndCksIGh3ZS0+ZG9tYWluKTsNCj4gPiArCWlmIChlcnIpDQo+ID4gKwkJcmV0 dXJuIGVycjsNCj4gPiArDQo+ID4gKwlscmNfcmVnID0gaHdfZW5naW5lX21taW9fcmVhZDMyKGh3 ZSwgUklOR19DVVJSRU5UX0xSQ0EoMCkpOw0KPiA+ICsNCj4gPiArCXhlX2ZvcmNlX3dha2VfcHV0 KGd0X3RvX2Z3KGh3ZS0+Z3QpLCBod2UtPmRvbWFpbik7DQo+ID4gKw0KPiA+ICsJaWYgKCEobHJj X3JlZyAmIENVUlJFTlRfTFJDQV9WQUxJRCkpDQo+ID4gKwkJcmV0dXJuIC1FTk9FTlQ7DQo+ID4g Kw0KPiA+ICsJKmxyY19odyA9IGxyY19yZWcgJiBHRU5NQVNLKDMxLCAxMik7DQo+ID4gKw0KPiA+ ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgbWF0Y2hfZW5naW5l X2xyYyhzdHJ1Y3QgeGVfZXhlY19xdWV1ZSAqcSwgdTMyIGxyY19odykNCj4gPiArew0KPiA+ICsJ aW50IGk7DQo+ID4gKwl1MzIgbHJjX2dndHQ7DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8 IHEtPndpZHRoOyBpKyspIHsNCj4gPiArCQlscmNfZ2d0dCA9IGxvd2VyXzMyX2JpdHMoeGVfbHJj X2Rlc2NyaXB0b3IocS0+bHJjW2ldKSk7DQo+ID4gKwkJbHJjX2dndHQgJj0gR0VOTUFTSygzMSwg MTIpOw0KPiA+ICsJCWlmIChscmNfZ2d0dCA9PSBscmNfaHcpDQo+ID4gKwkJCXJldHVybiBpOw0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAtMTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3Rh dGljIHUzMiBlbmdpbmVfc3RhdHVzKGNvbnN0IHN0cnVjdCB4ZV9od19lbmdpbmUgKiBjb25zdCBo d2UsDQo+ID4gKwkJCSB1MzIgcmN1X2RlYnVnMSkNCj4gPiArew0KPiA+ICsJY29uc3QgYm9vbCB4 ZTEgPSBHUkFQSElDU19WRVIoZ3RfdG9feGUoaHdlLT5ndCkpIDwgMjA7DQo+ID4gKwl1bnNpZ25l ZCBpbnQgc2hpZnQ7DQo+ID4gKw0KPiA+ICsJaWYgKGh3ZS0+Y2xhc3MgPT0gWEVfRU5HSU5FX0NM QVNTX1JFTkRFUikgew0KPiA+ICsJCXNoaWZ0ID0gNzsNCj4gPiArCQlYRV9XQVJOX09OKGh3ZS0+ aW5zdGFuY2UgIT0gMCk7DQo+ID4gKwl9IGVsc2UgaWYgKGh3ZS0+Y2xhc3MgPT0gWEVfRU5HSU5F X0NMQVNTX0NPTVBVVEUpIHsNCj4gPiArCQlYRV9XQVJOX09OKGh3ZS0+aW5zdGFuY2UgPiAzKTsN Cj4gPiArDQo+ID4gKwkJaWYgKHhlMSkNCj4gPiArCQkJc2hpZnQgPSAxMCArIChod2UtPmluc3Rh bmNlICogMyk7DQo+ID4gKwkJZWxzZQ0KPiA+ICsJCQlzaGlmdCA9IDExICsgKGh3ZS0+aW5zdGFu Y2UgKiA0KTsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJWEVfV0FSTl9PTihod2UtPmNsYXNzKTsN Cj4gPiArCQlyZXR1cm4gMDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1cm4gKHJjdV9kZWJ1 ZzEgPj4gc2hpZnQpICYgUkNVX0RFQlVHXzFfRU5HSU5FX1NUQVRVUzsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIGJvb2wgZW5naW5lX3J1bmFsb25lX3NldChjb25zdCBzdHJ1Y3QgeGVfaHdf ZW5naW5lICogY29uc3QgaHdlLA0KPiA+ICsJCQkJICAgdTMyIHJjdV9kZWJ1ZzEpDQo+ID4gK3sN Cj4gPiArCXJldHVybiBlbmdpbmVfc3RhdHVzKGh3ZSwgcmN1X2RlYnVnMSkgJiBSQ1VfREVCVUdf MV9SVU5BTE9ORV9BQ1RJVkU7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBib29sIGVuZ2lu ZV9jb250ZXh0X3NldChjb25zdCBzdHJ1Y3QgeGVfaHdfZW5naW5lICogY29uc3QgaHdlLA0KPiA+ ICsJCQkgICAgICAgdTMyIHJjdV9kZWJ1ZzEpDQo+ID4gK3sNCj4gPiArCXJldHVybiBlbmdpbmVf c3RhdHVzKGh3ZSwgcmN1X2RlYnVnMSkgJiBSQ1VfREVCVUdfMV9DT05URVhUX0FDVElWRTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGJvb2wgZW5naW5lX2hhc19ydW5hbG9uZShjb25zdCBz dHJ1Y3QgeGVfaHdfZW5naW5lICogY29uc3QgaHdlKQ0KPiA+ICt7DQo+ID4gKwlyZXR1cm4gaHdl LT5jbGFzcyA9PSBYRV9FTkdJTkVfQ0xBU1NfUkVOREVSIHx8DQo+ID4gKwkJaHdlLT5jbGFzcyA9 PSBYRV9FTkdJTkVfQ0xBU1NfQ09NUFVURTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHN0 cnVjdCB4ZV9od19lbmdpbmUgKmdldF9ydW5hbG9uZV9hY3RpdmVfaHdfZW5naW5lKHN0cnVjdCB4 ZV9ndCAqZ3QpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCB4ZV9od19lbmdpbmUgKmh3ZSwgKmZpcnN0 ID0gTlVMTDsNCj4gPiArCXVuc2lnbmVkIGludCBudW1fYWN0aXZlLCBpZDsNCj4gPiArCXUzMiB2 YWw7DQo+ID4gKw0KPiA+ICsJaWYgKHhlX2ZvcmNlX3dha2VfZ2V0KGd0X3RvX2Z3KGd0KSwgWEVf RldfR1QpKSB7DQo+ID4gKwkJZHJtX2RiZygmZ3RfdG9feGUoZ3QpLT5kcm0sICJldWRiZzogcnVu YWxvbmUgZmFpbGVkIHRvIGdldCBmb3JjZSB3YWtlXG4iKTsNCj4gPiArCQlyZXR1cm4gTlVMTDsN Cj4gPiArCX0NCj4gPiArDQo+ID4gKwl2YWwgPSB4ZV9tbWlvX3JlYWQzMihndCwgUkNVX0RFQlVH XzEpOw0KPiA+ICsJeGVfZm9yY2Vfd2FrZV9wdXQoZ3RfdG9fZncoZ3QpLCBYRV9GV19HVCk7DQo+ ID4gKw0KPiA+ICsJZHJtX2RiZygmZ3RfdG9feGUoZ3QpLT5kcm0sICJldWRiZzogcnVuYWxvbmUg UkNVX0RFQlVHXzEgPSAweCUwOHhcbiIsIHZhbCk7DQo+ID4gKw0KPiA+ICsJbnVtX2FjdGl2ZSA9 IDA7DQo+ID4gKwlmb3JfZWFjaF9od19lbmdpbmUoaHdlLCBndCwgaWQpIHsNCj4gPiArCQlib29s IHJ1bmFsb25lLCBjdHg7DQo+ID4gKw0KPiA+ICsJCWlmICghZW5naW5lX2hhc19ydW5hbG9uZSho d2UpKQ0KPiA+ICsJCQljb250aW51ZTsNCj4gPiArDQo+ID4gKwkJcnVuYWxvbmUgPSBlbmdpbmVf cnVuYWxvbmVfc2V0KGh3ZSwgdmFsKTsNCj4gPiArCQljdHggPSBlbmdpbmVfY29udGV4dF9zZXQo aHdlLCB2YWwpOw0KPiA+ICsNCj4gPiArCQlkcm1fZGJnKCZndF90b194ZShndCktPmRybSwgImV1 ZGJnOiBlbmdpbmUgJXM6IHJ1bmFsb25lPSVzLCBjb250ZXh0PSVzIiwNCj4gPiArCQkJaHdlLT5u YW1lLCBydW5hbG9uZSA/ICJhY3RpdmUiIDogImluYWN0aXZlIiwNCj4gPiArCQkJY3R4ID8gImFj dGl2ZSIgOiAiaW5hY3RpdmUiKTsNCj4gPiArDQo+ID4gKwkJLyoNCj4gPiArCQkgKiBPbiBlYXJs aWVyIGdlbjEyIHRoZSBjb250ZXh0IHN0YXR1cyBzZWVtcyB0byBiZSBpZGxlIHdoZW4NCj4gPiAr CQkgKiBpdCBoYXMgcmFpc2VkIGF0dGVudGlvbi4gV2UgaGF2ZSB0byBvbWl0IHRoZSBhY3RpdmUg Yml0Lg0KPiA+ICsJCSAqLw0KPiA+ICsJCWlmIChJU19ER0ZYKGd0X3RvX3hlKGd0KSkpDQo+ID4g KwkJCWN0eCA9IHRydWU7DQo+ID4gKw0KPiA+ICsJCWlmIChydW5hbG9uZSAmJiBjdHgpIHsNCj4g PiArCQkJbnVtX2FjdGl2ZSsrOw0KPiA+ICsNCj4gPiArCQkJZHJtX2RiZygmZ3RfdG9feGUoZ3Qp LT5kcm0sICJldWRiZzogcnVuYWxvbmUgZW5naW5lICVzICVzIiwNCj4gPiArCQkJCWh3ZS0+bmFt ZSwgZmlyc3QgPyAic2VsZWN0ZWQiIDogImZvdW5kIik7DQo+ID4gKwkJCWlmICghZmlyc3QpDQo+ ID4gKwkJCQlmaXJzdCA9IGh3ZTsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYg KG51bV9hY3RpdmUgPiAxKQ0KPiA+ICsJCWRybV9lcnIoJmd0X3RvX3hlKGd0KS0+ZHJtLCAiZXVk Ymc6ICVkIHJ1bmFsb25lIGVuZ2luZXMgYWN0aXZlISIsDQo+ID4gKwkJCW51bV9hY3RpdmUpOw0K PiA+ICsNCj4gPiArCXJldHVybiBmaXJzdDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHN0 cnVjdCB4ZV9leGVjX3F1ZXVlICpydW5hbG9uZV9hY3RpdmVfcXVldWVfZ2V0KHN0cnVjdCB4ZV9n dCAqZ3QsIGludCAqbHJjX2lkeCkNCj4gPiArew0KPiA+ICsJc3RydWN0IHhlX2RldmljZSAqeGUg PSBndF90b194ZShndCk7DQo+ID4gKwlzdHJ1Y3QgeGVfZXhlY19xdWV1ZSAqcSwgKmZvdW5kID0g TlVMTDsNCj4gPiArCXN0cnVjdCB4ZV9od19lbmdpbmUgKmFjdGl2ZTsNCj4gPiArCXN0cnVjdCB4 ZV9maWxlICp4ZWYsICp0bXA7DQo+ID4gKwl1bnNpZ25lZCBsb25nIGk7DQo+ID4gKwlpbnQgaWR4 LCBlcnI7DQo+ID4gKwl1MzIgbHJjX2h3Ow0KPiA+ICsNCj4gPiArCWFjdGl2ZSA9IGdldF9ydW5h bG9uZV9hY3RpdmVfaHdfZW5naW5lKGd0KTsNCj4gPiArCWlmICghYWN0aXZlKSB7DQo+ID4gKwkJ ZHJtX2RiZygmZ3RfdG9feGUoZ3QpLT5kcm0sICJSdW5hbG9uZSBlbmdpbmUgbm90IGZvdW5kISIp Ow0KPiA+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9FTlQpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAr CWVyciA9IGN1cnJlbnRfbHJjKGFjdGl2ZSwgJmxyY19odyk7DQo+ID4gKwlpZiAoZXJyKQ0KPiA+ ICsJCXJldHVybiBFUlJfUFRSKGVycik7DQo+ID4gKw0KPiA+ICsJbXV0ZXhfbG9jaygmeGUtPmZp bGVzLmxvY2spOw0KPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHhlZiwgdG1wLCAmeGUt PmZpbGVzLmxpc3QsIGxpbmspIHsNCj4gPiArCQltdXRleF9sb2NrKCZ4ZWYtPmV4ZWNfcXVldWUu bG9jayk7DQo+ID4gKwkJeGFfZm9yX2VhY2goJnhlZi0+ZXhlY19xdWV1ZS54YSwgaSwgcSkgew0K PiANCj4gU2FtZSBjb21tZW50IGhlcmUgYXMgWzFdLiBEb24ndCBob2xkIHhlLT5maWxlcy5sb2Nr IG9yDQo+IHhlZi0+ZXhlY19xdWV1ZS5sb2NrIGZvciBhbnl0aGluZyBidXQgdGhlIGxvb2t1cC4g SG9sZGluZyBsb2NrcyBsb25nZXINCj4gdGhhbiBuZWVkZWQgY3JlYXRlcyB1bndhbnRlZCBsb2Nr IGRlcCBjaGFpbnMgd2hpY2ggY3JlYXRlcyBhbGwgc29ydHMgb2YNCj4gcHJvYmxlbXMuIFRoZSBv bmx5IHRpbWUgY2hhaW5zIHNob3VsZCBleGlzdCBpcyB3aGVuIHdlIGhhdmUgd2VsbCBkZWZpbmVk DQo+IGxvY2tpbmcgY2hhaW4gbGlrZSB3ZSBoYXZlIGZvciBhIFZNICh2bS0+bG9jayAtPiBkbWEt cmVzdiAtPiBub3RpZmllcg0KPiBsb2NrKS4NCj4gDQo+IFNvIHRoaXMgc2hvdWxkIGxvb2sgc29t ZXRoaW5nIGxpa2UgdGhpczoNCj4gDQo+IG11dGV4X2xvY2soJnhlLT5maWxlcy5sb2NrKTsNCj4g eGFfZm9yX2VhY2goLi4sIHhlZikgew0KPiAJeGVfZmlsZV9nZXQoeGVmKTsNCj4gCW11dGV4X3Vu bG9jaygmeGUtPmZpbGVzLmxvY2spOw0KPiANCj4gCW11dGV4X2xvY2soJnhlZi0+ZXhlY19xdWV1 ZS5sb2NrKTsNCj4gCXhhX2Zvcl9lYWNoKCZ4ZWYtPmV4ZWNfcXVldWUueGEsIGksIHEpIHsNCj4g CQl4ZV9leGVjX3F1ZXVlX2dldChxKTsNCj4gCQltdXRleF91bmxvY2soJnhlZi0+ZXhlY19xdWV1 ZS5sb2NrKTsNCj4gDQo+IAkJLyogRG8gc29tZXRoaW5nICovDQo+IAkNCj4gCQl4ZV9leGVjX3F1 ZXVlX3B1dChxKTsNCj4gCQltdXRleF9sb2NrKCZ4ZWYtPmV4ZWNfcXVldWUubG9jayk7DQo+IAl9 DQo+IAltdXRleF91bmxvY2soJnhlZi0+ZXhlY19xdWV1ZS5sb2NrKTsNCj4gCQ0KPiAJeGVfZmls ZV9wdXQoeGVmKTsNCj4gCW11dGV4X2xvY2soJnhlLT5maWxlcy5sb2NrKTsNCj4gfQ0KPiBtdXRl eF91bmxvY2soJnhlLT5maWxlcy5sb2NrKTsNCj4gDQo+IE5vdGUgeW91IHdpbGwgbmVlZCB0byBj aGFuZ2UgeGUtPmZpbGVzLmxpc3QgdG8gYW4geGFycmF5IHRvIG1ha2UgdGhpcw0KPiBzYWZlIHRv by4NCj4gDQo+IE1hdHQNCj4gDQo+IFsxXSBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5v cmcvcGF0Y2gvNjA2MDUyLz9zZXJpZXM9MTM2NTcyJnJldj0xDQo+IA0KPiA+ICsJCQlpZiAocS0+ Z3QgIT0gZ3QpDQo+ID4gKwkJCQljb250aW51ZTsNCj4gPiArDQo+ID4gKwkJCWlmIChxLT5jbGFz cyAhPSBhY3RpdmUtPmNsYXNzKQ0KPiA+ICsJCQkJY29udGludWU7DQo+ID4gKw0KPiA+ICsJCQlp ZiAoIXF1ZXVlX2hhc19hY3RpdmVfam9iKHEpKQ0KPiA+ICsJCQkJY29udGludWU7DQo+ID4gKw0K PiA+ICsJCQlpZHggPSBtYXRjaF9lbmdpbmVfbHJjKHEsIGxyY19odyk7DQo+ID4gKwkJCWlmIChp ZHggPCAwKQ0KPiA+ICsJCQkJY29udGludWU7DQo+ID4gKw0KPiA+ICsJCQl4ZV9leGVjX3F1ZXVl X2dldChxKTsNCj4gPiArCQkJZm91bmQgPSBxOw0KPiA+ICsNCj4gPiArCQkJaWYgKGxyY19pZHgp DQo+ID4gKwkJCQkqbHJjX2lkeCA9IGlkeDsNCj4gPiArDQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsJ CX0NCj4gPiArCQltdXRleF91bmxvY2soJnhlZi0+ZXhlY19xdWV1ZS5sb2NrKTsNCj4gPiArDQo+ ID4gKwkJaWYgKGZvdW5kKQ0KPiA+ICsJCQlicmVhazsNCj4gPiArCX0NCj4gPiArCW11dGV4X3Vu bG9jaygmeGUtPmZpbGVzLmxvY2spOw0KPiA+ICsNCj4gPiArCWlmICghZm91bmQpDQo+ID4gKwkJ cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7DQo+ID4gKw0KPiA+ICsJaWYgKFhFX1dBUk5fT04oY3Vy cmVudF9scmMoYWN0aXZlLCAmbHJjX2h3KSkgJiYNCj4gPiArCSAgICBYRV9XQVJOX09OKG1hdGNo X2VuZ2luZV9scmMoZm91bmQsIGxyY19odykgPCAwKSkgew0KPiA+ICsJCXhlX2V4ZWNfcXVldWVf cHV0KGZvdW5kKTsNCj4gPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTsNCj4gPiArCX0NCj4g PiArDQo+ID4gKwlyZXR1cm4gZm91bmQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQg c2VuZF9hdHRlbnRpb25fZXZlbnQoc3RydWN0IHhlX2V1ZGVidWcgKmQsIHN0cnVjdCB4ZV9leGVj X3F1ZXVlICpxLCBpbnQgbHJjX2lkeCkNCj4gPiArew0KPiA+ICsJc3RydWN0IHhlX2V1ZGVidWdf ZXZlbnRfZXVfYXR0ZW50aW9uICplYTsNCj4gPiArCXN0cnVjdCB4ZV9ldWRlYnVnX2V2ZW50ICpl dmVudDsNCj4gPiArCWludCBoX2MsIGhfcXVldWUsIGhfbHJjOw0KPiA+ICsJdTMyIHNpemUgPSB4 ZV9ndF9ldV9hdHRlbnRpb25fYml0bWFwX3NpemUocS0+Z3QpOw0KPiA+ICsJdTMyIHN6ID0gc3Ry dWN0X3NpemUoZWEsIGJpdG1hc2ssIHNpemUpOw0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4g KwlYRV9XQVJOX09OKGxyY19pZHggPCAwIHx8IGxyY19pZHggPj0gcS0+d2lkdGgpOw0KPiA+ICsN Cj4gPiArCWhfYyA9IGZpbmRfaGFuZGxlKGQtPnJlcywgWEVfRVVERUJVR19SRVNfVFlQRV9DTElF TlQsIHEtPnZtLT54ZWYpOw0KPiA+ICsJaWYgKGhfYyA8IDApDQo+ID4gKwkJcmV0dXJuIGhfYzsN Cj4gPiArDQo+ID4gKwloX3F1ZXVlID0gZmluZF9oYW5kbGUoZC0+cmVzLCBYRV9FVURFQlVHX1JF U19UWVBFX0VYRUNfUVVFVUUsIHEpOw0KPiA+ICsJaWYgKGhfcXVldWUgPCAwKQ0KPiA+ICsJCXJl dHVybiBoX3F1ZXVlOw0KPiA+ICsNCj4gPiArCWhfbHJjID0gZmluZF9oYW5kbGUoZC0+cmVzLCBY RV9FVURFQlVHX1JFU19UWVBFX0xSQywgcS0+bHJjW2xyY19pZHhdKTsNCj4gPiArCWlmIChoX2xy YyA8IDApDQo+ID4gKwkJcmV0dXJuIGhfbHJjOw0KPiA+ICsNCj4gPiArCWV2ZW50ID0gX194ZV9l dWRlYnVnX2NyZWF0ZV9ldmVudChkLCAwLCBEUk1fWEVfRVVERUJVR19FVkVOVF9FVV9BVFRFTlRJ T04sDQo+ID4gKwkJCQkJICBEUk1fWEVfRVVERUJVR19FVkVOVF9TVEFURV9DSEFOR0UsIHN6LCBH RlBfS0VSTkVMKTsNCj4gPiArDQo+ID4gKwlpZiAoIWV2ZW50KQ0KPiA+ICsJCXJldHVybiAtRU5P U1BDOw0KPiA+ICsNCj4gPiArCWVhID0gY2FzdF9ldmVudChlYSwgZXZlbnQpOw0KPiA+ICsJd3Jp dGVfbWVtYmVyKHN0cnVjdCBkcm1feGVfZXVkZWJ1Z19ldmVudF9ldV9hdHRlbnRpb24sIGVhLCBj bGllbnRfaGFuZGxlLCAodTY0KWhfYyk7DQo+ID4gKwl3cml0ZV9tZW1iZXIoc3RydWN0IGRybV94 ZV9ldWRlYnVnX2V2ZW50X2V1X2F0dGVudGlvbiwgZWEsIGV4ZWNfcXVldWVfaGFuZGxlLCAodTY0 KWhfcXVldWUpOw0KPiA+ICsJd3JpdGVfbWVtYmVyKHN0cnVjdCBkcm1feGVfZXVkZWJ1Z19ldmVu dF9ldV9hdHRlbnRpb24sIGVhLCBscmNfaGFuZGxlLCAodTY0KWhfbHJjKTsNCj4gPiArCXdyaXRl X21lbWJlcihzdHJ1Y3QgZHJtX3hlX2V1ZGVidWdfZXZlbnRfZXVfYXR0ZW50aW9uLCBlYSwgYml0 bWFza19zaXplLCBzaXplKTsNCj4gPiArDQo+ID4gKwltdXRleF9sb2NrKCZkLT5ldV9sb2NrKTsN Cj4gPiArCWV2ZW50LT5zZXFubyA9IGF0b21pY19sb25nX2luY19yZXR1cm4oJmQtPmV2ZW50cy5z ZXFubyk7DQo+ID4gKwlyZXQgPSB4ZV9ndF9ldV9hdHRlbnRpb25fYml0bWFwKHEtPmd0LCAmZWEt PmJpdG1hc2tbMF0sIGVhLT5iaXRtYXNrX3NpemUpOw0KPiA+ICsJbXV0ZXhfdW5sb2NrKCZkLT5l dV9sb2NrKTsNCj4gPiArDQo+ID4gKwlpZiAocmV0KQ0KPiA+ICsJCXJldHVybiByZXQ7DQo+ID4g Kw0KPiA+ICsJcmV0dXJuIHhlX2V1ZGVidWdfcXVldWVfZXZlbnQoZCwgZXZlbnQpOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICsNCj4gPiArc3RhdGljIGludCB4ZV9zZW5kX2d0X2F0dGVudGlvbihzdHJ1 Y3QgeGVfZ3QgKmd0KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgeGVfZXVkZWJ1ZyAqZDsNCj4gPiAr CXN0cnVjdCB4ZV9leGVjX3F1ZXVlICpxOw0KPiA+ICsJaW50IHJldCwgbHJjX2lkeDsNCj4gPiAr DQo+ID4gKwlpZiAobGlzdF9lbXB0eV9jYXJlZnVsKCZndF90b194ZShndCktPmV1ZGVidWcubGlz dCkpDQo+ID4gKwkJcmV0dXJuIC1FTk9UQ09OTjsNCj4gPiArDQo+ID4gKwlxID0gcnVuYWxvbmVf YWN0aXZlX3F1ZXVlX2dldChndCwgJmxyY19pZHgpOw0KPiA+ICsJaWYgKElTX0VSUihxKSkNCj4g PiArCQlyZXR1cm4gUFRSX0VSUihxKTsNCj4gPiArDQo+ID4gKwlkID0geGVfZXVkZWJ1Z19nZXQo cS0+dm0tPnhlZik7DQo+ID4gKwlpZiAoIWQpIHsNCj4gPiArCQlyZXQgPSAtRU5PVENPTk47DQo+ ID4gKwkJZ290byBlcnJfZXhlY19xdWV1ZV9wdXQ7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYg KCFjb21wbGV0aW9uX2RvbmUoJmQtPmRpc2NvdmVyeSkpIHsNCj4gPiArCQlldV9kYmcoZCwgImRp c2NvdmVyeSBub3QgeWV0IGRvbmVcbiIpOw0KPiA+ICsJCXJldCA9IC1FQlVTWTsNCj4gPiArCQln b3RvIGVycl9ldWRlYnVnX3B1dDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXQgPSBzZW5kX2F0 dGVudGlvbl9ldmVudChkLCBxLCBscmNfaWR4KTsNCj4gPiArCWlmIChyZXQpDQo+ID4gKwkJeGVf ZXVkZWJ1Z19kaXNjb25uZWN0KGQsIHJldCk7DQo+ID4gKw0KPiA+ICtlcnJfZXVkZWJ1Z19wdXQ6 DQo+ID4gKwl4ZV9ldWRlYnVnX3B1dChkKTsNCj4gPiArZXJyX2V4ZWNfcXVldWVfcHV0Og0KPiA+ ICsJeGVfZXhlY19xdWV1ZV9wdXQocSk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCB4ZV9ldWRlYnVnX2hhbmRsZV9ndF9hdHRlbnRpb24o c3RydWN0IHhlX2d0ICpndCkNCj4gPiArew0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwly ZXQgPSB4ZV9ndF9ldV90aHJlYWRzX25lZWRpbmdfYXR0ZW50aW9uKGd0KTsNCj4gPiArCWlmIChy ZXQgPD0gMCkNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArCXJldCA9IHhlX3NlbmRf Z3RfYXR0ZW50aW9uKGd0KTsNCj4gPiArDQo+ID4gKwkvKiBEaXNjb3ZlcnkgaW4gcHJvZ3Jlc3Ms IGZha2UgaXQgKi8NCj4gPiArCWlmIChyZXQgPT0gLUVCVVNZKQ0KPiA+ICsJCXJldHVybiAwOw0K PiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gKyNkZWZpbmUgWEVf RVVERUJVR19BVFRFTlRJT05fSU5URVJWQUwgMTAwDQo+ID4gK3N0YXRpYyB2b2lkIGF0dGVudGlv bl9zY2FuX2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCj4gPiArew0KPiA+ICsJc3RydWN0 IHhlX2RldmljZSAqeGUgPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCp4ZSksIGV1ZGVidWcu YXR0ZW50aW9uX3NjYW4ud29yayk7DQo+ID4gKwlsb25nIGRlbGF5ID0gbXNlY3NfdG9famlmZmll cyhYRV9FVURFQlVHX0FUVEVOVElPTl9JTlRFUlZBTCk7DQo+ID4gKwlzdHJ1Y3QgeGVfZ3QgKmd0 Ow0KPiA+ICsJdTggZ3RfaWQ7DQo+ID4gKw0KPiA+ICsJaWYgKGxpc3RfZW1wdHlfY2FyZWZ1bCgm eGUtPmV1ZGVidWcubGlzdCkpDQo+ID4gKwkJZGVsYXkgKj0gMTA7DQo+ID4gKw0KPiA+ICsJaWYg KGRlbGF5ID49IEhaKQ0KPiA+ICsJCWRlbGF5ID0gcm91bmRfamlmZmllc191cF9yZWxhdGl2ZShk ZWxheSk7DQo+ID4gKw0KPiA+ICsJaWYgKHBtX3J1bnRpbWVfYWN0aXZlKHhlLT5kcm0uZGV2KSkg ew0KPiA+ICsJCWZvcl9lYWNoX2d0KGd0LCB4ZSwgZ3RfaWQpIHsNCj4gPiArCQkJaW50IHJldDsN Cj4gPiArDQo+ID4gKwkJCXJldCA9IHhlX2V1ZGVidWdfaGFuZGxlX2d0X2F0dGVudGlvbihndCk7 DQo+ID4gKwkJCWlmIChyZXQpIHsNCj4gPiArCQkJCS8vIFRPRE86IGVycm9yIGNhcHR1cmUNCj4g PiArCQkJCWRybV9pbmZvKCZndF90b194ZShndCktPmRybSwNCj4gPiArCQkJCQkgImd0OiVkIHVu YWJsZSB0byBoYW5kbGUgZXUgYXR0ZW50aW9uIHJldD0lZFxuIiwNCj4gPiArCQkJCQkgZ3RfaWQs IHJldCk7DQo+ID4gKw0KPiA+ICsJCQkJeGVfZ3RfcmVzZXRfYXN5bmMoZ3QpOw0KPiA+ICsJCQl9 DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygm eGUtPmV1ZGVidWcuYXR0ZW50aW9uX3NjYW4sIGRlbGF5KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIHZvaWQgYXR0ZW50aW9uX3NjYW5fY2FuY2VsKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKQ0K PiA+ICt7DQo+ID4gKwljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJnhlLT5ldWRlYnVnLmF0dGVu dGlvbl9zY2FuKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgYXR0ZW50aW9uX3Nj YW5fZmx1c2goc3RydWN0IHhlX2RldmljZSAqeGUpDQo+ID4gK3sNCj4gPiArCW1vZF9kZWxheWVk X3dvcmsoc3lzdGVtX3dxLCAmeGUtPmV1ZGVidWcuYXR0ZW50aW9uX3NjYW4sIDApOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICBzdGF0aWMgdm9pZCBkaXNjb3Zlcnlfd29ya19mbihzdHJ1Y3Qgd29ya19z dHJ1Y3QgKndvcmspOw0KPiA+ICANCj4gPiAgc3RhdGljIGludA0KPiA+IEBAIC04NzcsNiArMTI1 Miw3IEBAIHhlX2V1ZGVidWdfY29ubmVjdChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwNCj4gPiAgDQo+ ID4gIAlrcmVmX2luaXQoJmQtPnJlZik7DQo+ID4gIAlzcGluX2xvY2tfaW5pdCgmZC0+Y29ubmVj dGlvbi5sb2NrKTsNCj4gPiArCW11dGV4X2luaXQoJmQtPmV1X2xvY2spOw0KPiA+ICAJaW5pdF93 YWl0cXVldWVfaGVhZCgmZC0+ZXZlbnRzLndyaXRlX2RvbmUpOw0KPiA+ICAJaW5pdF93YWl0cXVl dWVfaGVhZCgmZC0+ZXZlbnRzLnJlYWRfZG9uZSk7DQo+ID4gIAlpbml0X2NvbXBsZXRpb24oJmQt PmRpc2NvdmVyeSk7DQo+ID4gQEAgLTkwMyw2ICsxMjc5LDcgQEAgeGVfZXVkZWJ1Z19jb25uZWN0 KHN0cnVjdCB4ZV9kZXZpY2UgKnhlLA0KPiA+ICANCj4gPiAgCWtyZWZfZ2V0KCZkLT5yZWYpOw0K PiA+ICAJcXVldWVfd29yayh4ZS0+ZXVkZWJ1Zy5vcmRlcmVkX3dxLCAmZC0+ZGlzY292ZXJ5X3dv cmspOw0KPiA+ICsJYXR0ZW50aW9uX3NjYW5fZmx1c2goeGUpOw0KPiA+ICANCj4gPiAgCWV1X2Ri ZyhkLCAiY29ubmVjdGVkIHNlc3Npb24gJWxsZCIsIGQtPnNlc3Npb24pOw0KPiA+ICANCj4gPiBA QCAtOTc5LDEyICsxMzU2LDIyIEBAIHZvaWQgeGVfZXVkZWJ1Z19pbml0KHN0cnVjdCB4ZV9kZXZp Y2UgKnhlKQ0KPiA+ICB7DQo+ID4gIAlzcGluX2xvY2tfaW5pdCgmeGUtPmV1ZGVidWcubG9jayk7 DQo+ID4gIAlJTklUX0xJU1RfSEVBRCgmeGUtPmV1ZGVidWcubGlzdCk7DQo+ID4gKwlJTklUX0RF TEFZRURfV09SSygmeGUtPmV1ZGVidWcuYXR0ZW50aW9uX3NjYW4sIGF0dGVudGlvbl9zY2FuX2Zu KTsNCj4gPiAgDQo+ID4gIAl4ZS0+ZXVkZWJ1Zy5hdmFpbGFibGUgPSB0cnVlOw0KPiA+ICB9DQo+ ID4gIA0KPiA+ICt2b2lkIHhlX2V1ZGVidWdfaW5pdF9sYXRlKHN0cnVjdCB4ZV9kZXZpY2UgKnhl KQ0KPiA+ICt7DQo+ID4gKwlpZiAoIXhlLT5ldWRlYnVnLmF2YWlsYWJsZSkNCj4gPiArCQlyZXR1 cm47DQo+ID4gKw0KPiA+ICsJYXR0ZW50aW9uX3NjYW5fZmx1c2goeGUpOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICB2b2lkIHhlX2V1ZGVidWdfZmluaShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSkNCj4gPiAg ew0KPiA+ICsJYXR0ZW50aW9uX3NjYW5fY2FuY2VsKHhlKTsNCj4gPiAgCXhlX2Fzc2VydCh4ZSwg bGlzdF9lbXB0eV9jYXJlZnVsKCZ4ZS0+ZXVkZWJ1Zy5saXN0KSk7DQo+ID4gIH0NCj4gPiAgDQo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ldWRlYnVnLmggYi9kcml2ZXJz L2dwdS9kcm0veGUveGVfZXVkZWJ1Zy5oDQo+ID4gaW5kZXggYWM4OWEzZDFlZTFkLi4xZTIzM2M0 NjgzZDYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2V1ZGVidWcuaA0K PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ldWRlYnVnLmgNCj4gPiBAQCAtMTgsNiAr MTgsNyBAQCBpbnQgeGVfZXVkZWJ1Z19jb25uZWN0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsDQo+ID4gIAkJCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxlKTsNCj4gPiAgDQo+ID4gIHZv aWQgeGVfZXVkZWJ1Z19pbml0KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKTsNCj4gPiArdm9pZCB4ZV9l dWRlYnVnX2luaXRfbGF0ZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSk7DQo+ID4gIHZvaWQgeGVfZXVk ZWJ1Z19maW5pKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKTsNCj4gPiAgdm9pZCB4ZV9ldWRlYnVnX2lu aXRfaHdfZW5naW5lKHN0cnVjdCB4ZV9od19lbmdpbmUgKmh3ZSk7DQo+ID4gIA0KPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZXVkZWJ1Z190eXBlcy5oIGIvZHJpdmVycy9n cHUvZHJtL3hlL3hlX2V1ZGVidWdfdHlwZXMuaA0KPiA+IGluZGV4IDZlM2MyMzAyMzkzMy4uMTY2 NjdiNGRmZTQ1IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ldWRlYnVn X3R5cGVzLmgNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZXVkZWJ1Z190eXBlcy5o DQo+ID4gQEAgLTEwNSw2ICsxMDUsOSBAQCBzdHJ1Y3QgeGVfZXVkZWJ1ZyB7DQo+ID4gIAkvKiog QGRpc2NvdmVyeV93b3JrOiB3b3JrZXIgdG8gZGlzY292ZXIgcmVzb3VyY2VzIGZvciB0YXJnZXRf dGFzayAqLw0KPiA+ICAJc3RydWN0IHdvcmtfc3RydWN0IGRpc2NvdmVyeV93b3JrOw0KPiA+ICAN Cj4gPiArCS8qKiBldV9sb2NrOiBndWFyZHMgb3BlcmF0aW9ucyBvbiBldXMgKGV1IHRocmVhZCBj b250cm9sIGFuZCBhdHRlbnRpb24pICovDQo+ID4gKwlzdHJ1Y3QgbXV0ZXggZXVfbG9jazsNCj4g PiArDQo+ID4gIAkvKiogQGV2ZW50czoga2ZpZm8gcXVldWUgb2YgdG8tYmUtZGVsaXZlcmVkIGV2 ZW50cyAqLw0KPiA+ICAJc3RydWN0IHsNCj4gPiAgCQkvKiogQGxvY2s6IGd1YXJkcyBhY2Nlc3Mg dG8gZmlmbyAqLw0KPiA+IEBAIC0yMDIsNCArMjA1LDMzIEBAIHN0cnVjdCB4ZV9ldWRlYnVnX2V2 ZW50X2V4ZWNfcXVldWUgew0KPiA+ICAJdTY0IGxyY19oYW5kbGVbXTsNCj4gPiAgfTsNCj4gPiAg DQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgeGVfZXVkZWJ1Z19ldmVudF9ldV9hdHRlbnRpb24g LSBJbnRlcm5hbCBldmVudCBmb3IgRVUgYXR0ZW50aW9uDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3Qg eGVfZXVkZWJ1Z19ldmVudF9ldV9hdHRlbnRpb24gew0KPiA+ICsJLyoqIEBiYXNlOiBiYXNlIGV2 ZW50ICovDQo+ID4gKwlzdHJ1Y3QgeGVfZXVkZWJ1Z19ldmVudCBiYXNlOw0KPiA+ICsNCj4gPiAr CS8qKiBAY2xpZW50X2hhbmRsZTogY2xpZW50IGZvciB0aGUgYXR0ZW50aW9uICovDQo+ID4gKwl1 NjQgY2xpZW50X2hhbmRsZTsNCj4gPiArDQo+ID4gKwkvKiogQGV4ZWNfcXVldWVfaGFuZGxlOiBo YW5kbGUgb2YgZXhlY19xdWV1ZSB3aGljaCByYWlzZWQgYXR0ZW50aW9uICovDQo+ID4gKwl1NjQg ZXhlY19xdWV1ZV9oYW5kbGU7DQo+ID4gKw0KPiA+ICsJLyoqIEBscmNfaGFuZGxlOiBscmMgaGFu ZGxlIG9mIHRoZSB3b3JrbG9hZCB3aGljaCByYWlzZWQgYXR0ZW50aW9uICovDQo+ID4gKwl1NjQg bHJjX2hhbmRsZTsNCj4gPiArDQo+ID4gKwkvKiogQGZsYWdzOiBldSBhdHRlbnRpb24gZXZlbnQg ZmxhZ3MsIGN1cnJlbnRseSBNQlogKi8NCj4gPiArCXUzMiBmbGFnczsNCj4gPiArDQo+ID4gKwkv KiogQGJpdG1hc2tfc2l6ZTogc2l6ZSBvZiB0aGUgYml0bWFzaywgc3BlY2lmaWMgdG8gZGV2aWNl ICovDQo+ID4gKwl1MzIgYml0bWFza19zaXplOw0KPiA+ICsNCj4gPiArCS8qKg0KPiA+ICsJICog QGJpdG1hc2s6IHJlZmxlY3RzIHRocmVhZHMgY3VycmVudGx5IHNpZ25hbGxpbmcgYXR0ZW50aW9u LA0KPiA+ICsJICogc3RhcnRpbmcgZnJvbSBuYXR1cmFsIGhhcmR3YXJlIG9yZGVyIG9mIERTUz0w LCBldT0wDQo+ID4gKwkgKi8NCj4gPiArCXU4IGJpdG1hc2tbXTsNCj4gPiArfTsNCj4gPiArDQo+ ID4gICNlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3RfZGVi dWcuYyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9kZWJ1Zy5jDQo+ID4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjA0ZDJkNDNjZTI0OQ0KPiA+IC0tLSAv ZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3RfZGVidWcuYw0KPiA+ IEBAIC0wLDAgKzEsMTUyIEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQN Cj4gPiArLyoNCj4gPiArICogQ29weXJpZ2h0IMKpIDIwMjMgSW50ZWwgQ29ycG9yYXRpb24NCj4g PiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAicmVncy94ZV9ndF9yZWdzLmgiDQo+ID4gKyNp bmNsdWRlICJ4ZV9kZXZpY2UuaCINCj4gPiArI2luY2x1ZGUgInhlX2ZvcmNlX3dha2UuaCINCj4g PiArI2luY2x1ZGUgInhlX2d0LmgiDQo+ID4gKyNpbmNsdWRlICJ4ZV9ndF90b3BvbG9neS5oIg0K PiA+ICsjaW5jbHVkZSAieGVfZ3RfZGVidWcuaCINCj4gPiArI2luY2x1ZGUgInhlX2d0X21jci5o Ig0KPiA+ICsjaW5jbHVkZSAieGVfcG0uaCINCj4gPiArI2luY2x1ZGUgInhlX21hY3Jvcy5oIg0K PiA+ICsNCj4gPiArc3RhdGljIGludCB4ZV9ndF9mb3JlYWNoX2Rzc19ncm91cF9pbnN0YW5jZShz dHJ1Y3QgeGVfZ3QgKmd0LA0KPiA+ICsJCQkJCSAgICBpbnQgKCpmbikoc3RydWN0IHhlX2d0ICpn dCwNCj4gPiArCQkJCQkJICAgICAgdm9pZCAqZGF0YSwNCj4gPiArCQkJCQkJICAgICAgdTE2IGdy b3VwLA0KPiA+ICsJCQkJCQkgICAgICB1MTYgaW5zdGFuY2UpLA0KPiA+ICsJCQkJCSAgICB2b2lk ICpkYXRhKQ0KPiA+ICt7DQo+ID4gKwljb25zdCBlbnVtIHhlX2ZvcmNlX3dha2VfZG9tYWlucyBm d19kb21haW5zID0gWEVfRldfR1QgfCBYRV9GV19SRU5ERVI7DQo+ID4gKwl1bnNpZ25lZCBpbnQg ZHNzOw0KPiA+ICsJdTE2IGdyb3VwLCBpbnN0YW5jZTsNCj4gPiArCWludCByZXQ7DQo+ID4gKw0K PiA+ICsJeGVfcG1fcnVudGltZV9nZXQoZ3RfdG9feGUoZ3QpKTsNCj4gPiArCXJldCA9IHhlX2Zv cmNlX3dha2VfZ2V0KGd0X3RvX2Z3KGd0KSwgZndfZG9tYWlucyk7DQo+ID4gKwlpZiAocmV0KQ0K PiA+ICsJCWdvdG8gcG1fcnVudGltZV9wdXQ7DQo+ID4gKw0KPiA+ICsJZm9yX2VhY2hfZHNzX3N0 ZWVyaW5nKGRzcywgZ3QsIGdyb3VwLCBpbnN0YW5jZSkgew0KPiA+ICsJCXJldCA9IGZuKGd0LCBk YXRhLCBncm91cCwgaW5zdGFuY2UpOw0KPiA+ICsJCWlmIChyZXQpDQo+ID4gKwkJCWJyZWFrOw0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCXhlX2ZvcmNlX3dha2VfcHV0KGd0X3RvX2Z3KGd0KSwgZndf ZG9tYWlucyk7DQo+ID4gK3BtX3J1bnRpbWVfcHV0Og0KPiA+ICsJeGVfcG1fcnVudGltZV9wdXQo Z3RfdG9feGUoZ3QpKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgaW50IHJlYWRfZmlyc3RfYXR0ZW50aW9uX21jcihzdHJ1Y3QgeGVfZ3QgKmd0 LCB2b2lkICpkYXRhLA0KPiA+ICsJCQkJICAgIHUxNiBncm91cCwgdTE2IGluc3RhbmNlKQ0KPiA+ ICt7DQo+ID4gKwl1bnNpZ25lZCBpbnQgcm93Ow0KPiA+ICsNCj4gPiArCWZvciAocm93ID0gMDsg cm93IDwgMjsgcm93KyspIHsNCj4gPiArCQl1MzIgdmFsOw0KPiA+ICsNCj4gPiArCQl2YWwgPSB4 ZV9ndF9tY3JfdW5pY2FzdF9yZWFkKGd0LCBURF9BVFQocm93KSwgZ3JvdXAsIGluc3RhbmNlKTsN Cj4gPiArDQo+ID4gKwkJaWYgKHZhbCkNCj4gPiArCQkJcmV0dXJuIDE7DQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKyNkZWZpbmUgTUFYX0VVU19Q RVJfUk9XIDR1DQo+ID4gKyNkZWZpbmUgTUFYX1RIUkVBRFMgOHUNCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgKiB4ZV9ndF9ldV9hdHRlbnRpb25fYml0bWFwX3NpemUgLSBxdWVyeSBzaXplIG9mIHRo ZSBhdHRlbnRpb24gYml0bWFzaw0KPiA+ICsgKg0KPiA+ICsgKiBAZ3Q6IHBvaW50ZXIgdG8gc3Ry dWN0IHhlX2d0DQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogc2l6ZSBpbiBieXRlcy4NCj4gPiAr ICovDQo+ID4gK2ludCB4ZV9ndF9ldV9hdHRlbnRpb25fYml0bWFwX3NpemUoc3RydWN0IHhlX2d0 ICpndCkNCj4gPiArew0KPiA+ICsJeGVfZHNzX21hc2tfdCBkc3NfbWFzazsNCj4gPiArDQo+ID4g KwliaXRtYXBfb3IoZHNzX21hc2ssIGd0LT5mdXNlX3RvcG8uY19kc3NfbWFzaywNCj4gPiArCQkg IGd0LT5mdXNlX3RvcG8uZ19kc3NfbWFzaywgWEVfTUFYX0RTU19GVVNFX0JJVFMpOw0KPiA+ICsN Cj4gPiArCXJldHVybiAgYml0bWFwX3dlaWdodChkc3NfbWFzaywgWEVfTUFYX0RTU19GVVNFX0JJ VFMpICoNCj4gPiArCQlURF9FVV9BVFRFTlRJT05fTUFYX1JPV1MgKiBNQVhfVEhSRUFEUyAqDQo+ ID4gKwkJTUFYX0VVU19QRVJfUk9XIC8gODsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RydWN0IGF0 dG5fcmVhZF9pdGVyIHsNCj4gPiArCXN0cnVjdCB4ZV9ndCAqZ3Q7DQo+ID4gKwl1bnNpZ25lZCBp bnQgaTsNCj4gPiArCXVuc2lnbmVkIGludCBzaXplOw0KPiA+ICsJdTggKmJpdHM7DQo+ID4gK307 DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHJlYWRfZXVfYXR0ZW50aW9uc19tY3Ioc3RydWN0IHhl X2d0ICpndCwgdm9pZCAqZGF0YSwNCj4gPiArCQkJCSAgdTE2IGdyb3VwLCB1MTYgaW5zdGFuY2Up DQo+ID4gK3sNCj4gPiArCXN0cnVjdCBhdHRuX3JlYWRfaXRlciAqIGNvbnN0IGl0ZXIgPSBkYXRh Ow0KPiA+ICsJdW5zaWduZWQgaW50IHJvdzsNCj4gPiArDQo+ID4gKwlmb3IgKHJvdyA9IDA7IHJv dyA8IFREX0VVX0FUVEVOVElPTl9NQVhfUk9XUzsgcm93KyspIHsNCj4gPiArCQl1MzIgdmFsOw0K PiA+ICsNCj4gPiArCQlpZiAoaXRlci0+aSA+PSBpdGVyLT5zaXplKQ0KPiA+ICsJCQlyZXR1cm4g MDsNCj4gPiArDQo+ID4gKwkJWEVfV0FSTl9PTihpdGVyLT5pICsgc2l6ZW9mKHZhbCkgPiB4ZV9n dF9ldV9hdHRlbnRpb25fYml0bWFwX3NpemUoZ3QpKTsNCj4gPiArDQo+ID4gKwkJdmFsID0geGVf Z3RfbWNyX3VuaWNhc3RfcmVhZChndCwgVERfQVRUKHJvdyksIGdyb3VwLCBpbnN0YW5jZSk7DQo+ ID4gKw0KPiA+ICsNCj4gPiArCQltZW1jcHkoJml0ZXItPmJpdHNbaXRlci0+aV0sICZ2YWwsIHNp emVvZih2YWwpKTsNCj4gPiArCQlpdGVyLT5pICs9IHNpemVvZih2YWwpOw0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogeGVf Z3RfZXVfYXR0ZW50aW9uX2JpdG1hcCAtIHF1ZXJ5IGhvc3QgYXR0ZW50aW9uDQo+ID4gKyAqDQo+ ID4gKyAqIEBndDogcG9pbnRlciB0byBzdHJ1Y3QgeGVfZ3QNCj4gPiArICoNCj4gPiArICogUmV0 dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG90aGVyd2lzZS4NCj4gPiArICovDQo+ID4gK2lu dCB4ZV9ndF9ldV9hdHRlbnRpb25fYml0bWFwKHN0cnVjdCB4ZV9ndCAqZ3QsIHU4ICpiaXRzLA0K PiA+ICsJCQkgICAgICB1bnNpZ25lZCBpbnQgYml0bWFwX3NpemUpDQo+ID4gK3sNCj4gPiArCXN0 cnVjdCBhdHRuX3JlYWRfaXRlciBpdGVyID0gew0KPiA+ICsJCS5ndCA9IGd0LA0KPiA+ICsJCS5p ID0gMCwNCj4gPiArCQkuc2l6ZSA9IGJpdG1hcF9zaXplLA0KPiA+ICsJCS5iaXRzID0gYml0cw0K PiA+ICsJfTsNCj4gPiArDQo+ID4gKwlyZXR1cm4geGVfZ3RfZm9yZWFjaF9kc3NfZ3JvdXBfaW5z dGFuY2UoZ3QsIHJlYWRfZXVfYXR0ZW50aW9uc19tY3IsICZpdGVyKTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAqIHhlX2d0X2V1X3RocmVhZHNfbmVlZGluZ19hdHRlbnRpb24gLSBR dWVyeSBob3N0IGF0dGVudGlvbg0KPiA+ICsgKg0KPiA+ICsgKiBAZ3Q6IHBvaW50ZXIgdG8gc3Ry dWN0IHhlX2d0DQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogMSBpZiB0aHJlYWRzIHdhaXRpbmcg aG9zdCBhdHRlbnRpb24sIDAgb3RoZXJ3aXNlLg0KPiA+ICsgKi8NCj4gPiAraW50IHhlX2d0X2V1 X3RocmVhZHNfbmVlZGluZ19hdHRlbnRpb24oc3RydWN0IHhlX2d0ICpndCkNCj4gPiArew0KPiA+ ICsJaW50IGVycjsNCj4gPiArDQo+ID4gKwllcnIgPSB4ZV9ndF9mb3JlYWNoX2Rzc19ncm91cF9p bnN0YW5jZShndCwgcmVhZF9maXJzdF9hdHRlbnRpb25fbWNyLCBOVUxMKTsNCj4gPiArDQo+ID4g KwlYRV9XQVJOX09OKGVyciA8IDApOw0KPiA+ICsNCj4gPiArCXJldHVybiBlcnIgPCAwID8gMCA6 IGVycjsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3Rf ZGVidWcuaCBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9kZWJ1Zy5oDQo+ID4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjNmMTNkYmIxN2E1Zg0KPiA+IC0t LSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3RfZGVidWcuaA0K PiA+IEBAIC0wLDAgKzEsMjEgQEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1J VCAqLw0KPiA+ICsvKg0KPiA+ICsgKiBDb3B5cmlnaHQgwqkgMjAyMyBJbnRlbCBDb3Jwb3JhdGlv bg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX19YRV9HVF9ERUJVR18NCj4gPiArI2Rl ZmluZSBfX1hFX0dUX0RFQlVHXw0KPiA+ICsNCj4gPiArI2RlZmluZSBURF9FVV9BVFRFTlRJT05f TUFYX1JPV1MgMnUNCj4gPiArDQo+ID4gKyNpbmNsdWRlICJ4ZV9ndF90eXBlcy5oIg0KPiA+ICsN Cj4gPiArI2RlZmluZSBYRV9HVF9BVFRFTlRJT05fVElNRU9VVF9NUyAxMDANCj4gPiArDQo+ID4g K2ludCB4ZV9ndF9ldV90aHJlYWRzX25lZWRpbmdfYXR0ZW50aW9uKHN0cnVjdCB4ZV9ndCAqZ3Qp Ow0KPiA+ICsNCj4gPiAraW50IHhlX2d0X2V1X2F0dGVudGlvbl9iaXRtYXBfc2l6ZShzdHJ1Y3Qg eGVfZ3QgKmd0KTsNCj4gPiAraW50IHhlX2d0X2V1X2F0dGVudGlvbl9iaXRtYXAoc3RydWN0IHhl X2d0ICpndCwgdTggKmJpdHMsDQo+ID4gKwkJCSAgICAgIHVuc2lnbmVkIGludCBiaXRtYXBfc2l6 ZSk7DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2Ry bS94ZV9kcm1fZXVkZWJ1Zy5oIGIvaW5jbHVkZS91YXBpL2RybS94ZV9kcm1fZXVkZWJ1Zy5oDQo+ ID4gaW5kZXggMjVkZGRiOGIyMmY0Li40NTMyNjlhYzgzMDcgMTAwNjQ0DQo+ID4gLS0tIGEvaW5j bHVkZS91YXBpL2RybS94ZV9kcm1fZXVkZWJ1Zy5oDQo+ID4gKysrIGIvaW5jbHVkZS91YXBpL2Ry bS94ZV9kcm1fZXVkZWJ1Zy5oDQo+ID4gQEAgLTI3LDEzICsyNywxNSBAQCBzdHJ1Y3QgZHJtX3hl X2V1ZGVidWdfZXZlbnQgew0KPiA+ICAjZGVmaW5lIERSTV9YRV9FVURFQlVHX0VWRU5UX09QRU4J CTINCj4gPiAgI2RlZmluZSBEUk1fWEVfRVVERUJVR19FVkVOVF9WTQkJCTMNCj4gPiAgI2RlZmlu ZSBEUk1fWEVfRVVERUJVR19FVkVOVF9FWEVDX1FVRVVFCQk0DQo+ID4gLSNkZWZpbmUgRFJNX1hF X0VVREVCVUdfRVZFTlRfTUFYX0VWRU5UCQlEUk1fWEVfRVVERUJVR19FVkVOVF9FWEVDX1FVRVVF DQo+ID4gKyNkZWZpbmUgRFJNX1hFX0VVREVCVUdfRVZFTlRfRVVfQVRURU5USU9OCTUNCj4gPiAr I2RlZmluZSBEUk1fWEVfRVVERUJVR19FVkVOVF9NQVhfRVZFTlQJCURSTV9YRV9FVURFQlVHX0VW RU5UX0VVX0FUVEVOVElPTg0KPiA+ICANCj4gPiAgCV9fdTE2IGZsYWdzOw0KPiA+ICAjZGVmaW5l IERSTV9YRV9FVURFQlVHX0VWRU5UX0NSRUFURQkJKDEgPDwgMCkNCj4gPiAgI2RlZmluZSBEUk1f WEVfRVVERUJVR19FVkVOVF9ERVNUUk9ZCQkoMSA8PCAxKQ0KPiA+ICAjZGVmaW5lIERSTV9YRV9F VURFQlVHX0VWRU5UX1NUQVRFX0NIQU5HRQkoMSA8PCAyKQ0KPiA+ICAjZGVmaW5lIERSTV9YRV9F VURFQlVHX0VWRU5UX05FRURfQUNLCQkoMSA8PCAzKQ0KPiA+ICsNCj4gPiAgCV9fdTY0IHNlcW5v Ow0KPiA+ICAJX191NjQgcmVzZXJ2ZWQ7DQo+ID4gIH07DQo+ID4gQEAgLTYyLDYgKzY0LDE3IEBA IHN0cnVjdCBkcm1feGVfZXVkZWJ1Z19ldmVudF9leGVjX3F1ZXVlIHsNCj4gPiAgCV9fdTY0IGxy Y19oYW5kbGVbXTsNCj4gPiAgfTsNCj4gPiAgDQo+ID4gK3N0cnVjdCBkcm1feGVfZXVkZWJ1Z19l dmVudF9ldV9hdHRlbnRpb24gew0KPiA+ICsJc3RydWN0IGRybV94ZV9ldWRlYnVnX2V2ZW50IGJh c2U7DQo+ID4gKw0KPiA+ICsJX191NjQgY2xpZW50X2hhbmRsZTsNCj4gPiArCV9fdTY0IGV4ZWNf cXVldWVfaGFuZGxlOw0KPiA+ICsJX191NjQgbHJjX2hhbmRsZTsNCj4gPiArCV9fdTMyIGZsYWdz Ow0KPiA+ICsJX191MzIgYml0bWFza19zaXplOw0KPiA+ICsJX191OCBiaXRtYXNrW107DQo+ID4g K307DQo+ID4gKw0KPiA+ICAjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykNCj4gPiAgfQ0KPiA+ICAj ZW5kaWYNCj4gPiAtLSANCj4gPiAyLjM0LjENCj4gPiANCg0K