From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: [PATCH 15/28] drm/vmwgfx: Add kms helpers for dirty- and readback functions Date: Wed, 12 Aug 2015 22:43:04 -0700 Message-ID: <1439444597-4664-16-git-send-email-thellstrom@vmware.com> References: <1439444597-4664-1-git-send-email-thellstrom@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx2.bahnhof.se (mx2.bahnhof.se [213.80.101.12]) by gabe.freedesktop.org (Postfix) with ESMTPS id 440596EBF1 for ; Wed, 12 Aug 2015 23:06:13 -0700 (PDT) Received: from localhost (mf.bahnhof.se [213.80.101.20]) by mx2-reinject (Postfix) with ESMTP id 4806E41125 for ; Thu, 13 Aug 2015 07:43:34 +0200 (CEST) Received: from mf3.bahnhof.se ([127.0.0.1]) by localhost (mf3.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Xy04OTMYUuts for ; Thu, 13 Aug 2015 07:43:25 +0200 (CEST) Received: from mail.shipmail.org (h-5-150-198-217.na.cust.bahnhof.se [5.150.198.217]) by mf3.bahnhof.se (Postfix) with ESMTP id 99A943E8CF0 for ; Thu, 13 Aug 2015 07:43:25 +0200 (CEST) Received: from mail.shipmail.org (lin0.kontor.shipmail.org [127.0.0.1]) by mail.shipmail.org (Postfix) with ESMTP id 3EE233F4007 for ; Thu, 13 Aug 2015 07:43:25 +0200 (CEST) Received: from localhost.localdomain (lin0.kontor.shipmail.org [127.0.0.1]) by mail.shipmail.org (Postfix) with ESMTP id 22FB13F4006 for ; Thu, 13 Aug 2015 07:43:25 +0200 (CEST) In-Reply-To: <1439444597-4664-1-git-send-email-thellstrom@vmware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org V2UgbmVlZCB0byBtYWtlIHRoZSBkaXJ0eS0gYW5kIHJlYWRiYWNrIGZ1bmN0aW9ucyBjYWxsYWJs ZSB3aXRob3V0IGEgc3RydWN0CmRybV9maWxlIHBvaW50ZXIuIFdlIGFsc28gbmVlZCB0byB1bmlm eSB0aGUgaGFuZGxpbmcgb2YgZGlydHktIGFuZCByZWFkYmFjawpjbGlwcmVjdHMgdGhhdCBhcmUg bm93IGltcGxlbWVudGVkIGluIHZhcmlvdXMgcGxhY2VzIGFjcm9zcyB0aGUga21zIHN5c3RlbSwK c29tIGFkZCBoZWxwZXJzIHRvIGZhY2lsaXRhdGUgdGhpcy4KClNpZ25lZC1vZmYtYnk6IFRob21h cyBIZWxsc3Ryb20gPHRoZWxsc3Ryb21Adm13YXJlLmNvbT4KUmV2aWV3ZWQtYnk6IFNpbmNsYWly IFllaCA8c3llaEB2bXdhcmUuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4 X2Rydi5oICAgICAgfCAgMTAgKy0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2V4ZWNi dWYuYyAgfCAgMTkgKy0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5jICAgICAg fCAyOTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL3Zt d2dmeC92bXdnZnhfa21zLmggICAgICB8ICA3MSArKysrKysrLQogZHJpdmVycy9ncHUvZHJtL3Zt d2dmeC92bXdnZnhfcmVzb3VyY2UuYyB8ICAxOCArLQogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92 bXdnZnhfc3RkdS5jICAgICB8ICAgMiArLQogNiBmaWxlcyBjaGFuZ2VkLCAzOTEgaW5zZXJ0aW9u cygrKSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaAppbmRl eCAxMmVhYTZjLi43NTA0ZjkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Zt d2dmeF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaApAQCAt NjQwLDcgKzY0MCw4IEBAIGV4dGVybiBzdHJ1Y3Qgdm13X3Jlc291cmNlICp2bXdfcmVzb3VyY2Vf cmVmZXJlbmNlKHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcyk7CiBleHRlcm4gc3RydWN0IHZtd19y ZXNvdXJjZSAqCiB2bXdfcmVzb3VyY2VfcmVmZXJlbmNlX3VubGVzc19kb29tZWQoc3RydWN0IHZt d19yZXNvdXJjZSAqcmVzKTsKIGV4dGVybiBpbnQgdm13X3Jlc291cmNlX3ZhbGlkYXRlKHN0cnVj dCB2bXdfcmVzb3VyY2UgKnJlcyk7Ci1leHRlcm4gaW50IHZtd19yZXNvdXJjZV9yZXNlcnZlKHN0 cnVjdCB2bXdfcmVzb3VyY2UgKnJlcywgYm9vbCBub19iYWNrdXApOworZXh0ZXJuIGludCB2bXdf cmVzb3VyY2VfcmVzZXJ2ZShzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMsIGJvb2wgaW50ZXJydXB0 aWJsZSwKKwkJCQlib29sIG5vX2JhY2t1cCk7CiBleHRlcm4gYm9vbCB2bXdfcmVzb3VyY2VfbmVl ZHNfYmFja3VwKGNvbnN0IHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcyk7CiBleHRlcm4gaW50IHZt d191c2VyX2xvb2t1cF9oYW5kbGUoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkg IHN0cnVjdCB0dG1fb2JqZWN0X2ZpbGUgKnRmaWxlLApAQCAtODYwLDYgKzg2MSwxMSBAQCBleHRl cm4gdm9pZCB2bXdfZXhlY2J1Zl9jb3B5X2ZlbmNlX3VzZXIoc3RydWN0IHZtd19wcml2YXRlICpk ZXZfcHJpdiwKIAkJCQkJKnVzZXJfZmVuY2VfcmVwLAogCQkJCQlzdHJ1Y3Qgdm13X2ZlbmNlX29i aiAqZmVuY2UsCiAJCQkJCXVpbnQzMl90IGZlbmNlX2hhbmRsZSk7CitleHRlcm4gaW50IHZtd192 YWxpZGF0ZV9zaW5nbGVfYnVmZmVyKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJ ICAgICAgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKKwkJCQkgICAgICBib29sIGludGVy cnVwdGlibGUsCisJCQkJICAgICAgYm9vbCB2YWxpZGF0ZV9hc19tb2IpOworCiAKIC8qKgogICog SVJRcyBhbmQgd2F0aW5nIC0gdm13Z2Z4X2lycS5jCkBAIC05NjUsNyArOTcxLDcgQEAgaW50IHZt d19kdW1iX21hcF9vZmZzZXQoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCiBpbnQgdm13X2R1 bWJfZGVzdHJveShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKIAkJICAgICBzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCQkgICAgIHVpbnQzMl90IGhhbmRsZSk7Ci1leHRlcm4gaW50IHZtd19y ZXNvdXJjZV9waW4oc3RydWN0IHZtd19yZXNvdXJjZSAqcmVzKTsKK2V4dGVybiBpbnQgdm13X3Jl c291cmNlX3BpbihzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMsIGJvb2wgaW50ZXJydXB0aWJsZSk7 CiBleHRlcm4gdm9pZCB2bXdfcmVzb3VyY2VfdW5waW4oc3RydWN0IHZtd19yZXNvdXJjZSAqcmVz KTsKIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9leGVj YnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9leGVjYnVmLmMKaW5kZXggOTJl ODk5OC4uNjk4YTBlMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhf ZXhlY2J1Zi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2V4ZWNidWYuYwpA QCAtMzc1LDcgKzM3NSw3IEBAIHN0YXRpYyBpbnQgdm13X3Jlc291cmNlc19yZXNlcnZlKHN0cnVj dCB2bXdfc3dfY29udGV4dCAqc3dfY29udGV4dCkKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZhbCwg JnN3X2NvbnRleHQtPnJlc291cmNlX2xpc3QsIGhlYWQpIHsKIAkJc3RydWN0IHZtd19yZXNvdXJj ZSAqcmVzID0gdmFsLT5yZXM7CiAKLQkJcmV0ID0gdm13X3Jlc291cmNlX3Jlc2VydmUocmVzLCB2 YWwtPm5vX2J1ZmZlcl9uZWVkZWQpOworCQlyZXQgPSB2bXdfcmVzb3VyY2VfcmVzZXJ2ZShyZXMs IHRydWUsIHZhbC0+bm9fYnVmZmVyX25lZWRlZCk7CiAJCWlmICh1bmxpa2VseShyZXQgIT0gMCkp CiAJCQlyZXR1cm4gcmV0OwogCkBAIC0yMjM0LDkgKzIyMzQsMTAgQEAgc3RhdGljIHZvaWQgdm13 X2NsZWFyX3ZhbGlkYXRpb25zKHN0cnVjdCB2bXdfc3dfY29udGV4dCAqc3dfY29udGV4dCkKIAkJ KHZvaWQpIGRybV9odF9yZW1vdmVfaXRlbSgmc3dfY29udGV4dC0+cmVzX2h0LCAmdmFsLT5oYXNo KTsKIH0KIAotc3RhdGljIGludCB2bXdfdmFsaWRhdGVfc2luZ2xlX2J1ZmZlcihzdHJ1Y3Qgdm13 X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCSAgICAgIHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAq Ym8sCi0JCQkJICAgICAgYm9vbCB2YWxpZGF0ZV9hc19tb2IpCitpbnQgdm13X3ZhbGlkYXRlX3Np bmdsZV9idWZmZXIoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgICAgICBzdHJ1 Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAorCQkJICAgICAgIGJvb2wgaW50ZXJydXB0aWJsZSwK KwkJCSAgICAgICBib29sIHZhbGlkYXRlX2FzX21vYikKIHsKIAlzdHJ1Y3Qgdm13X2RtYV9idWZm ZXIgKnZibyA9IGNvbnRhaW5lcl9vZihibywgc3RydWN0IHZtd19kbWFfYnVmZmVyLAogCQkJCQkJ ICBiYXNlKTsKQEAgLTIyNDYsNyArMjI0Nyw4IEBAIHN0YXRpYyBpbnQgdm13X3ZhbGlkYXRlX3Np bmdsZV9idWZmZXIoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKIAkJcmV0dXJuIDA7CiAK IAlpZiAodmFsaWRhdGVfYXNfbW9iKQotCQlyZXR1cm4gdHRtX2JvX3ZhbGlkYXRlKGJvLCAmdm13 X21vYl9wbGFjZW1lbnQsIHRydWUsIGZhbHNlKTsKKwkJcmV0dXJuIHR0bV9ib192YWxpZGF0ZShi bywgJnZtd19tb2JfcGxhY2VtZW50LCBpbnRlcnJ1cHRpYmxlLAorCQkJCSAgICAgICBmYWxzZSk7 CiAKIAkvKioKIAkgKiBQdXQgQk8gaW4gVlJBTSBpZiB0aGVyZSBpcyBzcGFjZSwgb3RoZXJ3aXNl IGFzIGEgR01SLgpAQCAtMjI1NSw3ICsyMjU3LDggQEAgc3RhdGljIGludCB2bXdfdmFsaWRhdGVf c2luZ2xlX2J1ZmZlcihzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogCSAqIHVzZWQgYXMg YSBHTVIsIHRoaXMgd2lsbCByZXR1cm4gLUVOT01FTS4KIAkgKi8KIAotCXJldCA9IHR0bV9ib192 YWxpZGF0ZShibywgJnZtd192cmFtX2dtcl9wbGFjZW1lbnQsIHRydWUsIGZhbHNlKTsKKwlyZXQg PSB0dG1fYm9fdmFsaWRhdGUoYm8sICZ2bXdfdnJhbV9nbXJfcGxhY2VtZW50LCBpbnRlcnJ1cHRp YmxlLAorCQkJICAgICAgZmFsc2UpOwogCWlmIChsaWtlbHkocmV0ID09IDAgfHwgcmV0ID09IC1F UkVTVEFSVFNZUykpCiAJCXJldHVybiByZXQ7CiAKQEAgLTIyNjQsOCArMjI2Nyw3IEBAIHN0YXRp YyBpbnQgdm13X3ZhbGlkYXRlX3NpbmdsZV9idWZmZXIoc3RydWN0IHZtd19wcml2YXRlICpkZXZf cHJpdiwKIAkgKiBwcmV2aW91cyBjb250ZW50cy4KIAkgKi8KIAotCURSTV9JTkZPKCJGYWxsaW5n IHRocm91Z2ggdG8gVlJBTS5cbiIpOwotCXJldCA9IHR0bV9ib192YWxpZGF0ZShibywgJnZtd192 cmFtX3BsYWNlbWVudCwgdHJ1ZSwgZmFsc2UpOworCXJldCA9IHR0bV9ib192YWxpZGF0ZShibywg JnZtd192cmFtX3BsYWNlbWVudCwgaW50ZXJydXB0aWJsZSwgZmFsc2UpOwogCXJldHVybiByZXQ7 CiB9CiAKQEAgLTIyNzcsNiArMjI3OSw3IEBAIHN0YXRpYyBpbnQgdm13X3ZhbGlkYXRlX2J1ZmZl cnMoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKIAogCWxpc3RfZm9yX2VhY2hfZW50cnko ZW50cnksICZzd19jb250ZXh0LT52YWxpZGF0ZV9ub2RlcywgYmFzZS5oZWFkKSB7CiAJCXJldCA9 IHZtd192YWxpZGF0ZV9zaW5nbGVfYnVmZmVyKGRldl9wcml2LCBlbnRyeS0+YmFzZS5ibywKKwkJ CQkJCSB0cnVlLAogCQkJCQkJIGVudHJ5LT52YWxpZGF0ZV9hc19tb2IpOwogCQlpZiAodW5saWtl bHkocmV0ICE9IDApKQogCQkJcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS92bXdnZngvdm13Z2Z4X2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21z LmMKaW5kZXggOTllMmY1Yi4uYzQ2YzY4OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Zt d2dmeC92bXdnZnhfa21zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21z LmMKQEAgLTE4MjEsMyArMTgyMSwyOTUgQEAgb3V0X2ZyZWU6CiAJa2ZyZWUocmVjdHMpOwogCXJl dHVybiByZXQ7CiB9CisKKy8qKgorICogdm13X2ttc19oZWxwZXJfZGlydHkgLSBIZWxwZXIgdG8g YnVpbGQgY29tbWFuZHMgYW5kIHBlcmZvcm0gYWN0aW9ucyBiYXNlZAorICogb24gYSBzZXQgb2Yg Y2xpcHJlY3RzIGFuZCBhIHNldCBvZiBkaXNwbGF5IHVuaXRzLgorICoKKyAqIEBkZXZfcHJpdjog UG9pbnRlciB0byBhIGRldmljZSBwcml2YXRlIHN0cnVjdHVyZS4KKyAqIEBmcmFtZWJ1ZmZlcjog UG9pbnRlciB0byB0aGUgZnJhbWVidWZmZXIgb24gd2hpY2ggdG8gcGVyZm9ybSB0aGUgYWN0aW9u cy4KKyAqIEBjbGlwczogQSBzZXQgb2Ygc3RydWN0IGRybV9jbGlwX3JlY3QuIEVpdGhlciB0aGlz IG9zIEB2Y2xpcHMgbXVzdCBiZSBOVUxMLgorICogQ2xpcHJlY3RzIGFyZSBnaXZlbiBpbiBmcmFt ZWJ1ZmZlciBjb29yZGluYXRlcy4KKyAqIEB2Y2xpcHM6IEEgc2V0IG9mIHN0cnVjdCBkcm1fdm13 X3JlY3QgY2xpcHJlY3RzLiBFaXRoZXIgdGhpcyBvciBAY2xpcHMgbXVzdAorICogYmUgTlVMTC4g Q2xpcHJlY3RzIGFyZSBnaXZlbiBpbiBzb3VyY2UgY29vcmRpbmF0ZXMuCisgKiBAZGVzdF94OiBY IGNvb3JkaW5hdGUgb2Zmc2V0IGZvciB0aGUgY3J0YyAvIGRlc3RpbmF0aW9uIGNsaXAgcmVjdHMu CisgKiBAZGVzdF95OiBZIGNvb3JkaW5hdGUgb2Zmc2V0IGZvciB0aGUgY3J0YyAvIGRlc3RpbmF0 aW9uIGNsaXAgcmVjdHMuCisgKiBAbnVtX2NsaXBzOiBOdW1iZXIgb2YgY2xpcHJlY3RzIGluIHRo ZSBAY2xpcHMgb3IgQHZjbGlwcyBhcnJheS4KKyAqIEBpbmNyZW1lbnQ6IEludGVnZXIgd2l0aCB3 aGljaCB0byBpbmNyZW1lbnQgdGhlIGNsaXAgY291bnRlciB3aGVuIGxvb3BpbmcuCisgKiBVc2Vk IHRvIHNraXAgYSBwcmVkZXRlcm1pbmVkIG51bWJlciBvZiBjbGlwIHJlY3RzLgorICogQGRpcnR5 OiBDbG9zdXJlIHN0cnVjdHVyZS4gU2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBzdHJ1Y3Qgdm13X2tt c19kaXJ0eS4KKyAqLworaW50IHZtd19rbXNfaGVscGVyX2RpcnR5KHN0cnVjdCB2bXdfcHJpdmF0 ZSAqZGV2X3ByaXYsCisJCQkgc3RydWN0IHZtd19mcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCisJ CQkgY29uc3Qgc3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXBzLAorCQkJIGNvbnN0IHN0cnVjdCBk cm1fdm13X3JlY3QgKnZjbGlwcywKKwkJCSBzMzIgZGVzdF94LCBzMzIgZGVzdF95LAorCQkJIGlu dCBudW1fY2xpcHMsCisJCQkgaW50IGluY3JlbWVudCwKKwkJCSBzdHJ1Y3Qgdm13X2ttc19kaXJ0 eSAqZGlydHkpCit7CisJc3RydWN0IHZtd19kaXNwbGF5X3VuaXQgKnVuaXRzW1ZNV0dGWF9OVU1f RElTUExBWV9VTklUU107CisJc3RydWN0IGRybV9jcnRjICpjcnRjOworCXUzMiBudW1fdW5pdHMg PSAwOworCXUzMiBpLCBrOworCWludCByZXQ7CisKKwlkaXJ0eS0+ZGV2X3ByaXYgPSBkZXZfcHJp djsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkoY3J0YywgJmRldl9wcml2LT5kZXYtPm1vZGVfY29u ZmlnLmNydGNfbGlzdCwgaGVhZCkgeworCQlpZiAoY3J0Yy0+cHJpbWFyeS0+ZmIgIT0gJmZyYW1l YnVmZmVyLT5iYXNlKQorCQkJY29udGludWU7CisJCXVuaXRzW251bV91bml0cysrXSA9IHZtd19j cnRjX3RvX2R1KGNydGMpOworCX0KKworCWZvciAoayA9IDA7IGsgPCBudW1fdW5pdHM7IGsrKykg eworCQlzdHJ1Y3Qgdm13X2Rpc3BsYXlfdW5pdCAqdW5pdCA9IHVuaXRzW2tdOworCQlzMzIgY3J0 Y194ID0gdW5pdC0+Y3J0Yy54OworCQlzMzIgY3J0Y195ID0gdW5pdC0+Y3J0Yy55OworCQlzMzIg Y3J0Y193aWR0aCA9IHVuaXQtPmNydGMubW9kZS5oZGlzcGxheTsKKwkJczMyIGNydGNfaGVpZ2h0 ID0gdW5pdC0+Y3J0Yy5tb2RlLnZkaXNwbGF5OworCQljb25zdCBzdHJ1Y3QgZHJtX2NsaXBfcmVj dCAqY2xpcHNfcHRyID0gY2xpcHM7CisJCWNvbnN0IHN0cnVjdCBkcm1fdm13X3JlY3QgKnZjbGlw c19wdHIgPSB2Y2xpcHM7CisKKwkJZGlydHktPnVuaXQgPSB1bml0OworCQlpZiAoZGlydHktPmZp Zm9fcmVzZXJ2ZV9zaXplID4gMCkgeworCQkJZGlydHktPmNtZCA9IHZtd19maWZvX3Jlc2VydmUo ZGV2X3ByaXYsCisJCQkJCQkgICAgICBkaXJ0eS0+Zmlmb19yZXNlcnZlX3NpemUpOworCQkJaWYg KCFkaXJ0eS0+Y21kKSB7CisJCQkJRFJNX0VSUk9SKCJDb3VsZG4ndCByZXNlcnZlIGZpZm8gc3Bh Y2UgIgorCQkJCQkgICJmb3IgZGlydHkgYmxpdHMuXG4iKTsKKwkJCQlyZXR1cm4gcmV0OworCQkJ fQorCQkJbWVtc2V0KGRpcnR5LT5jbWQsIDAsIGRpcnR5LT5maWZvX3Jlc2VydmVfc2l6ZSk7CisJ CX0KKwkJZGlydHktPm51bV9oaXRzID0gMDsKKwkJZm9yIChpID0gMDsgaSA8IG51bV9jbGlwczsg aSsrLCBjbGlwc19wdHIgKz0gaW5jcmVtZW50LAorCQkgICAgICAgdmNsaXBzX3B0ciArPSBpbmNy ZW1lbnQpIHsKKwkJCXMzMiBjbGlwX2xlZnQ7CisJCQlzMzIgY2xpcF90b3A7CisKKwkJCS8qCisJ CQkgKiBTZWxlY3QgY2xpcCBhcnJheSB0eXBlLiBOb3RlIHRoYXQgaW50ZWdlciB0eXBlCisJCQkg KiBpbiBAY2xpcHMgaXMgdW5zaWduZWQgc2hvcnQsIHdoZXJlYXMgaW4gQHZjbGlwcworCQkJICog aXQncyAzMi1iaXQuCisJCQkgKi8KKwkJCWlmIChjbGlwcykgeworCQkJCWRpcnR5LT5mYl94ID0g KHMzMikgY2xpcHNfcHRyLT54MTsKKwkJCQlkaXJ0eS0+ZmJfeSA9IChzMzIpIGNsaXBzX3B0ci0+ eTE7CisJCQkJZGlydHktPnVuaXRfeDIgPSAoczMyKSBjbGlwc19wdHItPngyICsgZGVzdF94IC0K KwkJCQkJY3J0Y194OworCQkJCWRpcnR5LT51bml0X3kyID0gKHMzMikgY2xpcHNfcHRyLT55MiAr IGRlc3RfeSAtCisJCQkJCWNydGNfeTsKKwkJCX0gZWxzZSB7CisJCQkJZGlydHktPmZiX3ggPSB2 Y2xpcHNfcHRyLT54OworCQkJCWRpcnR5LT5mYl95ID0gdmNsaXBzX3B0ci0+eTsKKwkJCQlkaXJ0 eS0+dW5pdF94MiA9IGRpcnR5LT5mYl94ICsgdmNsaXBzX3B0ci0+dyArCisJCQkJCWRlc3RfeCAt IGNydGNfeDsKKwkJCQlkaXJ0eS0+dW5pdF95MiA9IGRpcnR5LT5mYl95ICsgdmNsaXBzX3B0ci0+ aCArCisJCQkJCWRlc3RfeSAtIGNydGNfeTsKKwkJCX0KKworCQkJZGlydHktPnVuaXRfeDEgPSBk aXJ0eS0+ZmJfeCArIGRlc3RfeCAtIGNydGNfeDsKKwkJCWRpcnR5LT51bml0X3kxID0gZGlydHkt PmZiX3kgKyBkZXN0X3kgLSBjcnRjX3k7CisKKwkJCS8qIFNraXAgdGhpcyBjbGlwIGlmIGl0J3Mg b3V0c2lkZSB0aGUgY3J0YyByZWdpb24gKi8KKwkJCWlmIChkaXJ0eS0+dW5pdF94MSA+PSBjcnRj X3dpZHRoIHx8CisJCQkgICAgZGlydHktPnVuaXRfeTEgPj0gY3J0Y19oZWlnaHQgfHwKKwkJCSAg ICBkaXJ0eS0+dW5pdF94MiA8PSAwIHx8IGRpcnR5LT51bml0X3kyIDw9IDApCisJCQkJY29udGlu dWU7CisKKwkJCS8qIENsaXAgcmlnaHQgYW5kIGJvdHRvbSB0byBjcnRjIGxpbWl0cyAqLworCQkJ ZGlydHktPnVuaXRfeDIgPSBtaW5fdChzMzIsIGRpcnR5LT51bml0X3gyLAorCQkJCQkgICAgICAg Y3J0Y193aWR0aCk7CisJCQlkaXJ0eS0+dW5pdF95MiA9IG1pbl90KHMzMiwgZGlydHktPnVuaXRf eTIsCisJCQkJCSAgICAgICBjcnRjX2hlaWdodCk7CisKKwkJCS8qIENsaXAgbGVmdCBhbmQgdG9w IHRvIGNydGMgbGltaXRzICovCisJCQljbGlwX2xlZnQgPSBtaW5fdChzMzIsIGRpcnR5LT51bml0 X3gxLCAwKTsKKwkJCWNsaXBfdG9wID0gbWluX3QoczMyLCBkaXJ0eS0+dW5pdF95MSwgMCk7CisJ CQlkaXJ0eS0+dW5pdF94MSAtPSBjbGlwX2xlZnQ7CisJCQlkaXJ0eS0+dW5pdF95MSAtPSBjbGlw X3RvcDsKKwkJCWRpcnR5LT5mYl94IC09IGNsaXBfbGVmdDsKKwkJCWRpcnR5LT5mYl95IC09IGNs aXBfdG9wOworCisJCQlkaXJ0eS0+Y2xpcChkaXJ0eSk7CisJCX0KKworCQlkaXJ0eS0+Zmlmb19j b21taXQoZGlydHkpOworCX0KKworCXJldHVybiAwOworfQorCisvKioKKyAqIHZtd19rbXNfaGVs cGVyX2J1ZmZlcl9wcmVwYXJlIC0gUmVzZXJ2ZSBhbmQgdmFsaWRhdGUgYSBidWZmZXIgb2JqZWN0 IGJlZm9yZQorICogY29tbWFuZCBzdWJtaXNzaW9uLgorICoKKyAqIEBkZXZfcHJpdi4gUG9pbnRl ciB0byBhIGRldmljZSBwcml2YXRlIHN0cnVjdHVyZS4KKyAqIEBidWY6IFRoZSBidWZmZXIgb2Jq ZWN0CisgKiBAaW50ZXJydXB0aWJsZTogV2hldGhlciB0byBwZXJmb3JtIHdhaXRzIGFzIGludGVy cnVwdGlibGUuCisgKiBAdmFsaWRhdGVfYXNfbW9iOiBXaGV0aGVyIHRoZSBidWZmZXIgc2hvdWxk IGJlIHZhbGlkYXRlZCBhcyBhIE1PQi4gSWYgZmFsc2UsCisgKiBUaGUgYnVmZmVyIHdpbGwgYmUg dmFsaWRhdGVkIGFzIGEgR01SLiBBbHJlYWR5IHBpbm5lZCBidWZmZXJzIHdpbGwgbm90IGJlCisg KiB2YWxpZGF0ZWQuCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9y IGNvZGUgb24gZmFpbHVyZSwgLUVSRVNUQVJUU1lTIGlmCisgKiBpbnRlcnJ1cHRlZCBieSBhIHNp Z25hbC4KKyAqLworaW50IHZtd19rbXNfaGVscGVyX2J1ZmZlcl9wcmVwYXJlKHN0cnVjdCB2bXdf cHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJICBzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKmJ1ZiwKKwkJ CQkgIGJvb2wgaW50ZXJydXB0aWJsZSwKKwkJCQkgIGJvb2wgdmFsaWRhdGVfYXNfbW9iKQorewor CXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSAmYnVmLT5iYXNlOworCWludCByZXQ7CisK Kwl0dG1fYm9fcmVzZXJ2ZShibywgZmFsc2UsIGZhbHNlLCBpbnRlcnJ1cHRpYmxlLCAwKTsKKwly ZXQgPSB2bXdfdmFsaWRhdGVfc2luZ2xlX2J1ZmZlcihkZXZfcHJpdiwgYm8sIGludGVycnVwdGli bGUsCisJCQkJCSB2YWxpZGF0ZV9hc19tb2IpOworCWlmIChyZXQpCisJCXR0bV9ib191bnJlc2Vy dmUoYm8pOworCisJcmV0dXJuIHJldDsKK30KKworLyoqCisgKiB2bXdfa21zX2hlbHBlcl9idWZm ZXJfcmV2ZXJ0IC0gVW5kbyB0aGUgYWN0aW9ucyBvZgorICogdm13X2ttc19oZWxwZXJfYnVmZmVy X3ByZXBhcmUuCisgKgorICogQHJlczogUG9pbnRlciB0byB0aGUgYnVmZmVyIG9iamVjdC4KKyAq CisgKiBIZWxwZXIgdG8gYmUgdXNlZCBpZiBhbiBlcnJvciBmb3JjZXMgdGhlIGNhbGxlciB0byB1 bmRvIHRoZSBhY3Rpb25zIG9mCisgKiB2bXdfa21zX2hlbHBlcl9idWZmZXJfcHJlcGFyZS4KKyAq Lwordm9pZCB2bXdfa21zX2hlbHBlcl9idWZmZXJfcmV2ZXJ0KHN0cnVjdCB2bXdfZG1hX2J1ZmZl ciAqYnVmKQoreworCWlmIChidWYpCisJCXR0bV9ib191bnJlc2VydmUoJmJ1Zi0+YmFzZSk7Cit9 CisKKy8qKgorICogdm13X2ttc19oZWxwZXJfYnVmZmVyX2ZpbmlzaCAtIFVucmVzZXJ2ZSBhbmQg ZmVuY2UgYSBidWZmZXIgb2JqZWN0IGFmdGVyCisgKiBrbXMgY29tbWFuZCBzdWJtaXNzaW9uLgor ICoKKyAqIEBkZXZfcHJpdjogUG9pbnRlciB0byBhIGRldmljZSBwcml2YXRlIHN0cnVjdHVyZS4K KyAqIEBmaWxlX3ByaXY6IFBvaW50ZXIgdG8gYSBzdHJ1Y3QgZHJtX2ZpbGUgcmVwcmVzZW50aW5n IHRoZSBjYWxsZXIncworICogY29ubmVjdGlvbi4gTXVzdCBiZSBzZXQgdG8gTlVMTCBpZiBAdXNl cl9mZW5jZV9yZXAgaXMgTlVMTCwgYW5kIGNvbnZlcnNlbHkKKyAqIGlmIG5vbi1OVUxMLCBAdXNl cl9mZW5jZV9yZXAgbXVzdCBiZSBub24tTlVMTC4KKyAqIEBidWY6IFRoZSBidWZmZXIgb2JqZWN0 LgorICogQG91dF9mZW5jZTogIE9wdGlvbmFsIHBvaW50ZXIgdG8gYSBmZW5jZSBwb2ludGVyLiBJ ZiBub24tTlVMTCwgYQorICogcmVmLWNvdW50ZWQgZmVuY2UgcG9pbnRlciBpcyByZXR1cm5lZCBo ZXJlLgorICogQHVzZXJfZmVuY2VfcmVwOiBPcHRpb25hbCBwb2ludGVyIHRvIGEgdXNlci1zcGFj ZSBwcm92aWRlZCBzdHJ1Y3QKKyAqIGRybV92bXdfZmVuY2VfcmVwLiBJZiBwcm92aWRlZCwgQGZp bGVfcHJpdiBtdXN0IGFsc28gYmUgcHJvdmlkZWQgYW5kIHRoZQorICogZnVuY3Rpb24gY29waWVz IGZlbmNlIGRhdGEgdG8gdXNlci1zcGFjZSBpbiBhIGZhaWwtc2FmZSBtYW5uZXIuCisgKi8KK3Zv aWQgdm13X2ttc19oZWxwZXJfYnVmZmVyX2ZpbmlzaChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9w cml2LAorCQkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCisJCQkJICBzdHJ1Y3Qgdm13 X2RtYV9idWZmZXIgKmJ1ZiwKKwkJCQkgIHN0cnVjdCB2bXdfZmVuY2Vfb2JqICoqb3V0X2ZlbmNl LAorCQkJCSAgc3RydWN0IGRybV92bXdfZmVuY2VfcmVwIF9fdXNlciAqCisJCQkJICB1c2VyX2Zl bmNlX3JlcCkKK3sKKwlzdHJ1Y3Qgdm13X2ZlbmNlX29iaiAqZmVuY2U7CisJdWludDMyX3QgaGFu ZGxlOworCWludCByZXQ7CisKKwlyZXQgPSB2bXdfZXhlY2J1Zl9mZW5jZV9jb21tYW5kcyhmaWxl X3ByaXYsIGRldl9wcml2LCAmZmVuY2UsCisJCQkJCSBmaWxlX3ByaXYgPyAmaGFuZGxlIDogTlVM TCk7CisJaWYgKGJ1ZikKKwkJdm13X2ZlbmNlX3NpbmdsZV9ibygmYnVmLT5iYXNlLCBmZW5jZSk7 CisJaWYgKGZpbGVfcHJpdikKKwkJdm13X2V4ZWNidWZfY29weV9mZW5jZV91c2VyKGRldl9wcml2 LCB2bXdfZnByaXYoZmlsZV9wcml2KSwKKwkJCQkJICAgIHJldCwgdXNlcl9mZW5jZV9yZXAsIGZl bmNlLAorCQkJCQkgICAgaGFuZGxlKTsKKwlpZiAob3V0X2ZlbmNlKQorCQkqb3V0X2ZlbmNlID0g ZmVuY2U7CisJZWxzZQorCQl2bXdfZmVuY2Vfb2JqX3VucmVmZXJlbmNlKCZmZW5jZSk7CisKKwl2 bXdfa21zX2hlbHBlcl9idWZmZXJfcmV2ZXJ0KGJ1Zik7Cit9CisKKworLyoqCisgKiB2bXdfa21z X2hlbHBlcl9yZXNvdXJjZV9yZXZlcnQgLSBVbmRvIHRoZSBhY3Rpb25zIG9mCisgKiB2bXdfa21z X2hlbHBlcl9yZXNvdXJjZV9wcmVwYXJlLgorICoKKyAqIEByZXM6IFBvaW50ZXIgdG8gdGhlIHJl c291cmNlLiBUeXBpY2FsbHkgYSBzdXJmYWNlLgorICoKKyAqIEhlbHBlciB0byBiZSB1c2VkIGlm IGFuIGVycm9yIGZvcmNlcyB0aGUgY2FsbGVyIHRvIHVuZG8gdGhlIGFjdGlvbnMgb2YKKyAqIHZt d19rbXNfaGVscGVyX3Jlc291cmNlX3ByZXBhcmUuCisgKi8KK3ZvaWQgdm13X2ttc19oZWxwZXJf cmVzb3VyY2VfcmV2ZXJ0KHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcykKK3sKKwl2bXdfa21zX2hl bHBlcl9idWZmZXJfcmV2ZXJ0KHJlcy0+YmFja3VwKTsKKwl2bXdfcmVzb3VyY2VfdW5yZXNlcnZl KHJlcywgTlVMTCwgMCk7CisJbXV0ZXhfdW5sb2NrKCZyZXMtPmRldl9wcml2LT5jbWRidWZfbXV0 ZXgpOworfQorCisvKioKKyAqIHZtd19rbXNfaGVscGVyX3Jlc291cmNlX3ByZXBhcmUgLSBSZXNl cnZlIGFuZCB2YWxpZGF0ZSBhIHJlc291cmNlIGJlZm9yZQorICogY29tbWFuZCBzdWJtaXNzaW9u LgorICoKKyAqIEByZXM6IFBvaW50ZXIgdG8gdGhlIHJlc291cmNlLiBUeXBpY2FsbHkgYSBzdXJm YWNlLgorICogQGludGVycnVwdGlibGU6IFdoZXRoZXIgdG8gcGVyZm9ybSB3YWl0cyBhcyBpbnRl cnJ1cHRpYmxlLgorICoKKyAqIFJlc2VydmVzIGFuZCB2YWxpZGF0ZXMgYWxzbyB0aGUgYmFja3Vw IGJ1ZmZlciBpZiBhIGd1ZXN0LWJhY2tlZCByZXNvdXJjZS4KKyAqIFJldHVybnMgMCBvbiBzdWNj ZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuIC1FUkVTVEFSVFNZUyBpZgorICog aW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuCisgKi8KK2ludCB2bXdfa21zX2hlbHBlcl9yZXNvdXJj ZV9wcmVwYXJlKHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcywKKwkJCQkgICAgYm9vbCBpbnRlcnJ1 cHRpYmxlKQoreworCWludCByZXQgPSAwOworCisJaWYgKGludGVycnVwdGlibGUpCisJCXJldCA9 IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmcmVzLT5kZXZfcHJpdi0+Y21kYnVmX211dGV4KTsK KwllbHNlCisJCW11dGV4X2xvY2soJnJlcy0+ZGV2X3ByaXYtPmNtZGJ1Zl9tdXRleCk7CisKKwlp ZiAodW5saWtlbHkocmV0ICE9IDApKQorCQlyZXR1cm4gLUVSRVNUQVJUU1lTOworCisJcmV0ID0g dm13X3Jlc291cmNlX3Jlc2VydmUocmVzLCBpbnRlcnJ1cHRpYmxlLCBmYWxzZSk7CisJaWYgKHJl dCkKKwkJZ290byBvdXRfdW5sb2NrOworCisJaWYgKHJlcy0+YmFja3VwKSB7CisJCXJldCA9IHZt d19rbXNfaGVscGVyX2J1ZmZlcl9wcmVwYXJlKHJlcy0+ZGV2X3ByaXYsIHJlcy0+YmFja3VwLAor CQkJCQkJICAgIGludGVycnVwdGlibGUsCisJCQkJCQkgICAgcmVzLT5kZXZfcHJpdi0+aGFzX21v Yik7CisJCWlmIChyZXQpCisJCQlnb3RvIG91dF91bnJlc2VydmU7CisJfQorCXJldCA9IHZtd19y ZXNvdXJjZV92YWxpZGF0ZShyZXMpOworCWlmIChyZXQpCisJCWdvdG8gb3V0X3JldmVydDsKKwly ZXR1cm4gMDsKKworb3V0X3JldmVydDoKKwl2bXdfa21zX2hlbHBlcl9idWZmZXJfcmV2ZXJ0KHJl cy0+YmFja3VwKTsKK291dF91bnJlc2VydmU6CisJdm13X3Jlc291cmNlX3VucmVzZXJ2ZShyZXMs IE5VTEwsIDApOworb3V0X3VubG9jazoKKwltdXRleF91bmxvY2soJnJlcy0+ZGV2X3ByaXYtPmNt ZGJ1Zl9tdXRleCk7CisJcmV0dXJuIHJldDsKK30KKworLyoqCisgKiB2bXdfa21zX2hlbHBlcl9y ZXNvdXJjZV9maW5pc2ggLSBVbnJlc2VydmUgYW5kIGZlbmNlIGEgcmVzb3VyY2UgYWZ0ZXIKKyAq IGttcyBjb21tYW5kIHN1Ym1pc3Npb24uCisgKgorICogQHJlczogUG9pbnRlciB0byB0aGUgcmVz b3VyY2UuIFR5cGljYWxseSBhIHN1cmZhY2UuCisgKiBAb3V0X2ZlbmNlOiBPcHRpb25hbCBwb2lu dGVyIHRvIGEgZmVuY2UgcG9pbnRlci4gSWYgbm9uLU5VTEwsIGEKKyAqIHJlZi1jb3VudGVkIGZl bmNlIHBvaW50ZXIgaXMgcmV0dXJuZWQgaGVyZS4KKyAqLwordm9pZCB2bXdfa21zX2hlbHBlcl9y ZXNvdXJjZV9maW5pc2goc3RydWN0IHZtd19yZXNvdXJjZSAqcmVzLAorCQkJICAgICBzdHJ1Y3Qg dm13X2ZlbmNlX29iaiAqKm91dF9mZW5jZSkKK3sKKwlpZiAocmVzLT5iYWNrdXAgfHwgb3V0X2Zl bmNlKQorCQl2bXdfa21zX2hlbHBlcl9idWZmZXJfZmluaXNoKHJlcy0+ZGV2X3ByaXYsIE5VTEws IHJlcy0+YmFja3VwLAorCQkJCQkgICAgIG91dF9mZW5jZSwgTlVMTCk7CisKKwl2bXdfcmVzb3Vy Y2VfdW5yZXNlcnZlKHJlcywgTlVMTCwgMCk7CisJbXV0ZXhfdW5sb2NrKCZyZXMtPmRldl9wcml2 LT5jbWRidWZfbXV0ZXgpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92 bXdnZnhfa21zLmggYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuaAppbmRleCBk YjhhZTk0Li5jMTlhNTE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dm eF9rbXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuaApAQCAtMzIs NyArMzIsNTAgQEAKICNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+CiAjaW5jbHVkZSAi dm13Z2Z4X2Rydi5oIgogCi0KKy8qKgorICogc3RydWN0IHZtd19rbXNfZGlydHkgLSBjbG9zdXJl IHN0cnVjdHVyZSBmb3IgdGhlIHZtd19rbXNfaGVscGVyX2RpcnR5CisgKiBmdW5jdGlvbi4KKyAq CisgKiBAZmlmb19jb21taXQ6IENhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIG9uY2UgZm9yIGVhY2gg ZGlzcGxheSB1bml0IGFmdGVyCisgKiBhbGwgY2xpcCByZWN0cy4gVGhpcyBmdW5jdGlvbiBtdXN0 IGNvbW1pdCB0aGUgZmlmbyBzcGFjZSByZXNlcnZlZCBieSB0aGUKKyAqIGhlbHBlci4gU2V0IHVw IGJ5IHRoZSBjYWxsZXIuCisgKiBAY2xpcDogQ2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgZm9yIGVh Y2ggY2xpcHJlY3Qgb24gZWFjaCBkaXNwbGF5IHVuaXQuCisgKiBTZXQgdXAgYnkgdGhlIGNhbGxl ci4KKyAqIEBmaWZvX3Jlc2VydmVfc2l6ZTogRmlmbyBzaXplIHRoYXQgdGhlIGhlbHBlciBzaG91 bGQgdHJ5IHRvIGFsbG9jYXQgZm9yCisgKiBlYWNoIGRpc3BsYXkgdW5pdC4gU2V0IHVwIGJ5IHRo ZSBjYWxsZXIuCisgKiBAZGV2X3ByaXY6IFBvaW50ZXIgdG8gdGhlIGRldmljZSBwcml2YXRlLiBT ZXQgdXAgYnkgdGhlIGhlbHBlci4KKyAqIEB1bml0OiBUaGUgY3VycmVudCBkaXNwbGF5IHVuaXQu IFNldCB1cCBieSB0aGUgaGVscGVyIGJlZm9yZSBhIGNhbGwgdG8gQGNsaXAuCisgKiBAY21kOiBU aGUgYWxsb2NhdGVkIGZpZm8gc3BhY2UuIFNldCB1cCBieSB0aGUgaGVscGVyIGJlZm9yZSB0aGUg Zmlyc3QgQGNsaXAKKyAqIGNhbGwuCisgKiBAbnVtX2hpdHM6IE51bWJlciBvZiBjbGlwIHJlY3Qg Y29tbWFuZHMgZm9yIHRoaXMgZGlzcGxheSB1bml0LgorICogQ2xlYXJlZCBieSB0aGUgaGVscGVy IGJlZm9yZSB0aGUgZmlyc3QgQGNsaXAgY2FsbC4gVXBkYXRlZCBieSB0aGUgQGNsaXAKKyAqIGNh bGxiYWNrLgorICogQGZiX3g6IENsaXAgcmVjdCBsZWZ0IHNpZGUgaW4gZnJhbWVidWZmZXIgY29v cmRpbmF0ZXMuCisgKiBAZmJfeTogQ2xpcCByZWN0IHJpZ2h0IHNpZGUgaW4gZnJhbWVidWZmZXIg Y29vcmRpbmF0ZXMuCisgKiBAdW5pdF94MTogQ2xpcCByZWN0IGxlZnQgc2lkZSBpbiBjcnRjIGNv b3JkaW5hdGVzLgorICogQHVuaXRfeTE6IENsaXAgcmVjdCB0b3Agc2lkZSBpbiBjcnRjIGNvb3Jk aW5hdGVzLgorICogQHVuaXRfeDI6IENsaXAgcmVjdCByaWdodCBzaWRlIGluIGNydGMgY29vcmRp bmF0ZXMuCisgKiBAdW5pdF95MjogQ2xpcCByZWN0IGJvdHRvbSBzaWRlIGluIGNydGMgY29vcmRp bmF0ZXMuCisgKgorICogVGhlIGNsaXAgcmVjdCBjb29yZGluYXRlcyBhcmUgdXBkYXRlZCBieSB0 aGUgaGVscGVyIGZvciBlYWNoIEBjbGlwIGNhbGwuCisgKiBOb3RlIHRoYXQgdGhpcyBtYXkgYmUg ZGVyaXZlZCBmcm9tIGlmIG1vcmUgaW5mbyBuZWVkcyB0byBiZSBwYXNzZWQgYmV0d2VlbgorICog aGVscGVyIGNhbGxlciBhbmQgaGVscGVyIGNhbGxiYWNrcy4KKyAqLworc3RydWN0IHZtd19rbXNf ZGlydHkgeworCXZvaWQgKCpmaWZvX2NvbW1pdCkoc3RydWN0IHZtd19rbXNfZGlydHkgKik7CisJ dm9pZCAoKmNsaXApKHN0cnVjdCB2bXdfa21zX2RpcnR5ICopOworCXNpemVfdCBmaWZvX3Jlc2Vy dmVfc2l6ZTsKKwlzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2OworCXN0cnVjdCB2bXdfZGlz cGxheV91bml0ICp1bml0OworCXZvaWQgKmNtZDsKKwl1MzIgbnVtX2hpdHM7CisJczMyIGZiX3g7 CisJczMyIGZiX3k7CisJczMyIHVuaXRfeDE7CisJczMyIHVuaXRfeTE7CisJczMyIHVuaXRfeDI7 CisJczMyIHVuaXRfeTI7Cit9OwogCiAjZGVmaW5lIFZNV0dGWF9OVU1fRElTUExBWV9VTklUUyA4 CiAKQEAgLTE3Myw3ICsyMTYsMzEgQEAgaW50IHZtd19kdV9jb25uZWN0b3JfZmlsbF9tb2Rlcyhz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogaW50IHZtd19kdV9jb25uZWN0b3Jfc2V0 X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCQkJICBzdHJ1Y3Qg ZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKIAkJCQkgIHVpbnQ2NF90IHZhbCk7Ci0KK2ludCB2bXdf a21zX2hlbHBlcl9kaXJ0eShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAorCQkJIHN0cnVj dCB2bXdfZnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLAorCQkJIGNvbnN0IHN0cnVjdCBkcm1fY2xp cF9yZWN0ICpjbGlwcywKKwkJCSBjb25zdCBzdHJ1Y3QgZHJtX3Ztd19yZWN0ICp2Y2xpcHMsCisJ CQkgczMyIGRlc3RfeCwgczMyIGRlc3RfeSwKKwkJCSBpbnQgbnVtX2NsaXBzLAorCQkJIGludCBp bmNyZW1lbnQsCisJCQkgc3RydWN0IHZtd19rbXNfZGlydHkgKmRpcnR5KTsKKworaW50IHZtd19r bXNfaGVscGVyX2J1ZmZlcl9wcmVwYXJlKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCisJ CQkJICBzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKmJ1ZiwKKwkJCQkgIGJvb2wgaW50ZXJydXB0aWJs ZSwKKwkJCQkgIGJvb2wgdmFsaWRhdGVfYXNfbW9iKTsKK3ZvaWQgdm13X2ttc19oZWxwZXJfYnVm ZmVyX3JldmVydChzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKmJ1Zik7Cit2b2lkIHZtd19rbXNfaGVs cGVyX2J1ZmZlcl9maW5pc2goc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkgIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAorCQkJCSAgc3RydWN0IHZtd19kbWFfYnVmZmVyICpi dWYsCisJCQkJICBzdHJ1Y3Qgdm13X2ZlbmNlX29iaiAqKm91dF9mZW5jZSwKKwkJCQkgIHN0cnVj dCBkcm1fdm13X2ZlbmNlX3JlcCBfX3VzZXIgKgorCQkJCSAgdXNlcl9mZW5jZV9yZXApOworaW50 IHZtd19rbXNfaGVscGVyX3Jlc291cmNlX3ByZXBhcmUoc3RydWN0IHZtd19yZXNvdXJjZSAqcmVz LAorCQkJCSAgICBib29sIGludGVycnVwdGlibGUpOwordm9pZCB2bXdfa21zX2hlbHBlcl9yZXNv dXJjZV9yZXZlcnQoc3RydWN0IHZtd19yZXNvdXJjZSAqcmVzKTsKK3ZvaWQgdm13X2ttc19oZWxw ZXJfcmVzb3VyY2VfZmluaXNoKHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcywKKwkJCQkgICAgc3Ry dWN0IHZtd19mZW5jZV9vYmogKipvdXRfZmVuY2UpOwogCiAvKgogICogTGVnYWN5IGRpc3BsYXkg dW5pdCBmdW5jdGlvbnMgLSB2bXdnZnhfbGR1LmMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS92bXdnZngvdm13Z2Z4X3Jlc291cmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dm eF9yZXNvdXJjZS5jCmluZGV4IDI3MWJjOTAuLjUyMWYxOTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS92bXdnZngvdm13Z2Z4X3Jlc291cmNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zt d2dmeC92bXdnZnhfcmVzb3VyY2UuYwpAQCAtMTI1OSw3ICsxMjU5LDggQEAgb3V0X25vX3Jlc2Vy dmU6CiAgKiB0aGUgYnVmZmVyIG1heSBub3QgYmUgYm91bmQgdG8gdGhlIHJlc291cmNlIGF0IHRo aXMgcG9pbnQuCiAgKgogICovCi1pbnQgdm13X3Jlc291cmNlX3Jlc2VydmUoc3RydWN0IHZtd19y ZXNvdXJjZSAqcmVzLCBib29sIG5vX2JhY2t1cCkKK2ludCB2bXdfcmVzb3VyY2VfcmVzZXJ2ZShz dHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMsIGJvb2wgaW50ZXJydXB0aWJsZSwKKwkJCSBib29sIG5v X2JhY2t1cCkKIHsKIAlzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2ID0gcmVzLT5kZXZfcHJp djsKIAlpbnQgcmV0OwpAQCAtMTI3MCw3ICsxMjcxLDcgQEAgaW50IHZtd19yZXNvdXJjZV9yZXNl cnZlKHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcywgYm9vbCBub19iYWNrdXApCiAKIAlpZiAocmVz LT5mdW5jLT5uZWVkc19iYWNrdXAgJiYgcmVzLT5iYWNrdXAgPT0gTlVMTCAmJgogCSAgICAhbm9f YmFja3VwKSB7Ci0JCXJldCA9IHZtd19yZXNvdXJjZV9idWZfYWxsb2MocmVzLCB0cnVlKTsKKwkJ cmV0ID0gdm13X3Jlc291cmNlX2J1Zl9hbGxvYyhyZXMsIGludGVycnVwdGlibGUpOwogCQlpZiAo dW5saWtlbHkocmV0ICE9IDApKQogCQkJcmV0dXJuIHJldDsKIAl9CkBAIC0xNTg0LDE0ICsxNTg1 LDE0IEBAIHZvaWQgdm13X3Jlc291cmNlX2V2aWN0X2FsbChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRl dl9wcml2KQogICogaXRzIGlkIHdpbGwgbmV2ZXIgY2hhbmdlIGFzIGxvbmcgYXMgdGhlcmUgaXMg YSBwaW4gcmVmZXJlbmNlLgogICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIDAgb24gc3VjY2VzcyBh bmQgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCiAgKi8KLWludCB2bXdfcmVzb3Vy Y2VfcGluKHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcykKK2ludCB2bXdfcmVzb3VyY2VfcGluKHN0 cnVjdCB2bXdfcmVzb3VyY2UgKnJlcywgYm9vbCBpbnRlcnJ1cHRpYmxlKQogewogCXN0cnVjdCB2 bXdfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXMtPmRldl9wcml2OwogCWludCByZXQ7CiAKLQl0dG1f d3JpdGVfbG9jaygmZGV2X3ByaXYtPnJlc2VydmF0aW9uX3NlbSwgZmFsc2UpOworCXR0bV93cml0 ZV9sb2NrKCZkZXZfcHJpdi0+cmVzZXJ2YXRpb25fc2VtLCBpbnRlcnJ1cHRpYmxlKTsKIAltdXRl eF9sb2NrKCZkZXZfcHJpdi0+Y21kYnVmX211dGV4KTsKLQlyZXQgPSB2bXdfcmVzb3VyY2VfcmVz ZXJ2ZShyZXMsIGZhbHNlKTsKKwlyZXQgPSB2bXdfcmVzb3VyY2VfcmVzZXJ2ZShyZXMsIGludGVy cnVwdGlibGUsIGZhbHNlKTsKIAlpZiAocmV0KQogCQlnb3RvIG91dF9ub19yZXNlcnZlOwogCkBA IC0xNjAxLDEyICsxNjAyLDEzIEBAIGludCB2bXdfcmVzb3VyY2VfcGluKHN0cnVjdCB2bXdfcmVz b3VyY2UgKnJlcykKIAkJaWYgKHJlcy0+YmFja3VwKSB7CiAJCQl2Ym8gPSByZXMtPmJhY2t1cDsK IAotCQkJdHRtX2JvX3Jlc2VydmUoJnZiby0+YmFzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgTlVM TCk7CisJCQl0dG1fYm9fcmVzZXJ2ZSgmdmJvLT5iYXNlLCBpbnRlcnJ1cHRpYmxlLCBmYWxzZSwg ZmFsc2UsCisJCQkJICAgICAgIE5VTEwpOwogCQkJaWYgKCF2Ym8tPnBpbl9jb3VudCkgewogCQkJ CXJldCA9IHR0bV9ib192YWxpZGF0ZQogCQkJCQkoJnZiby0+YmFzZSwKIAkJCQkJIHJlcy0+ZnVu Yy0+YmFja3VwX3BsYWNlbWVudCwKLQkJCQkJIGZhbHNlLCBmYWxzZSk7CisJCQkJCSBpbnRlcnJ1 cHRpYmxlLCBmYWxzZSk7CiAJCQkJaWYgKHJldCkgewogCQkJCQl0dG1fYm9fdW5yZXNlcnZlKCZ2 Ym8tPmJhc2UpOwogCQkJCQlnb3RvIG91dF9ub192YWxpZGF0ZTsKQEAgLTE2NDksNyArMTY1MSw3 IEBAIHZvaWQgdm13X3Jlc291cmNlX3VucGluKHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcykKIAl0 dG1fcmVhZF9sb2NrKCZkZXZfcHJpdi0+cmVzZXJ2YXRpb25fc2VtLCBmYWxzZSk7CiAJbXV0ZXhf bG9jaygmZGV2X3ByaXYtPmNtZGJ1Zl9tdXRleCk7CiAKLQlyZXQgPSB2bXdfcmVzb3VyY2VfcmVz ZXJ2ZShyZXMsIHRydWUpOworCXJldCA9IHZtd19yZXNvdXJjZV9yZXNlcnZlKHJlcywgZmFsc2Us IHRydWUpOwogCVdBUk5fT04ocmV0KTsKIAogCVdBUk5fT04ocmVzLT5waW5fY291bnQgPT0gMCk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9zdGR1LmMgYi9kcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9zdGR1LmMKaW5kZXggZWY5OWRmNy4uYmVjZjk2NSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc3RkdS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3N0ZHUuYwpAQCAtOTEsNyArOTEsNyBAQCBzdGF0 aWMgdm9pZCB2bXdfc3RkdV9kZXN0cm95KHN0cnVjdCB2bXdfc2NyZWVuX3RhcmdldF9kaXNwbGF5 X3VuaXQgKnN0ZHUpOwogICovCiBzdGF0aWMgaW50IHZtd19zdGR1X3Bpbl9kaXNwbGF5KHN0cnVj dCB2bXdfc2NyZWVuX3RhcmdldF9kaXNwbGF5X3VuaXQgKnN0ZHUpCiB7Ci0JcmV0dXJuIHZtd19y ZXNvdXJjZV9waW4oJnN0ZHUtPmRpc3BsYXlfc3JmLT5yZXMpOworCXJldHVybiB2bXdfcmVzb3Vy Y2VfcGluKCZzdGR1LT5kaXNwbGF5X3NyZi0+cmVzLCBmYWxzZSk7CiB9CiAKIAotLSAKMi4xLjAK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=