From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sameer Goel Subject: [RFC v4 8/8] drivers/passthrough/arm: Refactor code for arm smmu drivers Date: Mon, 18 Dec 2017 20:17:03 -0700 Message-ID: <20171219031703.23420-9-sameer.goel@linaro.org> References: <20171219031703.23420-1-sameer.goel@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eR8PI-0006eU-Gv for xen-devel@lists.xenproject.org; Tue, 19 Dec 2017 03:17:28 +0000 Received: by mail-pl0-x242.google.com with SMTP id o2so6148042plk.12 for ; Mon, 18 Dec 2017 19:17:26 -0800 (PST) In-Reply-To: <20171219031703.23420-1-sameer.goel@linaro.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, julien.grall@arm.com, mjaggi@caviumnetworks.com Cc: sstabellini@kernel.org, shankerd@codeaurora.org, andre.przywara@linaro.org, Sameer Goel List-Id: xen-devel@lists.xenproject.org UHVsbCBjb21tb24gZGVmaW5lcyBmb3IgU01NVSBkcml2ZXJzIGluIGEgbG9jYWwgaGVhZGVyLgoK U2lnbmVkLW9mZi1ieTogU2FtZWVyIEdvZWwgPHNhbWVlci5nb2VsQGxpbmFyby5vcmc+Ci0tLQog eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL2FybV9zbW11LmggfCAxMTMgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS12 My5jICB8ICA5NiArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC9hcm0vc21tdS5jICAgICB8IDEwNCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIDMgZmlsZXMgY2hhbmdlZCwgMTIxIGluc2VydGlvbnMoKyksIDE5MiBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vYXJtX3NtbXUu aAoKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9hcm1fc21tdS5oIGIv eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL2FybV9zbW11LmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uNzBmOTdlN2Q1MAotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9hcm1fc21tdS5oCkBAIC0wLDAgKzEsMTEzIEBACisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKiBhcm1fc21tdS5oCisgKgorICogQ29tbW9uIGNvbXBhdGli aWxpdHkgZGVmaW5lcyBhbmQgZGF0YV9zdHJ1Y3R1cmVzIGZvciBwb3J0aW5nIGFybSBzbW11Cisg KiBkcml2ZXJzIGZyb20gTGludXguCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE3IExpbmFybyBM aW1pdGVkCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgor ICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpZm5kZWYg X19BUk1fU01NVV9IX18KKyNkZWZpbmUgX19BUk1fU01NVV9IX18KKworLyogSGVscGVycyB0byBn ZXQgZGV2aWNlIE1NSU8gYW5kIElSUXMgKi8KK3N0cnVjdCByZXNvdXJjZSB7CisgICAgdTY0IGFk ZHI7CisgICAgdTY0IHNpemU7CisgICAgdW5zaWduZWQgaW50IHR5cGU7Cit9OworCisjZGVmaW5l IHJlc291cmNlX3NpemUocmVzKSAoKHJlcyktPnNpemUpCisKKyNkZWZpbmUgcGxhdGZvcm1fZGV2 aWNlIGRldmljZQorCisjZGVmaW5lIElPUkVTT1VSQ0VfTUVNIDAKKyNkZWZpbmUgSU9SRVNPVVJD RV9JUlEgMQorCisvKiBTdHViIG91dCBETUEgZG9tYWluIHJlbGF0ZWQgZnVuY3Rpb25zICovCisj ZGVmaW5lIGlvbW11X2dldF9kbWFfY29va2llKGRvbSkgMAorI2RlZmluZSBpb21tdV9wdXRfZG1h X2Nvb2tpZShkb20pCisKKyNkZWZpbmUgVkFfQklUUyAgICAgMCAgIC8qIE9ubHkgdXNlZCBmb3Ig Y29uZmlndXJpbmcgc3RhZ2UtMSBpbnB1dCBzaXplICovCisKKyNkZWZpbmUgTU9EVUxFX0RFVklD RV9UQUJMRSh0eXBlLCBuYW1lKQorI2RlZmluZSBtb2R1bGVfcGFyYW1fbmFtZWQobmFtZSwgdmFs dWUsIHR5cGUsIHBlcm0pCisjZGVmaW5lIE1PRFVMRV9QQVJNX0RFU0MoX3Bhcm0sIGRlc2MpCisK K3N0YXRpYyB2b2lkIF9faW9tZW0gKmRldm1faW9yZW1hcF9yZXNvdXJjZShzdHJ1Y3QgZGV2aWNl ICpkZXYsCisgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByZXNvdXJjZSAqcmVzKQorewor ICAgIHZvaWQgX19pb21lbSAqcHRyOworCisgICAgaWYgKCAhcmVzIHx8IHJlcy0+dHlwZSAhPSBJ T1JFU09VUkNFX01FTSApCisgICAgeworICAgICAgICBkZXZfZXJyKGRldiwgIkludmFsaWQgcmVz b3VyY2VcbiIpOworICAgICAgICByZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKyAgICB9CisKKyAg ICBwdHIgPSBpb3JlbWFwX25vY2FjaGUocmVzLT5hZGRyLCByZXMtPnNpemUpOworICAgIGlmICgg IXB0ciApCisgICAgeworICAgICAgICBkZXZfZXJyKGRldiwKKyAgICAgICAgICAgICJpb3JlbWFw IGZhaWxlZCAoYWRkciAweCUiUFJJeDY0IiBzaXplIDB4JSJQUkl4NjQiKVxuIiwKKyAgICAgICAg ICAgIHJlcy0+YWRkciwgcmVzLT5zaXplKTsKKyAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVOT01F TSk7CisgICAgfQorCisgICAgcmV0dXJuIHB0cjsKK30KKworLyoKKyAqIERvbWFpbiB0eXBlIGRl ZmluaXRpb25zLiBOb3QgcmVhbGx5IG5lZWRlZCBmb3IgWGVuLCBkZWZpbmluZyB0byBwb3J0Cisg KiBMaW51eCBjb2RlIGFzLWlzCisgKi8KKyNkZWZpbmUgSU9NTVVfRE9NQUlOX1VOTUFOQUdFRCAw CisjZGVmaW5lIElPTU1VX0RPTUFJTl9ETUEgMQorI2RlZmluZSBJT01NVV9ET01BSU5fSURFTlRJ VFkgMgorCisvKiBYZW46IENvbXBhdGliaWxpdHkgZGVmaW5lIGZvciBpb21tdV9kb21haW5fZ2Vv bWV0cnkuKi8KK3N0cnVjdCBpb21tdV9kb21haW5fZ2VvbWV0cnkgeworICAgIGRtYV9hZGRyX3Qg YXBlcnR1cmVfc3RhcnQ7IC8qIEZpcnN0IGFkZHJlc3MgdGhhdCBjYW4gYmUgbWFwcGVkICAgICov CisgICAgZG1hX2FkZHJfdCBhcGVydHVyZV9lbmQ7ICAgLyogTGFzdCBhZGRyZXNzIHRoYXQgY2Fu IGJlIG1hcHBlZCAgICAgKi8KKyAgICBib29sIGZvcmNlX2FwZXJ0dXJlOyAgICAgICAvKiBETUEg b25seSBhbGxvd2VkIGluIG1hcHBhYmxlIHJhbmdlPyAqLworfTsKKworLyogWGVuOiBEdW1teSBp b21tdV9kb21haW4gKi8KK3N0cnVjdCBpb21tdV9kb21haW4geworICAgIC8qIFJ1bnRpbWUgU01N VSBjb25maWd1cmF0aW9uIGZvciB0aGlzIGlvbW11X2RvbWFpbiAqLworICAgIHN0cnVjdCBhcm1f c21tdV9kb21haW4gICAgICAqcHJpdjsKKyAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgICB0eXBl OworCisgICAgLyogRHVtbXkgY29tcGF0aWJpbGl0eSBkZWZpbmVzICovCisgICAgdW5zaWduZWQg bG9uZyBwZ3NpemVfYml0bWFwOworICAgIHN0cnVjdCBpb21tdV9kb21haW5fZ2VvbWV0cnkgZ2Vv bWV0cnk7CisKKyAgICBhdG9taWNfdCByZWY7CisgICAgLyogVXNlZCB0byBsaW5rIGlvbW11X2Rv bWFpbiBjb250ZXh0cyBmb3IgYSBzYW1lIGRvbWFpbi4KKyAgICAgKiBUaGVyZSBpcyBhdCBsZWFz dCBvbmUgcGVyLVNNTVUgdG8gdXNlZCBieSB0aGUgZG9tYWluLgorICAgICAqLworICAgIHN0cnVj dCBsaXN0X2hlYWQgICAgICAgIGxpc3Q7Cit9OworCisvKiBYZW46IERlc2NyaWJlcyBpbmZvcm1h dGlvbiByZXF1aXJlZCBmb3IgYSBYZW4gZG9tYWluICovCitzdHJ1Y3QgYXJtX3NtbXVfeGVuX2Rv bWFpbiB7CisgICAgc3BpbmxvY2tfdCAgICAgICAgICBsb2NrOworICAgIC8qIExpc3Qgb2YgaW9t bXUgZG9tYWlucyBhc3NvY2lhdGVkIHRvIHRoaXMgZG9tYWluICovCisgICAgc3RydWN0IGxpc3Rf aGVhZCAgICAgICAgY29udGV4dHM7Cit9OworCisjZW5kaWYgLyogX19BUk1fU01NVV9IX18gKi8K KwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUtdjMuYyBiL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LXYzLmMKaW5kZXggMzQ4ODE4NGFkNC4uNmU3 MDVmNjNhMyAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUtdjMu YworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS12My5jCkBAIC00OSwyMCAr NDksNyBAQAogI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPGFzbS9wbGF0Zm9ybS5oPgog Ci0KLS8qIFhlbjogSGVscGVycyB0byBnZXQgZGV2aWNlIE1NSU8gYW5kIElSUXMgKi8KLXN0cnVj dCByZXNvdXJjZSB7Ci0JdTY0IGFkZHI7Ci0JdTY0IHNpemU7Ci0JdW5zaWduZWQgaW50IHR5cGU7 Ci19OwotCi0jZGVmaW5lIHJlc291cmNlX3NpemUocmVzKSAoKHJlcyktPnNpemUpCi0KLSNkZWZp bmUgcGxhdGZvcm1fZGV2aWNlIGRldmljZQotCi0jZGVmaW5lIElPUkVTT1VSQ0VfTUVNIDAKLSNk ZWZpbmUgSU9SRVNPVVJDRV9JUlEgMQorI2luY2x1ZGUgImFybV9zbW11LmgiIC8qIE5vdCBhIHNl bGYgY29udGFpbmVkIGhlYWRlci4gU28gbGFzdCBpbiB0aGUgbGlzdCAqLwogCiBzdGF0aWMgc3Ry dWN0IHJlc291cmNlICpwbGF0Zm9ybV9nZXRfcmVzb3VyY2Uoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldiwKIAkJCQkJICAgICAgdW5zaWduZWQgaW50IHR5cGUsCkBAIC0xOTIsODEgKzE3OSwx MCBAQCB2b2lkIGRtYW1fZnJlZV9jb2hlcmVudChzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBz aXplLCB2b2lkICp2YWRkciwKIAl4ZnJlZSh2YWRkcik7CiB9CiAKLS8qIFhlbjogU3R1YiBvdXQg RE1BIGRvbWFpbiByZWxhdGVkIGZ1bmN0aW9ucyAqLwotI2RlZmluZSBpb21tdV9nZXRfZG1hX2Nv b2tpZShkb20pIDAKLSNkZWZpbmUgaW9tbXVfcHV0X2RtYV9jb29raWUoZG9tKQotCi0vKiBYZW46 IFN0dWIgb3V0IG1vZHVsZSBwYXJhbSByZWxhdGVkIGZ1bmN0aW9uICovCi0jZGVmaW5lIG1vZHVs ZV9wYXJhbV9uYW1lZChhLCBiLCBjLCBkKQotI2RlZmluZSBNT0RVTEVfUEFSTV9ERVNDKGEsIGIp Ci0KICNkZWZpbmUgZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChkLCBiKSAwCiAKICNkZWZpbmUg b2ZfZG1hX2lzX2NvaGVyZW50KG4pIDAKIAotI2RlZmluZSBNT0RVTEVfREVWSUNFX1RBQkxFKHR5 cGUsIG5hbWUpCi0jZGVmaW5lIG9mX2RldmljZV9pZCBkdF9kZXZpY2VfbWF0Y2gKLQotc3RhdGlj IHZvaWQgX19pb21lbSAqZGV2bV9pb3JlbWFwX3Jlc291cmNlKHN0cnVjdCBkZXZpY2UgKmRldiwK LQkJCQkJICAgc3RydWN0IHJlc291cmNlICpyZXMpCi17Ci0Jdm9pZCBfX2lvbWVtICpwdHI7Ci0K LQlpZiAoIXJlcyB8fCByZXMtPnR5cGUgIT0gSU9SRVNPVVJDRV9NRU0pIHsKLQkJZGV2X2Vycihk ZXYsICJJbnZhbGlkIHJlc291cmNlXG4iKTsKLQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Ci0J fQotCi0JcHRyID0gaW9yZW1hcF9ub2NhY2hlKHJlcy0+YWRkciwgcmVzLT5zaXplKTsKLQlpZiAo IXB0cikgewotCQlkZXZfZXJyKGRldiwKLQkJCSJpb3JlbWFwIGZhaWxlZCAoYWRkciAweCUiUFJJ eDY0IiBzaXplIDB4JSJQUkl4NjQiKVxuIiwKLQkJCXJlcy0+YWRkciwgcmVzLT5zaXplKTsKLQkJ cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Ci0JfQotCi0JcmV0dXJuIHB0cjsKLX0KLQotLyogWGVu OiBDb21wYXRpYmlsaXR5IGRlZmluZSBmb3IgaW9tbXVfZG9tYWluX2dlb21ldHJ5LiovCi1zdHJ1 Y3QgaW9tbXVfZG9tYWluX2dlb21ldHJ5IHsKLQlkbWFfYWRkcl90IGFwZXJ0dXJlX3N0YXJ0OyAv KiBGaXJzdCBhZGRyZXNzIHRoYXQgY2FuIGJlIG1hcHBlZCAgICAqLwotCWRtYV9hZGRyX3QgYXBl cnR1cmVfZW5kOyAgIC8qIExhc3QgYWRkcmVzcyB0aGF0IGNhbiBiZSBtYXBwZWQgICAgICovCi0J Ym9vbCBmb3JjZV9hcGVydHVyZTsgICAgICAgLyogRE1BIG9ubHkgYWxsb3dlZCBpbiBtYXBwYWJs ZSByYW5nZT8gKi8KLX07Ci0KLQotLyogWGVuOiBUeXBlIGRlZmluaXRpb25zIGZvciBpb21tdV9k b21haW4gKi8KLSNkZWZpbmUgSU9NTVVfRE9NQUlOX1VOTUFOQUdFRCAwCi0jZGVmaW5lIElPTU1V X0RPTUFJTl9ETUEgMQotI2RlZmluZSBJT01NVV9ET01BSU5fSURFTlRJVFkgMgotCi0vKiBYZW46 IER1bW15IGlvbW11X2RvbWFpbiAqLwotc3RydWN0IGlvbW11X2RvbWFpbiB7Ci0JLyogUnVudGlt ZSBTTU1VIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgaW9tbXVfZG9tYWluICovCi0Jc3RydWN0IGFy bV9zbW11X2RvbWFpbgkJKnByaXY7Ci0JdW5zaWduZWQgaW50IHR5cGU7Ci0KLQkvKiBEdW1teSBj b21wYXRpYmlsaXR5IGRlZmluZXMgKi8KLQl1bnNpZ25lZCBsb25nIHBnc2l6ZV9iaXRtYXA7Ci0J c3RydWN0IGlvbW11X2RvbWFpbl9nZW9tZXRyeSBnZW9tZXRyeTsKLQotCWF0b21pY190IHJlZjsK LQkvKgotCSAqIFVzZWQgdG8gbGluayBpb21tdV9kb21haW4gY29udGV4dHMgZm9yIGEgc2FtZSBk b21haW4uCi0JICogVGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBlci1TTU1VIHRvIHVzZWQgYnkgdGhl IGRvbWFpbi4KLQkgKi8KLQlzdHJ1Y3QgbGlzdF9oZWFkCQlsaXN0OwotfTsKLQotCi0vKiBYZW46 IERlc2NyaWJlcyBpbmZvcm1hdGlvbiByZXF1aXJlZCBmb3IgYSBYZW4gZG9tYWluICovCi1zdHJ1 Y3QgYXJtX3NtbXVfeGVuX2RvbWFpbiB7Ci0Jc3BpbmxvY2tfdAkJCWxvY2s7Ci0JLyogTGlzdCBv ZiBpb21tdSBkb21haW5zIGFzc29jaWF0ZWQgdG8gdGhpcyBkb21haW4gKi8KLQlzdHJ1Y3QgbGlz dF9oZWFkCQlpb21tdV9kb21haW5zOwotfTsKLQogLyoKICAqIFhlbjogSW5mb3JtYXRpb24gYWJv dXQgZWFjaCBkZXZpY2Ugc3RvcmVkIGluIGRldi0+YXJjaGRhdGEuaW9tbXUKICAqCkBAIC0zMzk2 LDcgKzMzMTIsNyBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV9pb3RsYl9mbHVz aF9hbGwoc3RydWN0IGRvbWFpbiAqZCkKIAlzdHJ1Y3QgaW9tbXVfZG9tYWluICpjZmc7CiAKIAlz cGluX2xvY2soJnNtbXVfZG9tYWluLT5sb2NrKTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNmZywg JnNtbXVfZG9tYWluLT5pb21tdV9kb21haW5zLCBsaXN0KSB7CisJbGlzdF9mb3JfZWFjaF9lbnRy eShjZmcsICZzbW11X2RvbWFpbi0+Y29udGV4dHMsIGxpc3QpIHsKIAkJLyoKIAkJICogT25seSBp bnZhbGlkYXRlIHRoZSBjb250ZXh0IHdoZW4gU01NVSBpcyBwcmVzZW50LgogCQkgKiBUaGlzIGlz IGJlY2F1c2UgdGhlIGNvbnRleHQgaW5pdGlhbGl6YXRpb24gaXMgZGVsYXllZApAQCAtMzQzNSw3 ICszMzUxLDcgQEAgc3RhdGljIHN0cnVjdCBpb21tdV9kb21haW4gKmFybV9zbW11X2dldF9kb21h aW4oc3RydWN0IGRvbWFpbiAqZCwKIAkgKiBMb29wIHRocm91Z2ggdGhlICZ4ZW5fZG9tYWluLT5j b250ZXh0cyB0byBsb2NhdGUgYSBjb250ZXh0CiAJICogYXNzaWduZWQgdG8gdGhpcyBTTU1VCiAJ ICovCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShkb21haW4sICZ4ZW5fZG9tYWluLT5pb21tdV9kb21h aW5zLCBsaXN0KSB7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShkb21haW4sICZ4ZW5fZG9tYWluLT5j b250ZXh0cywgbGlzdCkgewogCQlzbW11X2RvbWFpbiA9IHRvX3NtbXVfZG9tYWluKGRvbWFpbik7 CiAJCWlmIChzbW11X2RvbWFpbi0+c21tdSA9PSBzbW11KQogCQkJcmV0dXJuIGRvbWFpbjsKQEAg LTM0ODksNyArMzQwNSw3IEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfYXNzaWduX2RldihzdHJ1Y3Qg ZG9tYWluICpkLCB1OCBkZXZmbiwKIAkJYXJtX3NtbXUtPnMyX2NmZy5kb21haW4gPSBkOwogCiAJ CS8qIENoYWluIHRoZSBuZXcgY29udGV4dCB0byB0aGUgZG9tYWluICovCi0JCWxpc3RfYWRkKCZk b21haW4tPmxpc3QsICZ4ZW5fZG9tYWluLT5pb21tdV9kb21haW5zKTsKKwkJbGlzdF9hZGQoJmRv bWFpbi0+bGlzdCwgJnhlbl9kb21haW4tPmNvbnRleHRzKTsKIAogCX0KIApAQCAtMzU2OSw3ICsz NDg1LDcgQEAgc3RhdGljIGludCBhcm1fc21tdV9pb21tdV9kb21haW5faW5pdChzdHJ1Y3QgZG9t YWluICpkKQogCQlyZXR1cm4gLUVOT01FTTsKIAogCXNwaW5fbG9ja19pbml0KCZ4ZW5fZG9tYWlu LT5sb2NrKTsKLQlJTklUX0xJU1RfSEVBRCgmeGVuX2RvbWFpbi0+aW9tbXVfZG9tYWlucyk7CisJ SU5JVF9MSVNUX0hFQUQoJnhlbl9kb21haW4tPmNvbnRleHRzKTsKIAogCWRvbV9pb21tdShkKS0+ YXJjaC5wcml2ID0geGVuX2RvbWFpbjsKIApAQCAtMzU4NCw3ICszNTAwLDcgQEAgc3RhdGljIHZv aWQgYXJtX3NtbXVfaW9tbXVfZG9tYWluX3RlYXJkb3duKHN0cnVjdCBkb21haW4gKmQpCiB7CiAJ c3RydWN0IGFybV9zbW11X3hlbl9kb21haW4gKnhlbl9kb21haW4gPSBkb21faW9tbXUoZCktPmFy Y2gucHJpdjsKIAotCUFTU0VSVChsaXN0X2VtcHR5KCZ4ZW5fZG9tYWluLT5pb21tdV9kb21haW5z KSk7CisJQVNTRVJUKGxpc3RfZW1wdHkoJnhlbl9kb21haW4tPmNvbnRleHRzKSk7CiAJeGZyZWUo eGVuX2RvbWFpbik7CiB9CiAKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2Fy bS9zbW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jCmluZGV4IGFkOTU2 ZDViOGQuLjRjMDQzOTFlMjEgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2Fy bS9zbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUuYwpAQCAtNDEs NiArNDEsNyBAQAogI2luY2x1ZGUgPHhlbi9pcnEuaD4KICNpbmNsdWRlIDx4ZW4vbGliLmg+CiAj aW5jbHVkZSA8eGVuL2xpc3QuaD4KKyNpbmNsdWRlIDx4ZW4vbGludXhfY29tcGF0Lmg+CiAjaW5j bHVkZSA8eGVuL21tLmg+CiAjaW5jbHVkZSA8eGVuL3ZtYXAuaD4KICNpbmNsdWRlIDx4ZW4vcmJ0 cmVlLmg+CkBAIC01MSwzNiArNTIsMTMgQEAKICNpbmNsdWRlIDxhc20vaW8uaD4KICNpbmNsdWRl IDxhc20vcGxhdGZvcm0uaD4KIAorI2luY2x1ZGUgImFybV9zbW11LmgiIC8qIE5vdCBhIHNlbGYg Y29udGFpbmVkIGhlYWRlci4gU28gbGFzdCBpbiB0aGUgbGlzdCAqLwogLyogWGVuOiBUaGUgYmVs b3cgZGVmaW5lcyBhcmUgcmVkZWZpbmVkIHdpdGhpbiB0aGUgZmlsZS4gVW5kZWYgaXQgKi8KICN1 bmRlZiBTQ1RMUl9BRkUKICN1bmRlZiBTQ1RMUl9UUkUKICN1bmRlZiBTQ1RMUl9NCiAjdW5kZWYg VFRCQ1JfRUFFCiAKLS8qIEFsaWFzIHRvIFhlbiBkZXZpY2UgdHJlZSBoZWxwZXJzICovCi0jZGVm aW5lIGRldmljZV9ub2RlIGR0X2RldmljZV9ub2RlCi0jZGVmaW5lIG9mX3BoYW5kbGVfYXJncyBk dF9waGFuZGxlX2FyZ3MKLSNkZWZpbmUgb2ZfZGV2aWNlX2lkIGR0X2RldmljZV9tYXRjaAotI2Rl ZmluZSBvZl9tYXRjaF9ub2RlIGR0X21hdGNoX25vZGUKLSNkZWZpbmUgb2ZfcHJvcGVydHlfcmVh ZF91MzIobnAsIHBuYW1lLCBvdXQpICghZHRfcHJvcGVydHlfcmVhZF91MzIobnAsIHBuYW1lLCBv dXQpKQotI2RlZmluZSBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wgZHRfcHJvcGVydHlfcmVhZF9ib29s Ci0jZGVmaW5lIG9mX3BhcnNlX3BoYW5kbGVfd2l0aF9hcmdzIGR0X3BhcnNlX3BoYW5kbGVfd2l0 aF9hcmdzCi0KLS8qIFhlbjogSGVscGVycyB0byBnZXQgZGV2aWNlIE1NSU8gYW5kIElSUXMgKi8K LXN0cnVjdCByZXNvdXJjZQotewotCXU2NCBhZGRyOwotCXU2NCBzaXplOwotCXVuc2lnbmVkIGlu dCB0eXBlOwotfTsKLQotI2RlZmluZSByZXNvdXJjZV9zaXplKHJlcykgKHJlcyktPnNpemU7Ci0K LSNkZWZpbmUgcGxhdGZvcm1fZGV2aWNlIGRldmljZQotCi0jZGVmaW5lIElPUkVTT1VSQ0VfTUVN IDAKLSNkZWZpbmUgSU9SRVNPVVJDRV9JUlEgMQotCiBzdGF0aWMgc3RydWN0IHJlc291cmNlICpw bGF0Zm9ybV9nZXRfcmVzb3VyY2Uoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKIAkJCQkJ ICAgICAgdW5zaWduZWQgaW50IHR5cGUsCiAJCQkJCSAgICAgIHVuc2lnbmVkIGludCBudW0pCkBA IC0xMTgsNTggKzk2LDYgQEAgc3RhdGljIHN0cnVjdCByZXNvdXJjZSAqcGxhdGZvcm1fZ2V0X3Jl c291cmNlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCiAKIC8qIFhlbjogSGVscGVycyBm b3IgSVJRIGZ1bmN0aW9ucyAqLwogI2RlZmluZSByZXF1ZXN0X2lycShpcnEsIGZ1bmMsIGZsYWdz LCBuYW1lLCBkZXYpIHJlcXVlc3RfaXJxKGlycSwgZmxhZ3MsIGZ1bmMsIG5hbWUsIGRldikKLSNk ZWZpbmUgZnJlZV9pcnEgcmVsZWFzZV9pcnEKLQotZW51bSBpcnFyZXR1cm4gewotCUlSUV9OT05F CT0gKDAgPDwgMCksCi0JSVJRX0hBTkRMRUQJPSAoMSA8PCAwKSwKLX07Ci0KLXR5cGVkZWYgZW51 bSBpcnFyZXR1cm4gaXJxcmV0dXJuX3Q7Ci0KLS8qIERldmljZSBsb2dnZXIgZnVuY3Rpb25zCi0g KiBUT0RPOiBIYW5kbGUgUENJCi0gKi8KLSNkZWZpbmUgZGV2X3ByaW50KGRldiwgbHZsLCBmbXQs IC4uLikJCQkJCQlcCi0JIHByaW50ayhsdmwgInNtbXU6ICVzOiAiIGZtdCwgZHRfbm9kZV9mdWxs X25hbWUoZGV2X3RvX2R0KGRldikpLCAjIyBfX1ZBX0FSR1NfXykKLQotI2RlZmluZSBkZXZfZGJn KGRldiwgZm10LCAuLi4pIGRldl9wcmludChkZXYsIFhFTkxPR19ERUJVRywgZm10LCAjIyBfX1ZB X0FSR1NfXykKLSNkZWZpbmUgZGV2X25vdGljZShkZXYsIGZtdCwgLi4uKSBkZXZfcHJpbnQoZGV2 LCBYRU5MT0dfSU5GTywgZm10LCAjIyBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgZGV2X3dhcm4oZGV2 LCBmbXQsIC4uLikgZGV2X3ByaW50KGRldiwgWEVOTE9HX1dBUk5JTkcsIGZtdCwgIyMgX19WQV9B UkdTX18pCi0jZGVmaW5lIGRldl9lcnIoZGV2LCBmbXQsIC4uLikgZGV2X3ByaW50KGRldiwgWEVO TE9HX0VSUiwgZm10LCAjIyBfX1ZBX0FSR1NfXykKLQotI2RlZmluZSBkZXZfZXJyX3JhdGVsaW1p dGVkKGRldiwgZm10LCAuLi4pCQkJCQlcCi0JIGRldl9wcmludChkZXYsIFhFTkxPR19FUlIsIGZt dCwgIyMgX19WQV9BUkdTX18pCi0KLSNkZWZpbmUgZGV2X25hbWUoZGV2KSBkdF9ub2RlX2Z1bGxf bmFtZShkZXZfdG9fZHQoZGV2KSkKLQotLyogQWxpYXMgdG8gWGVuIGFsbG9jYXRpb24gaGVscGVy cyAqLwotI2RlZmluZSBrZnJlZSB4ZnJlZQotI2RlZmluZSBrbWFsbG9jKHNpemUsIGZsYWdzKQkJ X3htYWxsb2Moc2l6ZSwgc2l6ZW9mKHZvaWQgKikpCi0jZGVmaW5lIGt6YWxsb2Moc2l6ZSwgZmxh Z3MpCQlfeHphbGxvYyhzaXplLCBzaXplb2Yodm9pZCAqKSkKLSNkZWZpbmUgZGV2bV9remFsbG9j KGRldiwgc2l6ZSwgZmxhZ3MpCV94emFsbG9jKHNpemUsIHNpemVvZih2b2lkICopKQotI2RlZmlu ZSBrbWFsbG9jX2FycmF5KHNpemUsIG4sIGZsYWdzKQlfeG1hbGxvY19hcnJheShzaXplLCBzaXpl b2Yodm9pZCAqKSwgbikKLQotc3RhdGljIHZvaWQgX19pb21lbSAqZGV2bV9pb3JlbWFwX3Jlc291 cmNlKHN0cnVjdCBkZXZpY2UgKmRldiwKLQkJCQkJICAgc3RydWN0IHJlc291cmNlICpyZXMpCi17 Ci0Jdm9pZCBfX2lvbWVtICpwdHI7Ci0KLQlpZiAoIXJlcyB8fCByZXMtPnR5cGUgIT0gSU9SRVNP VVJDRV9NRU0pIHsKLQkJZGV2X2VycihkZXYsICJJbnZhbGlkIHJlc291cmNlXG4iKTsKLQkJcmV0 dXJuIEVSUl9QVFIoLUVJTlZBTCk7Ci0JfQotCi0JcHRyID0gaW9yZW1hcF9ub2NhY2hlKHJlcy0+ YWRkciwgcmVzLT5zaXplKTsKLQlpZiAoIXB0cikgewotCQlkZXZfZXJyKGRldiwKLQkJCSJpb3Jl bWFwIGZhaWxlZCAoYWRkciAweCUiUFJJeDY0IiBzaXplIDB4JSJQUkl4NjQiKVxuIiwKLQkJCXJl cy0+YWRkciwgcmVzLT5zaXplKTsKLQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Ci0JfQotCi0J cmV0dXJuIHB0cjsKLX0KIAogLyogWGVuIGRvZXNuJ3QgaGFuZGxlIElPTU1VIGZhdWx0ICovCiAj ZGVmaW5lIHJlcG9ydF9pb21tdV9mYXVsdCguLi4pCTEKQEAgLTE5NiwzMiArMTIyLDYgQEAgc3Rh dGljIGlubGluZSBpbnQgcGNpX2Zvcl9lYWNoX2RtYV9hbGlhcyhzdHJ1Y3QgcGNpX2RldiAqcGRl diwKICNkZWZpbmUgUEhZU19NQVNLX1NISUZUCQlQQUREUl9CSVRTCiB0eXBlZGVmIHBhZGRyX3Qg cGh5c19hZGRyX3Q7CiAKLSNkZWZpbmUgVkFfQklUUwkJMAkvKiBPbmx5IHVzZWQgZm9yIGNvbmZp Z3VyaW5nIHN0YWdlLTEgaW5wdXQgc2l6ZSAqLwotCi0jZGVmaW5lIE1PRFVMRV9ERVZJQ0VfVEFC TEUodHlwZSwgbmFtZSkKLSNkZWZpbmUgbW9kdWxlX3BhcmFtX25hbWVkKG5hbWUsIHZhbHVlLCB0 eXBlLCBwZXJtKQotI2RlZmluZSBNT0RVTEVfUEFSTV9ERVNDKF9wYXJtLCBkZXNjKQotCi0vKiBY ZW46IER1bW15IGlvbW11X2RvbWFpbiAqLwotc3RydWN0IGlvbW11X2RvbWFpbgotewotCS8qIFJ1 bnRpbWUgU01NVSBjb25maWd1cmF0aW9uIGZvciB0aGlzIGlvbW11X2RvbWFpbiAqLwotCXN0cnVj dCBhcm1fc21tdV9kb21haW4JCSpwcml2OwotCi0JYXRvbWljX3QgcmVmOwotCS8qIFVzZWQgdG8g bGluayBpb21tdV9kb21haW4gY29udGV4dHMgZm9yIGEgc2FtZSBkb21haW4uCi0JICogVGhlcmUg aXMgYXQgbGVhc3Qgb25lIHBlci1TTU1VIHRvIHVzZWQgYnkgdGhlIGRvbWFpbi4KLQkgKiAqLwot CXN0cnVjdCBsaXN0X2hlYWQJCWxpc3Q7Ci19OwotCi0vKiBYZW46IERlc2NyaWJlcyBpbmZvcm1h dGlvbnMgcmVxdWlyZWQgZm9yIGEgWGVuIGRvbWFpbiAqLwotc3RydWN0IGFybV9zbW11X3hlbl9k b21haW4gewotCXNwaW5sb2NrX3QJCQlsb2NrOwotCS8qIExpc3Qgb2YgY29udGV4dCAoaS5lIGlv bW11X2RvbWFpbikgYXNzb2NpYXRlZCB0byB0aGlzIGRvbWFpbiAqLwotCXN0cnVjdCBsaXN0X2hl YWQJCWNvbnRleHRzOwotfTsKLQogLyoKICAqIFhlbjogSW5mb3JtYXRpb24gYWJvdXQgZWFjaCBk ZXZpY2Ugc3RvcmVkIGluIGRldi0+YXJjaGRhdGEuaW9tbXUKICAqCi0tIAoyLjE0LjEKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs