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 09910C71136 for ; Wed, 11 Jun 2025 17:05:24 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C393C10E6E1; Wed, 11 Jun 2025 17:05:23 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="WwKYK7rG"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) by gabe.freedesktop.org (Postfix) with ESMTPS id 764E310E6DF for ; Wed, 11 Jun 2025 17:05:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1749661522; x=1781197522; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=4aiDOl3unB9C9N5n6scGXmD7QmMDxvFDdEwpw15pfJw=; b=WwKYK7rGKHeQdX4REXf7Ic7Wm0UPm38kKoUxhTjwTyhcBxCjq/PLQIcj KX185o8t0I3jVkzVtiPAj7WKbEP6QEHmKvpXRbsMJwIl/LOtXAxaHV1tP kDnPGOTOAuGKDdVCwEu8Sxbbza85qmZjvvNHIW7TWBw7XakDcSyXZHR1A tlDP+41nBM/GQIqK6bTDNX/UvdqJSEybD2H0L+p7unoFhVnVo1nOoXdhr bY27G0BTCba8eFGPgNVCVxxJCaTNOXfrTUtr0177amsaGSSwu9aAsb0UH LxOaVoH39ybt+AGFth9loXE55MQE6qLO3o7cl3H5Nh5s683HwLH1u9JbY w==; X-CSE-ConnectionGUID: ka5IMP+zS5iE28lGh/tPBw== X-CSE-MsgGUID: 8mjDyC3DSoK0FyjwnH9cgQ== X-IronPort-AV: E=McAfee;i="6800,10657,11461"; a="51679605" X-IronPort-AV: E=Sophos;i="6.16,228,1744095600"; d="scan'208";a="51679605" Received: from orviesa005.jf.intel.com ([10.64.159.145]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jun 2025 10:04:37 -0700 X-CSE-ConnectionGUID: TnJmaCNPT9WbU6ly+H3W2w== X-CSE-MsgGUID: gY3Kg2frSV2YvUgHhJnArA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.16,228,1744095600"; d="scan'208";a="152523563" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by orviesa005.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jun 2025 10:04:37 -0700 Received: from ORSMSX903.amr.corp.intel.com (10.22.229.25) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.25; Wed, 11 Jun 2025 10:04:36 -0700 Received: from ORSEDG901.ED.cps.intel.com (10.7.248.11) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.25 via Frontend Transport; Wed, 11 Jun 2025 10:04:36 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (40.107.244.82) by edgegateway.intel.com (134.134.137.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.25; Wed, 11 Jun 2025 10:04:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QPoAQLmOZbRPTNl6tmvWKocan+flChVPsgY5XsugVuxzypmRV556oUt6wkR1BQDP34sQKIdu/aY+BgOY1T1POHFsGO+myauFEchvexVSq3HalOHyL8BSa9iJtDU0nEGq1kS7naxbBeml+PQVq4gXI2qb4O7+BQyoeDcYSWGe1HncFpPH+XrcoQSJ1ZXz3U5NtkT1QEXtxMxXyp0TrM81aE5hoy9tL1o3A4FETjCSmMVAfLcIVq6ybPm+h+e5Cj5JyaT99AIJyucsV1L5t7MRixjxPC5lTvtlLG97k5bw5padOBnmXpTDsUxlG6Q2e3pzsiSzJu5VEa75oKD/olk/8Q== 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=4aiDOl3unB9C9N5n6scGXmD7QmMDxvFDdEwpw15pfJw=; b=DZ0pGm6fa7QzsP5SzHweAARUdZnqLbxf3Y/crOK17GRUwn7yUk+QEsRy2VXGBszIyXhbXUc7ysqu5IiN+zhFb7rwNsoMBvutfptxsiYn4ZSs5Cwm/QrTNMR454lJUf1eaJ77nYwgqM6XM6m4EUQC+5YiHupadVGTMRgLkwsQpohuw9Nh4IusXBcSff05IwoI7VUHlaEk0jhwHdlaVlePS5K0jM9Oe6UVZTekiyuXofaXBRT79ANezP0N0jUKaLXdDmXnPhwaRt5rgJKJJ4pZVA1KmJ6OdeqTOhXbLkI8M7sgq+x3TJB/c74vkCGniOC88kul3LlRAWmx9r/KoTk9vQ== 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 DM8PR11MB5573.namprd11.prod.outlook.com (2603:10b6:8:3b::7) by IA0PR11MB7934.namprd11.prod.outlook.com (2603:10b6:208:40d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8813.26; Wed, 11 Jun 2025 17:04:06 +0000 Received: from DM8PR11MB5573.namprd11.prod.outlook.com ([fe80::3f64:5280:3eb4:775b]) by DM8PR11MB5573.namprd11.prod.outlook.com ([fe80::3f64:5280:3eb4:775b%5]) with mapi id 15.20.8835.018; Wed, 11 Jun 2025 17:04:06 +0000 From: "Summers, Stuart" To: "Brost, Matthew" CC: "intel-xe@lists.freedesktop.org" , "Auld, Matthew" , "thomas.hellstrom@linux.intel.com" Subject: Re: [PATCH] drm/xe: Implement clear VRAM on free Thread-Topic: [PATCH] drm/xe: Implement clear VRAM on free Thread-Index: AQHb2pN6rFX0yaMHv06Unch6bHaO7rP+JhSAgAAFl4CAAATagA== Date: Wed, 11 Jun 2025 17:04:06 +0000 Message-ID: <7ede4886131931de5f9a672fd823d8bac3f374af.camel@intel.com> References: <20250611054235.3540936-1-matthew.brost@intel.com> <0c909f7376ab30f8260d83a74b3a908a4e6eb764.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: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM8PR11MB5573:EE_|IA0PR11MB7934:EE_ x-ms-office365-filtering-correlation-id: 8679286d-5e88-4a0b-b5be-08dda909f98b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|366016|1800799024|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?SU9IZm9SR1FmSUYwQVlwM0FBYTl5dDdOVnc5MXhyUTcrNXc2L2pPaDIyNGZm?= =?utf-8?B?Ymtoa1REWkFIVFVQaXk5TGNsYjlnVFRPZWlIb09mVnVIV2hOR3VnNFZBTUlM?= =?utf-8?B?MWdBYkVkcEVXZG9JUU5KTTZ0ZVRhcWdpV3JTNkNRU1NLeHJYSG5GdlQwcjNQ?= =?utf-8?B?bHBlZmVNSGNIdTVJR3pzd20rZ3BuYWxZTURjUkxFa1lHbi9wRjZqZ2dGdEhk?= =?utf-8?B?ZE5kelNZMzFLZi83NEF2MnVhZ05YR3hOSzJVdERqRDhtRHR6TG8yamcwYm5G?= =?utf-8?B?cHNRS1paWFc0b0pQZDY3VnlGVmJaOTVqVFBHMytiNGxpa2ZKTmNMVmhtWlB1?= =?utf-8?B?N0VuRTdVRlIwcHJYNXhVL094ZjNkbnREVTJDNDNJaThwbDhKL3ZVUkM2RStX?= =?utf-8?B?MmYxVUFBZ1RsWlREQmplVU5HUGthRTRmWFZoWm5JWHBZQU90OE03ZXk2U0ps?= =?utf-8?B?WnVPQnAxazIzZ1lsSmNQczV1N0twOFRqQnNHaTZxVm5pNmw0ZDIzeFNLZ04r?= =?utf-8?B?WGIwY0pjQTYzZjdVZHVZVHNOQUZxK0RqUmFqcHZYUjkxaHg1S3d4OW8vdkVP?= =?utf-8?B?dEdLektVNmdkckQzbVhaalNaYmw3R0E5NjdaY1cvOFp5RW40alY0d3RVaDBG?= =?utf-8?B?aW1XRUs3RUdKa0Nkd0JaZ1REU0V3SnVWSHJrSjRnaUZ4aERWSlhESzZCTkZZ?= =?utf-8?B?cEhleWpxOVQ1WWZNK1pYNHF3NytBNGxpVUpqcEdSZktOUVI3VkU4V3JDMnZ6?= =?utf-8?B?Y1V4cWg4UlZQUGM0UlFOSDBmL0wzSG5tQ2xaTHJXZFc0UkpTcUo4cTlLa0J1?= =?utf-8?B?RWQxZUdBYlF4dmltaXZRSFc1TVZ0WXFqU2lDTzBWVDNDb25yUUU3VzNabWds?= =?utf-8?B?RHo4MUxobEk1RkpiUFI0Rjc5MjR6V28xamFmZmhQMm1EaWk2MmJjUXdpSEV2?= =?utf-8?B?ZTlqUWRtQUhpMkVMT2NLYnZLaTZFUGc4WHBSdXNjbFBlNitBZXRIbUM0NkY4?= =?utf-8?B?QzNwV2FYUXpLRVNNeHRhZG90MDExdWJkVHhlSXdyMENhUVpXbkNlcS9FL3Qy?= =?utf-8?B?cGorYldueUJEb3JIUEdHRTUzYmgrVGltL1llRFVVbVFHdFdOV1JqWlVtWU84?= =?utf-8?B?a3BPNnMxSE92dlU4YWM5a0R3WEtWNGpLU2RzSVdCc1BlU3l1TVdxUWpxY0dv?= =?utf-8?B?UWxKS0dQRnZGTFZzU1JCUkxKcEZWMUR5bktWK2tYRXlYcWJFYUREbGtkUzBI?= =?utf-8?B?bk9EeC9PMStWT1VCQnQyNmFjYXV1VXk1QVYwbDZuR0Q2OUZxMkpvdGRjMG44?= =?utf-8?B?MmVBU1lOWitRZnoxT1FUQTloMFEyQUNSbGNRWVdRSlNXakZmL2lqUUVOQ252?= =?utf-8?B?K0JhYWdvM0Erb3NNWnViUmQ2YVRHZDhYTTdrUEwvZVo4RGFEQUtEdE9MYkpR?= =?utf-8?B?K1o5Slo3MzdadDROSk03ZnRqMS9UNzV4MzBTcTh6VUdkc0hTRmpLejdPclZa?= =?utf-8?B?cHJxNWhYMXZEdGl4U2RhekxRdlgwa2JjQy9ielJ6anRjS1RxVExIYU95Mnhj?= =?utf-8?B?Q2prdTNNYWpoZUYrWXB1RktYMmlvdmdHNEd1cWRCWUc5Y2ZJb1RwN2U1S05v?= =?utf-8?B?WFV4Tlp5QkhmR1BFbEQxRk9HV0RXNzg5UmhUdnEwSVhGNFdDeHlrL2g4eHlm?= =?utf-8?B?QkcxdEgva01IMlRCZ2RTQWFnS0V0VXk5Q3Rsd3F4Z2NhZngxUHE0SGp6SVRP?= =?utf-8?B?d0hSaU9qczJNMDQrSVVOcCs2aElTSFFtaXIyTHVuY3k0eXB6N2JRMDIxbmtw?= =?utf-8?B?bzNjOEkyQnRUcmxhSHhiUnppMGoyMEZZV0dyMnQyYUpaa3NpWk43MzlwSys2?= =?utf-8?B?YmJ0bWN3L3ZnQkJoZEtkRXV3R1BQVGJZekVnUEtPdk5jOHhIYW15Z0lxOG5X?= =?utf-8?B?MTF3OG8yVW9jYmhuY3BIZWIrL0VCMUFDckxpeU5hR25nRmJObHRLSUtGU3Fp?= =?utf-8?Q?anFDnDThOt+GHpiDS5H868Hm78fLLQ=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM8PR11MB5573.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UU95Q2h5a1Y5cHV1Z1JVTDA3N2E4MFpVa0MzQ0JVemZpTkpicG11MVpjQzVk?= =?utf-8?B?S3prakl0cWYyd2ViY2dDS051OU5ydUtycmZ6UjdsL1hFSGNpTE1RTHBFaUNu?= =?utf-8?B?eUdnMHJxWmpLVUpDV2gxRlYxdGdJbGRUbW5EUnV0cmQxelJGTExlUTVtdGRr?= =?utf-8?B?ejNFTWd6dmdSOElzcDIxZHNOSWt3T0xadGRpSTZJSjRvZk5sa2NWS1Ard1k2?= =?utf-8?B?N045R1NFcGVMekhVZ0RqU05UQnZaWTdBak03WU8rWFJNT2tCYTAzTnVLSTR3?= =?utf-8?B?T3gzYnRzc1FDRHViay9uN3NxQ2JEUW1LM0R5VUFnN2Ztd25waXZaQTV5S090?= =?utf-8?B?VDZpbFBmWk9wNEYxRXVZb28rR2I2dnlibG1kWFAwR3ZMMytRbkRQTWRva1FO?= =?utf-8?B?VVg4MkxQUFJLdjhldjJ2Zkp5dC9lSjgrNWNBTE13N1pwcWdPdGFJV0ZHaDZY?= =?utf-8?B?eU1DbzdxYlJja3RQTkNza3ZyY0Ivc05KeERHa2FXYVBxNVBMTGJYcnJTMXkr?= =?utf-8?B?Qk52ck4wSXk3Z0J1ZStzRzBZdUZGS0IzTlNFSjl6Z1pnd0JDaDE0cVR0VE5w?= =?utf-8?B?aFFsQ2VpYkwycDJUT0ZXZk9jM20rZjRMTFltSU11VXd6a1V4N0hqdTZONlFp?= =?utf-8?B?YlhhYTlERDVLdmJIVGNHaTU4MDVwWlZsK3NtMEZPd0VaYm51Q01HS21aRzIv?= =?utf-8?B?OXVnVHlHQXRvTWt6VkJVVm9nYVZOZmRsK1dMQXgxNWpFa3JxcC84SFpLcXho?= =?utf-8?B?djZaVEhIWFh3TWZFbFlBcE0wNWN2ak5TODhIY29tbXVuUkkvaFJhaWRCdCtt?= =?utf-8?B?OWtYWEw2SXNPeG1pZks1TUNPcVN0MG92Y1EzOEZmamxhaGFPTi9nL1Fkekli?= =?utf-8?B?MGczdkRLVnRlT1UvdmsrbmR0RFRBR0dnbWM5K0dMRFVkZjdja0lSZlNWMUJN?= =?utf-8?B?UHZKNVBmM2F6RWxnN2lySDBnTUJFeFJKN2Q0K3pydnhBS3Fpb21lZEhMUS9z?= =?utf-8?B?RWRyNkVSZDlVelZDWlpXdnNibEsrN2dRWGNuM3h6UGNMUHJNcENyZ2pDMG43?= =?utf-8?B?WldBRFV0eUpJa3BCNTgzWHlsRlZwMFZCV09weVlzZjMyNVl0Yy9LeU9LNFF3?= =?utf-8?B?dExvZzRoT29pak5WK0YvcFRUNDdYeEIvTzM2Mm1oNXQvQ3pGK2xseXdEUFFq?= =?utf-8?B?Y0dpVVdPajlPQno1UnBqTjNmb295MlNFYTdSSWoxbHpOYWYvK0ZnUU5QdVpp?= =?utf-8?B?TXFXZnVIODhUVjFMdjBQR2w2KzNDdWpVbEVJVGV2OXNqeGVhV3hFQkczOEt4?= =?utf-8?B?bDR3cHk2Zm9MdTV4VjlmUUhrcnU0T054UmY0dEZ1UzVJVmlYVUhUbXprZVg2?= =?utf-8?B?cVJZenZkYWtiVVdnNmtLVGxOa05SQUpBSVA3VFNVSVBVelhZaExzQmljRTYy?= =?utf-8?B?T2dRK0ZPTkxjWnY3em94M2l2Y3pzdDdaTzZ0N1FMUUxncTQ3dlY3WmJSZnkv?= =?utf-8?B?NlNGUEZ2MWFUUXVJWFZCV1YvUlZPalhURS9oUVpJbU1BT1B0anA3SEwzTTZa?= =?utf-8?B?cWF1Y3JCaUhnUUY1aHBrNHEyVE5kVSszazNIVU55Vk5MNk1wZ29BUC8vdWJs?= =?utf-8?B?bndWMlVtR0dRY0lLYnZoNTBRNlV0Y3ZHM3FKK0M2aTkxV3JjWDJSMzJWTHFL?= =?utf-8?B?VE8rMDNsSmVLc2wrZjdQL3o0dVNiR3BWdGNrUjM3T2xQZDBWY0R3RHZpTy8z?= =?utf-8?B?YWNnMDhhTXBUTi9yckNobHJsRGhqSG1GMS80VHdsQm5JWTZDcGprTVRiN1kz?= =?utf-8?B?OFhubGFPSU5ya0o2NHNJT2poVyt6UUozc3BWK3k2dlFBZVpoZ0R0REF1ZDNF?= =?utf-8?B?U2NNbTI4ckY1TXYwdGxXZ2ovL3B3bE1wOEtJemlPQzhkZ3NHUDB6VlZBdWY3?= =?utf-8?B?Uy9ldTJHVGZIUTlSazNsWTltbE8rUjdxcXNLN3hERHVDa2owbFRwZGwyZSsv?= =?utf-8?B?STduREFmdXpSa1g0ODh5UUhoUkQxaXRRMFhyc3Vram56SFhMWENCTjB1ck1v?= =?utf-8?B?OTl3MmJ2UUcwTDJ4RzQrT2l4dExvVDk3OTFuR1RIMHNnWkgwZlZkY1gxeVZQ?= =?utf-8?B?SXBaVklocUNseEJrSlMxbWdIWUZVOTVyWDFkb2I2NWFPc0RqNjRNZnlQWG9y?= =?utf-8?B?Nnc9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <4147F8BA9344C545AE6485E843394535@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR11MB5573.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8679286d-5e88-4a0b-b5be-08dda909f98b X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jun 2025 17:04:06.2406 (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: kAehgvWoXDrtJi1bu3KVbGoZY+2S8o0MWmq3HqN5PVk5Np/FSnLMFRSl6eNXJdFYS5agmQz0Upk4lZ2HlSqxHGScHFLt1iJo9WOlhqo22WQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR11MB7934 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" T24gV2VkLCAyMDI1LTA2LTExIGF0IDA5OjQ2IC0wNzAwLCBNYXR0aGV3IEJyb3N0IHdyb3RlOgo+ IE9uIFdlZCwgSnVuIDExLCAyMDI1IGF0IDEwOjI2OjQ0QU0gLTA2MDAsIFN1bW1lcnMsIFN0dWFy dCB3cm90ZToKPiA+IE9uIFR1ZSwgMjAyNS0wNi0xMCBhdCAyMjo0MiAtMDcwMCwgTWF0dGhldyBC cm9zdCB3cm90ZToKPiA+ID4gQ2xlYXJpbmcgb24gZnJlZSBzaG91bGQgaGlkZSBsYXRlbmN5IG9m IEJPIGNsZWFycyBvbiBuZXcgdXNlciBCTwo+ID4gPiBhbGxvY2F0aW9ucy4KPiA+IAo+ID4gRG8g eW91IGhhdmUgYW55IHRlc3QgcmVzdWx0cyBzaG93aW5nIHRoZSBsYXRlbmN5IGltcHJvdmVtZW50 IGhlcmUKPiA+IG9uCj4gPiBoaWdoIHZvbHVtZSBzdWJtaXNzaW9uIHRlc3RzPyBBbHNvIGhvdyBk b2VzIHRoaXMgaW1wYWN0IGF0IHZlcnkKPiA+IGxhcmdlCj4gCj4gTm8gcGVyZm9ybWFuY2UgZGF0 YSB5ZXQgYXZhaWxhYmxlLiBTb21ldGhpbmcgd2UgZGVmaW5pdGVseSBzaG91bGQKPiBsb29rCj4g aW50byBhbmQgd291bGQgYmUgY3VyaW91cyBhYm91dCB0aGUgcmVzdWx0cy4gRldJVywgQU1ER1BV IGltcGxlbWVudHMKPiBjbGVhciBvbiBmcmVlIGluIGEgdmVyeSBzaW1pbGFyIHdheSB0byB0aGlz IHNlcmllcy4gCgpJIGhhZCBhIGZldyBvdGhlciBjb21tZW50cyB0b3dhcmRzIHRoZSBlbmQgb2Yg dGhlIHBhdGNoLiBCYXNpY2FsbHkgSQp0aGluayBpdCB3b3VsZCBiZSBuaWNlIHRvIGJlIGFibGUg dG8gY29uZmlndXJlIHRoaXMuIFRoZXJlIHdhcwpzaWduaWZpY2FudCB0ZXN0aW5nIGRvbmUgaGVy ZSBmb3IgQXVyb3JhIGluIGk5MTUgYW5kIHRoZSBwZXJmb3JtYW5jZQpiZW5lZml0cyB3ZXJlIHBv dGVudGlhbGx5IGRpZmZlcmVudCBiYXNlZCBvbiB0aGUgdHlwZXMgb2Ygd29ya2xvYWRzCmJlaW5n IHVzZWQuIEhhdmluZyB1c2VyIGhpbnRzIGZvciBpbnN0YW5jZSBtaWdodCBhbGxvdyB1cyB0byB0 YWtlCmFkdmFudGFnZSBvZiB0aG9zZSB3b3JrbG9hZCBzcGVjaWZpYyB1c2UgY2FzZXMuCgo+IAo+ ID4gYnVmZmVyIHNpemUgc3VibWlzc2lvbnMgYW5kIG1peCBvZiBsYXJnZSBhbmQgc21hbGwgYnVm ZmVyCj4gPiBzdWJtaXNzaW9ucwo+ID4gd2l0aCBldmljdGlvbiBiZXR3ZWVuIGRpZmZlcmVudCBw cm9jZXNzZXM/Cj4gPiAKPiAKPiBFdmljdGlvbiBzb21ld2hhdCBvcnRob2dvbmFsIHRvIHRoaXMu IElmIGFuIGV2aWN0aW9uIG9jY3VycyBhbmQgaXQgaXMKPiBhCj4gbmV3IGFsbG9jYXRpb24gYSBj bGVhciB3b3VsZCBzdGlsbCBoYXZlIGJlIGlzc3VlZCBhaGVhZCBoYW5kaW5nIHRoZQo+IG1lbW9y eSBvdmVyIHRvIHRoZSBuZXcgQk8sIGlmIGV2aWN0aW9uIG9jY3VycyBhbmQgcGFnZWQgaW4gQk8g aGFzCj4gYmFja2luZyBzdG9yZSAoaXQgd2FzIHByZXZpb3VzbHkgZXZpY3RlZCkgd2UnZCBqdXN0 IGNvcHkgdGhlIGNvbnRlbnRzCj4gaW50byB0aGUgYWxsb2NhdGVkIG1lbW9yeS4KCkdvb2QgcG9p bnQuIEkgc3RpbGwgdGhpbmsgd2Ugc2hvdWxkIGNvbnNpZGVyIHRoZSBzY2VuYXJpb3Mgb2YgaGF2 aW5nIGEKbGFyZ2UgYnVmZmVyIHdvcmtsb2FkIHJ1bm5pbmcgYW5kIHRoZW4gY2xlYXJpbmcsIHRo ZW4gd2UgaGF2ZSBhIHNtYWxsCmJ1ZmZlciB3b3JrbG9hZCBjb21pbmcgaW4gd2hpY2ggbm93IG5l ZWRzIHRvIHdhaXQgb24gdGhlIGNsZWFyIGZyb20KdGhhdCBsYXJnZSB3b3JrbG9hZC4gV2hlcmVh cyBvbiBjbGVhci1vbi1hbGxvYyBmb3IgdGhlIHNtYWxsIHdvcmtsb2FkLAp3ZSBjYW4gZ2V0IHRo YXQgc3VibWlzc2lvbiBpbiBxdWlja2x5IGFuZCBub3Qgd2FpdCBmb3IgdGhhdCBsYXJnZXIgb25l LgoKSSBkb24ndCB0aGluayB0aGVyZSBpcyBuZWNlc3NhcmlseSBhIG9uZS1zaXplLWZpdHMtYWxs IHNvbHV0aW9uIGhlcmUKd2hpY2ggaXMgd2h5IEkgdGhpbmsgdGhlIGhpbnRzIGFyZSBpbXBvcnRh bnQuCgpUaGFua3MsClN0dWFydAoKPiAKPiBNYXR0Cj4gCj4gPiA+IAo+ID4gPiBJbXBsZW1lbnRl ZCB2aWEgY2FsbGluZyB4ZV9taWdyYXRlX2NsZWFyIGluIHJlbGVhc2Ugbm90aWZ5IGFuZAo+ID4g PiB1cGRhdGluZwo+ID4gPiBpdGVyYXRvciBpbiB4ZV9taWdyYXRlX2NsZWFyIHRvIHNraXAgY2xl YXJlZCBidWRkeSBibG9ja3MuIE9ubHkKPiA+ID4gdXNlcgo+ID4gPiBCT3MKPiA+ID4gY2xlYXJl ZCBpbiByZWxlYXNlIG5vdGlmeSBhcyBrZXJuZWwgQk9zIGNvdWxkIHN0aWxsIGJlIGluIHVzZQo+ ID4gPiAoZS5nLiwKPiA+ID4gUFQKPiA+ID4gQk9zIG5lZWQgdG8gd2FpdCBmb3IgZG1hLXJlc3Yg dG8gYmUgaWRsZSkuCj4gPiA+IAo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEJyb3N0IDxt YXR0aGV3LmJyb3N0QGludGVsLmNvbT4KPiA+ID4gLS0tCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJt L3hlL3hlX2JvLmPCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQ3Cj4gPiA+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysKPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfbWlncmF0ZS5jwqDC oMKgwqDCoCB8IDE0ICsrKysrKy0tLQo+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9taWdy YXRlLmjCoMKgwqDCoMKgIHzCoCAxICsKPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfcmVz X2N1cnNvci5owqDCoCB8IDI2ICsrKysrKysrKysrKysrKwo+ID4gPiDCoGRyaXZlcnMvZ3B1L2Ry bS94ZS94ZV90dG1fdnJhbV9tZ3IuYyB8wqAgNSArKy0KPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0v eGUveGVfdHRtX3ZyYW1fbWdyLmggfMKgIDYgKysrKwo+ID4gPiDCoDYgZmlsZXMgY2hhbmdlZCwg OTQgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0veGUveGVfYm8uYwo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS94ZS94 ZV9iby5jCj4gPiA+IGluZGV4IDRlMzkxODhhMDIxYS4uNzQ0NzBmNGQ0MThkIDEwMDY0NAo+ID4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfYm8uYwo+ID4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0veGUveGVfYm8uYwo+ID4gPiBAQCAtMTQzNCw2ICsxNDM0LDUxIEBAIHN0YXRpYyBib29s Cj4gPiA+IHhlX3R0bV9ib19sb2NrX2luX2Rlc3RydWN0b3Ioc3RydWN0IHR0bV9idWZmZXJfb2Jq ZWN0ICp0dG1fYm8pCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gbG9ja2VkOwo+ID4gPiDC oH0KPiA+ID4gwqAKPiA+ID4gK3N0YXRpYyB2b2lkIHhlX3R0bV9ib19yZWxlYXNlX2NsZWFyKHN0 cnVjdCB0dG1fYnVmZmVyX29iamVjdAo+ID4gPiAqdHRtX2JvKQo+ID4gPiArewo+ID4gPiArwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZGV2aWNlICp4ZSA9IHR0bV90b194ZV9kZXZpY2UodHRtX2Jv LT5iZGV2KTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7Cj4g PiA+ICvCoMKgwqDCoMKgwqDCoGludCBlcnIsIGlkeDsKPiA+ID4gKwo+ID4gPiArwqDCoMKgwqDC oMKgwqB4ZV9ib19hc3NlcnRfaGVsZCh0dG1fdG9feGVfYm8odHRtX2JvKSk7Cj4gPiA+ICsKPiA+ ID4gK8KgwqDCoMKgwqDCoMKgaWYgKHR0bV9iby0+dHlwZSAhPSB0dG1fYm9fdHlwZV9kZXZpY2Up Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gPiA+ICsKPiA+ ID4gK8KgwqDCoMKgwqDCoMKgaWYgKHhlX2RldmljZV93ZWRnZWQoeGUpKQo+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOwo+ID4gPiArCj4gPiA+ICvCoMKgwqDCoMKg wqDCoGlmICghdHRtX2JvLT5yZXNvdXJjZSB8fCAhbWVtX3R5cGVfaXNfdnJhbSh0dG1fYm8tCj4g PiA+ID5yZXNvdXJjZS0KPiA+ID4gPiBtZW1fdHlwZSkpCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gPiA+ICsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFk cm1fZGV2X2VudGVyKCZ4ZS0+ZHJtLCAmaWR4KSkKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJldHVybjsKPiA+ID4gKwo+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAoIXhlX3Bt X3J1bnRpbWVfZ2V0X2lmX2FjdGl2ZSh4ZSkpCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBnb3RvIHVuYmluZDsKPiA+ID4gKwo+ID4gPiArwqDCoMKgwqDCoMKgwqBlcnIgPSBk bWFfcmVzdl9yZXNlcnZlX2ZlbmNlcygmdHRtX2JvLT5iYXNlLl9yZXN2LCAxKTsKPiA+ID4gK8Kg wqDCoMKgwqDCoMKgaWYgKGVycikKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGdvdG8gcHV0X3BtOwo+ID4gPiArCj4gPiA+ICvCoMKgwqDCoMKgwqDCoGZlbmNlID0geGVfbWln cmF0ZV9jbGVhcihtZW1fdHlwZV90b19taWdyYXRlKHhlLCB0dG1fYm8tCj4gPiA+ID4gcmVzb3Vy Y2UtPm1lbV90eXBlKSwKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHR0bV90b194ZV9ibyh0dG1fYm8pLCB0dG1fYm8t Cj4gPiA+ID4gcmVzb3VyY2UsCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBYRV9NSUdSQVRFX0NMRUFSX0ZMQUdfRlVM TCB8Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBYRV9NSUdSQVRFX0NMRUFSX05PTl9ESVJUWSk7Cj4gPiA+ICvCoMKg wqDCoMKgwqDCoGlmIChYRV9XQVJOX09OKElTX0VSUihmZW5jZSkpKQo+ID4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBwdXRfcG07Cj4gPiA+ICsKPiA+ID4gK8KgwqDCoMKg wqDCoMKgeGVfdHRtX3ZyYW1fbWdyX3Jlc291cmNlX3NldF9jbGVhcmVkKHR0bV9iby0+cmVzb3Vy Y2UpOwo+ID4gPiArwqDCoMKgwqDCoMKgwqBkbWFfcmVzdl9hZGRfZmVuY2UoJnR0bV9iby0+YmFz ZS5fcmVzdiwgZmVuY2UsCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBETUFfUkVTVl9VU0FHRV9LRVJORUwpOwo+ID4gPiArwqDCoMKgwqDC oMKgwqBkbWFfZmVuY2VfcHV0KGZlbmNlKTsKPiA+ID4gKwo+ID4gPiArcHV0X3BtOgo+ID4gPiAr wqDCoMKgwqDCoMKgwqB4ZV9wbV9ydW50aW1lX3B1dCh4ZSk7Cj4gPiA+ICt1bmJpbmQ6Cj4gPiA+ ICvCoMKgwqDCoMKgwqDCoGRybV9kZXZfZXhpdChpZHgpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ IMKgc3RhdGljIHZvaWQgeGVfdHRtX2JvX3JlbGVhc2Vfbm90aWZ5KHN0cnVjdCB0dG1fYnVmZmVy X29iamVjdAo+ID4gPiAqdHRtX2JvKQo+ID4gPiDCoHsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCBkbWFfcmVzdl9pdGVyIGN1cnNvcjsKPiA+ID4gQEAgLTE0NzgsNiArMTUyMyw4IEBAIHN0 YXRpYyB2b2lkIHhlX3R0bV9ib19yZWxlYXNlX25vdGlmeShzdHJ1Y3QKPiA+ID4gdHRtX2J1ZmZl cl9vYmplY3QgKnR0bV9ibykKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoH0KPiA+ID4gwqDCoMKgwqDC oMKgwqDCoGRtYV9mZW5jZV9wdXQocmVwbGFjZW1lbnQpOwo+ID4gPiDCoAo+ID4gPiArwqDCoMKg wqDCoMKgwqB4ZV90dG1fYm9fcmVsZWFzZV9jbGVhcih0dG1fYm8pOwo+ID4gPiArCj4gPiA+IMKg wqDCoMKgwqDCoMKgwqBkbWFfcmVzdl91bmxvY2sodHRtX2JvLT5iYXNlLnJlc3YpOwo+ID4gPiDC oH0KPiA+ID4gwqAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9taWdy YXRlLmMKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfbWlncmF0ZS5jCj4gPiA+IGluZGV4 IDhmOGU5ZmRmYjJhOC4uMzlkNzIwMGNiMzY2IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0veGUveGVfbWlncmF0ZS5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9t aWdyYXRlLmMKPiA+ID4gQEAgLTEwNjMsNyArMTA2Myw3IEBAIHN0cnVjdCBkbWFfZmVuY2UgKnhl X21pZ3JhdGVfY2xlYXIoc3RydWN0Cj4gPiA+IHhlX21pZ3JhdGUgKm0sCj4gPiA+IMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgeGVfZ3QgKmd0ID0gbS0+dGlsZS0+cHJpbWFyeV9ndDsKPiA+ID4gwqDC oMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9kZXZpY2UgKnhlID0gZ3RfdG9feGUoZ3QpOwo+ID4gPiDC oMKgwqDCoMKgwqDCoMKgYm9vbCBjbGVhcl9vbmx5X3N5c3RlbV9jY3MgPSBmYWxzZTsKPiA+ID4g LcKgwqDCoMKgwqDCoMKgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UgPSBOVUxMOwo+ID4gPiArwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSA9IGRtYV9mZW5jZV9nZXRfc3R1Yigp Owo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgdTY0IHNpemUgPSBiby0+c2l6ZTsKPiA+ID4gwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCB4ZV9yZXNfY3Vyc29yIHNyY19pdDsKPiA+ID4gwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCB0dG1fcmVzb3VyY2UgKnNyYyA9IGRzdDsKPiA+ID4gQEAgLTEwNzUsMTAgKzEw NzUsMTMgQEAgc3RydWN0IGRtYV9mZW5jZSAqeGVfbWlncmF0ZV9jbGVhcihzdHJ1Y3QKPiA+ID4g eGVfbWlncmF0ZSAqbSwKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGlmICghY2xlYXJfYm9fZGF0YSAm JiBjbGVhcl9jY3MgJiYgIUlTX0RHRlgoeGUpKQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGNsZWFyX29ubHlfc3lzdGVtX2NjcyA9IHRydWU7Cj4gPiA+IMKgCj4gPiA+IC3C oMKgwqDCoMKgwqDCoGlmICghY2xlYXJfdnJhbSkKPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFj bGVhcl92cmFtKSB7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfcmVz X2ZpcnN0X3NnKHhlX2JvX3NnKGJvKSwgMCwgYm8tPnNpemUsCj4gPiA+ICZzcmNfaXQpOwo+ID4g PiAtwqDCoMKgwqDCoMKgwqBlbHNlCj4gPiA+ICvCoMKgwqDCoMKgwqDCoH0gZWxzZSB7Cj4gPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfcmVzX2ZpcnN0KHNyYywgMCwgYm8t PnNpemUsICZzcmNfaXQpOwo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KCEoY2xlYXJfZmxhZ3MgJiBYRV9NSUdSQVRFX0NMRUFSX05PTl9ESVJUWSkpCj4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2l6ZSAtPSB4ZV9yZXNf bmV4dF9kaXJ0eSgmc3JjX2l0KTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gPiDCoAo+ID4g PiDCoMKgwqDCoMKgwqDCoMKgd2hpbGUgKHNpemUpIHsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB1NjQgY2xlYXJfTDBfb2ZzOwo+ID4gPiBAQCAtMTEyNSw2ICsxMTI4LDkg QEAgc3RydWN0IGRtYV9mZW5jZSAqeGVfbWlncmF0ZV9jbGVhcihzdHJ1Y3QKPiA+ID4geGVfbWln cmF0ZSAqbSwKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZW1pdF9wdGUobSwgYmIsIGNsZWFyX0wwX3B0LCBjbGVhcl92cmFtLAo+ID4gPiBjbGVh cl9vbmx5X3N5c3RlbV9jY3MsCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnNyY19pdCwgY2xlYXJfTDAsIGRzdCk7 Cj4gPiA+IMKgCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoY2xlYXJf dnJhbSAmJiAhKGNsZWFyX2ZsYWdzICYKPiA+ID4gWEVfTUlHUkFURV9DTEVBUl9OT05fRElSVFkp KQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNp emUgLT0geGVfcmVzX25leHRfZGlydHkoJnNyY19pdCk7Cj4gPiA+ICsKPiA+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBiYi0+Y3NbYmItPmxlbisrXSA9IE1JX0JBVENIX0JVRkZF Ul9FTkQ7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdXBkYXRlX2lkeCA9 IGJiLT5sZW47Cj4gPiA+IMKgCj4gPiA+IEBAIC0xMTQ2LDcgKzExNTIsNyBAQCBzdHJ1Y3QgZG1h X2ZlbmNlICp4ZV9taWdyYXRlX2NsZWFyKHN0cnVjdAo+ID4gPiB4ZV9taWdyYXRlICptLAo+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ID4gwqAKPiA+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9zY2hlZF9qb2JfYWRkX21pZ3JhdGVfZmx1c2go am9iLCBmbHVzaF9mbGFncyk7Cj4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp ZiAoIWZlbmNlKSB7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZmVu Y2UgPT0gZG1hX2ZlbmNlX2dldF9zdHViKCkpIHsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogVGhlcmUgY2FuJ3QgYmUgYW55dGhpbmcgdXNl cnNwYWNlCj4gPiA+IHJlbGF0ZWQKPiA+ID4gYXQgdGhpcwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBwb2ludCwgc28gd2UganVzdCBuZWVk IHRvIHJlc3BlY3QgYW55Cj4gPiA+IHBvdGVudGlhbCBtb3ZlCj4gPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0veGUveGVfbWlncmF0ZS5oCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hl L3hlX21pZ3JhdGUuaAo+ID4gPiBpbmRleCBmYjk4MzljMWJhZTAuLjU4YTdiNzQ3ZWYxMSAxMDA2 NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX21pZ3JhdGUuaAo+ID4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0veGUveGVfbWlncmF0ZS5oCj4gPiA+IEBAIC0xMTgsNiArMTE4LDcg QEAgaW50IHhlX21pZ3JhdGVfYWNjZXNzX21lbW9yeShzdHJ1Y3QKPiA+ID4geGVfbWlncmF0ZQo+ ID4gPiAqbSwgc3RydWN0IHhlX2JvICpibywKPiA+ID4gwqAKPiA+ID4gwqAjZGVmaW5lIFhFX01J R1JBVEVfQ0xFQVJfRkxBR19CT19EQVRBwqDCoMKgwqDCoMKgwqDCoMKgwqBCSVQoMCkKPiA+ID4g wqAjZGVmaW5lIFhFX01JR1JBVEVfQ0xFQVJfRkxBR19DQ1NfREFUQcKgwqDCoMKgwqDCoMKgwqDC oEJJVCgxKQo+ID4gPiArI2RlZmluZSBYRV9NSUdSQVRFX0NMRUFSX05PTl9ESVJUWcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgQklUKDIpCj4gPiA+IMKgI2RlZmluZQo+ID4gPiBYRV9NSUdSQVRF X0NMRUFSX0ZMQUdfRlVMTMKgwqDCoMKgwqAoWEVfTUlHUkFURV9DTEVBUl9GTEFHX0JPX0RBVEEg fCBcCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgWEVfTUlHUkFURV9DTEVBUl9GTEFHX0ND Uwo+ID4gPiBfREFUCj4gPiA+IEEpCj4gPiA+IMKgc3RydWN0IGRtYV9mZW5jZSAqeGVfbWlncmF0 ZV9jbGVhcihzdHJ1Y3QgeGVfbWlncmF0ZSAqbSwKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS94ZS94ZV9yZXNfY3Vyc29yLmgKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVf cmVzX2N1cnNvci5oCj4gPiA+IGluZGV4IGQxYTQwM2NmYjYyOC4uNjMwMDgyZTgwOWJhIDEwMDY0 NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfcmVzX2N1cnNvci5oCj4gPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yZXNfY3Vyc29yLmgKPiA+ID4gQEAgLTMxNSw2ICsz MTUsMzIgQEAgc3RhdGljIGlubGluZSB2b2lkIHhlX3Jlc19uZXh0KHN0cnVjdAo+ID4gPiB4ZV9y ZXNfY3Vyc29yICpjdXIsIHU2NCBzaXplKQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gPiDC oH0KPiA+ID4gwqAKPiA+ID4gKy8qKgo+ID4gPiArICogeGVfcmVzX25leHRfZGlydHkgLSBhZHZh bmNlIHRoZSBjdXJzb3IgdG8gbmV4dCBkaXJ0eSBidWRkeQo+ID4gPiBibG9jawo+ID4gPiArICoK PiA+ID4gKyAqIEBjdXI6IHRoZSBjdXJzb3IgdG8gYWR2YW5jZQo+ID4gPiArICoKPiA+ID4gKyAq IE1vdmUgdGhlIGN1cnNvciB1bnRpbCBkaXJ0eSBidWRkeSBibG9jayBpcyBmb3VuZC4KPiA+ID4g KyAqCj4gPiA+ICsgKiBSZXR1cm46IE51bWJlciBvZiBieXRlcyBjdXJzb3IgaGFzIGJlZW4gYWR2 YW5jZWQKPiA+ID4gKyAqLwo+ID4gPiArc3RhdGljIGlubGluZSB1NjQgeGVfcmVzX25leHRfZGly dHkoc3RydWN0IHhlX3Jlc19jdXJzb3IgKmN1cikKPiA+ID4gK3sKPiA+ID4gK8KgwqDCoMKgwqDC oMKgc3RydWN0IGRybV9idWRkeV9ibG9jayAqYmxvY2sgPSBjdXItPm5vZGU7Cj4gPiA+ICvCoMKg wqDCoMKgwqDCoHU2NCBieXRlcyA9IDA7Cj4gPiA+ICsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgWEVf V0FSTl9PTihjdXItPm1lbV90eXBlICE9IFhFX1BMX1ZSQU0wICYmCj4gPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGN1ci0+bWVtX3R5cGUgIT0gWEVfUExfVlJBTTEpOwo+ ID4gCj4gPiBXaGF0IGlmIHdlIGhhdmUgbW9yZSB0aGFuIGp1c3QgdGhlc2UgdHdvPyBNYXliZSBj aGVjayBhZ2FpbnN0IHRoZQo+ID4gbWFzawo+ID4gaW5zdGVhZC4KPiA+IAo+ID4gPiArCj4gPiA+ ICvCoMKgwqDCoMKgwqDCoHdoaWxlIChjdXItPnJlbWFpbmluZyAmJiBkcm1fYnVkZHlfYmxvY2tf aXNfY2xlYXIoYmxvY2spKQo+ID4gPiB7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBieXRlcyArPSBjdXItPnNpemU7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB4ZV9yZXNfbmV4dChjdXIsIGN1ci0+c2l6ZSk7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBibG9jayA9IGN1ci0+bm9kZTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ ID4gPiArCj4gPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBieXRlczsKPiA+ID4gK30KPiA+ID4g Kwo+ID4gPiDCoC8qKgo+ID4gPiDCoCAqIHhlX3Jlc19kbWEgLSByZXR1cm4gZG1hIGFkZHJlc3Mg b2YgY3Vyc29yIGF0IGN1cnJlbnQgcG9zaXRpb24KPiA+ID4gwqAgKgo+ID4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3R0bV92cmFtX21nci5jCj4gPiA+IGIvZHJpdmVycy9n cHUvZHJtL3hlL3hlX3R0bV92cmFtX21nci5jCj4gPiA+IGluZGV4IDllMzc1YTQwYWVlOS4uMTIw MDQ2OTQxYzFlIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfdHRtX3Zy YW1fbWdyLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3R0bV92cmFtX21nci5j Cj4gPiA+IEBAIC04NCw2ICs4NCw5IEBAIHN0YXRpYyBpbnQgeGVfdHRtX3ZyYW1fbWdyX25ldyhz dHJ1Y3QKPiA+ID4gdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiwKPiA+ID4gwqDCoMKgwqDCoMKg wqDCoGlmIChwbGFjZS0+ZnBmbiB8fCBscGZuICE9IG1hbi0+c2l6ZSA+PiBQQUdFX1NISUZUKQo+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZyZXMtPmZsYWdzIHw9IERSTV9C VUREWV9SQU5HRV9BTExPQ0FUSU9OOwo+ID4gPiDCoAo+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAo dGJvLT50eXBlID09IHR0bV9ib190eXBlX2RldmljZSkKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHZyZXMtPmZsYWdzIHw9IERSTV9CVUREWV9DTEVBUl9BTExPQ0FUSU9OOwo+ ID4gPiArCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoV0FSTl9PTighdnJlcy0+YmFzZS5zaXpl KSkgewo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9IC1FSU5WQUw7 Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBlcnJvcl9maW5pOwo+ ID4gPiBAQCAtMTg3LDcgKzE5MCw3IEBAIHN0YXRpYyB2b2lkIHhlX3R0bV92cmFtX21ncl9kZWwo c3RydWN0Cj4gPiA+IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4sCj4gPiA+IMKgwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgZHJtX2J1ZGR5ICptbSA9ICZtZ3ItPm1tOwo+ID4gPiDCoAo+ID4gPiDCoMKg wqDCoMKgwqDCoMKgbXV0ZXhfbG9jaygmbWdyLT5sb2NrKTsKPiA+ID4gLcKgwqDCoMKgwqDCoMKg ZHJtX2J1ZGR5X2ZyZWVfbGlzdChtbSwgJnZyZXMtPmJsb2NrcywgMCk7Cj4gPiA+ICvCoMKgwqDC oMKgwqDCoGRybV9idWRkeV9mcmVlX2xpc3QobW0sICZ2cmVzLT5ibG9ja3MsIHZyZXMtPmZsYWdz KTsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoG1nci0+dmlzaWJsZV9hdmFpbCArPSB2cmVzLT51c2Vk X3Zpc2libGVfc2l6ZTsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoG11dGV4X3VubG9jaygmbWdyLT5s b2NrKTsKPiA+ID4gwqAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV90 dG1fdnJhbV9tZ3IuaAo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV90dG1fdnJhbV9tZ3Iu aAo+ID4gPiBpbmRleCBjYzc2MDUwZTM3NmQuLmRmYzBlNjg5MGIzYyAxMDA2NDQKPiA+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3R0bV92cmFtX21nci5oCj4gPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS94ZS94ZV90dG1fdnJhbV9tZ3IuaAo+ID4gPiBAQCAtMzYsNiArMzYsMTIgQEAg dG9feGVfdHRtX3ZyYW1fbWdyX3Jlc291cmNlKHN0cnVjdAo+ID4gPiB0dG1fcmVzb3VyY2UKPiA+ ID4gKnJlcykKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBjb250YWluZXJfb2YocmVzLCBz dHJ1Y3QgeGVfdHRtX3ZyYW1fbWdyX3Jlc291cmNlLAo+ID4gPiBiYXNlKTsKPiA+ID4gwqB9Cj4g PiA+IMKgCj4gPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQKPiA+ID4gK3hlX3R0bV92cmFtX21ncl9y ZXNvdXJjZV9zZXRfY2xlYXJlZChzdHJ1Y3QgdHRtX3Jlc291cmNlICpyZXMpCj4gPiA+ICt7Cj4g PiA+ICvCoMKgwqDCoMKgwqDCoHRvX3hlX3R0bV92cmFtX21ncl9yZXNvdXJjZShyZXMpLT5mbGFn cyB8PQo+ID4gPiBEUk1fQlVERFlfQ0xFQVJFRDsKPiA+IAo+ID4gSSBzZWUgdGhlIGFtZCBkcml2 ZXIgaXMgZG9pbmcgdGhlIHNhbWUgdGhpbmcgaGVyZS4gTWF5YmUgd2UgY2FuCj4gPiBwdWxsCj4g PiB0aGlzIGluIGJhc2VkIG9uIHRoZSBmbGFncyBnaXZlbiBhdCB0aGUgcmVzb3VyY2UgaW5pdGlh bGl6YXRpb24gc28KPiA+IHdlCj4gPiBjYW4gcG90ZW50aWFsbHkgdHdlYWsgdGhpcyBmb3IgZGlm ZmVyZW50IHNjZW5hcmlvcyAod2hlbiB0byBmcmVlKQo+ID4gYW5kCj4gPiBjb252ZXJnZSB3aGF0 IHdlJ3JlIGRvaW5nIGhlcmUgYW5kIHdoYXQgYW1kIGlzIGRvaW5nIGludG8gdGhlCj4gPiBjb21t b24KPiA+IGNvZGUuCj4gPiAKPiA+IFRoYW5rcywKPiA+IFN0dWFydAo+ID4gCj4gPiA+ICt9Cj4g PiA+ICsKPiA+ID4gwqBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZV90dG1fdnJhbV9tZ3IgKgo+ID4g PiDCoHRvX3hlX3R0bV92cmFtX21ncihzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbikK PiA+ID4gwqB7Cj4gPiAKCg==