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.7 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 01CC0C4708A for ; Thu, 27 May 2021 13:53:10 +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 B5EB4613BF for ; Thu, 27 May 2021 13:53:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B5EB4613BF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.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 AD6F86F3B5; Thu, 27 May 2021 13:53:04 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0350D6E42E; Thu, 27 May 2021 13:53:02 +0000 (UTC) IronPort-SDR: 4BPoz8TGu/vSL73kqVASWIthIeQVVrBPAwA+CiPycGDugDyAkYWDRhiQ8FpQlAzMRjvZaJIY+G dbcRtW+bSgoA== X-IronPort-AV: E=McAfee;i="6200,9189,9996"; a="202742419" X-IronPort-AV: E=Sophos;i="5.82,334,1613462400"; d="scan'208";a="202742419" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 May 2021 06:53:02 -0700 IronPort-SDR: pxapOZ4w6izmWCeqsjitHmnayyvbA3quMBvMNP9QjTFndU1cksKBa/l0avI1IQcF0ApzGwf1CP Cn4ViaQOdXdQ== X-IronPort-AV: E=Sophos;i="5.82,334,1613462400"; d="scan'208";a="633999265" Received: from ibanaga-mobl.ger.corp.intel.com ([10.249.254.58]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 May 2021 06:52:59 -0700 Message-ID: <3a74dca5db06864630653f8ee4c50a05d24b7004.camel@linux.intel.com> From: Thomas =?ISO-8859-1?Q?Hellstr=F6m?= To: Christian =?ISO-8859-1?Q?K=F6nig?= , Thomas =?ISO-8859-1?Q?Hellstr=F6m?= "(Intel)" , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Date: Thu, 27 May 2021 15:52:56 +0200 In-Reply-To: <562ed088-5b43-7b3f-703e-37c21d3933ef@amd.com> References: <20210526113259.1661914-1-thomas.hellstrom@linux.intel.com> <20210526113259.1661914-11-thomas.hellstrom@linux.intel.com> <9f49eb8e-8ec5-cb24-0ce1-3e63272628e8@amd.com> <562ed088-5b43-7b3f-703e-37c21d3933ef@amd.com> User-Agent: Evolution 3.38.4 (3.38.4-1.fc33) MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH v4 10/15] drm/ttm, drm/amdgpu: Allow the driver some control over swapping 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gVGh1LCAyMDIxLTA1LTI3IGF0IDE0OjM2ICswMjAwLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3Rl Ogo+IEFtIDI3LjA1LjIxIHVtIDA5OjMzIHNjaHJpZWIgVGhvbWFzIEhlbGxzdHLDtm0gKEludGVs KToKPiA+IEhpLCBDaHJpc3RpYW4sCj4gPiAKPiA+IFRoYW5rcyBmb3IgcmV2aWV3aW5nLgo+ID4g Cj4gPiBPbiA1LzI2LzIxIDM6MjYgUE0sIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4gPiA+IEFt IDI2LjA1LjIxIHVtIDEzOjMyIHNjaHJpZWIgVGhvbWFzIEhlbGxzdHLDtm06Cj4gPiA+ID4gV2Ug YXJlIGNhbGxpbmcgdGhlIGV2aWN0aW9uX3ZhbHVhYmxlIGRyaXZlciBjYWxsYmFjayBhdCBldmlj dGlvbiAKPiA+ID4gPiB0aW1lIHRvCj4gPiA+ID4gZGV0ZXJtaW5lIHdoZXRoZXIgd2UgYWN0dWFs bHkgY2FuIGV2aWN0IGEgYnVmZmVyIG9iamVjdC4KPiA+ID4gPiBUaGUgdXBjb21pbmcgaTkxNSBU VE0gYmFja2VuZCBuZWVkcyB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5IGZvcgo+ID4gPiA+IHN3YXBv dXQsCj4gPiA+ID4gYW5kIHRoYXQgbWlnaHQgYWN0dWFsbHkgYmUgYmVuZWZpY2lhbCB0byBvdGhl ciBkcml2ZXJzIGFzIHdlbGwuCj4gPiA+ID4gCj4gPiA+ID4gQWRkIGFuIGV2aWN0aW9uX3ZhbHVh YmxlIGNhbGwgYWxzbyBpbiB0aGUgc3dhcG91dCBwYXRoLiBUcnkgdG8KPiA+ID4gPiBrZWVwIHRo ZQo+ID4gPiA+IGN1cnJlbnQgYmVoYXZpb3VyIGZvciBhbGwgZHJpdmVycyBieSByZXR1cm5pbmcg dHJ1ZSBpZiB0aGUgYnVmZmVyCj4gPiA+ID4gb2JqZWN0Cj4gPiA+ID4gaXMgYWxyZWFkeSBpbiB0 aGUgVFRNX1BMX1NZU1RFTSBwbGFjZW1lbnQuIFdlIGNoYW5nZSBiZWhhdmlvdXIKPiA+ID4gPiBm b3IgdGhlCj4gPiA+ID4gY2FzZSB3aGVyZSBhIGJ1ZmZlciBvYmplY3QgaXMgaW4gYSBUVCBiYWNr ZWQgcGxhY2VtZW50IHdoZW4KPiA+ID4gPiBzd2FwcGVkIAo+ID4gPiA+IG91dCwKPiA+ID4gPiBp biB3aGljaCBjYXNlIHRoZSBkcml2ZXJzIG5vcm1hbCBldmljdGlvbl92YWx1YWJsZSBwYXRoIGlz IHJ1bi4KPiA+ID4gPiAKPiA+ID4gPiBGaW5hbGx5IG1ha2Ugc3VyZSB3ZSBkb24ndCB0cnkgdG8g c3dhcG91dCBhIGJvIHRoYXQgd2FzIHJlY2VudGx5Cj4gPiA+ID4gcHVyZ2VkCj4gPiA+ID4gYW5k IHRoZXJlZm9yZSB1bnBvcHVsYXRlZC4KPiA+ID4gPiAKPiA+ID4gPiBSZXZpZXdlZC1ieTogTWFh cnRlbiBMYW5raG9yc3QgPAo+ID4gPiA+IG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNv bT4KPiA+ID4gPiBDYzogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29t Pgo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFRob21hcyBIZWxsc3Ryw7ZtIDwKPiA+ID4gPiB0aG9t YXMuaGVsbHN0cm9tQGxpbnV4LmludGVsLmNvbT4KPiA+ID4gPiAtLS0KPiA+ID4gPiB2MzoKPiA+ ID4gPiAtIERvbid0IGV4cG9ydCB0dG1fdHRfdW5wb3B1bGF0ZQo+ID4gPiA+IC0gRml4IGNvbmZ1 c2lvbiByZWFkaW5nIHRoZSBsb2NrZWQgcG9pbnRlciBpbnN0ZWFkIG9mIHRoZSB2YWx1ZQo+ID4g PiA+IMKgwqAgcG9pbnRlZCB0byBpbiB0dG1fYm9fZXZpY3Rfc3dhcG91dF9hbGxvd2FibGUgKFJl cG9ydGVkIGJ5Cj4gPiA+ID4gwqDCoCBNYWFydGVuIExhbmtob3JzdCkKPiA+ID4gPiAtLS0KPiA+ ID4gPiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmMgfMKgIDQgKysr Cj4gPiA+ID4gwqAgZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm8uY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCA0MyAKPiA+ID4gPiArKysrKysrKysrKysrKysrLS0tLS0tLS0tCj4gPiA+ID4gwqAg ZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fdHQuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDMg KysKPiA+ID4gPiDCoCAzIGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDE2IGRlbGV0 aW9ucygtKQo+ID4gPiA+IAo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfdHRtLmMgCj4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfdHRtLmMKPiA+ID4gPiBpbmRleCAzYmMzYWViZmVmN2MuLjQ1ZDE5NGJmZmMzZiAx MDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRt LmMKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmMK PiA+ID4gPiBAQCAtMTM0OCw2ICsxMzQ4LDEwIEBAIHN0YXRpYyBib29sIAo+ID4gPiA+IGFtZGdw dV90dG1fYm9fZXZpY3Rpb25fdmFsdWFibGUoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywK PiA+ID4gPiDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKmY7Cj4gPiA+ID4gwqDCoMKgwqDC oCBpbnQgaTsKPiA+ID4gPiDCoCArwqDCoMKgIC8qIFN3YXBvdXQ/ICovCj4gPiA+ID4gK8KgwqDC oCBpZiAoYm8tPm1lbS5tZW1fdHlwZSA9PSBUVE1fUExfU1lTVEVNKQo+ID4gPiA+ICvCoMKgwqDC oMKgwqDCoCByZXR1cm4gdHJ1ZTsKPiA+ID4gPiArCj4gPiA+ID4gwqDCoMKgwqDCoCBpZiAoYm8t PnR5cGUgPT0gdHRtX2JvX3R5cGVfa2VybmVsICYmCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg ICFhbWRncHVfdm1fZXZpY3RhYmxlKHR0bV90b19hbWRncHVfYm8oYm8pKSkKPiA+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vdHRtL3R0bV9iby5jIAo+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1f Ym8uYwo+ID4gPiA+IGluZGV4IGJlMDQwNjQ2NjQ2MC4uMWIyZDA2MjI2NmVkIDEwMDY0NAo+ID4g PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmMKPiA+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jCj4gPiA+ID4gQEAgLTUzNiw2ICs1MzYsMTAgQEAgc3Rh dGljIGludCB0dG1fYm9fZXZpY3Qoc3RydWN0IAo+ID4gPiA+IHR0bV9idWZmZXJfb2JqZWN0ICpi bywKPiA+ID4gPiDCoCBib29sIHR0bV9ib19ldmljdGlvbl92YWx1YWJsZShzdHJ1Y3QgdHRtX2J1 ZmZlcl9vYmplY3QgKmJvLAo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGNvbnN0IHN0cnVjdCB0dG1fcGxhY2UgKnBsYWNlKQo+ID4gPiA+IMKgIHsKPiA+ID4g PiArwqDCoMKgIGRtYV9yZXN2X2Fzc2VydF9oZWxkKGJvLT5iYXNlLnJlc3YpOwo+ID4gPiA+ICvC oMKgwqAgaWYgKGJvLT5tZW0ubWVtX3R5cGUgPT0gVFRNX1BMX1NZU1RFTSkKPiA+ID4gPiArwqDC oMKgwqDCoMKgwqAgcmV0dXJuIHRydWU7Cj4gPiA+ID4gKwo+ID4gPiA+IMKgwqDCoMKgwqAgLyog RG9uJ3QgZXZpY3QgdGhpcyBCTyBpZiBpdCdzIG91dHNpZGUgb2YgdGhlCj4gPiA+ID4gwqDCoMKg wqDCoMKgICogcmVxdWVzdGVkIHBsYWNlbWVudCByYW5nZQo+ID4gPiA+IMKgwqDCoMKgwqDCoCAq Lwo+ID4gPiA+IEBAIC01NTgsNyArNTYyLDkgQEAgRVhQT1JUX1NZTUJPTCh0dG1fYm9fZXZpY3Rp b25fdmFsdWFibGUpOwo+ID4gPiA+IMKgwqAgKiBiLiBPdGhlcndpc2UsIHRyeWxvY2sgaXQuCj4g PiA+ID4gwqDCoCAqLwo+ID4gPiA+IMKgIHN0YXRpYyBib29sIHR0bV9ib19ldmljdF9zd2Fwb3V0 X2FsbG93YWJsZShzdHJ1Y3QgCj4gPiA+ID4gdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAo+ID4gPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCAqY3R4LCBi b29sICpsb2NrZWQsIGJvb2wKPiA+ID4gPiAqYnVzeSkKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4ICpj dHgsCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGNvbnN0IHN0cnVjdCB0dG1fcGxhY2UgKnBsYWNlLAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sICpsb2NrZWQsIGJvb2wgKmJ1c3kpCj4g PiA+ID4gwqAgewo+ID4gPiA+IMKgwqDCoMKgwqAgYm9vbCByZXQgPSBmYWxzZTsKPiA+ID4gPiDC oCBAQCAtNTc2LDYgKzU4MiwxNCBAQCBzdGF0aWMgYm9vbCAKPiA+ID4gPiB0dG1fYm9fZXZpY3Rf c3dhcG91dF9hbGxvd2FibGUoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqYnVzeSA9ICFyZXQ7Cj4gPiA+ID4gwqDCoMKgwqDC oCB9Cj4gPiA+ID4gwqAgK8KgwqDCoCBpZiAocmV0ICYmIHBsYWNlICYmICFiby0+YmRldi0+ZnVu Y3MtCj4gPiA+ID4gPmV2aWN0aW9uX3ZhbHVhYmxlKGJvLCAKPiA+ID4gPiBwbGFjZSkpIHsKPiA+ ID4gPiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gZmFsc2U7Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg IGlmICgqbG9ja2VkKSB7Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1hX3Jlc3Zf dW5sb2NrKGJvLT5iYXNlLnJlc3YpOwo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICps b2NrZWQgPSBmYWxzZTsKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgfQo+ID4gPiA+ICvCoMKgwqAg fQo+ID4gPiA+ICsKPiA+ID4gPiDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4gPiA+ID4gwqAgfQo+ ID4gPiA+IMKgIEBAIC02MzAsMjAgKzY0NCwxNCBAQCBpbnQgdHRtX21lbV9ldmljdF9maXJzdChz dHJ1Y3QgdHRtX2RldmljZQo+ID4gPiA+ICpiZGV2LAo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDC oCBsaXN0X2Zvcl9lYWNoX2VudHJ5KGJvLCAmbWFuLT5scnVbaV0sIGxydSkgewo+ID4gPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvb2wgYnVzeTsKPiA+ID4gPiDCoCAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAoIXR0bV9ib19ldmljdF9zd2Fwb3V0X2FsbG93YWJsZShibywgY3R4 LAo+ID4gPiA+ICZsb2NrZWQsCj4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZidXN5KSkgewo+ID4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGlmICghdHRtX2JvX2V2aWN0X3N3YXBvdXRfYWxsb3dhYmxlKGJv LCBjdHgsIHBsYWNlLAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmbG9ja2VkLCAmYnVzeSkpIHsKPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChidXN5ICYmICFidXN5X2JvICYm IHRpY2tldCAhPQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBkbWFfcmVzdl9sb2NraW5nX2N0eChiby0+YmFzZS5yZXN2KSkKPiA+ID4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnVzeV9ibyA9IGJvOwo+ID4gPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7Cj4gPiA+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ID4gPiA+IMKgIC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmIChwbGFjZSAmJiAhYmRldi0+ZnVuY3MtPmV2aWN0aW9uX3ZhbHVhYmxlKGJvLAo+ID4g PiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwbGFjZSkpIHsKPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGlmIChsb2NrZWQpCj4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGRtYV9yZXN2X3VubG9jayhiby0+YmFzZS5yZXN2KTsKPiA+ID4g PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+ID4gPiA+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgIH0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiAoIXR0bV9ib19nZXRfdW5sZXNzX3plcm8oYm8pKSB7Cj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAobG9ja2VkKQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkbWFfcmVzdl91bmxvY2soYm8tPmJhc2UucmVzdik7 Cj4gPiA+ID4gQEAgLTExNDAsMTAgKzExNDgsMTggQEAgRVhQT1JUX1NZTUJPTCh0dG1fYm9fd2Fp dCk7Cj4gPiA+ID4gwqAgaW50IHR0bV9ib19zd2Fwb3V0KHN0cnVjdCB0dG1fYnVmZmVyX29iamVj dCAqYm8sIHN0cnVjdCAKPiA+ID4gPiB0dG1fb3BlcmF0aW9uX2N0eCAqY3R4LAo+ID4gPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZnBfdCBnZnBfZmxhZ3MpCj4gPiA+ID4gwqAgewo+ID4g PiA+ICvCoMKgwqAgc3RydWN0IHR0bV9wbGFjZSBwbGFjZSA9IHt9Owo+ID4gPiA+IMKgwqDCoMKg wqAgYm9vbCBsb2NrZWQ7Cj4gPiA+ID4gwqDCoMKgwqDCoCBpbnQgcmV0Owo+ID4gPiA+IMKgIC3C oMKgwqAgaWYgKCF0dG1fYm9fZXZpY3Rfc3dhcG91dF9hbGxvd2FibGUoYm8sIGN0eCwgJmxvY2tl ZCwKPiA+ID4gPiBOVUxMKSkKPiA+ID4gPiArwqDCoMKgIC8qCj4gPiA+ID4gK8KgwqDCoMKgICog V2hpbGUgdGhlIGJvIG1heSBhbHJlYWR5IHJlc2lkZSBpbiBTWVNURU0gcGxhY2VtZW50LCBzZXQK PiA+ID4gPiArwqDCoMKgwqAgKiBTWVNURU0gYXMgbmV3IHBsYWNlbWVudCB0byBjb3ZlciBhbHNv IHRoZSBtb3ZlIGZ1cnRoZXIKPiA+ID4gPiBiZWxvdy4KPiA+ID4gPiArwqDCoMKgwqAgKiBUaGUg ZHJpdmVyIG1heSB1c2UgdGhlIGZhY3QgdGhhdCB3ZSdyZSBtb3ZpbmcgZnJvbSBTWVNURU0KPiA+ ID4gPiArwqDCoMKgwqAgKiBhcyBhbiBpbmRpY2F0aW9uIHRoYXQgd2UncmUgYWJvdXQgdG8gc3dh cCBvdXQuCj4gPiA+ID4gK8KgwqDCoMKgICovCj4gPiA+ID4gK8KgwqDCoCBwbGFjZS5tZW1fdHlw ZSA9IFRUTV9QTF9TWVNURU07Cj4gPiA+ID4gK8KgwqDCoCBpZiAoIXR0bV9ib19ldmljdF9zd2Fw b3V0X2FsbG93YWJsZShibywgY3R4LCAmcGxhY2UsCj4gPiA+ID4gJmxvY2tlZCwgCj4gPiA+ID4g TlVMTCkpCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRUJVU1k7Cj4gPiA+ID4g wqAgwqDCoMKgwqDCoCBpZiAoIXR0bV9ib19nZXRfdW5sZXNzX3plcm8oYm8pKSB7Cj4gPiA+ID4g QEAgLTExNjgsMTIgKzExODQsNyBAQCBpbnQgdHRtX2JvX3N3YXBvdXQoc3RydWN0Cj4gPiA+ID4g dHRtX2J1ZmZlcl9vYmplY3QgCj4gPiA+ID4gKmJvLCBzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHgg KmN0eCwKPiA+ID4gPiDCoMKgwqDCoMKgIGlmIChiby0+bWVtLm1lbV90eXBlICE9IFRUTV9QTF9T WVNURU0pIHsKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHR0bV9vcGVyYXRpb25f Y3R4IGN0eCA9IHsgZmFsc2UsIGZhbHNlIH07Cj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgIHN0 cnVjdCB0dG1fcmVzb3VyY2UgZXZpY3RfbWVtOwo+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoCBzdHJ1 Y3QgdHRtX3BsYWNlIHBsYWNlLCBob3A7Cj4gPiA+ID4gLQo+ID4gPiA+IC3CoMKgwqDCoMKgwqDC oCBtZW1zZXQoJnBsYWNlLCAwLCBzaXplb2YocGxhY2UpKTsKPiA+ID4gPiAtwqDCoMKgwqDCoMKg wqAgbWVtc2V0KCZob3AsIDAsIHNpemVvZihob3ApKTsKPiA+ID4gPiAtCj4gPiA+ID4gLcKgwqDC oMKgwqDCoMKgIHBsYWNlLm1lbV90eXBlID0gVFRNX1BMX1NZU1RFTTsKPiA+ID4gPiArwqDCoMKg wqDCoMKgwqAgc3RydWN0IHR0bV9wbGFjZSBob3AgPSB7fTsKPiA+ID4gCj4gPiA+IEkgd291bGQg c3RpY2sgd2l0aCBtZW1zZXQgYmVjYXVzZSBvZiB0aGUgcGFkZGluZyByZWFzb25zLgo+ID4gPiAK PiA+ID4gPiDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gdHRtX3Jlc291cmNlX2FsbG9jKGJv LCAmcGxhY2UsICZldmljdF9tZW0pOwo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAodW5s aWtlbHkocmV0KSkKPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1f dHQuYyAKPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX3R0LmMKPiA+ID4gPiBpbmRl eCA5MTNiMzMwYTIzNGIuLmQ5NzkzY2JiNmQxMyAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vdHRtL3R0bV90dC5jCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90 dG1fdHQuYwo+ID4gPiA+IEBAIC0yNjMsNiArMjYzLDkgQEAgaW50IHR0bV90dF9zd2Fwb3V0KHN0 cnVjdCB0dG1fZGV2aWNlICpiZGV2LAo+ID4gPiA+IHN0cnVjdCB0dG1fdHQgKnR0bSwKPiA+ID4g PiDCoMKgwqDCoMKgIHN0cnVjdCBwYWdlICp0b19wYWdlOwo+ID4gPiA+IMKgwqDCoMKgwqAgaW50 IGksIHJldDsKPiA+ID4gPiDCoCArwqDCoMKgIGlmICghdHRtX3R0X2lzX3BvcHVsYXRlZCh0dG0p KQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPiA+ID4gPiArCj4gPiA+IAo+ID4g PiBUaGlzIGhlcmUgaXMganVzdCBiZWNhdXNlIG9mIGEgYnVnIGluIHRoZSBoaWdoZXIgbGV2ZWwg ZnVuY3Rpb24uCj4gPiA+IAo+ID4gPiBJJ3ZlIGp1c3QgcHVzaGVkIHRoZSBmaXggZm9yIHRoYXQg dG8gZHJtLW1pc2MtZml4ZXMsIHNvIG1heWJlIGRyb3AgCj4gPiA+IHRoYXQgaGVyZSBhcyBzb29u IGFzIHRoaXMgaXMgYmFja21lcmdlZC4KPiA+ID4gCj4gPiBUaGF0IGNvZGUgZG9lc24ndCBsb29r IGNvcnJlY3QgdG8gbWUuIEluIHR0bV9kZXZpY2Vfc3dhcG91dCBvbmx5IHRoZSAKPiA+IGxydSBs b2NrIGlzIGhlbGQsIGFuZCB0aGUgYm8tPnR0bSBwb2ludGVyIGlzIHByb3RlY3RlZCBieSB0aGUg cmVzdiAKPiA+IGxvY2ssIG1lYW5pbmcgdGhhdCBiby0+dHRtIGNhbiBkaXNhcHBlYXIgYXQgYW55 IHRpbWUgaW4gdGhhdAo+ID4gZnVuY3Rpb24sIAo+ID4gc28gd2hpbGUgYW4gYWR2aXNvcnkgcmVh ZGluZyBiby0+dHRtIHVzaW5nIFJFQURfT05DRSgpIGlzIG9rLCAKPiA+IGRlcmVmZXJlbmNpbmcg dGhlIGJvLT50dG0gcG9pbnRlciB3aXRob3V0IHJlc2VydmF0aW9uIGhlbGQgaXMgaWxsZWdhbAo+ ID4gYW5kIG1heSBzZW5kIHlvdSBpbnRvIHJlY2VudGx5IGZyZWVkIG1lbW9yeS4KPiA+IAo+ID4g Rm9yIGFuIGV4YW1wbGUsIGNvbnNpZGVyCj4gPiAKPiA+IHRocmVhZCBBLiBTZWxlY3RzIGJvIGZv ciBldmljdGlvbiwgbW92ZXMgdG8gc3lzdGVtIGxydSwgY3JlYXRlcyB0dG0KPiA+IFRocmVhZCBC IGxvY2tzIGxydSBpbiBzd2Fwb3V0IGNvZGUuIGZpbmRzIGJvLT50dG0gTk9OX05VTEwsCj4gPiB0 aHJlYWQgQSB0cmllcyB0byBldmljdCBibywgZmFpbHMsIGRlc3Ryb3lzIHRoZSB0dG0uCj4gPiBU aHJlYWQgQiBkZXJlZnMgZnJlZWQgbWVtb3J5Lgo+ID4gCj4gPiBCdXQgZXZlbiByZWx5aW5nIG9u IHRoYXQgdGhlcmUgd2VyZSBubyBzdWNoIGV4YW1wbGUgaW4gdGhlIHR0bSBjb3JlCj4gPiBpdHNl bGYsIG5vdCBhZGhlcmluZyB0byB0aGUgcHJvdGVjdGlvbiBvZiBiby0+dHRtIG1ha2VzIHRoZSBj b2RlIAo+ID4gZXh0cmVtZWx5IGZyYWdpbGUgYW5kIElNSE8gbmVlZHMgZml4aW5nLgo+ID4gCj4g PiBBbHNvIGFzIGEgc2Vjb25kYXJ5IG5vdGUsIGEgZHJpdmVyIGlzIGluIHByaW5jaXBsZSBmcmVl IHRvIGRvIHRoaW5ncyAKPiA+IGluIHRoZSBzd2FwIG5vdGlmaWVyIHRoYXQgbWF5IHJlc3VsdCBp biBhbiB1bnBvcHVsYXRlZCB0dG0gc28gSU1ITyBhIAo+ID4gbGF0ZSBjaGVjayBpcyBuZWVkZWQg aGVyZS4KPiA+IAo+ID4gU28gYWNrIHRvIGtlZXAgdGhlIGFib3ZlPwo+IAo+IE9oLCByZWFsbHkg Z29vZCBwb2ludC4gSGF2ZW4ndCB0aG91Z2h0IGFib3V0IHRoYXQgZm9yIHRoZSBxdWljayBmaXgu Cj4gCj4gSSB0aGluayBmb3IgdGhlIHNob3J0IHRlcm0gd2UgbmVlZCB0byBwcm90ZWN0IFRUIGRl c3RydWN0aW9uIGJ5IHRoZSAKPiBzcGlubG9jay4KClRvIGF2b2lkIG1vcmUgbG9ja2luZyBjb21w bGV4aXR5LMKgCkkgdGhpbmsgaXQgd291bGQgYmUgZWFzeSB0byBqdXN0IGRlZmVyIHRoZSBjb2Rl IHRoYXQgZGVyZWZzIHRoZSB0dG0KKGV4Y2VwdCB0aGUgbmV3IHVucG9wdWxhdGVkIGNoZWNrKSB0 byB0dG1fYm9fc3dhcG91dCgpIGFmdGVyIHdlJ3ZlCnRha2VuIHRoZSByZXN2IHRyeWxvY2ssIGJ1 dCBiZWZvcmUgdGFraW5nIHRoZSBrcmVmLCByZXR1cm5pbmcgLUVCVVNZIGlmCmNvbmRpdGlvbnMg Zm9yIHN3YXBwaW5nIGFyZSBub3QgbWV0LgoKPiAKPiBUaGUgcHJvYmxlbSBkb2luZyBpdCBoZXJl IGlzIHRoYXQgeW91IGVuZCB1cCBpbiBhbiBlbmRsZXNzIGxvb3AKPiBjdXJyZW50bHkuCj4gCj4g RS5nLiB5b3UgdHJ5bG9jayBhbmQgaW5zcGVjdCB0aGUgc2FtZSBCTyBvdmVyIGFuZCBvdmVyIGFn YWluLgo+IAo+IE5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBjb2RlIHRvIHNlZSBpZiB0aGF0IGNh biBzb21laG93IGJlIGF2b2lkZWQuCgpXZWxsIHR0bV90dF9zd2Fwb3V0IGhhcHBpbHkgcmV0dXJu cyAwLCBzbyB0aGUgQk8gZ2V0cyBwdWxsZWQgb2ZmIHRoZQpMUlUgYW55d2F5IHNvIEkgdGhpbmsg dGhhdCBzaG91bGRuJ3QgaGFwcGVuLgoKVGhlIG9ubHkgdGhpbmcgdGhhdCBiZWNvbWVzIGluY29y cmVjdCBpcyB0aGUgbnVtX3BhZ2VzIHJldHVybiBpbgp0dG1fZGV2aWNlX3N3YXBvdXQoKS4gT1RP SCwgdGhlIGNhbGxlciBzaG91bGRuJ3QgY2FyZSB3aGV0aGVyIHdlCmFjdHVhbGx5IHN3YXBwZWQg b3V0IG9yIHdoZXRoZXIgdGhlIGJvIGxvc3RzIGl0cyBwYWdlcyBpbiBzd2FwX25vdGlmeS4KCi9U aG9tYXMKCgo+IAo+IENocmlzdGlhbi4KPiAKPiA+IAo+ID4gVGhhbmtzLAo+ID4gCj4gPiBUaG9t YXMKPiA+IAo+ID4gCj4gPiA+IAo+ID4gPiBDaHJpc3RpYW4uCj4gPiA+IAo+ID4gPiAKPiA+ID4g PiDCoMKgwqDCoMKgIHN3YXBfc3RvcmFnZSA9IHNobWVtX2ZpbGVfc2V0dXAoInR0bSBzd2FwIiwg c2l6ZSwgMCk7Cj4gPiA+ID4gwqDCoMKgwqDCoCBpZiAoSVNfRVJSKHN3YXBfc3RvcmFnZSkpIHsK PiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZXJyKCJGYWlsZWQgYWxsb2NhdGluZyBzd2Fw IHN0b3JhZ2VcbiIpOwo+IAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=