From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: [PATCH 6/7] drm/vmwgfx: Add DX query support. Various fixes. Date: Wed, 12 Aug 2015 22:49:07 -0700 Message-ID: <1439444948-4746-7-git-send-email-thellstrom@vmware.com> References: <1439444948-4746-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 mx6.bahnhof.se (mx6.bahnhof.se [213.80.101.16]) by gabe.freedesktop.org (Postfix) with ESMTPS id D81B37A08E for ; Wed, 12 Aug 2015 22:49:25 -0700 (PDT) Received: from localhost (mf.bahnhof.se [213.80.101.20]) by mx6-reinject (Postfix) with ESMTP id 89852417AA for ; Thu, 13 Aug 2015 07:49:24 +0200 (CEST) Received: from mf1.bahnhof.se ([127.0.0.1]) by localhost (mf1.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id UgUniA+3doEd for ; Thu, 13 Aug 2015 07:49:18 +0200 (CEST) Received: from mail.shipmail.org (h-5-150-198-217.na.cust.bahnhof.se [5.150.198.217]) by mf1.bahnhof.se (Postfix) with ESMTP id 514BB386EF0 for ; Thu, 13 Aug 2015 07:49:18 +0200 (CEST) Received: from mail.shipmail.org (lin0.kontor.shipmail.org [127.0.0.1]) by mail.shipmail.org (Postfix) with ESMTP id 47A673F400D for ; Thu, 13 Aug 2015 07:49:17 +0200 (CEST) Received: from localhost.localdomain (lin0.kontor.shipmail.org [127.0.0.1]) by mail.shipmail.org (Postfix) with ESMTP id 08D5D3F4008 for ; Thu, 13 Aug 2015 07:49:17 +0200 (CEST) In-Reply-To: <1439444948-4746-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 RnJvbTogU2luY2xhaXIgWWVoIDxzeWVoQHZtd2FyZS5jb20+CgpBZGQgc3VwcG9ydCBmb3Igdmdw dTEwIHF1ZXJpZXMuIEZ1bmN0aW9uYWwtIGFuZCBmb3JtYXR0aW5nIGZpeGVzLgoKU2lnbmVkLW9m Zi1ieTogU2luY2xhaXIgWWVoIDxzeWVoQHZtd2FyZS5jb20+ClNpZ25lZC1vZmYtYnk6IFRob21h cyBIZWxsc3Ryb20gPHRoZWxsc3Ryb21Adm13YXJlLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v dm13Z2Z4L3Ztd2dmeF9idWZmZXIuYyAgIHwgICA5ICstCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4 L3Ztd2dmeF9jb250ZXh0LmMgIHwgIDcwICsrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vdm13 Z2Z4L3Ztd2dmeF9kcnYuaCAgICAgIHwgIDEwICsrCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Zt d2dmeF9leGVjYnVmLmMgIHwgMjA5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIGRy aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3Jlc291cmNlLmMgfCAxMDEgKysrKysrKysrKysr KystCiA1IGZpbGVzIGNoYW5nZWQsIDM3MyBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9idWZmZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2J1ZmZlci5jCmluZGV4IDNiMzQ5ZmQuLjQ2OWE3 MDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2J1ZmZlci5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2J1ZmZlci5jCkBAIC04MTcsOSArODE3 LDkgQEAgc3RhdGljIGludCB2bXdfdHRtX2ZhdWx0X3Jlc2VydmVfbm90aWZ5KHN0cnVjdCB0dG1f YnVmZmVyX29iamVjdCAqYm8pCiAvKioKICAqIHZtd19tb3ZlX25vdGlmeSAtIFRUTSBtb3ZlX25v dGlmeV9jYWxsYmFjawogICoKLSAqIEBibzogICAgICAgICAgICAgVGhlIFRUTSBidWZmZXIgb2Jq ZWN0IGFib3V0IHRvIG1vdmUuCi0gKiBAbWVtOiAgICAgICAgICAgIFRoZSB0cnVjdCB0dG1fbWVt X3JlZyBpbmRpY2F0aW5nIHRvIHdoYXQgbWVtb3J5Ci0gKiAgICAgICAgICAgICAgICAgIHJlZ2lv biB0aGUgbW92ZSBpcyB0YWtpbmcgcGxhY2UuCisgKiBAYm86IFRoZSBUVE0gYnVmZmVyIG9iamVj dCBhYm91dCB0byBtb3ZlLgorICogQG1lbTogVGhlIHN0cnVjdCB0dG1fbWVtX3JlZyBpbmRpY2F0 aW5nIHRvIHdoYXQgbWVtb3J5CisgKiAgICAgICByZWdpb24gdGhlIG1vdmUgaXMgdGFraW5nIHBs YWNlLgogICoKICAqIENhbGxzIG1vdmVfbm90aWZ5IGZvciBhbGwgc3Vic3lzdGVtcyBuZWVkaW5n IGl0LgogICogKGN1cnJlbnRseSBvbmx5IHJlc291cmNlcykuCkBAIC04MjgsMTMgKzgyOCwxNCBA QCBzdGF0aWMgdm9pZCB2bXdfbW92ZV9ub3RpZnkoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpi bywKIAkJCSAgICBzdHJ1Y3QgdHRtX21lbV9yZWcgKm1lbSkKIHsKIAl2bXdfcmVzb3VyY2VfbW92 ZV9ub3RpZnkoYm8sIG1lbSk7CisJdm13X3F1ZXJ5X21vdmVfbm90aWZ5KGJvLCBtZW0pOwogfQog CiAKIC8qKgogICogdm13X3N3YXBfbm90aWZ5IC0gVFRNIG1vdmVfbm90aWZ5X2NhbGxiYWNrCiAg KgotICogQGJvOiAgICAgICAgICAgICBUaGUgVFRNIGJ1ZmZlciBvYmplY3QgYWJvdXQgdG8gYmUg c3dhcHBlZCBvdXQuCisgKiBAYm86IFRoZSBUVE0gYnVmZmVyIG9iamVjdCBhYm91dCB0byBiZSBz d2FwcGVkIG91dC4KICAqLwogc3RhdGljIHZvaWQgdm13X3N3YXBfbm90aWZ5KHN0cnVjdCB0dG1f YnVmZmVyX29iamVjdCAqYm8pCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4 L3Ztd2dmeF9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9jb250ZXh0 LmMKaW5kZXggYjE0NTgzZC4uN2IzMzU2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Zt d2dmeC92bXdnZnhfY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4 X2NvbnRleHQuYwpAQCAtMTIxLDcgKzEyMSw5IEBAIHN0YXRpYyB2b2lkIHZtd19jb250ZXh0X2Nv dGFibGVzX3VucmVmKHN0cnVjdCB2bXdfdXNlcl9jb250ZXh0ICp1Y3R4KQogCQlyZXMgPSB1Y3R4 LT5jb3RhYmxlc1tpXTsKIAkJdWN0eC0+Y290YWJsZXNbaV0gPSBOVUxMOwogCQlzcGluX3VubG9j aygmdWN0eC0+Y290YWJsZV9sb2NrKTsKLQkJdm13X3Jlc291cmNlX3VucmVmZXJlbmNlKCZyZXMp OworCisJCWlmIChyZXMpCisJCQl2bXdfcmVzb3VyY2VfdW5yZWZlcmVuY2UoJnJlcyk7CiAJfQog fQogCkBAIC01ODUsNiArNTg3LDggQEAgc3RhdGljIGludCB2bXdfZHhfY29udGV4dF91bmJpbmQo c3RydWN0IHZtd19yZXNvdXJjZSAqcmVzLAogCXN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYg PSByZXMtPmRldl9wcml2OwogCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSB2YWxfYnVm LT5ibzsKIAlzdHJ1Y3Qgdm13X2ZlbmNlX29iaiAqZmVuY2U7CisJc3RydWN0IHZtd191c2VyX2Nv bnRleHQgKnVjdHggPQorCQljb250YWluZXJfb2YocmVzLCBzdHJ1Y3Qgdm13X3VzZXJfY29udGV4 dCwgcmVzKTsKIAogCXN0cnVjdCB7CiAJCVNWR0EzZENtZEhlYWRlciBoZWFkZXI7CkBAIC02MDMs NiArNjA3LDEzIEBAIHN0YXRpYyBpbnQgdm13X2R4X2NvbnRleHRfdW5iaW5kKHN0cnVjdCB2bXdf cmVzb3VyY2UgKnJlcywKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+YmluZGluZ19tdXRleCk7CiAJ dm13X2R4X2NvbnRleHRfc2NydWJfY290YWJsZXMocmVzLCByZWFkYmFjayk7CiAKKwlpZiAodWN0 eC0+ZHhfcXVlcnlfbW9iICYmIHVjdHgtPmR4X3F1ZXJ5X21vYi0+ZHhfcXVlcnlfY3R4ICYmCisJ ICAgIHJlYWRiYWNrKSB7CisJCVdBUk5fT04odWN0eC0+ZHhfcXVlcnlfbW9iLT5keF9xdWVyeV9j dHggIT0gcmVzKTsKKwkJaWYgKHZtd19xdWVyeV9yZWFkYmFja19hbGwodWN0eC0+ZHhfcXVlcnlf bW9iKSkKKwkJCURSTV9FUlJPUigiRmFpbGVkIHRvIHJlYWQgYmFjayBxdWVyeSBzdGF0ZXNcbiIp OworCX0KKwogCXN1Ym1pdF9zaXplID0gc2l6ZW9mKCpjbWQyKSArIChyZWFkYmFjayA/IHNpemVv ZigqY21kMSkgOiAwKTsKIAogCWNtZCA9IHZtd19maWZvX3Jlc2VydmUoZGV2X3ByaXYsIHN1Ym1p dF9zaXplKTsKQEAgLTY5Miw2ICs3MDMsOSBAQCBzdGF0aWMgdm9pZCB2bXdfdXNlcl9jb250ZXh0 X2ZyZWUoc3RydWN0IHZtd19yZXNvdXJjZSAqcmVzKQogCiAJaWYgKGN0eC0+Y2JzKQogCQl2bXdf YmluZGluZ19zdGF0ZV9mcmVlKGN0eC0+Y2JzKTsKKworCSh2b2lkKSB2bXdfY29udGV4dF9iaW5k X2R4X3F1ZXJ5KHJlcywgTlVMTCk7CisKIAl0dG1fYmFzZV9vYmplY3Rfa2ZyZWUoY3R4LCBiYXNl KTsKIAl0dG1fbWVtX2dsb2JhbF9mcmVlKHZtd19tZW1fZ2xvYihkZXZfcHJpdiksCiAJCQkgICAg dm13X3VzZXJfY29udGV4dF9zaXplKTsKQEAgLTg2NywzICs4ODEsNTcgQEAgdm13X2NvbnRleHRf YmluZGluZ19zdGF0ZShzdHJ1Y3Qgdm13X3Jlc291cmNlICpjdHgpCiB7CiAJcmV0dXJuIGNvbnRh aW5lcl9vZihjdHgsIHN0cnVjdCB2bXdfdXNlcl9jb250ZXh0LCByZXMpLT5jYnM7CiB9CisKKy8q KgorICogdm13X2NvbnRleHRfYmluZF9keF9xdWVyeSAtCisgKiBTZXRzIHF1ZXJ5IE1PQiBmb3Ig dGhlIGNvbnRleHQuICBJZiBAbW9iIGlzIE5VTEwsIHRoZW4gdGhpcyBmdW5jdGlvbiB3aWxsCisg KiByZW1vdmUgdGhlIGFzc29jaWF0aW9uIGJldHdlZW4gdGhlIE1PQiBhbmQgdGhlIGNvbnRleHQu ICBUaGlzIGZ1bmN0aW9uCisgKiBhc3N1bWVzIHRoZSBiaW5kaW5nX211dGV4IGlzIGhlbGQuCisg KgorICogQGN0eF9yZXM6IFRoZSBjb250ZXh0IHJlc291cmNlCisgKiBAbW9iOiBhIHJlZmVyZW5j ZSB0byB0aGUgcXVlcnkgTU9CCisgKgorICogUmV0dXJucyAtRUlOVkFMIGlmIGEgTU9CIGhhcyBh bHJlYWR5IGJlZW4gc2V0IGFuZCBkb2VzIG5vdCBtYXRjaCB0aGUgb25lCisgKiBzcGVjaWZpZWQg aW4gdGhlIHBhcmFtZXRlci4gIDAgb3RoZXJ3aXNlLgorICovCitpbnQgdm13X2NvbnRleHRfYmlu ZF9keF9xdWVyeShzdHJ1Y3Qgdm13X3Jlc291cmNlICpjdHhfcmVzLAorCQkJICAgICAgc3RydWN0 IHZtd19kbWFfYnVmZmVyICptb2IpCit7CisJc3RydWN0IHZtd191c2VyX2NvbnRleHQgKnVjdHgg PQorCQljb250YWluZXJfb2YoY3R4X3Jlcywgc3RydWN0IHZtd191c2VyX2NvbnRleHQsIHJlcyk7 CisKKwlpZiAobW9iID09IE5VTEwpIHsKKwkJaWYgKHVjdHgtPmR4X3F1ZXJ5X21vYikgeworCQkJ dWN0eC0+ZHhfcXVlcnlfbW9iLT5keF9xdWVyeV9jdHggPSBOVUxMOworCQkJdm13X2RtYWJ1Zl91 bnJlZmVyZW5jZSgmdWN0eC0+ZHhfcXVlcnlfbW9iKTsKKwkJCXVjdHgtPmR4X3F1ZXJ5X21vYiA9 IE5VTEw7CisJCX0KKworCQlyZXR1cm4gMDsKKwl9CisKKwkvKiBDYW4gb25seSBoYXZlIG9uZSBN T0IgcGVyIGNvbnRleHQgZm9yIHF1ZXJpZXMgKi8KKwlpZiAodWN0eC0+ZHhfcXVlcnlfbW9iICYm IHVjdHgtPmR4X3F1ZXJ5X21vYiAhPSBtb2IpCisJCXJldHVybiAtRUlOVkFMOworCisJbW9iLT5k eF9xdWVyeV9jdHggID0gY3R4X3JlczsKKworCWlmICghdWN0eC0+ZHhfcXVlcnlfbW9iKQorCQl1 Y3R4LT5keF9xdWVyeV9tb2IgPSB2bXdfZG1hYnVmX3JlZmVyZW5jZShtb2IpOworCisJcmV0dXJu IDA7Cit9CisKKy8qKgorICogdm13X2NvbnRleHRfZ2V0X2R4X3F1ZXJ5X21vYiAtIFJldHVybnMg bm9uLWNvdW50ZWQgcmVmZXJlbmNlIHRvIERYIHF1ZXJ5IG1vYgorICoKKyAqIEBjdHhfcmVzOiBU aGUgY29udGV4dCByZXNvdXJjZQorICovCitzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKgordm13X2Nv bnRleHRfZ2V0X2R4X3F1ZXJ5X21vYihzdHJ1Y3Qgdm13X3Jlc291cmNlICpjdHhfcmVzKQorewor CXN0cnVjdCB2bXdfdXNlcl9jb250ZXh0ICp1Y3R4ID0KKwkJY29udGFpbmVyX29mKGN0eF9yZXMs IHN0cnVjdCB2bXdfdXNlcl9jb250ZXh0LCByZXMpOworCisJcmV0dXJuIHVjdHgtPmR4X3F1ZXJ5 X21vYjsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgKaW5kZXggYjg4ZWE1MC4uMGUx OGRmYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgKQEAgLTg4LDYgKzg4LDggQEAg c3RydWN0IHZtd19kbWFfYnVmZmVyIHsKIAlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgYmFzZTsK IAlzdHJ1Y3QgbGlzdF9oZWFkIHJlc19saXN0OwogCXMzMiBwaW5fY291bnQ7CisJLyogTm90IHJl Zi1jb3VudGVkLiAgUHJvdGVjdGVkIGJ5IGJpbmRpbmdfbXV0ZXggKi8KKwlzdHJ1Y3Qgdm13X3Jl c291cmNlICpkeF9xdWVyeV9jdHg7CiB9OwogCiAvKioKQEAgLTY1OCw2ICs2NjAsOSBAQCBleHRl cm4gdm9pZCB2bXdfcmVzb3VyY2VfdW5yZXNlcnZlKHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcywK IAkJCQkgICB1bnNpZ25lZCBsb25nIG5ld19iYWNrdXBfb2Zmc2V0KTsKIGV4dGVybiB2b2lkIHZt d19yZXNvdXJjZV9tb3ZlX25vdGlmeShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAogCQkJ CSAgICAgc3RydWN0IHR0bV9tZW1fcmVnICptZW0pOworZXh0ZXJuIHZvaWQgdm13X3F1ZXJ5X21v dmVfbm90aWZ5KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCisJCQkJICBzdHJ1Y3QgdHRt X21lbV9yZWcgKm1lbSk7CitleHRlcm4gaW50IHZtd19xdWVyeV9yZWFkYmFja19hbGwoc3RydWN0 IHZtd19kbWFfYnVmZmVyICpkeF9xdWVyeV9tb2IpOwogZXh0ZXJuIHZvaWQgdm13X2ZlbmNlX3Np bmdsZV9ibyhzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAogCQkJCXN0cnVjdCB2bXdfZmVu Y2Vfb2JqICpmZW5jZSk7CiBleHRlcm4gdm9pZCB2bXdfcmVzb3VyY2VfZXZpY3RfYWxsKHN0cnVj dCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYpOwpAQCAtMTAxMSw2ICsxMDE2LDExIEBAIGV4dGVybiBz dHJ1Y3Qgdm13X2N0eF9iaW5kaW5nX3N0YXRlICoKIHZtd19jb250ZXh0X2JpbmRpbmdfc3RhdGUo c3RydWN0IHZtd19yZXNvdXJjZSAqY3R4KTsKIGV4dGVybiB2b2lkIHZtd19keF9jb250ZXh0X3Nj cnViX2NvdGFibGVzKHN0cnVjdCB2bXdfcmVzb3VyY2UgKmN0eCwKIAkJCQkJICBib29sIHJlYWRi YWNrKTsKK2V4dGVybiBpbnQgdm13X2NvbnRleHRfYmluZF9keF9xdWVyeShzdHJ1Y3Qgdm13X3Jl c291cmNlICpjdHhfcmVzLAorCQkJCSAgICAgc3RydWN0IHZtd19kbWFfYnVmZmVyICptb2IpOwor ZXh0ZXJuIHN0cnVjdCB2bXdfZG1hX2J1ZmZlciAqCit2bXdfY29udGV4dF9nZXRfZHhfcXVlcnlf bW9iKHN0cnVjdCB2bXdfcmVzb3VyY2UgKmN0eF9yZXMpOworCiAKIC8qCiAgKiBTdXJmYWNlIG1h bmFnZW1lbnQgLSB2bXdnZnhfc3VyZmFjZS5jCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dm13Z2Z4L3Ztd2dmeF9leGVjYnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9l eGVjYnVmLmMKaW5kZXggMmI3YWM0OS4uYjU2NTY1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3Ztd2dmeC92bXdnZnhfZXhlY2J1Zi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngv dm13Z2Z4X2V4ZWNidWYuYwpAQCAtMSw2ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoK LSAqIENvcHlyaWdodCDCqSAyMDA5IFZNd2FyZSwgSW5jLiwgUGFsbyBBbHRvLCBDQS4sIFVTQQor ICogQ29weXJpZ2h0IMKpIDIwMDkgLSAyMDE1IFZNd2FyZSwgSW5jLiwgUGFsbyBBbHRvLCBDQS4s IFVTQQogICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQpAQCAt MTAxLDE5ICsxMDEsMzIgQEAgc3RydWN0IHZtd19jbWRfZW50cnkgewogc3RhdGljIGludCB2bXdf cmVzb3VyY2VfY29udGV4dF9yZXNfYWRkKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ CQkJCXN0cnVjdCB2bXdfc3dfY29udGV4dCAqc3dfY29udGV4dCwKIAkJCQkJc3RydWN0IHZtd19y ZXNvdXJjZSAqY3R4KTsKK3N0YXRpYyBpbnQgdm13X3RyYW5zbGF0ZV9tb2JfcHRyKHN0cnVjdCB2 bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJIHN0cnVjdCB2bXdfc3dfY29udGV4dCAqc3dfY29u dGV4dCwKKwkJCQkgU1ZHQU1vYklkICppZCwKKwkJCQkgc3RydWN0IHZtd19kbWFfYnVmZmVyICoq dm13X2JvX3ApOworc3RhdGljIGludCB2bXdfYm9fdG9fdmFsaWRhdGVfbGlzdChzdHJ1Y3Qgdm13 X3N3X2NvbnRleHQgKnN3X2NvbnRleHQsCisJCQkJICAgc3RydWN0IHZtd19kbWFfYnVmZmVyICp2 Ym8sCisJCQkJICAgYm9vbCB2YWxpZGF0ZV9hc19tb2IsCisJCQkJICAgdWludDMyX3QgKnBfdmFs X25vZGUpOworCiAKIC8qKgotICogdm13X3Jlc291cmNlX3VucmVzZXJ2ZSAtIHVucmVzZXJ2ZSBy ZXNvdXJjZXMgcHJldmlvdXNseSByZXNlcnZlZCBmb3IKKyAqIHZtd19yZXNvdXJjZXNfdW5yZXNl cnZlIC0gdW5yZXNlcnZlIHJlc291cmNlcyBwcmV2aW91c2x5IHJlc2VydmVkIGZvcgogICogY29t bWFuZCBzdWJtaXNzaW9uLgogICoKLSAqIEBsaXN0X2hlYWQ6IGxpc3Qgb2YgcmVzb3VyY2VzIHRv IHVucmVzZXJ2ZS4KKyAqIEBzd19jb250ZXh0OiBwb2ludGVyIHRvIHRoZSBzb2Z0d2FyZSBjb250 ZXh0CiAgKiBAYmFja29mZjogV2hldGhlciBjb21tYW5kIHN1Ym1pc3Npb24gZmFpbGVkLgogICov Ci1zdGF0aWMgdm9pZCB2bXdfcmVzb3VyY2VfbGlzdF91bnJlc2VydmUoc3RydWN0IHZtd19zd19j b250ZXh0ICpzd19jb250ZXh0LAotCQkJCQlzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAotCQkJCQli b29sIGJhY2tvZmYpCitzdGF0aWMgdm9pZCB2bXdfcmVzb3VyY2VzX3VucmVzZXJ2ZShzdHJ1Y3Qg dm13X3N3X2NvbnRleHQgKnN3X2NvbnRleHQsCisJCQkJICAgIGJvb2wgYmFja29mZikKIHsKIAlz dHJ1Y3Qgdm13X3Jlc291cmNlX3ZhbF9ub2RlICp2YWw7CisJc3RydWN0IGxpc3RfaGVhZCAqbGlz dCA9ICZzd19jb250ZXh0LT5yZXNvdXJjZV9saXN0OworCisJaWYgKHN3X2NvbnRleHQtPmR4X3F1 ZXJ5X21vYiAmJiAhYmFja29mZikKKwkJdm13X2NvbnRleHRfYmluZF9keF9xdWVyeShzd19jb250 ZXh0LT5keF9xdWVyeV9jdHgsCisJCQkJCSAgc3dfY29udGV4dC0+ZHhfcXVlcnlfbW9iKTsKIAog CWxpc3RfZm9yX2VhY2hfZW50cnkodmFsLCBsaXN0LCBoZWFkKSB7CiAJCXN0cnVjdCB2bXdfcmVz b3VyY2UgKnJlcyA9IHZhbC0+cmVzOwpAQCAtMzc2LDYgKzM4OSwxNiBAQCBzdGF0aWMgaW50IHZt d19yZXNvdXJjZV9jb250ZXh0X3Jlc19hZGQoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwK IAkJCWJyZWFrOwogCX0KIAorCWlmIChkZXZfcHJpdi0+aGFzX2R4ICYmIHZtd19yZXNfdHlwZShj dHgpID09IHZtd19yZXNfZHhfY29udGV4dCkgeworCQlzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKmR4 X3F1ZXJ5X21vYjsKKworCQlkeF9xdWVyeV9tb2IgPSB2bXdfY29udGV4dF9nZXRfZHhfcXVlcnlf bW9iKGN0eCk7CisJCWlmIChkeF9xdWVyeV9tb2IpCisJCQlyZXQgPSB2bXdfYm9fdG9fdmFsaWRh dGVfbGlzdChzd19jb250ZXh0LAorCQkJCQkJICAgICAgZHhfcXVlcnlfbW9iLAorCQkJCQkJICAg ICAgdHJ1ZSwgTlVMTCk7CisJfQorCiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+YmluZGluZ19t dXRleCk7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTUzMyw3ICs1NTYsNyBAQCBzdGF0aWMgaW50IHZt d19ib190b192YWxpZGF0ZV9saXN0KHN0cnVjdCB2bXdfc3dfY29udGV4dCAqc3dfY29udGV4dCwK IHN0YXRpYyBpbnQgdm13X3Jlc291cmNlc19yZXNlcnZlKHN0cnVjdCB2bXdfc3dfY29udGV4dCAq c3dfY29udGV4dCkKIHsKIAlzdHJ1Y3Qgdm13X3Jlc291cmNlX3ZhbF9ub2RlICp2YWw7Ci0JaW50 IHJldDsKKwlpbnQgcmV0ID0gMDsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkodmFsLCAmc3dfY29u dGV4dC0+cmVzb3VyY2VfbGlzdCwgaGVhZCkgewogCQlzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMg PSB2YWwtPnJlczsKQEAgLTU1NCw3ICs1NzcsMTggQEAgc3RhdGljIGludCB2bXdfcmVzb3VyY2Vz X3Jlc2VydmUoc3RydWN0IHZtd19zd19jb250ZXh0ICpzd19jb250ZXh0KQogCQl9CiAJfQogCi0J cmV0dXJuIDA7CisJaWYgKHN3X2NvbnRleHQtPmR4X3F1ZXJ5X21vYikgeworCQlzdHJ1Y3Qgdm13 X2RtYV9idWZmZXIgKmV4cGVjdGVkX2R4X3F1ZXJ5X21vYjsKKworCQlleHBlY3RlZF9keF9xdWVy eV9tb2IgPQorCQkJdm13X2NvbnRleHRfZ2V0X2R4X3F1ZXJ5X21vYihzd19jb250ZXh0LT5keF9x dWVyeV9jdHgpOworCQlpZiAoZXhwZWN0ZWRfZHhfcXVlcnlfbW9iICYmCisJCSAgICBleHBlY3Rl ZF9keF9xdWVyeV9tb2IgIT0gc3dfY29udGV4dC0+ZHhfcXVlcnlfbW9iKSB7CisJCQlyZXQgPSAt RUlOVkFMOworCQl9CisJfQorCisJcmV0dXJuIHJldDsKIH0KIAogLyoqCkBAIC03MjUsNiArNzU5 LDQ2IEBAIG91dF9ub19yZWxvYzoKIH0KIAogLyoqCisgKiB2bXdfcmViaW5kX2R4X3F1ZXJ5IC0g UmViaW5kIERYIHF1ZXJ5IGFzc29jaWF0ZWQgd2l0aCB0aGUgY29udGV4dAorICoKKyAqIEBjdHhf cmVzOiBjb250ZXh0IHRoZSBxdWVyeSBiZWxvbmdzIHRvCisgKgorICogVGhpcyBmdW5jdGlvbiBh c3N1bWVzIGJpbmRpbmdfbXV0ZXggaXMgaGVsZC4KKyAqLworc3RhdGljIGludCB2bXdfcmViaW5k X2FsbF9keF9xdWVyeShzdHJ1Y3Qgdm13X3Jlc291cmNlICpjdHhfcmVzKQoreworCXN0cnVjdCB2 bXdfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjdHhfcmVzLT5kZXZfcHJpdjsKKwlzdHJ1Y3Qgdm13X2Rt YV9idWZmZXIgKmR4X3F1ZXJ5X21vYjsKKwlzdHJ1Y3QgeworCQlTVkdBM2RDbWRIZWFkZXIgaGVh ZGVyOworCQlTVkdBM2RDbWREWEJpbmRBbGxRdWVyeSBib2R5OworCX0gKmNtZDsKKworCisJZHhf cXVlcnlfbW9iID0gdm13X2NvbnRleHRfZ2V0X2R4X3F1ZXJ5X21vYihjdHhfcmVzKTsKKworCWlm ICghZHhfcXVlcnlfbW9iIHx8IGR4X3F1ZXJ5X21vYi0+ZHhfcXVlcnlfY3R4KQorCQlyZXR1cm4g MDsKKworCWNtZCA9IHZtd19maWZvX3Jlc2VydmVfZHgoZGV2X3ByaXYsIHNpemVvZigqY21kKSwg Y3R4X3Jlcy0+aWQpOworCisJaWYgKGNtZCA9PSBOVUxMKSB7CisJCURSTV9FUlJPUigiRmFpbGVk IHRvIHJlYmluZCBxdWVyaWVzLlxuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWNtZC0+ aGVhZGVyLmlkID0gU1ZHQV8zRF9DTURfRFhfQklORF9BTExfUVVFUlk7CisJY21kLT5oZWFkZXIu c2l6ZSA9IHNpemVvZihjbWQtPmJvZHkpOworCWNtZC0+Ym9keS5jaWQgPSBjdHhfcmVzLT5pZDsK KwljbWQtPmJvZHkubW9iaWQgPSBkeF9xdWVyeV9tb2ItPmJhc2UubWVtLnN0YXJ0OworCXZtd19m aWZvX2NvbW1pdChkZXZfcHJpdiwgc2l6ZW9mKCpjbWQpKTsKKworCXZtd19jb250ZXh0X2JpbmRf ZHhfcXVlcnkoY3R4X3JlcywgZHhfcXVlcnlfbW9iKTsKKworCXJldHVybiAwOworfQorCisvKioK ICAqIHZtd19yZWJpbmRfY29udGV4dHMgLSBSZWJpbmQgYWxsIHJlc291cmNlcyBwcmV2aW91c2x5 IGJvdW5kIHRvCiAgKiByZWZlcmVuY2VkIGNvbnRleHRzLgogICoKQEAgLTc0OCw2ICs4MjIsMTAg QEAgc3RhdGljIGludCB2bXdfcmViaW5kX2NvbnRleHRzKHN0cnVjdCB2bXdfc3dfY29udGV4dCAq c3dfY29udGV4dCkKIAkJCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZWJpbmQgY29udGV4dC5cbiIp OwogCQkJcmV0dXJuIHJldDsKIAkJfQorCisJCXJldCA9IHZtd19yZWJpbmRfYWxsX2R4X3F1ZXJ5 KHZhbC0+cmVzKTsKKwkJaWYgKHJldCAhPSAwKQorCQkJcmV0dXJuIHJldDsKIAl9CiAKIAlyZXR1 cm4gMDsKQEAgLTEyNDgsNiArMTMyNiw5OCBAQCBvdXRfbm9fcmVsb2M6CiAJcmV0dXJuIHJldDsK IH0KIAorCisKKy8qKgorICogdm13X2NtZF9keF9kZWZpbmVfcXVlcnkgLSB2YWxpZGF0ZSBhIFNW R0FfM0RfQ01EX0RYX0RFRklORV9RVUVSWSBjb21tYW5kLgorICoKKyAqIEBkZXZfcHJpdjogUG9p bnRlciB0byBhIGRldmljZSBwcml2YXRlIHN0cnVjdC4KKyAqIEBzd19jb250ZXh0OiBUaGUgc29m dHdhcmUgY29udGV4dCB1c2VkIGZvciB0aGlzIGNvbW1hbmQgc3VibWlzc2lvbi4KKyAqIEBoZWFk ZXI6IFBvaW50ZXIgdG8gdGhlIGNvbW1hbmQgaGVhZGVyIGluIHRoZSBjb21tYW5kIHN0cmVhbS4K KyAqCisgKiBUaGlzIGZ1bmN0aW9uIGFkZHMgdGhlIG5ldyBxdWVyeSBpbnRvIHRoZSBxdWVyeSBD T1RBQkxFCisgKi8KK3N0YXRpYyBpbnQgdm13X2NtZF9keF9kZWZpbmVfcXVlcnkoc3RydWN0IHZt d19wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkgICBzdHJ1Y3Qgdm13X3N3X2NvbnRleHQgKnN3X2Nv bnRleHQsCisJCQkJICAgU1ZHQTNkQ21kSGVhZGVyICpoZWFkZXIpCit7CisJc3RydWN0IHZtd19k eF9kZWZpbmVfcXVlcnlfY21kIHsKKwkJU1ZHQTNkQ21kSGVhZGVyIGhlYWRlcjsKKwkJU1ZHQTNk Q21kRFhEZWZpbmVRdWVyeSBxOworCX0gKmNtZDsKKworCWludCAgICByZXQ7CisJc3RydWN0IHZt d19yZXNvdXJjZV92YWxfbm9kZSAqY3R4X25vZGUgPSBzd19jb250ZXh0LT5keF9jdHhfbm9kZTsK KwlzdHJ1Y3Qgdm13X3Jlc291cmNlICpjb3RhYmxlX3JlczsKKworCisJaWYgKGN0eF9ub2RlID09 IE5VTEwpIHsKKwkJRFJNX0VSUk9SKCJEWCBDb250ZXh0IG5vdCBzZXQgZm9yIHF1ZXJ5LlxuIik7 CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWNtZCA9IGNvbnRhaW5lcl9vZihoZWFkZXIsIHN0 cnVjdCB2bXdfZHhfZGVmaW5lX3F1ZXJ5X2NtZCwgaGVhZGVyKTsKKworCWlmIChjbWQtPnEudHlw ZSA8ICBTVkdBM0RfUVVFUllUWVBFX01JTiB8fAorCSAgICBjbWQtPnEudHlwZSA+PSBTVkdBM0Rf UVVFUllUWVBFX01BWCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwljb3RhYmxlX3JlcyA9IHZtd19j b250ZXh0X2NvdGFibGUoY3R4X25vZGUtPnJlcywgU1ZHQV9DT1RBQkxFX0RYUVVFUlkpOworCXJl dCA9IHZtd19jb3RhYmxlX25vdGlmeShjb3RhYmxlX3JlcywgY21kLT5xLnF1ZXJ5SWQpOworCXZt d19yZXNvdXJjZV91bnJlZmVyZW5jZSgmY290YWJsZV9yZXMpOworCisJcmV0dXJuIHJldDsKK30K KworCisKKy8qKgorICogdm13X2NtZF9keF9iaW5kX3F1ZXJ5IC0gdmFsaWRhdGUgYSBTVkdBXzNE X0NNRF9EWF9CSU5EX1FVRVJZIGNvbW1hbmQuCisgKgorICogQGRldl9wcml2OiBQb2ludGVyIHRv IGEgZGV2aWNlIHByaXZhdGUgc3RydWN0LgorICogQHN3X2NvbnRleHQ6IFRoZSBzb2Z0d2FyZSBj b250ZXh0IHVzZWQgZm9yIHRoaXMgY29tbWFuZCBzdWJtaXNzaW9uLgorICogQGhlYWRlcjogUG9p bnRlciB0byB0aGUgY29tbWFuZCBoZWFkZXIgaW4gdGhlIGNvbW1hbmQgc3RyZWFtLgorICoKKyAq IFRoZSBxdWVyeSBiaW5kIG9wZXJhdGlvbiB3aWxsIGV2ZW50dWFsbHkgYXNzb2NpYXRlIHRoZSBx dWVyeSBJRAorICogd2l0aCBpdHMgYmFja2luZyBNT0IuICBJbiB0aGlzIGZ1bmN0aW9uLCB3ZSB0 YWtlIHRoZSB1c2VyIG1vZGUKKyAqIE1PQiBJRCBhbmQgdXNlIHZtd190cmFuc2xhdGVfbW9iX3B0 cigpIHRvIHRyYW5zbGF0ZSBpdCB0byBpdHMKKyAqIGtlcm5lbCBtb2RlIGVxdWl2YWxlbnQuCisg Ki8KK3N0YXRpYyBpbnQgdm13X2NtZF9keF9iaW5kX3F1ZXJ5KHN0cnVjdCB2bXdfcHJpdmF0ZSAq ZGV2X3ByaXYsCisJCQkJIHN0cnVjdCB2bXdfc3dfY29udGV4dCAqc3dfY29udGV4dCwKKwkJCQkg U1ZHQTNkQ21kSGVhZGVyICpoZWFkZXIpCit7CisJc3RydWN0IHZtd19keF9iaW5kX3F1ZXJ5X2Nt ZCB7CisJCVNWR0EzZENtZEhlYWRlciBoZWFkZXI7CisJCVNWR0EzZENtZERYQmluZFF1ZXJ5IHE7 CisJfSAqY21kOworCisJc3RydWN0IHZtd19kbWFfYnVmZmVyICp2bXdfYm87CisJaW50ICAgIHJl dDsKKworCisJY21kID0gY29udGFpbmVyX29mKGhlYWRlciwgc3RydWN0IHZtd19keF9iaW5kX3F1 ZXJ5X2NtZCwgaGVhZGVyKTsKKworCS8qCisJICogTG9vayB1cCB0aGUgYnVmZmVyIHBvaW50ZWQg dG8gYnkgcS5tb2JpZCwgcHV0IGl0IG9uIHRoZSByZWxvY2F0aW9uCisJICogbGlzdCBzbyBpdHMg a2VybmVsIG1vZGUgTU9CIElEIGNhbiBiZSBmaWxsZWQgaW4gbGF0ZXIKKwkgKi8KKwlyZXQgPSB2 bXdfdHJhbnNsYXRlX21vYl9wdHIoZGV2X3ByaXYsIHN3X2NvbnRleHQsICZjbWQtPnEubW9iaWQs CisJCQkJICAgICZ2bXdfYm8pOworCisJaWYgKHJldCAhPSAwKQorCQlyZXR1cm4gcmV0OworCisJ c3dfY29udGV4dC0+ZHhfcXVlcnlfbW9iID0gdm13X2JvOworCXN3X2NvbnRleHQtPmR4X3F1ZXJ5 X2N0eCA9IHN3X2NvbnRleHQtPmR4X2N0eF9ub2RlLT5yZXM7CisKKwl2bXdfZG1hYnVmX3VucmVm ZXJlbmNlKCZ2bXdfYm8pOworCisJcmV0dXJuIHJldDsKK30KKworCisKIC8qKgogICogdm13X2Nt ZF9iZWdpbl9nYl9xdWVyeSAtIHZhbGlkYXRlIGEgIFNWR0FfM0RfQ01EX0JFR0lOX0dCX1FVRVJZ IGNvbW1hbmQuCiAgKgpAQCAtMjk3NSw2ICszMTQ1LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2 bXdfY21kX2VudHJ5IHZtd19jbWRfZW50cmllc1tTVkdBXzNEX0NNRF9NQVhdID0gewogCQkgICAg ZmFsc2UsIGZhbHNlLCB0cnVlKSwKIAlWTVdfQ01EX0RFRihTVkdBXzNEX0NNRF9ERVNUUk9ZX0dC X01PQiwgJnZtd19jbWRfaW52YWxpZCwKIAkJICAgIGZhbHNlLCBmYWxzZSwgdHJ1ZSksCisJVk1X X0NNRF9ERUYoU1ZHQV8zRF9DTURfUkVERUZJTkVfR0JfTU9CNjQsICZ2bXdfY21kX2ludmFsaWQs CisJCSAgICBmYWxzZSwgZmFsc2UsIHRydWUpLAogCVZNV19DTURfREVGKFNWR0FfM0RfQ01EX1VQ REFURV9HQl9NT0JfTUFQUElORywgJnZtd19jbWRfaW52YWxpZCwKIAkJICAgIGZhbHNlLCBmYWxz ZSwgdHJ1ZSksCiAJVk1XX0NNRF9ERUYoU1ZHQV8zRF9DTURfREVGSU5FX0dCX1NVUkZBQ0UsICZ2 bXdfY21kX2ludmFsaWQsCkBAIC0zMDk3LDE1ICszMjY5LDE3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3Qgdm13X2NtZF9lbnRyeSB2bXdfY21kX2VudHJpZXNbU1ZHQV8zRF9DTURfTUFYXSA9IHsKIAkJ ICAgICZ2bXdfY21kX2R4X2NpZF9jaGVjaywgdHJ1ZSwgZmFsc2UsIHRydWUpLAogCVZNV19DTURf REVGKFNWR0FfM0RfQ01EX0RYX1NFVF9SQVNURVJJWkVSX1NUQVRFLAogCQkgICAgJnZtd19jbWRf ZHhfY2lkX2NoZWNrLCB0cnVlLCBmYWxzZSwgdHJ1ZSksCi0JVk1XX0NNRF9ERUYoU1ZHQV8zRF9D TURfRFhfREVGSU5FX1FVRVJZLCAmdm13X2NtZF9pbnZhbGlkLAorCVZNV19DTURfREVGKFNWR0Ff M0RfQ01EX0RYX0RFRklORV9RVUVSWSwgJnZtd19jbWRfZHhfZGVmaW5lX3F1ZXJ5LAogCQkgICAg dHJ1ZSwgZmFsc2UsIHRydWUpLAotCVZNV19DTURfREVGKFNWR0FfM0RfQ01EX0RYX0RFU1RST1lf UVVFUlksICZ2bXdfY21kX2ludmFsaWQsCisJVk1XX0NNRF9ERUYoU1ZHQV8zRF9DTURfRFhfREVT VFJPWV9RVUVSWSwgJnZtd19jbWRfb2ssCiAJCSAgICB0cnVlLCBmYWxzZSwgdHJ1ZSksCi0JVk1X X0NNRF9ERUYoU1ZHQV8zRF9DTURfRFhfQklORF9RVUVSWSwgJnZtd19jbWRfaW52YWxpZCwKKwlW TVdfQ01EX0RFRihTVkdBXzNEX0NNRF9EWF9CSU5EX1FVRVJZLCAmdm13X2NtZF9keF9iaW5kX3F1 ZXJ5LAogCQkgICAgdHJ1ZSwgZmFsc2UsIHRydWUpLAotCVZNV19DTURfREVGKFNWR0FfM0RfQ01E X0RYX0JFR0lOX1FVRVJZLCAmdm13X2NtZF9pbnZhbGlkLAorCVZNV19DTURfREVGKFNWR0FfM0Rf Q01EX0RYX1NFVF9RVUVSWV9PRkZTRVQsCisJCSAgICAmdm13X2NtZF9vaywgdHJ1ZSwgZmFsc2Us IHRydWUpLAorCVZNV19DTURfREVGKFNWR0FfM0RfQ01EX0RYX0JFR0lOX1FVRVJZLCAmdm13X2Nt ZF9vaywKIAkJICAgIHRydWUsIGZhbHNlLCB0cnVlKSwKLQlWTVdfQ01EX0RFRihTVkdBXzNEX0NN RF9EWF9FTkRfUVVFUlksICZ2bXdfY21kX2ludmFsaWQsCisJVk1XX0NNRF9ERUYoU1ZHQV8zRF9D TURfRFhfRU5EX1FVRVJZLCAmdm13X2NtZF9vaywKIAkJICAgIHRydWUsIGZhbHNlLCB0cnVlKSwK IAlWTVdfQ01EX0RFRihTVkdBXzNEX0NNRF9EWF9SRUFEQkFDS19RVUVSWSwgJnZtd19jbWRfaW52 YWxpZCwKIAkJICAgIHRydWUsIGZhbHNlLCB0cnVlKSwKQEAgLTM3ODAsNiArMzk1NCw4IEBAIGlu dCB2bXdfZXhlY2J1Zl9wcm9jZXNzKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAogCXN3X2Nv bnRleHQtPmxhc3RfcXVlcnlfY3R4ID0gTlVMTDsKIAlzd19jb250ZXh0LT5uZWVkc19wb3N0X3F1 ZXJ5X2JhcnJpZXIgPSBmYWxzZTsKIAlzd19jb250ZXh0LT5keF9jdHhfbm9kZSA9IE5VTEw7CisJ c3dfY29udGV4dC0+ZHhfcXVlcnlfbW9iID0gTlVMTDsKKwlzd19jb250ZXh0LT5keF9xdWVyeV9j dHggPSBOVUxMOwogCW1lbXNldChzd19jb250ZXh0LT5yZXNfY2FjaGUsIDAsIHNpemVvZihzd19j b250ZXh0LT5yZXNfY2FjaGUpKTsKIAlJTklUX0xJU1RfSEVBRCgmc3dfY29udGV4dC0+dmFsaWRh dGVfbm9kZXMpOwogCUlOSVRfTElTVF9IRUFEKCZzd19jb250ZXh0LT5yZXNfcmVsb2NhdGlvbnMp OwpAQCAtMzgwMyw3ICszOTc5LDYgQEAgaW50IHZtd19leGVjYnVmX3Byb2Nlc3Moc3RydWN0IGRy bV9maWxlICpmaWxlX3ByaXYsCiAKIAlyZXQgPSB2bXdfY21kX2NoZWNrX2FsbChkZXZfcHJpdiwg c3dfY29udGV4dCwga2VybmVsX2NvbW1hbmRzLAogCQkJCWNvbW1hbmRfc2l6ZSk7Ci0KIAkvKgog CSAqIE1lcmdlIHRoZSByZXNvdXJjZSBsaXN0cyBiZWZvcmUgY2hlY2tpbmcgdGhlIHJldHVybiBz dGF0dXMKIAkgKiBmcm9tIHZtZF9jbWRfY2hlY2tfYWxsIHNvIHRoYXQgYWxsIHRoZSBvcGVuIGhh c2h0YWJzIHdpbGwKQEAgLTM4NjksOCArNDA0NCw3IEBAIGludCB2bXdfZXhlY2J1Zl9wcm9jZXNz KHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAogCWlmIChyZXQgIT0gMCkKIAkJRFJNX0VSUk9S KCJGZW5jZSBzdWJtaXNzaW9uIGVycm9yLiBTeW5jaW5nLlxuIik7CiAKLQl2bXdfcmVzb3VyY2Vf bGlzdF91bnJlc2VydmUoc3dfY29udGV4dCwgJnN3X2NvbnRleHQtPnJlc291cmNlX2xpc3QsCi0J CQkJICAgIGZhbHNlKTsKKwl2bXdfcmVzb3VyY2VzX3VucmVzZXJ2ZShzd19jb250ZXh0LCBmYWxz ZSk7CiAKIAl0dG1fZXVfZmVuY2VfYnVmZmVyX29iamVjdHMoJnRpY2tldCwgJnN3X2NvbnRleHQt PnZhbGlkYXRlX25vZGVzLAogCQkJCSAgICAodm9pZCAqKSBmZW5jZSk7CkBAIC0zOTA4LDggKzQw ODIsNyBAQCBvdXRfdW5sb2NrX2JpbmRpbmc6CiBvdXRfZXJyOgogCXR0bV9ldV9iYWNrb2ZmX3Jl c2VydmF0aW9uKCZ0aWNrZXQsICZzd19jb250ZXh0LT52YWxpZGF0ZV9ub2Rlcyk7CiBvdXRfZXJy X25vcmVzOgotCXZtd19yZXNvdXJjZV9saXN0X3VucmVzZXJ2ZShzd19jb250ZXh0LCAmc3dfY29u dGV4dC0+cmVzb3VyY2VfbGlzdCwKLQkJCQkgICAgdHJ1ZSk7CisJdm13X3Jlc291cmNlc191bnJl c2VydmUoc3dfY29udGV4dCwgdHJ1ZSk7CiAJdm13X3Jlc291cmNlX3JlbG9jYXRpb25zX2ZyZWUo JnN3X2NvbnRleHQtPnJlc19yZWxvY2F0aW9ucyk7CiAJdm13X2ZyZWVfcmVsb2NhdGlvbnMoc3df Y29udGV4dCk7CiAJdm13X2NsZWFyX3ZhbGlkYXRpb25zKHN3X2NvbnRleHQpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcmVzb3VyY2UuYyBiL2RyaXZlcnMvZ3B1 L2RybS92bXdnZngvdm13Z2Z4X3Jlc291cmNlLmMKaW5kZXggNjE4NmU4NS4uYmNkMzQyZCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcmVzb3VyY2UuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9yZXNvdXJjZS5jCkBAIC0xNDUxLDkgKzE0NTEs OSBAQCB2b2lkIHZtd19mZW5jZV9zaW5nbGVfYm8oc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpi bywKIC8qKgogICogdm13X3Jlc291cmNlX21vdmVfbm90aWZ5IC0gVFRNIG1vdmVfbm90aWZ5X2Nh bGxiYWNrCiAgKgotICogQGJvOiAgICAgICAgICAgICBUaGUgVFRNIGJ1ZmZlciBvYmplY3QgYWJv dXQgdG8gbW92ZS4KLSAqIEBtZW06ICAgICAgICAgICAgVGhlIHRydWN0IHR0bV9tZW1fcmVnIGlu ZGljYXRpbmcgdG8gd2hhdCBtZW1vcnkKLSAqICAgICAgICAgICAgICAgICAgcmVnaW9uIHRoZSBt b3ZlIGlzIHRha2luZyBwbGFjZS4KKyAqIEBibzogVGhlIFRUTSBidWZmZXIgb2JqZWN0IGFib3V0 IHRvIG1vdmUuCisgKiBAbWVtOiBUaGUgc3RydWN0IHR0bV9tZW1fcmVnIGluZGljYXRpbmcgdG8g d2hhdCBtZW1vcnkKKyAqICAgICAgIHJlZ2lvbiB0aGUgbW92ZSBpcyB0YWtpbmcgcGxhY2UuCiAg KgogICogRXZpY3RzIHRoZSBHdWVzdCBCYWNrZWQgaGFyZHdhcmUgcmVzb3VyY2UgaWYgdGhlIGJh Y2t1cAogICogYnVmZmVyIGlzIGJlaW5nIG1vdmVkIG91dCBvZiBNT0IgbWVtb3J5LgpAQCAtMTUw Myw2ICsxNTAzLDEwMSBAQCB2b2lkIHZtd19yZXNvdXJjZV9tb3ZlX25vdGlmeShzdHJ1Y3QgdHRt X2J1ZmZlcl9vYmplY3QgKmJvLAogCX0KIH0KIAorCisKKy8qKgorICogdm13X3F1ZXJ5X3JlYWRi YWNrX2FsbCAtIFJlYWQgYmFjayBjYWNoZWQgcXVlcnkgc3RhdGVzCisgKgorICogQGR4X3F1ZXJ5 X21vYjogQnVmZmVyIGNvbnRhaW5pbmcgdGhlIERYIHF1ZXJ5IE1PQgorICoKKyAqIFJlYWQgYmFj ayBjYWNoZWQgc3RhdGVzIGZyb20gdGhlIGRldmljZSBpZiB0aGV5IGV4aXN0LiAgVGhpcyBmdW5j dGlvbgorICogYXNzdW1pbmdzIGJpbmRpbmdfbXV0ZXggaXMgaGVsZC4KKyAqLworaW50IHZtd19x dWVyeV9yZWFkYmFja19hbGwoc3RydWN0IHZtd19kbWFfYnVmZmVyICpkeF9xdWVyeV9tb2IpCit7 CisJc3RydWN0IHZtd19yZXNvdXJjZSAqZHhfcXVlcnlfY3R4OworCXN0cnVjdCB2bXdfcHJpdmF0 ZSAqZGV2X3ByaXY7CisJc3RydWN0IHsKKwkJU1ZHQTNkQ21kSGVhZGVyIGhlYWRlcjsKKwkJU1ZH QTNkQ21kRFhSZWFkYmFja0FsbFF1ZXJ5IGJvZHk7CisJfSAqY21kOworCisKKwkvKiBObyBxdWVy eSBib3VuZCwgc28gZG8gbm90aGluZyAqLworCWlmICghZHhfcXVlcnlfbW9iIHx8ICFkeF9xdWVy eV9tb2ItPmR4X3F1ZXJ5X2N0eCkKKwkJcmV0dXJuIDA7CisKKwlkeF9xdWVyeV9jdHggPSBkeF9x dWVyeV9tb2ItPmR4X3F1ZXJ5X2N0eDsKKwlkZXZfcHJpdiAgICAgPSBkeF9xdWVyeV9jdHgtPmRl dl9wcml2OworCisJY21kID0gdm13X2ZpZm9fcmVzZXJ2ZV9keChkZXZfcHJpdiwgc2l6ZW9mKCpj bWQpLCBkeF9xdWVyeV9jdHgtPmlkKTsKKwlpZiAodW5saWtlbHkoY21kID09IE5VTEwpKSB7CisJ CURSTV9FUlJPUigiRmFpbGVkIHJlc2VydmluZyBGSUZPIHNwYWNlIGZvciAiCisJCQkgICJxdWVy eSBNT0IgcmVhZCBiYWNrLlxuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWNtZC0+aGVh ZGVyLmlkICAgPSBTVkdBXzNEX0NNRF9EWF9SRUFEQkFDS19BTExfUVVFUlk7CisJY21kLT5oZWFk ZXIuc2l6ZSA9IHNpemVvZihjbWQtPmJvZHkpOworCWNtZC0+Ym9keS5jaWQgICAgPSBkeF9xdWVy eV9jdHgtPmlkOworCisJdm13X2ZpZm9fY29tbWl0KGRldl9wcml2LCBzaXplb2YoKmNtZCkpOwor CisJLyogVHJpZ2dlcnMgYSByZWJpbmQgdGhlIG5leHQgdGltZSBhZmZlY3RlZCBjb250ZXh0IGlz IGJvdW5kICovCisJZHhfcXVlcnlfbW9iLT5keF9xdWVyeV9jdHggPSBOVUxMOworCisJcmV0dXJu IDA7Cit9CisKKworCisvKioKKyAqIHZtd19xdWVyeV9tb3ZlX25vdGlmeSAtIFJlYWQgYmFjayBj YWNoZWQgcXVlcnkgc3RhdGVzCisgKgorICogQGJvOiBUaGUgVFRNIGJ1ZmZlciBvYmplY3QgYWJv dXQgdG8gbW92ZS4KKyAqIEBtZW06IFRoZSBtZW1vcnkgcmVnaW9uIEBibyBpcyBtb3ZpbmcgdG8u CisgKgorICogQ2FsbGVkIGJlZm9yZSB0aGUgcXVlcnkgTU9CIGlzIHN3YXBwZWQgb3V0IHRvIHJl YWQgYmFjayBjYWNoZWQgcXVlcnkKKyAqIHN0YXRlcyBmcm9tIHRoZSBkZXZpY2UuCisgKi8KK3Zv aWQgdm13X3F1ZXJ5X21vdmVfbm90aWZ5KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCisJ CQkgICBzdHJ1Y3QgdHRtX21lbV9yZWcgKm1lbSkKK3sKKwlzdHJ1Y3Qgdm13X2RtYV9idWZmZXIg KmR4X3F1ZXJ5X21vYjsKKwlzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiA9IGJvLT5iZGV2Owor CXN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXY7CisKKworCWRldl9wcml2ID0gY29udGFpbmVy X29mKGJkZXYsIHN0cnVjdCB2bXdfcHJpdmF0ZSwgYmRldik7CisKKwltdXRleF9sb2NrKCZkZXZf cHJpdi0+YmluZGluZ19tdXRleCk7CisKKwlkeF9xdWVyeV9tb2IgPSBjb250YWluZXJfb2YoYm8s IHN0cnVjdCB2bXdfZG1hX2J1ZmZlciwgYmFzZSk7CisJaWYgKG1lbSA9PSBOVUxMIHx8ICFkeF9x dWVyeV9tb2IgfHwgIWR4X3F1ZXJ5X21vYi0+ZHhfcXVlcnlfY3R4KSB7CisJCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPmJpbmRpbmdfbXV0ZXgpOworCQlyZXR1cm47CisJfQorCisJLyogSWYgQk8g aXMgYmVpbmcgbW92ZWQgZnJvbSBNT0IgdG8gc3lzdGVtIG1lbW9yeSAqLworCWlmIChtZW0tPm1l bV90eXBlID09IFRUTV9QTF9TWVNURU0gJiYgYm8tPm1lbS5tZW1fdHlwZSA9PSBWTVdfUExfTU9C KSB7CisJCXN0cnVjdCB2bXdfZmVuY2Vfb2JqICpmZW5jZTsKKworCQkodm9pZCkgdm13X3F1ZXJ5 X3JlYWRiYWNrX2FsbChkeF9xdWVyeV9tb2IpOworCQltdXRleF91bmxvY2soJmRldl9wcml2LT5i aW5kaW5nX211dGV4KTsKKworCQkvKiBDcmVhdGUgYSBmZW5jZSBhbmQgYXR0YWNoIHRoZSBCTyB0 byBpdCAqLworCQkodm9pZCkgdm13X2V4ZWNidWZfZmVuY2VfY29tbWFuZHMoTlVMTCwgZGV2X3By aXYsICZmZW5jZSwgTlVMTCk7CisJCXZtd19mZW5jZV9zaW5nbGVfYm8oYm8sIGZlbmNlKTsKKwor CQlpZiAoZmVuY2UgIT0gTlVMTCkKKwkJCXZtd19mZW5jZV9vYmpfdW5yZWZlcmVuY2UoJmZlbmNl KTsKKworCQkodm9pZCkgdHRtX2JvX3dhaXQoYm8sIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworCX0g ZWxzZQorCQltdXRleF91bmxvY2soJmRldl9wcml2LT5iaW5kaW5nX211dGV4KTsKKworfQorCiAv KioKICAqIHZtd19yZXNvdXJjZV9uZWVkc19iYWNrdXAgLSBSZXR1cm4gd2hldGhlciBhIHJlc291 cmNlIG5lZWRzIGEgYmFja3VwIGJ1ZmZlci4KICAqCi0tIAoyLjEuMAoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==