From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: =?UTF-8?q?=5BPATCH=207/8=5D=20vmwgfx=3A=20Implement=20fence=20objects?= Date: Thu, 1 Sep 2011 22:18:44 +0200 Message-ID: <1314908325-2895-8-git-send-email-thellstrom@vmware.com> References: <1314908325-2895-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 smtp-outbound-1.vmware.com (smtp-outbound-1.vmware.com [65.115.85.69]) by gabe.freedesktop.org (Postfix) with ESMTP id 5E0B6A12B8 for ; Thu, 1 Sep 2011 13:19:15 -0700 (PDT) In-Reply-To: <1314908325-2895-1-git-send-email-thellstrom@vmware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: airlied@gmail.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org V2lsbCBiZSBuZWVkZWQgZm9yIHF1ZXJpZXMgYW5kIGRybSBldmVudC1kcml2ZW4gdGhyb3R0bGlu Zy4KCkFzIGEgYmVuZWZpdCwgdGhleSBoZWxwIGF2b2lkIHN0YWxlIHVzZXItc3BhY2UgZmVuY2Ug aGFuZGxlcy4KClNpZ25lZC1vZmYtYnk6IFRob21hcyBIZWxsc3Ryb20gPHRoZWxsc3Ryb21Adm13 YXJlLmNvbT4KUmV2aWV3ZWQtYnk6IEpha29iIEJvcm5lY3JhbnR6IDxqYWtvYkB2bXdhcmUuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvTWFrZWZpbGUgICAgICAgICAgfCAgICAzICst CiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9idWZmZXIuYyAgIHwgICAyNiArLQogZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmMgICAgICB8ICAgMjggKystCiBkcml2ZXJz L2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaCAgICAgIHwgICAxNiArLQogZHJpdmVycy9ncHUv ZHJtL3Ztd2dmeC92bXdnZnhfZXhlY2J1Zi5jICB8ICAxMTIgKysrKystCiBkcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9mZW5jZS5jICAgIHwgIDYxOSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ZlbmNlLmggICAgfCAgMTA1 ICsrKysrCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9pcnEuYyAgICAgIHwgICAzNSAr LS0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3Jlc291cmNlLmMgfCAgICA0IC0KIGlu Y2x1ZGUvZHJtL3Ztd2dmeF9kcm0uaCAgICAgICAgICAgICAgICAgfCAgMTQ5ICsrKysrKystCiAx MCBmaWxlcyBjaGFuZ2VkLCAxMDEwIGluc2VydGlvbnMoKyksIDg3IGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ZlbmNlLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9mZW5jZS5oCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1 L2RybS92bXdnZngvTWFrZWZpbGUKaW5kZXggZjQxZThiNC4uN2Q4ZTlkNSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13 Z2Z4L01ha2VmaWxlCkBAIC00LDYgKzQsNyBAQCBjY2ZsYWdzLXkgOj0gLUlpbmNsdWRlL2RybQog dm13Z2Z4LXkgOj0gdm13Z2Z4X2V4ZWNidWYubyB2bXdnZnhfZ21yLm8gdm13Z2Z4X2ttcy5vIHZt d2dmeF9kcnYubyBcCiAJICAgIHZtd2dmeF9mYi5vIHZtd2dmeF9pb2N0bC5vIHZtd2dmeF9yZXNv dXJjZS5vIHZtd2dmeF9idWZmZXIubyBcCiAJICAgIHZtd2dmeF9maWZvLm8gdm13Z2Z4X2lycS5v IHZtd2dmeF9sZHUubyB2bXdnZnhfdHRtX2dsdWUubyBcCi0JICAgIHZtd2dmeF9vdmVybGF5Lm8g dm13Z2Z4X21hcmtlci5vIHZtd2dmeF9nbXJpZF9tYW5hZ2VyLm8KKwkgICAgdm13Z2Z4X292ZXJs YXkubyB2bXdnZnhfbWFya2VyLm8gdm13Z2Z4X2dtcmlkX21hbmFnZXIubyBcCisJICAgIHZtd2dm eF9mZW5jZS5vCiAKIG9iai0kKENPTkZJR19EUk1fVk1XR0ZYKSA6PSB2bXdnZngubwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfYnVmZmVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF9idWZmZXIuYwppbmRleCA3MmQ5NTYxLi41ZDY2NWNlIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9idWZmZXIuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9idWZmZXIuYwpAQCAtMjc0LDM5ICsyNzQsMzkgQEAg c3RhdGljIGludCB2bXdfdHRtX2ZhdWx0X3Jlc2VydmVfbm90aWZ5KHN0cnVjdCB0dG1fYnVmZmVy X29iamVjdCAqYm8pCiAKIHN0YXRpYyB2b2lkICp2bXdfc3luY19vYmpfcmVmKHZvaWQgKnN5bmNf b2JqKQogewotCXJldHVybiBzeW5jX29iajsKKworCXJldHVybiAodm9pZCAqKQorCQl2bXdfZmVu Y2Vfb2JqX3JlZmVyZW5jZSgoc3RydWN0IHZtd19mZW5jZV9vYmogKikgc3luY19vYmopOwogfQog CiBzdGF0aWMgdm9pZCB2bXdfc3luY19vYmpfdW5yZWYodm9pZCAqKnN5bmNfb2JqKQogewotCSpz eW5jX29iaiA9IE5VTEw7CisJdm13X2ZlbmNlX29ial91bnJlZmVyZW5jZSgoc3RydWN0IHZtd19m ZW5jZV9vYmogKiopIHN5bmNfb2JqKTsKIH0KIAogc3RhdGljIGludCB2bXdfc3luY19vYmpfZmx1 c2godm9pZCAqc3luY19vYmosIHZvaWQgKnN5bmNfYXJnKQogewotCXN0cnVjdCB2bXdfcHJpdmF0 ZSAqZGV2X3ByaXYgPSAoc3RydWN0IHZtd19wcml2YXRlICopc3luY19hcmc7Ci0KLQltdXRleF9s b2NrKCZkZXZfcHJpdi0+aHdfbXV0ZXgpOwotCXZtd193cml0ZShkZXZfcHJpdiwgU1ZHQV9SRUdf U1lOQywgU1ZHQV9TWU5DX0dFTkVSSUMpOwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmh3X211 dGV4KTsKKwl2bXdfZmVuY2Vfb2JqX2ZsdXNoKChzdHJ1Y3Qgdm13X2ZlbmNlX29iaiAqKSBzeW5j X29iaik7CiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBib29sIHZtd19zeW5jX29ial9zaWduYWxl ZCh2b2lkICpzeW5jX29iaiwgdm9pZCAqc3luY19hcmcpCiB7Ci0Jc3RydWN0IHZtd19wcml2YXRl ICpkZXZfcHJpdiA9IChzdHJ1Y3Qgdm13X3ByaXZhdGUgKilzeW5jX2FyZzsKLQl1aW50MzJfdCBz ZXFubyA9ICh1bnNpZ25lZCBsb25nKSBzeW5jX29iajsKKwl1bnNpZ25lZCBsb25nIGZsYWdzID0g KHVuc2lnbmVkIGxvbmcpIHN5bmNfYXJnOworCXJldHVybgl2bXdfZmVuY2Vfb2JqX3NpZ25hbGVk KChzdHJ1Y3Qgdm13X2ZlbmNlX29iaiAqKSBzeW5jX29iaiwKKwkJCQkgICAgICAgKHVpbnQzMl90 KSBmbGFncyk7CiAKLQlyZXR1cm4gdm13X3NlcW5vX3Bhc3NlZChkZXZfcHJpdiwgc2Vxbm8pOwog fQogCiBzdGF0aWMgaW50IHZtd19zeW5jX29ial93YWl0KHZvaWQgKnN5bmNfb2JqLCB2b2lkICpz eW5jX2FyZywKIAkJCSAgICAgYm9vbCBsYXp5LCBib29sIGludGVycnVwdGlibGUpCiB7Ci0Jc3Ry dWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiA9IChzdHJ1Y3Qgdm13X3ByaXZhdGUgKilzeW5jX2Fy ZzsKLQl1aW50MzJfdCBzZXFubyA9ICh1bnNpZ25lZCBsb25nKSBzeW5jX29iajsKKwl1bnNpZ25l ZCBsb25nIGZsYWdzID0gKHVuc2lnbmVkIGxvbmcpIHN5bmNfYXJnOwogCi0JcmV0dXJuIHZtd193 YWl0X3NlcW5vKGRldl9wcml2LCBmYWxzZSwgc2Vxbm8sIGZhbHNlLCAzKkhaKTsKKwlyZXR1cm4g dm13X2ZlbmNlX29ial93YWl0KChzdHJ1Y3Qgdm13X2ZlbmNlX29iaiAqKSBzeW5jX29iaiwKKwkJ CQkgICh1aW50MzJfdCkgZmxhZ3MsCisJCQkJICBsYXp5LCBpbnRlcnJ1cHRpYmxlLAorCQkJCSAg Vk1XX0ZFTkNFX1dBSVRfVElNRU9VVCk7CiB9CiAKIHN0cnVjdCB0dG1fYm9fZHJpdmVyIHZtd19i b19kcml2ZXIgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9k cnYuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5jCmluZGV4IDRmNjVmMWUu LmQ0ODI5Y2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5jCkBAIC04MiwxMiArODIs MTggQEAKICNkZWZpbmUgRFJNX0lPQ1RMX1ZNV19FWEVDQlVGCQkJCQlcCiAJRFJNX0lPVyhEUk1f Q09NTUFORF9CQVNFICsgRFJNX1ZNV19FWEVDQlVGLAkJXAogCQlzdHJ1Y3QgZHJtX3Ztd19leGVj YnVmX2FyZykKKyNkZWZpbmUgRFJNX0lPQ1RMX1ZNV19HRVRfM0RfQ0FQCQkJCVwKKwlEUk1fSU9X KERSTV9DT01NQU5EX0JBU0UgKyBEUk1fVk1XX0dFVF8zRF9DQVAsCQlcCisJCSBzdHJ1Y3QgZHJt X3Ztd19nZXRfM2RfY2FwX2FyZykKICNkZWZpbmUgRFJNX0lPQ1RMX1ZNV19GRU5DRV9XQUlUCQkJ CVwKIAlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1ZNV19GRU5DRV9XQUlULAkJXAog CQkgc3RydWN0IGRybV92bXdfZmVuY2Vfd2FpdF9hcmcpCi0jZGVmaW5lIERSTV9JT0NUTF9WTVdf R0VUXzNEX0NBUAkJCQlcCi0JRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX1ZNV19HRVRf M0RfQ0FQLAkJXAotCQlzdHJ1Y3QgZHJtX3Ztd19nZXRfM2RfY2FwX2FyZykKKyNkZWZpbmUgRFJN X0lPQ1RMX1ZNV19GRU5DRV9TSUdOQUxFRAkJCQlcCisJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFT RSArIERSTV9WTVdfRkVOQ0VfU0lHTkFMRUQsCVwKKwkJIHN0cnVjdCBkcm1fdm13X2ZlbmNlX3Np Z25hbGVkX2FyZykKKyNkZWZpbmUgRFJNX0lPQ1RMX1ZNV19GRU5DRV9VTlJFRgkJCQlcCisJRFJN X0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX1ZNV19GRU5DRV9VTlJFRiwJCVwKKwkJIHN0cnVj dCBkcm1fdm13X2ZlbmNlX2FyZykKIAogLyoqCiAgKiBUaGUgY29yZSBEUk0gdmVyc2lvbiBvZiB0 aGlzIG1hY3JvIGRvZXNuJ3QgYWNjb3VudCBmb3IKQEAgLTEzMSw3ICsxMzcsMTIgQEAgc3RhdGlj IHN0cnVjdCBkcm1faW9jdGxfZGVzYyB2bXdfaW9jdGxzW10gPSB7CiAJCSAgICAgIERSTV9BVVRI IHwgRFJNX1VOTE9DS0VEKSwKIAlWTVdfSU9DVExfREVGKFZNV19FWEVDQlVGLCB2bXdfZXhlY2J1 Zl9pb2N0bCwKIAkJICAgICAgRFJNX0FVVEggfCBEUk1fVU5MT0NLRUQpLAotCVZNV19JT0NUTF9E RUYoVk1XX0ZFTkNFX1dBSVQsIHZtd19mZW5jZV93YWl0X2lvY3RsLAorCVZNV19JT0NUTF9ERUYo Vk1XX0ZFTkNFX1dBSVQsIHZtd19mZW5jZV9vYmpfd2FpdF9pb2N0bCwKKwkJICAgICAgRFJNX0FV VEggfCBEUk1fVU5MT0NLRUQpLAorCVZNV19JT0NUTF9ERUYoVk1XX0ZFTkNFX1NJR05BTEVELAor CQkgICAgICB2bXdfZmVuY2Vfb2JqX3NpZ25hbGVkX2lvY3RsLAorCQkgICAgICBEUk1fQVVUSCB8 IERSTV9VTkxPQ0tFRCksCisJVk1XX0lPQ1RMX0RFRihWTVdfRkVOQ0VfVU5SRUYsIHZtd19mZW5j ZV9vYmpfdW5yZWZfaW9jdGwsCiAJCSAgICAgIERSTV9BVVRIIHwgRFJNX1VOTE9DS0VEKSwKIAlW TVdfSU9DVExfREVGKFZNV19HRVRfM0RfQ0FQLCB2bXdfZ2V0X2NhcF8zZF9pb2N0bCwKIAkJICAg ICAgRFJNX0FVVEggfCBEUk1fVU5MT0NLRUQpLApAQCAtMTk4LDEyICsyMDksMTQgQEAgc3RhdGlj IGludCB2bXdfcmVxdWVzdF9kZXZpY2Uoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdikKIAkJ RFJNX0VSUk9SKCJVbmFibGUgdG8gaW5pdGlhbGl6ZSBGSUZPLlxuIik7CiAJCXJldHVybiByZXQ7 CiAJfQorCXZtd19mZW5jZV9maWZvX3VwKGRldl9wcml2LT5mbWFuKTsKIAogCXJldHVybiAwOwog fQogCiBzdGF0aWMgdm9pZCB2bXdfcmVsZWFzZV9kZXZpY2Uoc3RydWN0IHZtd19wcml2YXRlICpk ZXZfcHJpdikKIHsKKwl2bXdfZmVuY2VfZmlmb19kb3duKGRldl9wcml2LT5mbWFuKTsKIAl2bXdf Zmlmb19yZWxlYXNlKGRldl9wcml2LCAmZGV2X3ByaXYtPmZpZm8pOwogfQogCkBAIC00MzQsNiAr NDQ3LDEwIEBAIHN0YXRpYyBpbnQgdm13X2RyaXZlcl9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHVuc2lnbmVkIGxvbmcgY2hpcHNldCkKIAkJCWdvdG8gb3V0X25vX2RldmljZTsKIAkJfQog CX0KKworCWRldl9wcml2LT5mbWFuID0gdm13X2ZlbmNlX21hbmFnZXJfaW5pdChkZXZfcHJpdik7 CisJaWYgKHVubGlrZWx5KGRldl9wcml2LT5mbWFuID09IE5VTEwpKQorCQlnb3RvIG91dF9ub19m bWFuOwogCXJldCA9IHZtd19rbXNfaW5pdChkZXZfcHJpdik7CiAJaWYgKHVubGlrZWx5KHJldCAh PSAwKSkKIAkJZ290byBvdXRfbm9fa21zOwpAQCAtNDc1LDYgKzQ5Miw4IEBAIG91dF9ub19maWZv OgogCXZtd19vdmVybGF5X2Nsb3NlKGRldl9wcml2KTsKIAl2bXdfa21zX2Nsb3NlKGRldl9wcml2 KTsKIG91dF9ub19rbXM6CisJdm13X2ZlbmNlX21hbmFnZXJfdGFrZWRvd24oZGV2X3ByaXYtPmZt YW4pOworb3V0X25vX2ZtYW46CiAJaWYgKGRldl9wcml2LT5zdGVhbHRoKQogCQlwY2lfcmVsZWFz ZV9yZWdpb24oZGV2LT5wZGV2LCAyKTsKIAllbHNlCkBAIC01MTgsNiArNTM3LDcgQEAgc3RhdGlj IGludCB2bXdfZHJpdmVyX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCX0KIAl2bXdf a21zX2Nsb3NlKGRldl9wcml2KTsKIAl2bXdfb3ZlcmxheV9jbG9zZShkZXZfcHJpdik7CisJdm13 X2ZlbmNlX21hbmFnZXJfdGFrZWRvd24oZGV2X3ByaXYtPmZtYW4pOwogCWlmIChkZXZfcHJpdi0+ c3RlYWx0aCkKIAkJcGNpX3JlbGVhc2VfcmVnaW9uKGRldi0+cGRldiwgMik7CiAJZWxzZQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaAppbmRleCAzMDE4ODcxLi43NzBmMDYzIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgInR0 bS90dG1fbG9jay5oIgogI2luY2x1ZGUgInR0bS90dG1fZXhlY2J1Zl91dGlsLmgiCiAjaW5jbHVk ZSAidHRtL3R0bV9tb2R1bGUuaCIKKyNpbmNsdWRlICJ2bXdnZnhfZmVuY2UuaCIKIAogI2RlZmlu ZSBWTVdHRlhfRFJJVkVSX0RBVEUgIjIwMTAwOTI3IgogI2RlZmluZSBWTVdHRlhfRFJJVkVSX01B Sk9SIDEKQEAgLTUzLDYgKzU0LDExIEBACiAjZGVmaW5lIFZNV19QTF9HTVIgVFRNX1BMX1BSSVYw CiAjZGVmaW5lIFZNV19QTF9GTEFHX0dNUiBUVE1fUExfRkxBR19QUklWMAogCisjZGVmaW5lIFZN V19SRVNfQ09OVEVYVCB0dG1fZHJpdmVyX3R5cGUwCisjZGVmaW5lIFZNV19SRVNfU1VSRkFDRSB0 dG1fZHJpdmVyX3R5cGUxCisjZGVmaW5lIFZNV19SRVNfU1RSRUFNIHR0bV9kcml2ZXJfdHlwZTIK KyNkZWZpbmUgVk1XX1JFU19GRU5DRSB0dG1fZHJpdmVyX3R5cGUzCisKIHN0cnVjdCB2bXdfZnBy aXYgewogCXN0cnVjdCBkcm1fbWFzdGVyICpsb2NrZWRfbWFzdGVyOwogCXN0cnVjdCB0dG1fb2Jq ZWN0X2ZpbGUgKnRmaWxlOwpAQCAtMjQ1LDYgKzI1MSw3IEBAIHN0cnVjdCB2bXdfcHJpdmF0ZSB7 CiAJYXRvbWljX3QgZmlmb19xdWV1ZV93YWl0ZXJzOwogCXVpbnQzMl90IGxhc3RfcmVhZF9zZXFu bzsKIAlzcGlubG9ja190IGlycV9sb2NrOworCXN0cnVjdCB2bXdfZmVuY2VfbWFuYWdlciAqZm1h bjsKIAogCS8qCiAJICogRGV2aWNlIHN0YXRlCkBAIC00NTYsOCArNDYzLDYgQEAgZXh0ZXJuIGlu dCB2bXdfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIHZv aWQgdm13X2lycV91bmluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gYm9v bCB2bXdfc2Vxbm9fcGFzc2VkKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJdWlu dDMyX3Qgc2Vxbm8pOwotZXh0ZXJuIGludCB2bXdfZmVuY2Vfd2FpdF9pb2N0bChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAotCQkJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2 KTsKIGV4dGVybiBpbnQgdm13X2ZhbGxiYWNrX3dhaXQoc3RydWN0IHZtd19wcml2YXRlICpkZXZf cHJpdiwKIAkJCSAgICAgYm9vbCBsYXp5LAogCQkJICAgICBib29sIGZpZm9faWRsZSwKQEAgLTQ2 Niw3ICs0NzEsOCBAQCBleHRlcm4gaW50IHZtd19mYWxsYmFja193YWl0KHN0cnVjdCB2bXdfcHJp dmF0ZSAqZGV2X3ByaXYsCiAJCQkgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7CiBleHRlcm4g dm9pZCB2bXdfdXBkYXRlX3NlcW5vKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJ c3RydWN0IHZtd19maWZvX3N0YXRlICpmaWZvX3N0YXRlKTsKLQorZXh0ZXJuIHZvaWQgdm13X3Nl cW5vX3dhaXRlcl9hZGQoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdik7CitleHRlcm4gdm9p ZCB2bXdfc2Vxbm9fd2FpdGVyX3JlbW92ZShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2KTsK IAogLyoqCiAgKiBSdWRpbWVudGFyeSBmZW5jZS1saWtlIG9iamVjdHMgY3VycmVudGx5IHVzZWQg b25seSBmb3IgdGhyb3R0bGluZyAtCkBAIC01NzIsNCArNTc4LDggQEAgc3RhdGljIGlubGluZSBz dHJ1Y3Qgdm13X2RtYV9idWZmZXIgKnZtd19kbWFidWZfcmVmZXJlbmNlKHN0cnVjdCB2bXdfZG1h X2J1ZmZlcgogCXJldHVybiBOVUxMOwogfQogCitzdGF0aWMgaW5saW5lIHN0cnVjdCB0dG1fbWVt X2dsb2JhbCAqdm13X21lbV9nbG9iKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJ cmV0dXJuIChzdHJ1Y3QgdHRtX21lbV9nbG9iYWwgKikgZGV2X3ByaXYtPm1lbV9nbG9iYWxfcmVm Lm9iamVjdDsKK30KICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92 bXdnZnhfZXhlY2J1Zi5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZXhlY2J1Zi5j CmluZGV4IDQ4MTFjNmIuLjAyNTVhYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdn Zngvdm13Z2Z4X2V4ZWNidWYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9l eGVjYnVmLmMKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdGF0aWMgaW50IHZtd190cmFuc2xhdGVfZ3Vl c3RfcHRyKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaWYgKHVubGlrZWx5KGN1cl92 YWxpZGF0ZV9ub2RlID09IHN3X2NvbnRleHQtPmN1cl92YWxfYnVmKSkgewogCQl2YWxfYnVmID0g JnN3X2NvbnRleHQtPnZhbF9idWZzW2N1cl92YWxpZGF0ZV9ub2RlXTsKIAkJdmFsX2J1Zi0+Ym8g PSB0dG1fYm9fcmVmZXJlbmNlKGJvKTsKLQkJdmFsX2J1Zi0+bmV3X3N5bmNfb2JqX2FyZyA9ICh2 b2lkICopIGRldl9wcml2OworCQl2YWxfYnVmLT5uZXdfc3luY19vYmpfYXJnID0gKHZvaWQgKikg RFJNX1ZNV19GRU5DRV9GTEFHX0VYRUM7CiAJCWxpc3RfYWRkX3RhaWwoJnZhbF9idWYtPmhlYWQs ICZzd19jb250ZXh0LT52YWxpZGF0ZV9ub2Rlcyk7CiAJCSsrc3dfY29udGV4dC0+Y3VyX3ZhbF9i dWY7CiAJfQpAQCAtMzIwLDcgKzMyMCw2IEBAIHN0YXRpYyBpbnQgdm13X2NtZF93YWl0X3F1ZXJ5 KHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJcmV0dXJuIDA7CiB9CiAKLQogc3RhdGlj IGludCB2bXdfY21kX2RtYShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogCQkgICAgICAg c3RydWN0IHZtd19zd19jb250ZXh0ICpzd19jb250ZXh0LAogCQkgICAgICAgU1ZHQTNkQ21kSGVh ZGVyICpoZWFkZXIpCkBAIC02NzUsNiArNjc0LDUwIEBAIHN0YXRpYyBpbnQgdm13X3Jlc2l6ZV9j bWRfYm91bmNlKHN0cnVjdCB2bXdfc3dfY29udGV4dCAqc3dfY29udGV4dCwKIAlyZXR1cm4gMDsK IH0KIAorLyoqCisgKiB2bXdfZXhlY2J1Zl9mZW5jZV9jb21tYW5kcyAtIGNyZWF0ZSBhbmQgc3Vi bWl0IGEgY29tbWFuZCBzdHJlYW0gZmVuY2UKKyAqCisgKiBDcmVhdGVzIGEgZmVuY2Ugb2JqZWN0 IGFuZCBzdWJtaXRzIGEgY29tbWFuZCBzdHJlYW0gbWFya2VyLgorICogSWYgdGhpcyBmYWlscyBm b3Igc29tZSByZWFzb24sIFdlIHN5bmMgdGhlIGZpZm8gYW5kIHJldHVybiBOVUxMLgorICogSXQg aXMgdGhlbiBzYWZlIHRvIGZlbmNlIGJ1ZmZlcnMgd2l0aCBhIE5VTEwgcG9pbnRlci4KKyAqLwor CitpbnQgdm13X2V4ZWNidWZfZmVuY2VfY29tbWFuZHMoc3RydWN0IGRybV9maWxlICpmaWxlX3By aXYsCisJCQkgICAgICAgc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgICAgICBz dHJ1Y3Qgdm13X2ZlbmNlX29iaiAqKnBfZmVuY2UsCisJCQkgICAgICAgdWludDMyX3QgKnBfaGFu ZGxlKQoreworCXVpbnQzMl90IHNlcXVlbmNlOworCWludCByZXQ7CisJYm9vbCBzeW5jZWQgPSBm YWxzZTsKKworCisJcmV0ID0gdm13X2ZpZm9fc2VuZF9mZW5jZShkZXZfcHJpdiwgJnNlcXVlbmNl KTsKKwlpZiAodW5saWtlbHkocmV0ICE9IDApKSB7CisJCURSTV9FUlJPUigiRmVuY2Ugc3VibWlz c2lvbiBlcnJvci4gU3luY2luZy5cbiIpOworCQlzeW5jZWQgPSB0cnVlOworCX0KKworCWlmIChw X2hhbmRsZSAhPSBOVUxMKQorCQlyZXQgPSB2bXdfdXNlcl9mZW5jZV9jcmVhdGUoZmlsZV9wcml2 LCBkZXZfcHJpdi0+Zm1hbiwKKwkJCQkJICAgIHNlcXVlbmNlLAorCQkJCQkgICAgRFJNX1ZNV19G RU5DRV9GTEFHX0VYRUMsCisJCQkJCSAgICBwX2ZlbmNlLCBwX2hhbmRsZSk7CisJZWxzZQorCQly ZXQgPSB2bXdfZmVuY2VfY3JlYXRlKGRldl9wcml2LT5mbWFuLCBzZXF1ZW5jZSwKKwkJCQkgICAg ICAgRFJNX1ZNV19GRU5DRV9GTEFHX0VYRUMsCisJCQkJICAgICAgIHBfZmVuY2UpOworCisJaWYg KHVubGlrZWx5KHJldCAhPSAwICYmICFzeW5jZWQpKSB7CisJCSh2b2lkKSB2bXdfZmFsbGJhY2tf d2FpdChkZXZfcHJpdiwgZmFsc2UsIGZhbHNlLAorCQkJCQkgc2VxdWVuY2UsIGZhbHNlLAorCQkJ CQkgVk1XX0ZFTkNFX1dBSVRfVElNRU9VVCk7CisJCSpwX2ZlbmNlID0gTlVMTDsKKwl9CisKKwly ZXR1cm4gMDsKK30KKwogaW50IHZtd19leGVjYnVmX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCiAJCSAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQogewpA QCAtNjg1LDkgKzcyOCwxMCBAQCBpbnQgdm13X2V4ZWNidWZfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpbnQgcmV0OwogCXZvaWQgKnVzZXJfY21kOwogCXZvaWQg KmNtZDsKLQl1aW50MzJfdCBzZXFubzsKIAlzdHJ1Y3Qgdm13X3N3X2NvbnRleHQgKnN3X2NvbnRl eHQgPSAmZGV2X3ByaXYtPmN0eDsKIAlzdHJ1Y3Qgdm13X21hc3RlciAqdm1hc3RlciA9IHZtd19t YXN0ZXIoZmlsZV9wcml2LT5tYXN0ZXIpOworCXN0cnVjdCB2bXdfZmVuY2Vfb2JqICpmZW5jZTsK Kwl1aW50MzJfdCBoYW5kbGU7CiAKIAlyZXQgPSB0dG1fcmVhZF9sb2NrKCZ2bWFzdGVyLT5sb2Nr LCB0cnVlKTsKIAlpZiAodW5saWtlbHkocmV0ICE9IDApKQpAQCAtNzU0LDM0ICs3OTgsNjAgQEAg aW50IHZtd19leGVjYnVmX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CiAJbWVtY3B5KGNtZCwgc3dfY29udGV4dC0+Y21kX2JvdW5jZSwgYXJnLT5jb21tYW5kX3NpemUp OwogCXZtd19maWZvX2NvbW1pdChkZXZfcHJpdiwgYXJnLT5jb21tYW5kX3NpemUpOwogCi0JcmV0 ID0gdm13X2ZpZm9fc2VuZF9mZW5jZShkZXZfcHJpdiwgJnNlcW5vKTsKLQotCXR0bV9ldV9mZW5j ZV9idWZmZXJfb2JqZWN0cygmc3dfY29udGV4dC0+dmFsaWRhdGVfbm9kZXMsCi0JCQkJICAgICh2 b2lkICopKHVuc2lnbmVkIGxvbmcpIHNlcW5vKTsKLQl2bXdfY2xlYXJfdmFsaWRhdGlvbnMoc3df Y29udGV4dCk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+Y21kYnVmX211dGV4KTsKLQorCXVz ZXJfZmVuY2VfcmVwID0gKHN0cnVjdCBkcm1fdm13X2ZlbmNlX3JlcCBfX3VzZXIgKikKKwkJKHVu c2lnbmVkIGxvbmcpYXJnLT5mZW5jZV9yZXA7CisJcmV0ID0gdm13X2V4ZWNidWZfZmVuY2VfY29t bWFuZHMoZmlsZV9wcml2LCBkZXZfcHJpdiwKKwkJCQkJICZmZW5jZSwKKwkJCQkJICh1c2VyX2Zl bmNlX3JlcCkgPyAmaGFuZGxlIDogTlVMTCk7CiAJLyoKIAkgKiBUaGlzIGVycm9yIGlzIGhhcm1s ZXNzLCBiZWNhdXNlIGlmIGZlbmNlIHN1Ym1pc3Npb24gZmFpbHMsCi0JICogdm13X2ZpZm9fc2Vu ZF9mZW5jZSB3aWxsIHN5bmMuCisJICogdm13X2ZpZm9fc2VuZF9mZW5jZSB3aWxsIHN5bmMuIFRo ZSBlcnJvciB3aWxsIGJlIHByb3BhZ2F0ZWQgdG8KKwkgKiB1c2VyLXNwYWNlIGluIEBmZW5jZV9y ZXAKIAkgKi8KIAogCWlmIChyZXQgIT0gMCkKIAkJRFJNX0VSUk9SKCJGZW5jZSBzdWJtaXNzaW9u IGVycm9yLiBTeW5jaW5nLlxuIik7CiAKLQlmZW5jZV9yZXAuZXJyb3IgPSByZXQ7Ci0JZmVuY2Vf cmVwLmZlbmNlX3NlcSA9ICh1aW50NjRfdCkgc2Vxbm87Ci0JZmVuY2VfcmVwLnBhZDY0ID0gMDsK Kwl0dG1fZXVfZmVuY2VfYnVmZmVyX29iamVjdHMoJnN3X2NvbnRleHQtPnZhbGlkYXRlX25vZGVz LAorCQkJCSAgICAodm9pZCAqKSBmZW5jZSk7CiAKLQl1c2VyX2ZlbmNlX3JlcCA9IChzdHJ1Y3Qg ZHJtX3Ztd19mZW5jZV9yZXAgX191c2VyICopCi0JICAgICh1bnNpZ25lZCBsb25nKWFyZy0+ZmVu Y2VfcmVwOworCXZtd19jbGVhcl92YWxpZGF0aW9ucyhzd19jb250ZXh0KTsKKwltdXRleF91bmxv Y2soJmRldl9wcml2LT5jbWRidWZfbXV0ZXgpOwogCi0JLyoKLQkgKiBjb3B5X3RvX3VzZXIgZXJy b3JzIHdpbGwgYmUgZGV0ZWN0ZWQgYnkgdXNlciBzcGFjZSBub3QKLQkgKiBzZWVpbmcgZmVuY2Vf cmVwOjplcnJvciBmaWxsZWQgaW4uCi0JICovCisJaWYgKHVzZXJfZmVuY2VfcmVwKSB7CisJCWZl bmNlX3JlcC5lcnJvciA9IHJldDsKKwkJZmVuY2VfcmVwLmhhbmRsZSA9IGhhbmRsZTsKKwkJZmVu Y2VfcmVwLnNlcW5vID0gZmVuY2UtPnNlcW5vOworCQl2bXdfdXBkYXRlX3NlcW5vKGRldl9wcml2 LCAmZGV2X3ByaXYtPmZpZm8pOworCQlmZW5jZV9yZXAucGFzc2VkX3NlcW5vID0gZGV2X3ByaXYt Pmxhc3RfcmVhZF9zZXFubzsKKworCQkvKgorCQkgKiBjb3B5X3RvX3VzZXIgZXJyb3JzIHdpbGwg YmUgZGV0ZWN0ZWQgYnkgdXNlciBzcGFjZSBub3QKKwkJICogc2VlaW5nIGZlbmNlX3JlcDo6ZXJy b3IgZmlsbGVkIGluLiBUeXBpY2FsbHkKKwkJICogdXNlci1zcGFjZSB3b3VsZCBoYXZlIHByZS1z ZXQgdGhhdCBtZW1iZXIgdG8gLUVGQVVMVC4KKwkJICovCisJCXJldCA9IGNvcHlfdG9fdXNlcih1 c2VyX2ZlbmNlX3JlcCwgJmZlbmNlX3JlcCwKKwkJCQkgICBzaXplb2YoZmVuY2VfcmVwKSk7CisK KwkJLyoKKwkJICogVXNlci1zcGFjZSBsb3N0IHRoZSBmZW5jZSBvYmplY3QuIFdlIG5lZWQgdG8g c3luYworCQkgKiBhbmQgdW5yZWZlcmVuY2UgdGhlIGhhbmRsZS4KKwkJICovCisJCWlmICh1bmxp a2VseShyZXQgIT0gMCkgJiYgKGZlbmNlX3JlcC5lcnJvciA9PSAwKSkgeworCQkJQlVHX09OKGZl bmNlID09IE5VTEwpOworCisJCQl0dG1fcmVmX29iamVjdF9iYXNlX3VucmVmKHZtd19mcHJpdihm aWxlX3ByaXYpLT50ZmlsZSwKKwkJCQkJCSAgaGFuZGxlLCBUVE1fUkVGX1VTQUdFKTsKKwkJCURS TV9FUlJPUigiRmVuY2UgY29weSBlcnJvci4gU3luY2luZy5cbiIpOworCQkJKHZvaWQpIHZtd19m ZW5jZV9vYmpfd2FpdChmZW5jZSwKKwkJCQkJCSAgZmVuY2UtPnNpZ25hbF9tYXNrLAorCQkJCQkJ ICBmYWxzZSwgZmFsc2UsCisJCQkJCQkgIFZNV19GRU5DRV9XQUlUX1RJTUVPVVQpOworCQl9CisJ fQogCi0JcmV0ID0gY29weV90b191c2VyKHVzZXJfZmVuY2VfcmVwLCAmZmVuY2VfcmVwLCBzaXpl b2YoZmVuY2VfcmVwKSk7CisJaWYgKGxpa2VseShmZW5jZSAhPSBOVUxMKSkKKwkJdm13X2ZlbmNl X29ial91bnJlZmVyZW5jZSgmZmVuY2UpOwogCiAJdm13X2ttc19jdXJzb3JfcG9zdF9leGVjYnVm KGRldl9wcml2KTsKIAl0dG1fcmVhZF91bmxvY2soJnZtYXN0ZXItPmxvY2spOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2Ry bS92bXdnZngvdm13Z2Z4X2ZlbmNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uOGRmNjc5ZgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13 Z2Z4X2ZlbmNlLmMKQEAgLTAsMCArMSw2MTkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAq IENvcHlyaWdodCDCqSAyMDExIFZNd2FyZSwgSW5jLiwgUGFsbyBBbHRvLCBDQS4sIFVTQQorICog QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorICog IlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s IGluY2x1ZGluZworICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorICogZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworICogcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv CisgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKKyAqIG5l eHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zCisgKiBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJ R0hUIEhPTERFUlMsIEFVVEhPUlMgQU5EL09SIElUUyBTVVBQTElFUlMgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IKKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBP VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUKKyAqIFVTRSBP UiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworCisjaW5jbHVkZSAiZHJtUC5oIgorI2luY2x1ZGUgInZtd2dmeF9kcnYuaCIKKworI2RlZmlu ZSBWTVdfRkVOQ0VfV1JBUCAoMSA8PCAzMSkKKworc3RydWN0IHZtd19mZW5jZV9tYW5hZ2VyIHsK KwlpbnQgbnVtX2ZlbmNlX29iamVjdHM7CisJc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdjsK KwlzcGlubG9ja190IGxvY2s7CisJdTMyIG5leHRfc2Vxbm87CisJc3RydWN0IGxpc3RfaGVhZCBm ZW5jZV9saXN0OworCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOworCXUzMiB1c2VyX2ZlbmNlX3Np emU7CisJdTMyIGZlbmNlX3NpemU7CisJYm9vbCBmaWZvX2Rvd247CisJc3RydWN0IGxpc3RfaGVh ZCBjbGVhbnVwX2xpc3Q7Cit9OworCitzdHJ1Y3Qgdm13X3VzZXJfZmVuY2UgeworCXN0cnVjdCB0 dG1fYmFzZV9vYmplY3QgYmFzZTsKKwlzdHJ1Y3Qgdm13X2ZlbmNlX29iaiBmZW5jZTsKK307CisK Ky8qKgorICogdm13X2ZlbmNlX2Rlc3Ryb3lfbG9ja2VkCisgKgorICovCisKK3N0YXRpYyB2b2lk IHZtd19mZW5jZV9vYmpfZGVzdHJveV9sb2NrZWQoc3RydWN0IGtyZWYgKmtyZWYpCit7CisJc3Ry dWN0IHZtd19mZW5jZV9vYmogKmZlbmNlID0KKwkJY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCB2 bXdfZmVuY2Vfb2JqLCBrcmVmKTsKKworCXN0cnVjdCB2bXdfZmVuY2VfbWFuYWdlciAqZm1hbiA9 IGZlbmNlLT5mbWFuOworCXVuc2lnbmVkIGludCBudW1fZmVuY2VzOworCisJbGlzdF9kZWxfaW5p dCgmZmVuY2UtPmhlYWQpOworCW51bV9mZW5jZXMgPSAtLWZtYW4tPm51bV9mZW5jZV9vYmplY3Rz OworCXNwaW5fdW5sb2NrX2lycSgmZm1hbi0+bG9jayk7CisJaWYgKGZlbmNlLT5kZXN0cm95KQor CQlmZW5jZS0+ZGVzdHJveShmZW5jZSk7CisJZWxzZQorCQlrZnJlZShmZW5jZSk7CisKKwlzcGlu X2xvY2tfaXJxKCZmbWFuLT5sb2NrKTsKK30KKworCisvKioKKyAqIEV4ZWN1dGUgc2lnbmFsIGFj dGlvbnMgb24gZmVuY2VzIHJlY2VudGx5IHNpZ25hbGVkLgorICogVGhpcyBpcyBkb25lIGZyb20g YSB3b3JrcXVldWUgc28gd2UgZG9uJ3QgaGF2ZSB0byBleGVjdXRlCisgKiBzaWduYWwgYWN0aW9u cyBmcm9tIGF0b21pYyBjb250ZXh0LgorICovCisKK3N0YXRpYyB2b2lkIHZtd19mZW5jZV93b3Jr X2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQoreworCXN0cnVjdCB2bXdfZmVuY2VfbWFu YWdlciAqZm1hbiA9CisJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3Qgdm13X2ZlbmNlX21hbmFn ZXIsIHdvcmspOworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKwlzdHJ1Y3Qgdm13X2ZlbmNlX2Fj dGlvbiAqYWN0aW9uLCAqbmV4dF9hY3Rpb247CisKKwlkbyB7CisJCUlOSVRfTElTVF9IRUFEKCZs aXN0KTsKKwkJc3Bpbl9sb2NrX2lycSgmZm1hbi0+bG9jayk7CisJCWxpc3Rfc3BsaWNlX2luaXQo JmZtYW4tPmNsZWFudXBfbGlzdCwgJmxpc3QpOworCQlzcGluX3VubG9ja19pcnEoJmZtYW4tPmxv Y2spOworCisJCWlmIChsaXN0X2VtcHR5KCZsaXN0KSkKKwkJCXJldHVybjsKKworCQkvKgorCQkg KiBBdCB0aGlzIHBvaW50LCBvbmx5IHdlIHNob3VsZCBiZSBhYmxlIHRvIG1hbmlwdWxhdGUgdGhl CisJCSAqIGxpc3QgaGVhZHMgb2YgdGhlIGFjdGlvbnMgd2UgaGF2ZSBvbiB0aGUgcHJpdmF0ZSBs aXN0LgorCQkgKi8KKworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYWN0aW9uLCBuZXh0X2Fj dGlvbiwgJmxpc3QsIGhlYWQpIHsKKwkJCWxpc3RfZGVsX2luaXQoJmFjdGlvbi0+aGVhZCk7CisJ CQlhY3Rpb24tPmNsZWFudXAoYWN0aW9uKTsKKwkJfQorCX0gd2hpbGUgKDEpOworfQorCitzdHJ1 Y3Qgdm13X2ZlbmNlX21hbmFnZXIgKnZtd19mZW5jZV9tYW5hZ2VyX2luaXQoc3RydWN0IHZtd19w cml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3Qgdm13X2ZlbmNlX21hbmFnZXIgKmZtYW4gPSBr emFsbG9jKHNpemVvZigqZm1hbiksIEdGUF9LRVJORUwpOworCisJaWYgKHVubGlrZWx5KGZtYW4g PT0gTlVMTCkpCisJCXJldHVybiBOVUxMOworCisJZm1hbi0+ZGV2X3ByaXYgPSBkZXZfcHJpdjsK KwlzcGluX2xvY2tfaW5pdCgmZm1hbi0+bG9jayk7CisJSU5JVF9MSVNUX0hFQUQoJmZtYW4tPmZl bmNlX2xpc3QpOworCUlOSVRfTElTVF9IRUFEKCZmbWFuLT5jbGVhbnVwX2xpc3QpOworCUlOSVRf V09SSygmZm1hbi0+d29yaywgJnZtd19mZW5jZV93b3JrX2Z1bmMpOworCWZtYW4tPmZpZm9fZG93 biA9IHRydWU7CisJZm1hbi0+dXNlcl9mZW5jZV9zaXplID0gdHRtX3JvdW5kX3BvdChzaXplb2Yo c3RydWN0IHZtd191c2VyX2ZlbmNlKSk7CisJZm1hbi0+ZmVuY2Vfc2l6ZSA9IHR0bV9yb3VuZF9w b3Qoc2l6ZW9mKHN0cnVjdCB2bXdfZmVuY2Vfb2JqKSk7CisKKwlyZXR1cm4gZm1hbjsKK30KKwor dm9pZCB2bXdfZmVuY2VfbWFuYWdlcl90YWtlZG93bihzdHJ1Y3Qgdm13X2ZlbmNlX21hbmFnZXIg KmZtYW4pCit7CisJdW5zaWduZWQgbG9uZyBpcnFfZmxhZ3M7CisJYm9vbCBsaXN0c19lbXB0eTsK KworCSh2b2lkKSBjYW5jZWxfd29ya19zeW5jKCZmbWFuLT53b3JrKTsKKworCXNwaW5fbG9ja19p cnFzYXZlKCZmbWFuLT5sb2NrLCBpcnFfZmxhZ3MpOworCWxpc3RzX2VtcHR5ID0gbGlzdF9lbXB0 eSgmZm1hbi0+ZmVuY2VfbGlzdCkgJiYKKwkJbGlzdF9lbXB0eSgmZm1hbi0+Y2xlYW51cF9saXN0 KTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZmbWFuLT5sb2NrLCBpcnFfZmxhZ3MpOworCisJ QlVHX09OKCFsaXN0c19lbXB0eSk7CisJa2ZyZWUoZm1hbik7Cit9CisKK3N0YXRpYyBpbnQgdm13 X2ZlbmNlX29ial9pbml0KHN0cnVjdCB2bXdfZmVuY2VfbWFuYWdlciAqZm1hbiwKKwkJCSAgICAg IHN0cnVjdCB2bXdfZmVuY2Vfb2JqICpmZW5jZSwKKwkJCSAgICAgIHUzMiBzZXFubywKKwkJCSAg ICAgIHVpbnQzMl90IG1hc2ssCisJCQkgICAgICB2b2lkICgqZGVzdHJveSkgKHN0cnVjdCB2bXdf ZmVuY2Vfb2JqICpmZW5jZSkpCit7CisJdW5zaWduZWQgbG9uZyBpcnFfZmxhZ3M7CisJdW5zaWdu ZWQgaW50IG51bV9mZW5jZXM7CisJaW50IHJldCA9IDA7CisKKwlmZW5jZS0+c2Vxbm8gPSBzZXFu bzsKKwlJTklUX0xJU1RfSEVBRCgmZmVuY2UtPnNlcV9wYXNzZWRfYWN0aW9ucyk7CisJZmVuY2Ut PmZtYW4gPSBmbWFuOworCWZlbmNlLT5zaWduYWxlZCA9IDA7CisJZmVuY2UtPnNpZ25hbF9tYXNr ID0gbWFzazsKKwlrcmVmX2luaXQoJmZlbmNlLT5rcmVmKTsKKwlmZW5jZS0+ZGVzdHJveSA9IGRl c3Ryb3k7CisJaW5pdF93YWl0cXVldWVfaGVhZCgmZmVuY2UtPnF1ZXVlKTsKKworCXNwaW5fbG9j a19pcnFzYXZlKCZmbWFuLT5sb2NrLCBpcnFfZmxhZ3MpOworCWlmICh1bmxpa2VseShmbWFuLT5m aWZvX2Rvd24pKSB7CisJCXJldCA9IC1FQlVTWTsKKwkJZ290byBvdXRfdW5sb2NrOworCX0KKwls aXN0X2FkZF90YWlsKCZmZW5jZS0+aGVhZCwgJmZtYW4tPmZlbmNlX2xpc3QpOworCW51bV9mZW5j ZXMgPSArK2ZtYW4tPm51bV9mZW5jZV9vYmplY3RzOworCitvdXRfdW5sb2NrOgorCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmZtYW4tPmxvY2ssIGlycV9mbGFncyk7CisJcmV0dXJuIHJldDsKKwor fQorCitzdHJ1Y3Qgdm13X2ZlbmNlX29iaiAqdm13X2ZlbmNlX29ial9yZWZlcmVuY2Uoc3RydWN0 IHZtd19mZW5jZV9vYmogKmZlbmNlKQoreworCWtyZWZfZ2V0KCZmZW5jZS0+a3JlZik7CisJcmV0 dXJuIGZlbmNlOworfQorCisvKioKKyAqIHZtd19mZW5jZV9vYmpfdW5yZWZlcmVuY2UKKyAqCisg KiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBtYXkgbm90IGJlIGVudGVyZWQgd2l0aCBkaXNhYmxl ZCBpcnFzIHNpbmNlCisgKiBpdCBtYXkgcmUtZW5hYmxlIHRoZW0gaW4gdGhlIGRlc3Ryb3kgZnVu Y3Rpb24uCisgKgorICovCit2b2lkIHZtd19mZW5jZV9vYmpfdW5yZWZlcmVuY2Uoc3RydWN0IHZt d19mZW5jZV9vYmogKipmZW5jZV9wKQoreworCXN0cnVjdCB2bXdfZmVuY2Vfb2JqICpmZW5jZSA9 ICpmZW5jZV9wOworCXN0cnVjdCB2bXdfZmVuY2VfbWFuYWdlciAqZm1hbiA9IGZlbmNlLT5mbWFu OworCisJKmZlbmNlX3AgPSBOVUxMOworCXNwaW5fbG9ja19pcnEoJmZtYW4tPmxvY2spOworCUJV R19PTihhdG9taWNfcmVhZCgmZmVuY2UtPmtyZWYucmVmY291bnQpID09IDApOworCWtyZWZfcHV0 KCZmZW5jZS0+a3JlZiwgdm13X2ZlbmNlX29ial9kZXN0cm95X2xvY2tlZCk7CisJc3Bpbl91bmxv Y2tfaXJxKCZmbWFuLT5sb2NrKTsKK30KKwordm9pZCB2bXdfZmVuY2VzX3BlcmZvcm1fYWN0aW9u cyhzdHJ1Y3Qgdm13X2ZlbmNlX21hbmFnZXIgKmZtYW4sCisJCQkJc3RydWN0IGxpc3RfaGVhZCAq bGlzdCkKK3sKKwlzdHJ1Y3Qgdm13X2ZlbmNlX2FjdGlvbiAqYWN0aW9uLCAqbmV4dF9hY3Rpb247 CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYWN0aW9uLCBuZXh0X2FjdGlvbiwgbGlzdCwg aGVhZCkgeworCQlsaXN0X2RlbF9pbml0KCZhY3Rpb24tPmhlYWQpOworCQlpZiAoYWN0aW9uLT5z ZXFfcGFzc2VkICE9IE5VTEwpCisJCQlhY3Rpb24tPnNlcV9wYXNzZWQoYWN0aW9uKTsKKworCQkv KgorCQkgKiBBZGQgdGhlIGNsZWFudXAgYWN0aW9uIHRvIHRoZSBjbGVhbnVwIGxpc3Qgc28gdGhh dAorCQkgKiBpdCB3aWxsIGJlIHBlcmZvcm1lZCBieSBhIHdvcmtlciB0YXNrLgorCQkgKi8KKwor CQlpZiAoYWN0aW9uLT5jbGVhbnVwICE9IE5VTEwpCisJCQlsaXN0X2FkZF90YWlsKCZhY3Rpb24t PmhlYWQsICZmbWFuLT5jbGVhbnVwX2xpc3QpOworCX0KK30KKwordm9pZCB2bXdfZmVuY2VzX3Vw ZGF0ZShzdHJ1Y3Qgdm13X2ZlbmNlX21hbmFnZXIgKmZtYW4sIHUzMiBzZXFubykKK3sKKwl1bnNp Z25lZCBsb25nIGZsYWdzOworCXN0cnVjdCB2bXdfZmVuY2Vfb2JqICpmZW5jZSwgKm5leHRfZmVu Y2U7CisJc3RydWN0IGxpc3RfaGVhZCBhY3Rpb25fbGlzdDsKKworCXNwaW5fbG9ja19pcnFzYXZl KCZmbWFuLT5sb2NrLCBmbGFncyk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGZlbmNlLCBu ZXh0X2ZlbmNlLCAmZm1hbi0+ZmVuY2VfbGlzdCwgaGVhZCkgeworCQlpZiAoc2Vxbm8gLSBmZW5j ZS0+c2Vxbm8gPCBWTVdfRkVOQ0VfV1JBUCkgeworCQkJbGlzdF9kZWxfaW5pdCgmZmVuY2UtPmhl YWQpOworCQkJZmVuY2UtPnNpZ25hbGVkIHw9IERSTV9WTVdfRkVOQ0VfRkxBR19FWEVDOworCQkJ SU5JVF9MSVNUX0hFQUQoJmFjdGlvbl9saXN0KTsKKwkJCWxpc3Rfc3BsaWNlX2luaXQoJmZlbmNl LT5zZXFfcGFzc2VkX2FjdGlvbnMsCisJCQkJCSAmYWN0aW9uX2xpc3QpOworCQkJdm13X2ZlbmNl c19wZXJmb3JtX2FjdGlvbnMoZm1hbiwgJmFjdGlvbl9saXN0KTsKKwkJCXdha2VfdXBfYWxsKCZm ZW5jZS0+cXVldWUpOworCQl9CisKKwl9CisJaWYgKCFsaXN0X2VtcHR5KCZmbWFuLT5jbGVhbnVw X2xpc3QpKQorCQkodm9pZCkgc2NoZWR1bGVfd29yaygmZm1hbi0+d29yayk7CisJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmZm1hbi0+bG9jaywgZmxhZ3MpOworfQorCisKK2Jvb2wgdm13X2ZlbmNl X29ial9zaWduYWxlZChzdHJ1Y3Qgdm13X2ZlbmNlX29iaiAqZmVuY2UsCisJCQkgICAgdWludDMy X3QgZmxhZ3MpCit7CisJc3RydWN0IHZtd19mZW5jZV9tYW5hZ2VyICpmbWFuID0gZmVuY2UtPmZt YW47CisJdW5zaWduZWQgbG9uZyBpcnFfZmxhZ3M7CisJdWludDMyX3Qgc2lnbmFsZWQ7CisKKwlz cGluX2xvY2tfaXJxc2F2ZSgmZm1hbi0+bG9jaywgaXJxX2ZsYWdzKTsKKwlzaWduYWxlZCA9IGZl bmNlLT5zaWduYWxlZDsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZmbWFuLT5sb2NrLCBpcnFf ZmxhZ3MpOworCisJZmxhZ3MgJj0gZmVuY2UtPnNpZ25hbF9tYXNrOworCWlmICgoc2lnbmFsZWQg JiBmbGFncykgPT0gZmxhZ3MpCisJCXJldHVybiAxOworCisJaWYgKChzaWduYWxlZCAmIERSTV9W TVdfRkVOQ0VfRkxBR19FWEVDKSA9PSAwKSB7CisJCXN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3By aXYgPSBmbWFuLT5kZXZfcHJpdjsKKwkJX19sZTMyIF9faW9tZW0gKmZpZm9fbWVtID0gZGV2X3By aXYtPm1taW9fdmlydDsKKwkJdTMyIHNlcW5vOworCisJCXNlcW5vID0gaW9yZWFkMzIoZmlmb19t ZW0gKyBTVkdBX0ZJRk9fRkVOQ0UpOworCQl2bXdfZmVuY2VzX3VwZGF0ZShmbWFuLCBzZXFubyk7 CisJfQorCisJc3Bpbl9sb2NrX2lycXNhdmUoJmZtYW4tPmxvY2ssIGlycV9mbGFncyk7CisJc2ln bmFsZWQgPSBmZW5jZS0+c2lnbmFsZWQ7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZm1hbi0+ bG9jaywgaXJxX2ZsYWdzKTsKKworCXJldHVybiAoKHNpZ25hbGVkICYgZmxhZ3MpID09IGZsYWdz KTsKK30KKworaW50IHZtd19mZW5jZV9vYmpfd2FpdChzdHJ1Y3Qgdm13X2ZlbmNlX29iaiAqZmVu Y2UsCisJCSAgICAgICB1aW50MzJfdCBmbGFncywgYm9vbCBsYXp5LAorCQkgICAgICAgYm9vbCBp bnRlcnJ1cHRpYmxlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpCit7CisJc3RydWN0IHZtd19wcml2 YXRlICpkZXZfcHJpdiA9IGZlbmNlLT5mbWFuLT5kZXZfcHJpdjsKKwlsb25nIHJldDsKKworCWlm IChsaWtlbHkodm13X2ZlbmNlX29ial9zaWduYWxlZChmZW5jZSwgZmxhZ3MpKSkKKwkJcmV0dXJu IDA7CisKKwl2bXdfZmlmb19waW5nX2hvc3QoZGV2X3ByaXYsIFNWR0FfU1lOQ19HRU5FUklDKTsK Kwl2bXdfc2Vxbm9fd2FpdGVyX2FkZChkZXZfcHJpdik7CisKKwlpZiAoaW50ZXJydXB0aWJsZSkK KwkJcmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQKKwkJCShmZW5jZS0+cXVl dWUsCisJCQkgdm13X2ZlbmNlX29ial9zaWduYWxlZChmZW5jZSwgZmxhZ3MpLAorCQkJIHRpbWVv dXQpOworCWVsc2UKKwkJcmV0ID0gd2FpdF9ldmVudF90aW1lb3V0CisJCQkoZmVuY2UtPnF1ZXVl LAorCQkJIHZtd19mZW5jZV9vYmpfc2lnbmFsZWQoZmVuY2UsIGZsYWdzKSwKKwkJCSB0aW1lb3V0 KTsKKworCXZtd19zZXFub193YWl0ZXJfcmVtb3ZlKGRldl9wcml2KTsKKworCWlmICh1bmxpa2Vs eShyZXQgPT0gMCkpCisJCXJldCA9IC1FQlVTWTsKKwllbHNlIGlmIChsaWtlbHkocmV0ID4gMCkp CisJCXJldCA9IDA7CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIHZtd19mZW5jZV9vYmpfZmx1 c2goc3RydWN0IHZtd19mZW5jZV9vYmogKmZlbmNlKQoreworCXN0cnVjdCB2bXdfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBmZW5jZS0+Zm1hbi0+ZGV2X3ByaXY7CisKKwl2bXdfZmlmb19waW5nX2hvc3Qo ZGV2X3ByaXYsIFNWR0FfU1lOQ19HRU5FUklDKTsKK30KKworc3RhdGljIHZvaWQgdm13X2ZlbmNl X2Rlc3Ryb3koc3RydWN0IHZtd19mZW5jZV9vYmogKmZlbmNlKQoreworCXN0cnVjdCB2bXdfZmVu Y2VfbWFuYWdlciAqZm1hbiA9IGZlbmNlLT5mbWFuOworCisJa2ZyZWUoZmVuY2UpOworCS8qCisJ ICogRnJlZSBrZXJuZWwgc3BhY2UgYWNjb3VudGluZy4KKwkgKi8KKwl0dG1fbWVtX2dsb2JhbF9m cmVlKHZtd19tZW1fZ2xvYihmbWFuLT5kZXZfcHJpdiksCisJCQkgICAgZm1hbi0+ZmVuY2Vfc2l6 ZSk7Cit9CisKK2ludCB2bXdfZmVuY2VfY3JlYXRlKHN0cnVjdCB2bXdfZmVuY2VfbWFuYWdlciAq Zm1hbiwKKwkJICAgICB1aW50MzJfdCBzZXFubywKKwkJICAgICB1aW50MzJfdCBtYXNrLAorCQkg ICAgIHN0cnVjdCB2bXdfZmVuY2Vfb2JqICoqcF9mZW5jZSkKK3sKKwlzdHJ1Y3QgdHRtX21lbV9n bG9iYWwgKm1lbV9nbG9iID0gdm13X21lbV9nbG9iKGZtYW4tPmRldl9wcml2KTsKKwlzdHJ1Y3Qg dm13X2ZlbmNlX29iaiAqZmVuY2U7CisJaW50IHJldDsKKworCXJldCA9IHR0bV9tZW1fZ2xvYmFs X2FsbG9jKG1lbV9nbG9iLCBmbWFuLT5mZW5jZV9zaXplLAorCQkJCSAgIGZhbHNlLCBmYWxzZSk7 CisJaWYgKHVubGlrZWx5KHJldCAhPSAwKSkKKwkJcmV0dXJuIHJldDsKKworCWZlbmNlID0ga3ph bGxvYyhzaXplb2YoKmZlbmNlKSwgR0ZQX0tFUk5FTCk7CisJaWYgKHVubGlrZWx5KGZlbmNlID09 IE5VTEwpKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gb3V0X25vX29iamVjdDsKKwl9CisK KwlyZXQgPSB2bXdfZmVuY2Vfb2JqX2luaXQoZm1hbiwgZmVuY2UsIHNlcW5vLCBtYXNrLAorCQkJ CSB2bXdfZmVuY2VfZGVzdHJveSk7CisJaWYgKHVubGlrZWx5KHJldCAhPSAwKSkKKwkJZ290byBv dXRfZXJyX2luaXQ7CisKKwkqcF9mZW5jZSA9IGZlbmNlOworCXJldHVybiAwOworCitvdXRfZXJy X2luaXQ6CisJa2ZyZWUoZmVuY2UpOworb3V0X25vX29iamVjdDoKKwl0dG1fbWVtX2dsb2JhbF9m cmVlKG1lbV9nbG9iLCBmbWFuLT5mZW5jZV9zaXplKTsKKwlyZXR1cm4gcmV0OworfQorCisKK3N0 YXRpYyB2b2lkIHZtd191c2VyX2ZlbmNlX2Rlc3Ryb3koc3RydWN0IHZtd19mZW5jZV9vYmogKmZl bmNlKQoreworCXN0cnVjdCB2bXdfdXNlcl9mZW5jZSAqdWZlbmNlID0KKwkJY29udGFpbmVyX29m KGZlbmNlLCBzdHJ1Y3Qgdm13X3VzZXJfZmVuY2UsIGZlbmNlKTsKKwlzdHJ1Y3Qgdm13X2ZlbmNl X21hbmFnZXIgKmZtYW4gPSBmZW5jZS0+Zm1hbjsKKworCWtmcmVlKHVmZW5jZSk7CisJLyoKKwkg KiBGcmVlIGtlcm5lbCBzcGFjZSBhY2NvdW50aW5nLgorCSAqLworCXR0bV9tZW1fZ2xvYmFsX2Zy ZWUodm13X21lbV9nbG9iKGZtYW4tPmRldl9wcml2KSwKKwkJCSAgICBmbWFuLT51c2VyX2ZlbmNl X3NpemUpOworfQorCitzdGF0aWMgdm9pZCB2bXdfdXNlcl9mZW5jZV9iYXNlX3JlbGVhc2Uoc3Ry dWN0IHR0bV9iYXNlX29iamVjdCAqKnBfYmFzZSkKK3sKKwlzdHJ1Y3QgdHRtX2Jhc2Vfb2JqZWN0 ICpiYXNlID0gKnBfYmFzZTsKKwlzdHJ1Y3Qgdm13X3VzZXJfZmVuY2UgKnVmZW5jZSA9CisJCWNv bnRhaW5lcl9vZihiYXNlLCBzdHJ1Y3Qgdm13X3VzZXJfZmVuY2UsIGJhc2UpOworCXN0cnVjdCB2 bXdfZmVuY2Vfb2JqICpmZW5jZSA9ICZ1ZmVuY2UtPmZlbmNlOworCisJKnBfYmFzZSA9IE5VTEw7 CisJdm13X2ZlbmNlX29ial91bnJlZmVyZW5jZSgmZmVuY2UpOworfQorCitpbnQgdm13X3VzZXJf ZmVuY2VfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAorCQkJICBzdHJ1Y3Qgdm13 X2ZlbmNlX21hbmFnZXIgKmZtYW4sCisJCQkgIHVpbnQzMl90IHNlcW5vLAorCQkJICB1aW50MzJf dCBtYXNrLAorCQkJICBzdHJ1Y3Qgdm13X2ZlbmNlX29iaiAqKnBfZmVuY2UsCisJCQkgIHVpbnQz Ml90ICpwX2hhbmRsZSkKK3sKKwlzdHJ1Y3QgdHRtX29iamVjdF9maWxlICp0ZmlsZSA9IHZtd19m cHJpdihmaWxlX3ByaXYpLT50ZmlsZTsKKwlzdHJ1Y3Qgdm13X3VzZXJfZmVuY2UgKnVmZW5jZTsK KwlzdHJ1Y3Qgdm13X2ZlbmNlX29iaiAqdG1wOworCXN0cnVjdCB0dG1fbWVtX2dsb2JhbCAqbWVt X2dsb2IgPSB2bXdfbWVtX2dsb2IoZm1hbi0+ZGV2X3ByaXYpOworCWludCByZXQ7CisKKwkvKgor CSAqIEtlcm5lbCBtZW1vcnkgc3BhY2UgYWNjb3VudGluZywgc2luY2UgdGhpcyBvYmplY3QgbWF5 CisJICogYmUgY3JlYXRlZCBieSBhIHVzZXItc3BhY2UgcmVxdWVzdC4KKwkgKi8KKworCXJldCA9 IHR0bV9tZW1fZ2xvYmFsX2FsbG9jKG1lbV9nbG9iLCBmbWFuLT51c2VyX2ZlbmNlX3NpemUsCisJ CQkJICAgZmFsc2UsIGZhbHNlKTsKKwlpZiAodW5saWtlbHkocmV0ICE9IDApKQorCQlyZXR1cm4g cmV0OworCisJdWZlbmNlID0ga3phbGxvYyhzaXplb2YoKnVmZW5jZSksIEdGUF9LRVJORUwpOwor CWlmICh1bmxpa2VseSh1ZmVuY2UgPT0gTlVMTCkpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290 byBvdXRfbm9fb2JqZWN0OworCX0KKworCXJldCA9IHZtd19mZW5jZV9vYmpfaW5pdChmbWFuLCAm dWZlbmNlLT5mZW5jZSwgc2Vxbm8sCisJCQkJIG1hc2ssIHZtd191c2VyX2ZlbmNlX2Rlc3Ryb3kp OworCWlmICh1bmxpa2VseShyZXQgIT0gMCkpIHsKKwkJa2ZyZWUodWZlbmNlKTsKKwkJZ290byBv dXRfbm9fb2JqZWN0OworCX0KKworCS8qCisJICogVGhlIGJhc2Ugb2JqZWN0IGhvbGRzIGEgcmVm ZXJlbmNlIHdoaWNoIGlzIGZyZWVkIGluCisJICogdm13X3VzZXJfZmVuY2VfYmFzZV9yZWxlYXNl LgorCSAqLworCXRtcCA9IHZtd19mZW5jZV9vYmpfcmVmZXJlbmNlKCZ1ZmVuY2UtPmZlbmNlKTsK KwlyZXQgPSB0dG1fYmFzZV9vYmplY3RfaW5pdCh0ZmlsZSwgJnVmZW5jZS0+YmFzZSwgZmFsc2Us CisJCQkJICAgVk1XX1JFU19GRU5DRSwKKwkJCQkgICAmdm13X3VzZXJfZmVuY2VfYmFzZV9yZWxl YXNlLCBOVUxMKTsKKworCisJaWYgKHVubGlrZWx5KHJldCAhPSAwKSkgeworCQkvKgorCQkgKiBG cmVlIHRoZSBiYXNlIG9iamVjdCdzIHJlZmVyZW5jZQorCQkgKi8KKwkJdm13X2ZlbmNlX29ial91 bnJlZmVyZW5jZSgmdG1wKTsKKwkJZ290byBvdXRfZXJyOworCX0KKworCSpwX2ZlbmNlID0gJnVm ZW5jZS0+ZmVuY2U7CisJKnBfaGFuZGxlID0gdWZlbmNlLT5iYXNlLmhhc2gua2V5OworCisJcmV0 dXJuIDA7CitvdXRfZXJyOgorCXRtcCA9ICZ1ZmVuY2UtPmZlbmNlOworCXZtd19mZW5jZV9vYmpf dW5yZWZlcmVuY2UoJnRtcCk7CitvdXRfbm9fb2JqZWN0OgorCXR0bV9tZW1fZ2xvYmFsX2ZyZWUo bWVtX2dsb2IsIGZtYW4tPnVzZXJfZmVuY2Vfc2l6ZSk7CisJcmV0dXJuIHJldDsKK30KKworCisv KioKKyAqIHZtd19mZW5jZV9maWZvX2Rvd24gLSBzaWduYWwgYWxsIHVuc2lnbmFsZWQgZmVuY2Ug b2JqZWN0cy4KKyAqLworCit2b2lkIHZtd19mZW5jZV9maWZvX2Rvd24oc3RydWN0IHZtd19mZW5j ZV9tYW5hZ2VyICpmbWFuKQoreworCXVuc2lnbmVkIGxvbmcgaXJxX2ZsYWdzOworCXN0cnVjdCBs aXN0X2hlYWQgYWN0aW9uX2xpc3Q7CisJaW50IHJldDsKKworCS8qCisJICogVGhlIGxpc3QgbWF5 IGJlIGFsdGVyZWQgd2hpbGUgd2UgdHJhdmVyc2UgaXQsIHNvIGFsd2F5cworCSAqIHJlc3RhcnQg d2hlbiB3ZSd2ZSByZWxlYXNlZCB0aGUgZm1hbi0+bG9jay4KKwkgKi8KKworCXNwaW5fbG9ja19p cnFzYXZlKCZmbWFuLT5sb2NrLCBpcnFfZmxhZ3MpOworCWZtYW4tPmZpZm9fZG93biA9IHRydWU7 CisJd2hpbGUgKCFsaXN0X2VtcHR5KCZmbWFuLT5mZW5jZV9saXN0KSkgeworCQlzdHJ1Y3Qgdm13 X2ZlbmNlX29iaiAqZmVuY2UgPQorCQkJbGlzdF9lbnRyeShmbWFuLT5mZW5jZV9saXN0LnByZXYs IHN0cnVjdCB2bXdfZmVuY2Vfb2JqLAorCQkJCSAgIGhlYWQpOworCQlrcmVmX2dldCgmZmVuY2Ut PmtyZWYpOworCQlzcGluX3VubG9ja19pcnEoJmZtYW4tPmxvY2spOworCisJCXJldCA9IHZtd19m ZW5jZV9vYmpfd2FpdChmZW5jZSwgZmVuY2UtPnNpZ25hbF9tYXNrLAorCQkJCQkgZmFsc2UsIGZh bHNlLAorCQkJCQkgVk1XX0ZFTkNFX1dBSVRfVElNRU9VVCk7CisKKwkJaWYgKHVubGlrZWx5KHJl dCAhPSAwKSkgeworCQkJbGlzdF9kZWxfaW5pdCgmZmVuY2UtPmhlYWQpOworCQkJZmVuY2UtPnNp Z25hbGVkIHw9IERSTV9WTVdfRkVOQ0VfRkxBR19FWEVDOworCQkJSU5JVF9MSVNUX0hFQUQoJmFj dGlvbl9saXN0KTsKKwkJCWxpc3Rfc3BsaWNlX2luaXQoJmZlbmNlLT5zZXFfcGFzc2VkX2FjdGlv bnMsCisJCQkJCSAmYWN0aW9uX2xpc3QpOworCQkJdm13X2ZlbmNlc19wZXJmb3JtX2FjdGlvbnMo Zm1hbiwgJmFjdGlvbl9saXN0KTsKKwkJCXdha2VfdXBfYWxsKCZmZW5jZS0+cXVldWUpOworCQl9 CisKKwkJc3Bpbl9sb2NrX2lycSgmZm1hbi0+bG9jayk7CisKKwkJQlVHX09OKCFsaXN0X2VtcHR5 KCZmZW5jZS0+aGVhZCkpOworCQlrcmVmX3B1dCgmZmVuY2UtPmtyZWYsIHZtd19mZW5jZV9vYmpf ZGVzdHJveV9sb2NrZWQpOworCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZmbWFuLT5sb2Nr LCBpcnFfZmxhZ3MpOworfQorCit2b2lkIHZtd19mZW5jZV9maWZvX3VwKHN0cnVjdCB2bXdfZmVu Y2VfbWFuYWdlciAqZm1hbikKK3sKKwl1bnNpZ25lZCBsb25nIGlycV9mbGFnczsKKworCXNwaW5f bG9ja19pcnFzYXZlKCZmbWFuLT5sb2NrLCBpcnFfZmxhZ3MpOworCWZtYW4tPmZpZm9fZG93biA9 IGZhbHNlOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmZtYW4tPmxvY2ssIGlycV9mbGFncyk7 Cit9CisKKworaW50IHZtd19mZW5jZV9vYmpfd2FpdF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAorCQkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKK3sK KwlzdHJ1Y3QgZHJtX3Ztd19mZW5jZV93YWl0X2FyZyAqYXJnID0KKwkgICAgKHN0cnVjdCBkcm1f dm13X2ZlbmNlX3dhaXRfYXJnICopZGF0YTsKKwl1bnNpZ25lZCBsb25nIHRpbWVvdXQ7CisJc3Ry dWN0IHR0bV9iYXNlX29iamVjdCAqYmFzZTsKKwlzdHJ1Y3Qgdm13X2ZlbmNlX29iaiAqZmVuY2U7 CisJc3RydWN0IHR0bV9vYmplY3RfZmlsZSAqdGZpbGUgPSB2bXdfZnByaXYoZmlsZV9wcml2KS0+ dGZpbGU7CisJaW50IHJldDsKKwl1aW50NjRfdCB3YWl0X3RpbWVvdXQgPSAoKHVpbnQ2NF90KWFy Zy0+dGltZW91dF91cyAqIEhaKTsKKworCS8qCisJICogNjQtYml0IGRpdmlzaW9uIG5vdCBwcmVz ZW50IG9uIDMyLWJpdCBzeXN0ZW1zLCBzbyBkbyBhbgorCSAqIGFwcHJveGltYXRpb24uIChEaXZp ZGUgYnkgMTAwMDAwMCkuCisJICovCisKKwl3YWl0X3RpbWVvdXQgPSAod2FpdF90aW1lb3V0ID4+ IDIwKSArICh3YWl0X3RpbWVvdXQgPj4gMjQpIC0KKwkgICh3YWl0X3RpbWVvdXQgPj4gMjYpOwor CisJaWYgKCFhcmctPmNvb2tpZV92YWxpZCkgeworCQlhcmctPmNvb2tpZV92YWxpZCA9IDE7CisJ CWFyZy0+a2VybmVsX2Nvb2tpZSA9IGppZmZpZXMgKyB3YWl0X3RpbWVvdXQ7CisJfQorCisJYmFz ZSA9IHR0bV9iYXNlX29iamVjdF9sb29rdXAodGZpbGUsIGFyZy0+aGFuZGxlKTsKKwlpZiAodW5s aWtlbHkoYmFzZSA9PSBOVUxMKSkgeworCQlwcmludGsoS0VSTl9FUlIgIldhaXQgaW52YWxpZCBm ZW5jZSBvYmplY3QgaGFuZGxlICIKKwkJICAgICAgICIweCUwOGx4LlxuIiwKKwkJICAgICAgICh1 bnNpZ25lZCBsb25nKWFyZy0+aGFuZGxlKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJZmVu Y2UgPSAmKGNvbnRhaW5lcl9vZihiYXNlLCBzdHJ1Y3Qgdm13X3VzZXJfZmVuY2UsIGJhc2UpLT5m ZW5jZSk7CisKKwl0aW1lb3V0ID0gamlmZmllczsKKwlpZiAodGltZV9hZnRlcl9lcSh0aW1lb3V0 LCAodW5zaWduZWQgbG9uZylhcmctPmtlcm5lbF9jb29raWUpKSB7CisJCXJldCA9ICgodm13X2Zl bmNlX29ial9zaWduYWxlZChmZW5jZSwgYXJnLT5mbGFncykpID8KKwkJICAgICAgIDAgOiAtRUJV U1kpOworCQlnb3RvIG91dDsKKwl9CisKKwl0aW1lb3V0ID0gKHVuc2lnbmVkIGxvbmcpYXJnLT5r ZXJuZWxfY29va2llIC0gdGltZW91dDsKKworCXJldCA9IHZtd19mZW5jZV9vYmpfd2FpdChmZW5j ZSwgYXJnLT5mbGFncywgYXJnLT5sYXp5LCB0cnVlLCB0aW1lb3V0KTsKKworb3V0OgorCXR0bV9i YXNlX29iamVjdF91bnJlZigmYmFzZSk7CisKKwkvKgorCSAqIE9wdGlvbmFsbHkgdW5yZWYgdGhl IGZlbmNlIG9iamVjdC4KKwkgKi8KKworCWlmIChyZXQgPT0gMCAmJiAoYXJnLT53YWl0X29wdGlv bnMgJiBEUk1fVk1XX1dBSVRfT1BUSU9OX1VOUkVGKSkKKwkJcmV0dXJuIHR0bV9yZWZfb2JqZWN0 X2Jhc2VfdW5yZWYodGZpbGUsIGFyZy0+aGFuZGxlLAorCQkJCQkJIFRUTV9SRUZfVVNBR0UpOwor CXJldHVybiByZXQ7Cit9CisKK2ludCB2bXdfZmVuY2Vfb2JqX3NpZ25hbGVkX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkJIHN0cnVjdCBkcm1fZmlsZSAqZmls ZV9wcml2KQoreworCXN0cnVjdCBkcm1fdm13X2ZlbmNlX3NpZ25hbGVkX2FyZyAqYXJnID0KKwkJ KHN0cnVjdCBkcm1fdm13X2ZlbmNlX3NpZ25hbGVkX2FyZyAqKSBkYXRhOworCXN0cnVjdCB0dG1f YmFzZV9vYmplY3QgKmJhc2U7CisJc3RydWN0IHZtd19mZW5jZV9vYmogKmZlbmNlOworCXN0cnVj dCB2bXdfZmVuY2VfbWFuYWdlciAqZm1hbjsKKwlzdHJ1Y3QgdHRtX29iamVjdF9maWxlICp0Zmls ZSA9IHZtd19mcHJpdihmaWxlX3ByaXYpLT50ZmlsZTsKKwlzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRl dl9wcml2ID0gdm13X3ByaXYoZGV2KTsKKworCWJhc2UgPSB0dG1fYmFzZV9vYmplY3RfbG9va3Vw KHRmaWxlLCBhcmctPmhhbmRsZSk7CisJaWYgKHVubGlrZWx5KGJhc2UgPT0gTlVMTCkpIHsKKwkJ cHJpbnRrKEtFUk5fRVJSICJGZW5jZSBzaWduYWxlZCBpbnZhbGlkIGZlbmNlIG9iamVjdCBoYW5k bGUgIgorCQkgICAgICAgIjB4JTA4bHguXG4iLAorCQkgICAgICAgKHVuc2lnbmVkIGxvbmcpYXJn LT5oYW5kbGUpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlmZW5jZSA9ICYoY29udGFpbmVy X29mKGJhc2UsIHN0cnVjdCB2bXdfdXNlcl9mZW5jZSwgYmFzZSktPmZlbmNlKTsKKwlmbWFuID0g ZmVuY2UtPmZtYW47CisKKwlhcmctPnNpZ25hbGVkID0gdm13X2ZlbmNlX29ial9zaWduYWxlZChm ZW5jZSwgYXJnLT5mbGFncyk7CisJc3Bpbl9sb2NrX2lycSgmZm1hbi0+bG9jayk7CisKKwlhcmct PnNpZ25hbGVkX2ZsYWdzID0gZmVuY2UtPnNpZ25hbGVkOworCWFyZy0+cGFzc2VkX3NlcW5vID0g ZGV2X3ByaXYtPmxhc3RfcmVhZF9zZXFubzsKKwlzcGluX3VubG9ja19pcnEoJmZtYW4tPmxvY2sp OworCisJdHRtX2Jhc2Vfb2JqZWN0X3VucmVmKCZiYXNlKTsKKworCXJldHVybiAwOworfQorCisK K2ludCB2bXdfZmVuY2Vfb2JqX3VucmVmX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCisJCQkgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKK3sKKwlzdHJ1 Y3QgZHJtX3Ztd19mZW5jZV9hcmcgKmFyZyA9CisJCShzdHJ1Y3QgZHJtX3Ztd19mZW5jZV9hcmcg KikgZGF0YTsKKworCXJldHVybiB0dG1fcmVmX29iamVjdF9iYXNlX3VucmVmKHZtd19mcHJpdihm aWxlX3ByaXYpLT50ZmlsZSwKKwkJCQkJIGFyZy0+aGFuZGxlLAorCQkJCQkgVFRNX1JFRl9VU0FH RSk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9mZW5jZS5o IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZmVuY2UuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi45MzA3NDA2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9n cHUvZHJtL3Ztd2dmeC92bXdnZnhfZmVuY2UuaApAQCAtMCwwICsxLDEwNSBAQAorLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCisgKgorICogQ29weXJpZ2h0IMKpIDIwMTEgVk13YXJlLCBJbmMuLCBQYWxvIEFs dG8sIENBLiwgVVNBCisgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu ZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisgKiBkaXN0cmlidXRl LCBzdWIgbGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv CisgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8g ZG8gc28sIHN1YmplY3QgdG8KKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBU aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5j bHVkaW5nIHRoZQorICogbmV4dCBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBj b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMKKyAqIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisg KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB TlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hB TEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSUywgQVVUSE9SUyBBTkQvT1IgSVRTIFNVUFBMSUVS UyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZ LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUgorICogT1RIRVJXSVNF LCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJF IE9SIFRIRQorICogVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX1ZNV0dGWF9GRU5DRV9IXworCisjZGVmaW5l IFZNV19GRU5DRV9XQUlUX1RJTUVPVVQgKDUqSFopCisKK3N0cnVjdCB2bXdfcHJpdmF0ZTsKKwor c3RydWN0IHZtd19mZW5jZV9tYW5hZ2VyOworCisvKioKKyAqCisgKgorICovCitzdHJ1Y3Qgdm13 X2ZlbmNlX2FjdGlvbiB7CisJc3RydWN0IGxpc3RfaGVhZCBoZWFkOworCXZvaWQgKCpzZXFfcGFz c2VkKSAoc3RydWN0IHZtd19mZW5jZV9hY3Rpb24gKmFjdGlvbik7CisJdm9pZCAoKmNsZWFudXAp IChzdHJ1Y3Qgdm13X2ZlbmNlX2FjdGlvbiAqYWN0aW9uKTsKK307CisKK3N0cnVjdCB2bXdfZmVu Y2Vfb2JqIHsKKwlzdHJ1Y3Qga3JlZiBrcmVmOworCXUzMiBzZXFubzsKKworCXN0cnVjdCB2bXdf ZmVuY2VfbWFuYWdlciAqZm1hbjsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGhlYWQ7CisJdWludDMyX3Qg c2lnbmFsZWQ7CisJdWludDMyX3Qgc2lnbmFsX21hc2s7CisJc3RydWN0IGxpc3RfaGVhZCBzZXFf cGFzc2VkX2FjdGlvbnM7CisJdm9pZCAoKmRlc3Ryb3kpKHN0cnVjdCB2bXdfZmVuY2Vfb2JqICpm ZW5jZSk7CisJd2FpdF9xdWV1ZV9oZWFkX3QgcXVldWU7Cit9OworCitleHRlcm4gc3RydWN0IHZt d19mZW5jZV9tYW5hZ2VyICoKK3Ztd19mZW5jZV9tYW5hZ2VyX2luaXQoc3RydWN0IHZtd19wcml2 YXRlICpkZXZfcHJpdik7CisKK2V4dGVybiB2b2lkIHZtd19mZW5jZV9tYW5hZ2VyX3Rha2Vkb3du KHN0cnVjdCB2bXdfZmVuY2VfbWFuYWdlciAqZm1hbik7CisKK2V4dGVybiB2b2lkIHZtd19mZW5j ZV9vYmpfdW5yZWZlcmVuY2Uoc3RydWN0IHZtd19mZW5jZV9vYmogKipmZW5jZV9wKTsKKworZXh0 ZXJuIHN0cnVjdCB2bXdfZmVuY2Vfb2JqICoKK3Ztd19mZW5jZV9vYmpfcmVmZXJlbmNlKHN0cnVj dCB2bXdfZmVuY2Vfb2JqICpmZW5jZSk7CisKK2V4dGVybiB2b2lkIHZtd19mZW5jZXNfdXBkYXRl KHN0cnVjdCB2bXdfZmVuY2VfbWFuYWdlciAqZm1hbiwKKwkJCSAgICAgIHUzMiBzZXF1ZW5jZSk7 CisKK2V4dGVybiBib29sIHZtd19mZW5jZV9vYmpfc2lnbmFsZWQoc3RydWN0IHZtd19mZW5jZV9v YmogKmZlbmNlLAorCQkJCSAgIHVpbnQzMl90IGZsYWdzKTsKKworZXh0ZXJuIGludCB2bXdfZmVu Y2Vfb2JqX3dhaXQoc3RydWN0IHZtd19mZW5jZV9vYmogKmZlbmNlLCB1aW50MzJfdCBmbGFncywK KwkJCSAgICAgIGJvb2wgbGF6eSwKKwkJCSAgICAgIGJvb2wgaW50ZXJydXB0aWJsZSwgdW5zaWdu ZWQgbG9uZyB0aW1lb3V0KTsKKworZXh0ZXJuIHZvaWQgdm13X2ZlbmNlX29ial9mbHVzaChzdHJ1 Y3Qgdm13X2ZlbmNlX29iaiAqZmVuY2UpOworCitleHRlcm4gaW50IHZtd19mZW5jZV9jcmVhdGUo c3RydWN0IHZtd19mZW5jZV9tYW5hZ2VyICpmbWFuLAorCQkJICAgIHVpbnQzMl90IHNlcW5vLAor CQkJICAgIHVpbnQzMl90IG1hc2ssCisJCQkgICAgc3RydWN0IHZtd19mZW5jZV9vYmogKipwX2Zl bmNlKTsKKworZXh0ZXJuIGludCB2bXdfdXNlcl9mZW5jZV9jcmVhdGUoc3RydWN0IGRybV9maWxl ICpmaWxlX3ByaXYsCisJCQkJIHN0cnVjdCB2bXdfZmVuY2VfbWFuYWdlciAqZm1hbiwKKwkJCQkg dWludDMyX3Qgc2VxdWVuY2UsCisJCQkJIHVpbnQzMl90IG1hc2ssCisJCQkJIHN0cnVjdCB2bXdf ZmVuY2Vfb2JqICoqcF9mZW5jZSwKKwkJCQkgdWludDMyX3QgKnBfaGFuZGxlKTsKKworZXh0ZXJu IHZvaWQgdm13X2ZlbmNlX2ZpZm9fdXAoc3RydWN0IHZtd19mZW5jZV9tYW5hZ2VyICpmbWFuKTsK KworZXh0ZXJuIHZvaWQgdm13X2ZlbmNlX2ZpZm9fZG93bihzdHJ1Y3Qgdm13X2ZlbmNlX21hbmFn ZXIgKmZtYW4pOworCitleHRlcm4gaW50IHZtd19mZW5jZV9vYmpfd2FpdF9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGVfcHJpdik7CisKK2V4dGVybiBpbnQgdm13X2ZlbmNlX29ial9zaWduYWxlZF9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGVfcHJpdik7CisKK2V4dGVybiBpbnQgdm13X2ZlbmNlX29ial91bnJlZl9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJCSAgICAgc3RydWN0IGRybV9maWxlICpm aWxlX3ByaXYpOworI2VuZGlmIC8qIF9WTVdHRlhfRkVOQ0VfSF8gKi8KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfaXJxLmMKaW5kZXggMTNkZGUwNi4uYTAwNTI5MiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfaXJxLmMKQEAgLTQwLDggKzQwLDEzIEBAIGlycXJldHVybl90IHZtd19pcnFfaGFu ZGxlcihEUk1fSVJRX0FSR1MpCiAJc3RhdHVzID0gaW5sKGRldl9wcml2LT5pb19zdGFydCArIFZN V0dGWF9JUlFTVEFUVVNfUE9SVCk7CiAJc3Bpbl91bmxvY2soJmRldl9wcml2LT5pcnFfbG9jayk7 CiAKLQlpZiAoc3RhdHVzICYgU1ZHQV9JUlFGTEFHX0FOWV9GRU5DRSkKKwlpZiAoc3RhdHVzICYg U1ZHQV9JUlFGTEFHX0FOWV9GRU5DRSkgeworCQlfX2xlMzIgX19pb21lbSAqZmlmb19tZW0gPSBk ZXZfcHJpdi0+bW1pb192aXJ0OworCQl1aW50MzJfdCBzZXFubyA9IGlvcmVhZDMyKGZpZm9fbWVt ICsgU1ZHQV9GSUZPX0ZFTkNFKTsKKworCQl2bXdfZmVuY2VzX3VwZGF0ZShkZXZfcHJpdi0+Zm1h biwgc2Vxbm8pOwogCQl3YWtlX3VwX2FsbCgmZGV2X3ByaXYtPmZlbmNlX3F1ZXVlKTsKKwl9CiAJ aWYgKHN0YXR1cyAmIFNWR0FfSVJRRkxBR19GSUZPX1BST0dSRVNTKQogCQl3YWtlX3VwX2FsbCgm ZGV2X3ByaXYtPmZpZm9fcXVldWUpOwogCkBAIC02OCwxMiArNzMsMTIgQEAgdm9pZCB2bXdfdXBk YXRlX3NlcW5vKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgc3RydWN0IHZtd19m aWZvX3N0YXRlICpmaWZvX3N0YXRlKQogewogCV9fbGUzMiBfX2lvbWVtICpmaWZvX21lbSA9IGRl dl9wcml2LT5tbWlvX3ZpcnQ7Ci0KIAl1aW50MzJfdCBzZXFubyA9IGlvcmVhZDMyKGZpZm9fbWVt ICsgU1ZHQV9GSUZPX0ZFTkNFKTsKIAogCWlmIChkZXZfcHJpdi0+bGFzdF9yZWFkX3NlcW5vICE9 IHNlcW5vKSB7CiAJCWRldl9wcml2LT5sYXN0X3JlYWRfc2Vxbm8gPSBzZXFubzsKIAkJdm13X21h cmtlcl9wdWxsKCZmaWZvX3N0YXRlLT5tYXJrZXJfcXVldWUsIHNlcW5vKTsKKwkJdm13X2ZlbmNl c191cGRhdGUoZGV2X3ByaXYtPmZtYW4sIHNlcW5vKTsKIAl9CiB9CiAKQEAgLTE3NSw3ICsxODAs NyBAQCBpbnQgdm13X2ZhbGxiYWNrX3dhaXQoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwK IAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdm9pZCB2bXdfc2Vxbm9fd2FpdGVyX2FkZChzdHJ1 Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2KQordm9pZCB2bXdfc2Vxbm9fd2FpdGVyX2FkZChzdHJ1 Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2KQogewogCW11dGV4X2xvY2soJmRldl9wcml2LT5od19t dXRleCk7CiAJaWYgKGRldl9wcml2LT5mZW5jZV9xdWV1ZV93YWl0ZXJzKysgPT0gMCkgewpAQCAt MTkyLDcgKzE5Nyw3IEBAIHN0YXRpYyB2b2lkIHZtd19zZXFub193YWl0ZXJfYWRkKHN0cnVjdCB2 bXdfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aHdfbXV0ZXgp OwogfQogCi1zdGF0aWMgdm9pZCB2bXdfc2Vxbm9fd2FpdGVyX3JlbW92ZShzdHJ1Y3Qgdm13X3By aXZhdGUgKmRldl9wcml2KQordm9pZCB2bXdfc2Vxbm9fd2FpdGVyX3JlbW92ZShzdHJ1Y3Qgdm13 X3ByaXZhdGUgKmRldl9wcml2KQogewogCW11dGV4X2xvY2soJmRldl9wcml2LT5od19tdXRleCk7 CiAJaWYgKC0tZGV2X3ByaXYtPmZlbmNlX3F1ZXVlX3dhaXRlcnMgPT0gMCkgewpAQCAtMjg2LDI1 ICsyOTEsMyBAQCB2b2lkIHZtd19pcnFfdW5pbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CiAJc3RhdHVzID0gaW5sKGRldl9wcml2LT5pb19zdGFydCArIFZNV0dGWF9JUlFTVEFUVVNfUE9S VCk7CiAJb3V0bChzdGF0dXMsIGRldl9wcml2LT5pb19zdGFydCArIFZNV0dGWF9JUlFTVEFUVVNf UE9SVCk7CiB9Ci0KLSNkZWZpbmUgVk1XX0ZFTkNFX1dBSVRfVElNRU9VVCAzKkhaOwotCi1pbnQg dm13X2ZlbmNlX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK LQkJCSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKLXsKLQlzdHJ1Y3QgZHJtX3Ztd19mZW5j ZV93YWl0X2FyZyAqYXJnID0KLQkgICAgKHN0cnVjdCBkcm1fdm13X2ZlbmNlX3dhaXRfYXJnICop ZGF0YTsKLQl1bnNpZ25lZCBsb25nIHRpbWVvdXQ7Ci0KLQlpZiAoIWFyZy0+Y29va2llX3ZhbGlk KSB7Ci0JCWFyZy0+Y29va2llX3ZhbGlkID0gMTsKLQkJYXJnLT5rZXJuZWxfY29va2llID0gamlm ZmllcyArIFZNV19GRU5DRV9XQUlUX1RJTUVPVVQ7Ci0JfQotCi0JdGltZW91dCA9IGppZmZpZXM7 Ci0JaWYgKHRpbWVfYWZ0ZXJfZXEodGltZW91dCwgKHVuc2lnbmVkIGxvbmcpYXJnLT5rZXJuZWxf Y29va2llKSkKLQkJcmV0dXJuIC1FQlVTWTsKLQotCXRpbWVvdXQgPSAodW5zaWduZWQgbG9uZylh cmctPmtlcm5lbF9jb29raWUgLSB0aW1lb3V0OwotCXJldHVybiB2bXdfd2FpdF9zZXFubyh2bXdf cHJpdihkZXYpLCB0cnVlLCBhcmctPnNlcW5vLCB0cnVlLCB0aW1lb3V0KTsKLX0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3Jlc291cmNlLmMgYi9kcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF9yZXNvdXJjZS5jCmluZGV4IDRiNTM4MDMuLmMxYjZmZmQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3Jlc291cmNlLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcmVzb3VyY2UuYwpAQCAtMzEsMTAgKzMxLDYg QEAKICNpbmNsdWRlICJ0dG0vdHRtX3BsYWNlbWVudC5oIgogI2luY2x1ZGUgImRybVAuaCIKIAot I2RlZmluZSBWTVdfUkVTX0NPTlRFWFQgdHRtX2RyaXZlcl90eXBlMAotI2RlZmluZSBWTVdfUkVT X1NVUkZBQ0UgdHRtX2RyaXZlcl90eXBlMQotI2RlZmluZSBWTVdfUkVTX1NUUkVBTSB0dG1fZHJp dmVyX3R5cGUyCi0KIHN0cnVjdCB2bXdfdXNlcl9jb250ZXh0IHsKIAlzdHJ1Y3QgdHRtX2Jhc2Vf b2JqZWN0IGJhc2U7CiAJc3RydWN0IHZtd19yZXNvdXJjZSByZXM7CmRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS92bXdnZnhfZHJtLmggYi9pbmNsdWRlL2RybS92bXdnZnhfZHJtLmgKaW5kZXggYzJi MzkwOS4uNzYzYTdhMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vdm13Z2Z4X2RybS5oCisrKyBi L2luY2x1ZGUvZHJtL3Ztd2dmeF9kcm0uaApAQCAtNDgsOCArNDgsMTIgQEAKICNkZWZpbmUgRFJN X1ZNV19VTlJFRl9TVVJGQUNFICAgICAgICAxMAogI2RlZmluZSBEUk1fVk1XX1JFRl9TVVJGQUNF ICAgICAgICAgIDExCiAjZGVmaW5lIERSTV9WTVdfRVhFQ0JVRiAgICAgICAgICAgICAgMTIKLSNk ZWZpbmUgRFJNX1ZNV19GRU5DRV9XQUlUICAgICAgICAgICAxMwotI2RlZmluZSBEUk1fVk1XX0dF VF8zRF9DQVAgICAgICAgICAgIDE0CisjZGVmaW5lIERSTV9WTVdfR0VUXzNEX0NBUCAgICAgICAg ICAgMTMKKyNkZWZpbmUgRFJNX1ZNV19GRU5DRV9XQUlUICAgICAgICAgICAxNAorI2RlZmluZSBE Uk1fVk1XX0ZFTkNFX1NJR05BTEVEICAgICAgIDE1CisjZGVmaW5lIERSTV9WTVdfRkVOQ0VfVU5S RUYgICAgICAgICAgMTYKKyNkZWZpbmUgRFJNX1ZNV19GRU5DRV9FVkVOVCAgICAgICAgICAxNwor CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLwogLyoqCkBAIC0zMTgsMTQgKzMyMiwyMyBAQCBzdHJ1Y3Qg ZHJtX3Ztd19leGVjYnVmX2FyZyB7CiAJdWludDMyX3QgY29tbWFuZF9zaXplOwogCXVpbnQzMl90 IHRocm90dGxlX3VzOwogCXVpbnQ2NF90IGZlbmNlX3JlcDsKLQkgdWludDMyX3QgdmVyc2lvbjsK LQkgdWludDMyX3QgZmxhZ3M7CisJdWludDMyX3QgdmVyc2lvbjsKKwl1aW50MzJfdCBmbGFnczsK IH07CiAKIC8qKgogICogc3RydWN0IGRybV92bXdfZmVuY2VfcmVwCiAgKgotICogQGZlbmNlX3Nl cTogRmVuY2Ugc2Vxbm8gYXNzb2NpYXRlZCB3aXRoIGEgY29tbWFuZCBzdWJtaXNzaW9uLgorICog QGhhbmRsZTogRmVuY2Ugb2JqZWN0IGhhbmRsZSBmb3IgZmVuY2UgYXNzb2NpYXRlZCB3aXRoIGEg Y29tbWFuZCBzdWJtaXNzaW9uLgorICogQG1hc2s6IEZlbmNlIGZsYWdzIHJlbGV2YW50IGZvciB0 aGlzIGZlbmNlIG9iamVjdC4KKyAqIEBzZXFubzogRmVuY2Ugc2VxdWVuY2UgbnVtYmVyIGluIGZp Zm8uIEEgZmVuY2Ugb2JqZWN0IHdpdGggYSBsb3dlcgorICogc2Vxbm8gd2lsbCBzaWduYWwgdGhl IEVYRUMgZmxhZyBiZWZvcmUgYSBmZW5jZSBvYmplY3Qgd2l0aCBhIGhpZ2hlcgorICogc2Vxbm8u IFRoaXMgY2FuIGJlIHVzZWQgYnkgdXNlci1zcGFjZSB0byBhdm9pZCBrZXJuZWwgY2FsbHMgdG8g ZGV0ZXJtaW5lCisgKiB3aGV0aGVyIGEgZmVuY2UgaGFzIHNpZ25hbGVkIHRoZSBFWEVDIGZsYWcu IE5vdGUgdGhhdCBAc2Vxbm8gd2lsbAorICogd3JhcCBhdCAzMi1iaXQuCisgKiBAcGFzc2VkX3Nl cW5vOiBUaGUgaGlnaGVzdCBzZXFubyBudW1iZXIgcHJvY2Vzc2VkIGJ5IHRoZSBoYXJkd2FyZQor ICogc28gZmFyLiBUaGlzIGNhbiBiZSB1c2VkIHRvIG1hcmsgdXNlci1zcGFjZSBmZW5jZSBvYmpl Y3RzIGFzIHNpZ25hbGVkLCBhbmQKKyAqIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZmVuY2Ugc2Vx bm8gbWlnaHQgYmUgc3RhbGUuCiAgKiBAZXJyb3I6IFRoaXMgbWVtYmVyIHNob3VsZCd2ZSBiZWVu IHNldCB0byAtRUZBVUxUIG9uIHN1Ym1pc3Npb24uCiAgKiBUaGUgZm9sbG93aW5nIGFjdGlvbnMg c2hvdWxkIGJlIHRha2Ugb24gY29tcGxldGlvbjoKICAqIGVycm9yID09IC1FRkFVTFQ6IEZlbmNl IGNvbW11bmljYXRpb24gZmFpbGVkLiBUaGUgaG9zdCBpcyBzeW5jaHJvbml6ZWQuCkBAIC0zMzks OSArMzUyLDEyIEBAIHN0cnVjdCBkcm1fdm13X2V4ZWNidWZfYXJnIHsKICAqLwogCiBzdHJ1Y3Qg ZHJtX3Ztd19mZW5jZV9yZXAgewotCXVpbnQ2NF90IGZlbmNlX3NlcTsKLQlpbnQzMl90IGVycm9y OworCXVpbnQzMl90IGhhbmRsZTsKKwl1aW50MzJfdCBtYXNrOworCXVpbnQzMl90IHNlcW5vOwor CXVpbnQzMl90IHBhc3NlZF9zZXFubzsKIAl1aW50MzJfdCBwYWQ2NDsKKwlpbnQzMl90IGVycm9y OwogfTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC00MzAsMTQgKzQ0Niw2IEBAIHN0cnVjdCBk cm1fdm13X3VucmVmX2RtYWJ1Zl9hcmcgewogCXVpbnQzMl90IHBhZDY0OwogfTsKIAotCi1zdHJ1 Y3QgZHJtX3Ztd19mZW5jZV93YWl0X2FyZyB7Ci0JdWludDY0X3Qgc2Vxbm87Ci0JdWludDY0X3Qg a2VybmVsX2Nvb2tpZTsKLQlpbnQzMl90IGNvb2tpZV92YWxpZDsKLQlpbnQzMl90IHBhZDY0Owot fTsKLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCiAvKioKICAqIERSTV9WTVdfQ09OVFJPTF9TVFJFQU0g LSBDb250cm9sIG92ZXJsYXlzLCBha2Egc3RyZWFtcy4KQEAgLTU1OSw2ICs1NjcsNyBAQCBzdHJ1 Y3QgZHJtX3Ztd19zdHJlYW1fYXJnIHsKICAqIFJldHVybiBhIHNpbmdsZSBzdHJlYW0gdGhhdCB3 YXMgY2xhaW1lZCBieSB0aGlzIHByb2Nlc3MuIEFsc28gbWFrZXMKICAqIHN1cmUgdGhhdCB0aGUg c3RyZWFtIGhhcyBiZWVuIHN0b3BwZWQuCiAgKi8KKwogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKioK ICAqIERSTV9WTVdfR0VUXzNEX0NBUApAQCAtNjA3LDQgKzYxNiwxMTQgQEAgc3RydWN0IGRybV92 bXdfdXBkYXRlX2xheW91dF9hcmcgewogCXVpbnQ2NF90IHJlY3RzOwogfTsKIAorCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKy8qKgorICogRFJNX1ZNV19GRU5DRV9XQUlUCisgKgorICogV2FpdHMgZm9y IGEgZmVuY2Ugb2JqZWN0IHRvIHNpZ25hbC4gVGhlIHdhaXQgaXMgaW50ZXJydXB0aWJsZSwgc28g dGhhdAorICogc2lnbmFscyBtYXkgYmUgZGVsaXZlcmVkIGR1cmluZyB0aGUgaW50ZXJydXB0LiBU aGUgd2FpdCBtYXkgdGltZW91dCwKKyAqIGluIHdoaWNoIGNhc2UgdGhlIGNhbGxzIHJldHVybnMg LUVCVVNZLiBJZiB0aGUgd2FpdCBpcyByZXN0YXJ0ZWQsCisgKiB0aGF0IGlzIHJlc3RhcnRpbmcg d2l0aG91dCByZXNldHRpbmcgQGNvb2tpZV92YWxpZCB0byB6ZXJvLAorICogdGhlIHRpbWVvdXQg aXMgY29tcHV0ZWQgZnJvbSB0aGUgZmlyc3QgY2FsbC4KKyAqCisgKiBUaGUgZmxhZ3MgYXJndW1l bnQgdG8gdGhlIERSTV9WTVdfRkVOQ0VfV0FJVCBpb2N0bCBpbmRpY2F0ZXMgd2hhdCB0byB3YWl0 CisgKiBvbjoKKyAqIERSTV9WTVdfRkVOQ0VfRkxBR19FWEVDOiBBbGwgY29tbWFuZHMgYWhlYWQg b2YgdGhlIGZlbmNlIGluIHRoZSBjb21tYW5kCisgKiBzdHJlYW0KKyAqIGhhdmUgZXhlY3V0ZWQu CisgKiBEUk1fVk1XX0ZFTkNFX0ZMQUdfUVVFUlk6IEFsbCBxdWVyeSByZXN1bHRzIHJlc3VsdGlu ZyBmcm9tIHF1ZXJ5IGZpbmlzaAorICogY29tbWFuZHMKKyAqIGluIHRoZSBidWZmZXIgZ2l2ZW4g dG8gdGhlIEVYRUNCVUYgaW9jdGwgcmV0dXJuaW5nIHRoZSBmZW5jZSBvYmplY3QgaGFuZGxlCisg KiBhcmUgYXZhaWxhYmxlIHRvIHVzZXItc3BhY2UuCisgKgorICogRFJNX1ZNV19XQUlUX09QVElP Tl9VTlJFRjogSWYgdGhpcyB3YWl0IG9wdGlvbiBpcyBnaXZlbiwgYW5kIHRoZQorICogZmVuYyB3 YWl0IGlvY3RsIHJldHVybnMgMCwgdGhlIGZlbmNlIG9iamVjdCBoYXMgYmVlbiB1bnJlZmVyZW5j ZWQgYWZ0ZXIKKyAqIHRoZSB3YWl0LgorICovCisKKyNkZWZpbmUgRFJNX1ZNV19GRU5DRV9GTEFH X0VYRUMgICAoMSA8PCAwKQorI2RlZmluZSBEUk1fVk1XX0ZFTkNFX0ZMQUdfUVVFUlkgICgxIDw8 IDEpCisKKyNkZWZpbmUgRFJNX1ZNV19XQUlUX09QVElPTl9VTlJFRiAoMSA8PCAwKQorCisvKioK KyAqIHN0cnVjdCBkcm1fdm13X2ZlbmNlX3dhaXRfYXJnCisgKgorICogQGhhbmRsZTogRmVuY2Ug b2JqZWN0IGhhbmRsZSBhcyByZXR1cm5lZCBieSB0aGUgRFJNX1ZNV19FWEVDQlVGIGlvY3RsLgor ICogQGNvb2tpZV92YWxpZDogTXVzdCBiZSByZXNldCB0byAwIG9uIGZpcnN0IGNhbGwuIExlZnQg YWxvbmUgb24gcmVzdGFydC4KKyAqIEBrZXJuZWxfY29va2llOiBTZXQgdG8gMCBvbiBmaXJzdCBj YWxsLiBMZWZ0IGFsb25lIG9uIHJlc3RhcnQuCisgKiBAdGltZW91dF91czogV2FpdCB0aW1lb3V0 IGluIG1pY3Jvc2Vjb25kcy4gMCBmb3IgaW5kZWZpbml0ZSB0aW1lb3V0LgorICogQGxhenk6IFNl dCB0byAxIGlmIHRpbWluZyBpcyBub3QgY3JpdGljYWwuIEFsbG93IG1vcmUgdGhhbiBhIGtlcm5l bCB0aWNrCisgKiBiZWZvcmUgcmV0dXJuaW5nLgorICogQGZsYWdzOiBGZW5jZSBmbGFncyB0byB3 YWl0IG9uLgorICogQHdhaXRfb3B0aW9uczogT3B0aW9ucyB0aGF0IGNvbnRyb2wgdGhlIGJlaGF2 aW91ciBvZiB0aGUgd2FpdCBpb2N0bC4KKyAqCisgKiBJbnB1dCBhcmd1bWVudCB0byB0aGUgRFJN X1ZNV19GRU5DRV9XQUlUIGlvY3RsLgorICovCisKK3N0cnVjdCBkcm1fdm13X2ZlbmNlX3dhaXRf YXJnIHsKKwl1aW50MzJfdCBoYW5kbGU7CisJaW50MzJfdCAgY29va2llX3ZhbGlkOworCXVpbnQ2 NF90IGtlcm5lbF9jb29raWU7CisJdWludDY0X3QgdGltZW91dF91czsKKwlpbnQzMl90IGxhenk7 CisJaW50MzJfdCBmbGFnczsKKwlpbnQzMl90IHdhaXRfb3B0aW9uczsKKwlpbnQzMl90IHBhZDY0 OworfTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqIERSTV9WTVdfRkVOQ0VfU0lHTkFM RUQKKyAqCisgKiBDaGVja3MgaWYgYSBmZW5jZSBvYmplY3QgaXMgc2lnbmFsZWQuLgorICovCisK Ky8qKgorICogc3RydWN0IGRybV92bXdfZmVuY2Vfc2lnbmFsZWRfYXJnCisgKgorICogQGhhbmRs ZTogRmVuY2Ugb2JqZWN0IGhhbmRsZSBhcyByZXR1cm5lZCBieSB0aGUgRFJNX1ZNV19FWEVDQlVG IGlvY3RsLgorICogQGZsYWdzOiBGZW5jZSBvYmplY3QgZmxhZ3MgaW5wdXQgdG8gRFJNX1ZNV19G RU5DRV9TSUdOQUxFRCBpb2N0bAorICogQHNpZ25hbGVkOiBPdXQ6IEZsYWdzIHNpZ25hbGVkLgor ICogQHNlcXVlbmNlOiBPdXQ6IEhpZ2hlc3Qgc2VxdWVuY2UgcGFzc2VkIHNvIGZhci4gQ2FuIGJl IHVzZWQgdG8gc2lnbmFsIHRoZQorICogRVhFQyBmbGFnIG9mIHVzZXItc3BhY2UgZmVuY2Ugb2Jq ZWN0cy4KKyAqCisgKiBJbnB1dC9PdXRwdXQgYXJndW1lbnQgdG8gdGhlIERSTV9WTVdfRkVOQ0Vf U0lHTkFMRUQgYW5kIERSTV9WTVdfRkVOQ0VfVU5SRUYKKyAqIGlvY3Rscy4KKyAqLworCitzdHJ1 Y3QgZHJtX3Ztd19mZW5jZV9zaWduYWxlZF9hcmcgeworCSB1aW50MzJfdCBoYW5kbGU7CisJIHVp bnQzMl90IGZsYWdzOworCSBpbnQzMl90IHNpZ25hbGVkOworCSB1aW50MzJfdCBwYXNzZWRfc2Vx bm87CisJIHVpbnQzMl90IHNpZ25hbGVkX2ZsYWdzOworCSB1aW50MzJfdCBwYWQ2NDsKK307CisK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLworLyoqCisgKiBEUk1fVk1XX0ZFTkNFX1VOUkVGCisgKgorICog VW5yZWZlcmVuY2VzIGEgZmVuY2Ugb2JqZWN0LCBhbmQgY2F1c2VzIGl0IHRvIGJlIGRlc3Ryb3ll ZCBpZiB0aGVyZSBhcmUgbm8KKyAqIG90aGVyIHJlZmVyZW5jZXMgdG8gaXQuCisgKgorICovCisK Ky8qKgorICogc3RydWN0IGRybV92bXdfZmVuY2VfYXJnCisgKgorICogQGhhbmRsZTogRmVuY2Ug b2JqZWN0IGhhbmRsZSBhcyByZXR1cm5lZCBieSB0aGUgRFJNX1ZNV19FWEVDQlVGIGlvY3RsLgor ICoKKyAqIElucHV0L091dHB1dCBhcmd1bWVudCB0byB0aGUgRFJNX1ZNV19GRU5DRV9VTlJFRiBp b2N0bC4uCisgKi8KKworc3RydWN0IGRybV92bXdfZmVuY2VfYXJnIHsKKwkgdWludDMyX3QgaGFu ZGxlOworCSB1aW50MzJfdCBwYWQ2NDsKK307CisKKworCiAjZW5kaWYKLS0gCjEuNy40LjQKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==