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=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 5BDB5C3A5A4 for ; Mon, 26 Aug 2019 12:21:13 +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 243DB217F5 for ; Mon, 26 Aug 2019 12:21:13 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="NLUDLQQi" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 243DB217F5 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=lst.de 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 1i2Dyg-0006CU-Gd; Mon, 26 Aug 2019 12:20:06 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1i2Dyf-00062R-9g for xen-devel@lists.xenproject.org; Mon, 26 Aug 2019 12:20:05 +0000 X-Inumbo-ID: cd3f4608-c7fb-11e9-b95f-bc764e2007e4 Received: from bombadil.infradead.org (unknown [2607:7c80:54:e::133]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id cd3f4608-c7fb-11e9-b95f-bc764e2007e4; Mon, 26 Aug 2019 12:19:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=65sgwODizPLsrhnwsr0i0+yLdOtgLzqKGvSR8ntdxow=; b=NLUDLQQiE2buE7HCdNOqxUcnut dSWovjrFCTiXYSZwEGHxb9GUVyRyooX5zkOMK03O3qAZQWzFWGZfYYLxH1hfHbyNrXxq7j/fhkqhM zrRX0yx9w3jvNp8cNheuh5S95tI5VeT1L+59INkwexWaScje2ZJsEIFKvgCuM0eSlvuTyd6qgd2jy yXNVu4XHbnFP2gMPdvrFvE7uuQyiXvRK0vM7PO/T+IZVZhq8Iz2dXRpfUfMI5Xc0q7p9YoWESPXXy o2TapiDK8h5fVyxTzB4MSC+syoOnjxbKQG1AHal1OVrehOEWaWf0aBSqPeqO6TJZ7JDOy1PMb5EHY +/dlId8g==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1i2DyP-0002Ez-27; Mon, 26 Aug 2019 12:19:49 +0000 From: Christoph Hellwig To: Stefano Stabellini , Konrad Rzeszutek Wilk Date: Mon, 26 Aug 2019 14:19:34 +0200 Message-Id: <20190826121944.515-2-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190826121944.515-1-hch@lst.de> References: <20190826121944.515-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Subject: [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: xen-devel@lists.xenproject.org, iommu@lists.linux-foundation.org, x86@kernel.org, linux-kernel@vger.kernel.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" UmV1c2UgdGhlIGFybTY0IGNvZGUgdGhhdCB1c2VzIHRoZSBkbWEtZGlyZWN0L3N3aW90bGIgaGVs cGVycyBmb3IgRE1BCm5vbi1jb2hlcmVudCBkZXZpY2VzLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXN0 b3BoIEhlbGx3aWcgPGhjaEBsc3QuZGU+Ci0tLQogYXJjaC9hcm0vaW5jbHVkZS9hc20vZGV2aWNl LmggICAgICAgICAgICAgIHwgIDMgLQogYXJjaC9hcm0vaW5jbHVkZS9hc20veGVuL3BhZ2UtY29o ZXJlbnQuaCAgIHwgOTMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogYXJjaC9hcm0vbW0vZG1hLW1h cHBpbmcuYyAgICAgICAgICAgICAgICAgIHwgIDggKy0KIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20v eGVuL3BhZ2UtY29oZXJlbnQuaCB8IDc1IC0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL3hlbi9z d2lvdGxiLXhlbi5jICAgICAgICAgICAgICAgICAgfCA0OSArLS0tLS0tLS0tLS0KIGluY2x1ZGUv eGVuL2FybS9wYWdlLWNvaGVyZW50LmggICAgICAgICAgICB8IDgwICsrKysrKysrKysrKysrKysr KysKIDYgZmlsZXMgY2hhbmdlZCwgODMgaW5zZXJ0aW9ucygrKSwgMjI1IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2RldmljZS5oIGIvYXJjaC9hcm0vaW5j bHVkZS9hc20vZGV2aWNlLmgKaW5kZXggZjY5NTViNTVjNTQ0Li5jNjc1YmMwZDVhYTggMTAwNjQ0 Ci0tLSBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2RldmljZS5oCisrKyBiL2FyY2gvYXJtL2luY2x1 ZGUvYXNtL2RldmljZS5oCkBAIC0xNCw5ICsxNCw2IEBAIHN0cnVjdCBkZXZfYXJjaGRhdGEgewog I2VuZGlmCiAjaWZkZWYgQ09ORklHX0FSTV9ETUFfVVNFX0lPTU1VCiAJc3RydWN0IGRtYV9pb21t dV9tYXBwaW5nCSptYXBwaW5nOwotI2VuZGlmCi0jaWZkZWYgQ09ORklHX1hFTgotCWNvbnN0IHN0 cnVjdCBkbWFfbWFwX29wcyAqZGV2X2RtYV9vcHM7CiAjZW5kaWYKIAl1bnNpZ25lZCBpbnQgZG1h X2NvaGVyZW50OjE7CiAJdW5zaWduZWQgaW50IGRtYV9vcHNfc2V0dXA6MTsKZGlmZiAtLWdpdCBh L2FyY2gvYXJtL2luY2x1ZGUvYXNtL3hlbi9wYWdlLWNvaGVyZW50LmggYi9hcmNoL2FybS9pbmNs dWRlL2FzbS94ZW4vcGFnZS1jb2hlcmVudC5oCmluZGV4IDJjNDAzZTdjNzgyZC4uMjdlOTg0OTc3 NDAyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9pbmNsdWRlL2FzbS94ZW4vcGFnZS1jb2hlcmVudC5o CisrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3hlbi9wYWdlLWNvaGVyZW50LmgKQEAgLTEsOTUg KzEsMiBAQAogLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KLSNpZm5kZWYg X0FTTV9BUk1fWEVOX1BBR0VfQ09IRVJFTlRfSAotI2RlZmluZSBfQVNNX0FSTV9YRU5fUEFHRV9D T0hFUkVOVF9ICi0KLSNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgotI2luY2x1ZGUgPGFz bS9wYWdlLmg+CiAjaW5jbHVkZSA8eGVuL2FybS9wYWdlLWNvaGVyZW50Lmg+Ci0KLXN0YXRpYyBp bmxpbmUgY29uc3Qgc3RydWN0IGRtYV9tYXBfb3BzICp4ZW5fZ2V0X2RtYV9vcHMoc3RydWN0IGRl dmljZSAqZGV2KQotewotCWlmIChkZXYgJiYgZGV2LT5hcmNoZGF0YS5kZXZfZG1hX29wcykKLQkJ cmV0dXJuIGRldi0+YXJjaGRhdGEuZGV2X2RtYV9vcHM7Ci0JcmV0dXJuIGdldF9hcmNoX2RtYV9v cHMoTlVMTCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCAqeGVuX2FsbG9jX2NvaGVyZW50X3Bh Z2VzKHN0cnVjdCBkZXZpY2UgKmh3ZGV2LCBzaXplX3Qgc2l6ZSwKLQkJZG1hX2FkZHJfdCAqZG1h X2hhbmRsZSwgZ2ZwX3QgZmxhZ3MsIHVuc2lnbmVkIGxvbmcgYXR0cnMpCi17Ci0JcmV0dXJuIHhl bl9nZXRfZG1hX29wcyhod2RldiktPmFsbG9jKGh3ZGV2LCBzaXplLCBkbWFfaGFuZGxlLCBmbGFn cywgYXR0cnMpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgeGVuX2ZyZWVfY29oZXJlbnRfcGFn ZXMoc3RydWN0IGRldmljZSAqaHdkZXYsIHNpemVfdCBzaXplLAotCQl2b2lkICpjcHVfYWRkciwg ZG1hX2FkZHJfdCBkbWFfaGFuZGxlLCB1bnNpZ25lZCBsb25nIGF0dHJzKQotewotCXhlbl9nZXRf ZG1hX29wcyhod2RldiktPmZyZWUoaHdkZXYsIHNpemUsIGNwdV9hZGRyLCBkbWFfaGFuZGxlLCBh dHRycyk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCB4ZW5fZG1hX21hcF9wYWdlKHN0cnVjdCBk ZXZpY2UgKmh3ZGV2LCBzdHJ1Y3QgcGFnZSAqcGFnZSwKLQkgICAgIGRtYV9hZGRyX3QgZGV2X2Fk ZHIsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwKLQkgICAgIGVudW0gZG1hX2Rh dGFfZGlyZWN0aW9uIGRpciwgdW5zaWduZWQgbG9uZyBhdHRycykKLXsKLQl1bnNpZ25lZCBsb25n IHBhZ2VfcGZuID0gcGFnZV90b194ZW5fcGZuKHBhZ2UpOwotCXVuc2lnbmVkIGxvbmcgZGV2X3Bm biA9IFhFTl9QRk5fRE9XTihkZXZfYWRkcik7Ci0JdW5zaWduZWQgbG9uZyBjb21wb3VuZF9wYWdl cyA9Ci0JCSgxPDxjb21wb3VuZF9vcmRlcihwYWdlKSkgKiBYRU5fUEZOX1BFUl9QQUdFOwotCWJv b2wgbG9jYWwgPSAocGFnZV9wZm4gPD0gZGV2X3BmbikgJiYKLQkJKGRldl9wZm4gLSBwYWdlX3Bm biA8IGNvbXBvdW5kX3BhZ2VzKTsKLQotCS8qCi0JICogRG9tMCBpcyBtYXBwZWQgMToxLCB3aGls ZSB0aGUgTGludXggcGFnZSBjYW4gc3BhbiBhY3Jvc3MKLQkgKiBtdWx0aXBsZSBYZW4gcGFnZXMs IGl0J3Mgbm90IHBvc3NpYmxlIGZvciBpdCB0byBjb250YWluIGEKLQkgKiBtaXggb2YgbG9jYWwg YW5kIGZvcmVpZ24gWGVuIHBhZ2VzLiBTbyBpZiB0aGUgZmlyc3QgeGVuX3BmbgotCSAqID09IG1m biB0aGUgcGFnZSBpcyBsb2NhbCBvdGhlcndpc2UgaXQncyBhIGZvcmVpZ24gcGFnZQotCSAqIGdy YW50LW1hcHBlZCBpbiBkb20wLiBJZiB0aGUgcGFnZSBpcyBsb2NhbCB3ZSBjYW4gc2FmZWx5Ci0J ICogY2FsbCB0aGUgbmF0aXZlIGRtYV9vcHMgZnVuY3Rpb24sIG90aGVyd2lzZSB3ZSBjYWxsIHRo ZSB4ZW4KLQkgKiBzcGVjaWZpYyBmdW5jdGlvbi4KLQkgKi8KLQlpZiAobG9jYWwpCi0JCXhlbl9n ZXRfZG1hX29wcyhod2RldiktPm1hcF9wYWdlKGh3ZGV2LCBwYWdlLCBvZmZzZXQsIHNpemUsIGRp ciwgYXR0cnMpOwotCWVsc2UKLQkJX194ZW5fZG1hX21hcF9wYWdlKGh3ZGV2LCBwYWdlLCBkZXZf YWRkciwgb2Zmc2V0LCBzaXplLCBkaXIsIGF0dHJzKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lk IHhlbl9kbWFfdW5tYXBfcGFnZShzdHJ1Y3QgZGV2aWNlICpod2RldiwgZG1hX2FkZHJfdCBoYW5k bGUsCi0JCXNpemVfdCBzaXplLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIsIHVuc2lnbmVk IGxvbmcgYXR0cnMpCi17Ci0JdW5zaWduZWQgbG9uZyBwZm4gPSBQRk5fRE9XTihoYW5kbGUpOwot CS8qCi0JICogRG9tMCBpcyBtYXBwZWQgMToxLCB3aGlsZSB0aGUgTGludXggcGFnZSBjYW4gYmUg c3Bhbm5lZCBhY2Nyb3NzCi0JICogbXVsdGlwbGUgWGVuIHBhZ2UsIGl0J3Mgbm90IHBvc3NpYmxl IHRvIGhhdmUgYSBtaXggb2YgbG9jYWwgYW5kCi0JICogZm9yZWlnbiBYZW4gcGFnZS4gRG9tMCBp cyBtYXBwZWQgMToxLCBzbyBjYWxsaW5nIHBmbl92YWxpZCBvbiBhCi0JICogZm9yZWlnbiBtZm4g d2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlLiBJZiB0aGUgcGFnZSBpcyBsb2NhbCB3ZSBjYW4KLQkg KiBzYWZlbHkgY2FsbCB0aGUgbmF0aXZlIGRtYV9vcHMgZnVuY3Rpb24sIG90aGVyd2lzZSB3ZSBj YWxsIHRoZSB4ZW4KLQkgKiBzcGVjaWZpYyBmdW5jdGlvbi4KLQkgKi8KLQlpZiAocGZuX3ZhbGlk KHBmbikpIHsKLQkJaWYgKHhlbl9nZXRfZG1hX29wcyhod2RldiktPnVubWFwX3BhZ2UpCi0JCQl4 ZW5fZ2V0X2RtYV9vcHMoaHdkZXYpLT51bm1hcF9wYWdlKGh3ZGV2LCBoYW5kbGUsIHNpemUsIGRp ciwgYXR0cnMpOwotCX0gZWxzZQotCQlfX3hlbl9kbWFfdW5tYXBfcGFnZShod2RldiwgaGFuZGxl LCBzaXplLCBkaXIsIGF0dHJzKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIHhlbl9kbWFfc3lu Y19zaW5nbGVfZm9yX2NwdShzdHJ1Y3QgZGV2aWNlICpod2RldiwKLQkJZG1hX2FkZHJfdCBoYW5k bGUsIHNpemVfdCBzaXplLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCi17Ci0JdW5zaWdu ZWQgbG9uZyBwZm4gPSBQRk5fRE9XTihoYW5kbGUpOwotCWlmIChwZm5fdmFsaWQocGZuKSkgewot CQlpZiAoeGVuX2dldF9kbWFfb3BzKGh3ZGV2KS0+c3luY19zaW5nbGVfZm9yX2NwdSkKLQkJCXhl bl9nZXRfZG1hX29wcyhod2RldiktPnN5bmNfc2luZ2xlX2Zvcl9jcHUoaHdkZXYsIGhhbmRsZSwg c2l6ZSwgZGlyKTsKLQl9IGVsc2UKLQkJX194ZW5fZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUoaHdk ZXYsIGhhbmRsZSwgc2l6ZSwgZGlyKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIHhlbl9kbWFf c3luY19zaW5nbGVfZm9yX2RldmljZShzdHJ1Y3QgZGV2aWNlICpod2RldiwKLQkJZG1hX2FkZHJf dCBoYW5kbGUsIHNpemVfdCBzaXplLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCi17Ci0J dW5zaWduZWQgbG9uZyBwZm4gPSBQRk5fRE9XTihoYW5kbGUpOwotCWlmIChwZm5fdmFsaWQocGZu KSkgewotCQlpZiAoeGVuX2dldF9kbWFfb3BzKGh3ZGV2KS0+c3luY19zaW5nbGVfZm9yX2Rldmlj ZSkKLQkJCXhlbl9nZXRfZG1hX29wcyhod2RldiktPnN5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoaHdk ZXYsIGhhbmRsZSwgc2l6ZSwgZGlyKTsKLQl9IGVsc2UKLQkJX194ZW5fZG1hX3N5bmNfc2luZ2xl X2Zvcl9kZXZpY2UoaHdkZXYsIGhhbmRsZSwgc2l6ZSwgZGlyKTsKLX0KLQotI2VuZGlmIC8qIF9B U01fQVJNX1hFTl9QQUdFX0NPSEVSRU5UX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL2Rt YS1tYXBwaW5nLmMgYi9hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jCmluZGV4IGQ0MjU1N2VlNjlj Mi4uNzM4MDk3Mzk2NDQ1IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jCisr KyBiL2FyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMKQEAgLTExMzIsMTAgKzExMzIsNiBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGRtYV9tYXBfb3BzICphcm1fZ2V0X2RtYV9tYXBfb3BzKGJvb2wgY29o ZXJlbnQpCiAJICogMzItYml0IERNQS4KIAkgKiBVc2UgdGhlIGdlbmVyaWMgZG1hLWRpcmVjdCAv IHN3aW90bGIgb3BzIGNvZGUgaW4gdGhhdCBjYXNlLCBhcyB0aGF0CiAJICogaGFuZGxlcyBib3Vu Y2UgYnVmZmVyaW5nIGZvciB1cy4KLQkgKgotCSAqIE5vdGU6IHRoaXMgY2hlY2tzIENPTkZJR19B Uk1fTFBBRSBpbnN0ZWFkIG9mIENPTkZJR19TV0lPVExCIGFzIHRoZQotCSAqIGxhdHRlciBpcyBh bHNvIHNlbGVjdGVkIGJ5IHRoZSBYZW4gY29kZSwgYnV0IHRoYXQgY29kZSBmb3Igbm93IHJlbGll cwotCSAqIG9uIG5vbi1OVUxMIGRldl9kbWFfb3BzLiAgVG8gYmUgY2xlYW5lZCB1cCBsYXRlci4K IAkgKi8KIAlpZiAoSVNfRU5BQkxFRChDT05GSUdfQVJNX0xQQUUpKQogCQlyZXR1cm4gTlVMTDsK QEAgLTIzNjMsMTAgKzIzNTksOCBAQCB2b2lkIGFyY2hfc2V0dXBfZG1hX29wcyhzdHJ1Y3QgZGV2 aWNlICpkZXYsIHU2NCBkbWFfYmFzZSwgdTY0IHNpemUsCiAJc2V0X2RtYV9vcHMoZGV2LCBkbWFf b3BzKTsKIAogI2lmZGVmIENPTkZJR19YRU4KLQlpZiAoeGVuX2luaXRpYWxfZG9tYWluKCkpIHsK LQkJZGV2LT5hcmNoZGF0YS5kZXZfZG1hX29wcyA9IGRldi0+ZG1hX29wczsKKwlpZiAoeGVuX2lu aXRpYWxfZG9tYWluKCkpCiAJCWRldi0+ZG1hX29wcyA9IHhlbl9kbWFfb3BzOwotCX0KICNlbmRp ZgogCWRldi0+YXJjaGRhdGEuZG1hX29wc19zZXR1cCA9IHRydWU7CiB9CmRpZmYgLS1naXQgYS9h cmNoL2FybTY0L2luY2x1ZGUvYXNtL3hlbi9wYWdlLWNvaGVyZW50LmggYi9hcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL3hlbi9wYWdlLWNvaGVyZW50LmgKaW5kZXggZDg4ZTU2YjkwYjkzLi4yN2U5ODQ5 Nzc0MDIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20veGVuL3BhZ2UtY29oZXJl bnQuaAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3hlbi9wYWdlLWNvaGVyZW50LmgKQEAg LTEsNzcgKzEsMiBAQAogLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KLSNp Zm5kZWYgX0FTTV9BUk02NF9YRU5fUEFHRV9DT0hFUkVOVF9ICi0jZGVmaW5lIF9BU01fQVJNNjRf WEVOX1BBR0VfQ09IRVJFTlRfSAotCi0jaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KLSNp bmNsdWRlIDxhc20vcGFnZS5oPgogI2luY2x1ZGUgPHhlbi9hcm0vcGFnZS1jb2hlcmVudC5oPgot Ci1zdGF0aWMgaW5saW5lIHZvaWQgKnhlbl9hbGxvY19jb2hlcmVudF9wYWdlcyhzdHJ1Y3QgZGV2 aWNlICpod2Rldiwgc2l6ZV90IHNpemUsCi0JCWRtYV9hZGRyX3QgKmRtYV9oYW5kbGUsIGdmcF90 IGZsYWdzLCB1bnNpZ25lZCBsb25nIGF0dHJzKQotewotCXJldHVybiBkbWFfZGlyZWN0X2FsbG9j KGh3ZGV2LCBzaXplLCBkbWFfaGFuZGxlLCBmbGFncywgYXR0cnMpOwotfQotCi1zdGF0aWMgaW5s aW5lIHZvaWQgeGVuX2ZyZWVfY29oZXJlbnRfcGFnZXMoc3RydWN0IGRldmljZSAqaHdkZXYsIHNp emVfdCBzaXplLAotCQl2b2lkICpjcHVfYWRkciwgZG1hX2FkZHJfdCBkbWFfaGFuZGxlLCB1bnNp Z25lZCBsb25nIGF0dHJzKQotewotCWRtYV9kaXJlY3RfZnJlZShod2Rldiwgc2l6ZSwgY3B1X2Fk ZHIsIGRtYV9oYW5kbGUsIGF0dHJzKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIHhlbl9kbWFf c3luY19zaW5nbGVfZm9yX2NwdShzdHJ1Y3QgZGV2aWNlICpod2RldiwKLQkJZG1hX2FkZHJfdCBo YW5kbGUsIHNpemVfdCBzaXplLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCi17Ci0JdW5z aWduZWQgbG9uZyBwZm4gPSBQRk5fRE9XTihoYW5kbGUpOwotCi0JaWYgKHBmbl92YWxpZChwZm4p KQotCQlkbWFfZGlyZWN0X3N5bmNfc2luZ2xlX2Zvcl9jcHUoaHdkZXYsIGhhbmRsZSwgc2l6ZSwg ZGlyKTsKLQllbHNlCi0JCV9feGVuX2RtYV9zeW5jX3NpbmdsZV9mb3JfY3B1KGh3ZGV2LCBoYW5k bGUsIHNpemUsIGRpcik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCB4ZW5fZG1hX3N5bmNfc2lu Z2xlX2Zvcl9kZXZpY2Uoc3RydWN0IGRldmljZSAqaHdkZXYsCi0JCWRtYV9hZGRyX3QgaGFuZGxl LCBzaXplX3Qgc2l6ZSwgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQotewotCXVuc2lnbmVk IGxvbmcgcGZuID0gUEZOX0RPV04oaGFuZGxlKTsKLQlpZiAocGZuX3ZhbGlkKHBmbikpCi0JCWRt YV9kaXJlY3Rfc3luY19zaW5nbGVfZm9yX2RldmljZShod2RldiwgaGFuZGxlLCBzaXplLCBkaXIp OwotCWVsc2UKLQkJX194ZW5fZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoaHdkZXYsIGhhbmRs ZSwgc2l6ZSwgZGlyKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIHhlbl9kbWFfbWFwX3BhZ2Uo c3RydWN0IGRldmljZSAqaHdkZXYsIHN0cnVjdCBwYWdlICpwYWdlLAotCSAgICAgZG1hX2FkZHJf dCBkZXZfYWRkciwgdW5zaWduZWQgbG9uZyBvZmZzZXQsIHNpemVfdCBzaXplLAotCSAgICAgZW51 bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyLCB1bnNpZ25lZCBsb25nIGF0dHJzKQotewotCXVuc2ln bmVkIGxvbmcgcGFnZV9wZm4gPSBwYWdlX3RvX3hlbl9wZm4ocGFnZSk7Ci0JdW5zaWduZWQgbG9u ZyBkZXZfcGZuID0gWEVOX1BGTl9ET1dOKGRldl9hZGRyKTsKLQl1bnNpZ25lZCBsb25nIGNvbXBv dW5kX3BhZ2VzID0KLQkJKDE8PGNvbXBvdW5kX29yZGVyKHBhZ2UpKSAqIFhFTl9QRk5fUEVSX1BB R0U7Ci0JYm9vbCBsb2NhbCA9IChwYWdlX3BmbiA8PSBkZXZfcGZuKSAmJgotCQkoZGV2X3BmbiAt IHBhZ2VfcGZuIDwgY29tcG91bmRfcGFnZXMpOwotCi0JaWYgKGxvY2FsKQotCQlkbWFfZGlyZWN0 X21hcF9wYWdlKGh3ZGV2LCBwYWdlLCBvZmZzZXQsIHNpemUsIGRpciwgYXR0cnMpOwotCWVsc2UK LQkJX194ZW5fZG1hX21hcF9wYWdlKGh3ZGV2LCBwYWdlLCBkZXZfYWRkciwgb2Zmc2V0LCBzaXpl LCBkaXIsIGF0dHJzKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIHhlbl9kbWFfdW5tYXBfcGFn ZShzdHJ1Y3QgZGV2aWNlICpod2RldiwgZG1hX2FkZHJfdCBoYW5kbGUsCi0JCXNpemVfdCBzaXpl LCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIsIHVuc2lnbmVkIGxvbmcgYXR0cnMpCi17Ci0J dW5zaWduZWQgbG9uZyBwZm4gPSBQRk5fRE9XTihoYW5kbGUpOwotCS8qCi0JICogRG9tMCBpcyBt YXBwZWQgMToxLCB3aGlsZSB0aGUgTGludXggcGFnZSBjYW4gYmUgc3Bhbm5lZCBhY2Nyb3NzCi0J ICogbXVsdGlwbGUgWGVuIHBhZ2UsIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGhhdmUgYSBtaXggb2Yg bG9jYWwgYW5kCi0JICogZm9yZWlnbiBYZW4gcGFnZS4gRG9tMCBpcyBtYXBwZWQgMToxLCBzbyBj YWxsaW5nIHBmbl92YWxpZCBvbiBhCi0JICogZm9yZWlnbiBtZm4gd2lsbCBhbHdheXMgcmV0dXJu IGZhbHNlLiBJZiB0aGUgcGFnZSBpcyBsb2NhbCB3ZSBjYW4KLQkgKiBzYWZlbHkgY2FsbCB0aGUg bmF0aXZlIGRtYV9vcHMgZnVuY3Rpb24sIG90aGVyd2lzZSB3ZSBjYWxsIHRoZSB4ZW4KLQkgKiBz cGVjaWZpYyBmdW5jdGlvbi4KLQkgKi8KLQlpZiAocGZuX3ZhbGlkKHBmbikpCi0JCWRtYV9kaXJl Y3RfdW5tYXBfcGFnZShod2RldiwgaGFuZGxlLCBzaXplLCBkaXIsIGF0dHJzKTsKLQllbHNlCi0J CV9feGVuX2RtYV91bm1hcF9wYWdlKGh3ZGV2LCBoYW5kbGUsIHNpemUsIGRpciwgYXR0cnMpOwot fQotCi0jZW5kaWYgLyogX0FTTV9BUk02NF9YRU5fUEFHRV9DT0hFUkVOVF9IICovCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3hlbi9zd2lvdGxiLXhlbi5jIGIvZHJpdmVycy94ZW4vc3dpb3RsYi14ZW4u YwppbmRleCBhZTFkZjQ5NmJmMzguLmI4ODA4Njc3YWUxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy94 ZW4vc3dpb3RsYi14ZW4uYworKysgYi9kcml2ZXJzL3hlbi9zd2lvdGxiLXhlbi5jCkBAIC01NDcs NTEgKzU0Nyw2IEBAIHhlbl9zd2lvdGxiX2RtYV9zdXBwb3J0ZWQoc3RydWN0IGRldmljZSAqaHdk ZXYsIHU2NCBtYXNrKQogCXJldHVybiB4ZW5fdmlydF90b19idXMoeGVuX2lvX3RsYl9lbmQgLSAx KSA8PSBtYXNrOwogfQogCi0vKgotICogQ3JlYXRlIHVzZXJzcGFjZSBtYXBwaW5nIGZvciB0aGUg RE1BLWNvaGVyZW50IG1lbW9yeS4KLSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB3 aXRoIHRoZSBwYWdlcyBmcm9tIHRoZSBjdXJyZW50IGRvbWFpbiBvbmx5LAotICogcGFzc2luZyBw YWdlcyBtYXBwZWQgZnJvbSBvdGhlciBkb21haW5zIHdvdWxkIGxlYWQgdG8gbWVtb3J5IGNvcnJ1 cHRpb24uCi0gKi8KLXN0YXRpYyBpbnQKLXhlbl9zd2lvdGxiX2RtYV9tbWFwKHN0cnVjdCBkZXZp Y2UgKmRldiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCi0JCSAgICAgdm9pZCAqY3B1X2Fk ZHIsIGRtYV9hZGRyX3QgZG1hX2FkZHIsIHNpemVfdCBzaXplLAotCQkgICAgIHVuc2lnbmVkIGxv bmcgYXR0cnMpCi17Ci0jaWZkZWYgQ09ORklHX0FSTQotCWlmICh4ZW5fZ2V0X2RtYV9vcHMoZGV2 KS0+bW1hcCkKLQkJcmV0dXJuIHhlbl9nZXRfZG1hX29wcyhkZXYpLT5tbWFwKGRldiwgdm1hLCBj cHVfYWRkciwKLQkJCQkJCSAgICBkbWFfYWRkciwgc2l6ZSwgYXR0cnMpOwotI2VuZGlmCi0JcmV0 dXJuIGRtYV9jb21tb25fbW1hcChkZXYsIHZtYSwgY3B1X2FkZHIsIGRtYV9hZGRyLCBzaXplLCBh dHRycyk7Ci19Ci0KLS8qCi0gKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0 aGUgcGFnZXMgZnJvbSB0aGUgY3VycmVudCBkb21haW4gb25seSwKLSAqIHBhc3NpbmcgcGFnZXMg bWFwcGVkIGZyb20gb3RoZXIgZG9tYWlucyB3b3VsZCBsZWFkIHRvIG1lbW9yeSBjb3JydXB0aW9u LgotICovCi1zdGF0aWMgaW50Ci14ZW5fc3dpb3RsYl9nZXRfc2d0YWJsZShzdHJ1Y3QgZGV2aWNl ICpkZXYsIHN0cnVjdCBzZ190YWJsZSAqc2d0LAotCQkJdm9pZCAqY3B1X2FkZHIsIGRtYV9hZGRy X3QgaGFuZGxlLCBzaXplX3Qgc2l6ZSwKLQkJCXVuc2lnbmVkIGxvbmcgYXR0cnMpCi17Ci0jaWZk ZWYgQ09ORklHX0FSTQotCWlmICh4ZW5fZ2V0X2RtYV9vcHMoZGV2KS0+Z2V0X3NndGFibGUpIHsK LSNpZiAwCi0JLyoKLQkgKiBUaGlzIGNoZWNrIHZlcmlmaWVzIHRoYXQgdGhlIHBhZ2UgYmVsb25n cyB0byB0aGUgY3VycmVudCBkb21haW4gYW5kCi0JICogaXMgbm90IG9uZSBtYXBwZWQgZnJvbSBh bm90aGVyIGRvbWFpbi4KLQkgKiBUaGlzIGNoZWNrIGlzIGZvciBkZWJ1ZyBvbmx5LCBhbmQgc2hv dWxkIG5vdCBnbyB0byBwcm9kdWN0aW9uIGJ1aWxkCi0JICovCi0JCXVuc2lnbmVkIGxvbmcgYmZu ID0gUEhZU19QRk4oZG1hX3RvX3BoeXMoZGV2LCBoYW5kbGUpKTsKLQkJQlVHX09OICghcGFnZV9p c19yYW0oYmZuKSk7Ci0jZW5kaWYKLQkJcmV0dXJuIHhlbl9nZXRfZG1hX29wcyhkZXYpLT5nZXRf c2d0YWJsZShkZXYsIHNndCwgY3B1X2FkZHIsCi0JCQkJCQkJICAgaGFuZGxlLCBzaXplLCBhdHRy cyk7Ci0JfQotI2VuZGlmCi0JcmV0dXJuIGRtYV9jb21tb25fZ2V0X3NndGFibGUoZGV2LCBzZ3Qs IGNwdV9hZGRyLCBoYW5kbGUsIHNpemUsIGF0dHJzKTsKLX0KLQogY29uc3Qgc3RydWN0IGRtYV9t YXBfb3BzIHhlbl9zd2lvdGxiX2RtYV9vcHMgPSB7CiAJLmFsbG9jID0geGVuX3N3aW90bGJfYWxs b2NfY29oZXJlbnQsCiAJLmZyZWUgPSB4ZW5fc3dpb3RsYl9mcmVlX2NvaGVyZW50LApAQCAtNjA0 LDYgKzU1OSw2IEBAIGNvbnN0IHN0cnVjdCBkbWFfbWFwX29wcyB4ZW5fc3dpb3RsYl9kbWFfb3Bz ID0gewogCS5tYXBfcGFnZSA9IHhlbl9zd2lvdGxiX21hcF9wYWdlLAogCS51bm1hcF9wYWdlID0g eGVuX3N3aW90bGJfdW5tYXBfcGFnZSwKIAkuZG1hX3N1cHBvcnRlZCA9IHhlbl9zd2lvdGxiX2Rt YV9zdXBwb3J0ZWQsCi0JLm1tYXAgPSB4ZW5fc3dpb3RsYl9kbWFfbW1hcCwKLQkuZ2V0X3NndGFi bGUgPSB4ZW5fc3dpb3RsYl9nZXRfc2d0YWJsZSwKKwkubW1hcCA9IGRtYV9jb21tb25fbW1hcCwK KwkuZ2V0X3NndGFibGUgPSBkbWFfY29tbW9uX2dldF9zZ3RhYmxlLAogfTsKZGlmZiAtLWdpdCBh L2luY2x1ZGUveGVuL2FybS9wYWdlLWNvaGVyZW50LmggYi9pbmNsdWRlL3hlbi9hcm0vcGFnZS1j b2hlcmVudC5oCmluZGV4IDJjYTkxNjRhNzliZi4uYTg0MGQ2OTQ5YTg3IDEwMDY0NAotLS0gYS9p bmNsdWRlL3hlbi9hcm0vcGFnZS1jb2hlcmVudC5oCisrKyBiL2luY2x1ZGUveGVuL2FybS9wYWdl LWNvaGVyZW50LmgKQEAgLTIsNiArMiw5IEBACiAjaWZuZGVmIF9YRU5fQVJNX1BBR0VfQ09IRVJF TlRfSAogI2RlZmluZSBfWEVOX0FSTV9QQUdFX0NPSEVSRU5UX0gKIAorI2luY2x1ZGUgPGxpbnV4 L2RtYS1tYXBwaW5nLmg+CisjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KKwogdm9pZCBfX3hlbl9kbWFf bWFwX3BhZ2Uoc3RydWN0IGRldmljZSAqaHdkZXYsIHN0cnVjdCBwYWdlICpwYWdlLAogCSAgICAg ZG1hX2FkZHJfdCBkZXZfYWRkciwgdW5zaWduZWQgbG9uZyBvZmZzZXQsIHNpemVfdCBzaXplLAog CSAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyLCB1bnNpZ25lZCBsb25nIGF0dHJzKTsK QEAgLTEzLDQgKzE2LDgxIEBAIHZvaWQgX194ZW5fZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUoc3Ry dWN0IGRldmljZSAqaHdkZXYsCiB2b2lkIF9feGVuX2RtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNl KHN0cnVjdCBkZXZpY2UgKmh3ZGV2LAogCQlkbWFfYWRkcl90IGhhbmRsZSwgc2l6ZV90IHNpemUs IGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcik7CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCAqeGVu X2FsbG9jX2NvaGVyZW50X3BhZ2VzKHN0cnVjdCBkZXZpY2UgKmh3ZGV2LCBzaXplX3Qgc2l6ZSwK KwkJZG1hX2FkZHJfdCAqZG1hX2hhbmRsZSwgZ2ZwX3QgZmxhZ3MsIHVuc2lnbmVkIGxvbmcgYXR0 cnMpCit7CisJcmV0dXJuIGRtYV9kaXJlY3RfYWxsb2MoaHdkZXYsIHNpemUsIGRtYV9oYW5kbGUs IGZsYWdzLCBhdHRycyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB4ZW5fZnJlZV9jb2hlcmVu dF9wYWdlcyhzdHJ1Y3QgZGV2aWNlICpod2Rldiwgc2l6ZV90IHNpemUsCisJCXZvaWQgKmNwdV9h ZGRyLCBkbWFfYWRkcl90IGRtYV9oYW5kbGUsIHVuc2lnbmVkIGxvbmcgYXR0cnMpCit7CisJZG1h X2RpcmVjdF9mcmVlKGh3ZGV2LCBzaXplLCBjcHVfYWRkciwgZG1hX2hhbmRsZSwgYXR0cnMpOwor fQorCitzdGF0aWMgaW5saW5lIHZvaWQgeGVuX2RtYV9zeW5jX3NpbmdsZV9mb3JfY3B1KHN0cnVj dCBkZXZpY2UgKmh3ZGV2LAorCQlkbWFfYWRkcl90IGhhbmRsZSwgc2l6ZV90IHNpemUsIGVudW0g ZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKK3sKKwl1bnNpZ25lZCBsb25nIHBmbiA9IFBGTl9ET1dO KGhhbmRsZSk7CisKKwlpZiAocGZuX3ZhbGlkKHBmbikpCisJCWRtYV9kaXJlY3Rfc3luY19zaW5n bGVfZm9yX2NwdShod2RldiwgaGFuZGxlLCBzaXplLCBkaXIpOworCWVsc2UKKwkJX194ZW5fZG1h X3N5bmNfc2luZ2xlX2Zvcl9jcHUoaHdkZXYsIGhhbmRsZSwgc2l6ZSwgZGlyKTsKK30KKworc3Rh dGljIGlubGluZSB2b2lkIHhlbl9kbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShzdHJ1Y3QgZGV2 aWNlICpod2RldiwKKwkJZG1hX2FkZHJfdCBoYW5kbGUsIHNpemVfdCBzaXplLCBlbnVtIGRtYV9k YXRhX2RpcmVjdGlvbiBkaXIpCit7CisJdW5zaWduZWQgbG9uZyBwZm4gPSBQRk5fRE9XTihoYW5k bGUpOworCWlmIChwZm5fdmFsaWQocGZuKSkKKwkJZG1hX2RpcmVjdF9zeW5jX3NpbmdsZV9mb3Jf ZGV2aWNlKGh3ZGV2LCBoYW5kbGUsIHNpemUsIGRpcik7CisJZWxzZQorCQlfX3hlbl9kbWFfc3lu Y19zaW5nbGVfZm9yX2RldmljZShod2RldiwgaGFuZGxlLCBzaXplLCBkaXIpOworfQorCitzdGF0 aWMgaW5saW5lIHZvaWQgeGVuX2RtYV9tYXBfcGFnZShzdHJ1Y3QgZGV2aWNlICpod2Rldiwgc3Ry dWN0IHBhZ2UgKnBhZ2UsCisJICAgICBkbWFfYWRkcl90IGRldl9hZGRyLCB1bnNpZ25lZCBsb25n IG9mZnNldCwgc2l6ZV90IHNpemUsCisJICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIs IHVuc2lnbmVkIGxvbmcgYXR0cnMpCit7CisJdW5zaWduZWQgbG9uZyBwYWdlX3BmbiA9IHBhZ2Vf dG9feGVuX3BmbihwYWdlKTsKKwl1bnNpZ25lZCBsb25nIGRldl9wZm4gPSBYRU5fUEZOX0RPV04o ZGV2X2FkZHIpOworCXVuc2lnbmVkIGxvbmcgY29tcG91bmRfcGFnZXMgPQorCQkoMTw8Y29tcG91 bmRfb3JkZXIocGFnZSkpICogWEVOX1BGTl9QRVJfUEFHRTsKKwlib29sIGxvY2FsID0gKHBhZ2Vf cGZuIDw9IGRldl9wZm4pICYmCisJCShkZXZfcGZuIC0gcGFnZV9wZm4gPCBjb21wb3VuZF9wYWdl cyk7CisKKwkvKgorCSAqIERvbTAgaXMgbWFwcGVkIDE6MSwgd2hpbGUgdGhlIExpbnV4IHBhZ2Ug Y2FuIHNwYW4gYWNyb3NzCisJICogbXVsdGlwbGUgWGVuIHBhZ2VzLCBpdCdzIG5vdCBwb3NzaWJs ZSBmb3IgaXQgdG8gY29udGFpbiBhCisJICogbWl4IG9mIGxvY2FsIGFuZCBmb3JlaWduIFhlbiBw YWdlcy4gU28gaWYgdGhlIGZpcnN0IHhlbl9wZm4KKwkgKiA9PSBtZm4gdGhlIHBhZ2UgaXMgbG9j YWwgb3RoZXJ3aXNlIGl0J3MgYSBmb3JlaWduIHBhZ2UKKwkgKiBncmFudC1tYXBwZWQgaW4gZG9t MC4gSWYgdGhlIHBhZ2UgaXMgbG9jYWwgd2UgY2FuIHNhZmVseQorCSAqIGNhbGwgdGhlIG5hdGl2 ZSBkbWFfb3BzIGZ1bmN0aW9uLCBvdGhlcndpc2Ugd2UgY2FsbCB0aGUgeGVuCisJICogc3BlY2lm aWMgZnVuY3Rpb24uCisJICovCisJaWYgKGxvY2FsKQorCQlkbWFfZGlyZWN0X21hcF9wYWdlKGh3 ZGV2LCBwYWdlLCBvZmZzZXQsIHNpemUsIGRpciwgYXR0cnMpOworCWVsc2UKKwkJX194ZW5fZG1h X21hcF9wYWdlKGh3ZGV2LCBwYWdlLCBkZXZfYWRkciwgb2Zmc2V0LCBzaXplLCBkaXIsIGF0dHJz KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHhlbl9kbWFfdW5tYXBfcGFnZShzdHJ1Y3QgZGV2 aWNlICpod2RldiwgZG1hX2FkZHJfdCBoYW5kbGUsCisJCXNpemVfdCBzaXplLCBlbnVtIGRtYV9k YXRhX2RpcmVjdGlvbiBkaXIsIHVuc2lnbmVkIGxvbmcgYXR0cnMpCit7CisJdW5zaWduZWQgbG9u ZyBwZm4gPSBQRk5fRE9XTihoYW5kbGUpOworCS8qCisJICogRG9tMCBpcyBtYXBwZWQgMToxLCB3 aGlsZSB0aGUgTGludXggcGFnZSBjYW4gYmUgc3Bhbm5lZCBhY2Nyb3NzCisJICogbXVsdGlwbGUg WGVuIHBhZ2UsIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGhhdmUgYSBtaXggb2YgbG9jYWwgYW5kCisJ ICogZm9yZWlnbiBYZW4gcGFnZS4gRG9tMCBpcyBtYXBwZWQgMToxLCBzbyBjYWxsaW5nIHBmbl92 YWxpZCBvbiBhCisJICogZm9yZWlnbiBtZm4gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlLiBJZiB0 aGUgcGFnZSBpcyBsb2NhbCB3ZSBjYW4KKwkgKiBzYWZlbHkgY2FsbCB0aGUgbmF0aXZlIGRtYV9v cHMgZnVuY3Rpb24sIG90aGVyd2lzZSB3ZSBjYWxsIHRoZSB4ZW4KKwkgKiBzcGVjaWZpYyBmdW5j dGlvbi4KKwkgKi8KKwlpZiAocGZuX3ZhbGlkKHBmbikpCisJCWRtYV9kaXJlY3RfdW5tYXBfcGFn ZShod2RldiwgaGFuZGxlLCBzaXplLCBkaXIsIGF0dHJzKTsKKwllbHNlCisJCV9feGVuX2RtYV91 bm1hcF9wYWdlKGh3ZGV2LCBoYW5kbGUsIHNpemUsIGRpciwgYXR0cnMpOworfQorCiAjZW5kaWYg LyogX1hFTl9BUk1fUEFHRV9DT0hFUkVOVF9IICovCi0tIAoyLjIwLjEKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu b3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs