From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Tyshchenko Subject: [RFC PATCH v1 4/7] iommu/arm: ipmmu-vmsa: Add Xen changes for io-pgtables Date: Wed, 26 Jul 2017 18:10:01 +0300 Message-ID: <1501081804-4882-5-git-send-email-olekstysh@gmail.com> References: <1501081804-4882-1-git-send-email-olekstysh@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1daNxA-0008OY-NW for xen-devel@lists.xenproject.org; Wed, 26 Jul 2017 15:10:24 +0000 Received: by mail-lf0-f66.google.com with SMTP id x16so6681256lfb.4 for ; Wed, 26 Jul 2017 08:10:22 -0700 (PDT) In-Reply-To: <1501081804-4882-1-git-send-email-olekstysh@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Oleksandr Tyshchenko , Julien Grall , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIFR5c2hjaGVua28gPG9sZWtzYW5kcl90eXNoY2hlbmtvQGVwYW0uY29t PgoKTW9kaWZ5IHRoZSBMaW51eCBmcmFtZXdvcmsgdG8gYmUgZnVuY3Rpb25hbCBpbnNpZGUgWGVu LgpJdCdzIG1vc3RseSBhYm91dCBkaWZmZXJlbmNlcyBiZXR3ZWVuIG1lbW9yeSBtYW5pcHVsYXRp b25zCmluIFhlbiBhbmQgTGludXguCgpBbHNvIHdyYXAgZm9sbG93aW5nIGNvZGUgaW4gI2lmIDA6 Ci0gQWxsIERNQSByZWxhdGVkIHN0dWZmCi0gU3RhZ2UtMiByZWxhdGVkIHRoaW5ncwotIFNlbGYg dGVzdAoKU2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIFR5c2hjaGVua28gPG9sZWtzYW5kcl90eXNo Y2hlbmtvQGVwYW0uY29tPgpDQzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4K Q0M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KLS0tCiB4ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vaW8tcGd0YWJsZS1hcm0uYyB8IDIzNSArKysrKysrKysr KysrKysrKysrKysrKy0tLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9pby1wZ3RhYmxl LmMgICAgIHwgIDE5ICsrLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL2lvLXBndGFibGUu aCAgICAgfCAgMTQgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMjMxIGluc2VydGlvbnMoKyksIDM3IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9pby1w Z3RhYmxlLWFybS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL2lvLXBndGFibGUtYXJt LmMKaW5kZXggZjVjOTBlMS4uYzk4Y2FhMyAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gvYXJtL2lvLXBndGFibGUtYXJtLmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv YXJtL2lvLXBndGFibGUtYXJtLmMKQEAgLTE2LDIwICsxNiw3NiBAQAogICogQ29weXJpZ2h0IChD KSAyMDE0IEFSTSBMaW1pdGVkCiAgKgogICogQXV0aG9yOiBXaWxsIERlYWNvbiA8d2lsbC5kZWFj b25AYXJtLmNvbT4KKyAqCisgKiBCYXNlZCBvbiBMaW51eCBkcml2ZXJzL2lvbW11L2lvLXBndGFi bGUtYXJtLmMKKyAqID0+IGNvbW1pdCA3YzZkOTBlMmJiMWE5OGI4NmQ3M2I5ZThhYjRkOTdlZDU1 MDdlMzdjCisgKiAoaW9tbXUvaW8tcGd0YWJsZS1hcm06IEZpeCBpb3ZhX3RvX3BoeXMgZm9yIGJs b2NrIGVudHJpZXMpCisgKgorICogWGVuIG1vZGlmaWNhdGlvbjoKKyAqIE9sZWtzYW5kciBUeXNo Y2hlbmtvIDxPbGVrc2FuZHJfVHlzaGNoZW5rb0BlcGFtLmNvbT4KKyAqIENvcHlyaWdodCAoQykg MjAxNi0yMDE3IEVQQU0gU3lzdGVtcyBJbmMuCiAgKi8KIAotI2RlZmluZSBwcl9mbXQoZm10KQki YXJtLWxwYWUgaW8tcGd0YWJsZTogIiBmbXQKKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+CisjaW5j bHVkZSA8eGVuL2RlbGF5Lmg+CisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVu L2Vyci5oPgorI2luY2x1ZGUgPHhlbi9pcnEuaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5j bHVkZSA8eGVuL2xpc3QuaD4KKyNpbmNsdWRlIDx4ZW4vbW0uaD4KKyNpbmNsdWRlIDx4ZW4vdm1h cC5oPgorI2luY2x1ZGUgPHhlbi9yYnRyZWUuaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNp bmNsdWRlIDx4ZW4vc2l6ZXMuaD4KKyNpbmNsdWRlIDx4ZW4vbG9nMi5oPgorI2luY2x1ZGUgPHhl bi9kb21haW5fcGFnZS5oPgorI2luY2x1ZGUgPGFzbS9hdG9taWMuaD4KKyNpbmNsdWRlIDxhc20v ZGV2aWNlLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL3BsYXRmb3JtLmg+ CiAKLSNpbmNsdWRlIDxsaW51eC9pb21tdS5oPgotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgot I2luY2x1ZGUgPGxpbnV4L3NpemVzLmg+Ci0jaW5jbHVkZSA8bGludXgvc2xhYi5oPgotI2luY2x1 ZGUgPGxpbnV4L3R5cGVzLmg+Ci0jaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KKyNpbmNs dWRlICJpby1wZ3RhYmxlLmgiCiAKLSNpbmNsdWRlIDxhc20vYmFycmllci5oPgorLyoqKioqIFN0 YXJ0IG9mIFhlbiBzcGVjaWZpYyBjb2RlICoqKioqLwogCi0jaW5jbHVkZSAiaW8tcGd0YWJsZS5o IgorI2RlZmluZSBJT01NVV9SRUFECSgxIDw8IDApCisjZGVmaW5lIElPTU1VX1dSSVRFCSgxIDw8 IDEpCisjZGVmaW5lIElPTU1VX0NBQ0hFCSgxIDw8IDIpIC8qIERNQSBjYWNoZSBjb2hlcmVuY3kg Ki8KKyNkZWZpbmUgSU9NTVVfTk9FWEVDCSgxIDw8IDMpCisjZGVmaW5lIElPTU1VX01NSU8JKDEg PDwgNCkgLyogZS5nLiB0aGluZ3MgbGlrZSBNU0kgZG9vcmJlbGxzICovCisKKyNkZWZpbmUga2Zy ZWUgeGZyZWUKKyNkZWZpbmUga21hbGxvYyhzaXplLCBmbGFncykJCV94bWFsbG9jKHNpemUsIHNp emVvZih2b2lkICopKQorI2RlZmluZSBremFsbG9jKHNpemUsIGZsYWdzKQkJX3h6YWxsb2Moc2l6 ZSwgc2l6ZW9mKHZvaWQgKikpCisjZGVmaW5lIGRldm1fa3phbGxvYyhkZXYsIHNpemUsIGZsYWdz KQlfeHphbGxvYyhzaXplLCBzaXplb2Yodm9pZCAqKSkKKyNkZWZpbmUga21hbGxvY19hcnJheShz aXplLCBuLCBmbGFncykJX3htYWxsb2NfYXJyYXkoc2l6ZSwgc2l6ZW9mKHZvaWQgKiksIG4pCisK K3R5cGVkZWYgZW51bSB7CisJR0ZQX0tFUk5FTCwKKwlHRlBfQVRPTUlDLAorCV9fR0ZQX0hJR0hN RU0sCisJX19HRlBfSElHSAorfSBnZnBfdDsKKworI2RlZmluZSBfX2Zscyh4KSAoZmxzKHgpIC0g MSkKKyNkZWZpbmUgX19mZnMoeCkgKGZmcyh4KSAtIDEpCisKKy8qCisgKiBSZS1kZWZpbmUgV0FS Tl9PTiB3aXRoIGltcGxlbWVudGF0aW9uIHRoYXQgInJldHVybnMiIHJlc3VsdCB0aGF0CisgKiBh bGxvdyB1cyB0byB1c2UgZm9sbG93aW5nIGNvbnN0cnVjdGlvbjoKKyAqIGlmIChXQVJOX09OKGNv bmRpdGlvbikpCisgKiAgICAgcmV0dXJuIGVycm9yOworICovCisjdW5kZWYgV0FSTl9PTgorI2Rl ZmluZSBXQVJOX09OKGNvbmRpdGlvbikgKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgICAgICBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKGNvbmRpdGlvbik7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAodW5saWtlbHkoX19y ZXRfd2Fybl9vbikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICAgICAgICAgV0FSTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICB1bmxpa2VseShfX3JldF93YXJuX29uKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfSkKKworLyoqKioqIFN0YXJ0IG9mIExpbnV4 IGFsbG9jYXRvciBjb2RlICoqKioqLwogCiAjZGVmaW5lIEFSTV9MUEFFX01BWF9BRERSX0JJVFMJ CTQ4CiAjZGVmaW5lIEFSTV9MUEFFX1MyX01BWF9DT05DQVRfUEFHRVMJMTYKQEAgLTE2Niw5ICsy MjIsMTAgQEAKICNkZWZpbmUgQVJNX0xQQUVfTUFJUl9BVFRSX0lEWF9DQUNIRQkxCiAjZGVmaW5l IEFSTV9MUEFFX01BSVJfQVRUUl9JRFhfREVWCTIKIAorLyogWGVuOiBfX3ZhIGlzIG5vdCBzdWl0 YWJsZSBoZXJlIHVzZSBtYWRkcl90b19wYWdlIGluc3RlYWQuICovCiAvKiBJT1BURSBhY2Nlc3Nv cnMgKi8KICNkZWZpbmUgaW9wdGVfZGVyZWYocHRlLGQpCQkJCQlcCi0JKF9fdmEoKHB0ZSkgJiAo KDFVTEwgPDwgQVJNX0xQQUVfTUFYX0FERFJfQklUUykgLSAxKQlcCisJKG1hZGRyX3RvX3BhZ2Uo KHB0ZSkgJiAoKDFVTEwgPDwgQVJNX0xQQUVfTUFYX0FERFJfQklUUykgLSAxKQlcCiAJJiB+KEFS TV9MUEFFX0dSQU5VTEUoZCkgLSAxVUxMKSkpCiAKICNkZWZpbmUgaW9wdGVfdHlwZShwdGUsbCkJ CQkJCVwKQEAgLTE5NSwxMSArMjUyLDIxIEBAIHN0cnVjdCBhcm1fbHBhZV9pb19wZ3RhYmxlIHsK IAl1bnNpZ25lZCBsb25nCQlwZ19zaGlmdDsKIAl1bnNpZ25lZCBsb25nCQliaXRzX3Blcl9sZXZl bDsKIAotCXZvaWQJCQkqcGdkOworCS8qIFhlbjogV2UgZGVhbCB3aXRoIGRvbWFpbiBwYWdlcy4g Ki8KKwlzdHJ1Y3QgcGFnZV9pbmZvCSpwZ2Q7CiB9OwogCiB0eXBlZGVmIHU2NCBhcm1fbHBhZV9p b3B0ZTsKIAorLyoKKyAqIFhlbjogT3ZlcndyaXRlIExpbnV4IGZ1bmN0aW9ucyB0aGF0IGFyZSBp biBjaGFyZ2Ugb2YgbWVtb3J5CisgKiBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiBieSBYZW4gb25l cy4gVGhlIG1haW4gcmVhc29uIGlzIHRoYXQgd2Ugd2FudCB0bworICogb3BlcmF0ZSB3aXRoIGRv bWFpbiBwYWdlcyBhbmQgYXMgdGhlIHJlc3VsdCB3ZSBoYXZlIHRvIHVzZSBYZW4ncyBBUEkgZm9y IHRoaXMuCisgKiBUYWtpbmcgaW50byBhY2NvdW50IHRoYXQgWGVuJ3MgQVBJIGRlYWxzIHdpdGgg c3RydWN0IHBhZ2VfaW5mbyAqcGFnZQorICogbW9kaWZ5IGFsbCBkZXBlbmRlZCBjb2RlLiBBbHNv IGtlZXAgaW4gbWluZCB0aGF0IHRoZSBkb21haW4gcGFnZXMgbXVzdCBiZQorICogbWFwcGVkIGp1 c3QgYmVmb3JlIHVzaW5nIGl0IGFuZCB1bm1hcHBlZCByaWdodCBhZnRlciB3ZSBjb21wbGV0ZWQu CisgKi8KKyNpZiAwCiBzdGF0aWMgYm9vbCBzZWxmdGVzdF9ydW5uaW5nID0gZmFsc2U7CiAKIHN0 YXRpYyBkbWFfYWRkcl90IF9fYXJtX2xwYWVfZG1hX2FkZHIodm9pZCAqcGFnZXMpCkBAIC0yNTks NiArMzI2LDQxIEBAIHN0YXRpYyB2b2lkIF9fYXJtX2xwYWVfc2V0X3B0ZShhcm1fbHBhZV9pb3B0 ZSAqcHRlcCwgYXJtX2xwYWVfaW9wdGUgcHRlLAogCQkJCQkgICBfX2FybV9scGFlX2RtYV9hZGRy KHB0ZXApLAogCQkJCQkgICBzaXplb2YocHRlKSwgRE1BX1RPX0RFVklDRSk7CiB9CisjZW5kaWYK Kworc3RhdGljIHN0cnVjdCBwYWdlX2luZm8gKl9fYXJtX2xwYWVfYWxsb2NfcGFnZXMoc2l6ZV90 IHNpemUsIGdmcF90IGdmcCwKKwkJCQkgICAgc3RydWN0IGlvX3BndGFibGVfY2ZnICpjZmcpCit7 CisJc3RydWN0IHBhZ2VfaW5mbyAqcGFnZXM7CisJdW5zaWduZWQgaW50IG9yZGVyID0gZ2V0X29y ZGVyX2Zyb21fYnl0ZXMoc2l6ZSk7CisJaW50IGk7CisKKwlwYWdlcyA9IGFsbG9jX2RvbWhlYXBf cGFnZXMoTlVMTCwgb3JkZXIsIDApOworCWlmIChwYWdlcyA9PSBOVUxMKQorCQlyZXR1cm4gTlVM TDsKKworCWZvciAoaSA9IDA7IGkgPCAoMSA8PCBvcmRlcik7IGkgKyspCisJCWNsZWFyX2FuZF9j bGVhbl9wYWdlKHBhZ2VzICsgaSk7CisKKwlyZXR1cm4gcGFnZXM7Cit9CisKK3N0YXRpYyB2b2lk IF9fYXJtX2xwYWVfZnJlZV9wYWdlcyhzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlcywgc2l6ZV90IHNp emUsCisJCQkJICBzdHJ1Y3QgaW9fcGd0YWJsZV9jZmcgKmNmZykKK3sKKwl1bnNpZ25lZCBpbnQg b3JkZXIgPSBnZXRfb3JkZXJfZnJvbV9ieXRlcyhzaXplKTsKKworCWZyZWVfZG9taGVhcF9wYWdl cyhwYWdlcywgb3JkZXIpOworfQorCitzdGF0aWMgdm9pZCBfX2FybV9scGFlX3NldF9wdGUoYXJt X2xwYWVfaW9wdGUgKnB0ZXAsIGFybV9scGFlX2lvcHRlIHB0ZSwKKwkJCSAgICAgICBzdHJ1Y3Qg aW9fcGd0YWJsZV9jZmcgKmNmZykKK3sKKwlzbXBfbWIoKTsKKwkqcHRlcCA9IHB0ZTsKKwlzbXBf bWIoKTsKKwljbGVhbl9kY2FjaGUoKnB0ZXApOworfQogCiBzdGF0aWMgaW50IF9fYXJtX2xwYWVf dW5tYXAoc3RydWN0IGFybV9scGFlX2lvX3BndGFibGUgKmRhdGEsCiAJCQkgICAgdW5zaWduZWQg bG9uZyBpb3ZhLCBzaXplX3Qgc2l6ZSwgaW50IGx2bCwKQEAgLTI3NCw3ICszNzYsOSBAQCBzdGF0 aWMgaW50IGFybV9scGFlX2luaXRfcHRlKHN0cnVjdCBhcm1fbHBhZV9pb19wZ3RhYmxlICpkYXRh LAogCiAJaWYgKGlvcHRlX2xlYWYoKnB0ZXAsIGx2bCkpIHsKIAkJLyogV2UgcmVxdWlyZSBhbiB1 bm1hcCBmaXJzdCAqLworI2lmIDAgLyogWGVuOiBOb3QgbmVlZGVkICovCiAJCVdBUk5fT04oIXNl bGZ0ZXN0X3J1bm5pbmcpOworI2VuZGlmCiAJCXJldHVybiAtRUVYSVNUOwogCX0gZWxzZSBpZiAo aW9wdGVfdHlwZSgqcHRlcCwgbHZsKSA9PSBBUk1fTFBBRV9QVEVfVFlQRV9UQUJMRSkgewogCQkv KgpAQCAtMzA0LDYgKzQwOCw3IEBAIHN0YXRpYyBpbnQgYXJtX2xwYWVfaW5pdF9wdGUoc3RydWN0 IGFybV9scGFlX2lvX3BndGFibGUgKmRhdGEsCiAJcmV0dXJuIDA7CiB9CiAKKy8qIFhlbjogV2Ug ZGVhbCB3aXRoIGRvbWFpbiBwYWdlcy4gKi8KIHN0YXRpYyBpbnQgX19hcm1fbHBhZV9tYXAoc3Ry dWN0IGFybV9scGFlX2lvX3BndGFibGUgKmRhdGEsIHVuc2lnbmVkIGxvbmcgaW92YSwKIAkJCSAg cGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXplLCBhcm1fbHBhZV9pb3B0ZSBwcm90LAogCQkJ ICBpbnQgbHZsLCBhcm1fbHBhZV9pb3B0ZSAqcHRlcCkKQEAgLTMxMSw2ICs0MTYsOCBAQCBzdGF0 aWMgaW50IF9fYXJtX2xwYWVfbWFwKHN0cnVjdCBhcm1fbHBhZV9pb19wZ3RhYmxlICpkYXRhLCB1 bnNpZ25lZCBsb25nIGlvdmEsCiAJYXJtX2xwYWVfaW9wdGUgKmNwdGVwLCBwdGU7CiAJc2l6ZV90 IGJsb2NrX3NpemUgPSBBUk1fTFBBRV9CTE9DS19TSVpFKGx2bCwgZGF0YSk7CiAJc3RydWN0IGlv X3BndGFibGVfY2ZnICpjZmcgPSAmZGF0YS0+aW9wLmNmZzsKKwlzdHJ1Y3QgcGFnZV9pbmZvICpw YWdlOworCWludCByZXQ7CiAKIAkvKiBGaW5kIG91ciBlbnRyeSBhdCB0aGUgY3VycmVudCBsZXZl bCAqLwogCXB0ZXAgKz0gQVJNX0xQQUVfTFZMX0lEWChpb3ZhLCBsdmwsIGRhdGEpOwpAQCAtMzI2 LDIxICs0MzMsMzIgQEAgc3RhdGljIGludCBfX2FybV9scGFlX21hcChzdHJ1Y3QgYXJtX2xwYWVf aW9fcGd0YWJsZSAqZGF0YSwgdW5zaWduZWQgbG9uZyBpb3ZhLAogCS8qIEdyYWIgYSBwb2ludGVy IHRvIHRoZSBuZXh0IGxldmVsICovCiAJcHRlID0gKnB0ZXA7CiAJaWYgKCFwdGUpIHsKLQkJY3B0 ZXAgPSBfX2FybV9scGFlX2FsbG9jX3BhZ2VzKEFSTV9MUEFFX0dSQU5VTEUoZGF0YSksCisJCXBh Z2UgPSBfX2FybV9scGFlX2FsbG9jX3BhZ2VzKEFSTV9MUEFFX0dSQU5VTEUoZGF0YSksCiAJCQkJ CSAgICAgICBHRlBfQVRPTUlDLCBjZmcpOwotCQlpZiAoIWNwdGVwKQorCQlpZiAoIXBhZ2UpCiAJ CQlyZXR1cm4gLUVOT01FTTsKIAotCQlwdGUgPSBfX3BhKGNwdGVwKSB8IEFSTV9MUEFFX1BURV9U WVBFX1RBQkxFOworCQkvKiBYZW46IF9fcGEgaXMgbm90IHN1aXRhYmxlIGhlcmUgdXNlIHBhZ2Vf dG9fbWFkZHIgaW5zdGVhZC4gKi8KKwkJcHRlID0gcGFnZV90b19tYWRkcihwYWdlKSB8IEFSTV9M UEFFX1BURV9UWVBFX1RBQkxFOwogCQlpZiAoY2ZnLT5xdWlya3MgJiBJT19QR1RBQkxFX1FVSVJL X0FSTV9OUykKIAkJCXB0ZSB8PSBBUk1fTFBBRV9QVEVfTlNUQUJMRTsKIAkJX19hcm1fbHBhZV9z ZXRfcHRlKHB0ZXAsIHB0ZSwgY2ZnKTsKKwkvKiBYZW46IFN5bmMgd2l0aCBteSBmaXggZm9yIExp bnV4ICovCisJfSBlbHNlIGlmICghaW9wdGVfbGVhZihwdGUsIGx2bCkpIHsKKwkJcGFnZSA9IGlv cHRlX2RlcmVmKHB0ZSwgZGF0YSk7CiAJfSBlbHNlIHsKLQkJY3B0ZXAgPSBpb3B0ZV9kZXJlZihw dGUsIGRhdGEpOworCQkvKiBXZSByZXF1aXJlIGFuIHVubWFwIGZpcnN0ICovCisjaWYgMCAvKiBY ZW46IE5vdCBuZWVkZWQgKi8KKwkJV0FSTl9PTighc2VsZnRlc3RfcnVubmluZyk7CisjZW5kaWYK KwkJcmV0dXJuIC1FRVhJU1Q7CiAJfQogCiAJLyogUmluc2UsIHJlcGVhdCAqLwotCXJldHVybiBf X2FybV9scGFlX21hcChkYXRhLCBpb3ZhLCBwYWRkciwgc2l6ZSwgcHJvdCwgbHZsICsgMSwgY3B0 ZXApOworCWNwdGVwID0gX19tYXBfZG9tYWluX3BhZ2UocGFnZSk7CisJcmV0ID0gX19hcm1fbHBh ZV9tYXAoZGF0YSwgaW92YSwgcGFkZHIsIHNpemUsIHByb3QsIGx2bCArIDEsIGNwdGVwKTsKKwl1 bm1hcF9kb21haW5fcGFnZShjcHRlcCk7CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGFybV9s cGFlX2lvcHRlIGFybV9scGFlX3Byb3RfdG9fcHRlKHN0cnVjdCBhcm1fbHBhZV9pb19wZ3RhYmxl ICpkYXRhLApAQCAtMzgxLDExICs0OTksMTIgQEAgc3RhdGljIGFybV9scGFlX2lvcHRlIGFybV9s cGFlX3Byb3RfdG9fcHRlKHN0cnVjdCBhcm1fbHBhZV9pb19wZ3RhYmxlICpkYXRhLAogCXJldHVy biBwdGU7CiB9CiAKKy8qIFhlbjogV2UgZGVhbCB3aXRoIGRvbWFpbiBwYWdlcy4gKi8KIHN0YXRp YyBpbnQgYXJtX2xwYWVfbWFwKHN0cnVjdCBpb19wZ3RhYmxlX29wcyAqb3BzLCB1bnNpZ25lZCBs b25nIGlvdmEsCiAJCQlwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUsIGludCBpb21tdV9w cm90KQogewogCXN0cnVjdCBhcm1fbHBhZV9pb19wZ3RhYmxlICpkYXRhID0gaW9fcGd0YWJsZV9v cHNfdG9fZGF0YShvcHMpOwotCWFybV9scGFlX2lvcHRlICpwdGVwID0gZGF0YS0+cGdkOworCWFy bV9scGFlX2lvcHRlICpwdGVwOwogCWludCByZXQsIGx2bCA9IEFSTV9MUEFFX1NUQVJUX0xWTChk YXRhKTsKIAlhcm1fbHBhZV9pb3B0ZSBwcm90OwogCkBAIC0zOTQsMjEgKzUxMywyNiBAQCBzdGF0 aWMgaW50IGFybV9scGFlX21hcChzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMgKm9wcywgdW5zaWduZWQg bG9uZyBpb3ZhLAogCQlyZXR1cm4gMDsKIAogCXByb3QgPSBhcm1fbHBhZV9wcm90X3RvX3B0ZShk YXRhLCBpb21tdV9wcm90KTsKKwlwdGVwID0gX19tYXBfZG9tYWluX3BhZ2UoZGF0YS0+cGdkKTsK IAlyZXQgPSBfX2FybV9scGFlX21hcChkYXRhLCBpb3ZhLCBwYWRkciwgc2l6ZSwgcHJvdCwgbHZs LCBwdGVwKTsKKwl1bm1hcF9kb21haW5fcGFnZShwdGVwKTsKKwogCS8qCiAJICogU3luY2hyb25p c2UgYWxsIFBURSB1cGRhdGVzIGZvciB0aGUgbmV3IG1hcHBpbmcgYmVmb3JlIHRoZXJlJ3MKIAkg KiBhIGNoYW5jZSBmb3IgYW55dGhpbmcgdG8ga2ljayBvZmYgYSB0YWJsZSB3YWxrIGZvciB0aGUg bmV3IGlvdmEuCiAJICovCi0Jd21iKCk7CisJc21wX3dtYigpOwogCiAJcmV0dXJuIHJldDsKIH0K IAorLyogWGVuOiBXZSBkZWFsIHdpdGggZG9tYWluIHBhZ2VzLiAqLwogc3RhdGljIHZvaWQgX19h cm1fbHBhZV9mcmVlX3BndGFibGUoc3RydWN0IGFybV9scGFlX2lvX3BndGFibGUgKmRhdGEsIGlu dCBsdmwsCi0JCQkJICAgIGFybV9scGFlX2lvcHRlICpwdGVwKQorCQkJCSAgICBzdHJ1Y3QgcGFn ZV9pbmZvICpwYWdlKQogewogCWFybV9scGFlX2lvcHRlICpzdGFydCwgKmVuZDsKIAl1bnNpZ25l ZCBsb25nIHRhYmxlX3NpemU7CisJYXJtX2xwYWVfaW9wdGUgKnB0ZXAgPSBfX21hcF9kb21haW5f cGFnZShwYWdlKTsKIAogCWlmIChsdmwgPT0gQVJNX0xQQUVfU1RBUlRfTFZMKGRhdGEpKQogCQl0 YWJsZV9zaXplID0gZGF0YS0+cGdkX3NpemU7CkBAIC00MzIsNyArNTU2LDggQEAgc3RhdGljIHZv aWQgX19hcm1fbHBhZV9mcmVlX3BndGFibGUoc3RydWN0IGFybV9scGFlX2lvX3BndGFibGUgKmRh dGEsIGludCBsdmwsCiAJCV9fYXJtX2xwYWVfZnJlZV9wZ3RhYmxlKGRhdGEsIGx2bCArIDEsIGlv cHRlX2RlcmVmKHB0ZSwgZGF0YSkpOwogCX0KIAotCV9fYXJtX2xwYWVfZnJlZV9wYWdlcyhzdGFy dCwgdGFibGVfc2l6ZSwgJmRhdGEtPmlvcC5jZmcpOworCXVubWFwX2RvbWFpbl9wYWdlKHN0YXJ0 KTsKKwlfX2FybV9scGFlX2ZyZWVfcGFnZXMocGFnZSwgdGFibGVfc2l6ZSwgJmRhdGEtPmlvcC5j ZmcpOwogfQogCiBzdGF0aWMgdm9pZCBhcm1fbHBhZV9mcmVlX3BndGFibGUoc3RydWN0IGlvX3Bn dGFibGUgKmlvcCkKQEAgLTQ0Myw2ICs1NjgsNyBAQCBzdGF0aWMgdm9pZCBhcm1fbHBhZV9mcmVl X3BndGFibGUoc3RydWN0IGlvX3BndGFibGUgKmlvcCkKIAlrZnJlZShkYXRhKTsKIH0KIAorLyog WGVuOiBXZSBkZWFsIHdpdGggZG9tYWluIHBhZ2VzLiAqLwogc3RhdGljIGludCBhcm1fbHBhZV9z cGxpdF9ibGtfdW5tYXAoc3RydWN0IGFybV9scGFlX2lvX3BndGFibGUgKmRhdGEsCiAJCQkJICAg IHVuc2lnbmVkIGxvbmcgaW92YSwgc2l6ZV90IHNpemUsCiAJCQkJICAgIGFybV9scGFlX2lvcHRl IHByb3QsIGludCBsdmwsCkBAIC00NjksOCArNTk1LDEyIEBAIHN0YXRpYyBpbnQgYXJtX2xwYWVf c3BsaXRfYmxrX3VubWFwKHN0cnVjdCBhcm1fbHBhZV9pb19wZ3RhYmxlICpkYXRhLAogCQkJCSAg IHRhYmxlcCkgPCAwKSB7CiAJCQlpZiAodGFibGUpIHsKIAkJCQkvKiBGcmVlIHRoZSB0YWJsZSB3 ZSBhbGxvY2F0ZWQgKi8KLQkJCQl0YWJsZXAgPSBpb3B0ZV9kZXJlZih0YWJsZSwgZGF0YSk7Ci0J CQkJX19hcm1fbHBhZV9mcmVlX3BndGFibGUoZGF0YSwgbHZsICsgMSwgdGFibGVwKTsKKwkJCQkv KgorCQkJCSAqIFhlbjogaW9wdGVfZGVyZWYgcmV0dXJucyBzdHJ1Y3QgcGFnZV9pbmZvICosCisJ CQkJICogaXQgaXMgZXhhY3RseSB3aGF0IHdlIG5lZWQuIFBhc3MgaXQgZGlyZWN0bHkgdG8gZnVu Y3Rpb24KKwkJCQkgKiBpbnN0ZWFkIG9mIGFkZGluZyBuZXcgdmFyaWFibGUuCisJCQkJICovCisJ CQkJX19hcm1fbHBhZV9mcmVlX3BndGFibGUoZGF0YSwgbHZsICsgMSwgaW9wdGVfZGVyZWYodGFi bGUsIGRhdGEpKTsKIAkJCX0KIAkJCXJldHVybiAwOyAvKiBCeXRlcyB1bm1hcHBlZCAqLwogCQl9 CkBAIC00ODIsNiArNjEyLDcgQEAgc3RhdGljIGludCBhcm1fbHBhZV9zcGxpdF9ibGtfdW5tYXAo c3RydWN0IGFybV9scGFlX2lvX3BndGFibGUgKmRhdGEsCiAJcmV0dXJuIHNpemU7CiB9CiAKKy8q IFhlbjogV2UgZGVhbCB3aXRoIGRvbWFpbiBwYWdlcy4gKi8KIHN0YXRpYyBpbnQgX19hcm1fbHBh ZV91bm1hcChzdHJ1Y3QgYXJtX2xwYWVfaW9fcGd0YWJsZSAqZGF0YSwKIAkJCSAgICB1bnNpZ25l ZCBsb25nIGlvdmEsIHNpemVfdCBzaXplLCBpbnQgbHZsLAogCQkJICAgIGFybV9scGFlX2lvcHRl ICpwdGVwKQpAQCAtNDg5LDYgKzYyMCw3IEBAIHN0YXRpYyBpbnQgX19hcm1fbHBhZV91bm1hcChz dHJ1Y3QgYXJtX2xwYWVfaW9fcGd0YWJsZSAqZGF0YSwKIAlhcm1fbHBhZV9pb3B0ZSBwdGU7CiAJ c3RydWN0IGlvX3BndGFibGUgKmlvcCA9ICZkYXRhLT5pb3A7CiAJc2l6ZV90IGJsa19zaXplID0g QVJNX0xQQUVfQkxPQ0tfU0laRShsdmwsIGRhdGEpOworCWludCByZXQ7CiAKIAkvKiBTb21ldGhp bmcgd2VudCBob3JyaWJseSB3cm9uZyBhbmQgd2UgcmFuIG91dCBvZiBwYWdlIHRhYmxlICovCiAJ aWYgKFdBUk5fT04obHZsID09IEFSTV9MUEFFX01BWF9MRVZFTFMpKQpAQCAtNDk2LDYgKzYyOCwx MCBAQCBzdGF0aWMgaW50IF9fYXJtX2xwYWVfdW5tYXAoc3RydWN0IGFybV9scGFlX2lvX3BndGFi bGUgKmRhdGEsCiAKIAlwdGVwICs9IEFSTV9MUEFFX0xWTF9JRFgoaW92YSwgbHZsLCBkYXRhKTsK IAlwdGUgPSAqcHRlcDsKKwkvKgorCSAqIFhlbjogVE9ETzogU29tZXRpbWVzIHdlIGNhdGNoIHRo aXMgc2luY2UgcDJtIHRyaWVzIHRvIHVubWFwCisJICogdGhlIHNhbWUgcGFnZSB0d2ljZS4KKwkg Ki8KIAlpZiAoV0FSTl9PTighcHRlKSkKIAkJcmV0dXJuIDA7CiAKQEAgLTUwOCw4ICs2NDQsMTIg QEAgc3RhdGljIGludCBfX2FybV9scGFlX3VubWFwKHN0cnVjdCBhcm1fbHBhZV9pb19wZ3RhYmxl ICpkYXRhLAogCQkJaW9fcGd0YWJsZV90bGJfYWRkX2ZsdXNoKGlvcCwgaW92YSwgc2l6ZSwKIAkJ CQkJCUFSTV9MUEFFX0dSQU5VTEUoZGF0YSksIGZhbHNlKTsKIAkJCWlvX3BndGFibGVfdGxiX3N5 bmMoaW9wKTsKLQkJCXB0ZXAgPSBpb3B0ZV9kZXJlZihwdGUsIGRhdGEpOwotCQkJX19hcm1fbHBh ZV9mcmVlX3BndGFibGUoZGF0YSwgbHZsICsgMSwgcHRlcCk7CisJCQkvKgorCQkJICogWGVuOiBp b3B0ZV9kZXJlZiByZXR1cm5zIHN0cnVjdCBwYWdlX2luZm8gKiwKKwkJCSAqIGl0IGlzIGV4YWN0 bHkgd2hhdCB3ZSBuZWVkLiBQYXNzIGl0IGRpcmVjdGx5IHRvIGZ1bmN0aW9uCisJCQkgKiBpbnN0 ZWFkIG9mIGFkZGluZyBuZXcgdmFyaWFibGUuCisJCQkgKi8KKwkJCV9fYXJtX2xwYWVfZnJlZV9w Z3RhYmxlKGRhdGEsIGx2bCArIDEsIGlvcHRlX2RlcmVmKHB0ZSwgZGF0YSkpOwogCQl9IGVsc2Ug ewogCQkJaW9fcGd0YWJsZV90bGJfYWRkX2ZsdXNoKGlvcCwgaW92YSwgc2l6ZSwgc2l6ZSwgdHJ1 ZSk7CiAJCX0KQEAgLTUyNiwzOSArNjY2LDQ4IEBAIHN0YXRpYyBpbnQgX19hcm1fbHBhZV91bm1h cChzdHJ1Y3QgYXJtX2xwYWVfaW9fcGd0YWJsZSAqZGF0YSwKIAl9CiAKIAkvKiBLZWVwIG9uIHdh bGtpbicgKi8KLQlwdGVwID0gaW9wdGVfZGVyZWYocHRlLCBkYXRhKTsKLQlyZXR1cm4gX19hcm1f bHBhZV91bm1hcChkYXRhLCBpb3ZhLCBzaXplLCBsdmwgKyAxLCBwdGVwKTsKKwlwdGVwID0gX19t YXBfZG9tYWluX3BhZ2UoaW9wdGVfZGVyZWYocHRlLCBkYXRhKSk7CisJcmV0ID0gX19hcm1fbHBh ZV91bm1hcChkYXRhLCBpb3ZhLCBzaXplLCBsdmwgKyAxLCBwdGVwKTsKKwl1bm1hcF9kb21haW5f cGFnZShwdGVwKTsKKwlyZXR1cm4gcmV0OwogfQogCisvKiBYZW46IFdlIGRlYWwgd2l0aCBkb21h aW4gcGFnZXMuICovCiBzdGF0aWMgaW50IGFybV9scGFlX3VubWFwKHN0cnVjdCBpb19wZ3RhYmxl X29wcyAqb3BzLCB1bnNpZ25lZCBsb25nIGlvdmEsCiAJCQkgIHNpemVfdCBzaXplKQogewogCXNp emVfdCB1bm1hcHBlZDsKIAlzdHJ1Y3QgYXJtX2xwYWVfaW9fcGd0YWJsZSAqZGF0YSA9IGlvX3Bn dGFibGVfb3BzX3RvX2RhdGEob3BzKTsKLQlhcm1fbHBhZV9pb3B0ZSAqcHRlcCA9IGRhdGEtPnBn ZDsKKwlhcm1fbHBhZV9pb3B0ZSAqcHRlcCA9IF9fbWFwX2RvbWFpbl9wYWdlKGRhdGEtPnBnZCk7 CiAJaW50IGx2bCA9IEFSTV9MUEFFX1NUQVJUX0xWTChkYXRhKTsKIAogCXVubWFwcGVkID0gX19h cm1fbHBhZV91bm1hcChkYXRhLCBpb3ZhLCBzaXplLCBsdmwsIHB0ZXApOwogCWlmICh1bm1hcHBl ZCkKIAkJaW9fcGd0YWJsZV90bGJfc3luYygmZGF0YS0+aW9wKTsKKwl1bm1hcF9kb21haW5fcGFn ZShwdGVwKTsKKworCS8qIFhlbjogQWRkIGJhcnJpZXIgaGVyZSB0byBzeW5jaHJvbmlzZSBhbGwg UFRFIHVwZGF0ZXMuICovCisJc21wX3dtYigpOwogCiAJcmV0dXJuIHVubWFwcGVkOwogfQogCisv KiBYZW46IFdlIGRlYWwgd2l0aCBkb21haW4gcGFnZXMuICovCiBzdGF0aWMgcGh5c19hZGRyX3Qg YXJtX2xwYWVfaW92YV90b19waHlzKHN0cnVjdCBpb19wZ3RhYmxlX29wcyAqb3BzLAogCQkJCQkg dW5zaWduZWQgbG9uZyBpb3ZhKQogewogCXN0cnVjdCBhcm1fbHBhZV9pb19wZ3RhYmxlICpkYXRh ID0gaW9fcGd0YWJsZV9vcHNfdG9fZGF0YShvcHMpOwotCWFybV9scGFlX2lvcHRlIHB0ZSwgKnB0 ZXAgPSBkYXRhLT5wZ2Q7CisJYXJtX2xwYWVfaW9wdGUgcHRlLCAqcHRlcCA9IF9fbWFwX2RvbWFp bl9wYWdlKGRhdGEtPnBnZCk7CiAJaW50IGx2bCA9IEFSTV9MUEFFX1NUQVJUX0xWTChkYXRhKTsK IAogCWRvIHsKIAkJLyogVmFsaWQgSU9QVEUgcG9pbnRlcj8gKi8KIAkJaWYgKCFwdGVwKQotCQkJ cmV0dXJuIDA7CisJCQlicmVhazsKIAogCQkvKiBHcmFiIHRoZSBJT1BURSB3ZSdyZSBpbnRlcmVz dGVkIGluICovCiAJCXB0ZSA9ICoocHRlcCArIEFSTV9MUEFFX0xWTF9JRFgoaW92YSwgbHZsLCBk YXRhKSk7CisJCXVubWFwX2RvbWFpbl9wYWdlKHB0ZXApOwogCiAJCS8qIFZhbGlkIGVudHJ5PyAq LwogCQlpZiAoIXB0ZSkKQEAgLTU2OSw5ICs3MTgsMTAgQEAgc3RhdGljIHBoeXNfYWRkcl90IGFy bV9scGFlX2lvdmFfdG9fcGh5cyhzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMgKm9wcywKIAkJCWdvdG8g Zm91bmRfdHJhbnNsYXRpb247CiAKIAkJLyogVGFrZSBpdCB0byB0aGUgbmV4dCBsZXZlbCAqLwot CQlwdGVwID0gaW9wdGVfZGVyZWYocHRlLCBkYXRhKTsKKwkJcHRlcCA9IF9fbWFwX2RvbWFpbl9w YWdlKGlvcHRlX2RlcmVmKHB0ZSwgZGF0YSkpOwogCX0gd2hpbGUgKCsrbHZsIDwgQVJNX0xQQUVf TUFYX0xFVkVMUyk7CiAKKwl1bm1hcF9kb21haW5fcGFnZShwdGVwKTsKIAkvKiBSYW4gb3V0IG9m IHBhZ2UgdGFibGVzIHRvIHdhbGsgKi8KIAlyZXR1cm4gMDsKIApAQCAtNjI2LDE2ICs3NzYsMjUg QEAgYXJtX2xwYWVfYWxsb2NfcGd0YWJsZShzdHJ1Y3QgaW9fcGd0YWJsZV9jZmcgKmNmZykKIAlp ZiAoIShjZmctPnBnc2l6ZV9iaXRtYXAgJiAoU1pfNEsgfCBTWl8xNksgfCBTWl82NEspKSkKIAkJ cmV0dXJuIE5VTEw7CiAKKwkvKgorCSAqIFhlbjogSnVzdCB0byBiZSBzdXJlIHRoYXQgbWluaW11 bSBwYWdlIHN1cHBvcnRlZCBieSB0aGUgSU9NTVUKKwkgKiBpcyBub3QgYmlnZ2VyIHRoYW4gUEFH RV9TSVpFLgorCSAqLworCWlmIChQQUdFX1NJWkUgJiAoKDEgPDwgX19mZnMoY2ZnLT5wZ3NpemVf Yml0bWFwKSkgLSAxKSkKKwkJcmV0dXJuIE5VTEw7CisKIAlpZiAoY2ZnLT5pYXMgPiBBUk1fTFBB RV9NQVhfQUREUl9CSVRTKQogCQlyZXR1cm4gTlVMTDsKIAogCWlmIChjZmctPm9hcyA+IEFSTV9M UEFFX01BWF9BRERSX0JJVFMpCiAJCXJldHVybiBOVUxMOwogCisjaWYgMCAvKiBYZW46IE5vdCBu ZWVkZWQgKi8KIAlpZiAoIXNlbGZ0ZXN0X3J1bm5pbmcgJiYgY2ZnLT5pb21tdV9kZXYtPmRtYV9w Zm5fb2Zmc2V0KSB7CiAJCWRldl9lcnIoY2ZnLT5pb21tdV9kZXYsICJDYW5ub3QgYWNjb21tb2Rh dGUgRE1BIG9mZnNldCBmb3IgSU9NTVUgcGFnZSB0YWJsZXNcbiIpOwogCQlyZXR1cm4gTlVMTDsK IAl9CisjZW5kaWYKIAogCWRhdGEgPSBrbWFsbG9jKHNpemVvZigqZGF0YSksIEdGUF9LRVJORUwp OwogCWlmICghZGF0YSkKQEAgLTczNiwxMCArODk1LDExIEBAIGFybV82NF9scGFlX2FsbG9jX3Bn dGFibGVfczEoc3RydWN0IGlvX3BndGFibGVfY2ZnICpjZmcsIHZvaWQgKmNvb2tpZSkKIAkJZ290 byBvdXRfZnJlZV9kYXRhOwogCiAJLyogRW5zdXJlIHRoZSBlbXB0eSBwZ2QgaXMgdmlzaWJsZSBi ZWZvcmUgYW55IGFjdHVhbCBUVEJSIHdyaXRlICovCi0Jd21iKCk7CisJc21wX3dtYigpOwogCiAJ LyogVFRCUnMgKi8KLQljZmctPmFybV9scGFlX3MxX2NmZy50dGJyWzBdID0gdmlydF90b19waHlz KGRhdGEtPnBnZCk7CisJLyogWGVuOiB2aXJ0X3RvX3BoeXMgaXMgbm90IHN1aXRhYmxlIGhlcmUg dXNlIHBhZ2VfdG9fbWFkZHIgaW5zdGVhZCAqLworCWNmZy0+YXJtX2xwYWVfczFfY2ZnLnR0YnJb MF0gPSBwYWdlX3RvX21hZGRyKGRhdGEtPnBnZCk7CiAJY2ZnLT5hcm1fbHBhZV9zMV9jZmcudHRi clsxXSA9IDA7CiAJcmV0dXJuICZkYXRhLT5pb3A7CiAKQEAgLTc0OCw2ICs5MDgsNyBAQCBvdXRf ZnJlZV9kYXRhOgogCXJldHVybiBOVUxMOwogfQogCisjaWYgMCAvKiBYZW46IE5vdCBuZWVkZWQg Ki8KIHN0YXRpYyBzdHJ1Y3QgaW9fcGd0YWJsZSAqCiBhcm1fNjRfbHBhZV9hbGxvY19wZ3RhYmxl X3MyKHN0cnVjdCBpb19wZ3RhYmxlX2NmZyAqY2ZnLCB2b2lkICpjb29raWUpCiB7CkBAIC04NDAs NiArMTAwMSw3IEBAIG91dF9mcmVlX2RhdGE6CiAJa2ZyZWUoZGF0YSk7CiAJcmV0dXJuIE5VTEw7 CiB9CisjZW5kaWYKIAogc3RhdGljIHN0cnVjdCBpb19wZ3RhYmxlICoKIGFybV8zMl9scGFlX2Fs bG9jX3BndGFibGVfczEoc3RydWN0IGlvX3BndGFibGVfY2ZnICpjZmcsIHZvaWQgKmNvb2tpZSkK QEAgLTg1OSw2ICsxMDIxLDcgQEAgYXJtXzMyX2xwYWVfYWxsb2NfcGd0YWJsZV9zMShzdHJ1Y3Qg aW9fcGd0YWJsZV9jZmcgKmNmZywgdm9pZCAqY29va2llKQogCXJldHVybiBpb3A7CiB9CiAKKyNp ZiAwIC8qIFhlbjogTm90IG5lZWRlZCAqLwogc3RhdGljIHN0cnVjdCBpb19wZ3RhYmxlICoKIGFy bV8zMl9scGFlX2FsbG9jX3BndGFibGVfczIoc3RydWN0IGlvX3BndGFibGVfY2ZnICpjZmcsIHZv aWQgKmNvb2tpZSkKIHsKQEAgLTg3NCwyNiArMTAzNywzNCBAQCBhcm1fMzJfbHBhZV9hbGxvY19w Z3RhYmxlX3MyKHN0cnVjdCBpb19wZ3RhYmxlX2NmZyAqY2ZnLCB2b2lkICpjb29raWUpCiAKIAly ZXR1cm4gaW9wOwogfQorI2VuZGlmCiAKIHN0cnVjdCBpb19wZ3RhYmxlX2luaXRfZm5zIGlvX3Bn dGFibGVfYXJtXzY0X2xwYWVfczFfaW5pdF9mbnMgPSB7CiAJLmFsbG9jCT0gYXJtXzY0X2xwYWVf YWxsb2NfcGd0YWJsZV9zMSwKIAkuZnJlZQk9IGFybV9scGFlX2ZyZWVfcGd0YWJsZSwKIH07CiAK KyNpZiAwIC8qIFhlbjogTm90IG5lZWRlZCAqLwogc3RydWN0IGlvX3BndGFibGVfaW5pdF9mbnMg aW9fcGd0YWJsZV9hcm1fNjRfbHBhZV9zMl9pbml0X2ZucyA9IHsKIAkuYWxsb2MJPSBhcm1fNjRf bHBhZV9hbGxvY19wZ3RhYmxlX3MyLAogCS5mcmVlCT0gYXJtX2xwYWVfZnJlZV9wZ3RhYmxlLAog fTsKKyNlbmRpZgogCiBzdHJ1Y3QgaW9fcGd0YWJsZV9pbml0X2ZucyBpb19wZ3RhYmxlX2FybV8z Ml9scGFlX3MxX2luaXRfZm5zID0gewogCS5hbGxvYwk9IGFybV8zMl9scGFlX2FsbG9jX3BndGFi bGVfczEsCiAJLmZyZWUJPSBhcm1fbHBhZV9mcmVlX3BndGFibGUsCiB9OwogCisjaWYgMCAvKiBY ZW46IE5vdCBuZWVkZWQgKi8KIHN0cnVjdCBpb19wZ3RhYmxlX2luaXRfZm5zIGlvX3BndGFibGVf YXJtXzMyX2xwYWVfczJfaW5pdF9mbnMgPSB7CiAJLmFsbG9jCT0gYXJtXzMyX2xwYWVfYWxsb2Nf cGd0YWJsZV9zMiwKIAkuZnJlZQk9IGFybV9scGFlX2ZyZWVfcGd0YWJsZSwKIH07CisjZW5kaWYK KworLyogWGVuOiAqLworI3VuZGVmIENPTkZJR19JT01NVV9JT19QR1RBQkxFX0xQQUVfU0VMRlRF U1QKIAogI2lmZGVmIENPTkZJR19JT01NVV9JT19QR1RBQkxFX0xQQUVfU0VMRlRFU1QKIApkaWZm IC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL2lvLXBndGFibGUuYyBiL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9pby1wZ3RhYmxlLmMKaW5kZXggMTI3NTU4ZC4uYmZjNzAy MCAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL2lvLXBndGFibGUuYwor KysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vaW8tcGd0YWJsZS5jCkBAIC0xNiwyMiAr MTYsMzMgQEAKICAqIENvcHlyaWdodCAoQykgMjAxNCBBUk0gTGltaXRlZAogICoKICAqIEF1dGhv cjogV2lsbCBEZWFjb24gPHdpbGwuZGVhY29uQGFybS5jb20+CisgKgorICogQmFzZWQgb24gTGlu dXggZHJpdmVycy9pb21tdS9pby1wZ3RhYmxlLmMKKyAqID0+IGNvbW1pdCA1NGM2ZDI0MmZhMzJj YmE4MzEzOTM2ZTNhMzVmMjdkYzJjN2MzZTA0CisgKiAoaW9tbXUvaW8tcGd0YWJsZTogRml4IGEg YnJhY2UgY29kaW5nIHN0eWxlIGlzc3VlKQorICoKKyAqIFhlbiBtb2RpZmljYXRpb246CisgKiBP bGVrc2FuZHIgVHlzaGNoZW5rbyA8T2xla3NhbmRyX1R5c2hjaGVua29AZXBhbS5jb20+CisgKiBD b3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBFUEFNIFN5c3RlbXMgSW5jLgogICovCiAKLSNpbmNsdWRl IDxsaW51eC9idWcuaD4KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLSNpbmNsdWRlIDxsaW51 eC90eXBlcy5oPgotCiAjaW5jbHVkZSAiaW8tcGd0YWJsZS5oIgogCisvKiBYZW46IEp1c3QgY29t cGlsZSB3aGF0IHdlIGV4YWN0bHkgd2FudC4gKi8KKyNkZWZpbmUgQ09ORklHX0lPTU1VX0lPX1BH VEFCTEVfTFBBRQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IGlvX3BndGFibGVfaW5pdF9mbnMgKgog aW9fcGd0YWJsZV9pbml0X3RhYmxlW0lPX1BHVEFCTEVfTlVNX0ZNVFNdID0gewogI2lmZGVmIENP TkZJR19JT01NVV9JT19QR1RBQkxFX0xQQUUKIAlbQVJNXzMyX0xQQUVfUzFdID0gJmlvX3BndGFi bGVfYXJtXzMyX2xwYWVfczFfaW5pdF9mbnMsCisjaWYgMCAvKiBYZW46IE5vdCBuZWVkZWQgKi8K IAlbQVJNXzMyX0xQQUVfUzJdID0gJmlvX3BndGFibGVfYXJtXzMyX2xwYWVfczJfaW5pdF9mbnMs CisjZW5kaWYKIAlbQVJNXzY0X0xQQUVfUzFdID0gJmlvX3BndGFibGVfYXJtXzY0X2xwYWVfczFf aW5pdF9mbnMsCisjaWYgMCAvKiBYZW46IE5vdCBuZWVkZWQgKi8KIAlbQVJNXzY0X0xQQUVfUzJd ID0gJmlvX3BndGFibGVfYXJtXzY0X2xwYWVfczJfaW5pdF9mbnMsCiAjZW5kaWYKKyNlbmRpZgog I2lmZGVmIENPTkZJR19JT01NVV9JT19QR1RBQkxFX0FSTVY3UwogCVtBUk1fVjdTXSA9ICZpb19w Z3RhYmxlX2FybV92N3NfaW5pdF9mbnMsCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2FybS9pby1wZ3RhYmxlLmggYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9h cm0vaW8tcGd0YWJsZS5oCmluZGV4IDk2OWQ4MmMuLmZiODFmY2YgMTAwNjQ0Ci0tLSBhL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9pby1wZ3RhYmxlLmgKKysrIGIveGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvYXJtL2lvLXBndGFibGUuaApAQCAtMSw2ICsxLDExIEBACiAjaWZuZGVmIF9fSU9f UEdUQUJMRV9ICiAjZGVmaW5lIF9fSU9fUEdUQUJMRV9ICi0jaW5jbHVkZSA8bGludXgvYml0b3Bz Lmg+CisjaW5jbHVkZSA8YXNtL2RldmljZS5oPgorI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgorCisv KiBYZW4gKi8KK3R5cGVkZWYgcGFkZHJfdCBwaHlzX2FkZHJfdDsKK3R5cGVkZWYgcGFkZHJfdCBk bWFfYWRkcl90OwogCiAvKgogICogUHVibGljIEFQSSBmb3IgdXNlIGJ5IElPTU1VIGRyaXZlcnMK QEAgLTIwMCw5ICsyMDUsMTYgQEAgc3RydWN0IGlvX3BndGFibGVfaW5pdF9mbnMgewogfTsKIAog ZXh0ZXJuIHN0cnVjdCBpb19wZ3RhYmxlX2luaXRfZm5zIGlvX3BndGFibGVfYXJtXzMyX2xwYWVf czFfaW5pdF9mbnM7CisjaWYgMCAvKiBYZW46IE5vdCBuZWVkZWQgKi8KIGV4dGVybiBzdHJ1Y3Qg aW9fcGd0YWJsZV9pbml0X2ZucyBpb19wZ3RhYmxlX2FybV8zMl9scGFlX3MyX2luaXRfZm5zOwor I2VuZGlmCiBleHRlcm4gc3RydWN0IGlvX3BndGFibGVfaW5pdF9mbnMgaW9fcGd0YWJsZV9hcm1f NjRfbHBhZV9zMV9pbml0X2ZuczsKKyNpZiAwIC8qIFhlbjogTm90IG5lZWRlZCAqLwogZXh0ZXJu IHN0cnVjdCBpb19wZ3RhYmxlX2luaXRfZm5zIGlvX3BndGFibGVfYXJtXzY0X2xwYWVfczJfaW5p dF9mbnM7CisjZW5kaWYKKy8qIFhlbjogRml4ICovCisjaWZkZWYgQ09ORklHX0lPTU1VX0lPX1BH VEFCTEVfQVJNVjdTCiBleHRlcm4gc3RydWN0IGlvX3BndGFibGVfaW5pdF9mbnMgaW9fcGd0YWJs ZV9hcm1fdjdzX2luaXRfZm5zOworI2VuZGlmCiAKICNlbmRpZiAvKiBfX0lPX1BHVEFCTEVfSCAq LwotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBz Oi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK