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 X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0D6D4C11F65 for ; Mon, 28 Jun 2021 19:50:29 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 9E92161C4D for ; Mon, 28 Jun 2021 19:50:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9E92161C4D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3980D6E53C; Mon, 28 Jun 2021 19:50:26 +0000 (UTC) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 73D656E52C; Mon, 28 Jun 2021 19:50:24 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10029"; a="206199957" X-IronPort-AV: E=Sophos;i="5.83,306,1616482800"; d="scan'208";a="206199957" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jun 2021 12:50:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,306,1616482800"; d="scan'208";a="456467737" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga008.fm.intel.com with ESMTP; 28 Jun 2021 12:50:23 -0700 Received: from shsmsx604.ccr.corp.intel.com (10.109.6.214) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Mon, 28 Jun 2021 12:50:23 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by SHSMSX604.ccr.corp.intel.com (10.109.6.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Tue, 29 Jun 2021 03:50:20 +0800 Received: from orsmsx611.amr.corp.intel.com ([10.22.229.24]) by ORSMSX611.amr.corp.intel.com ([10.22.229.24]) with mapi id 15.01.2242.008; Mon, 28 Jun 2021 12:50:18 -0700 From: "Ruhl, Michael J" To: =?utf-8?B?VGhvbWFzIEhlbGxzdHLDtm0=?= , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" Subject: RE: [PATCH v3 1/5] drm/i915/gem: Implement object migration Thread-Topic: [PATCH v3 1/5] drm/i915/gem: Implement object migration Thread-Index: AQHXbCx1kCTgO3L0VUiTw1vp/169Q6sprYSAgACP1ID//4yA4A== Date: Mon, 28 Jun 2021 19:50:18 +0000 Message-ID: <615aebfc2bfd45dc836e798182501ef3@intel.com> References: <20210628144626.76126-1-thomas.hellstrom@linux.intel.com> <20210628144626.76126-2-thomas.hellstrom@linux.intel.com> <6ea416ea-b2d8-1485-6375-52810699f838@linux.intel.com> In-Reply-To: <6ea416ea-b2d8-1485-6375-52810699f838@linux.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.0.76 x-originating-ip: [10.1.200.100] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Auld, Matthew" , lkp Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Pi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+RnJvbTogVGhvbWFzIEhlbGxzdHLDtm0gPHRo b21hcy5oZWxsc3Ryb21AbGludXguaW50ZWwuY29tPg0KPlNlbnQ6IE1vbmRheSwgSnVuZSAyOCwg MjAyMSAzOjAzIFBNDQo+VG86IFJ1aGwsIE1pY2hhZWwgSiA8bWljaGFlbC5qLnJ1aGxAaW50ZWwu Y29tPjsgaW50ZWwtDQo+Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZw0KPkNjOiBBdWxkLCBNYXR0aGV3IDxtYXR0aGV3LmF1bGRAaW50ZWwu Y29tPjsgbGtwIDxsa3BAaW50ZWwuY29tPg0KPlN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMS81XSBk cm0vaTkxNS9nZW06IEltcGxlbWVudCBvYmplY3QgbWlncmF0aW9uDQo+DQo+DQo+T24gNi8yOC8y MSA4OjExIFBNLCBSdWhsLCBNaWNoYWVsIEogd3JvdGU6DQo+Pj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4+PiBGcm9tOiBkcmktZGV2ZWwgPGRyaS1kZXZlbC1ib3VuY2VzQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZz4gT24gQmVoYWxmIE9mDQo+Pj4gVGhvbWFzIEhlbGxzdHLDtm0NCj4+PiBT ZW50OiBNb25kYXksIEp1bmUgMjgsIDIwMjEgMTA6NDYgQU0NCj4+PiBUbzogaW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZzsgZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPj4+ IENjOiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLmhlbGxzdHJvbUBsaW51eC5pbnRlbC5jb20+ OyBBdWxkLA0KPk1hdHRoZXcNCj4+PiA8bWF0dGhldy5hdWxkQGludGVsLmNvbT47IGxrcCA8bGtw QGludGVsLmNvbT4NCj4+PiBTdWJqZWN0OiBbUEFUQ0ggdjMgMS81XSBkcm0vaTkxNS9nZW06IElt cGxlbWVudCBvYmplY3QgbWlncmF0aW9uDQo+Pj4NCj4+PiBJbnRyb2R1Y2UgYW4gaW50ZXJmYWNl IHRvIG1pZ3JhdGUgb2JqZWN0cyBiZXR3ZWVuIHJlZ2lvbnMuDQo+Pj4gVGhpcyBpcyBwcmltYXJp bHkgaW50ZW5kZWQgdG8gbWlncmF0ZSBvYmplY3RzIHRvIExNRU0gZm9yIGRpc3BsYXkgYW5kDQo+ Pj4gdG8gU1lTVEVNIGZvciBkbWEtYnVmLCBidXQgbWlnaHQgYmUgcmV1c2VkIGluIG9uZSBmb3Jt IG9yIGFub3RoZXIgZm9yDQo+Pj4gcGVyZm9ybWFuY2UtYmFzZWQgbWlncmF0aW9uLg0KPj4+DQo+ Pj4gdjI6DQo+Pj4gLSBWZXJpZnkgdGhhdCB0aGUgbWVtb3J5IHJlZ2lvbiBnaXZlbiBhcyBhbiBp ZCByZWFsbHkgZXhpc3RzLg0KPj4+ICAgKFJlcG9ydGVkIGJ5IE1hdHRoZXcgQXVsZCkNCj4+PiAt IENhbGwgaTkxNV9nZW1fb2JqZWN0X3tpbml0LHJlbGVhc2V9X21lbW9yeV9yZWdpb24oKSB3aGVu IHN3aXRjaGluZw0KPj4+IHJlZ2lvbg0KPj4+ICAgdG8gaGFuZGxlIGFsc28gc3dpdGNoaW5nIHJl Z2lvbiBsaXN0cy4gKFJlcG9ydGVkIGJ5IE1hdHRoZXcgQXVsZCkNCj4+PiB2MzoNCj4+PiAtIEZp eCBpOTE1X2dlbV9vYmplY3RfY2FuX21pZ3JhdGUoKSB0byByZXR1cm4gdHJ1ZSBpZiBvYmplY3Qg aXMgYWxyZWFkeSBpbg0KPj4+ICAgdGhlIGNvcnJlY3QgcmVnaW9uLCBldmVuIGlmIHRoZSBvYmpl Y3Qgb3BzIGRvZXNuJ3QgaGF2ZSBhIG1pZ3JhdGUoKQ0KPj4+ICAgY2FsbGJhY2suDQo+Pj4gLSBV cGRhdGUgdHlwbyBpbiBjb21taXQgbWVzc2FnZS4NCj4+PiAtIEZpeCBrZXJuZWxkb2Mgb2YgaTkx NV9nZW1fb2JqZWN0X3dhaXRfbWlncmF0aW9uKCkuDQo+Pj4NCj4+PiBSZXBvcnRlZC1ieToga2Vy bmVsIHRlc3Qgcm9ib3QgPGxrcEBpbnRlbC5jb20+DQo+Pj4gU2lnbmVkLW9mZi1ieTogVGhvbWFz IEhlbGxzdHLDtm0gPHRob21hcy5oZWxsc3Ryb21AbGludXguaW50ZWwuY29tPg0KPj4+IC0tLQ0K Pj4+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYyAgICB8IDk2DQo+ Pj4gKysrKysrKysrKysrKysrKysrKw0KPj4+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9vYmplY3QuaCAgICB8IDEyICsrKw0KPj4+IC4uLi9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVf Z2VtX29iamVjdF90eXBlcy5oICB8ICA5ICsrDQo+Pj4gZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX3R0bS5jICAgICAgIHwgNjkgKysrKysrKysrLS0tLQ0KPj4+IGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV93YWl0LmMgICAgICB8IDE5ICsrKysNCj4+PiA1IGZpbGVz IGNoYW5nZWQsIDE4OCBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkNCj4+Pg0KPj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMNCj4+ PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYw0KPj4+IGluZGV4 IDA3ZThmZjlhOGFhZS4uMWMxOGJlMDY3YjU4IDEwMDY0NA0KPj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYw0KPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYw0KPj4+IEBAIC01MTMsNiArNTEzLDEwMiBAQCBi b29sIGk5MTVfZ2VtX29iamVjdF9oYXNfaW9tZW0oY29uc3Qgc3RydWN0DQo+Pj4gZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQ0KPj4+IAlyZXR1cm4gb2JqLT5tZW1fZmxhZ3MgJiBJOTE1X0JPX0ZM QUdfSU9NRU07DQo+Pj4gfQ0KPj4+DQo+Pj4gKy8qKg0KPj4+ICsgKiBpOTE1X2dlbV9vYmplY3Rf Y2FuX21pZ3JhdGUgLSBXaGV0aGVyIGFuIG9iamVjdCBsaWtlbHkgY2FuIGJlDQo+bWlncmF0ZWQN Cj4+PiArICoNCj4+PiArICogQG9iajogVGhlIG9iamVjdCB0byBtaWdyYXRlDQo+Pj4gKyAqIEBp ZDogVGhlIHJlZ2lvbiBpbnRlbmRlZCB0byBtaWdyYXRlIHRvDQo+Pj4gKyAqDQo+Pj4gKyAqIENo ZWNrIHdoZXRoZXIgdGhlIG9iamVjdCBiYWNrZW5kIHN1cHBvcnRzIG1pZ3JhdGlvbiB0byB0aGUN Cj4+PiArICogZ2l2ZW4gcmVnaW9uLiBOb3RlIHRoYXQgcGlubmluZyBtYXkgYWZmZWN0IHRoZSBh YmlsaXR5IHRvIG1pZ3JhdGUuDQo+Pj4gKyAqDQo+Pj4gKyAqIFJldHVybjogdHJ1ZSBpZiBtaWdy YXRpb24gaXMgcG9zc2libGUsIGZhbHNlIG90aGVyd2lzZS4NCj4+PiArICovDQo+Pj4gK2Jvb2wg aTkxNV9nZW1fb2JqZWN0X2Nhbl9taWdyYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmosDQo+Pj4gKwkJCQkgZW51bSBpbnRlbF9yZWdpb25faWQgaWQpDQo+Pj4gK3sNCj4+PiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShvYmotPmJhc2UuZGV2KTsNCj4+ PiArCXVuc2lnbmVkIGludCBudW1fYWxsb3dlZCA9IG9iai0+bW0ubl9wbGFjZW1lbnRzOw0KPj4+ ICsJc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1yOw0KPj4+ICsJdW5zaWduZWQgaW50IGk7 DQo+Pj4gKw0KPj4+ICsJR0VNX0JVR19PTihpZCA+PSBJTlRFTF9SRUdJT05fVU5LTk9XTik7DQo+ Pj4gKwlHRU1fQlVHX09OKG9iai0+bW0ubWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQpOw0KPj4+ ICsNCj4+PiArCW1yID0gaTkxNS0+bW0ucmVnaW9uc1tpZF07DQo+Pj4gKwlpZiAoIW1yKQ0KPj4+ ICsJCXJldHVybiBmYWxzZTsNCj4+PiArDQo+Pj4gKwlpZiAob2JqLT5tbS5yZWdpb24gPT0gbXIp DQo+Pj4gKwkJcmV0dXJuIHRydWU7DQo+Pj4gKw0KPj4+ICsJaWYgKCFpOTE1X2dlbV9vYmplY3Rf ZXZpY3RhYmxlKG9iaikpDQo+Pj4gKwkJcmV0dXJuIGZhbHNlOw0KPj4+ICsNCj4+PiArCWlmICgh b2JqLT5vcHMtPm1pZ3JhdGUpDQo+Pj4gKwkJcmV0dXJuIGZhbHNlOw0KPj4+ICsNCj4+PiArCWlm ICghKG9iai0+ZmxhZ3MgJiBJOTE1X0JPX0FMTE9DX1VTRVIpKQ0KPj4+ICsJCXJldHVybiB0cnVl Ow0KPj4+ICsNCj4+PiArCWlmIChudW1fYWxsb3dlZCA9PSAwKQ0KPj4+ICsJCXJldHVybiBmYWxz ZTsNCj4+PiArDQo+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgbnVtX2FsbG93ZWQ7ICsraSkgew0KPj4+ ICsJCWlmIChtciA9PSBvYmotPm1tLnBsYWNlbWVudHNbaV0pDQo+Pj4gKwkJCXJldHVybiB0cnVl Ow0KPj4+ICsJfQ0KPj4gSGkgVGhvbWFzLA0KPj4NCj4+IEkgYW0gYSBsaXR0bGUgY29uZnVzZWQg b3ZlciB0aGUgZGlmZmVyZW5jZSBpbiBjaGVja3MgYmV0d2VlbiB0aGlzIGZ1bmN0aW9uDQo+PiBh bmQgaTkxNV9nZW1fb2JqZWN0X21pZ3JhdGUoKS4NCj4+DQo+PiBXaHkgaXMgdGhlIGxhY2sgb2Yg YW4gbXIgYSBCVUdfT04gaW4gX29iamVjdF9taWdyYXRlKCksIGJ1dCBoZXJlIGl0IGp1c3QNCj4+ IGZhbHNlPw0KPj4NCj4+IFNvIHRoYXQgbWVhbnMgdGhhdCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0 YW5jZXMsIHlvdSBjb3VsZCBub3QgaGF2ZSBhIG1yPw0KPj4NCj4+IElmIHRoYXQgaXMgdGhlIGNh c2UsIHdoZW4/DQo+Pg0KPj4gV291bGQgdGhhdCBiZSB3aGVuIHRoZSBJOTE1X0JPX0FMTE9DX1VT RVIgaXMgc2V0Pw0KPj4NCj4+IElmIHNvLCBzaG91bGQgdGhlcmUgYmUgYSBjaGVjayBmb3IgIm5v biIgdXNlciB2cyB1c2VyPw0KPj4NCj4+IE9yIG1heWJlIGRvY3VtZW50IHRoaXMgZnVuY3Rpb24g cG9pbnRpbmcgb3V0IHdoeSB0aGVyZSBhcmUgZGlmZmVyZW5jZXMNCj4+IGFuZCB3aHk/DQo+DQo+ WWVzLCBJJ2xsIGdpdmUgaXQgc29tZSBtb3JlIGRvY3VtZW50YXRpb24uIFRoZSBiYXNpYyBpZGVh IGlzIHRoYXQgdGhlDQo+YWJvdmUgZnVuY3Rpb24gYWxzbyBjb3VsZCBiZQ0KPnVzZWQgdG8gdmFs aWRhdGUgdXNlciBzdXBwbGllZCBkYXRhLCB3aGVyZWFzIHRoZXJlIG1pZ2h0IGJlIGNhc2VzIHdo ZXJlDQo+d2Ugd2FudCB0byB1c2UgdGhlIGdlbV9vYmplY3RfbWlncmF0ZSgpIGZ1bmN0aW9uIGFu ZCBvdmVycmlkZSB0aGUgYWJvdmUuDQo+DQo+DQo+Pg0KPj4+ICsJcmV0dXJuIGZhbHNlOw0KPj4+ ICt9DQo+Pj4gKw0KPj4+ICsvKioNCj4+PiArICogaTkxNV9nZW1fb2JqZWN0X21pZ3JhdGUgLSBN aWdyYXRlIGFuIG9iamVjdCB0byB0aGUgZGVzaXJlZCByZWdpb24gaWQNCj4+PiArICogQG9iajog VGhlIG9iamVjdCB0byBtaWdyYXRlLg0KPj4+ICsgKiBAd3c6IEFuIG9wdGlvbmFsIHN0cnVjdCBp OTE1X2dlbV93d19jdHguIElmIE5VTEwsIHRoZSBiYWNrZW5kIG1heQ0KPj4+ICsgKiBub3QgYmUg c3VjY2Vzc2Z1bCBpbiBldmljdGluZyBvdGhlciBvYmplY3RzIHRvIG1ha2Ugcm9vbSBmb3IgdGhp cyBvYmplY3QuDQo+PiBJcyB0aGUgd3cgZm9yIGZ1dHVyZSBjb25zaWRlcmF0aW9uPyAgKEkgZG9u J3Qgc2VlIGFueSB1c2Ugb2YgaXQgaW4gdGhlIHBhdGNoKS4NCj4NCj5ZZXMsIGJ1dCBpdCB3aWxs IHJlbWFpbiBvcHRpb25hbC4NCj4NCj4NCj4+DQo+Pj4gKyAqIEBpZDogVGhlIHJlZ2lvbiBpZCB0 byBtaWdyYXRlIHRvLg0KPj4+ICsgKg0KPj4+ICsgKiBBdHRlbXB0IHRvIG1pZ3JhdGUgdGhlIG9i amVjdCB0byB0aGUgZGVzaXJlZCBtZW1vcnkgcmVnaW9uLiBUaGUNCj4+PiArICogb2JqZWN0IGJh Y2tlbmQgbXVzdCBzdXBwb3J0IG1pZ3JhdGlvbiBhbmQgdGhlIG9iamVjdCBtYXkgbm90IGJlDQo+ Pj4gKyAqIHBpbm5lZCwgKGV4cGxpY2l0bHkgcGlubmVkIHBhZ2VzIG9yIHBpbm5lZCB2bWFzKS4g VGhlIG9iamVjdCBtdXN0DQo+Pj4gKyAqIGJlIGxvY2tlZC4NCj4+PiArICogT24gc3VjY2Vzc2Z1 bCBjb21wbGV0aW9uLCB0aGUgb2JqZWN0IHdpbGwgaGF2ZSBwYWdlcyBwb2ludGluZyB0bw0KPj4+ ICsgKiBtZW1vcnkgaW4gdGhlIG5ldyByZWdpb24sIGJ1dCBhbiBhc3luYyBtaWdyYXRpb24gdGFz ayBtYXkgbm90IGhhdmUNCj4+PiArICogY29tcGxldGVkIHlldCwgYW5kIHRvIGFjY29tcGxpc2gg dGhhdCwNCj4+PiBpOTE1X2dlbV9vYmplY3Rfd2FpdF9taWdyYXRpb24oKQ0KPj4+ICsgKiBtdXN0 IGJlIGNhbGxlZC4NCj4+PiArICoNCj4+PiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MuIE5lZ2F0 aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4gSW4gcGFydGljdWxhciBtYXkNCj4+PiArICogcmV0 dXJuIC1FTlhJTyBvbiBsYWNrIG9mIHJlZ2lvbiBzcGFjZSwgLUVERUFETEsgZm9yIGRlYWRsb2Nr DQo+YXZvaWRhbmNlDQo+Pj4gKyAqIGlmIEB3dyBpcyBzZXQsIC1FSU5UUiBvciAtRVJFU1RBUlRT WVMgaWYgc2lnbmFsIHBlbmRpbmcsIGFuZA0KPj4+ICsgKiAtRUJVU1kgaWYgdGhlIG9iamVjdCBp cyBwaW5uZWQuDQo+Pj4gKyAqLw0KPj4+ICtpbnQgaTkxNV9nZW1fb2JqZWN0X21pZ3JhdGUoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwNCj4+PiArCQkJICAgIHN0cnVjdCBpOTE1X2dl bV93d19jdHggKnd3LA0KPj4+ICsJCQkgICAgZW51bSBpbnRlbF9yZWdpb25faWQgaWQpDQo+Pj4g K3sNCj4+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShvYmotPmJh c2UuZGV2KTsNCj4+PiArCXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptcjsNCj4+PiArDQo+ Pj4gKwlHRU1fQlVHX09OKGlkID49IElOVEVMX1JFR0lPTl9VTktOT1dOKTsNCj4+PiArCUdFTV9C VUdfT04ob2JqLT5tbS5tYWR2ICE9IEk5MTVfTUFEVl9XSUxMTkVFRCk7DQo+Pj4gKwlhc3NlcnRf b2JqZWN0X2hlbGQob2JqKTsNCj4+PiArDQo+Pj4gKwltciA9IGk5MTUtPm1tLnJlZ2lvbnNbaWRd Ow0KPj4+ICsJR0VNX0JVR19PTighbXIpOw0KPj4+ICsNCj4+PiArCWlmIChvYmotPm1tLnJlZ2lv biA9PSBtcikNCj4+PiArCQlyZXR1cm4gMDsNCj4+PiArDQo+Pj4gKwlpZiAoIWk5MTVfZ2VtX29i amVjdF9ldmljdGFibGUob2JqKSkNCj4+PiArCQlyZXR1cm4gLUVCVVNZOw0KPj4+ICsNCj4+PiAr CWlmICghb2JqLT5vcHMtPm1pZ3JhdGUpDQo+Pj4gKwkJcmV0dXJuIC1FT1BOT1RTVVBQOw0KPj4g V2h5IGFyZW4ndCB5b3UgdXNpbmcgX2Nhbl9taWdyYXRlIGhlcmU/DQo+DQo+SXQncyBqdXN0IGlu IGNhc2Ugd2Ugd2FudCB0byBvdmVycmlkZS4gSSdsbCBhZGQgc29tZSBtb3JlIGNvbW1lbnRzIGFi b3V0DQo+dGhpcy4NCj4NCj4+DQo+Pj4gKwlyZXR1cm4gb2JqLT5vcHMtPm1pZ3JhdGUob2JqLCBt cik7DQo+Pj4gK30NCj4+PiArDQo+Pj4gdm9pZCBpOTE1X2dlbV9pbml0X19vYmplY3RzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQ0KPj4+IHsNCj4+PiAJSU5JVF9XT1JLKCZpOTE1LT5t bS5mcmVlX3dvcmssIF9faTkxNV9nZW1fZnJlZV93b3JrKTsNCj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oDQo+Pj4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgNCj4+PiBpbmRleCBlYTMyMjRhNDgwYzQu LjhjYmQ3YTUzMzRlMiAxMDA2NDQNCj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fb2JqZWN0LmgNCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fb2JqZWN0LmgNCj4+PiBAQCAtMTcsNiArMTcsOCBAQA0KPj4+ICNpbmNsdWRlICJpOTE1 X2dlbV93dy5oIg0KPj4+ICNpbmNsdWRlICJpOTE1X3ZtYV90eXBlcy5oIg0KPj4+DQo+Pj4gK2Vu dW0gaW50ZWxfcmVnaW9uX2lkOw0KPj4+ICsNCj4+PiAvKg0KPj4+ICAgKiBYWFg6IFRoZXJlIGlz IGEgcHJldmFsZW5jZSBvZiB0aGUgYXNzdW1wdGlvbiB0aGF0IHdlIGZpdCB0aGUNCj4+PiAgICog b2JqZWN0J3MgcGFnZSBjb3VudCBpbnNpZGUgYSAzMmJpdCBfc2lnbmVkXyB2YXJpYWJsZS4gTGV0 J3MgZG9jdW1lbnQNCj4+PiBAQCAtNTk3LDYgKzU5OSwxNiBAQCBib29sIGk5MTVfZ2VtX29iamVj dF9taWdyYXRhYmxlKHN0cnVjdA0KPj4+IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7DQo+Pj4N Cj4+PiBib29sIGk5MTVfZ2VtX29iamVjdF92YWxpZGF0ZXNfdG9fbG1lbShzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdA0KPj4+ICpvYmopOw0KPj4+DQo+Pj4gK2ludCBpOTE1X2dlbV9vYmplY3Rf bWlncmF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLA0KPj4+ICsJCQkgICAgc3Ry dWN0IGk5MTVfZ2VtX3d3X2N0eCAqd3csDQo+Pj4gKwkJCSAgICBlbnVtIGludGVsX3JlZ2lvbl9p ZCBpZCk7DQo+Pj4gKw0KPj4+ICtib29sIGk5MTVfZ2VtX29iamVjdF9jYW5fbWlncmF0ZShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLA0KPj4+ICsJCQkJIGVudW0gaW50ZWxfcmVnaW9u X2lkIGlkKTsNCj4+PiArDQo+Pj4gK2ludCBpOTE1X2dlbV9vYmplY3Rfd2FpdF9taWdyYXRpb24o c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwNCj4+PiArCQkJCSAgIHVuc2lnbmVkIGlu dCBmbGFncyk7DQo+Pj4gKw0KPj4+ICNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSDQo+Pj4gc3Rh dGljIGlubGluZSBib29sDQo+Pj4gaTkxNV9nZW1fb2JqZWN0X2lzX3VzZXJwdHIoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikNCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oDQo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgNCj4+PiBpbmRleCA0NDFmOTEzYzg3ZTYu LmVmM2RlMmFlOTcyMyAxMDA2NDQNCj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgNCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgNCj4+PiBAQCAtMTgsNiArMTgsNyBAQA0KPj4+DQo+ Pj4gc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Q7DQo+Pj4gc3RydWN0IGludGVsX2Zyb25idWZm ZXI7DQo+Pj4gK3N0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uOw0KPj4+DQo+Pj4gLyoNCj4+PiAg ICogc3RydWN0IGk5MTVfbHV0X2hhbmRsZSB0cmFja3MgdGhlIGZhc3QgbG9va3VwcyBmcm9tIGhh bmRsZSB0byB2bWEgdXNlZA0KPj4+IEBAIC03Nyw2ICs3OCwxNCBAQCBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdF9vcHMgew0KPj4+IAkgKiBkZWxheWVkX2ZyZWUgLSBPdmVycmlkZSB0aGUgZGVm YXVsdCBkZWxheWVkIGZyZWUgaW1wbGVtZW50YXRpb24NCj4+PiAJICovDQo+Pj4gCXZvaWQgKCpk ZWxheWVkX2ZyZWUpKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOw0KPj4+ICsNCj4+ PiArCS8qKg0KPj4+ICsJICogbWlncmF0ZSAtIE1pZ3JhdGUgb2JqZWN0IHRvIGEgZGlmZmVyZW50 IHJlZ2lvbiBlaXRoZXIgZm9yDQo+Pj4gKwkgKiBwaW5uaW5nIG9yIGZvciBhcyBsb25nIGFzIHRo ZSBvYmplY3QgbG9jayBpcyBoZWxkLg0KPj4+ICsJICovDQo+Pj4gKwlpbnQgKCptaWdyYXRlKShz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLA0KPj4+ICsJCSAgICAgICBzdHJ1Y3QgaW50 ZWxfbWVtb3J5X3JlZ2lvbiAqbXIpOw0KPj4+ICsNCj4+PiAJdm9pZCAoKnJlbGVhc2UpKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOw0KPj4+DQo+Pj4gCWNvbnN0IHN0cnVjdCB2bV9v cGVyYXRpb25zX3N0cnVjdCAqbW1hcF9vcHM7DQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYw0KPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL2k5MTVfZ2VtX3R0bS5jDQo+Pj4gaW5kZXggYzM5ZDk4MmM0ZmE2Li44Zjg5MTg1YjY1MDcg MTAwNjQ0DQo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5j DQo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jDQo+Pj4g QEAgLTYxNyw3ICs2MTcsOCBAQCBzdHJ1Y3QgdHRtX2RldmljZV9mdW5jcyAqaTkxNV90dG1fZHJp dmVyKHZvaWQpDQo+Pj4gCXJldHVybiAmaTkxNV90dG1fYm9fZHJpdmVyOw0KPj4+IH0NCj4+Pg0K Pj4+IC1zdGF0aWMgaW50IGk5MTVfdHRtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQ0KPj4+ICtzdGF0aWMgaW50IF9faTkxNV90dG1fZ2V0X3BhZ2VzKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosDQo+Pj4gKwkJCQlzdHJ1Y3QgdHRtX3BsYWNlbWVudCAq cGxhY2VtZW50KQ0KPj4+IHsNCj4+PiAJc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyA9IGk5 MTVfZ2VtX3RvX3R0bShvYmopOw0KPj4+IAlzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggY3R4ID0g ew0KPj4+IEBAIC02MjUsMTkgKzYyNiwxMiBAQCBzdGF0aWMgaW50IGk5MTVfdHRtX2dldF9wYWdl cyhzdHJ1Y3QNCj4+PiBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopDQo+Pj4gCQkubm9fd2FpdF9n cHUgPSBmYWxzZSwNCj4+PiAJfTsNCj4+PiAJc3RydWN0IHNnX3RhYmxlICpzdDsNCj4+PiAtCXN0 cnVjdCB0dG1fcGxhY2UgcmVxdWVzdGVkLCBidXN5W0k5MTVfVFRNX01BWF9QTEFDRU1FTlRTXTsN Cj4+PiAtCXN0cnVjdCB0dG1fcGxhY2VtZW50IHBsYWNlbWVudDsNCj4+PiAJaW50IHJlYWxfbnVt X2J1c3k7DQo+Pj4gCWludCByZXQ7DQo+Pj4NCj4+PiAtCUdFTV9CVUdfT04ob2JqLT5tbS5uX3Bs YWNlbWVudHMgPg0KPj4+IEk5MTVfVFRNX01BWF9QTEFDRU1FTlRTKTsNCj4+PiAtDQo+Pj4gLQkv KiBNb3ZlIHRvIHRoZSByZXF1ZXN0ZWQgcGxhY2VtZW50LiAqLw0KPj4+IC0JaTkxNV90dG1fcGxh Y2VtZW50X2Zyb21fb2JqKG9iaiwgJnJlcXVlc3RlZCwgYnVzeSwgJnBsYWNlbWVudCk7DQo+Pj4g LQ0KPj4+IAkvKiBGaXJzdCB0cnkgb25seSB0aGUgcmVxdWVzdGVkIHBsYWNlbWVudC4gTm8gZXZp Y3Rpb24uICovDQo+Pj4gLQlyZWFsX251bV9idXN5ID0NCj4+PiBmZXRjaF9hbmRfemVybygmcGxh Y2VtZW50Lm51bV9idXN5X3BsYWNlbWVudCk7DQo+Pj4gLQlyZXQgPSB0dG1fYm9fdmFsaWRhdGUo Ym8sICZwbGFjZW1lbnQsICZjdHgpOw0KPj4+ICsJcmVhbF9udW1fYnVzeSA9IGZldGNoX2FuZF96 ZXJvKCZwbGFjZW1lbnQtDQo+Pj4+IG51bV9idXN5X3BsYWNlbWVudCk7DQo+Pj4gKwlyZXQgPSB0 dG1fYm9fdmFsaWRhdGUoYm8sIHBsYWNlbWVudCwgJmN0eCk7DQo+Pj4gCWlmIChyZXQpIHsNCj4+ PiAJCXJldCA9IGk5MTVfdHRtX2Vycl90b19nZW0ocmV0KTsNCj4+PiAJCS8qDQo+Pj4gQEAgLTY1 Miw4ICs2NDYsOCBAQCBzdGF0aWMgaW50IGk5MTVfdHRtX2dldF9wYWdlcyhzdHJ1Y3QNCj4+PiBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopDQo+Pj4gCQkgKiBJZiB0aGUgaW5pdGlhbCBhdHRlbXB0 IGZhaWxzLCBhbGxvdyBhbGwgYWNjZXB0ZWQgcGxhY2VtZW50cywNCj4+PiAJCSAqIGV2aWN0aW5n IGlmIG5lY2Vzc2FyeS4NCj4+PiAJCSAqLw0KPj4+IC0JCXBsYWNlbWVudC5udW1fYnVzeV9wbGFj ZW1lbnQgPSByZWFsX251bV9idXN5Ow0KPj4+IC0JCXJldCA9IHR0bV9ib192YWxpZGF0ZShibywg JnBsYWNlbWVudCwgJmN0eCk7DQo+Pj4gKwkJcGxhY2VtZW50LT5udW1fYnVzeV9wbGFjZW1lbnQg PSByZWFsX251bV9idXN5Ow0KPj4+ICsJCXJldCA9IHR0bV9ib192YWxpZGF0ZShibywgcGxhY2Vt ZW50LCAmY3R4KTsNCj4+PiAJCWlmIChyZXQpDQo+Pj4gCQkJcmV0dXJuIGk5MTVfdHRtX2Vycl90 b19nZW0ocmV0KTsNCj4+PiAJfQ0KPj4+IEBAIC02NjgsMTYgKzY2Miw1NiBAQCBzdGF0aWMgaW50 IGk5MTVfdHRtX2dldF9wYWdlcyhzdHJ1Y3QNCj4+PiBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop DQo+Pj4gCQlpOTE1X3R0bV9hZGp1c3RfZ2VtX2FmdGVyX21vdmUob2JqKTsNCj4+PiAJfQ0KPj4+ DQo+Pj4gLQkvKiBPYmplY3QgZWl0aGVyIGhhcyBhIHBhZ2UgdmVjdG9yIG9yIGlzIGFuIGlvbWVt IG9iamVjdCAqLw0KPj4+IC0Jc3QgPSBiby0+dHRtID8gaTkxNV90dG1fdHRfZ2V0X3N0KGJvLT50 dG0pIDogb2JqLT50dG0uY2FjaGVkX2lvX3N0Ow0KPj4+IC0JaWYgKElTX0VSUihzdCkpDQo+Pj4g LQkJcmV0dXJuIFBUUl9FUlIoc3QpOw0KPj4+ICsJaWYgKCFvYmotPm1tLnBhZ2VzKSB7DQo+Pj4g KwkJLyogT2JqZWN0IGVpdGhlciBoYXMgYSBwYWdlIHZlY3RvciBvciBpcyBhbiBpb21lbSBvYmpl Y3QgKi8NCj4+PiArCQlzdCA9IGJvLT50dG0gPyBpOTE1X3R0bV90dF9nZXRfc3QoYm8tPnR0bSkg OiBvYmotDQo+Pj4+IHR0bS5jYWNoZWRfaW9fc3Q7DQo+Pj4gKwkJaWYgKElTX0VSUihzdCkpDQo+ Pj4gKwkJCXJldHVybiBQVFJfRVJSKHN0KTsNCj4+Pg0KPj4+IC0JX19pOTE1X2dlbV9vYmplY3Rf c2V0X3BhZ2VzKG9iaiwgc3QsIGk5MTVfc2dfZG1hX3NpemVzKHN0LT5zZ2wpKTsNCj4+PiArCQlf X2k5MTVfZ2VtX29iamVjdF9zZXRfcGFnZXMob2JqLCBzdCwNCj4+PiBpOTE1X3NnX2RtYV9zaXpl cyhzdC0+c2dsKSk7DQo+Pj4gKwl9DQo+Pj4NCj4+PiAJcmV0dXJuIHJldDsNCj4+PiB9DQo+Pj4N Cj4+PiArc3RhdGljIGludCBpOTE1X3R0bV9nZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikNCj4+PiArew0KPj4+ICsJc3RydWN0IHR0bV9wbGFjZSByZXF1ZXN0ZWQsIGJ1 c3lbSTkxNV9UVE1fTUFYX1BMQUNFTUVOVFNdOw0KPj4+ICsJc3RydWN0IHR0bV9wbGFjZW1lbnQg cGxhY2VtZW50Ow0KPj4+ICsNCj4+PiArCUdFTV9CVUdfT04ob2JqLT5tbS5uX3BsYWNlbWVudHMg Pg0KPj4+IEk5MTVfVFRNX01BWF9QTEFDRU1FTlRTKTsNCj4+PiArDQo+Pj4gKwkvKiBNb3ZlIHRv IHRoZSByZXF1ZXN0ZWQgcGxhY2VtZW50LiAqLw0KPj4+ICsJaTkxNV90dG1fcGxhY2VtZW50X2Zy b21fb2JqKG9iaiwgJnJlcXVlc3RlZCwgYnVzeSwgJnBsYWNlbWVudCk7DQo+Pj4gKw0KPj4+ICsJ cmV0dXJuIF9faTkxNV90dG1fZ2V0X3BhZ2VzKG9iaiwgJnBsYWNlbWVudCk7DQo+Pj4gK30NCj4+ PiArDQo+Pj4gK3N0YXRpYyBpbnQgaTkxNV90dG1fbWlncmF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLA0KPj4+ICsJCQkgICAgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1y KQ0KPj4+ICt7DQo+Pj4gKwlzdHJ1Y3QgdHRtX3BsYWNlIHJlcXVlc3RlZDsNCj4+PiArCXN0cnVj dCB0dG1fcGxhY2VtZW50IHBsYWNlbWVudDsNCj4+PiArCWludCByZXQ7DQo+Pj4gKw0KPj4+ICsJ aTkxNV90dG1fcGxhY2VfZnJvbV9yZWdpb24obXIsICZyZXF1ZXN0ZWQsIG9iai0+ZmxhZ3MpOw0K Pj4+ICsJcGxhY2VtZW50Lm51bV9wbGFjZW1lbnQgPSAxOw0KPj4+ICsJcGxhY2VtZW50Lm51bV9i dXN5X3BsYWNlbWVudCA9IDE7DQo+Pj4gKwlwbGFjZW1lbnQucGxhY2VtZW50ID0gJnJlcXVlc3Rl ZDsNCj4+PiArCXBsYWNlbWVudC5idXN5X3BsYWNlbWVudCA9ICZyZXF1ZXN0ZWQ7DQo+Pj4gKw0K Pj4+ICsJcmV0ID0gX19pOTE1X3R0bV9nZXRfcGFnZXMob2JqLCAmcGxhY2VtZW50KTsNCj4+PiAr CWlmIChyZXQpDQo+Pj4gKwkJcmV0dXJuIHJldDsNCj4+PiArDQo+Pj4gKwlpZiAob2JqLT5tbS5y ZWdpb24gIT0gbXIpIHsNCj4+PiArCQlpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tZW1vcnlfcmVn aW9uKG9iaik7DQo+Pj4gKwkJaTkxNV9nZW1fb2JqZWN0X2luaXRfbWVtb3J5X3JlZ2lvbihvYmos IG1yKTsNCj4+PiArCX0NCj4+IFBlcmhhcHMgYSBtaW5vciBuaXQ6DQo+Pg0KPj4gRG9pbmcgdGhp cyBhZnRlciB3ZSBoYXZlIGRvbmUgdGhlIF9nZXRfcGFnZXMoKSBqdXN0IGRvZXNuJ3Qgc2VlbSBy aWdodC4NCj4+DQo+PiBJLmUuIHdlIGRvIHdvcmsgb24gdGhlIG9iamVjdCwgYW5kIHRoZW4gd2Ug aW5pdCBzb21lIHBvcnRpb24gb2YgaXQuDQo+Pg0KPj4gRG8gd2UgbmVlZCB0byBkbyB0aGlzIGlu Y2FzZSB0aGUgbWlncmF0aW9uL3BsYWNlbWVudCBmYWlscz8gIElmIHNvLA0KPj4gbWF5YmUgYSBj b21tZW50IHRvIHRoYXQgZWZmZWN0Pw0KPg0KPlRoaXMgaXMgc2ltcGx5IHN3aXRjaGluZyBtZW1v cnkgcmVnaW9uIHVuZGVyIHRoZSBsb2NrLCBhbmQgdG8gYWxzbyBtb3ZlDQo+dG8gYW5vdGhlciBt ZW1vcnkgcmVnaW9uIGxpc3QuIElzIGl0IHRoZSBuYW1pbmcgX3JlbGVhc2VfIGFuZCBfaW5pdF8N Cj50aGF0IGlzIGNvbmZ1c2luZz8NCg0KSG1tLCByZS1yZWFkaW5nIG15IHF1ZXN0aW9uLCBJIGFt IHdvbmRlcmluZyBpZiBJIHdhcyB1bmNsZWFyLg0KDQpNeSAicmVhbCIgcXVlc3Rpb24gd2FzLCBj YW4gdGhlIHJlbGVhc2UvaW5pdCBvY2N1ciBiZWZvcmUgdGhlIF9nZXRfcGFnZXMoKT8NCg0KQnV0 IGxvb2tpbmcgYXQgdGhpcyBzb21lIG1vcmUsIEkgY2FuIHNlZSBhbnN3ZXIgaXMgcHJvYmFibHkg bm8uDQoNCkkgd2FzIGdvaW5nIHRvIHN1Z2dlc3QgY2FsbGluZyBfaW5pdF8gX3NldF8sIGJ1dCB3 aGVuIEkgbG9va2VkIGF0IGl0LCBpdCB3YXMNCmRvaW5nIGluaXQgdGhpbmdzIGFzIHdlbGwgYXMg c2V0dGluZyB0aGluZ3MNCg0KTWF5YmUganVzdCBhIGNvbW1lbnQgbGlrZToNCg0KLyogQ29tcGxl dGUgdGhlIG1pZ3JhdGlvbiBieSB1cGRhdGluZyB0aGUgbWVtb3J5IHJlZ2lvbiBpbmZvLiAqLw0K aWYgKG9iamVjdC0+bW0uLi4pDQoNCj8NCg0KTQ0KDQo+L1Rob21hcw0KPg0KPg0KPj4NCj4+IFRo YW5rcywNCj4+DQo+PiBNaWtlDQo+Pg0KPj4+ICsJcmV0dXJuIDA7DQo+Pj4gK30NCj4+PiArDQo+ Pj4gc3RhdGljIHZvaWQgaTkxNV90dG1fcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosDQo+Pj4gCQkJICAgICAgIHN0cnVjdCBzZ190YWJsZSAqc3QpDQo+Pj4gew0KPj4+ IEBAIC04MTQsNiArODQ4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0X29wcw0KPj4+IGk5MTVfZ2VtX3R0bV9vYmpfb3BzID0gew0KPj4+IAkudHJ1bmNhdGUgPSBp OTE1X3R0bV9wdXJnZSwNCj4+PiAJLmFkanVzdF9scnUgPSBpOTE1X3R0bV9hZGp1c3RfbHJ1LA0K Pj4+IAkuZGVsYXllZF9mcmVlID0gaTkxNV90dG1fZGVsYXllZF9mcmVlLA0KPj4+ICsJLm1pZ3Jh dGUgPSBpOTE1X3R0bV9taWdyYXRlLA0KPj4+IAkubW1hcF9vZmZzZXQgPSBpOTE1X3R0bV9tbWFw X29mZnNldCwNCj4+PiAJLm1tYXBfb3BzID0gJnZtX29wc190dG0sDQo+Pj4gfTsNCj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3dhaXQuYw0KPj4+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3dhaXQuYw0KPj4+IGluZGV4IDEwNzBk M2FmZGNlNy4uZjkwOWFhYTA5ZDljIDEwMDY0NA0KPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9pOTE1X2dlbV93YWl0LmMNCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fd2FpdC5jDQo+Pj4gQEAgLTI5MCwzICsyOTAsMjIgQEAgaTkxNV9nZW1fd2Fp dF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkDQo+Pj4gKmRhdGEsIHN0cnVjdCBk cm1fZmlsZSAqZmlsZSkNCj4+PiAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOw0KPj4+IAlyZXR1 cm4gcmV0Ow0KPj4+IH0NCj4+PiArDQo+Pj4gKy8qKg0KPj4+ICsgKiBpOTE1X2dlbV9vYmplY3Rf d2FpdF9taWdyYXRpb24gLSBTeW5jIGFuIGFjY2VsZXJhdGVkIG1pZ3JhdGlvbg0KPj4+IG9wZXJh dGlvbg0KPj4+ICsgKiBAb2JqOiBUaGUgbWlncmF0aW5nIG9iamVjdC4NCj4+PiArICogQGZsYWdz OiB3YWl0aW5nIGZsYWdzLiBDdXJyZW50bHkgc3VwcG9ydHMgb25seQ0KPkk5MTVfV0FJVF9JTlRF UlJVUFRJQkxFLg0KPj4+ICsgKg0KPj4+ICsgKiBXYWl0IGZvciBhbnkgcGVuZGluZyBhc3luYyBt aWdyYXRpb24gb3BlcmF0aW9uIG9uIHRoZSBvYmplY3QsDQo+Pj4gKyAqIHdoZXRoZXIgaXQncyBl eHBsaWNpdGx5IChpOTE1X2dlbV9vYmplY3RfbWlncmF0ZSgpKSBvciBpbXBsaWNpdGx5DQo+Pj4g KyAqIChzd2FwaW4sIGluaXRpYWwgY2xlYXJpbmcpIGluaXRpYXRlZC4NCj4+PiArICoNCj4+PiAr ICogUmV0dXJuOiAwIGlmIHN1Y2Nlc3NmdWwsIC1FUkVTVEFSVFNZUyBpZiBhIHNpZ25hbCB3YXMg aGl0IGR1cmluZyB3YWl0aW5nLg0KPj4+ICsgKi8NCj4+PiAraW50IGk5MTVfZ2VtX29iamVjdF93 YWl0X21pZ3JhdGlvbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLA0KPj4+ICsJCQkJ ICAgdW5zaWduZWQgaW50IGZsYWdzKQ0KPj4+ICt7DQo+Pj4gKwltaWdodF9zbGVlcCgpOw0KPj4+ ICsJLyogTk9QIGZvciBub3cuICovDQo+Pj4gKwlyZXR1cm4gMDsNCj4+PiArfQ0KPj4+IC0tDQo+ Pj4gMi4zMS4xDQo= 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 X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 967DEC11F64 for ; Mon, 28 Jun 2021 19:50:26 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 5BAFA61C83 for ; Mon, 28 Jun 2021 19:50:26 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5BAFA61C83 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id DBC0D6E52C; Mon, 28 Jun 2021 19:50:25 +0000 (UTC) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 73D656E52C; Mon, 28 Jun 2021 19:50:24 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10029"; a="206199957" X-IronPort-AV: E=Sophos;i="5.83,306,1616482800"; d="scan'208";a="206199957" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jun 2021 12:50:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,306,1616482800"; d="scan'208";a="456467737" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga008.fm.intel.com with ESMTP; 28 Jun 2021 12:50:23 -0700 Received: from shsmsx604.ccr.corp.intel.com (10.109.6.214) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Mon, 28 Jun 2021 12:50:23 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by SHSMSX604.ccr.corp.intel.com (10.109.6.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Tue, 29 Jun 2021 03:50:20 +0800 Received: from orsmsx611.amr.corp.intel.com ([10.22.229.24]) by ORSMSX611.amr.corp.intel.com ([10.22.229.24]) with mapi id 15.01.2242.008; Mon, 28 Jun 2021 12:50:18 -0700 From: "Ruhl, Michael J" To: =?utf-8?B?VGhvbWFzIEhlbGxzdHLDtm0=?= , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" Thread-Topic: [PATCH v3 1/5] drm/i915/gem: Implement object migration Thread-Index: AQHXbCx1kCTgO3L0VUiTw1vp/169Q6sprYSAgACP1ID//4yA4A== Date: Mon, 28 Jun 2021 19:50:18 +0000 Message-ID: <615aebfc2bfd45dc836e798182501ef3@intel.com> References: <20210628144626.76126-1-thomas.hellstrom@linux.intel.com> <20210628144626.76126-2-thomas.hellstrom@linux.intel.com> <6ea416ea-b2d8-1485-6375-52810699f838@linux.intel.com> In-Reply-To: <6ea416ea-b2d8-1485-6375-52810699f838@linux.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.0.76 x-originating-ip: [10.1.200.100] MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH v3 1/5] drm/i915/gem: Implement object migration X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Auld, Matthew" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Pi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+RnJvbTogVGhvbWFzIEhlbGxzdHLDtm0gPHRo b21hcy5oZWxsc3Ryb21AbGludXguaW50ZWwuY29tPg0KPlNlbnQ6IE1vbmRheSwgSnVuZSAyOCwg MjAyMSAzOjAzIFBNDQo+VG86IFJ1aGwsIE1pY2hhZWwgSiA8bWljaGFlbC5qLnJ1aGxAaW50ZWwu Y29tPjsgaW50ZWwtDQo+Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZw0KPkNjOiBBdWxkLCBNYXR0aGV3IDxtYXR0aGV3LmF1bGRAaW50ZWwu Y29tPjsgbGtwIDxsa3BAaW50ZWwuY29tPg0KPlN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMS81XSBk cm0vaTkxNS9nZW06IEltcGxlbWVudCBvYmplY3QgbWlncmF0aW9uDQo+DQo+DQo+T24gNi8yOC8y MSA4OjExIFBNLCBSdWhsLCBNaWNoYWVsIEogd3JvdGU6DQo+Pj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4+PiBGcm9tOiBkcmktZGV2ZWwgPGRyaS1kZXZlbC1ib3VuY2VzQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZz4gT24gQmVoYWxmIE9mDQo+Pj4gVGhvbWFzIEhlbGxzdHLDtm0NCj4+PiBT ZW50OiBNb25kYXksIEp1bmUgMjgsIDIwMjEgMTA6NDYgQU0NCj4+PiBUbzogaW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZzsgZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPj4+ IENjOiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLmhlbGxzdHJvbUBsaW51eC5pbnRlbC5jb20+ OyBBdWxkLA0KPk1hdHRoZXcNCj4+PiA8bWF0dGhldy5hdWxkQGludGVsLmNvbT47IGxrcCA8bGtw QGludGVsLmNvbT4NCj4+PiBTdWJqZWN0OiBbUEFUQ0ggdjMgMS81XSBkcm0vaTkxNS9nZW06IElt cGxlbWVudCBvYmplY3QgbWlncmF0aW9uDQo+Pj4NCj4+PiBJbnRyb2R1Y2UgYW4gaW50ZXJmYWNl IHRvIG1pZ3JhdGUgb2JqZWN0cyBiZXR3ZWVuIHJlZ2lvbnMuDQo+Pj4gVGhpcyBpcyBwcmltYXJp bHkgaW50ZW5kZWQgdG8gbWlncmF0ZSBvYmplY3RzIHRvIExNRU0gZm9yIGRpc3BsYXkgYW5kDQo+ Pj4gdG8gU1lTVEVNIGZvciBkbWEtYnVmLCBidXQgbWlnaHQgYmUgcmV1c2VkIGluIG9uZSBmb3Jt IG9yIGFub3RoZXIgZm9yDQo+Pj4gcGVyZm9ybWFuY2UtYmFzZWQgbWlncmF0aW9uLg0KPj4+DQo+ Pj4gdjI6DQo+Pj4gLSBWZXJpZnkgdGhhdCB0aGUgbWVtb3J5IHJlZ2lvbiBnaXZlbiBhcyBhbiBp ZCByZWFsbHkgZXhpc3RzLg0KPj4+ICAgKFJlcG9ydGVkIGJ5IE1hdHRoZXcgQXVsZCkNCj4+PiAt IENhbGwgaTkxNV9nZW1fb2JqZWN0X3tpbml0LHJlbGVhc2V9X21lbW9yeV9yZWdpb24oKSB3aGVu IHN3aXRjaGluZw0KPj4+IHJlZ2lvbg0KPj4+ICAgdG8gaGFuZGxlIGFsc28gc3dpdGNoaW5nIHJl Z2lvbiBsaXN0cy4gKFJlcG9ydGVkIGJ5IE1hdHRoZXcgQXVsZCkNCj4+PiB2MzoNCj4+PiAtIEZp eCBpOTE1X2dlbV9vYmplY3RfY2FuX21pZ3JhdGUoKSB0byByZXR1cm4gdHJ1ZSBpZiBvYmplY3Qg aXMgYWxyZWFkeSBpbg0KPj4+ICAgdGhlIGNvcnJlY3QgcmVnaW9uLCBldmVuIGlmIHRoZSBvYmpl Y3Qgb3BzIGRvZXNuJ3QgaGF2ZSBhIG1pZ3JhdGUoKQ0KPj4+ICAgY2FsbGJhY2suDQo+Pj4gLSBV cGRhdGUgdHlwbyBpbiBjb21taXQgbWVzc2FnZS4NCj4+PiAtIEZpeCBrZXJuZWxkb2Mgb2YgaTkx NV9nZW1fb2JqZWN0X3dhaXRfbWlncmF0aW9uKCkuDQo+Pj4NCj4+PiBSZXBvcnRlZC1ieToga2Vy bmVsIHRlc3Qgcm9ib3QgPGxrcEBpbnRlbC5jb20+DQo+Pj4gU2lnbmVkLW9mZi1ieTogVGhvbWFz IEhlbGxzdHLDtm0gPHRob21hcy5oZWxsc3Ryb21AbGludXguaW50ZWwuY29tPg0KPj4+IC0tLQ0K Pj4+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYyAgICB8IDk2DQo+ Pj4gKysrKysrKysrKysrKysrKysrKw0KPj4+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9vYmplY3QuaCAgICB8IDEyICsrKw0KPj4+IC4uLi9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVf Z2VtX29iamVjdF90eXBlcy5oICB8ICA5ICsrDQo+Pj4gZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX3R0bS5jICAgICAgIHwgNjkgKysrKysrKysrLS0tLQ0KPj4+IGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV93YWl0LmMgICAgICB8IDE5ICsrKysNCj4+PiA1IGZpbGVz IGNoYW5nZWQsIDE4OCBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkNCj4+Pg0KPj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMNCj4+ PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYw0KPj4+IGluZGV4 IDA3ZThmZjlhOGFhZS4uMWMxOGJlMDY3YjU4IDEwMDY0NA0KPj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYw0KPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYw0KPj4+IEBAIC01MTMsNiArNTEzLDEwMiBAQCBi b29sIGk5MTVfZ2VtX29iamVjdF9oYXNfaW9tZW0oY29uc3Qgc3RydWN0DQo+Pj4gZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQ0KPj4+IAlyZXR1cm4gb2JqLT5tZW1fZmxhZ3MgJiBJOTE1X0JPX0ZM QUdfSU9NRU07DQo+Pj4gfQ0KPj4+DQo+Pj4gKy8qKg0KPj4+ICsgKiBpOTE1X2dlbV9vYmplY3Rf Y2FuX21pZ3JhdGUgLSBXaGV0aGVyIGFuIG9iamVjdCBsaWtlbHkgY2FuIGJlDQo+bWlncmF0ZWQN Cj4+PiArICoNCj4+PiArICogQG9iajogVGhlIG9iamVjdCB0byBtaWdyYXRlDQo+Pj4gKyAqIEBp ZDogVGhlIHJlZ2lvbiBpbnRlbmRlZCB0byBtaWdyYXRlIHRvDQo+Pj4gKyAqDQo+Pj4gKyAqIENo ZWNrIHdoZXRoZXIgdGhlIG9iamVjdCBiYWNrZW5kIHN1cHBvcnRzIG1pZ3JhdGlvbiB0byB0aGUN Cj4+PiArICogZ2l2ZW4gcmVnaW9uLiBOb3RlIHRoYXQgcGlubmluZyBtYXkgYWZmZWN0IHRoZSBh YmlsaXR5IHRvIG1pZ3JhdGUuDQo+Pj4gKyAqDQo+Pj4gKyAqIFJldHVybjogdHJ1ZSBpZiBtaWdy YXRpb24gaXMgcG9zc2libGUsIGZhbHNlIG90aGVyd2lzZS4NCj4+PiArICovDQo+Pj4gK2Jvb2wg aTkxNV9nZW1fb2JqZWN0X2Nhbl9taWdyYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmosDQo+Pj4gKwkJCQkgZW51bSBpbnRlbF9yZWdpb25faWQgaWQpDQo+Pj4gK3sNCj4+PiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShvYmotPmJhc2UuZGV2KTsNCj4+ PiArCXVuc2lnbmVkIGludCBudW1fYWxsb3dlZCA9IG9iai0+bW0ubl9wbGFjZW1lbnRzOw0KPj4+ ICsJc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1yOw0KPj4+ICsJdW5zaWduZWQgaW50IGk7 DQo+Pj4gKw0KPj4+ICsJR0VNX0JVR19PTihpZCA+PSBJTlRFTF9SRUdJT05fVU5LTk9XTik7DQo+ Pj4gKwlHRU1fQlVHX09OKG9iai0+bW0ubWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQpOw0KPj4+ ICsNCj4+PiArCW1yID0gaTkxNS0+bW0ucmVnaW9uc1tpZF07DQo+Pj4gKwlpZiAoIW1yKQ0KPj4+ ICsJCXJldHVybiBmYWxzZTsNCj4+PiArDQo+Pj4gKwlpZiAob2JqLT5tbS5yZWdpb24gPT0gbXIp DQo+Pj4gKwkJcmV0dXJuIHRydWU7DQo+Pj4gKw0KPj4+ICsJaWYgKCFpOTE1X2dlbV9vYmplY3Rf ZXZpY3RhYmxlKG9iaikpDQo+Pj4gKwkJcmV0dXJuIGZhbHNlOw0KPj4+ICsNCj4+PiArCWlmICgh b2JqLT5vcHMtPm1pZ3JhdGUpDQo+Pj4gKwkJcmV0dXJuIGZhbHNlOw0KPj4+ICsNCj4+PiArCWlm ICghKG9iai0+ZmxhZ3MgJiBJOTE1X0JPX0FMTE9DX1VTRVIpKQ0KPj4+ICsJCXJldHVybiB0cnVl Ow0KPj4+ICsNCj4+PiArCWlmIChudW1fYWxsb3dlZCA9PSAwKQ0KPj4+ICsJCXJldHVybiBmYWxz ZTsNCj4+PiArDQo+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgbnVtX2FsbG93ZWQ7ICsraSkgew0KPj4+ ICsJCWlmIChtciA9PSBvYmotPm1tLnBsYWNlbWVudHNbaV0pDQo+Pj4gKwkJCXJldHVybiB0cnVl Ow0KPj4+ICsJfQ0KPj4gSGkgVGhvbWFzLA0KPj4NCj4+IEkgYW0gYSBsaXR0bGUgY29uZnVzZWQg b3ZlciB0aGUgZGlmZmVyZW5jZSBpbiBjaGVja3MgYmV0d2VlbiB0aGlzIGZ1bmN0aW9uDQo+PiBh bmQgaTkxNV9nZW1fb2JqZWN0X21pZ3JhdGUoKS4NCj4+DQo+PiBXaHkgaXMgdGhlIGxhY2sgb2Yg YW4gbXIgYSBCVUdfT04gaW4gX29iamVjdF9taWdyYXRlKCksIGJ1dCBoZXJlIGl0IGp1c3QNCj4+ IGZhbHNlPw0KPj4NCj4+IFNvIHRoYXQgbWVhbnMgdGhhdCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0 YW5jZXMsIHlvdSBjb3VsZCBub3QgaGF2ZSBhIG1yPw0KPj4NCj4+IElmIHRoYXQgaXMgdGhlIGNh c2UsIHdoZW4/DQo+Pg0KPj4gV291bGQgdGhhdCBiZSB3aGVuIHRoZSBJOTE1X0JPX0FMTE9DX1VT RVIgaXMgc2V0Pw0KPj4NCj4+IElmIHNvLCBzaG91bGQgdGhlcmUgYmUgYSBjaGVjayBmb3IgIm5v biIgdXNlciB2cyB1c2VyPw0KPj4NCj4+IE9yIG1heWJlIGRvY3VtZW50IHRoaXMgZnVuY3Rpb24g cG9pbnRpbmcgb3V0IHdoeSB0aGVyZSBhcmUgZGlmZmVyZW5jZXMNCj4+IGFuZCB3aHk/DQo+DQo+ WWVzLCBJJ2xsIGdpdmUgaXQgc29tZSBtb3JlIGRvY3VtZW50YXRpb24uIFRoZSBiYXNpYyBpZGVh IGlzIHRoYXQgdGhlDQo+YWJvdmUgZnVuY3Rpb24gYWxzbyBjb3VsZCBiZQ0KPnVzZWQgdG8gdmFs aWRhdGUgdXNlciBzdXBwbGllZCBkYXRhLCB3aGVyZWFzIHRoZXJlIG1pZ2h0IGJlIGNhc2VzIHdo ZXJlDQo+d2Ugd2FudCB0byB1c2UgdGhlIGdlbV9vYmplY3RfbWlncmF0ZSgpIGZ1bmN0aW9uIGFu ZCBvdmVycmlkZSB0aGUgYWJvdmUuDQo+DQo+DQo+Pg0KPj4+ICsJcmV0dXJuIGZhbHNlOw0KPj4+ ICt9DQo+Pj4gKw0KPj4+ICsvKioNCj4+PiArICogaTkxNV9nZW1fb2JqZWN0X21pZ3JhdGUgLSBN aWdyYXRlIGFuIG9iamVjdCB0byB0aGUgZGVzaXJlZCByZWdpb24gaWQNCj4+PiArICogQG9iajog VGhlIG9iamVjdCB0byBtaWdyYXRlLg0KPj4+ICsgKiBAd3c6IEFuIG9wdGlvbmFsIHN0cnVjdCBp OTE1X2dlbV93d19jdHguIElmIE5VTEwsIHRoZSBiYWNrZW5kIG1heQ0KPj4+ICsgKiBub3QgYmUg c3VjY2Vzc2Z1bCBpbiBldmljdGluZyBvdGhlciBvYmplY3RzIHRvIG1ha2Ugcm9vbSBmb3IgdGhp cyBvYmplY3QuDQo+PiBJcyB0aGUgd3cgZm9yIGZ1dHVyZSBjb25zaWRlcmF0aW9uPyAgKEkgZG9u J3Qgc2VlIGFueSB1c2Ugb2YgaXQgaW4gdGhlIHBhdGNoKS4NCj4NCj5ZZXMsIGJ1dCBpdCB3aWxs IHJlbWFpbiBvcHRpb25hbC4NCj4NCj4NCj4+DQo+Pj4gKyAqIEBpZDogVGhlIHJlZ2lvbiBpZCB0 byBtaWdyYXRlIHRvLg0KPj4+ICsgKg0KPj4+ICsgKiBBdHRlbXB0IHRvIG1pZ3JhdGUgdGhlIG9i amVjdCB0byB0aGUgZGVzaXJlZCBtZW1vcnkgcmVnaW9uLiBUaGUNCj4+PiArICogb2JqZWN0IGJh Y2tlbmQgbXVzdCBzdXBwb3J0IG1pZ3JhdGlvbiBhbmQgdGhlIG9iamVjdCBtYXkgbm90IGJlDQo+ Pj4gKyAqIHBpbm5lZCwgKGV4cGxpY2l0bHkgcGlubmVkIHBhZ2VzIG9yIHBpbm5lZCB2bWFzKS4g VGhlIG9iamVjdCBtdXN0DQo+Pj4gKyAqIGJlIGxvY2tlZC4NCj4+PiArICogT24gc3VjY2Vzc2Z1 bCBjb21wbGV0aW9uLCB0aGUgb2JqZWN0IHdpbGwgaGF2ZSBwYWdlcyBwb2ludGluZyB0bw0KPj4+ ICsgKiBtZW1vcnkgaW4gdGhlIG5ldyByZWdpb24sIGJ1dCBhbiBhc3luYyBtaWdyYXRpb24gdGFz ayBtYXkgbm90IGhhdmUNCj4+PiArICogY29tcGxldGVkIHlldCwgYW5kIHRvIGFjY29tcGxpc2gg dGhhdCwNCj4+PiBpOTE1X2dlbV9vYmplY3Rfd2FpdF9taWdyYXRpb24oKQ0KPj4+ICsgKiBtdXN0 IGJlIGNhbGxlZC4NCj4+PiArICoNCj4+PiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MuIE5lZ2F0 aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4gSW4gcGFydGljdWxhciBtYXkNCj4+PiArICogcmV0 dXJuIC1FTlhJTyBvbiBsYWNrIG9mIHJlZ2lvbiBzcGFjZSwgLUVERUFETEsgZm9yIGRlYWRsb2Nr DQo+YXZvaWRhbmNlDQo+Pj4gKyAqIGlmIEB3dyBpcyBzZXQsIC1FSU5UUiBvciAtRVJFU1RBUlRT WVMgaWYgc2lnbmFsIHBlbmRpbmcsIGFuZA0KPj4+ICsgKiAtRUJVU1kgaWYgdGhlIG9iamVjdCBp cyBwaW5uZWQuDQo+Pj4gKyAqLw0KPj4+ICtpbnQgaTkxNV9nZW1fb2JqZWN0X21pZ3JhdGUoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwNCj4+PiArCQkJICAgIHN0cnVjdCBpOTE1X2dl bV93d19jdHggKnd3LA0KPj4+ICsJCQkgICAgZW51bSBpbnRlbF9yZWdpb25faWQgaWQpDQo+Pj4g K3sNCj4+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShvYmotPmJh c2UuZGV2KTsNCj4+PiArCXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptcjsNCj4+PiArDQo+ Pj4gKwlHRU1fQlVHX09OKGlkID49IElOVEVMX1JFR0lPTl9VTktOT1dOKTsNCj4+PiArCUdFTV9C VUdfT04ob2JqLT5tbS5tYWR2ICE9IEk5MTVfTUFEVl9XSUxMTkVFRCk7DQo+Pj4gKwlhc3NlcnRf b2JqZWN0X2hlbGQob2JqKTsNCj4+PiArDQo+Pj4gKwltciA9IGk5MTUtPm1tLnJlZ2lvbnNbaWRd Ow0KPj4+ICsJR0VNX0JVR19PTighbXIpOw0KPj4+ICsNCj4+PiArCWlmIChvYmotPm1tLnJlZ2lv biA9PSBtcikNCj4+PiArCQlyZXR1cm4gMDsNCj4+PiArDQo+Pj4gKwlpZiAoIWk5MTVfZ2VtX29i amVjdF9ldmljdGFibGUob2JqKSkNCj4+PiArCQlyZXR1cm4gLUVCVVNZOw0KPj4+ICsNCj4+PiAr CWlmICghb2JqLT5vcHMtPm1pZ3JhdGUpDQo+Pj4gKwkJcmV0dXJuIC1FT1BOT1RTVVBQOw0KPj4g V2h5IGFyZW4ndCB5b3UgdXNpbmcgX2Nhbl9taWdyYXRlIGhlcmU/DQo+DQo+SXQncyBqdXN0IGlu IGNhc2Ugd2Ugd2FudCB0byBvdmVycmlkZS4gSSdsbCBhZGQgc29tZSBtb3JlIGNvbW1lbnRzIGFi b3V0DQo+dGhpcy4NCj4NCj4+DQo+Pj4gKwlyZXR1cm4gb2JqLT5vcHMtPm1pZ3JhdGUob2JqLCBt cik7DQo+Pj4gK30NCj4+PiArDQo+Pj4gdm9pZCBpOTE1X2dlbV9pbml0X19vYmplY3RzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQ0KPj4+IHsNCj4+PiAJSU5JVF9XT1JLKCZpOTE1LT5t bS5mcmVlX3dvcmssIF9faTkxNV9nZW1fZnJlZV93b3JrKTsNCj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oDQo+Pj4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgNCj4+PiBpbmRleCBlYTMyMjRhNDgwYzQu LjhjYmQ3YTUzMzRlMiAxMDA2NDQNCj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fb2JqZWN0LmgNCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fb2JqZWN0LmgNCj4+PiBAQCAtMTcsNiArMTcsOCBAQA0KPj4+ICNpbmNsdWRlICJpOTE1 X2dlbV93dy5oIg0KPj4+ICNpbmNsdWRlICJpOTE1X3ZtYV90eXBlcy5oIg0KPj4+DQo+Pj4gK2Vu dW0gaW50ZWxfcmVnaW9uX2lkOw0KPj4+ICsNCj4+PiAvKg0KPj4+ICAgKiBYWFg6IFRoZXJlIGlz IGEgcHJldmFsZW5jZSBvZiB0aGUgYXNzdW1wdGlvbiB0aGF0IHdlIGZpdCB0aGUNCj4+PiAgICog b2JqZWN0J3MgcGFnZSBjb3VudCBpbnNpZGUgYSAzMmJpdCBfc2lnbmVkXyB2YXJpYWJsZS4gTGV0 J3MgZG9jdW1lbnQNCj4+PiBAQCAtNTk3LDYgKzU5OSwxNiBAQCBib29sIGk5MTVfZ2VtX29iamVj dF9taWdyYXRhYmxlKHN0cnVjdA0KPj4+IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7DQo+Pj4N Cj4+PiBib29sIGk5MTVfZ2VtX29iamVjdF92YWxpZGF0ZXNfdG9fbG1lbShzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdA0KPj4+ICpvYmopOw0KPj4+DQo+Pj4gK2ludCBpOTE1X2dlbV9vYmplY3Rf bWlncmF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLA0KPj4+ICsJCQkgICAgc3Ry dWN0IGk5MTVfZ2VtX3d3X2N0eCAqd3csDQo+Pj4gKwkJCSAgICBlbnVtIGludGVsX3JlZ2lvbl9p ZCBpZCk7DQo+Pj4gKw0KPj4+ICtib29sIGk5MTVfZ2VtX29iamVjdF9jYW5fbWlncmF0ZShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLA0KPj4+ICsJCQkJIGVudW0gaW50ZWxfcmVnaW9u X2lkIGlkKTsNCj4+PiArDQo+Pj4gK2ludCBpOTE1X2dlbV9vYmplY3Rfd2FpdF9taWdyYXRpb24o c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwNCj4+PiArCQkJCSAgIHVuc2lnbmVkIGlu dCBmbGFncyk7DQo+Pj4gKw0KPj4+ICNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSDQo+Pj4gc3Rh dGljIGlubGluZSBib29sDQo+Pj4gaTkxNV9nZW1fb2JqZWN0X2lzX3VzZXJwdHIoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikNCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oDQo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgNCj4+PiBpbmRleCA0NDFmOTEzYzg3ZTYu LmVmM2RlMmFlOTcyMyAxMDA2NDQNCj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgNCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgNCj4+PiBAQCAtMTgsNiArMTgsNyBAQA0KPj4+DQo+ Pj4gc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Q7DQo+Pj4gc3RydWN0IGludGVsX2Zyb25idWZm ZXI7DQo+Pj4gK3N0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uOw0KPj4+DQo+Pj4gLyoNCj4+PiAg ICogc3RydWN0IGk5MTVfbHV0X2hhbmRsZSB0cmFja3MgdGhlIGZhc3QgbG9va3VwcyBmcm9tIGhh bmRsZSB0byB2bWEgdXNlZA0KPj4+IEBAIC03Nyw2ICs3OCwxNCBAQCBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdF9vcHMgew0KPj4+IAkgKiBkZWxheWVkX2ZyZWUgLSBPdmVycmlkZSB0aGUgZGVm YXVsdCBkZWxheWVkIGZyZWUgaW1wbGVtZW50YXRpb24NCj4+PiAJICovDQo+Pj4gCXZvaWQgKCpk ZWxheWVkX2ZyZWUpKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOw0KPj4+ICsNCj4+ PiArCS8qKg0KPj4+ICsJICogbWlncmF0ZSAtIE1pZ3JhdGUgb2JqZWN0IHRvIGEgZGlmZmVyZW50 IHJlZ2lvbiBlaXRoZXIgZm9yDQo+Pj4gKwkgKiBwaW5uaW5nIG9yIGZvciBhcyBsb25nIGFzIHRo ZSBvYmplY3QgbG9jayBpcyBoZWxkLg0KPj4+ICsJICovDQo+Pj4gKwlpbnQgKCptaWdyYXRlKShz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLA0KPj4+ICsJCSAgICAgICBzdHJ1Y3QgaW50 ZWxfbWVtb3J5X3JlZ2lvbiAqbXIpOw0KPj4+ICsNCj4+PiAJdm9pZCAoKnJlbGVhc2UpKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOw0KPj4+DQo+Pj4gCWNvbnN0IHN0cnVjdCB2bV9v cGVyYXRpb25zX3N0cnVjdCAqbW1hcF9vcHM7DQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYw0KPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL2k5MTVfZ2VtX3R0bS5jDQo+Pj4gaW5kZXggYzM5ZDk4MmM0ZmE2Li44Zjg5MTg1YjY1MDcg MTAwNjQ0DQo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5j DQo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jDQo+Pj4g QEAgLTYxNyw3ICs2MTcsOCBAQCBzdHJ1Y3QgdHRtX2RldmljZV9mdW5jcyAqaTkxNV90dG1fZHJp dmVyKHZvaWQpDQo+Pj4gCXJldHVybiAmaTkxNV90dG1fYm9fZHJpdmVyOw0KPj4+IH0NCj4+Pg0K Pj4+IC1zdGF0aWMgaW50IGk5MTVfdHRtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQ0KPj4+ICtzdGF0aWMgaW50IF9faTkxNV90dG1fZ2V0X3BhZ2VzKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosDQo+Pj4gKwkJCQlzdHJ1Y3QgdHRtX3BsYWNlbWVudCAq cGxhY2VtZW50KQ0KPj4+IHsNCj4+PiAJc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyA9IGk5 MTVfZ2VtX3RvX3R0bShvYmopOw0KPj4+IAlzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggY3R4ID0g ew0KPj4+IEBAIC02MjUsMTkgKzYyNiwxMiBAQCBzdGF0aWMgaW50IGk5MTVfdHRtX2dldF9wYWdl cyhzdHJ1Y3QNCj4+PiBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopDQo+Pj4gCQkubm9fd2FpdF9n cHUgPSBmYWxzZSwNCj4+PiAJfTsNCj4+PiAJc3RydWN0IHNnX3RhYmxlICpzdDsNCj4+PiAtCXN0 cnVjdCB0dG1fcGxhY2UgcmVxdWVzdGVkLCBidXN5W0k5MTVfVFRNX01BWF9QTEFDRU1FTlRTXTsN Cj4+PiAtCXN0cnVjdCB0dG1fcGxhY2VtZW50IHBsYWNlbWVudDsNCj4+PiAJaW50IHJlYWxfbnVt X2J1c3k7DQo+Pj4gCWludCByZXQ7DQo+Pj4NCj4+PiAtCUdFTV9CVUdfT04ob2JqLT5tbS5uX3Bs YWNlbWVudHMgPg0KPj4+IEk5MTVfVFRNX01BWF9QTEFDRU1FTlRTKTsNCj4+PiAtDQo+Pj4gLQkv KiBNb3ZlIHRvIHRoZSByZXF1ZXN0ZWQgcGxhY2VtZW50LiAqLw0KPj4+IC0JaTkxNV90dG1fcGxh Y2VtZW50X2Zyb21fb2JqKG9iaiwgJnJlcXVlc3RlZCwgYnVzeSwgJnBsYWNlbWVudCk7DQo+Pj4g LQ0KPj4+IAkvKiBGaXJzdCB0cnkgb25seSB0aGUgcmVxdWVzdGVkIHBsYWNlbWVudC4gTm8gZXZp Y3Rpb24uICovDQo+Pj4gLQlyZWFsX251bV9idXN5ID0NCj4+PiBmZXRjaF9hbmRfemVybygmcGxh Y2VtZW50Lm51bV9idXN5X3BsYWNlbWVudCk7DQo+Pj4gLQlyZXQgPSB0dG1fYm9fdmFsaWRhdGUo Ym8sICZwbGFjZW1lbnQsICZjdHgpOw0KPj4+ICsJcmVhbF9udW1fYnVzeSA9IGZldGNoX2FuZF96 ZXJvKCZwbGFjZW1lbnQtDQo+Pj4+IG51bV9idXN5X3BsYWNlbWVudCk7DQo+Pj4gKwlyZXQgPSB0 dG1fYm9fdmFsaWRhdGUoYm8sIHBsYWNlbWVudCwgJmN0eCk7DQo+Pj4gCWlmIChyZXQpIHsNCj4+ PiAJCXJldCA9IGk5MTVfdHRtX2Vycl90b19nZW0ocmV0KTsNCj4+PiAJCS8qDQo+Pj4gQEAgLTY1 Miw4ICs2NDYsOCBAQCBzdGF0aWMgaW50IGk5MTVfdHRtX2dldF9wYWdlcyhzdHJ1Y3QNCj4+PiBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopDQo+Pj4gCQkgKiBJZiB0aGUgaW5pdGlhbCBhdHRlbXB0 IGZhaWxzLCBhbGxvdyBhbGwgYWNjZXB0ZWQgcGxhY2VtZW50cywNCj4+PiAJCSAqIGV2aWN0aW5n IGlmIG5lY2Vzc2FyeS4NCj4+PiAJCSAqLw0KPj4+IC0JCXBsYWNlbWVudC5udW1fYnVzeV9wbGFj ZW1lbnQgPSByZWFsX251bV9idXN5Ow0KPj4+IC0JCXJldCA9IHR0bV9ib192YWxpZGF0ZShibywg JnBsYWNlbWVudCwgJmN0eCk7DQo+Pj4gKwkJcGxhY2VtZW50LT5udW1fYnVzeV9wbGFjZW1lbnQg PSByZWFsX251bV9idXN5Ow0KPj4+ICsJCXJldCA9IHR0bV9ib192YWxpZGF0ZShibywgcGxhY2Vt ZW50LCAmY3R4KTsNCj4+PiAJCWlmIChyZXQpDQo+Pj4gCQkJcmV0dXJuIGk5MTVfdHRtX2Vycl90 b19nZW0ocmV0KTsNCj4+PiAJfQ0KPj4+IEBAIC02NjgsMTYgKzY2Miw1NiBAQCBzdGF0aWMgaW50 IGk5MTVfdHRtX2dldF9wYWdlcyhzdHJ1Y3QNCj4+PiBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop DQo+Pj4gCQlpOTE1X3R0bV9hZGp1c3RfZ2VtX2FmdGVyX21vdmUob2JqKTsNCj4+PiAJfQ0KPj4+ DQo+Pj4gLQkvKiBPYmplY3QgZWl0aGVyIGhhcyBhIHBhZ2UgdmVjdG9yIG9yIGlzIGFuIGlvbWVt IG9iamVjdCAqLw0KPj4+IC0Jc3QgPSBiby0+dHRtID8gaTkxNV90dG1fdHRfZ2V0X3N0KGJvLT50 dG0pIDogb2JqLT50dG0uY2FjaGVkX2lvX3N0Ow0KPj4+IC0JaWYgKElTX0VSUihzdCkpDQo+Pj4g LQkJcmV0dXJuIFBUUl9FUlIoc3QpOw0KPj4+ICsJaWYgKCFvYmotPm1tLnBhZ2VzKSB7DQo+Pj4g KwkJLyogT2JqZWN0IGVpdGhlciBoYXMgYSBwYWdlIHZlY3RvciBvciBpcyBhbiBpb21lbSBvYmpl Y3QgKi8NCj4+PiArCQlzdCA9IGJvLT50dG0gPyBpOTE1X3R0bV90dF9nZXRfc3QoYm8tPnR0bSkg OiBvYmotDQo+Pj4+IHR0bS5jYWNoZWRfaW9fc3Q7DQo+Pj4gKwkJaWYgKElTX0VSUihzdCkpDQo+ Pj4gKwkJCXJldHVybiBQVFJfRVJSKHN0KTsNCj4+Pg0KPj4+IC0JX19pOTE1X2dlbV9vYmplY3Rf c2V0X3BhZ2VzKG9iaiwgc3QsIGk5MTVfc2dfZG1hX3NpemVzKHN0LT5zZ2wpKTsNCj4+PiArCQlf X2k5MTVfZ2VtX29iamVjdF9zZXRfcGFnZXMob2JqLCBzdCwNCj4+PiBpOTE1X3NnX2RtYV9zaXpl cyhzdC0+c2dsKSk7DQo+Pj4gKwl9DQo+Pj4NCj4+PiAJcmV0dXJuIHJldDsNCj4+PiB9DQo+Pj4N Cj4+PiArc3RhdGljIGludCBpOTE1X3R0bV9nZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikNCj4+PiArew0KPj4+ICsJc3RydWN0IHR0bV9wbGFjZSByZXF1ZXN0ZWQsIGJ1 c3lbSTkxNV9UVE1fTUFYX1BMQUNFTUVOVFNdOw0KPj4+ICsJc3RydWN0IHR0bV9wbGFjZW1lbnQg cGxhY2VtZW50Ow0KPj4+ICsNCj4+PiArCUdFTV9CVUdfT04ob2JqLT5tbS5uX3BsYWNlbWVudHMg Pg0KPj4+IEk5MTVfVFRNX01BWF9QTEFDRU1FTlRTKTsNCj4+PiArDQo+Pj4gKwkvKiBNb3ZlIHRv IHRoZSByZXF1ZXN0ZWQgcGxhY2VtZW50LiAqLw0KPj4+ICsJaTkxNV90dG1fcGxhY2VtZW50X2Zy b21fb2JqKG9iaiwgJnJlcXVlc3RlZCwgYnVzeSwgJnBsYWNlbWVudCk7DQo+Pj4gKw0KPj4+ICsJ cmV0dXJuIF9faTkxNV90dG1fZ2V0X3BhZ2VzKG9iaiwgJnBsYWNlbWVudCk7DQo+Pj4gK30NCj4+ PiArDQo+Pj4gK3N0YXRpYyBpbnQgaTkxNV90dG1fbWlncmF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLA0KPj4+ICsJCQkgICAgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1y KQ0KPj4+ICt7DQo+Pj4gKwlzdHJ1Y3QgdHRtX3BsYWNlIHJlcXVlc3RlZDsNCj4+PiArCXN0cnVj dCB0dG1fcGxhY2VtZW50IHBsYWNlbWVudDsNCj4+PiArCWludCByZXQ7DQo+Pj4gKw0KPj4+ICsJ aTkxNV90dG1fcGxhY2VfZnJvbV9yZWdpb24obXIsICZyZXF1ZXN0ZWQsIG9iai0+ZmxhZ3MpOw0K Pj4+ICsJcGxhY2VtZW50Lm51bV9wbGFjZW1lbnQgPSAxOw0KPj4+ICsJcGxhY2VtZW50Lm51bV9i dXN5X3BsYWNlbWVudCA9IDE7DQo+Pj4gKwlwbGFjZW1lbnQucGxhY2VtZW50ID0gJnJlcXVlc3Rl ZDsNCj4+PiArCXBsYWNlbWVudC5idXN5X3BsYWNlbWVudCA9ICZyZXF1ZXN0ZWQ7DQo+Pj4gKw0K Pj4+ICsJcmV0ID0gX19pOTE1X3R0bV9nZXRfcGFnZXMob2JqLCAmcGxhY2VtZW50KTsNCj4+PiAr CWlmIChyZXQpDQo+Pj4gKwkJcmV0dXJuIHJldDsNCj4+PiArDQo+Pj4gKwlpZiAob2JqLT5tbS5y ZWdpb24gIT0gbXIpIHsNCj4+PiArCQlpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tZW1vcnlfcmVn aW9uKG9iaik7DQo+Pj4gKwkJaTkxNV9nZW1fb2JqZWN0X2luaXRfbWVtb3J5X3JlZ2lvbihvYmos IG1yKTsNCj4+PiArCX0NCj4+IFBlcmhhcHMgYSBtaW5vciBuaXQ6DQo+Pg0KPj4gRG9pbmcgdGhp cyBhZnRlciB3ZSBoYXZlIGRvbmUgdGhlIF9nZXRfcGFnZXMoKSBqdXN0IGRvZXNuJ3Qgc2VlbSBy aWdodC4NCj4+DQo+PiBJLmUuIHdlIGRvIHdvcmsgb24gdGhlIG9iamVjdCwgYW5kIHRoZW4gd2Ug aW5pdCBzb21lIHBvcnRpb24gb2YgaXQuDQo+Pg0KPj4gRG8gd2UgbmVlZCB0byBkbyB0aGlzIGlu Y2FzZSB0aGUgbWlncmF0aW9uL3BsYWNlbWVudCBmYWlscz8gIElmIHNvLA0KPj4gbWF5YmUgYSBj b21tZW50IHRvIHRoYXQgZWZmZWN0Pw0KPg0KPlRoaXMgaXMgc2ltcGx5IHN3aXRjaGluZyBtZW1v cnkgcmVnaW9uIHVuZGVyIHRoZSBsb2NrLCBhbmQgdG8gYWxzbyBtb3ZlDQo+dG8gYW5vdGhlciBt ZW1vcnkgcmVnaW9uIGxpc3QuIElzIGl0IHRoZSBuYW1pbmcgX3JlbGVhc2VfIGFuZCBfaW5pdF8N Cj50aGF0IGlzIGNvbmZ1c2luZz8NCg0KSG1tLCByZS1yZWFkaW5nIG15IHF1ZXN0aW9uLCBJIGFt IHdvbmRlcmluZyBpZiBJIHdhcyB1bmNsZWFyLg0KDQpNeSAicmVhbCIgcXVlc3Rpb24gd2FzLCBj YW4gdGhlIHJlbGVhc2UvaW5pdCBvY2N1ciBiZWZvcmUgdGhlIF9nZXRfcGFnZXMoKT8NCg0KQnV0 IGxvb2tpbmcgYXQgdGhpcyBzb21lIG1vcmUsIEkgY2FuIHNlZSBhbnN3ZXIgaXMgcHJvYmFibHkg bm8uDQoNCkkgd2FzIGdvaW5nIHRvIHN1Z2dlc3QgY2FsbGluZyBfaW5pdF8gX3NldF8sIGJ1dCB3 aGVuIEkgbG9va2VkIGF0IGl0LCBpdCB3YXMNCmRvaW5nIGluaXQgdGhpbmdzIGFzIHdlbGwgYXMg c2V0dGluZyB0aGluZ3MNCg0KTWF5YmUganVzdCBhIGNvbW1lbnQgbGlrZToNCg0KLyogQ29tcGxl dGUgdGhlIG1pZ3JhdGlvbiBieSB1cGRhdGluZyB0aGUgbWVtb3J5IHJlZ2lvbiBpbmZvLiAqLw0K aWYgKG9iamVjdC0+bW0uLi4pDQoNCj8NCg0KTQ0KDQo+L1Rob21hcw0KPg0KPg0KPj4NCj4+IFRo YW5rcywNCj4+DQo+PiBNaWtlDQo+Pg0KPj4+ICsJcmV0dXJuIDA7DQo+Pj4gK30NCj4+PiArDQo+ Pj4gc3RhdGljIHZvaWQgaTkxNV90dG1fcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosDQo+Pj4gCQkJICAgICAgIHN0cnVjdCBzZ190YWJsZSAqc3QpDQo+Pj4gew0KPj4+ IEBAIC04MTQsNiArODQ4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0X29wcw0KPj4+IGk5MTVfZ2VtX3R0bV9vYmpfb3BzID0gew0KPj4+IAkudHJ1bmNhdGUgPSBp OTE1X3R0bV9wdXJnZSwNCj4+PiAJLmFkanVzdF9scnUgPSBpOTE1X3R0bV9hZGp1c3RfbHJ1LA0K Pj4+IAkuZGVsYXllZF9mcmVlID0gaTkxNV90dG1fZGVsYXllZF9mcmVlLA0KPj4+ICsJLm1pZ3Jh dGUgPSBpOTE1X3R0bV9taWdyYXRlLA0KPj4+IAkubW1hcF9vZmZzZXQgPSBpOTE1X3R0bV9tbWFw X29mZnNldCwNCj4+PiAJLm1tYXBfb3BzID0gJnZtX29wc190dG0sDQo+Pj4gfTsNCj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3dhaXQuYw0KPj4+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3dhaXQuYw0KPj4+IGluZGV4IDEwNzBk M2FmZGNlNy4uZjkwOWFhYTA5ZDljIDEwMDY0NA0KPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9pOTE1X2dlbV93YWl0LmMNCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fd2FpdC5jDQo+Pj4gQEAgLTI5MCwzICsyOTAsMjIgQEAgaTkxNV9nZW1fd2Fp dF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkDQo+Pj4gKmRhdGEsIHN0cnVjdCBk cm1fZmlsZSAqZmlsZSkNCj4+PiAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOw0KPj4+IAlyZXR1 cm4gcmV0Ow0KPj4+IH0NCj4+PiArDQo+Pj4gKy8qKg0KPj4+ICsgKiBpOTE1X2dlbV9vYmplY3Rf d2FpdF9taWdyYXRpb24gLSBTeW5jIGFuIGFjY2VsZXJhdGVkIG1pZ3JhdGlvbg0KPj4+IG9wZXJh dGlvbg0KPj4+ICsgKiBAb2JqOiBUaGUgbWlncmF0aW5nIG9iamVjdC4NCj4+PiArICogQGZsYWdz OiB3YWl0aW5nIGZsYWdzLiBDdXJyZW50bHkgc3VwcG9ydHMgb25seQ0KPkk5MTVfV0FJVF9JTlRF UlJVUFRJQkxFLg0KPj4+ICsgKg0KPj4+ICsgKiBXYWl0IGZvciBhbnkgcGVuZGluZyBhc3luYyBt aWdyYXRpb24gb3BlcmF0aW9uIG9uIHRoZSBvYmplY3QsDQo+Pj4gKyAqIHdoZXRoZXIgaXQncyBl eHBsaWNpdGx5IChpOTE1X2dlbV9vYmplY3RfbWlncmF0ZSgpKSBvciBpbXBsaWNpdGx5DQo+Pj4g KyAqIChzd2FwaW4sIGluaXRpYWwgY2xlYXJpbmcpIGluaXRpYXRlZC4NCj4+PiArICoNCj4+PiAr ICogUmV0dXJuOiAwIGlmIHN1Y2Nlc3NmdWwsIC1FUkVTVEFSVFNZUyBpZiBhIHNpZ25hbCB3YXMg aGl0IGR1cmluZyB3YWl0aW5nLg0KPj4+ICsgKi8NCj4+PiAraW50IGk5MTVfZ2VtX29iamVjdF93 YWl0X21pZ3JhdGlvbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLA0KPj4+ICsJCQkJ ICAgdW5zaWduZWQgaW50IGZsYWdzKQ0KPj4+ICt7DQo+Pj4gKwltaWdodF9zbGVlcCgpOw0KPj4+ ICsJLyogTk9QIGZvciBub3cuICovDQo+Pj4gKwlyZXR1cm4gMDsNCj4+PiArfQ0KPj4+IC0tDQo+ Pj4gMi4zMS4xDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK