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=-8.3 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,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 EDCDCC3A59F for ; Thu, 29 Aug 2019 22:42:10 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (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 ABB5722CF5 for ; Thu, 29 Aug 2019 22:42:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="VONxxUa3" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org ABB5722CF5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1i3T6o-0000tY-O6; Thu, 29 Aug 2019 22:41:38 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1i3T6n-0000tT-2A for xen-devel@lists.xenproject.org; Thu, 29 Aug 2019 22:41:37 +0000 X-Inumbo-ID: 28302a3c-caae-11e9-ae74-12813bfff9fa Received: from mail.kernel.org (unknown [198.145.29.99]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 28302a3c-caae-11e9-ae74-12813bfff9fa; Thu, 29 Aug 2019 22:41:36 +0000 (UTC) Received: from localhost (c-67-164-102-47.hsd1.ca.comcast.net [67.164.102.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 1434C21874; Thu, 29 Aug 2019 22:41:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1567118495; bh=I9YKBdq0Eq7DBTme8IC6w7pXFsnQTbjypSsf4bXttxc=; h=Date:From:To:cc:Subject:In-Reply-To:References:From; b=VONxxUa31f6sOJGG7L7Yv0XKwzzY3x8d23e9lSbjlaLap1OZbVlJWNuXcCHU9Sxfg Clf8EXPLTvRHzbqeLXDn9NEEEdMDqS0Re3lVMVTutF8kpNSsFZPqtZ6eN7VntoGGyD H68Og+znOzkUAsTarCjW3YDXCoa73UN+vGXy2rAo= Date: Thu, 29 Aug 2019 15:41:29 -0700 (PDT) From: Stefano Stabellini X-X-Sender: sstabellini@sstabellini-ThinkPad-T480s To: Christoph Hellwig In-Reply-To: <20190826121944.515-2-hch@lst.de> Message-ID: References: <20190826121944.515-1-hch@lst.de> <20190826121944.515-2-hch@lst.de> User-Agent: Alpine 2.21 (DEB 202 2017-01-01) MIME-Version: 1.0 Subject: Re: [Xen-devel] [PATCH 01/11] xen/arm: use dma-noncoherent.h calls for xen-swiotlb cache maintainance X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Konrad Rzeszutek Wilk , x86@kernel.org, linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org, xen-devel@lists.xenproject.org, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" T24gTW9uLCAyNiBBdWcgMjAxOSwgQ2hyaXN0b3BoIEhlbGx3aWcgd3JvdGU6Cj4gUmV1c2UgdGhl IGFybTY0IGNvZGUgdGhhdCB1c2VzIHRoZSBkbWEtZGlyZWN0L3N3aW90bGIgaGVscGVycyBmb3Ig RE1BCj4gbm9uLWNvaGVyZW50IGRldmljZXMuCgpUaGlzIHBhdGNoIGRvZXMgYSBidW5jaCBvZiB0 aGluZ3Mgbm90IGxpc3RlZCBpbiB0aGUgY29tbWl0IG1lc3NhZ2UsIHN1Y2gKYXMgbW92aW5nIHRo ZSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyB0byBpbmNsdWRlL3hlbi9hcm0vcGFnZS1jb2hlcmVu dC5oCmFuZCByZW1vdmluZyB4ZW5fc3dpb3RsYl9kbWFfbW1hcCBhbmQgeGVuX3N3aW90bGJfZ2V0 X3NndGFibGUgYmVjYXVzZQp1bm5lY2Vzc2FyeS4KCkkgd291bGQgcHJlZmVyIGlmIHRoZXkgd2Vy ZSBzZXBhcmF0ZSBwYXRjaGVzIChmb3IgYmlzZWN0YWJpbGl0eSkuIEl0J3MKT0sgaWYgeW91IHdh bnQgdG8ga2VlcCBpdCBhbGwgaW4gb25lIHBhdGNoIGJ1dCBwbGVhc2UgbGlzdCBhbGwgY2hhbmdl cwp0aGUgY29tbWl0IG1lc3NhZ2UuCgpJbiBhbnkgY2FzZSwgSSBsb29rZWQgYXQgdGhlIHBhdGNo IGluIGRldGFpbHMgYW5kIGl0IGRvZXMgYWxsIHRoZSByaWdodAp0aGluZ3MgLS0gaXQncyBjb3Jy ZWN0LgoKCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoIEhlbGx3aWcgPGhjaEBsc3QuZGU+Cj4g LS0tCj4gIGFyY2gvYXJtL2luY2x1ZGUvYXNtL2RldmljZS5oICAgICAgICAgICAgICB8ICAzIC0K PiAgYXJjaC9hcm0vaW5jbHVkZS9hc20veGVuL3BhZ2UtY29oZXJlbnQuaCAgIHwgOTMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQo+ICBhcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jICAgICAgICAgICAg ICAgICAgfCAgOCArLQo+ICBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3hlbi9wYWdlLWNvaGVyZW50 LmggfCA3NSAtLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL3hlbi9zd2lvdGxiLXhlbi5jICAg ICAgICAgICAgICAgICAgfCA0OSArLS0tLS0tLS0tLS0KPiAgaW5jbHVkZS94ZW4vYXJtL3BhZ2Ut Y29oZXJlbnQuaCAgICAgICAgICAgIHwgODAgKysrKysrKysrKysrKysrKysrKwo+ICA2IGZpbGVz IGNoYW5nZWQsIDgzIGluc2VydGlvbnMoKyksIDIyNSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0t Z2l0IGEvYXJjaC9hcm0vaW5jbHVkZS9hc20vZGV2aWNlLmggYi9hcmNoL2FybS9pbmNsdWRlL2Fz bS9kZXZpY2UuaAo+IGluZGV4IGY2OTU1YjU1YzU0NC4uYzY3NWJjMGQ1YWE4IDEwMDY0NAo+IC0t LSBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2RldmljZS5oCj4gKysrIGIvYXJjaC9hcm0vaW5jbHVk ZS9hc20vZGV2aWNlLmgKPiBAQCAtMTQsOSArMTQsNiBAQCBzdHJ1Y3QgZGV2X2FyY2hkYXRhIHsK PiAgI2VuZGlmCj4gICNpZmRlZiBDT05GSUdfQVJNX0RNQV9VU0VfSU9NTVUKPiAgCXN0cnVjdCBk bWFfaW9tbXVfbWFwcGluZwkqbWFwcGluZzsKPiAtI2VuZGlmCj4gLSNpZmRlZiBDT05GSUdfWEVO Cj4gLQljb25zdCBzdHJ1Y3QgZG1hX21hcF9vcHMgKmRldl9kbWFfb3BzOwo+ICAjZW5kaWYKPiAg CXVuc2lnbmVkIGludCBkbWFfY29oZXJlbnQ6MTsKPiAgCXVuc2lnbmVkIGludCBkbWFfb3BzX3Nl dHVwOjE7Cj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3hlbi9wYWdlLWNvaGVy ZW50LmggYi9hcmNoL2FybS9pbmNsdWRlL2FzbS94ZW4vcGFnZS1jb2hlcmVudC5oCj4gaW5kZXgg MmM0MDNlN2M3ODJkLi4yN2U5ODQ5Nzc0MDIgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9hcm0vaW5jbHVk ZS9hc20veGVuL3BhZ2UtY29oZXJlbnQuaAo+ICsrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3hl bi9wYWdlLWNvaGVyZW50LmgKPiBAQCAtMSw5NSArMSwyIEBACj4gIC8qIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wICovCj4gLSNpZm5kZWYgX0FTTV9BUk1fWEVOX1BBR0VfQ09IRVJF TlRfSAo+IC0jZGVmaW5lIF9BU01fQVJNX1hFTl9QQUdFX0NPSEVSRU5UX0gKPiAtCj4gLSNpbmNs dWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgo+IC0jaW5jbHVkZSA8YXNtL3BhZ2UuaD4KPiAgI2lu Y2x1ZGUgPHhlbi9hcm0vcGFnZS1jb2hlcmVudC5oPgo+IC0KPiAtc3RhdGljIGlubGluZSBjb25z dCBzdHJ1Y3QgZG1hX21hcF9vcHMgKnhlbl9nZXRfZG1hX29wcyhzdHJ1Y3QgZGV2aWNlICpkZXYp Cj4gLXsKPiAtCWlmIChkZXYgJiYgZGV2LT5hcmNoZGF0YS5kZXZfZG1hX29wcykKPiAtCQlyZXR1 cm4gZGV2LT5hcmNoZGF0YS5kZXZfZG1hX29wczsKPiAtCXJldHVybiBnZXRfYXJjaF9kbWFfb3Bz KE5VTEwpOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW5saW5lIHZvaWQgKnhlbl9hbGxvY19jb2hlcmVu dF9wYWdlcyhzdHJ1Y3QgZGV2aWNlICpod2Rldiwgc2l6ZV90IHNpemUsCj4gLQkJZG1hX2FkZHJf dCAqZG1hX2hhbmRsZSwgZ2ZwX3QgZmxhZ3MsIHVuc2lnbmVkIGxvbmcgYXR0cnMpCj4gLXsKPiAt CXJldHVybiB4ZW5fZ2V0X2RtYV9vcHMoaHdkZXYpLT5hbGxvYyhod2Rldiwgc2l6ZSwgZG1hX2hh bmRsZSwgZmxhZ3MsIGF0dHJzKTsKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSB2b2lkIHhlbl9m cmVlX2NvaGVyZW50X3BhZ2VzKHN0cnVjdCBkZXZpY2UgKmh3ZGV2LCBzaXplX3Qgc2l6ZSwKPiAt CQl2b2lkICpjcHVfYWRkciwgZG1hX2FkZHJfdCBkbWFfaGFuZGxlLCB1bnNpZ25lZCBsb25nIGF0 dHJzKQo+IC17Cj4gLQl4ZW5fZ2V0X2RtYV9vcHMoaHdkZXYpLT5mcmVlKGh3ZGV2LCBzaXplLCBj cHVfYWRkciwgZG1hX2hhbmRsZSwgYXR0cnMpOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW5saW5lIHZv aWQgeGVuX2RtYV9tYXBfcGFnZShzdHJ1Y3QgZGV2aWNlICpod2Rldiwgc3RydWN0IHBhZ2UgKnBh Z2UsCj4gLQkgICAgIGRtYV9hZGRyX3QgZGV2X2FkZHIsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBz aXplX3Qgc2l6ZSwKPiAtCSAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyLCB1bnNpZ25l ZCBsb25nIGF0dHJzKQo+IC17Cj4gLQl1bnNpZ25lZCBsb25nIHBhZ2VfcGZuID0gcGFnZV90b194 ZW5fcGZuKHBhZ2UpOwo+IC0JdW5zaWduZWQgbG9uZyBkZXZfcGZuID0gWEVOX1BGTl9ET1dOKGRl dl9hZGRyKTsKPiAtCXVuc2lnbmVkIGxvbmcgY29tcG91bmRfcGFnZXMgPQo+IC0JCSgxPDxjb21w b3VuZF9vcmRlcihwYWdlKSkgKiBYRU5fUEZOX1BFUl9QQUdFOwo+IC0JYm9vbCBsb2NhbCA9IChw YWdlX3BmbiA8PSBkZXZfcGZuKSAmJgo+IC0JCShkZXZfcGZuIC0gcGFnZV9wZm4gPCBjb21wb3Vu ZF9wYWdlcyk7Cj4gLQo+IC0JLyoKPiAtCSAqIERvbTAgaXMgbWFwcGVkIDE6MSwgd2hpbGUgdGhl IExpbnV4IHBhZ2UgY2FuIHNwYW4gYWNyb3NzCj4gLQkgKiBtdWx0aXBsZSBYZW4gcGFnZXMsIGl0 J3Mgbm90IHBvc3NpYmxlIGZvciBpdCB0byBjb250YWluIGEKPiAtCSAqIG1peCBvZiBsb2NhbCBh bmQgZm9yZWlnbiBYZW4gcGFnZXMuIFNvIGlmIHRoZSBmaXJzdCB4ZW5fcGZuCj4gLQkgKiA9PSBt Zm4gdGhlIHBhZ2UgaXMgbG9jYWwgb3RoZXJ3aXNlIGl0J3MgYSBmb3JlaWduIHBhZ2UKPiAtCSAq IGdyYW50LW1hcHBlZCBpbiBkb20wLiBJZiB0aGUgcGFnZSBpcyBsb2NhbCB3ZSBjYW4gc2FmZWx5 Cj4gLQkgKiBjYWxsIHRoZSBuYXRpdmUgZG1hX29wcyBmdW5jdGlvbiwgb3RoZXJ3aXNlIHdlIGNh bGwgdGhlIHhlbgo+IC0JICogc3BlY2lmaWMgZnVuY3Rpb24uCj4gLQkgKi8KPiAtCWlmIChsb2Nh bCkKPiAtCQl4ZW5fZ2V0X2RtYV9vcHMoaHdkZXYpLT5tYXBfcGFnZShod2RldiwgcGFnZSwgb2Zm c2V0LCBzaXplLCBkaXIsIGF0dHJzKTsKPiAtCWVsc2UKPiAtCQlfX3hlbl9kbWFfbWFwX3BhZ2Uo aHdkZXYsIHBhZ2UsIGRldl9hZGRyLCBvZmZzZXQsIHNpemUsIGRpciwgYXR0cnMpOwo+IC19Cj4g LQo+IC1zdGF0aWMgaW5saW5lIHZvaWQgeGVuX2RtYV91bm1hcF9wYWdlKHN0cnVjdCBkZXZpY2Ug Kmh3ZGV2LCBkbWFfYWRkcl90IGhhbmRsZSwKPiAtCQlzaXplX3Qgc2l6ZSwgZW51bSBkbWFfZGF0 YV9kaXJlY3Rpb24gZGlyLCB1bnNpZ25lZCBsb25nIGF0dHJzKQo+IC17Cj4gLQl1bnNpZ25lZCBs b25nIHBmbiA9IFBGTl9ET1dOKGhhbmRsZSk7Cj4gLQkvKgo+IC0JICogRG9tMCBpcyBtYXBwZWQg MToxLCB3aGlsZSB0aGUgTGludXggcGFnZSBjYW4gYmUgc3Bhbm5lZCBhY2Nyb3NzCj4gLQkgKiBt dWx0aXBsZSBYZW4gcGFnZSwgaXQncyBub3QgcG9zc2libGUgdG8gaGF2ZSBhIG1peCBvZiBsb2Nh bCBhbmQKPiAtCSAqIGZvcmVpZ24gWGVuIHBhZ2UuIERvbTAgaXMgbWFwcGVkIDE6MSwgc28gY2Fs bGluZyBwZm5fdmFsaWQgb24gYQo+IC0JICogZm9yZWlnbiBtZm4gd2lsbCBhbHdheXMgcmV0dXJu IGZhbHNlLiBJZiB0aGUgcGFnZSBpcyBsb2NhbCB3ZSBjYW4KPiAtCSAqIHNhZmVseSBjYWxsIHRo ZSBuYXRpdmUgZG1hX29wcyBmdW5jdGlvbiwgb3RoZXJ3aXNlIHdlIGNhbGwgdGhlIHhlbgo+IC0J ICogc3BlY2lmaWMgZnVuY3Rpb24uCj4gLQkgKi8KPiAtCWlmIChwZm5fdmFsaWQocGZuKSkgewo+ IC0JCWlmICh4ZW5fZ2V0X2RtYV9vcHMoaHdkZXYpLT51bm1hcF9wYWdlKQo+IC0JCQl4ZW5fZ2V0 X2RtYV9vcHMoaHdkZXYpLT51bm1hcF9wYWdlKGh3ZGV2LCBoYW5kbGUsIHNpemUsIGRpciwgYXR0 cnMpOwo+IC0JfSBlbHNlCj4gLQkJX194ZW5fZG1hX3VubWFwX3BhZ2UoaHdkZXYsIGhhbmRsZSwg c2l6ZSwgZGlyLCBhdHRycyk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbmxpbmUgdm9pZCB4ZW5fZG1h X3N5bmNfc2luZ2xlX2Zvcl9jcHUoc3RydWN0IGRldmljZSAqaHdkZXYsCj4gLQkJZG1hX2FkZHJf dCBoYW5kbGUsIHNpemVfdCBzaXplLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCj4gLXsK PiAtCXVuc2lnbmVkIGxvbmcgcGZuID0gUEZOX0RPV04oaGFuZGxlKTsKPiAtCWlmIChwZm5fdmFs aWQocGZuKSkgewo+IC0JCWlmICh4ZW5fZ2V0X2RtYV9vcHMoaHdkZXYpLT5zeW5jX3NpbmdsZV9m b3JfY3B1KQo+IC0JCQl4ZW5fZ2V0X2RtYV9vcHMoaHdkZXYpLT5zeW5jX3NpbmdsZV9mb3JfY3B1 KGh3ZGV2LCBoYW5kbGUsIHNpemUsIGRpcik7Cj4gLQl9IGVsc2UKPiAtCQlfX3hlbl9kbWFfc3lu Y19zaW5nbGVfZm9yX2NwdShod2RldiwgaGFuZGxlLCBzaXplLCBkaXIpOwo+IC19Cj4gLQo+IC1z dGF0aWMgaW5saW5lIHZvaWQgeGVuX2RtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKHN0cnVjdCBk ZXZpY2UgKmh3ZGV2LAo+IC0JCWRtYV9hZGRyX3QgaGFuZGxlLCBzaXplX3Qgc2l6ZSwgZW51bSBk bWFfZGF0YV9kaXJlY3Rpb24gZGlyKQo+IC17Cj4gLQl1bnNpZ25lZCBsb25nIHBmbiA9IFBGTl9E T1dOKGhhbmRsZSk7Cj4gLQlpZiAocGZuX3ZhbGlkKHBmbikpIHsKPiAtCQlpZiAoeGVuX2dldF9k bWFfb3BzKGh3ZGV2KS0+c3luY19zaW5nbGVfZm9yX2RldmljZSkKPiAtCQkJeGVuX2dldF9kbWFf b3BzKGh3ZGV2KS0+c3luY19zaW5nbGVfZm9yX2RldmljZShod2RldiwgaGFuZGxlLCBzaXplLCBk aXIpOwo+IC0JfSBlbHNlCj4gLQkJX194ZW5fZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoaHdk ZXYsIGhhbmRsZSwgc2l6ZSwgZGlyKTsKPiAtfQo+IC0KPiAtI2VuZGlmIC8qIF9BU01fQVJNX1hF Tl9QQUdFX0NPSEVSRU5UX0ggKi8KPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vZG1hLW1hcHBp bmcuYyBiL2FyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMKPiBpbmRleCBkNDI1NTdlZTY5YzIuLjcz ODA5NzM5NjQ0NSAxMDA2NDQKPiAtLS0gYS9hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jCj4gKysr IGIvYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYwo+IEBAIC0xMTMyLDEwICsxMTMyLDYgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBkbWFfbWFwX29wcyAqYXJtX2dldF9kbWFfbWFwX29wcyhib29sIGNv aGVyZW50KQo+ICAJICogMzItYml0IERNQS4KPiAgCSAqIFVzZSB0aGUgZ2VuZXJpYyBkbWEtZGly ZWN0IC8gc3dpb3RsYiBvcHMgY29kZSBpbiB0aGF0IGNhc2UsIGFzIHRoYXQKPiAgCSAqIGhhbmRs ZXMgYm91bmNlIGJ1ZmZlcmluZyBmb3IgdXMuCj4gLQkgKgo+IC0JICogTm90ZTogdGhpcyBjaGVj a3MgQ09ORklHX0FSTV9MUEFFIGluc3RlYWQgb2YgQ09ORklHX1NXSU9UTEIgYXMgdGhlCj4gLQkg KiBsYXR0ZXIgaXMgYWxzbyBzZWxlY3RlZCBieSB0aGUgWGVuIGNvZGUsIGJ1dCB0aGF0IGNvZGUg Zm9yIG5vdyByZWxpZXMKPiAtCSAqIG9uIG5vbi1OVUxMIGRldl9kbWFfb3BzLiAgVG8gYmUgY2xl YW5lZCB1cCBsYXRlci4KPiAgCSAqLwo+ICAJaWYgKElTX0VOQUJMRUQoQ09ORklHX0FSTV9MUEFF KSkKPiAgCQlyZXR1cm4gTlVMTDsKPiBAQCAtMjM2MywxMCArMjM1OSw4IEBAIHZvaWQgYXJjaF9z ZXR1cF9kbWFfb3BzKHN0cnVjdCBkZXZpY2UgKmRldiwgdTY0IGRtYV9iYXNlLCB1NjQgc2l6ZSwK PiAgCXNldF9kbWFfb3BzKGRldiwgZG1hX29wcyk7Cj4gIAo+ICAjaWZkZWYgQ09ORklHX1hFTgo+ IC0JaWYgKHhlbl9pbml0aWFsX2RvbWFpbigpKSB7Cj4gLQkJZGV2LT5hcmNoZGF0YS5kZXZfZG1h X29wcyA9IGRldi0+ZG1hX29wczsKPiArCWlmICh4ZW5faW5pdGlhbF9kb21haW4oKSkKPiAgCQlk ZXYtPmRtYV9vcHMgPSB4ZW5fZG1hX29wczsKPiAtCX0KPiAgI2VuZGlmCj4gIAlkZXYtPmFyY2hk YXRhLmRtYV9vcHNfc2V0dXAgPSB0cnVlOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQv aW5jbHVkZS9hc20veGVuL3BhZ2UtY29oZXJlbnQuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20v eGVuL3BhZ2UtY29oZXJlbnQuaAo+IGluZGV4IGQ4OGU1NmI5MGI5My4uMjdlOTg0OTc3NDAyIDEw MDY0NAo+IC0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20veGVuL3BhZ2UtY29oZXJlbnQuaAo+ ICsrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20veGVuL3BhZ2UtY29oZXJlbnQuaAo+IEBAIC0x LDc3ICsxLDIgQEAKPiAgLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KPiAt I2lmbmRlZiBfQVNNX0FSTTY0X1hFTl9QQUdFX0NPSEVSRU5UX0gKPiAtI2RlZmluZSBfQVNNX0FS TTY0X1hFTl9QQUdFX0NPSEVSRU5UX0gKPiAtCj4gLSNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGlu Zy5oPgo+IC0jaW5jbHVkZSA8YXNtL3BhZ2UuaD4KPiAgI2luY2x1ZGUgPHhlbi9hcm0vcGFnZS1j b2hlcmVudC5oPgo+IC0KPiAtc3RhdGljIGlubGluZSB2b2lkICp4ZW5fYWxsb2NfY29oZXJlbnRf cGFnZXMoc3RydWN0IGRldmljZSAqaHdkZXYsIHNpemVfdCBzaXplLAo+IC0JCWRtYV9hZGRyX3Qg KmRtYV9oYW5kbGUsIGdmcF90IGZsYWdzLCB1bnNpZ25lZCBsb25nIGF0dHJzKQo+IC17Cj4gLQly ZXR1cm4gZG1hX2RpcmVjdF9hbGxvYyhod2Rldiwgc2l6ZSwgZG1hX2hhbmRsZSwgZmxhZ3MsIGF0 dHJzKTsKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSB2b2lkIHhlbl9mcmVlX2NvaGVyZW50X3Bh Z2VzKHN0cnVjdCBkZXZpY2UgKmh3ZGV2LCBzaXplX3Qgc2l6ZSwKPiAtCQl2b2lkICpjcHVfYWRk ciwgZG1hX2FkZHJfdCBkbWFfaGFuZGxlLCB1bnNpZ25lZCBsb25nIGF0dHJzKQo+IC17Cj4gLQlk bWFfZGlyZWN0X2ZyZWUoaHdkZXYsIHNpemUsIGNwdV9hZGRyLCBkbWFfaGFuZGxlLCBhdHRycyk7 Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbmxpbmUgdm9pZCB4ZW5fZG1hX3N5bmNfc2luZ2xlX2Zvcl9j cHUoc3RydWN0IGRldmljZSAqaHdkZXYsCj4gLQkJZG1hX2FkZHJfdCBoYW5kbGUsIHNpemVfdCBz aXplLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCj4gLXsKPiAtCXVuc2lnbmVkIGxvbmcg cGZuID0gUEZOX0RPV04oaGFuZGxlKTsKPiAtCj4gLQlpZiAocGZuX3ZhbGlkKHBmbikpCj4gLQkJ ZG1hX2RpcmVjdF9zeW5jX3NpbmdsZV9mb3JfY3B1KGh3ZGV2LCBoYW5kbGUsIHNpemUsIGRpcik7 Cj4gLQllbHNlCj4gLQkJX194ZW5fZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUoaHdkZXYsIGhhbmRs ZSwgc2l6ZSwgZGlyKTsKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSB2b2lkIHhlbl9kbWFfc3lu Y19zaW5nbGVfZm9yX2RldmljZShzdHJ1Y3QgZGV2aWNlICpod2RldiwKPiAtCQlkbWFfYWRkcl90 IGhhbmRsZSwgc2l6ZV90IHNpemUsIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKPiAtewo+ IC0JdW5zaWduZWQgbG9uZyBwZm4gPSBQRk5fRE9XTihoYW5kbGUpOwo+IC0JaWYgKHBmbl92YWxp ZChwZm4pKQo+IC0JCWRtYV9kaXJlY3Rfc3luY19zaW5nbGVfZm9yX2RldmljZShod2RldiwgaGFu ZGxlLCBzaXplLCBkaXIpOwo+IC0JZWxzZQo+IC0JCV9feGVuX2RtYV9zeW5jX3NpbmdsZV9mb3Jf ZGV2aWNlKGh3ZGV2LCBoYW5kbGUsIHNpemUsIGRpcik7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbmxp bmUgdm9pZCB4ZW5fZG1hX21hcF9wYWdlKHN0cnVjdCBkZXZpY2UgKmh3ZGV2LCBzdHJ1Y3QgcGFn ZSAqcGFnZSwKPiAtCSAgICAgZG1hX2FkZHJfdCBkZXZfYWRkciwgdW5zaWduZWQgbG9uZyBvZmZz ZXQsIHNpemVfdCBzaXplLAo+IC0JICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIsIHVu c2lnbmVkIGxvbmcgYXR0cnMpCj4gLXsKPiAtCXVuc2lnbmVkIGxvbmcgcGFnZV9wZm4gPSBwYWdl X3RvX3hlbl9wZm4ocGFnZSk7Cj4gLQl1bnNpZ25lZCBsb25nIGRldl9wZm4gPSBYRU5fUEZOX0RP V04oZGV2X2FkZHIpOwo+IC0JdW5zaWduZWQgbG9uZyBjb21wb3VuZF9wYWdlcyA9Cj4gLQkJKDE8 PGNvbXBvdW5kX29yZGVyKHBhZ2UpKSAqIFhFTl9QRk5fUEVSX1BBR0U7Cj4gLQlib29sIGxvY2Fs ID0gKHBhZ2VfcGZuIDw9IGRldl9wZm4pICYmCj4gLQkJKGRldl9wZm4gLSBwYWdlX3BmbiA8IGNv bXBvdW5kX3BhZ2VzKTsKPiAtCj4gLQlpZiAobG9jYWwpCj4gLQkJZG1hX2RpcmVjdF9tYXBfcGFn ZShod2RldiwgcGFnZSwgb2Zmc2V0LCBzaXplLCBkaXIsIGF0dHJzKTsKPiAtCWVsc2UKPiAtCQlf X3hlbl9kbWFfbWFwX3BhZ2UoaHdkZXYsIHBhZ2UsIGRldl9hZGRyLCBvZmZzZXQsIHNpemUsIGRp ciwgYXR0cnMpOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW5saW5lIHZvaWQgeGVuX2RtYV91bm1hcF9w YWdlKHN0cnVjdCBkZXZpY2UgKmh3ZGV2LCBkbWFfYWRkcl90IGhhbmRsZSwKPiAtCQlzaXplX3Qg c2l6ZSwgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyLCB1bnNpZ25lZCBsb25nIGF0dHJzKQo+ IC17Cj4gLQl1bnNpZ25lZCBsb25nIHBmbiA9IFBGTl9ET1dOKGhhbmRsZSk7Cj4gLQkvKgo+IC0J ICogRG9tMCBpcyBtYXBwZWQgMToxLCB3aGlsZSB0aGUgTGludXggcGFnZSBjYW4gYmUgc3Bhbm5l ZCBhY2Nyb3NzCj4gLQkgKiBtdWx0aXBsZSBYZW4gcGFnZSwgaXQncyBub3QgcG9zc2libGUgdG8g aGF2ZSBhIG1peCBvZiBsb2NhbCBhbmQKPiAtCSAqIGZvcmVpZ24gWGVuIHBhZ2UuIERvbTAgaXMg bWFwcGVkIDE6MSwgc28gY2FsbGluZyBwZm5fdmFsaWQgb24gYQo+IC0JICogZm9yZWlnbiBtZm4g d2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlLiBJZiB0aGUgcGFnZSBpcyBsb2NhbCB3ZSBjYW4KPiAt CSAqIHNhZmVseSBjYWxsIHRoZSBuYXRpdmUgZG1hX29wcyBmdW5jdGlvbiwgb3RoZXJ3aXNlIHdl IGNhbGwgdGhlIHhlbgo+IC0JICogc3BlY2lmaWMgZnVuY3Rpb24uCj4gLQkgKi8KPiAtCWlmIChw Zm5fdmFsaWQocGZuKSkKPiAtCQlkbWFfZGlyZWN0X3VubWFwX3BhZ2UoaHdkZXYsIGhhbmRsZSwg c2l6ZSwgZGlyLCBhdHRycyk7Cj4gLQllbHNlCj4gLQkJX194ZW5fZG1hX3VubWFwX3BhZ2UoaHdk ZXYsIGhhbmRsZSwgc2l6ZSwgZGlyLCBhdHRycyk7Cj4gLX0KPiAtCj4gLSNlbmRpZiAvKiBfQVNN X0FSTTY0X1hFTl9QQUdFX0NPSEVSRU5UX0ggKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4v c3dpb3RsYi14ZW4uYyBiL2RyaXZlcnMveGVuL3N3aW90bGIteGVuLmMKPiBpbmRleCBhZTFkZjQ5 NmJmMzguLmI4ODA4Njc3YWUxZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3hlbi9zd2lvdGxiLXhl bi5jCj4gKysrIGIvZHJpdmVycy94ZW4vc3dpb3RsYi14ZW4uYwo+IEBAIC01NDcsNTEgKzU0Nyw2 IEBAIHhlbl9zd2lvdGxiX2RtYV9zdXBwb3J0ZWQoc3RydWN0IGRldmljZSAqaHdkZXYsIHU2NCBt YXNrKQo+ICAJcmV0dXJuIHhlbl92aXJ0X3RvX2J1cyh4ZW5faW9fdGxiX2VuZCAtIDEpIDw9IG1h c2s7Cj4gIH0KPiAgCj4gLS8qCj4gLSAqIENyZWF0ZSB1c2Vyc3BhY2UgbWFwcGluZyBmb3IgdGhl IERNQS1jb2hlcmVudCBtZW1vcnkuCj4gLSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxl ZCB3aXRoIHRoZSBwYWdlcyBmcm9tIHRoZSBjdXJyZW50IGRvbWFpbiBvbmx5LAo+IC0gKiBwYXNz aW5nIHBhZ2VzIG1hcHBlZCBmcm9tIG90aGVyIGRvbWFpbnMgd291bGQgbGVhZCB0byBtZW1vcnkg Y29ycnVwdGlvbi4KPiAtICovCj4gLXN0YXRpYyBpbnQKPiAteGVuX3N3aW90bGJfZG1hX21tYXAo c3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKPiAtCQkgICAg IHZvaWQgKmNwdV9hZGRyLCBkbWFfYWRkcl90IGRtYV9hZGRyLCBzaXplX3Qgc2l6ZSwKPiAtCQkg ICAgIHVuc2lnbmVkIGxvbmcgYXR0cnMpCj4gLXsKPiAtI2lmZGVmIENPTkZJR19BUk0KPiAtCWlm ICh4ZW5fZ2V0X2RtYV9vcHMoZGV2KS0+bW1hcCkKPiAtCQlyZXR1cm4geGVuX2dldF9kbWFfb3Bz KGRldiktPm1tYXAoZGV2LCB2bWEsIGNwdV9hZGRyLAo+IC0JCQkJCQkgICAgZG1hX2FkZHIsIHNp emUsIGF0dHJzKTsKPiAtI2VuZGlmCj4gLQlyZXR1cm4gZG1hX2NvbW1vbl9tbWFwKGRldiwgdm1h LCBjcHVfYWRkciwgZG1hX2FkZHIsIHNpemUsIGF0dHJzKTsKPiAtfQo+IC0KPiAtLyoKPiAtICog VGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHBhZ2VzIGZyb20gdGhlIGN1 cnJlbnQgZG9tYWluIG9ubHksCj4gLSAqIHBhc3NpbmcgcGFnZXMgbWFwcGVkIGZyb20gb3RoZXIg ZG9tYWlucyB3b3VsZCBsZWFkIHRvIG1lbW9yeSBjb3JydXB0aW9uLgo+IC0gKi8KPiAtc3RhdGlj IGludAo+IC14ZW5fc3dpb3RsYl9nZXRfc2d0YWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVj dCBzZ190YWJsZSAqc2d0LAo+IC0JCQl2b2lkICpjcHVfYWRkciwgZG1hX2FkZHJfdCBoYW5kbGUs IHNpemVfdCBzaXplLAo+IC0JCQl1bnNpZ25lZCBsb25nIGF0dHJzKQo+IC17Cj4gLSNpZmRlZiBD T05GSUdfQVJNCj4gLQlpZiAoeGVuX2dldF9kbWFfb3BzKGRldiktPmdldF9zZ3RhYmxlKSB7Cj4g LSNpZiAwCj4gLQkvKgo+IC0JICogVGhpcyBjaGVjayB2ZXJpZmllcyB0aGF0IHRoZSBwYWdlIGJl bG9uZ3MgdG8gdGhlIGN1cnJlbnQgZG9tYWluIGFuZAo+IC0JICogaXMgbm90IG9uZSBtYXBwZWQg ZnJvbSBhbm90aGVyIGRvbWFpbi4KPiAtCSAqIFRoaXMgY2hlY2sgaXMgZm9yIGRlYnVnIG9ubHks IGFuZCBzaG91bGQgbm90IGdvIHRvIHByb2R1Y3Rpb24gYnVpbGQKPiAtCSAqLwo+IC0JCXVuc2ln bmVkIGxvbmcgYmZuID0gUEhZU19QRk4oZG1hX3RvX3BoeXMoZGV2LCBoYW5kbGUpKTsKPiAtCQlC VUdfT04gKCFwYWdlX2lzX3JhbShiZm4pKTsKPiAtI2VuZGlmCj4gLQkJcmV0dXJuIHhlbl9nZXRf ZG1hX29wcyhkZXYpLT5nZXRfc2d0YWJsZShkZXYsIHNndCwgY3B1X2FkZHIsCj4gLQkJCQkJCQkg ICBoYW5kbGUsIHNpemUsIGF0dHJzKTsKPiAtCX0KPiAtI2VuZGlmCj4gLQlyZXR1cm4gZG1hX2Nv bW1vbl9nZXRfc2d0YWJsZShkZXYsIHNndCwgY3B1X2FkZHIsIGhhbmRsZSwgc2l6ZSwgYXR0cnMp Owo+IC19Cj4gLQo+ICBjb25zdCBzdHJ1Y3QgZG1hX21hcF9vcHMgeGVuX3N3aW90bGJfZG1hX29w cyA9IHsKPiAgCS5hbGxvYyA9IHhlbl9zd2lvdGxiX2FsbG9jX2NvaGVyZW50LAo+ICAJLmZyZWUg PSB4ZW5fc3dpb3RsYl9mcmVlX2NvaGVyZW50LAo+IEBAIC02MDQsNiArNTU5LDYgQEAgY29uc3Qg c3RydWN0IGRtYV9tYXBfb3BzIHhlbl9zd2lvdGxiX2RtYV9vcHMgPSB7Cj4gIAkubWFwX3BhZ2Ug PSB4ZW5fc3dpb3RsYl9tYXBfcGFnZSwKPiAgCS51bm1hcF9wYWdlID0geGVuX3N3aW90bGJfdW5t YXBfcGFnZSwKPiAgCS5kbWFfc3VwcG9ydGVkID0geGVuX3N3aW90bGJfZG1hX3N1cHBvcnRlZCwK PiAtCS5tbWFwID0geGVuX3N3aW90bGJfZG1hX21tYXAsCj4gLQkuZ2V0X3NndGFibGUgPSB4ZW5f c3dpb3RsYl9nZXRfc2d0YWJsZSwKPiArCS5tbWFwID0gZG1hX2NvbW1vbl9tbWFwLAo+ICsJLmdl dF9zZ3RhYmxlID0gZG1hX2NvbW1vbl9nZXRfc2d0YWJsZSwKPiAgfTsKPiBkaWZmIC0tZ2l0IGEv aW5jbHVkZS94ZW4vYXJtL3BhZ2UtY29oZXJlbnQuaCBiL2luY2x1ZGUveGVuL2FybS9wYWdlLWNv aGVyZW50LmgKPiBpbmRleCAyY2E5MTY0YTc5YmYuLmE4NDBkNjk0OWE4NyAxMDA2NDQKPiAtLS0g YS9pbmNsdWRlL3hlbi9hcm0vcGFnZS1jb2hlcmVudC5oCj4gKysrIGIvaW5jbHVkZS94ZW4vYXJt L3BhZ2UtY29oZXJlbnQuaAo+IEBAIC0yLDYgKzIsOSBAQAo+ICAjaWZuZGVmIF9YRU5fQVJNX1BB R0VfQ09IRVJFTlRfSAo+ICAjZGVmaW5lIF9YRU5fQVJNX1BBR0VfQ09IRVJFTlRfSAo+ICAKPiAr I2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+Cj4gKyNpbmNsdWRlIDxhc20vcGFnZS5oPgo+ ICsKPiAgdm9pZCBfX3hlbl9kbWFfbWFwX3BhZ2Uoc3RydWN0IGRldmljZSAqaHdkZXYsIHN0cnVj dCBwYWdlICpwYWdlLAo+ICAJICAgICBkbWFfYWRkcl90IGRldl9hZGRyLCB1bnNpZ25lZCBsb25n IG9mZnNldCwgc2l6ZV90IHNpemUsCj4gIAkgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRp ciwgdW5zaWduZWQgbG9uZyBhdHRycyk7Cj4gQEAgLTEzLDQgKzE2LDgxIEBAIHZvaWQgX194ZW5f ZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUoc3RydWN0IGRldmljZSAqaHdkZXYsCj4gIHZvaWQgX194 ZW5fZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2Uoc3RydWN0IGRldmljZSAqaHdkZXYsCj4gIAkJ ZG1hX2FkZHJfdCBoYW5kbGUsIHNpemVfdCBzaXplLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBk aXIpOwo+ICAKPiArc3RhdGljIGlubGluZSB2b2lkICp4ZW5fYWxsb2NfY29oZXJlbnRfcGFnZXMo c3RydWN0IGRldmljZSAqaHdkZXYsIHNpemVfdCBzaXplLAo+ICsJCWRtYV9hZGRyX3QgKmRtYV9o YW5kbGUsIGdmcF90IGZsYWdzLCB1bnNpZ25lZCBsb25nIGF0dHJzKQo+ICt7Cj4gKwlyZXR1cm4g ZG1hX2RpcmVjdF9hbGxvYyhod2Rldiwgc2l6ZSwgZG1hX2hhbmRsZSwgZmxhZ3MsIGF0dHJzKTsK PiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIHhlbl9mcmVlX2NvaGVyZW50X3BhZ2VzKHN0 cnVjdCBkZXZpY2UgKmh3ZGV2LCBzaXplX3Qgc2l6ZSwKPiArCQl2b2lkICpjcHVfYWRkciwgZG1h X2FkZHJfdCBkbWFfaGFuZGxlLCB1bnNpZ25lZCBsb25nIGF0dHJzKQo+ICt7Cj4gKwlkbWFfZGly ZWN0X2ZyZWUoaHdkZXYsIHNpemUsIGNwdV9hZGRyLCBkbWFfaGFuZGxlLCBhdHRycyk7Cj4gK30K PiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB4ZW5fZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUoc3Ry dWN0IGRldmljZSAqaHdkZXYsCj4gKwkJZG1hX2FkZHJfdCBoYW5kbGUsIHNpemVfdCBzaXplLCBl bnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCj4gK3sKPiArCXVuc2lnbmVkIGxvbmcgcGZuID0g UEZOX0RPV04oaGFuZGxlKTsKPiArCj4gKwlpZiAocGZuX3ZhbGlkKHBmbikpCj4gKwkJZG1hX2Rp cmVjdF9zeW5jX3NpbmdsZV9mb3JfY3B1KGh3ZGV2LCBoYW5kbGUsIHNpemUsIGRpcik7Cj4gKwll bHNlCj4gKwkJX194ZW5fZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUoaHdkZXYsIGhhbmRsZSwgc2l6 ZSwgZGlyKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIHhlbl9kbWFfc3luY19zaW5n bGVfZm9yX2RldmljZShzdHJ1Y3QgZGV2aWNlICpod2RldiwKPiArCQlkbWFfYWRkcl90IGhhbmRs ZSwgc2l6ZV90IHNpemUsIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKPiArewo+ICsJdW5z aWduZWQgbG9uZyBwZm4gPSBQRk5fRE9XTihoYW5kbGUpOwo+ICsJaWYgKHBmbl92YWxpZChwZm4p KQo+ICsJCWRtYV9kaXJlY3Rfc3luY19zaW5nbGVfZm9yX2RldmljZShod2RldiwgaGFuZGxlLCBz aXplLCBkaXIpOwo+ICsJZWxzZQo+ICsJCV9feGVuX2RtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNl KGh3ZGV2LCBoYW5kbGUsIHNpemUsIGRpcik7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9p ZCB4ZW5fZG1hX21hcF9wYWdlKHN0cnVjdCBkZXZpY2UgKmh3ZGV2LCBzdHJ1Y3QgcGFnZSAqcGFn ZSwKPiArCSAgICAgZG1hX2FkZHJfdCBkZXZfYWRkciwgdW5zaWduZWQgbG9uZyBvZmZzZXQsIHNp emVfdCBzaXplLAo+ICsJICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIsIHVuc2lnbmVk IGxvbmcgYXR0cnMpCj4gK3sKPiArCXVuc2lnbmVkIGxvbmcgcGFnZV9wZm4gPSBwYWdlX3RvX3hl bl9wZm4ocGFnZSk7Cj4gKwl1bnNpZ25lZCBsb25nIGRldl9wZm4gPSBYRU5fUEZOX0RPV04oZGV2 X2FkZHIpOwo+ICsJdW5zaWduZWQgbG9uZyBjb21wb3VuZF9wYWdlcyA9Cj4gKwkJKDE8PGNvbXBv dW5kX29yZGVyKHBhZ2UpKSAqIFhFTl9QRk5fUEVSX1BBR0U7Cj4gKwlib29sIGxvY2FsID0gKHBh Z2VfcGZuIDw9IGRldl9wZm4pICYmCj4gKwkJKGRldl9wZm4gLSBwYWdlX3BmbiA8IGNvbXBvdW5k X3BhZ2VzKTsKPiArCj4gKwkvKgo+ICsJICogRG9tMCBpcyBtYXBwZWQgMToxLCB3aGlsZSB0aGUg TGludXggcGFnZSBjYW4gc3BhbiBhY3Jvc3MKPiArCSAqIG11bHRpcGxlIFhlbiBwYWdlcywgaXQn cyBub3QgcG9zc2libGUgZm9yIGl0IHRvIGNvbnRhaW4gYQo+ICsJICogbWl4IG9mIGxvY2FsIGFu ZCBmb3JlaWduIFhlbiBwYWdlcy4gU28gaWYgdGhlIGZpcnN0IHhlbl9wZm4KPiArCSAqID09IG1m biB0aGUgcGFnZSBpcyBsb2NhbCBvdGhlcndpc2UgaXQncyBhIGZvcmVpZ24gcGFnZQo+ICsJICog Z3JhbnQtbWFwcGVkIGluIGRvbTAuIElmIHRoZSBwYWdlIGlzIGxvY2FsIHdlIGNhbiBzYWZlbHkK PiArCSAqIGNhbGwgdGhlIG5hdGl2ZSBkbWFfb3BzIGZ1bmN0aW9uLCBvdGhlcndpc2Ugd2UgY2Fs bCB0aGUgeGVuCj4gKwkgKiBzcGVjaWZpYyBmdW5jdGlvbi4KPiArCSAqLwo+ICsJaWYgKGxvY2Fs KQo+ICsJCWRtYV9kaXJlY3RfbWFwX3BhZ2UoaHdkZXYsIHBhZ2UsIG9mZnNldCwgc2l6ZSwgZGly LCBhdHRycyk7Cj4gKwllbHNlCj4gKwkJX194ZW5fZG1hX21hcF9wYWdlKGh3ZGV2LCBwYWdlLCBk ZXZfYWRkciwgb2Zmc2V0LCBzaXplLCBkaXIsIGF0dHJzKTsKPiArfQo+ICsKPiArc3RhdGljIGlu bGluZSB2b2lkIHhlbl9kbWFfdW5tYXBfcGFnZShzdHJ1Y3QgZGV2aWNlICpod2RldiwgZG1hX2Fk ZHJfdCBoYW5kbGUsCj4gKwkJc2l6ZV90IHNpemUsIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRp ciwgdW5zaWduZWQgbG9uZyBhdHRycykKPiArewo+ICsJdW5zaWduZWQgbG9uZyBwZm4gPSBQRk5f RE9XTihoYW5kbGUpOwo+ICsJLyoKPiArCSAqIERvbTAgaXMgbWFwcGVkIDE6MSwgd2hpbGUgdGhl IExpbnV4IHBhZ2UgY2FuIGJlIHNwYW5uZWQgYWNjcm9zcwo+ICsJICogbXVsdGlwbGUgWGVuIHBh Z2UsIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGhhdmUgYSBtaXggb2YgbG9jYWwgYW5kCj4gKwkgKiBm b3JlaWduIFhlbiBwYWdlLiBEb20wIGlzIG1hcHBlZCAxOjEsIHNvIGNhbGxpbmcgcGZuX3ZhbGlk IG9uIGEKPiArCSAqIGZvcmVpZ24gbWZuIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZS4gSWYgdGhl IHBhZ2UgaXMgbG9jYWwgd2UgY2FuCj4gKwkgKiBzYWZlbHkgY2FsbCB0aGUgbmF0aXZlIGRtYV9v cHMgZnVuY3Rpb24sIG90aGVyd2lzZSB3ZSBjYWxsIHRoZSB4ZW4KPiArCSAqIHNwZWNpZmljIGZ1 bmN0aW9uLgo+ICsJICovCj4gKwlpZiAocGZuX3ZhbGlkKHBmbikpCj4gKwkJZG1hX2RpcmVjdF91 bm1hcF9wYWdlKGh3ZGV2LCBoYW5kbGUsIHNpemUsIGRpciwgYXR0cnMpOwo+ICsJZWxzZQo+ICsJ CV9feGVuX2RtYV91bm1hcF9wYWdlKGh3ZGV2LCBoYW5kbGUsIHNpemUsIGRpciwgYXR0cnMpOwo+ ICt9Cj4gKwo+ICAjZW5kaWYgLyogX1hFTl9BUk1fUEFHRV9DT0hFUkVOVF9IICovCj4gLS0gCj4g Mi4yMC4xCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs