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 D8745CA5FA7 for ; Tue, 29 Sep 2026 22:05:53 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 40E4410E547; Tue, 29 Sep 2026 22:05:53 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="KGDDYvZv"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id C756310E547 for ; Tue, 29 Sep 2026 22:05:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1790719552; x=1822255552; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=bkbj9VnIlj7Q8lPZtLQzQGH5YlyK0b/qZwiim3luCIg=; b=KGDDYvZvLMSQLXm3Fz+e5MCcNpnYRfhNdGu+nsC19IhYoVjIu5/98Rso 8Fjyk2GEPBSZfy/t9IugGgLnmcCKN/0LDRrrVYuYWdsFGgPgfDBSy4JKa LC06+RB253i/IkcKiKgzAXfoiAiaMPfGbgHKDV9fcqPro3BUU6qGQDqgU oJCLp/4CQMpezsV+6nHaOjggVtUXm3H5QE2mqLORb5D6zAFA9cuwcqKiX j7Zdu5R97ZBGYRTd+qMWtDAMVNeYGveJqBkmpZr5n66T0pxtC3VZPRR+V l3WBVi5a5yU7E5AHiDO7io0VltIWQoGICA16yyRFF6p8T/hBQrvrWj60T w==; X-CSE-ConnectionGUID: 0vaauLnDQhSWA+Gz9rz0Xg== X-CSE-MsgGUID: WxN3FBQ8Soqws6ZoXxs8SA== X-IronPort-AV: E=McAfee;i="6800,10657,11920"; a="94163610" X-IronPort-AV: E=Sophos;i="6.27,130,1787036400"; d="scan'208";a="94163610" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Sep 2026 15:05:51 -0700 X-CSE-ConnectionGUID: i0ETnwiWS2SjPGTg7pijXg== X-CSE-MsgGUID: +J8QQRqTQ1utNg6dvMZu5A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.27,130,1787036400"; d="scan'208";a="283585871" Received: from fmsmsx901.amr.corp.intel.com ([10.18.126.90]) by fmviesa005.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Sep 2026 15:05:51 -0700 Received: from FMSMSX902.amr.corp.intel.com (10.18.126.91) by fmsmsx901.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Tue, 29 Sep 2026 15:05:50 -0700 Received: from fmsedg901.ED.cps.intel.com (10.1.192.143) by FMSMSX902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46 via Frontend Transport; Tue, 29 Sep 2026 15:05:50 -0700 Received: from BN1PR04CU002.outbound.protection.outlook.com (52.101.56.40) by edgegateway.intel.com (192.55.55.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Tue, 29 Sep 2026 15:05:50 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PtNjEtcx23Nasjku5pcAylHQGA1HIMZh9dC/wet5T3r+WIjR3LFR0+SlkrVRnEGk7EHALD1cB9trkVWTJjpRQdoVqyApSQzmfM+1jPvR9A18nIzT5iXKusoO6bdDWuWjNCMMCcSSHJDfNLyavE8Xxq8/Jqclrrd7m9QUTUweRGGaowpRLCs3hbzDWShB1YrYmx5p9fRveZaGlbpCMeETitJ+fzxt1VrnvwJwMOCn2QRVAQQOyodqbgtLj3AL9cEPNBXP4eb1HOgMaClhyOT44y6W80lh3KFPQFopskiUbb6raY080jy6NIqxXpXw1Tmirulbhg+Z0v+l2Meuwqqmrg== 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=bkbj9VnIlj7Q8lPZtLQzQGH5YlyK0b/qZwiim3luCIg=; b=wvfleScEZUhX+Ghj9HALN3NjnPmuHR6sqLkPbVgVVb8G0a5gi2cltnXZZ39i/XWxmhoVeUMGyu0MTy5m9OkV00d/2dyLTGATIEzb5U8E9og9THwV/ukN5r05ONsEprzDKi0IDfAkmEhLUkH/UsV0oJaDQfwuTu5gP/tqXjYvH1ODb0OIVAePcwm0xoUcLLnjK2YEpDQ1eXwmgXdmCs949eypFgQwlij6LDRHYrMrBhU33jt5aflF/G4LnBf6QaDWNQwUOB2amcI2dAA1yCzzUMTkSh7Gq3pfIvXY/DSKSka3x2GIYGS3+ByNCDF0HPNUEfQyXlyW//MEdDzY3qSneg== 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 CY5PR11MB6320.namprd11.prod.outlook.com (2603:10b6:930:3c::9) by DS0PR11MB8667.namprd11.prod.outlook.com (2603:10b6:8:1b3::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.24; Tue, 29 Sep 2026 22:05:45 +0000 Received: from CY5PR11MB6320.namprd11.prod.outlook.com ([fe80::9cd7:94d5:90f:4d76]) by CY5PR11MB6320.namprd11.prod.outlook.com ([fe80::9cd7:94d5:90f:4d76%3]) with mapi id 15.21.0451.026; Tue, 29 Sep 2026 22:05:44 +0000 From: "Summers, Stuart" To: "Brost, Matthew" CC: "intel-xe@lists.freedesktop.org" Subject: Re: [PATCH 3/3] drm/xe: Do not clear SVM device memory allocations up front Thread-Topic: [PATCH 3/3] drm/xe: Do not clear SVM device memory allocations up front Thread-Index: AQHdUD3jkK/nT7NyrESEXqQS6rdn5bbl/kiAgAAQSwCAAA5HAA== Date: Tue, 29 Sep 2026 22:05:44 +0000 Message-ID: <5fde25694f1d383083270485ff49ce0a583a678b.camel@intel.com> References: <20260929181024.2743854-1-matthew.brost@intel.com> <20260929181024.2743854-4-matthew.brost@intel.com> <59e6ec889f8615ce424833b3a15ecd94b8dfb8b4.camel@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.4-0ubuntu2 authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CY5PR11MB6320:EE_|DS0PR11MB8667:EE_ x-ms-office365-filtering-correlation-id: d3aa6653-d420-4f80-cd6d-08df1e75cf5b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|1800799024|376014|23010399003|56012099006|38070700021|11063799006|10067099003|4143699003|5023799004|22082099003|18002099003; x-microsoft-antispam-message-info: rwZLcDca0NpLitaSxJo1P0ptIk0BBhSWhpL9RXsCxScpdR0Ux28TjiK7hHaDdjODUaSxaRXWYt4gSQKv1vOD8dHNijW2WRTR/1uA0ukQKpYH8RoC/nR1N/mgHJ5FU2QdB2pys9JcNUg4RLXWZZ7oVSPhJCk5r8axnF4/vTmikCfishXdhzM8/4RlfMm37bnkShGNwP2RnaguwD4CHA99oAy6Gtmo+VgpO8zafVvW+JDY56jGEMWIVWAmr2G/NPDb4+M2/2/36YyITfTEJ4Xrm1dkZyhfYy02Rap6u1IQ7J2QaF+Ow9WqWL00BE8Fi/mbXCG1qb8+Qj/bhHe2xwab/zvQM71nxIz50keopm4W+wvu+/GKprOfizugkE3ls2gn1xexHefc2MKc13SX1P8yRzpJYgC8QhW4JAKnPohBC9avAfg1EJT/BkhrdhdX2ArhsL/M/DHjs2EBtIeIfLTm4ue7w3Vn0jK8FuGKuj6EW/todIut0ep8+WEJ9WjPQKyKr/rBKsPteH7yd32Mt6nSTxog7MeZ94pDG+bnDQ20taHJXKe6BRxZfGsPMnpAY+uCwx4dC4JYGrCNE4jZ/drVjIzk450BbkMQuTXRfkRMz1twGnDan/7fsy13nbHRKk/eljHv1O/cNgj0E9k65Vh8T++S4SaKdqsPEvTPd0gwZ7osZSro9jnA6T/KAk+WqGSqomlyiqSldxxV4ZEqoqyhj/0JZh25qc4ivShJtjLIhQk= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CY5PR11MB6320.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(23010399003)(56012099006)(38070700021)(11063799006)(10067099003)(4143699003)(5023799004)(22082099003)(18002099003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?a3Fad2JDSk05VUpuNkxJYzZ5TTdSMUtZdUNwRTJTS1g4UjU1dHEvN3V1Rlkx?= =?utf-8?B?aFRBSjZCSFF6ejJUakpVamZsTmlIQUhTOEcyWEdxdEFuZkI3SldVcU1UTTA2?= =?utf-8?B?d1h5c2s0aGFZclVINmsxSG5aZDZFdHJXUkJ2c044d0JzaGpKME4yeUx5bW5h?= =?utf-8?B?T2hCSzd0dkFKdW5FSUVUY2F3UDBlc1dRcnRoWDNsYi9LeTB4WC9Fa2Jlb3Ew?= =?utf-8?B?ekVHYkxiSk9ZcXl4clluL3dnSHZxRkJMVTc2M1lvd1Q1L21LdGYxdnc1TVdP?= =?utf-8?B?UDI1MjdyTENBSm8xdnBqNjZNcFlHODI5ZWxwc2Y5L0VLeGxSeGZPTFhNeFND?= =?utf-8?B?SUZKV05pcjVhMTI2R1FvSHlMU2cwZ1V3RzBtR0ZQR2xxZzFIUDFFcmxJZnd2?= =?utf-8?B?NXB5QkhoR1VLa3dsNnV3M1FCVTI3VnpJZHhvL0R6aUhOSHdsU01lUWNQVWph?= =?utf-8?B?VzdjUUlrTVlYb3ZEMkVtRjZDRGpoQzI1b0R0dG05N3NsUldScTlZam1UU3ho?= =?utf-8?B?VStSQVpWaDB0K2FyZ1Q4T3FqM0gvTGtIR3FMM0krTjlXUGpFamtHN1pRbGRv?= =?utf-8?B?cDU5elVTeUN1ZXFIdy9Tbk1IYnlvU1FxYmZxeTYvVmU4dVN1VmY4T29NWlR4?= =?utf-8?B?MllsZDVtTzFlTzRVeTIwZVRteERqMThqRmFkTlNGT3RXTEE4dCsycUx6N05U?= =?utf-8?B?MXk0SlNQNUV5YW1FUVlsUVhSLy9EU3JSTWNJVWNpMXJZdVNoM2NlSklQTC9x?= =?utf-8?B?bndOcmhXRk1sS3h5cDBBNm90N0cyRE9HN2tRa1YrSkt2VlBjdVJGK3ZWMitZ?= =?utf-8?B?azgrY0lWRjltZVQrc0U5VDN2dWRGZ0ZoSVJpZ29vZ3hjcGpIMGRXQzQrZXFo?= =?utf-8?B?SlFybkNpT3MyWlNRRlVIbDNrdDNVRmw4WmszUVo2dE44TllBYzFML2xNb2JE?= =?utf-8?B?YmR1Q0d5S0dCTDh0blBaZzE1QTN6emtRaW1mS2RQazZWeVZ2YWhNMGNmWmlj?= =?utf-8?B?YWhicCtXMUovQzIva3o5WHpuQlFiQWdmeExkMi92c1dqK2NmM0pvSExPeTh2?= =?utf-8?B?RUVPTE5oQmgzV0VwdEtnQkhCejhMdU05WlAyNmw1ZFF2MHRld2FnZWR6aXda?= =?utf-8?B?dXZPU3NjVkhzUzU3Zklxcm9rNmxha2hnQU1kNzNMd2piVVU4Q0RQRjd4WExO?= =?utf-8?B?Y05lRmVSSFJuMi9YWFBRc3VtZ1RNWk95UzZJQXZ2UGgrLy9qcEp6Zk16RVgy?= =?utf-8?B?a1h2dFVnb3Qrd3ZLbVFiSXRZcVJMdm5RWlVtZ3lkeVAxYllqbEpCMmRYbk9a?= =?utf-8?B?UmR4TGJGNWZkRXRFVzFKV2FHSU95aXBZbHhENCs1M09ZOVlTY3RHUVpsL0h2?= =?utf-8?B?ajdGbk5uNmp0bnl2bDF6VGl1OERER0ZVOHA4T3ZFc3V2aGRUajJPY0hZeVB6?= =?utf-8?B?ZDdzejFneEM4UzI1QUh6Uzk1dDRyU3N5b0lwbE01L3BrRHBabHJUTlpSVzhG?= =?utf-8?B?amFQN2hGNkhMY2xMbW5zWlB2UVdxTzVXSWZkMnBId3JpaEpvNlp5L0M3ZCtw?= =?utf-8?B?Mm9Tb2dBc0hSVlg3WnJxVzYyMU5xdTFiUUpTNGd6cEJ4L3FYaTBmZ0N5OUww?= =?utf-8?B?cUs5VkJxRk5wMSszUXdpMFZiNFJIbWxnN3IvMldwWXZVeDY4K2NNL3pJbWhX?= =?utf-8?B?R1dUYXhGUGhia21MYUFST2Iwb0JzNnUrdE1iQTFnbnMwVEUyUFZhd1YrUGFj?= =?utf-8?B?TlJPdURzUXQ3c2RSelhmS0dIMlE0UXM4YUg5UjN3bEtyQm5jb0IxMkRrWFhy?= =?utf-8?B?N1RoNjNoQ0N1MmFCWDQ2Sm1KWms3Q1V2NjFWRnhERFZLKzR5ZHpkUGNKVlRs?= =?utf-8?B?SjlEaWNlajhnUnUzZTE2T3g1eWI0R1dCMnVwaHd1Y0gvTUhPdUJzVnMvM2xP?= =?utf-8?B?WnhrZEFBNmFweEFZdzNYVFlpclhqL2tabG4rb0llOEg4ZkJoU2ZEN2lnaml2?= =?utf-8?B?dVJBa1hReXFBSU1hNCtHQkJlOUJjMmlpN2N3SEU4dWZKZEMraU5taVVlTmdm?= =?utf-8?B?SlB3ZnVJM05UMkE1RExzbFlERDNCeEJsM20rMVgyTTJpSXdtZFpPYmxwMFNk?= =?utf-8?B?ekdEamIxaU5aQTkvcGoxaEtiQml6WEgxbG1YSXJsQ2owYXRzQ0tDVW1haGpx?= =?utf-8?B?OVJtZ1E4V2NFZlAxdXhva1BnWWFIK2R1NURhdlMybFFOSkdtVTFGYjh2WWo5?= =?utf-8?B?czJqSXQ1ek1HZTNJczJqd0diL3E3UXNjbjZwalI2Y0h5ZllaOVI2elVnVkg4?= =?utf-8?B?cWdGVWoweThORGd0dHM1dEJhNllVNzVUZUo5UVFmMXJDZVZLYjk3TlMwZnFD?= =?utf-8?Q?50LbyQHUWVMWrWn4=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <171B6D6B10E53F48BAE2FD165C717AC1@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: VzCBaUAgbbgfUXE6/sxBBrNbSFa+3ml3x9QzzasF0mmeO9cBWeg940hr/Dw5yVdHVdyD1/WgMUWbxpY9pFc6nAdWlSX4tHIONFrM70C6N1+DRP9sMYi1YnnRi3iRdh5exsNmuRi+PagVkhT6Xrx6j6oE/g44ba22zN+f2sEqYKw/fDfvtwo4b6ZZRmWQyLt3EbYfPNxqsWJ6OO/RfhPp35yz1XwN09NPCeSnNOkaRZQAiPinRVDNjYnxJAnDvF5rDvIbWAhLvGwFdRi8k0MZNT5yB4uxnNQD8d8l7fK6S3Yb5fXA2RsM/ddy4pOBH+ahSLUO3mqx7f45A+1XhYauuA== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY5PR11MB6320.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d3aa6653-d420-4f80-cd6d-08df1e75cf5b X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Sep 2026 22:05:44.8623 (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: eNzF97NMAZPCjbWEbU+rghCl1GPbnq32bJugI3eIxMVYFLynOSMyjWUAXW7Nc/GUpqe7n14R2G9H3BE5sMSjEHUJ5opINIXw/a/cLRJi99k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR11MB8667 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" T24gVHVlLCAyMDI2LTA5LTI5IGF0IDE0OjE0IC0wNzAwLCBNYXR0aGV3IEJyb3N0IHdyb3RlOgo+ IE9uIFR1ZSwgU2VwIDI5LCAyMDI2IGF0IDAyOjE2OjE4UE0gLTA2MDAsIFN1bW1lcnMsIFN0dWFy dCB3cm90ZToKPiA+IE9uIFR1ZSwgMjAyNi0wOS0yOSBhdCAxMToxMCAtMDcwMCwgTWF0dGhldyBC cm9zdCB3cm90ZToKPiA+ID4geGVfZHJtX3BhZ2VtYXBfcG9wdWxhdGVfbW0oKSBhbGxvY2F0ZXMg YSBCTyB0byBiYWNrIHRoZSByYW5nZQo+ID4gPiBiZWluZwo+ID4gPiBtaWdyYXRlZCBpbnRvIGRl dmljZSBtZW1vcnksIGFuZCBUVE0gY2xlYXJzIGl0LiBUaGF0IGNsZWFyIGlzIG9uCj4gPiA+IHRo ZQo+ID4gPiBHUFUKPiA+ID4gcGFnZSBmYXVsdCBhbmQgU1ZNIHByZWZldGNoIGNyaXRpY2FsIHBh dGhzLCBhbmQgaW4gdGhlIGNvbW1vbgo+ID4gPiBjYXNlIGl0Cj4gPiA+IGlzCj4gPiA+IGltbWVk aWF0ZWx5IG92ZXJ3cml0dGVuIGluIGl0cyBlbnRpcmV0eSBieSB0aGUgbWlncmF0aW9uIGl0c2Vs Zi4KPiA+ID4gCj4gPiA+IEFsbG9jYXRlIHRoZSBCTyB3aXRoIFhFX0JPX0ZMQUdfU0tJUF9DTEVB UiBhbmQgaW5zdGVhZCBkZWFsIHdpdGgKPiA+ID4gdGhlCj4gPiA+IGNvbnRlbnRzIGluIHhlX3N2 bV9jb3B5KCkuIEEgbWlncmF0aW9uIHRvIFZSQU0gb25seSBzb3VyY2VzIHBhZ2VzCj4gPiA+IHdo aWNoCj4gPiA+IGFyZSBwb3B1bGF0ZWQgb24gdGhlIENQVSBzaWRlLCBzbyBpZiBldmVyeSBwYWdl IGhhcyBhIHNvdXJjZSBETUEKPiA+ID4gYWRkcmVzcwo+ID4gPiB0aGUgY29weSBjb3ZlcnMgdGhl IHdob2xlIGFsbG9jYXRpb24gYW5kIG5vdGhpbmcgZWxzZSBpcyBuZWVkZWQuCj4gPiA+IE9ubHkK PiA+ID4gd2hlbiB0aGUgbWlncmF0aW9uIGlzIHNwYXJzZSAtIGhvbGVzIGluIHRoZSBDUFUgVk1B IGZyb20gbmV2ZXIKPiA+ID4gZmF1bHRlZAo+ID4gPiBhbm9ueW1vdXMgbWVtb3J5LCBmb3IgaW5z dGFuY2UgLSBpcyBhIGNsZWFyIGlzc3VlZCwgYWhlYWQgb2YgdGhlCj4gPiA+IGNvcGllcywKPiA+ ID4gc28gdGhlIHVuY292ZXJlZCBwYWdlcyBzdGlsbCByZWFkIGFzIHplcm8uCj4gPiA+IAo+ID4g PiBUaGUgY2xlYXIgd2Fsa3MgdGhlIGRlc3RpbmF0aW9uIGRldmljZSBwYWdlcywgdGFraW5nIHRo ZSBleHRlbnQKPiA+ID4gb2YKPiA+ID4gZWFjaAo+ID4gPiBlbnRyeSBmcm9tIGl0cyBmb2xpbyBv cmRlciBzaW5jZSBvbmx5IGZvbGlvIGhlYWRzIGFyZSBwb3B1bGF0ZWQsCj4gPiA+IGFuZAo+ID4g PiBjb2FsZXNjZXMgcGh5c2ljYWxseSBjb250aWd1b3VzIGVudHJpZXMgaW50byBjaHVua3Mgb2Yg YXQgbW9zdAo+ID4gPiA4TS4gSXQKPiA+IAo+ID4gV2h5IDhNPwo+ID4gCj4gCj4gWEVfTUlHUkFU RV9DSFVOS19TSVpFIGlzIGV4aXN0aW5nIGNvZGUgd2hpY2ggaGFzIHBpY2tlZCA4TSBmb3IKPiBj b3BpZXMsCj4gc28gdXNpbmcgc2FtZSBzaXplIGZvciBjbGVhcnMuIEluIHByYWN0aWNlIHRoaXMg aXMgbGltaXRlZCBhdCAyTSBhcwo+IHRoYXQKPiBpcyBtYXggU1ZNIGFsbG9jYXRpb24gc2l6ZSBi dXQgdGhhdCBwYXJ0IGlzIHRhYmxlIGRyaXZlbiBhbmQgY2FuIGJlCj4gY2hhbmdlZCBhdCBhbnkg dGltZS4gCgpZZWFoIEkgZ3Vlc3MgbXkgcXVlc3Rpb24gd2FzIHJlbGF0ZWQgdG8gdGhlIHBhZ2Ug c2l6ZSBncmFudWxhcml0eSAoMk0pLApzbyB0aGUgOE0gY2h1bmsgc2VlbXMgYSBsaXR0bGUgYXJi aXRyYXJ5IHRvIG1lLiBJIGRvbid0IGhhdmUgYWxsIHRoZQptaWdyYXRlIGNodW5rIHNpemUgaGlz dG9yeSB0aG91Z2guLi4KCkJ1dCB5ZWFoIG1ha2VzIHNlbnNlIGdlbmVyYWxseS4KCj4gCj4gPiA+ IHJ1bnMgb24gdGhlIHNhbWUgb3JkZXJlZCBtaWdyYXRlIHF1ZXVlIGFzIHRoZSBjb3BpZXMsIHNv IGl0IHRha2VzCj4gPiA+IG92ZXIKPiA+ID4gdGhlIHByZS1taWdyYXRlIGZlbmNlIGRlcGVuZGVu Y3kgYW5kIHRoZSBjb3BpZXMgYXJlIGltcGxpY2l0bHkKPiA+ID4gb3JkZXJlZAo+ID4gPiBiZWhp bmQgaXQuCj4gPiA+IAo+ID4gPiBBc3Npc3RlZC1ieTogR2l0aHViLUNvcGlsb3Q6Q2xhdWRlLW9w dXMtNQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGlu dGVsLmNvbT4KPiA+ID4gLS0tCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX3N2bS5jIHwg MTUwCj4gPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+ID4gPiDCoDEg ZmlsZSBjaGFuZ2VkLCAxNDMgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKPiA+ID4gCj4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfc3ZtLmMKPiA+ID4gYi9kcml2 ZXJzL2dwdS9kcm0veGUveGVfc3ZtLmMKPiA+ID4gaW5kZXggZjM5ZTY0NzUxMmFkLi4xYjRkMTIy MmZiYjcgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9zdm0uYwo+ID4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfc3ZtLmMKPiA+ID4gQEAgLTU4Niw2ICs1ODYs MTI0IEBAIHN0YXRpYyB2b2lkCj4gPiA+IHhlX3N2bV9jb3B5X3VzX3N0YXRzX2luY3Ioc3RydWN0 Cj4gPiA+IHhlX2d0ICpndCwKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoH0KPiA+ID4gwqB9Cj4gPiA+ IMKgCj4gPiA+ICsjZGVmaW5lIFhFX01JR1JBVEVfQ0hVTktfU0laRcKgwqBTWl84TQo+ID4gPiAr I2RlZmluZSBYRV9WUkFNX0FERFJfSU5WQUxJRMKgwqDCoH4weDB1bGwKPiA+ID4gKwo+ID4gPiAr LyoqCj4gPiA+ICsgKiB4ZV9zdm1fY29weV9jb3ZlcnNfYWxsKCkgLSBEb2VzIGEgbWlncmF0aW9u IHdyaXRlIGV2ZXJ5IHBhZ2U/Cj4gPiA+ICsgKiBAcGFnZW1hcF9hZGRyOiBBcnJheSBvZiBETUEg aW5mb3JtYXRpb24gZm9yIHRoZSBzeXN0ZW0gc2lkZQo+ID4gPiBvZgo+ID4gPiB0aGUgbWlncmF0 aW9uCj4gPiA+ICsgKiBAbnBhZ2VzOiBOdW1iZXIgb2YgcGFnZXMgY292ZXJlZCBieSBAcGFnZW1h cF9hZGRyCj4gPiA+ICsgKgo+ID4gPiArICogQSBtaWdyYXRpb24gdG8gZGV2aWNlIG1lbW9yeSBv bmx5IHNvdXJjZXMgcGFnZXMgd2hpY2ggYXJlCj4gPiA+IGFjdHVhbGx5IHBvcHVsYXRlZAo+ID4g PiArICogb24gdGhlIENQVSBzaWRlLiBIb2xlcyBpbiB0aGUgQ1BVIFZNQSAobmV2ZXIgZmF1bHRl ZAo+ID4gPiBhbm9ueW1vdXMKPiA+ID4gbWVtb3J5LCBmb3IKPiA+ID4gKyAqIGluc3RhbmNlKSBo YXZlIG5vIERNQSBhZGRyZXNzIGFuZCBsZWF2ZSB0aGUgY29ycmVzcG9uZGluZwo+ID4gPiBkZXZp Y2UKPiA+ID4gcGFnZXMKPiA+ID4gKyAqIHVudG91Y2hlZCBieSB0aGUgY29weS4KPiA+ID4gKyAq Cj4gPiA+ICsgKiBSZXR1cm46IHRydWUgaWYgZXZlcnkgcGFnZSBoYXMgYSBzb3VyY2UgYWRkcmVz cywgZmFsc2UKPiA+ID4gb3RoZXJ3aXNlLgo+ID4gPiArICovCj4gPiA+ICtzdGF0aWMgYm9vbCB4 ZV9zdm1fY29weV9jb3ZlcnNfYWxsKHN0cnVjdCBkcm1fcGFnZW1hcF9hZGRyCj4gPiA+ICpwYWdl bWFwX2FkZHIsCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBucGFnZXMpCj4gPiA+ICt7 Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcgaTsKPiA+ID4gKwo+ID4gPiArwqDC oMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgbnBhZ2VzOykgewo+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFwYWdlbWFwX2FkZHJbaV0uYWRkcikKPiA+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZmFsc2U7Cj4g PiA+ICsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGkgKz0gTlJfUEFHRVMo cGFnZW1hcF9hZGRyW2ldLm9yZGVyKTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gPiArCj4g PiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiB0cnVlOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtz dGF0aWMgaW50IHhlX3N2bV9jbGVhcl92cmFtX2NodW5rKHN0cnVjdCB4ZV92cmFtX3JlZ2lvbiAq dnIsCj4gPiA+IHU2NAo+ID4gPiB2cmFtX2FkZHIsCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQg bG9uZyBucGFnZXMsCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlLAo+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKipkZXBzKQo+ID4gPiArewo+ID4gPiAr wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZG1hX2ZlbmNlICpfX2ZlbmNlOwo+ID4gPiArCj4gPiA+ICvC oMKgwqDCoMKgwqDCoHZtX2RiZygmdnItPnhlLT5kcm0sICJDTEVBUiBWUkFNIC0gMHglMDE2bGx4 LAo+ID4gPiBOUEFHRVM9JWxkIiwKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZy YW1fYWRkciwgbnBhZ2VzKTsKPiA+ID4gKwo+ID4gPiArwqDCoMKgwqDCoMKgwqBfX2ZlbmNlID0g eGVfbWlncmF0ZV9jbGVhcl92cmFtKHZyLT5taWdyYXRlLCBucGFnZXMsCj4gPiA+IHZyYW1fYWRk ciwgKmRlcHMpOwo+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAoSVNfRVJSKF9fZmVuY2UpKQo+ID4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIFBUUl9FUlIoX19mZW5jZSk7 Cj4gPiA+ICsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgLyogT3JkZXJlZCBxdWV1ZSAtIG9ubHkgdGhl IGZpcnN0IGpvYiBuZWVkcyB0byB0YWtlIHRoZQo+ID4gPiBkZXBlbmRlbmN5ICovCj4gPiA+ICvC oMKgwqDCoMKgwqDCoCpkZXBzID0gTlVMTDsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgZG1hX2ZlbmNl X3B1dCgqZmVuY2UpOwo+ID4gPiArwqDCoMKgwqDCoMKgwqAqZmVuY2UgPSBfX2ZlbmNlOwo+ID4g PiArCj4gPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ ICsvKioKPiA+ID4gKyAqIHhlX3N2bV9jbGVhcl92cmFtKCkgLSBDbGVhciB0aGUgZGV2aWNlIG1l bW9yeSBiYWNraW5nIGEKPiA+ID4gbWlncmF0aW9uCj4gPiA+ICsgKiBAcGFnZXM6IEFycmF5IG9m IGRldmljZSBwYWdlcyB3aGljaCBiYWNrIHRoZSBtaWdyYXRpb24KPiA+ID4gZGVzdGluYXRpb24K PiA+ID4gKyAqIEBucGFnZXM6IE51bWJlciBvZiBwYWdlcyBpbiBAcGFnZXMKPiA+ID4gKyAqIEBm ZW5jZTogSW4vb3V0IHBvaW50ZXIgdG8gdGhlIGxhc3QgZmVuY2UgaXNzdWVkIG9uIHRoZQo+ID4g PiBtaWdyYXRlCj4gPiA+IHF1ZXVlCj4gPiA+ICsgKiBAZGVwczogSW4vb3V0IHBvaW50ZXIgdG8g YSBkZXBlbmRlbmN5IHRvIGF0dGFjaCB0byB0aGUgZmlyc3QKPiA+ID4gam9iCj4gPiA+IGlzc3Vl ZAo+ID4gPiArICoKPiA+ID4gKyAqIFplcm8gdGhlIGRldmljZSBtZW1vcnkgZGVzY3JpYmVkIGJ5 IEBwYWdlcy4gRW50cmllcyBpbiBAcGFnZXMKPiA+ID4gYXJlCj4gPiA+IG9ubHkKPiA+ID4gKyAq IHBvcHVsYXRlZCBhdCB0aGUgaGVhZCBvZiBlYWNoIGZvbGlvLCBzbyB0aGUgZXh0ZW50IG9mIGVh Y2gKPiA+ID4gZW50cnkKPiA+ID4gaXMgdGFrZW4KPiA+ID4gKyAqIGZyb20gdGhlIGZvbGlvIG9y ZGVyLCBhbmQgcGh5c2ljYWxseSBjb250aWd1b3VzIGVudHJpZXMgYXJlCj4gPiA+IGNvYWxlc2Nl ZCBpbnRvIGEKPiA+ID4gKyAqIHNpbmdsZSBjbGVhciBvZiBhdCBtb3N0IFhFX01JR1JBVEVfQ0hV TktfU0laRS4KPiA+ID4gKyAqCj4gPiA+ICsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRp dmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ID4gPiArICovCj4gPiA+ICtzdGF0aWMgaW50IHhl X3N2bV9jbGVhcl92cmFtKHN0cnVjdCBwYWdlICoqcGFnZXMsIHVuc2lnbmVkIGxvbmcKPiA+ID4g bnBhZ2VzLAo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSwKPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZG1hX2Zl bmNlICoqZGVwcykKPiA+ID4gK3sKPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHhlX3ZyYW1f cmVnaW9uICp2ciA9IE5VTEw7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcgaSwg Y291bnQgPSAwOwo+ID4gPiArwqDCoMKgwqDCoMKgwqB1NjQgdnJhbV9hZGRyID0gWEVfVlJBTV9B RERSX0lOVkFMSUQ7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoGludCBlcnI7Cj4gPiA+ICsKPiA+ID4g K8KgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IG5wYWdlczspIHsKPiA+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBwYWdlICpwYWdlID0gcGFnZXNbaV07Cj4gPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBsb25nIG5yOwo+ID4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTY0IGFkZHI7Cj4gPiA+ICsKPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghcGFnZSkgewo+ID4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCsraTsKPiA+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsKPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ID4gKwo+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWYgKCF2cikKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2ciA9IHhlX3BhZ2VfdG9fdnIocGFnZSk7Cj4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBYRV9XQVJOX09OKHhlX3BhZ2VfdG9fdnIocGFn ZSkgIT0gdnIpOwo+ID4gPiArCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBu ciA9IE5SX1BBR0VTKGZvbGlvX29yZGVyKHBhZ2VfZm9saW8ocGFnZSkpKTsKPiA+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGFkZHIgPSB4ZV9wYWdlX3RvX2RwYShwYWdlKTsKPiA+ ID4gKwo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogTm90IGNvbnRpZ3Vv dXMgd2l0aCB0aGUgcGVuZGluZyBjbGVhciwgb3IKPiA+ID4gY2h1bmsgaXMKPiA+ID4gZnVsbCAq Lwo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGNvdW50ICYmIChhZGRy ICE9IHZyYW1fYWRkciArIGNvdW50ICoKPiA+ID4gUEFHRV9TSVpFCj4gPiA+ID4gPiAKPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGNvdW50ICsgbnIgPiBYRV9NSUdSQVRFX0NIVU5LX1NJWkUKPiA+ID4gLwo+ID4gPiBQQUdFX1NJ WkUpKSB7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZXJyID0geGVfc3ZtX2NsZWFyX3ZyYW1fY2h1bmsodnIsCj4gPiA+IHZyYW1fYWRkciwKPiA+ ID4gY291bnQsCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBmZW5jZSwKPiA+ID4gZGVwcyk7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGVycikKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsK PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb3Vu dCA9IDA7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ICsKPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghY291bnQpCj4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdnJhbV9hZGRyID0gYWRk cjsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvdW50ICs9IG5yOwo+ID4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaSArPSBucjsKPiA+ID4gK8KgwqDCoMKg wqDCoMKgfQo+ID4gPiArCj4gPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChjb3VudCkgewo+ID4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyID0geGVfc3ZtX2NsZWFyX3ZyYW1fY2h1 bmsodnIsIHZyYW1fYWRkciwKPiA+ID4gY291bnQsCj4gPiA+IGZlbmNlLAo+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXBzKTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGlmIChlcnIpCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4g PiArCj4gPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ IMKgc3RhdGljIGludCB4ZV9zdm1fY29weShzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAo+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3BhZ2Vt YXBfYWRkciAqcGFnZW1hcF9hZGRyLAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIG5wYWdlcywgY29uc3QgZW51bQo+ID4gPiB4 ZV9zdm1fY29weV9kaXIgZGlyLAo+ID4gPiBAQCAtNTk2LDEyICs3MTQsMjMgQEAgc3RhdGljIGlu dCB4ZV9zdm1fY29weShzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKg c3RydWN0IHhlX2RldmljZSAqeGU7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZG1hX2Zl bmNlICpmZW5jZSA9IE5VTEw7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBsb25nIGk7 Cj4gPiA+IC0jZGVmaW5lIFhFX1ZSQU1fQUREUl9JTlZBTElEwqDCoMKgfjB4MHVsbAo+ID4gPiDC oMKgwqDCoMKgwqDCoMKgdTY0IHZyYW1fYWRkciA9IFhFX1ZSQU1fQUREUl9JTlZBTElEOwo+ID4g PiDCoMKgwqDCoMKgwqDCoMKgaW50IGVyciA9IDAsIHBvcyA9IDA7Cj4gPiA+IMKgwqDCoMKgwqDC oMKgwqBib29sIHNyYW0gPSBkaXIgPT0gWEVfU1ZNX0NPUFlfVE9fU1JBTTsKPiA+ID4gwqDCoMKg wqDCoMKgwqDCoGt0aW1lX3Qgc3RhcnQgPSB4ZV9ndF9zdGF0c19rdGltZV9nZXQoKTsKPiA+ID4g wqAKPiA+ID4gK8KgwqDCoMKgwqDCoMKgLyoKPiA+ID4gK8KgwqDCoMKgwqDCoMKgICogRGV2aWNl IG1lbW9yeSBpcyBhbGxvY2F0ZWQgd2l0aCBYRV9CT19GTEFHX1NLSVBfQ0xFQVIsCj4gPiA+IHNv Cj4gPiA+IGl0IHN0aWxsCj4gPiAKPiA+IFNob3VsZCB3ZSBjaGVjayB0aGF0IGV4cGxpY2l0bHkg c29tZXdoZXJlIGhlcmUgKG9yIGluIHRoZSB3cmFwcGVyKT8KPiA+IFdoYXQgaWYgc29tZW9uZSBj aGFuZ2VzIHRoZSBjb2RlIGRvd24gdGhlIHJvYWQgdG8gbm90IHNraXAgdGhlCj4gPiBjbGVhcgo+ ID4gYWNjaWRlbnRhbGx5Li4uIEkgZ3Vlc3Mgd2UganVzdCBoYXZlIGEgc2xpZ2h0IHBlcmZvcm1h bmNlIGRyb3Agc28KPiA+IG1heWJlCj4gPiBub3QgYSBmdW5jdGlvbmFsIHByb2JsZW0/Cj4gPiAK PiAKPiBXZSBkb24ndCBoYXZlIHRoZSBCTyBoZXJlLCBvbmx5IGFkZHJlc3Nlcy4gVGhlIHdoeSBp bnRlcmZhY2VzIGluCj4gR1BVU1ZNCj4gYXJlIGRlZmluZWQgdGhhdCBsYXllciBoYXMgbm8gaWRl YSBpZiBkcml2ZXIgYWxsb2NhdGVkIGEgQk8gb3Igbm90LgoKT2sgc28gYmFzaWNhbGx5IHRoZSBT Vk0gbGF5ZXIgaXMgZ29pbmcgdG8gZG8gdGhpcyBubyBtYXR0ZXIgd2hhdCBhbmQgd2UKanVzdCBu ZWVkIHRvIGVuc3VyZSBpbiB0aGUgQk8gbGF5ZXIgdGhhdCB0aGlzIGlzbid0IGRvaW5nIGEgZG91 YmxlCmNsZWFyPyBTaG91bGQgd2UgaGF2ZSBhIHBlcmZvcm1hbmNlIHRlc3QgdG8gbWFrZSBzdXJl IHdlIGRvbid0IHJlZ3Jlc3MKdGhlcmU/Cgo+IAo+ID4gPiArwqDCoMKgwqDCoMKgwqAgKiBob2xk cyB3aGF0ZXZlciB0aGUgcHJldmlvdXMgb3duZXIgbGVmdCBiZWhpbmQuIEEgY29weQo+ID4gPiBj b3ZlcmluZyBldmVyeQo+ID4gPiArwqDCoMKgwqDCoMKgwqAgKiBwYWdlIHNjcnVicyBpdCwgYW55 dGhpbmcgbGVzcyBoYXMgdG8gYmUgY2xlYXJlZCBmaXJzdC4KPiA+ID4gK8KgwqDCoMKgwqDCoMKg ICovCj4gPiA+ICvCoMKgwqDCoMKgwqDCoGlmICghc3JhbSAmJiAheGVfc3ZtX2NvcHlfY292ZXJz X2FsbChwYWdlbWFwX2FkZHIsCj4gPiA+IG5wYWdlcykpIHsKPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGVyciA9IHhlX3N2bV9jbGVhcl92cmFtKHBhZ2VzLCBucGFnZXMsICZm ZW5jZSwKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCZwcmVfbWlncmF0ZV9mZW5jZSk7Cj4g PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZXJyKQo+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gZXJyX291dDsKPiA+ ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gPiArCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqAvKgo+ID4g PiDCoMKgwqDCoMKgwqDCoMKgICogVGhpcyBmbG93IGlzIGNvbXBsZXg6IGl0IGxvY2F0ZXMgcGh5 c2ljYWxseSBjb250aWd1b3VzCj4gPiA+IGRldmljZSBwYWdlcywKPiA+ID4gwqDCoMKgwqDCoMKg wqDCoCAqIGRlcml2ZXMgdGhlIHN0YXJ0aW5nIHBoeXNpY2FsIGFkZHJlc3MsIGFuZCBwZXJmb3Jt cyBhCj4gPiA+IHNpbmdsZSBHUFUgY29weQo+ID4gPiBAQCAtNjE3LDcgKzc0Niw2IEBAIHN0YXRp YyBpbnQgeGVfc3ZtX2NvcHkoc3RydWN0IHBhZ2UgKipwYWdlcywKPiA+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB1NjQgX192cmFtX2FkZHI7Cj4gPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgYm9vbCBtYXRjaCA9IGZhbHNlLCBjaHVuaywgbGFzdDsKPiA+ID4g wqAKPiA+ID4gLSNkZWZpbmUgWEVfTUlHUkFURV9DSFVOS19TSVpFwqDCoFNaXzhNCj4gPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2h1bmsgPSAoaSAtIHBvcykgPT0gKFhFX01J R1JBVEVfQ0hVTktfU0laRSAvCj4gPiA+IFBBR0VfU0laRSk7Cj4gPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgbGFzdCA9IChpICsgMSkgPT0gbnBhZ2VzOwo+ID4gPiDCoAo+ID4g PiBAQCAtNzU4LDggKzg4Niw2IEBAIHN0YXRpYyBpbnQgeGVfc3ZtX2NvcHkoc3RydWN0IHBhZ2Ug KipwYWdlcywKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9zdm1fY29w eV91c19zdGF0c19pbmNyKGd0LCBkaXIsIG5wYWdlcywKPiA+ID4gc3RhcnQpOwo+ID4gPiDCoAo+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiA+ID4gLSN1bmRlZiBYRV9NSUdSQVRF X0NIVU5LX1NJWkUKPiA+ID4gLSN1bmRlZiBYRV9WUkFNX0FERFJfSU5WQUxJRAo+ID4gPiDCoH0K PiA+ID4gwqAKPiA+ID4gwqBzdGF0aWMgaW50IHhlX3N2bV9jb3B5X3RvX2Rldm1lbShzdHJ1Y3Qg cGFnZSAqKnBhZ2VzLAo+ID4gPiBAQCAtMTEyMSwxOCArMTI0NywyOCBAQCBzdGF0aWMgaW50Cj4g PiA+IHhlX2RybV9wYWdlbWFwX3BvcHVsYXRlX21tKHN0cnVjdAo+ID4gPiBkcm1fcGFnZW1hcCAq ZHBhZ2VtYXAsCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfdmFsaWRhdGlvbl9jdHgg dmN0eDsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1fZXhlYyBleGVjOwo+ID4gPiDC oMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2JvICpibzsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgdTMy IGJvX2ZsYWdzOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgaW50IGVyciA9IDAsIGlkeDsKPiA+ID4g wqAKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGlmICghZHJtX2Rldl9lbnRlcigmeGUtPmRybSwgJmlk eCkpCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FTk9ERVY7 Cj4gPiA+IMKgCj4gPiA+ICvCoMKgwqDCoMKgwqDCoC8qCj4gPiA+ICvCoMKgwqDCoMKgwqDCoCAq IFNraXAgdGhlIGNsZWFyIG9uIGRldmljZSBtZW1vcnkgLSB4ZV9zdm1fY29weSgpIGVpdGhlcgo+ ID4gPiBmdWxseQo+ID4gPiArwqDCoMKgwqDCoMKgwqAgKiBvdmVyd3JpdGVzIHRoZSBhbGxvY2F0 aW9uIG9yIGNsZWFycyBpdCBleHBsaWNpdGx5LCBzbwo+ID4gPiBjbGVhcmluZyBoZXJlCj4gPiA+ ICvCoMKgwqDCoMKgwqDCoCAqIGlzIHB1cmUgb3ZlcmhlYWQgb24gdGhlIHBhZ2UgZmF1bHQgYW5k IHByZWZldGNoIHBhdGhzLgo+ID4gPiArwqDCoMKgwqDCoMKgwqAgKi8KPiA+ID4gK8KgwqDCoMKg wqDCoMKgaWYgKElTX0RHRlgoeGUpKQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgYm9fZmxhZ3MgPSBYRV9CT19GTEFHX1ZSQU0odnIpIHwKPiA+ID4gWEVfQk9fRkxBR19TS0lQ X0NMRUFSOwo+ID4gCj4gPiBUaGlzIGlzIG1heWJlIGEgY29tbWVudCB0aGF0IHNob3VsZCBnbyBp biB0aGUgZWFybGllciBwYXRjaCB0aGF0Cj4gPiBhZGRzCj4gPiB0aGUgZmxhZywgYnV0IHNob3Vs ZCB3ZSBoYXZlIGEgY2hlY2sgdGhhdCBlbnN1cmVzIHRoaXMgaXMgYQo+ID4ga2VybmVsL21pZ3Jh dGlvbiBCTyBhbmQgbm90IGEgdXNlciBCTz8KPiAKPiBJIHRoaW5rIHRoZSBjb21tZW50IGhlcmUg aXMgdmFsaWQgYXMgaXQgZXhwbGFpbnMgd2h5IHNldHRpbmcKCk9oIHNvcnJ5IHRoYXQgd2FzIHJl YWxseSB1bmNsZWFyIGJ5ICJhIGNvbW1lbnQiIGhlcmUgSSBtZWFudCBteSByZXZpZXcKY29tbWVu dCwgbm90IHlvdXIgaW4gY29kZSBjb21tZW50IHdoaWNoIGxvb2tzIGZpbmUgOikKCj4gWEVfQk9f RkxBR19TS0lQX0NMRUFSIGlzIHNhZmUgYXMgaXQgZG9uZSBsYXRlciBpZiBpdCBpcyByZXF1aXJl ZCwgYnV0Cj4gSQo+IHNob3VsZCBsaWtlbHkgYWRkIGFuIGFzc2VydCAheGVfYm9faXNfdXNlciBp ZiBYRV9CT19GTEFHX1NLSVBfQ0xFQVIKPiBpcwo+IHNldC4gTGV0IG1lIGFkZCB0aGF0LgoKWWVh aCBwZXJmZWN0LgoKVGhhbmtzLApTdHVhcnQKCj4gCj4gTWF0dAo+IAo+ID4gCj4gPiBUaGFua3Ms Cj4gPiBTdHVhcnQKPiA+IAo+ID4gPiArwqDCoMKgwqDCoMKgwqBlbHNlCj4gPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBib19mbGFncyA9IFhFX0JPX0ZMQUdfU1lTVEVNOwo+ID4g PiArwqDCoMKgwqDCoMKgwqBib19mbGFncyB8PSBYRV9CT19GTEFHX0NQVV9BRERSX01JUlJPUjsK PiA+ID4gKwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgeGVfcG1fcnVudGltZV9nZXQoeGUpOwo+ID4g PiDCoAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgeGVfdmFsaWRhdGlvbl9ndWFyZCgmdmN0eCwgJnhl LT52YWwsICZleGVjLCAoc3RydWN0Cj4gPiA+IHhlX3ZhbF9mbGFncykge30sIGVycikgewo+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJvID0geGVfYm9fY3JlYXRlX2xvY2tl ZCh4ZSwgTlVMTCwgTlVMTCwgZW5kIC0KPiA+ID4gc3RhcnQsCj4gPiA+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgdHRtX2JvX3R5cGVfZGV2aWNlLAo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IChJU19ER0ZYKHhlKSA/Cj4gPiA+IFhFX0JPX0ZMQUdfVlJBTSh2cikgOiBYRV9CT19GTEFHX1NZ U1RFTSkgfAo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiA+IFhFX0JPX0ZMQUdfQ1BV X0FERFJfTUlSUk9SLAo+ID4gPiAmZXhlYyk7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg dHRtX2JvX3R5cGVfZGV2aWNlLAo+ID4gPiBib19mbGFncywgJmV4ZWMpOwo+ID4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRybV9leGVjX3JldHJ5X29uX2NvbnRlbnRpb24oJmV4 ZWMpOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChJU19FUlIoYm8p KSB7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGVyciA9IFBUUl9FUlIoYm8pOwo+ID4gCgo=