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=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 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 537B9C2B9F7 for ; Fri, 28 May 2021 15:10:59 +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 0EE03610A5 for ; Fri, 28 May 2021 15:10:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0EE03610A5 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 9B5FE6E3FC; Fri, 28 May 2021 15:10:58 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 58FBA6E3FC; Fri, 28 May 2021 15:10:57 +0000 (UTC) IronPort-SDR: 0ATBFMcGoCF7I6sBJeEy41RPskz1V7CD8KXZ4g7LlzPkJl+4QGFgesYcWqy6In748FFjhNf9IJ kGUqcO1TBTmw== X-IronPort-AV: E=McAfee;i="6200,9189,9998"; a="202746187" X-IronPort-AV: E=Sophos;i="5.83,229,1616482800"; d="scan'208";a="202746187" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 May 2021 08:10:54 -0700 IronPort-SDR: 3a5ayZTMAAM6dC0bVyTsneQOX+R7tjTFbNyflBro2I3me8WdjBOKRz1uM5jNoP33ElO5iP6SuY FKgGkrzQLgxQ== X-IronPort-AV: E=Sophos;i="5.83,229,1616482800"; d="scan'208";a="444037905" Received: from jdahlin-mobl1.ger.corp.intel.com (HELO [10.249.254.92]) ([10.249.254.92]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 May 2021 08:10:52 -0700 To: =?UTF-8?Q?Christian_K=c3=b6nig?= , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org References: <20210527144710.1975553-1-thomas.hellstrom@linux.intel.com> <20210527144710.1975553-8-thomas.hellstrom@linux.intel.com> <7f2daaf6-8df1-5886-758e-ea09d27602ba@amd.com> From: =?UTF-8?Q?Thomas_Hellstr=c3=b6m?= Message-ID: <1ad40aa9-7ca7-ed5a-8a34-a93c68e1ada7@linux.intel.com> Date: Fri, 28 May 2021 17:10:50 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: <7f2daaf6-8df1-5886-758e-ea09d27602ba@amd.com> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH v5 07/15] drm: Add a prefetching memcpy_from_wc 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Ck9uIDUvMjgvMjEgNDoxOSBQTSwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPiBBbSAyNy4wNS4y MSB1bSAxNjo0NyBzY2hyaWViIFRob21hcyBIZWxsc3Ryw7ZtOgo+PiBSZWFkaW5nIG91dCBvZiB3 cml0ZS1jb21iaW5pbmcgbWFwcGVkIG1lbW9yeSBpcyB0eXBpY2FsbHkgdmVyeSBzbG93Cj4+IHNp bmNlIHRoZSBDUFUgZG9lc24ndCBwcmVmZXRjaC4gSG93ZXZlciBzb21lIGFyY2hzIGhhdmUgc3Bl Y2lhbAo+PiBpbnN0cnVjdGlvbnMgdG8gZG8gdGhpcy4KPj4KPj4gU28gYWRkIGEgYmVzdC1lZmZv cnQgbWVtY3B5X2Zyb21fd2MgdGFraW5nIGRtYS1idWYtbWFwIHBvaW50ZXIKPj4gYXJndW1lbnRz IHRoYXQgYXR0ZW1wdHMgdG8gdXNlIGEgZmFzdCBwcmVmZXRjaGluZyBtZW1jcHkgYW5kCj4+IG90 aGVyd2lzZSBmYWxscyBiYWNrIHRvIG9yZGluYXJ5IG1lbWNvcGllcywgdGFraW5nIHRoZSBpb21l bSB0YWdnaW5nCj4+IGludG8gYWNjb3VudC4KPj4KPj4gVGhlIGNvZGUgaXMgbGFyZ2VseSBjb3Bp ZWQgZnJvbSBpOTE1X21lbWNweV9mcm9tX3djLgo+Pgo+PiBDYzogRGFuaWVsIFZldHRlciA8ZGFu aWVsQGZmd2xsLmNoPgo+PiBDYzogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0Bh bWQuY29tPgo+PiBTdWdnZXN0ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4K Pj4gU2lnbmVkLW9mZi1ieTogVGhvbWFzIEhlbGxzdHLDtm0gPHRob21hcy5oZWxsc3Ryb21AbGlu dXguaW50ZWwuY29tPgo+PiAtLS0KPj4gwqAgRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdCB8 wqDCoCAyICstCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9kcm1fY2FjaGUuY8KgIHwgMTM4ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9kcm1f ZHJ2LmPCoMKgwqAgfMKgwqAgMiArCj4+IMKgIGluY2x1ZGUvZHJtL2RybV9jYWNoZS5owqDCoMKg wqDCoCB8wqDCoCA3ICsrCj4+IMKgIDQgZmlsZXMgY2hhbmdlZCwgMTQ4IGluc2VydGlvbnMoKyks IDEgZGVsZXRpb24oLSkKPj4KPj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1t bS5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tbW0ucnN0Cj4+IGluZGV4IDIxYmU2ZGVhZGMx Mi4uYzY2MDU4YzViY2U3IDEwMDY0NAo+PiAtLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tbW0u cnN0Cj4+ICsrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QKPj4gQEAgLTQ2OSw3ICs0 NjksNyBAQCBEUk0gTU0gUmFuZ2UgQWxsb2NhdG9yIEZ1bmN0aW9uIFJlZmVyZW5jZXMKPj4gwqAg Li4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fbW0uYwo+PiDCoMKgwqDCoCA6ZXhw b3J0Ogo+PiDCoCAtRFJNIENhY2hlIEhhbmRsaW5nCj4+ICtEUk0gQ2FjaGUgSGFuZGxpbmcgYW5k IEZhc3QgV0MgbWVtY3B5KCkKPj4gwqAgPT09PT09PT09PT09PT09PT09Cj4+IMKgIMKgIC4uIGtl cm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX2NhY2hlLmMKPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fY2FjaGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2FjaGUuYwo+ PiBpbmRleCA3OWE1MGVmMTI1MGYuLjA4NjE0ZjdmZGQ4ZCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2RybV9jYWNoZS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2FjaGUu Ywo+PiBAQCAtMjgsNiArMjgsNyBAQAo+PiDCoMKgICogQXV0aG9yczogVGhvbWFzIEhlbGxzdHLD tm0gPHRob21hcy1hdC10dW5nc3RlbmdyYXBoaWNzLWRvdC1jb20+Cj4+IMKgwqAgKi8KPj4gwqAg KyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLW1hcC5oPgo+PiDCoCAjaW5jbHVkZSA8bGludXgvZXhw b3J0Lmg+Cj4+IMKgICNpbmNsdWRlIDxsaW51eC9oaWdobWVtLmg+Cj4+IMKgICNpbmNsdWRlIDxs aW51eC9tZW1fZW5jcnlwdC5oPgo+PiBAQCAtMzUsNiArMzYsOSBAQAo+PiDCoCDCoCAjaW5jbHVk ZSA8ZHJtL2RybV9jYWNoZS5oPgo+PiDCoCArLyogQSBzbWFsbCBib3VuY2UgYnVmZmVyIHRoYXQg Zml0cyBvbiB0aGUgc3RhY2suICovCj4+ICsjZGVmaW5lIE1FTUNQWV9CT1VOQ0VfU0laRSAxMjgK Pj4gKwo+PiDCoCAjaWYgZGVmaW5lZChDT05GSUdfWDg2KQo+PiDCoCAjaW5jbHVkZSA8YXNtL3Nt cC5oPgo+PiDCoCBAQCAtMjA5LDMgKzIxMywxMzcgQEAgYm9vbCBkcm1fbmVlZF9zd2lvdGxiKGlu dCBkbWFfYml0cykKPj4gwqDCoMKgwqDCoCByZXR1cm4gbWF4X2lvbWVtID4gKCh1NjQpMSA8PCBk bWFfYml0cyk7Cj4+IMKgIH0KPj4gwqAgRVhQT1JUX1NZTUJPTChkcm1fbmVlZF9zd2lvdGxiKTsK Pj4gKwo+PiArI2lmZGVmIENPTkZJR19YODYKPj4gKwo+PiArc3RhdGljIERFRklORV9TVEFUSUNf S0VZX0ZBTFNFKGhhc19tb3ZudGRxYSk7Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIF9fbWVtY3B5X250 ZHFhKHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCB1bnNpZ25lZCBsb25nIAo+PiBsZW4pCj4+ ICt7Cj4+ICvCoMKgwqAga2VybmVsX2ZwdV9iZWdpbigpOwo+PiArCj4+ICvCoMKgwqAgd2hpbGUg KGxlbiA+PSA0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBhc20oIm1vdm50ZHFhwqDCoMKgICglMCks ICUleG1tMFxuIgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAibW92bnRkcWEgMTYoJTApLCAl JXhtbTFcbiIKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIm1vdm50ZHFhIDMyKCUwKSwgJSV4 bW0yXG4iCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJtb3ZudGRxYSA0OCglMCksICUleG1t M1xuIgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAibW92YXBzICUleG1tMCzCoMKgICglMSlc biIKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIm1vdmFwcyAlJXhtbTEsIDE2KCUxKVxuIgo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAibW92YXBzICUleG1tMiwgMzIoJTEpXG4iCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICJtb3ZhcHMgJSV4bW0zLCA0OCglMSlcbiIKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgOjogInIiIChzcmMpLCAiciIgKGRzdCkgOiAibWVtb3J5Iik7Cj4+ ICvCoMKgwqDCoMKgwqDCoCBzcmMgKz0gNjQ7Cj4+ICvCoMKgwqDCoMKgwqDCoCBkc3QgKz0gNjQ7 Cj4+ICvCoMKgwqDCoMKgwqDCoCBsZW4gLT0gNDsKPj4gK8KgwqDCoCB9Cj4+ICvCoMKgwqAgd2hp bGUgKGxlbi0tKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBhc20oIm1vdm50ZHFhICglMCksICUleG1t MFxuIgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAibW92YXBzICUleG1tMCwgKCUxKVxuIgo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA6OiAiciIgKHNyYyksICJyIiAoZHN0KSA6ICJtZW1v cnkiKTsKPj4gK8KgwqDCoMKgwqDCoMKgIHNyYyArPSAxNjsKPj4gK8KgwqDCoMKgwqDCoMKgIGRz dCArPSAxNjsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBrZXJuZWxfZnB1X2VuZCgpOwo+ PiArfQo+PiArCj4+ICsvKgo+PiArICogX19kcm1fbWVtY3B5X2Zyb21fd2MgY29waWVzIEBsZW4g Ynl0ZXMgZnJvbSBAc3JjIHRvIEBkc3QgdXNpbmcKPj4gKyAqIG5vbi10ZW1wb3JhbCBpbnN0cnVj dGlvbnMgd2hlcmUgYXZhaWxhYmxlLiBOb3RlIHRoYXQgYWxsIGFyZ3VtZW50cwo+PiArICogKEBz cmMsIEBkc3QpIG11c3QgYmUgYWxpZ25lZCB0byAxNiBieXRlcyBhbmQgQGxlbiBtdXN0IGJlIGEg bXVsdGlwbGUKPj4gKyAqIG9mIDE2Lgo+PiArICovCj4+ICtzdGF0aWMgdm9pZCBfX2RybV9tZW1j cHlfZnJvbV93Yyh2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNyYywgCj4+IHVuc2lnbmVkIGxvbmcg bGVuKQo+PiArewo+PiArwqDCoMKgIGlmICh1bmxpa2VseSgoKHVuc2lnbmVkIGxvbmcpZHN0IHwg KHVuc2lnbmVkIGxvbmcpc3JjIHwgbGVuKSAmIDE1KSkKPj4gK8KgwqDCoMKgwqDCoMKgIG1lbWNw eShkc3QsIHNyYywgbGVuKTsKPj4gK8KgwqDCoCBlbHNlIGlmIChsaWtlbHkobGVuKSkKPj4gK8Kg wqDCoMKgwqDCoMKgIF9fbWVtY3B5X250ZHFhKGRzdCwgc3JjLCBsZW4gPj4gNCk7Cj4+ICt9Cj4+ ICsjZW5kaWYKPj4gKwo+PiArc3RhdGljIHZvaWQgbWVtY3B5X2ZhbGxiYWNrKHN0cnVjdCBkbWFf YnVmX21hcCAqZHN0LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0 cnVjdCBkbWFfYnVmX21hcCAqc3JjLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHVuc2lnbmVkIGxvbmcgbGVuKQo+PiArewo+PiArwqDCoMKgIGlmICghZHN0LT5pc19pb21lbSAm JiAhc3JjLT5pc19pb21lbSkgewo+PiArwqDCoMKgwqDCoMKgwqAgbWVtY3B5KGRzdC0+dmFkZHIs IHNyYy0+dmFkZHIsIGxlbik7Cj4+ICvCoMKgwqAgfSBlbHNlIGlmICghc3JjLT5pc19pb21lbSkg ewo+PiArwqDCoMKgwqDCoMKgwqAgZG1hX2J1Zl9tYXBfbWVtY3B5X3RvKGRzdCwgc3JjLT52YWRk ciwgbGVuKTsKPj4gK8KgwqDCoCB9IGVsc2UgaWYgKCFkc3QtPmlzX2lvbWVtKSB7Cj4+ICvCoMKg wqDCoMKgwqDCoCBtZW1jcHlfZnJvbWlvKGRzdC0+dmFkZHIsIHNyYy0+dmFkZHJfaW9tZW0sIGxl bik7Cj4+ICvCoMKgwqAgfSBlbHNlIHsKPj4gK8KgwqDCoMKgwqDCoMKgIC8qCj4+ICvCoMKgwqDC oMKgwqDCoMKgICogQm91bmNlIHNpemUgaXMgbm90IHBlcmZvcm1hbmNlIHR1bmVkLCBidXQgdXNp bmcgYQo+PiArwqDCoMKgwqDCoMKgwqDCoCAqIGJvdW5jZSBidWZmZXIgbGlrZSB0aGlzIGlzIHNp Z25pZmljYW50bHkgZmFzdGVyIHRoYW4KPj4gK8KgwqDCoMKgwqDCoMKgwqAgKiByZXNvcnRpbmcg dG8gaW9yZWFkeHgoKSArIGlvd3JpdGV4eCgpLgo+PiArwqDCoMKgwqDCoMKgwqDCoCAqLwo+PiAr wqDCoMKgwqDCoMKgwqAgY2hhciBib3VuY2VbTUVNQ1BZX0JPVU5DRV9TSVpFXTsKPj4gK8KgwqDC oMKgwqDCoMKgIHZvaWQgX19pb21lbSAqX3NyYyA9IHNyYy0+dmFkZHJfaW9tZW07Cj4+ICvCoMKg wqDCoMKgwqDCoCB2b2lkIF9faW9tZW0gKl9kc3QgPSBkc3QtPnZhZGRyX2lvbWVtOwo+PiArCj4+ ICvCoMKgwqDCoMKgwqDCoCB3aGlsZSAobGVuID49IE1FTUNQWV9CT1VOQ0VfU0laRSkgewo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtZW1jcHlfZnJvbWlvKGJvdW5jZSwgX3NyYywgTUVNQ1BZ X0JPVU5DRV9TSVpFKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWVtY3B5X3RvaW8oX2Rz dCwgYm91bmNlLCBNRU1DUFlfQk9VTkNFX1NJWkUpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBfc3JjICs9IE1FTUNQWV9CT1VOQ0VfU0laRTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg X2RzdCArPSBNRU1DUFlfQk9VTkNFX1NJWkU7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxl biAtPSBNRU1DUFlfQk9VTkNFX1NJWkU7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDC oMKgwqDCoCBpZiAobGVuKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1lbWNweV9mcm9t aW8oYm91bmNlLCBfc3JjLCBNRU1DUFlfQk9VTkNFX1NJWkUpOwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBtZW1jcHlfdG9pbyhfZHN0LCBib3VuY2UsIE1FTUNQWV9CT1VOQ0VfU0laRSk7Cj4+ ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfQo+PiArfQo+PiArCj4+ICsvKioKPj4gKyAq IGRybV9tZW1jcHlfZnJvbV93YyAtIFBlcmZvcm0gdGhlIGZhc3Rlc3QgYXZhaWxhYmxlIG1lbWNw eSBmcm9tIGEgCj4+IHNvdXJjZQo+PiArICogdGhhdCBtYXkgYmUgV0MuCj4+ICsgKiBAZHN0OiBU aGUgZGVzdGluYXRpb24gcG9pbnRlcgo+PiArICogQHNyYzogVGhlIHNvdXJjZSBwb2ludGVyCj4+ ICsgKiBAbGVuOiBUaGUgc2l6ZSBvZiB0aGUgYXJlYSBvIHRyYW5zZmVyIGluIGJ5dGVzCj4+ICsg Kgo+PiArICogVHJpZXMgYW4gYXJjaCBvcHRpbWl6ZWQgbWVtY3B5IGZvciBwcmVmZXRjaGluZyBy ZWFkaW5nIG91dCBvZiBhIAo+PiBXQyByZWdpb24sCj4+ICsgKiBhbmQgaWYgbm8gc3VjaCBiZWFz dCBpcyBhdmFpbGFibGUsIGZhbGxzIGJhY2sgdG8gYSBub3JtYWwgbWVtY3B5Lgo+PiArICovCj4+ ICt2b2lkIGRybV9tZW1jcHlfZnJvbV93YyhzdHJ1Y3QgZG1hX2J1Zl9tYXAgKmRzdCwKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IGRtYV9idWZfbWFwICpzcmMsCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgbGVuKQo+PiArewo+PiArwqDCoMKg IGlmIChXQVJOX09OKGluX2ludGVycnVwdCgpKSkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsK Pgo+IEkgd291bGQgZWl0aGVyIG1ha2UgaXQgYSBCVUdfT04oKSBvciBhdCBsZWFzdCB1c2UgdGhl IGZhbGxiYWNrIG1lbWNweS4KPgo+IEp1c3QgcmV0dXJuaW5nIHdpdGhvdXQgZG9pbmcgYW55dGhp bmcgaXNuJ3QgcmVhbGx5IG5pY2UuCgpIbW0sIFllcywgRGFuaWVsIHN1Z2dlc3RlZCB0aGlzIG9u IElSQy4gSSB3b3VsZCBoYXZlIGdvbmUgZm9yIHRoZSAKZmFsbGJhY2sgd2hpY2ggaGUgZGlkbid0 IGxpa2UsIGFuZCBJIHRoaW5rIGNyYXNoaW5nIHRoZSBrZXJuZWwgd2l0aCBhIApCVUdfT04gaW4g YW4gaW50ZXJydXB0IHdoaWNoIGZyb20gZXhwZXJpZW5jZSBtaWdodCByZXN1bHQgaW4gYSAKY29t cGxldGVseSBzaWxlbnQgaGFuZyB3aXRob3V0IGEgdHJhY2Ugb2Ygd2hhdCB3ZW50IHdyb25nIHVu bGVzcyAKcG9zc2libHkgd2l0aCBhIHNlcmlhbCBjb25zb2xlIGlzIG5vdCByZWFsbHkgYWNjZXB0 YWJsZSBlaXRoZXIuLi4uIApQZXJoYXBzIHdlIGNhbiBnbyBmb3IgYSBXQVJOX09OICsgZmFsbGJh Y2ssIHdoaWNoIHN0aWxsIGZvcmNlcyB0aGUgCmNhbGxlciB0byBjb21lIHVwIHdpdGggc29tZXRo aW5nIGVsc2UuLi4KCi9UaG9tYXMKCj4KPiBDaHJpc3RpYW4uCj4KPj4gKwo+PiArwqDCoMKgIGlm IChJU19FTkFCTEVEKENPTkZJR19YODYpICYmIAo+PiBzdGF0aWNfYnJhbmNoX2xpa2VseSgmaGFz X21vdm50ZHFhKSkgewo+PiArwqDCoMKgwqDCoMKgwqAgX19kcm1fbWVtY3B5X2Zyb21fd2MoZHN0 LT5pc19pb21lbSA/Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICh2b2lkIF9fZm9yY2UgKilkc3QtPnZhZGRyX2lvbWVtIDoKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHN0LT52YWRkciwKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3JjLT5pc19pb21lbSA/Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh2b2lkIGNvbnN0IF9fZm9yY2UgKilzcmMtPnZh ZGRyX2lvbWVtIDoKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3JjLT52YWRkciwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg bGVuKTsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8Kg wqDCoCBtZW1jcHlfZmFsbGJhY2soZHN0LCBzcmMsIGxlbik7Cj4+ICt9Cj4+ICtFWFBPUlRfU1lN Qk9MKGRybV9tZW1jcHlfZnJvbV93Yyk7Cj4+ICsKPj4gKyNpZmRlZiBDT05GSUdfWDg2Cj4+ICsv KioKPj4gKyAqIGRybV9tZW1jcHlfaW5pdF9lYXJseSAtIE9uZSB0aW1lIGluaXRpYWxpemF0aW9u IG9mIHRoZSBXQyBtZW1jcHkgCj4+IGNvZGUKPj4gKyAqLwo+PiArdm9pZCBkcm1fbWVtY3B5X2lu aXRfZWFybHkodm9pZCkKPj4gK3sKPj4gK8KgwqDCoCAvKgo+PiArwqDCoMKgwqAgKiBTb21lIGh5 cGVydmlzb3JzIChlLmcuIEtWTSkgZG9uJ3Qgc3VwcG9ydCBWRVgtcHJlZml4IAo+PiBpbnN0cnVj dGlvbnMKPj4gK8KgwqDCoMKgICogZW11bGF0aW9uLiBTbyBkb24ndCBlbmFibGUgbW92bnRkcWEg aW4gaHlwZXJ2aXNvciBndWVzdC4KPj4gK8KgwqDCoMKgICovCj4+ICvCoMKgwqAgaWYgKHN0YXRp Y19jcHVfaGFzKFg4Nl9GRUFUVVJFX1hNTTRfMSkgJiYKPj4gK8KgwqDCoMKgwqDCoMKgICFib290 X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSFlQRVJWSVNPUikpCj4+ICvCoMKgwqDCoMKgwqDCoCBzdGF0 aWNfYnJhbmNoX2VuYWJsZSgmaGFzX21vdm50ZHFhKTsKPj4gK30KPj4gKyNlbHNlCj4+ICt2b2lk IGRybV9tZW1jcHlfaW5pdF9lYXJseSh2b2lkKQo+PiArewo+PiArfQo+PiArI2VuZGlmCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9kcnYuYwo+PiBpbmRleCAzZDhkNjhhOThiOTUuLjg4MDRlYzdkMzIxNSAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2Rydi5jCj4+IEBAIC0zNSw2ICszNSw3IEBACj4+IMKgICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+ Cj4+IMKgICNpbmNsdWRlIDxsaW51eC9zcmN1Lmg+Cj4+IMKgICsjaW5jbHVkZSA8ZHJtL2RybV9j YWNoZS5oPgo+PiDCoCAjaW5jbHVkZSA8ZHJtL2RybV9jbGllbnQuaD4KPj4gwqAgI2luY2x1ZGUg PGRybS9kcm1fY29sb3JfbWdtdC5oPgo+PiDCoCAjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4KPj4g QEAgLTEwNDEsNiArMTA0Miw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGRybV9jb3JlX2luaXQodm9p ZCkKPj4gwqAgwqDCoMKgwqDCoCBkcm1fY29ubmVjdG9yX2lkYV9pbml0KCk7Cj4+IMKgwqDCoMKg wqAgaWRyX2luaXQoJmRybV9taW5vcnNfaWRyKTsKPj4gK8KgwqDCoCBkcm1fbWVtY3B5X2luaXRf ZWFybHkoKTsKPj4gwqAgwqDCoMKgwqDCoCByZXQgPSBkcm1fc3lzZnNfaW5pdCgpOwo+PiDCoMKg wqDCoMKgIGlmIChyZXQgPCAwKSB7Cj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY2Fj aGUuaCBiL2luY2x1ZGUvZHJtL2RybV9jYWNoZS5oCj4+IGluZGV4IGU5YWQ0ODYzZDkxNS4uY2M5 ZGUxNjMyZGQzIDEwMDY0NAo+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fY2FjaGUuaAo+PiArKysg Yi9pbmNsdWRlL2RybS9kcm1fY2FjaGUuaAo+PiBAQCAtMzUsNiArMzUsOCBAQAo+PiDCoCDCoCAj aW5jbHVkZSA8bGludXgvc2NhdHRlcmxpc3QuaD4KPj4gwqAgK3N0cnVjdCBkbWFfYnVmX21hcDsK Pj4gKwo+PiDCoCB2b2lkIGRybV9jbGZsdXNoX3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlc1tdLCB1 bnNpZ25lZCBsb25nIG51bV9wYWdlcyk7Cj4+IMKgIHZvaWQgZHJtX2NsZmx1c2hfc2coc3RydWN0 IHNnX3RhYmxlICpzdCk7Cj4+IMKgIHZvaWQgZHJtX2NsZmx1c2hfdmlydF9yYW5nZSh2b2lkICph ZGRyLCB1bnNpZ25lZCBsb25nIGxlbmd0aCk7Cj4+IEBAIC03MCw0ICs3Miw5IEBAIHN0YXRpYyBp bmxpbmUgYm9vbCBkcm1fYXJjaF9jYW5fd2NfbWVtb3J5KHZvaWQpCj4+IMKgICNlbmRpZgo+PiDC oCB9Cj4+IMKgICt2b2lkIGRybV9tZW1jcHlfaW5pdF9lYXJseSh2b2lkKTsKPj4gKwo+PiArdm9p ZCBkcm1fbWVtY3B5X2Zyb21fd2Moc3RydWN0IGRtYV9idWZfbWFwICpkc3QsCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBkbWFfYnVmX21hcCAqc3JjLAo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIGxlbik7Cj4+IMKgICNlbmRpZgo+Cl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=