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 98477109C05D for ; Wed, 25 Mar 2026 20:35:33 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 55C8410E8FC; Wed, 25 Mar 2026 20:35:33 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="Z518W+U9"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9484110E8FC for ; Wed, 25 Mar 2026 20:35:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1774470932; x=1806006932; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=Brs3/JDKN0B/7yREWVxanIjARUxafyGRbufk7Ahv8ek=; b=Z518W+U9+cB5updvEceaTyuuyAWCFxnAH1HN8qZqXRfAW6aDJJbmeDDp 2ce/0HdszGZ5ah8BngIm1YXwC5SWkCRRWM0GhjihyhRPkzQDfO8jSGtcJ z2zN5p5R9c82vsku2Z/2SA5SLTogHMQDYedTYysQ7mkNwF8z50KKoOfEy Vx1q32iR27aAwXbxaCLwWOqmeKB6HW6V//NhjUUqsH6ha4pAqdA8M5wOa VNqO6088JVdtROcQdZIGygZKqFL1jPQOx0tfKr7l9QSbJqCxZ5tewy1Vc rh2lgUl3zdlGWCCyRyQ/beQmY/trkq7lAka11ydF5sAX1bIxlqkLpVhJX Q==; X-CSE-ConnectionGUID: N16LOYAYQiOLw41xEVkbeQ== X-CSE-MsgGUID: HY8EWF5BTpWD+eIzEp/tEw== X-IronPort-AV: E=McAfee;i="6800,10657,11740"; a="74547898" X-IronPort-AV: E=Sophos;i="6.23,140,1770624000"; d="scan'208";a="74547898" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Mar 2026 13:35:32 -0700 X-CSE-ConnectionGUID: rKSe06WMRnK/4sAd4WpzeQ== X-CSE-MsgGUID: 837sTrf+TlWY4y8Tjj5xlw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,140,1770624000"; d="scan'208";a="224801496" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by orviesa008.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Mar 2026 13:35:32 -0700 Received: from ORSMSX902.amr.corp.intel.com (10.22.229.24) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Wed, 25 Mar 2026 13:35:31 -0700 Received: from ORSEDG901.ED.cps.intel.com (10.7.248.11) 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.2562.37 via Frontend Transport; Wed, 25 Mar 2026 13:35:31 -0700 Received: from PH8PR06CU001.outbound.protection.outlook.com (40.107.209.4) 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.2562.37; Wed, 25 Mar 2026 13:35:31 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DEqAtjqRqYn/edWKrgFLBiXGxRM5iOYLYBoLomvXU6VP6o2ZHJIqAQGcBWbQIJYLPrt2SV622lwSrJpbbkAIb+VhobK2ZZItjYR9QH59xaDuP35GccLNL4d9UTU+AuoOvj1+tnPzPG6xXwzZq3kW+oSUJqvDt4t1XM3FLI920NRLVht8amb4pByT9GAUogbFmyC7Q/jjfQRo6t5Nxn5liqAulSagO5oGdW96CwpX8ggiLlZIae0PePqMD1v/nhHoBl9Merr69zyANi00oVDmRzNqj9iN7xssmSlWcfJ03dCiw9nyQeQCblafbDfiSkHCI72uBHo6GU2I+ds8LY/g4Q== 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=Brs3/JDKN0B/7yREWVxanIjARUxafyGRbufk7Ahv8ek=; b=YdIlE/u2ai7jwtXiuQJR90O/YjRapZ3Urn2eXlKp16NDq8QjbN64lV5oTTkaCp2FmBRgfiCuOw/tw3EMkdW/3djAq/xvhOxQpyC25GYpMSTjAZUnpP2vTDF+c35vViV5ck/SzmaHgK25rXzG+GVTazTk7Z2nJsK5AzT3BTcyBIIegaiO64bdCE9gs8OhZ1kAknC46NaLAkgCuS6n0dEGma+RRyepcEUYj3YyJHAvDA1hE5DI9yuRU9d0AkV5gePD0B+xzNoJopFVjjyEIyXZsItvT3goOsZSSCYpZUpmiQM1CJ6FlJwqlwVzPz1zZBsfqxZe3YSE2xcgEma14n1cWg== 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 SJ2PR11MB7504.namprd11.prod.outlook.com (2603:10b6:a03:4c5::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.15; Wed, 25 Mar 2026 20:35:26 +0000 Received: from DM8PR11MB5573.namprd11.prod.outlook.com ([fe80::6a14:6aa3:4339:4415]) by DM8PR11MB5573.namprd11.prod.outlook.com ([fe80::6a14:6aa3:4339:4415%5]) with mapi id 15.20.9769.004; Wed, 25 Mar 2026 20:35:26 +0000 From: "Summers, Stuart" To: "Brost, Matthew" CC: "intel-xe@lists.freedesktop.org" , "Vishwanathapura, Niranjana" Subject: Re: [PATCH] drm/xe: Always invalidate TLBs on userptr invalidation Thread-Topic: [PATCH] drm/xe: Always invalidate TLBs on userptr invalidation Thread-Index: AQHcuwqDvtaeByK1NkStSwXNeI4hObW887mAgADSHoCAAHTBAIAAIiSAgAFa/wA= Date: Wed, 25 Mar 2026 20:35:26 +0000 Message-ID: References: <20260323211743.285064-1-stuart.summers@intel.com> <0e9794ab3a16896d0790289750f56538602798e6.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_|SJ2PR11MB7504:EE_ x-ms-office365-filtering-correlation-id: c8e19deb-348d-4e37-2544-08de8aae0bde x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|1800799024|38070700021|22082099003|56012099003|18002099003; x-microsoft-antispam-message-info: LkE2if0VS+SL2BdTlNxL7Ui0fzJ4rt8OL74Wy7Xi7nqRmHqBJnv6SfVZuoOVuM04fD3ZlUwWy2D77DUPKEF/GbKkcAgF3D3YYJzBZ8oLYMSDCRGbxdMpyy773sQ85tcqHOrGw8AZTNd5cMYAMbWo0p3VuoU1QDwOzKj8ayPZpPdV/7etw7OeCkw1H1Miy9ROdqi0ZK5GbblYrh7C6obh4wfuLOr3RIztSQvVZGJnSK7qKPnpLpj2eUc17ZvVicrt0rWzjocQJ//gZRCB7dLH6HI5183uOoAUkvmc4S0drIXu0oD49J4yFZUs/69qUydBD6p2pjWzQXYt2IwJF9kKBJtvXdXOhxq5eZ1EesWx22WRq2fyRyer3tHWwHFhLEoRst8gEsEdjJwzfkJITRId7Z6f45ub5Sq3YC5zqJTix2mSuaEYAUJiBAlaBhnc4gJFK9c5lgQP7bfNohMFghmnSwTIr0dwDUSCM0YpwkAerIYoGfS+i4a1h+r5ll3kE4Nq2lq6AAPKPaSjkGM9coq3sXla++Epmd07F++OSQ0jEhoZc+W3gAvXa8lKHE9tw+HsXg4pF42z9dVAW8c/v4eCwJHNBdeYe5z15jvJzMyG9eiB/zNf/5MeoQPbgGMNUU42B6BZq2fO/7CgILkyv+Kr1EZ84vPjYbOAfdDtpanf0P/HRH28TaY2wcRVnWkwQGuEBK8TWLexvA99Uppu1GnmjdTpeeqqDAOf2fJburY+v80QTb8drWw0vQ63TLFAqIAmLHtupTOob9jwE0bNSryudOIK62GmySoHWItKsAYVw5c= 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)(366016)(376014)(1800799024)(38070700021)(22082099003)(56012099003)(18002099003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eW84QkFvMmp6cFVFYXQ4U0pKR0llZ2pUYWh1d2MrQXlHcjhPcUlWT05kODJw?= =?utf-8?B?Z2c2NzF4MERKajZRNzRjVWtRUm9GY2ExWXNYeFB4RVJ5OXZGcnlNL0FJSVB0?= =?utf-8?B?OWpwQ2xQRXdmYmtGMVZtQndONlk3NjRSL1FpaFRrb201Q2JRYWRnSFFnWlVm?= =?utf-8?B?K2w1MXEwOWJxc1Frak1maFNKenBTYlR2QmtlamFBZXhiOHNVVCtadEs0VFYw?= =?utf-8?B?WVpBZjFKaWNpQlNZMzJ1QmZRUmcrTUtMTWN1NmFOU09qSVo4RWhOcEZrMmhs?= =?utf-8?B?aEZXYXFGdGxOMG5aTDJoNDFzN01rVEZJaDhQeFloQVBXZjRpWUpPbDh0cFdC?= =?utf-8?B?Y082N0d2ak82TGdQcHJaeTFYQXh3blNxaVN3KzBjcE1CdzNjUDloeUtKVmNG?= =?utf-8?B?LzdqOEVqSHRGU2RSZmttQlFaYlcySDgrVk5qVnB6cUs4R3llanM5cjRpcU1u?= =?utf-8?B?VVRRalpJQnVkMUVhTEhhY3p4dEk5TUNhUUl5T2hkMmNSM3VsN3JIakVBNXlh?= =?utf-8?B?QTE4a0ZIdmhWcEpoYkVCTm5sTWUwaS9uSTZoOFdnOXF3VUtCY2xaK0tqcWlM?= =?utf-8?B?dXVDUzNRZC9XTngyQ0xJZVlVajg2dmp0T01zM1MyQXZIRzZHcEFwZW9GWC9V?= =?utf-8?B?dklyalRZZC90MVdvT0lxYXVaS3RyTWhBK1h2eHVaMytrSHVpMEJYYUpqWlBx?= =?utf-8?B?WHJ5eklZOEZCT2g0emh3R2lsZEVpQW8xNTZJTGU5OFBJdFJkLzh4QTg3NG51?= =?utf-8?B?bXhwYXhnZUFScThwWktmY1dFZzNpQ0t4TGZWbjNrZWx1azJITkF6aFoxTjkz?= =?utf-8?B?M0JnREVON0t1K25NOTExWlN5bW5XWUhsY290YWJrOHpzelhpMkE0NU9mcXdB?= =?utf-8?B?emNCTTlSUXJDQyttQUV0VDVOZ1JSTGxZdUxQeXpFYWNsTGF1QjJJV09JbElw?= =?utf-8?B?VnB3bTllU1JkR2hVQVNqa3llYkhTU2tNRjM1ZE44WG95SllKRGlDVTRDK3hs?= =?utf-8?B?aGcwbjJQWnI5ZVdndUF1K1VHbzVOU2hBdVhWNDM5SFI4R25TNmhhaWx6bDFU?= =?utf-8?B?SWdDTjM4b0Mvc296SVA0M0hKZXRFM0FnMzhVVHpVbkdMaXZkZnVsbjBxcks0?= =?utf-8?B?K1RhQjArVjRGTXZ1WUdRVFBwcmRtbDRRWWIxUmVPMFdrV3p0Q1o4MElXaEpS?= =?utf-8?B?YnV0bkk0VXNOQ2dEYTQ5WlRicml2Wi9WUFFkaStZWmphbXRkeHJSL3BTSlgr?= =?utf-8?B?VFNIQ0t1UkI1SmNGM1c5OFZXU2xJbzJ2bVpzd1ZuVTZISktTeGIwU2VNeHV6?= =?utf-8?B?a1lOaUhKMEhsYTBTZUk4SEVNczYrRDkzTGxMSk1oU2d2UTFyek9OWnNLdE1k?= =?utf-8?B?UCs4Zk1oQ2ltcDVobUN2OXdWTnovRUxHclJra2ROSEV4UXNta3phWm1keEVZ?= =?utf-8?B?SFo5NkY5VEVWT00wa2RIams0K0tOZUltNnBFVnJKZEZZVEEzeExXZkxsWndH?= =?utf-8?B?bThnTlIzVWQxdlc3dVRZZVJMRDlZc0NkLzluRjN3UVNVVCtkQWpUT3lzQ3dD?= =?utf-8?B?L2dzS2NMRnZwa0x3YUUyUW8rNU5Tazltazl4Y3c0U1k1bi9WLzBwY1hpN1B6?= =?utf-8?B?RERIdlJ1bS8rSlRTd0hoWnhRditqRW5uL1QrNFNMY2JkQ2xTNWlINkprZlV2?= =?utf-8?B?cGd1bGs1aDQyN29hYWtIL1dqWFcrNmNhb0tWUk5nUXRzaWFIdUhqQUpaTVdz?= =?utf-8?B?U056TXpRY3Bpd2t6SDJVUGhoaWJUa1JnVlVNN3gzamFuVkwxS0xxUDZacjZW?= =?utf-8?B?ejc3ZFBRTm9WODBtTjFQMVJRVUNOaWNXWkNzTWJWd2Y1aTdvbXcvbDU2V1Bv?= =?utf-8?B?dU9XaWF6ZXlTM0RIcWJFZkVNOFZldXkvNmhzMFZBQllXNkpTWDUxZ01Zazht?= =?utf-8?B?TEt5cDJQTlpYOThEWExqaEJJQzVDQitMbDMwNHB4eVZ3NnoxdnRWbUJsYjBM?= =?utf-8?B?aWk3V01Ha0poN0lXaWZHYmxMTHBNbTUzS0FQZ3NKZjFoRlBEMGhWcWt0R1Bp?= =?utf-8?B?WmMwUmxYcHFUNGRvcnVHNlI4QmZqMGVrbzcyUGczY3dYKzZuM2hQZjJtdkp3?= =?utf-8?B?U3lxVGx3NEJ4aTA5NTJqSUtwdGtJbFRhR2htRmxUVmxxQkdNVTd1NnBZaFp5?= =?utf-8?B?ZDRsMXlNTEtQMzh2blQ1RjdBcmloblgwaHlsYWNsb2hwczdFZ1FHRUQ5b1pk?= =?utf-8?B?dlhqL3BsS3BMUmx0THZZcW80SlV1OXBrUllyUnowMkYwY3hvS3VxSTBQalky?= =?utf-8?B?bFRYaXJmVXRtSi9iYllEa0xGSXVrL3BDTzRrWFV2S094U3B1Z1FBT1NkSC9G?= =?utf-8?Q?cxgiaOWLBKsXjv+4=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <2314260CA88EE44CB158E0AC5C459D53@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: insgTHHt84E4lW2zQA+5rHcv2UpvMTFLgmNlEQ5sqLcePEbRPr1ybuGJXZefIo/7ndUjYCgG97KPwrmCzR3fzirh7y/lqOE+fGwENE/dPDP/kGuN3kN/g8PaSWGvjPaN0sQaD4UM1pg/a4g9zBx+VdR/8u7wmXa1Mk6mb0/9DAZqsTZImhXNwqbVqqLuxjNYgweorlH40KRFsnmHI1lsW/ycR7+ThH4axuc2SV/g+dLYxovImCUfqCOJl+hLQFCacrMHdHg9M3a1tbvHa6AS2HqIqvxQkh+DaL6D6pCfiuITk5x24sR+AZ2iw4yLgkWkuUyVzVs3DsG5Mm/lMm/KbQ== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR11MB5573.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c8e19deb-348d-4e37-2544-08de8aae0bde X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Mar 2026 20:35:26.0959 (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: +qSwT9IgEDfB+BzrEk/4TxCHja3WAgfthPkAeQHNzbE1EpEzqZN629NXnTsTH71oGfuNBAOMXK9Nwy8l8fLJ38iU/BEZCeFXEOHSf1+CBGA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR11MB7504 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" T24gVHVlLCAyMDI2LTAzLTI0IGF0IDE2OjUzIC0wNzAwLCBNYXR0aGV3IEJyb3N0IHdyb3RlOg0K PiBPbiBUdWUsIE1hciAyNCwgMjAyNiBhdCAwMzo1MToxOFBNIC0wNjAwLCBTdW1tZXJzLCBTdHVh cnQgd3JvdGU6DQo+ID4gT24gVHVlLCAyMDI2LTAzLTI0IGF0IDE0OjUzICswMDAwLCBTdW1tZXJz LCBTdHVhcnQgd3JvdGU6DQo+ID4gPiBPbiBNb24sIDIwMjYtMDMtMjMgYXQgMTk6MjEgLTA3MDAs IE1hdHRoZXcgQnJvc3Qgd3JvdGU6DQo+ID4gPiA+IE9uIE1vbiwgTWFyIDIzLCAyMDI2IGF0IDA5 OjE3OjQyUE0gKzAwMDAsIFN0dWFydCBTdW1tZXJzIHdyb3RlOg0KPiA+ID4gPiA+IFJpZ2h0IG5v dyB3ZSBhcmUgb25seSBpbnZhbGlkYXRpbmcgVExCcyB3aGVuIHdlIGFyZQ0KPiA+ID4gPiA+IHJ1 bm5pbmcgaW4gZmF1bHQgbW9kZS4gRm9yIG5vbi1mYXVsdCBtb2RlIGJhc2VkIHVzZXJwdHINCj4g PiA+ID4gPiBWTXMsIHdlIHRoZW4gcmVseSBvbiBjb250ZXh0IHN3aXRjaGVzIGFmdGVyIGFuIE1N QVAgaGFzDQo+ID4gPiA+ID4gaGFwcGVuZWQgdG8gZW5zdXJlIHRoZSBUTEIgaXMgY2xlYW4gZm9y IHRoZSBuZXh0IHN1Ym1pc3Npb24uDQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gV2l0aCBjb250ZXh0 IGJhc2VkIFRMQiBpbnZhbGlkYXRpb24sIHdlIGNhbiBubyBsb25nZXIgcmVseQ0KPiA+ID4gPiA+ IG9uIHRoZSBpbXBsaWNpdCBpbnZhbGlkYXRpb24gaGFwcGVuaW5nIGR1cmluZyBjb250ZXh0IHN3 aXRjaCwNCj4gPiA+ID4gPiBzbyByZW1vdmUgdGhlIGZhdWx0IG1vZGUgbGltaXRlciBhbmQgc2lt cGx5IGFsd2F5cyBwZXJmb3JtDQo+ID4gPiA+ID4gdGhhdCBpbnZhbGlkYXRpb24uDQo+ID4gPiA+ ID4gDQo+ID4gPiA+ID4gSSB3YXMgYWJsZSB0byBzZWUgdGhpcyBiZWhhdmlvciB1c2luZyB0aGUg Zm9sbG93aW5nIHRlc3Q6DQo+ID4gPiA+ID4geGVfZXhlY19jb21wdXRlX21vZGUgLS1yIHR3aWNl LXVzZXJwdHItaW52YWxpZGF0ZQ0KPiA+ID4gPiA+IA0KPiA+ID4gPiANCj4gPiA+ID4gSG1tLCB0 aGlzIGltcGxpZXMgdGhhdCBwcmVlbXB0IGZlbmNlcyBkb24ndCBpc3N1ZSBhIFRMQg0KPiA+ID4g PiBpbnZhbGlkYXRpb24uLi4NCj4gPiA+ID4gSSB0aG91Z2h0IHdlIGxhbmRlZCBvbiBwcmVlbXB0 IGZlbmNlcyBkbyBhIFRMQiBpbnZhbGlkYXRpb24gaW4NCj4gPiA+ID4gb2ZmbGluZQ0KPiA+ID4g PiBkaXNjdXNzaW9ucy4NCj4gPiA+IA0KPiA+ID4gU28gaW5pdGlhbGx5IEkgd2FzIG1vc3RseSBm b2N1c2VkIG9uIHRoZSB4ZV92bSBpbnZhbGlkYXRlIGNhc2VzLg0KPiA+ID4gSW4NCj4gPiA+IGhp bmRzaWdodCBJIHNob3VsZCBoYXZlIGRvbmUgYSBsaXR0bGUgbW9yZSBmb2N1c2VkIHRlc3Rpbmcg aGVyZQ0KPiA+ID4gYXMNCj4gPiA+IHdlbGwuIFRoaXMgY2FtZSB1cCBhZnRlciBzb21lIG1vcmUg ZXh0ZW5zaXZlIHRlc3RpbmcgaW50ZXJuYWxseS4NCj4gPiA+IA0KPiA+ID4gQXQgbGVhc3QgaW4g bXkgbGF0ZXN0IHJvdW5kIG9mIHRlc3RpbmcsIEkgZG9uJ3Qgc2VlIGFueSBpc3N1ZXMgaW4NCj4g PiA+IEJBVC9GVUxMIGFmdGVyIHRoaXMgY2hhbmdlLiBJIGRvIHRoaW5rIGdldHRpbmcgdGhpcyBt ZXJnZWQgKG9yDQo+ID4gPiBzb21ldGhpbmcgc2ltaWxhcikgYW5kIHRlc3RlZCBtb3JlIGJyb2Fk bHkgd291bGQgYmUgaW50ZXJlc3RpbmcuDQo+ID4gPiANCj4gPiA+ID4gDQo+ID4gPiA+IFdlIG1h eSBoYXZlIG1vcmUgd29yayB0byBkbyBoZXJlIHdydCBjb250ZXh0IGJhc2VkIFRMQg0KPiA+ID4g PiBpbnZhbGlkYXRpb25zLg0KPiA+ID4gPiANCj4gPiA+ID4gSSB0aGluayBCTyBtb3ZlIHBhdGgg bGlrZWx5IGFsc28gbmVlZHMgdG8gYmUgdXBkYXRlZCB0aGVuIHRvby4NCj4gPiA+IA0KPiA+ID4g SG0uLiBJIGhhdmVuJ3Qgc2VlbiBhbnkgaXNzdWVzIG9uIHRoZSBCTyBzaWRlLCBhbHRob3VnaCBp dCdzDQo+ID4gPiBwb3NzaWJsZQ0KPiA+ID4gSSd2ZSBtaXNzZWQgc29tZXRoaW5nIGluIHRlc3Rp bmcgb2YgY291cnNlIChsaWtlIHRoaXMgTFIgY2FzZSkuDQo+ID4gPiBJJ2QNCj4gDQo+IFlvdSdk IG9ubHkgaGl0IHRob3NlIGNhc2VzIGlmIHlvdSBydW4gYW4gZXZpY3Rpb24gdGVzdC4NCg0KT2sg SSdtIG1hbnVhbGx5IHJ1bm5pbmcgdGhyb3VnaCBzb21lIG9mIHRoZXNlIG5vdyBhbmQgSSBkb24n dCBzZWUgYW55DQppc3N1ZXMgc28gZmFyIChldmljdC1zbWFsbCBhdCBsZWFzdCkuIA0KDQo+IA0K PiA+ID4gcmVhbGx5IGxpa2UgdG8gZ2V0IHRoaXMgdGVzdGVkIG1vcmUgcmVndWxhcmx5IGluIENJ IGlmIHBvc3NpYmxlDQo+ID4gPiBhbmQNCj4gPiA+IHdvcmsgdGhyb3VnaCBpc3N1ZXMgcG9zdCBt ZXJnZS4gSSB0aGluayBtb3N0IG9mIHRoZSByZW1haW5pbmcNCj4gPiA+IGlzc3VlcywNCj4gPiA+ IGlmIHRoZXkgY29tZSB1cCwgc2hvdWxkIGJlIHRpbWluZyBzZW5zaXRpdmUuDQo+ID4gPiANCj4g PiA+IEFsc28gdGhlIGZhY3QgdGhhdCB0aGlzIGlzbid0IGVuYWJsZWQgaW4gYW55dGhpbmcgaW4g eGVfcGNpLmMNCj4gPiA+IHJpZ2h0DQo+ID4gPiBub3cNCj4gPiA+IG1lYW5zIHdlIHNob3VsZG4n dCBjYXVzZSBhbnkgbWFqb3IgYnJlYWthZ2Ugb3RoZXJ3aXNlIGZvciB0aGUNCj4gPiA+IGZlYXR1 cmUNCj4gPiA+IGdlbmVyYWxseS4gT2YgY291cnNlIHRoaXMgc3BlY2lmaWMgY2hhbmdlIGltcGFj dHMgZXZlcnlvbmUgdXNpbmcNCj4gPiA+IHByZWVtcHQgZmVuY2UgbGlrZSB5b3Ugc2FpZC4gSSBj b3VsZCBhZGQgYSBoYXNfY3R4X3RsYl9pbnZhbCBoZXJlDQo+ID4gPiAtIEkNCj4gPiA+IGhhZCB0 aG91Z2h0IGFib3V0IHRoYXQuIEJ1dCB0byBtZSB0aGlzIHNlZW1zIGxpa2UgYSBtb3JlIGdlbmVy YWwNCj4gPiA+IGNhc2UNCj4gPiA+IGdpdmVuIHRoZSBkaXNjdXNzaW9uIHdlIGhhZCBhYm91dCBp bnRlbnQgb2YgZXhwbGljaXQNCj4gPiA+IGludmFsaWRhdGlvbnMuDQo+IA0KPiBJIHdvdWxkIGFk ZCBrbm9iIGZvciBjb250ZXh0IHN3aXRjaCA9PSBUTEIgaW52YWxpZGF0aW9uLg0KDQpTbyBiYXNp Y2FsbHkgaWYgKGZhdWx0X21vZGUgfHwgaGFzX2N0eF90bGJfaW52YWwpPyBJLmUuIGlzIHRoZXJl IGENCnJlYXNvbiBub3QgdG8ganVzdCB0aWUgaGFzX2N0eF90bGJfaW52YWwgYW5kIGhhc19jdHhf c3dpdGNoX2ludmFsICh3aGF0DQp5b3UgaGF2ZSBiZWxvdykgdG9nZXRoZXIgZm9yIG5vdz8NCg0K PiANCj4gPiA+IA0KPiA+ID4gQW55d2F5IGxldCBtZSBrbm93IHdoYXQgeW91IHRoaW5rIGhlcmUu DQo+ID4gDQo+ID4gTGl0dGxlIG1vcmUgZGV0YWlsIGhlcmUgb24gZnVydGhlciBhbmFseXNpcy4u Lg0KPiA+IA0KPiA+IFNvIEkgaGFkIGZvdW5kIHRoaXMgdGhyb3VnaCBkZWJ1ZywgYnV0IGxvb2tp bmcgYSBsaXR0bGUgY2xvc2VyLCBJDQo+ID4gdGhpbmsNCj4gPiB0aGUgcmVhc29uIHdlIG5lZWQg dGhpcyBpcyBiZWNhdXNlIG9mIHRoZSB4ZV92bV9yZWJpbmQoKSBmdW5jdGlvbg0KPiA+IHdpdGgN Cj4gPiB0aGVzZSBsaW5lcyBhdCB0aGUgdG9wOg0KPiA+IA0KPiA+IGlmICgoeGVfdm1faW5fbHJf bW9kZSh2bSkgJiYgIXJlYmluZF93b3JrZXIpDQo+ID4gfHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCANCj4gPiDCoMKgwqDCoCBsaXN0X2VtcHR5KCZ2bS0NCj4g PiA+cmViaW5kX2xpc3QpKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgDQo+ID4gwqDCoMKgIHJldHVybiAwOw0KPiA+ IA0KPiA+IFNvIGJhc2ljYWxseSBpZiB3ZSBhcmVuJ3QgaW4gcHJlZW1wdCBmZW5jZSBtb2RlIChs cl9tb2RlKSwgd2UNCj4gPiBhbHdheXMNCj4gPiBpbnZhbGlkYXRlIHRoZSBUTEJzIGluIG9wc19l eGVjdXRlKCkgY2FsbGVkIGluIHRoZSB4ZV92bV9yZWJpbmQoKQ0KPiA+IGZ1bmN0aW9uIGxhdGVy IG9uLiBJZiB3ZSBhcmUgaW4gcHJlZW1wdCBmZW5jZSBtb2RlLCB0aGVyZSBpcyBhDQo+ID4gY29y bmVyDQo+ID4gY2FzZSBoZXJlIGl0IGxvb2tzIGxpa2Ugd2hlcmUgd2UgY2FsbCB0aGUgcHJlZW1w dCByZWJpbmQgd29ya2VyDQo+ID4gdGhhdA0KPiA+IHRoZW4gY2FsbHMgeGVfcHJlZW1wdF93b3Jr X2JlZ2luKCkgLT4geGVfdm1fdmFsaWRhdGVfcmViaW5kKCkgLT4NCj4gPiB4ZV92bV9yZWJpbmQo ZmFsc2UpIGFuZCBoaXRzIHRoZSBhYm92ZSBjYXNlLCBjYXVzaW5nIHVzIHRvIHNraXAgdGhlDQo+ ID4gVExCDQo+ID4gaW52YWxpZGF0aW9uLiBJZiB3ZSBhZGQgdGhlIGhvb2sgaGVyZSwgaXQgZm9y Y2VzIGludmFsaWRhdGlvbiBmb3INCj4gDQo+IEtpbmRhLCBpZiB5b3UgbG9vayBhdCB0aGlzIGNv bW1lbnQgaW4geGVfcHQuYzoNCj4gDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAv Kg0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIElmIHJlYmluZCwgd2UgaGF2 ZSB0byBpbnZhbGlkYXRlIFRMQiBvbiAhTFIgdm1zIHRvDQo+IGludmFsaWRhdGUNCj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBjYWNoZWQgUFRFcyBwb2ludCB0byBmcmVlZCBt ZW1vcnkuIE9uIExSIHZtcyB0aGlzDQo+IGlzIGRvbmUNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKiBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIGNvbnRleHQgaXMgcmUtZW5hYmxl ZCBieQ0KPiB0aGUgcmViaW5kIHdvcmtlciwNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKiBvciBpbiBmYXVsdCBtb2RlIGl0IHdhcyBpbnZhbGlkYXRlZCBvbiBQVEUNCj4gemFw cGluZy4NCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKg0KPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIElmICFyZWJpbmQsIGFuZCBzY3JhdGNoIGVuYWJsZWQg Vk1zLCB0aGVyZSBpcyBhDQo+IGNoYW5jZSB0aGUgc2NyYXRjaA0KPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAqIFBURSBpcyBhbHJlYWR5IGNhY2hlZCBpbiB0aGUgVExCIHNvIGl0 IG5lZWRzIHRvIGJlDQo+IGludmFsaWRhdGVkLg0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAqIE9uICFMUiBWTXMgdGhpcyBpcyBkb25lIGluIHRoZSByaW5nIG9wcyBwcmVjZWRp bmcNCj4gYSBiYXRjaCwgYnV0IG9uDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICogTFIsIGluIHBhcnRpY3VsYXIgb24gdXNlci1zcGFjZSBiYXRjaCBidWZmZXINCj4gY2hhaW5p bmcsIGl0IG5lZWRzIHRvDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogYmUg ZG9uZSBoZXJlLg0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCghcHRfb3AtPnJlYmluZCAmJiB4ZV92bV9o YXNfc2NyYXRjaCh2bSkgJiYNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB4ZV92bV9pbl9scl9tb2RlKHZtKSkpDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcHRfdXBkYXRlX29wcy0+bmVlZHNfaW52YWxpZGF0aW9uID0g dHJ1ZTsNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKHB0X29wLT5y ZWJpbmQgJiYgIXhlX3ZtX2luX2xyX21vZGUodm0pKQ0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIFdlIGJ1bXAgYWxzbyBpZiBiYXRjaF9pbnZhbGlk YXRlX3RsYiBpcw0KPiB0cnVlICovDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdm0tPnRsYl9mbHVzaF9zZXFubysrOw0KPiANCj4gV2UgZXhwbGljaXRs eSBjYWxsIG91dCB0aGF0IHdlIHJlbHkgb24g4oCcYXV0b21hdGljYWxseSB3aGVuIHRoZSB0aGUN Cj4gY29udGV4dCBiZWluZyByZS1lbmFibGVkIGJ5IHRoZSByZWJpbmQgd29ya2Vy4oCdDQo+IA0K PiBTbyBhbm90aGVyIG9wdGlvbiBpcyB0byBhZGp1c3QgdGhpcyBpZiBzdGF0ZW1lbnQgdG8gc29t ZXRoaW5nIGxpa2U6DQo+IA0KPiBlbHNlIGlmIChwdF9vcC0+cmViaW5kICYmIHhlX3ZtX2luX3By ZWVtcHRfZmVuY2VfbW9kZSh2bSkgJiYNCj4gIWNvbnRleHRfc3dpdGNoX2ludmFsaWRhdGlvbikN Cj4gwqDCoMKgwqDCoMKgwqDCoHB0X3VwZGF0ZV9vcHMtPm5lZWRzX2ludmFsaWRhdGlvbiA9IHRy dWU7DQo+IA0KPiBUaGlzIHdvdWxkIGFsc28gY292ZXIgdGhlIEJPIGV2aWN0aW9uIGNhc2UgSSBt ZW50aW9uZWQgYWJvdmUuIEFsc28NCj4gYXZvaWQNCj4gYmxvY2tpbmcgaW4gdGhlIG5vdGlmaWVy IG9yIEJPIGV2Y2l0aW9uIGNvZGUgb24gdGhlIFRMQiBpbnZhbGlkYXRpb24NCg0KT2sgSSBnZXQg eW91ciBwb2ludCBhYm91dCB0aGUgbm90aWZpZXIgcGF0aCBibG9ja2luZyB2cyB0aGUgaW52YWwg am9icw0Kd2UncmUgY3JlYXRpbmcgaW4geGVfcHQuYy4uLg0KDQpJJ2xsIGdpdmUgeW91ciBjaGFu Z2UgYSB0cnkgYW5kIGxldCB5b3Uga25vdy4uLg0KDQpUaGFua3MsDQpTdHVhcnQNCg0KPiB3aGlj aCBpbiBnZW5lcmFsIHNwZWVkcyB1cCB0aGUgZW50aXJlIGtlcm5lbC4NCj4gDQo+IE1hdHQNCj4g DQo+ID4gbHJfbW9kZSBhbHNvLg0KPiA+IA0KPiA+IFdlIGNvdWxkIGp1c3QgYWRkIHRoaXMgeGVf dm1faW5fbHJfbW9kZSgpIGNoZWNrIGhlcmUsIGJ1dCBJIHN0aWxsDQo+ID4gdGhpbmsNCj4gPiBk b2luZyB0aGlzIGFjcm9zcyB0aGUgYm9hcmQgaXMgc2FmZXN0IHNvIHdlIGFyZW4ndCBoaXR0aW5n IHNvbWUNCj4gPiBvdGhlcg0KPiA+IGNvcm5lciBjYXNlIGluIHRoZSBmdXR1cmUgaWYgd2UgZGVj aWRlIHRvIHJld29yayB0aG9zZSBvdGhlcg0KPiA+IHNjZW5hcmlvcy4NCj4gPiANCj4gPiBUaGFu a3MsDQo+ID4gU3R1YXJ0DQo+ID4gDQo+ID4gPiANCj4gPiA+IFRoYW5rcywNCj4gPiA+IFN0dWFy dA0KPiA+ID4gDQo+ID4gPiA+IMKgDQo+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogU3R1YXJ0IFN1 bW1lcnMgPHN0dWFydC5zdW1tZXJzQGludGVsLmNvbT4NCj4gPiA+ID4gPiAtLS0NCj4gPiA+ID4g PiDCoGRyaXZlcnMvZ3B1L2RybS94ZS94ZV91c2VycHRyLmMgfCAyICstDQo+ID4gPiA+ID4gwqAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkNCj4gPiA+ID4gPiAN Cj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3VzZXJwdHIuYw0K PiA+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3VzZXJwdHIuYw0KPiA+ID4gPiA+IGlu ZGV4IDY3NjEwMDVjMGI5MC4uZGZkNjc5ZGQ5OGQ5IDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS94ZS94ZV91c2VycHRyLmMNCj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0veGUveGVfdXNlcnB0ci5jDQo+ID4gPiA+ID4gQEAgLTEwMiw3ICsxMDIsNyBAQCB4ZV92 bWFfdXNlcnB0cl9kb19pbnZhbChzdHJ1Y3QgeGVfdm0gKnZtLA0KPiA+ID4gPiA+IHN0cnVjdCB4 ZV91c2VycHRyX3ZtYSAqdXZtYSwgYm9vbCBpc19kDQo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBm YWxzZSwNCj4gPiA+ID4gPiBNQVhfU0NIRURVTEVfVElNRU9VVCk7DQo+ID4gPiA+ID4gwqDCoMKg wqDCoMKgwqDCoFhFX1dBUk5fT04oZXJyIDw9IDApOw0KPiA+ID4gPiA+IMKgDQo+ID4gPiA+ID4g LcKgwqDCoMKgwqDCoMKgaWYgKHhlX3ZtX2luX2ZhdWx0X21vZGUodm0pICYmIHVzZXJwdHItPmlu aXRpYWxfYmluZCkNCj4gPiA+ID4gPiB7DQo+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKHVz ZXJwdHItPmluaXRpYWxfYmluZCkgew0KPiA+ID4gPiANCj4gPiA+ID4gU2hvdWxkIGJlIGNoYW5n ZSB0aGlzIGlmIHN0YXRlbWVudCBiYXNlZCBvbiBoYXJkd2FyZSBzdXBwb3J0Pw0KPiA+ID4gPiAN Cj4gPiA+ID4gTWF0dA0KPiA+ID4gPiANCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmICghdXNlcnB0ci0+ZmluaXNoX2ludXNlKSB7DQo+ID4gPiA+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoNCj4gPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBEZWZlciB0 aGUgVExCIHdhaXQgdG8gYW4gZXh0cmENCj4gPiA+ID4gPiBwYXNzIHNvDQo+ID4gPiA+ID4gdGhl IGNhbGxlcg0KPiA+ID4gPiA+IC0tIA0KPiA+ID4gPiA+IDIuNDMuMA0KPiA+ID4gPiA+IA0KPiA+ ID4gDQo+ID4gDQoNCg==