From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH 04/14] iommu: sva: Add support for pasid allocation Date: Wed, 21 Feb 2018 15:59:14 -0700 Message-ID: <20180221225924.30737-5-jcrouse@codeaurora.org> References: <20180221225924.30737-1-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180221225924.30737-1-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, tfiga-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, vivek.gautam-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org U29tZSBvbGRlciBTTU1VIGltcGxlbWVudGF0aW9ucyB0aGF0IGRvIG5vdCBoYXZlIGEgZnVsbHkg ZmVhdHVyZWQKUEFTSUQgbW9kZWwgaGF2ZSBhbHRlcm5hdGUgd29ya2Fyb3VuZHMgZm9yIHVzaW5n IG11bHRpcGxlIHBhZ2V0YWJsZXMuCkZvciBleGFtcGxlLCBNU00gR1BVcyBoYXZlIGxvZ2ljIHRv IGF1dG9tYXRpY2FsbHkgc3dpdGNoIHRoZSB1c2VyCnBhZ2V0YWJsZSBmcm9tIGhhcmR3YXJlIGJ5 IHdyaXRpbmcgdGhlIGNvbnRleHQgYmFuayBkaXJlY3RseS4KCkluc3RlYWQgb2YgYmluZGluZyBh bmQgc2hhcmluZyBDUFUgcGFnZXRhYmxlcyB0aGVzZSBpbXBsZW1lbnRhdGlvbnMKbmVlZCB0byBh IG5ldyBwYWdldGFibGUgc3RydWN0dXJlIGFuZCBwb3B1bGF0ZSBpdCBtYW51YWxseS4gQWRkIGEK bmV3IHNldCBvZiBBUEkgZnVuY3Rpb25zIHRvIGNyZWF0ZSBhbmQgcG9wdWxhdGUgYSBwYWdldGFi bGUgc3RydWN0dXJlCmlkZW50aWZpZWQgYnkgYSBwYXNpZC4KClNpZ25lZC1vZmYtYnk6IEpvcmRh biBDcm91c2UgPGpjcm91c2VAY29kZWF1cm9yYS5vcmc+Ci0tLQogZHJpdmVycy9pb21tdS9pb21t dS1zdmEuYyB8IDIzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiBkcml2ZXJzL2lvbW11L2lvbW11LmMgICAgIHwgICAzICstCiBpbmNsdWRlL2xpbnV4L2lv bW11LmggICAgIHwgIDU2ICsrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDI5NyBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9pb21tdS1z dmEuYyBiL2RyaXZlcnMvaW9tbXUvaW9tbXUtc3ZhLmMKaW5kZXggNWZjNjg5YjFlZjcyLi5jNDhm ZGU1YjBiYmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW9tbXUvaW9tbXUtc3ZhLmMKKysrIGIvZHJp dmVycy9pb21tdS9pb21tdS1zdmEuYwpAQCAtODA5LDMgKzgwOSwyNDIgQEAgc3RydWN0IG1tX3N0 cnVjdCAqaW9tbXVfc3ZhX2ZpbmQoaW50IHBhc2lkKQogCXJldHVybiBtbTsKIH0KIEVYUE9SVF9T WU1CT0xfR1BMKGlvbW11X3N2YV9maW5kKTsKKworaW50IGlvbW11X3N2YV9hbGxvY19wYXNpZChz dHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sIHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlpbnQg cmV0LCBwYXNpZDsKKwlzdHJ1Y3QgaW9fcGFzaWQgKmlvX3Bhc2lkOworCisJaWYgKCFkb21haW4t Pm9wcy0+cGFzaWRfYWxsb2MgfHwgIWRvbWFpbi0+b3BzLT5wYXNpZF9mcmVlKQorCQlyZXR1cm4g LUVOT0RFVjsKKworCWlvX3Bhc2lkID0ga3phbGxvYyhzaXplb2YoKmlvX3Bhc2lkKSwgR0ZQX0tF Uk5FTCk7CisJaWYgKCFpb19wYXNpZCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpb19wYXNpZC0+ ZG9tYWluID0gZG9tYWluOworCWlvX3Bhc2lkLT5iYXNlLnR5cGUgPSBJT19UWVBFX1BBU0lEOwor CisJaWRyX3ByZWxvYWQoR0ZQX0tFUk5FTCk7CisJc3Bpbl9sb2NrKCZpb21tdV9zdmFfbG9jayk7 CisJcGFzaWQgPSBpZHJfYWxsb2NfY3ljbGljKCZpb21tdV9wYXNpZF9pZHIsICZpb19wYXNpZC0+ YmFzZSwKKwkJMSwgKDEgPDwgMzEpLCBHRlBfQVRPTUlDKTsKKwlpb19wYXNpZC0+YmFzZS5wYXNp ZCA9IHBhc2lkOworCXNwaW5fdW5sb2NrKCZpb21tdV9zdmFfbG9jayk7CisJaWRyX3ByZWxvYWRf ZW5kKCk7CisKKwlpZiAocGFzaWQgPCAwKSB7CisJCWtmcmVlKGlvX3Bhc2lkKTsKKwkJcmV0dXJu IHBhc2lkOworCX0KKworCXJldCA9IGRvbWFpbi0+b3BzLT5wYXNpZF9hbGxvYyhkb21haW4sIGRl diwgcGFzaWQpOworCWlmICghcmV0KQorCQlyZXR1cm4gcGFzaWQ7CisKKwlzcGluX2xvY2soJmlv bW11X3N2YV9sb2NrKTsKKwlpZHJfcmVtb3ZlKCZpb21tdV9wYXNpZF9pZHIsIGlvX3Bhc2lkLT5i YXNlLnBhc2lkKTsKKwlzcGluX3VubG9jaygmaW9tbXVfc3ZhX2xvY2spOworCisJa2ZyZWUoaW9f cGFzaWQpOworCisJcmV0dXJuIHJldDsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGlvbW11X3N2YV9h bGxvY19wYXNpZCk7CisKK3N0YXRpYyBzdHJ1Y3QgaW9fcGFzaWQgKmdldF9pb19wYXNpZChpbnQg cGFzaWQpCit7CisJc3RydWN0IGlvX2Jhc2UgKmlvX2Jhc2U7CisJc3RydWN0IGlvX3Bhc2lkICpp b19wYXNpZCA9IE5VTEw7CisKKwlzcGluX2xvY2soJmlvbW11X3N2YV9sb2NrKTsKKwlpb19iYXNl ID0gaWRyX2ZpbmQoJmlvbW11X3Bhc2lkX2lkciwgcGFzaWQpOworCWlmIChpb19iYXNlICYmIGlv X2Jhc2UtPnR5cGUgPT0gSU9fVFlQRV9QQVNJRCkKKwkJaW9fcGFzaWQgPSBjb250YWluZXJfb2Yo aW9fYmFzZSwgc3RydWN0IGlvX3Bhc2lkLCBiYXNlKTsKKwlzcGluX3VubG9jaygmaW9tbXVfc3Zh X2xvY2spOworCisJcmV0dXJuIGlvX3Bhc2lkOworfQorCitpbnQgaW9tbXVfc3ZhX21hcChpbnQg cGFzaWQsIHVuc2lnbmVkIGxvbmcgaW92YSwKKwkgICAgICBwaHlzX2FkZHJfdCBwYWRkciwgc2l6 ZV90IHNpemUsIGludCBwcm90KQoreworCXVuc2lnbmVkIGxvbmcgb3JpZ19pb3ZhID0gaW92YTsK Kwl1bnNpZ25lZCBpbnQgbWluX3BhZ2VzejsKKwlzaXplX3Qgb3JpZ19zaXplID0gc2l6ZTsKKwlz dHJ1Y3QgaW9fcGFzaWQgKmlvX3Bhc2lkOworCXN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbjsK KwlpbnQgcmV0ID0gMDsKKworCWlvX3Bhc2lkID0gZ2V0X2lvX3Bhc2lkKHBhc2lkKTsKKwlpZiAo IWlvX3Bhc2lkKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWRvbWFpbiA9IGlvX3Bhc2lkLT5kb21h aW47CisKKwlpZiAodW5saWtlbHkoZG9tYWluLT5vcHMtPnN2YV9tYXAgPT0gTlVMTCB8fAorCQkg ICAgIGRvbWFpbi0+cGdzaXplX2JpdG1hcCA9PSAwVUwpKQorCQlyZXR1cm4gLUVOT0RFVjsKKwor CS8qIGZpbmQgb3V0IHRoZSBtaW5pbXVtIHBhZ2Ugc2l6ZSBzdXBwb3J0ZWQgKi8KKwltaW5fcGFn ZXN6ID0gMSA8PCBfX2Zmcyhkb21haW4tPnBnc2l6ZV9iaXRtYXApOworCisJLyoKKwkgKiBib3Ro IHRoZSB2aXJ0dWFsIGFkZHJlc3MgYW5kIHRoZSBwaHlzaWNhbCBvbmUsIGFzIHdlbGwgYXMKKwkg KiB0aGUgc2l6ZSBvZiB0aGUgbWFwcGluZywgbXVzdCBiZSBhbGlnbmVkIChhdCBsZWFzdCkgdG8g dGhlCisJICogc2l6ZSBvZiB0aGUgc21hbGxlc3QgcGFnZSBzdXBwb3J0ZWQgYnkgdGhlIGhhcmR3 YXJlCisJICovCisJaWYgKCFJU19BTElHTkVEKGlvdmEgfCBwYWRkciB8IHNpemUsIG1pbl9wYWdl c3opKSB7CisJCXByX2VycigidW5hbGlnbmVkOiBpb3ZhIDB4JWx4IHBhICVwYSBzaXplIDB4JXp4 IG1pbl9wYWdlc3ogMHgleFxuIiwKKwkJICAgICAgIGlvdmEsICZwYWRkciwgc2l6ZSwgbWluX3Bh Z2Vzeik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXdoaWxlIChzaXplKSB7CisJCXNpemVf dCBwZ3NpemUgPSBpb21tdV9wZ3NpemUoZG9tYWluLCBpb3ZhIHwgcGFkZHIsIHNpemUpOworCisJ CXByX2RlYnVnKCJtYXBwaW5nOiBpb3ZhIDB4JWx4IHBhICVwYSBwZ3NpemUgMHglenhcbiIsCisJ CQkgaW92YSwgJnBhZGRyLCBwZ3NpemUpOworCisJCXJldCA9IGRvbWFpbi0+b3BzLT5zdmFfbWFw KGRvbWFpbiwgcGFzaWQsIGlvdmEsIHBhZGRyLCBwZ3NpemUsCisJCQlwcm90KTsKKwkJaWYgKHJl dCkKKwkJCWJyZWFrOworCisJCWlvdmEgKz0gcGdzaXplOworCQlwYWRkciArPSBwZ3NpemU7CisJ CXNpemUgLT0gcGdzaXplOworCX0KKworCS8qIHVucm9sbCBtYXBwaW5nIGluIGNhc2Ugc29tZXRo aW5nIHdlbnQgd3JvbmcgKi8KKwlpZiAocmV0KQorCQlpb21tdV9zdmFfdW5tYXAocGFzaWQsIG9y aWdfaW92YSwgb3JpZ19zaXplIC0gc2l6ZSk7CisKKwlyZXR1cm4gcmV0OworfQorRVhQT1JUX1NZ TUJPTF9HUEwoaW9tbXVfc3ZhX21hcCk7CisKK3NpemVfdCBpb21tdV9zdmFfbWFwX3NnKGludCBw YXNpZCwgdW5zaWduZWQgbG9uZyBpb3ZhLAorCQlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLCB1bnNp Z25lZCBpbnQgbmVudHMsIGludCBwcm90KQoreworCXN0cnVjdCBpb19wYXNpZCAqaW9fcGFzaWQ7 CisJc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluOworCXN0cnVjdCBzY2F0dGVybGlzdCAqczsK KwlzaXplX3QgbWFwcGVkID0gMDsKKwl1bnNpZ25lZCBpbnQgaSwgbWluX3BhZ2VzejsKKwlpbnQg cmV0OworCisJaW9fcGFzaWQgPSBnZXRfaW9fcGFzaWQocGFzaWQpOworCWlmICghaW9fcGFzaWQp CisJCXJldHVybiAtRU5PREVWOworCisJZG9tYWluID0gaW9fcGFzaWQtPmRvbWFpbjsKKworCWlm ICh1bmxpa2VseShkb21haW4tPnBnc2l6ZV9iaXRtYXAgPT0gMFVMKSkKKwkJcmV0dXJuIDA7CisK KwltaW5fcGFnZXN6ID0gMSA8PCBfX2Zmcyhkb21haW4tPnBnc2l6ZV9iaXRtYXApOworCisJZm9y X2VhY2hfc2coc2csIHMsIG5lbnRzLCBpKSB7CisJCXBoeXNfYWRkcl90IHBoeXMgPSBwYWdlX3Rv X3BoeXMoc2dfcGFnZShzKSkgKyBzLT5vZmZzZXQ7CisKKwkJLyoKKwkJICogV2UgYXJlIG1hcHBp bmcgb24gSU9NTVUgcGFnZSBib3VuZGFyaWVzLCBzbyBvZmZzZXQgd2l0aGluCisJCSAqIHRoZSBw YWdlIG11c3QgYmUgMC4gSG93ZXZlciwgdGhlIElPTU1VIG1heSBzdXBwb3J0IHBhZ2VzCisJCSAq IHNtYWxsZXIgdGhhbiBQQUdFX1NJWkUsIHNvIHMtPm9mZnNldCBtYXkgc3RpbGwgcmVwcmVzZW50 CisJCSAqIGFuIG9mZnNldCBvZiB0aGF0IGJvdW5kYXJ5IHdpdGhpbiB0aGUgQ1BVIHBhZ2UuCisJ CSAqLworCQlpZiAoIUlTX0FMSUdORUQocy0+b2Zmc2V0LCBtaW5fcGFnZXN6KSkKKwkJCWdvdG8g b3V0X2VycjsKKworCQlyZXQgPSBpb21tdV9zdmFfbWFwKHBhc2lkLCBpb3ZhICsgbWFwcGVkLCBw aHlzLCBzLT5sZW5ndGgsCisJCQlwcm90KTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gb3V0X2VycjsK KworCQltYXBwZWQgKz0gcy0+bGVuZ3RoOworCX0KKworCXJldHVybiBtYXBwZWQ7CisKK291dF9l cnI6CisJLyogdW5kbyBtYXBwaW5ncyBhbHJlYWR5IGRvbmUgKi8KKwlpb21tdV91bm1hcChkb21h aW4sIGlvdmEsIG1hcHBlZCk7CisKKwlyZXR1cm4gMDsKKworfQorRVhQT1JUX1NZTUJPTF9HUEwo aW9tbXVfc3ZhX21hcF9zZyk7CisKK3NpemVfdCBpb21tdV9zdmFfdW5tYXAoaW50IHBhc2lkLCB1 bnNpZ25lZCBsb25nIGlvdmEsIHNpemVfdCBzaXplKQoreworCWNvbnN0IHN0cnVjdCBpb21tdV9v cHMgKm9wczsKKwlzdHJ1Y3QgaW9fcGFzaWQgKmlvX3Bhc2lkOworCXN0cnVjdCBpb21tdV9kb21h aW4gKmRvbWFpbjsKKwlzaXplX3QgdW5tYXBwZWRfcGFnZSwgdW5tYXBwZWQgPSAwOworCXVuc2ln bmVkIGludCBtaW5fcGFnZXN6OworCisJaW9fcGFzaWQgPSBnZXRfaW9fcGFzaWQocGFzaWQpOwor CWlmICghaW9fcGFzaWQpCisJCXJldHVybiAtRU5PREVWOworCisJZG9tYWluID0gaW9fcGFzaWQt PmRvbWFpbjsKKwlvcHMgPSBkb21haW4tPm9wczsKKworCWlmICh1bmxpa2VseShvcHMtPnN2YV91 bm1hcCA9PSBOVUxMIHx8CisJCSAgICAgZG9tYWluLT5wZ3NpemVfYml0bWFwID09IDBVTCkpCisJ CXJldHVybiAtRU5PREVWOworCisJLyogZmluZCBvdXQgdGhlIG1pbmltdW0gcGFnZSBzaXplIHN1 cHBvcnRlZCAqLworCW1pbl9wYWdlc3ogPSAxIDw8IF9fZmZzKGRvbWFpbi0+cGdzaXplX2JpdG1h cCk7CisKKwkvKgorCSAqIFRoZSB2aXJ0dWFsIGFkZHJlc3MsIGFzIHdlbGwgYXMgdGhlIHNpemUg b2YgdGhlIG1hcHBpbmcsIG11c3QgYmUKKwkgKiBhbGlnbmVkIChhdCBsZWFzdCkgdG8gdGhlIHNp emUgb2YgdGhlIHNtYWxsZXN0IHBhZ2Ugc3VwcG9ydGVkCisJICogYnkgdGhlIGhhcmR3YXJlCisJ ICovCisJaWYgKCFJU19BTElHTkVEKGlvdmEgfCBzaXplLCBtaW5fcGFnZXN6KSkgeworCQlwcl9l cnIoInVuYWxpZ25lZDogaW92YSAweCVseCBzaXplIDB4JXp4IG1pbl9wYWdlc3ogMHgleFxuIiwK KwkJICAgICAgIGlvdmEsIHNpemUsIG1pbl9wYWdlc3opOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9 CisKKwkvKgorCSAqIEtlZXAgaXRlcmF0aW5nIHVudGlsIHdlIGVpdGhlciB1bm1hcCAnc2l6ZScg Ynl0ZXMgKG9yIG1vcmUpCisJICogb3Igd2UgaGl0IGFuIGFyZWEgdGhhdCBpc24ndCBtYXBwZWQu CisJICovCisJd2hpbGUgKHVubWFwcGVkIDwgc2l6ZSkgeworCQlzaXplX3QgcGdzaXplID0gaW9t bXVfcGdzaXplKGRvbWFpbiwgaW92YSwgc2l6ZSAtIHVubWFwcGVkKTsKKworCQl1bm1hcHBlZF9w YWdlID0gb3BzLT5zdmFfdW5tYXAoZG9tYWluLCBwYXNpZCwgaW92YSwgcGdzaXplKTsKKwkJaWYg KCF1bm1hcHBlZF9wYWdlKQorCQkJYnJlYWs7CisKKwkJaW92YSArPSB1bm1hcHBlZF9wYWdlOwor CQl1bm1hcHBlZCArPSB1bm1hcHBlZF9wYWdlOworCX0KKworCXJldHVybiB1bm1hcHBlZDsKK30K K0VYUE9SVF9TWU1CT0xfR1BMKGlvbW11X3N2YV91bm1hcCk7CisKK3ZvaWQgaW9tbXVfc3ZhX2Zy ZWVfcGFzaWQoaW50IHBhc2lkKQoreworCXN0cnVjdCBpb19wYXNpZCAqaW9fcGFzaWQ7CisJc3Ry dWN0IGlvbW11X2RvbWFpbiAqZG9tYWluOworCisJaW9fcGFzaWQgPSBnZXRfaW9fcGFzaWQocGFz aWQpOworCWlmICghaW9fcGFzaWQpCisJCXJldHVybjsKKworCWRvbWFpbiA9IGlvX3Bhc2lkLT5k b21haW47CisKKwlkb21haW4tPm9wcy0+cGFzaWRfZnJlZShkb21haW4sIHBhc2lkKTsKKworCXNw aW5fbG9jaygmaW9tbXVfc3ZhX2xvY2spOworCWlkcl9yZW1vdmUoJmlvbW11X3Bhc2lkX2lkciwg aW9fcGFzaWQtPmJhc2UucGFzaWQpOworCXNwaW5fdW5sb2NrKCZpb21tdV9zdmFfbG9jayk7CisK KwlrZnJlZShpb19wYXNpZCk7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChpb21tdV9zdmFfZnJlZV9w YXNpZCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2lvbW11LmMgYi9kcml2ZXJzL2lvbW11 L2lvbW11LmMKaW5kZXggN2Y4Mzk1YjYyMGIxLi5kYTM3MjgzODgwNjkgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvaW9tbXUvaW9tbXUuYworKysgYi9kcml2ZXJzL2lvbW11L2lvbW11LmMKQEAgLTE2Mjcs NyArMTYyNyw3IEBAIHBoeXNfYWRkcl90IGlvbW11X2lvdmFfdG9fcGh5cyhzdHJ1Y3QgaW9tbXVf ZG9tYWluICpkb21haW4sIGRtYV9hZGRyX3QgaW92YSkKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGlv bW11X2lvdmFfdG9fcGh5cyk7CiAKLXN0YXRpYyBzaXplX3QgaW9tbXVfcGdzaXplKHN0cnVjdCBp b21tdV9kb21haW4gKmRvbWFpbiwKK3NpemVfdCBpb21tdV9wZ3NpemUoc3RydWN0IGlvbW11X2Rv bWFpbiAqZG9tYWluLAogCQkJICAgdW5zaWduZWQgbG9uZyBhZGRyX21lcmdlLCBzaXplX3Qgc2l6 ZSkKIHsKIAl1bnNpZ25lZCBpbnQgcGdzaXplX2lkeDsKQEAgLTE2NTgsNiArMTY1OCw3IEBAIHN0 YXRpYyBzaXplX3QgaW9tbXVfcGdzaXplKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwKIAog CXJldHVybiBwZ3NpemU7CiB9CitFWFBPUlRfU1lNQk9MX0dQTChpb21tdV9wZ3NpemUpOwogCiBp bnQgaW9tbXVfbWFwKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgbG9uZyBp b3ZhLAogCSAgICAgIHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSwgaW50IHByb3QpCmRp ZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lvbW11LmggYi9pbmNsdWRlL2xpbnV4L2lvbW11LmgK aW5kZXggZTk5ODM4OWNmMTk1Li42ZTM0Yjg3NjU1YTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGlu dXgvaW9tbXUuaAorKysgYi9pbmNsdWRlL2xpbnV4L2lvbW11LmgKQEAgLTExMiw2ICsxMTIsNyBA QCBzdHJ1Y3QgaW9tbXVfZG9tYWluIHsKIAogZW51bSBpb21tdV9pb190eXBlIHsKIAlJT19UWVBF X01NLAorCUlPX1RZUEVfUEFTSUQsCiB9OwogCiBzdHJ1Y3QgaW9fYmFzZSB7CkBAIC0xMzQsNiAr MTM1LDExIEBAIHN0cnVjdCBpb19tbSB7CiAJc3RydWN0IHJjdV9oZWFkCQlyY3U7CiB9OwogCitz dHJ1Y3QgaW9fcGFzaWQgeworCXN0cnVjdCBpb19iYXNlCQliYXNlOworCXN0cnVjdCBpb21tdV9k b21haW4JKmRvbWFpbjsKK307CisKIGVudW0gaW9tbXVfY2FwIHsKIAlJT01NVV9DQVBfQ0FDSEVf Q09IRVJFTkNZLAkvKiBJT01NVSBjYW4gZW5mb3JjZSBjYWNoZSBjb2hlcmVudCBETUEKIAkJCQkJ ICAgdHJhbnNhY3Rpb25zICovCkBAIC0zNDcsNiArMzUzLDE1IEBAIHN0cnVjdCBpb21tdV9vcHMg ewogCWludCAoKnBhZ2VfcmVzcG9uc2UpKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwgc3Ry dWN0IGRldmljZSAqZGV2LAogCQkJICAgICBzdHJ1Y3QgcGFnZV9yZXNwb25zZV9tc2cgKm1zZyk7 CiAKKwlpbnQgKCpwYXNpZF9hbGxvYykoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLCBzdHJ1 Y3QgZGV2aWNlICpkZXYsCisJCWludCBwYXNpZCk7CisJaW50ICgqc3ZhX21hcCkoc3RydWN0IGlv bW11X2RvbWFpbiAqZG9tYWluLCBpbnQgcGFzaWQsCisJCSAgICAgICB1bnNpZ25lZCBsb25nIGlv dmEsIHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSwKKwkJICAgICAgIGludCBwcm90KTsK KwlzaXplX3QgKCpzdmFfdW5tYXApKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwgaW50IHBh c2lkLAorCQkJICAgIHVuc2lnbmVkIGxvbmcgaW92YSwgc2l6ZV90IHNpemUpOworCXZvaWQgKCpw YXNpZF9mcmVlKShzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sIGludCBwYXNpZCk7CisKIAl1 bnNpZ25lZCBsb25nIHBnc2l6ZV9iaXRtYXA7CiB9OwogCkBAIC01NzcsNiArNTkyLDkgQEAgZXh0 ZXJuIGludCBpb21tdV9kb21haW5fZ2V0X2F0dHIoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWlu LCBlbnVtIGlvbW11X2F0dHIsCiBleHRlcm4gaW50IGlvbW11X2RvbWFpbl9zZXRfYXR0cihzdHJ1 Y3QgaW9tbXVfZG9tYWluICpkb21haW4sIGVudW0gaW9tbXVfYXR0ciwKIAkJCQkgdm9pZCAqZGF0 YSk7CiAKK3NpemVfdCBpb21tdV9wZ3NpemUoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLAor CQkJICAgdW5zaWduZWQgbG9uZyBhZGRyX21lcmdlLCBzaXplX3Qgc2l6ZSk7CisKIC8qIFdpbmRv dyBoYW5kbGluZyBmdW5jdGlvbiBwcm90b3R5cGVzICovCiBleHRlcm4gaW50IGlvbW11X2RvbWFp bl93aW5kb3dfZW5hYmxlKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwgdTMyIHduZF9uciwK IAkJCQkgICAgICBwaHlzX2FkZHJfdCBvZmZzZXQsIHU2NCBzaXplLApAQCAtMTAwMiw2ICsxMDIw LDE2IEBAIGV4dGVybiBpbnQgaW9tbXVfcmVnaXN0ZXJfbW1fZXhpdF9oYW5kbGVyKHN0cnVjdCBk ZXZpY2UgKmRldiwKIGV4dGVybiBpbnQgaW9tbXVfdW5yZWdpc3Rlcl9tbV9leGl0X2hhbmRsZXIo c3RydWN0IGRldmljZSAqZGV2KTsKIAogZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgKmlvbW11X3N2 YV9maW5kKGludCBwYXNpZCk7CisKK2V4dGVybiBpbnQgaW9tbXVfc3ZhX2FsbG9jX3Bhc2lkKHN0 cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwKKwkJc3RydWN0IGRldmljZSAqZGV2KTsKK2V4dGVy biBpbnQgaW9tbXVfc3ZhX21hcChpbnQgcGFzaWQsIHVuc2lnbmVkIGxvbmcgaW92YSwgcGh5c19h ZGRyX3QgcGh5c2FkZHIsCisJCXNpemVfdCBzaXplLCBpbnQgcHJvdCk7CitleHRlcm4gc2l6ZV90 IGlvbW11X3N2YV9tYXBfc2coaW50IHBhc2lkLCB1bnNpZ25lZCBsb25nIGlvdmEsCisJCXN0cnVj dCBzY2F0dGVybGlzdCAqc2csIHVuc2lnbmVkIGludCBuZW50cywgaW50IHByb3QpOworZXh0ZXJu IHNpemVfdCBpb21tdV9zdmFfdW5tYXAoaW50IHBhc2lkLCB1bnNpZ25lZCBsb25nIGlvdmEsIHNp emVfdCBzaXplKTsKK2V4dGVybiB2b2lkIGlvbW11X3N2YV9mcmVlX3Bhc2lkKGludCBwYXNpZCk7 CisKICNlbHNlIC8qIENPTkZJR19JT01NVV9TVkEgKi8KIHN0YXRpYyBpbmxpbmUgaW50IGlvbW11 X3N2YV9kZXZpY2VfaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJCQkJCXVuc2lnbmVkIGxvbmcg ZmVhdHVyZXMsCkBAIC0xMDQ2LDYgKzEwNzQsMzQgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgbW1f c3RydWN0ICppb21tdV9zdmFfZmluZChpbnQgcGFzaWQpCiB7CiAJcmV0dXJuIE5VTEw7CiB9CisK K3N0YXRpYyBpbmxpbmUgaW50IGlvbW11X3N2YV9hbGxvY19wYXNpZChzdHJ1Y3QgaW9tbXVfZG9t YWluICpkb21haW4sCisJCXN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlyZXR1cm4gLUVPUE5PVFNV UFA7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGlvbW11X3N2YV9tYXAoaW50IHBhc2lkLCB1bnNp Z25lZCBsb25nIGlvdmEsCisJCXBoeXNfYWRkcl90IHBoeXNhZGRyLCBzaXplX3Qgc2l6ZSwgaW50 IHByb3QpCit7CisJcmV0dXJuIC1FTk9ERVY7Cit9CisKKworc2l6ZV90IGlvbW11X3N2YV9tYXBf c2coaW50IHBhc2lkLCB1bnNpZ25lZCBsb25nIGlvdmEsCisJCXN0cnVjdCBzY2F0dGVybGlzdCAq c2csIHVuc2lnbmVkIGludCBuZW50cywgaW50IHByb3QpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbmxpbmUgc2l6ZV90IGlvbW11X3N2YV91bm1hcChpbnQgcGFzaWQsIHVuc2lnbmVkIGxv bmcgaW92YSwgc2l6ZV90IHNpemUpCit7CisJcmV0dXJuIHNpemU7Cit9CisKK2V4dGVybiB2b2lk IGlvbW11X3N2YV9mcmVlX3Bhc2lkKGludCBwYXNpZCkgeyB9CisKKwogI2VuZGlmIC8qIENPTkZJ R19JT01NVV9TVkEgKi8KIAogI2lmZGVmIENPTkZJR19JT01NVV9GQVVMVAotLSAKMi4xNi4xCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8g bWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K