From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Subject: [PATCH 1/5] drm/radeon: add userptr support v8 Date: Thu, 7 Aug 2014 09:36:00 +0200 Message-ID: <1407396964-22754-1-git-send-email-deathsimple@vodafone.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from pegasos-out.vodafone.de (pegasos-out.vodafone.de [80.84.1.38]) by gabe.freedesktop.org (Postfix) with ESMTP id DD2EB6E727 for ; Thu, 7 Aug 2014 00:36:41 -0700 (PDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by pegasos-out.vodafone.de (Rohrpostix1 Daemon) with ESMTP id 57ED82613E6 for ; Thu, 7 Aug 2014 09:36:41 +0200 (CEST) Received: from pegasos-out.vodafone.de ([127.0.0.1]) by localhost (rohrpostix1.prod.vfnet.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id n0lpUxgd0HmA for ; Thu, 7 Aug 2014 09:36:19 +0200 (CEST) Received: from smtp-03.vodafone.de (xsmail-dmz9.prod.vfnet.de [10.215.254.40]) by pegasos-out.vodafone.de (Rohrpostix1 Daemon) with ESMTP id E17962613F9 for ; Thu, 7 Aug 2014 09:36:18 +0200 (CEST) Received: from smtp-03.vodafone.de ([127.0.0.1]) by localhost (xsmail-dmz9.prod.vfnet.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xndn9SBioklk for ; Thu, 7 Aug 2014 09:36:06 +0200 (CEST) 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 RnJvbTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgoKVGhpcyBw YXRjaCBhZGRzIGFuIElPQ1RMIGZvciB0dXJuaW5nIGEgcG9pbnRlciBzdXBwbGllZCBieQp1c2Vy c3BhY2UgaW50byBhIGJ1ZmZlciBvYmplY3QuCgpJdCBpbXBvc2VzIHNldmVyYWwgcmVzdHJpY3Rp b25zIHVwb24gdGhlIG1lbW9yeSBiZWluZyBtYXBwZWQ6CgoxLiBJdCBtdXN0IGJlIHBhZ2UgYWxp Z25lZCAoYm90aCBzdGFydC9lbmQgYWRkcmVzc2VzLCBpLmUgcHRyIGFuZCBzaXplKS4KCjIuIEl0 IG11c3QgYmUgbm9ybWFsIHN5c3RlbSBtZW1vcnksIG5vdCBhIHBvaW50ZXIgaW50byBhbm90aGVy IG1hcCBvZiBJTwpzcGFjZSAoZS5nLiBpdCBtdXN0IG5vdCBiZSBhIEdUVCBtbWFwcGluZyBvZiBh bm90aGVyIG9iamVjdCkuCgozLiBUaGUgQk8gaXMgbWFwcGVkIGludG8gR1RULCBzbyB0aGUgbWF4 aW11bSBhbW91bnQgb2YgbWVtb3J5IG1hcHBlZCBhdAphbGwgdGltZXMgaXMgc3RpbGwgdGhlIEdU VCBsaW1pdC4KCjQuIFRoZSBCTyBpcyBvbmx5IG1hcHBlZCByZWFkb25seSBmb3Igbm93LCBzbyBu byB3cml0ZSBzdXBwb3J0LgoKNS4gTGlzdCBvZiBiYWNraW5nIHBhZ2VzIGlzIG9ubHkgYWNxdWly ZWQgb25jZSwgc28gdGhleSByZXByZXNlbnQgYQpzbmFwc2hvdCBvZiB0aGUgZmlyc3QgdXNlLgoK RXhwb3J0aW5nIGFuZCBzaGFyaW5nIGFzIHdlbGwgYXMgbWFwcGluZyBvZiBidWZmZXIgb2JqZWN0 cyBjcmVhdGVkIGJ5CnRoaXMgZnVuY3Rpb24gaXMgZm9yYmlkZGVuIGFuZCByZXN1bHRzIGluIGFu IC1FUEVSTS4KCnYyOiBzcXVhc2ggYWxsIHByZXZpb3VzIGNoYW5nZXMgaW50byBmaXJzdCBwdWJs aWMgdmVyc2lvbgp2MzogZml4IHRhYnMsIG1hcCByZWFkb25seSwgZG9uJ3QgdXNlIE1NIGNhbGxi YWNrIGFueSBtb3JlCnY0OiBzZXQgVFRNX1BBR0VfRkxBR19TRyBzbyB0aGF0IFRUTSBuZXZlciBt ZXNzZXMgd2l0aCB0aGUgcGFnZXMsCiAgICBwaW4vdW5waW4gcGFnZXMgb24gYmluZC91bmJpbmQg aW5zdGVhZCBvZiBwb3B1bGF0ZS91bnBvcHVsYXRlCnY1OiByZWJhc2VkIG9uIDMuMTctd2lwLCBJ T0NUTCByZW5hbWVkIHRvIHVzZXJwdHIsIHJlamVjdCBhbnkgdW5rbm93bgogICAgZmxhZ3MsIGJl dHRlciBoYW5kbGUgUkVBRE9OTFkgZmxhZywgaW1wcm92ZSBwZXJtaXNzaW9uIGNoZWNrCnY2OiBm aXggcHRyIGNhc3Qgd2FybmluZywgdXNlIHNldF9wYWdlX2RpcnR5L21hcmtfcGFnZV9hY2Nlc3Nl ZCBvbiB1bnBpbgp2NzogYWRkIHdhcm5pbmcgYWJvdXQgaXQncyBhdmFpbGFiaWxpdHkgaW4gdGhl IEFQSSBkZWZpbml0aW9uCnY4OiBkcm9wIGFjY2Vzc19vayBjaGVjaywgZml4IFZNIG1hcHBpbmcg Yml0cwoKU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0Bh bWQuY29tPgpSZXZpZXdlZC1ieTogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBhbWQu Y29tPiAodjQpClJldmlld2VkLWJ5OiBKw6lyw7RtZSBHbGlzc2UgPGpnbGlzc2VAcmVkaGF0LmNv bT4gKHY0KQotLS0KIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmggICAgICAgIHwgICA2 ICsrCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jcy5jICAgICB8ICAyNSArKysrKy0K IGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rydi5jICAgIHwgICA1ICstCiBkcml2ZXJz L2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYyAgICB8ICA2OCArKysrKysrKysrKysrKysrCiBk cml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9rbXMuYyAgICB8ICAgMSArCiBkcml2ZXJzL2dw dS9kcm0vcmFkZW9uL3JhZGVvbl9vYmplY3QuYyB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL3JhZGVvbl9wcmltZS5jICB8ICAxMCArKysKIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFk ZW9uX3R0bS5jICAgIHwgMTQ1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJp dmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fdm0uYyAgICAgfCAgIDMgKwogaW5jbHVkZS91YXBp L2RybS9yYWRlb25fZHJtLmggICAgICAgICAgfCAgMTYgKysrKwogMTAgZmlsZXMgY2hhbmdlZCwg Mjc5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3JhZGVvbi9yYWRlb24uaCBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgK aW5kZXggOWUxNzMyZS4uNmYzOGEyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9yYWRlb24uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oCkBAIC0yMTM4 LDYgKzIxMzgsOCBAQCBpbnQgcmFkZW9uX2dlbV9pbmZvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlscCk7CiBpbnQgcmFk ZW9uX2dlbV9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK IAkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApOworaW50IHJhZGVvbl9nZW1fdXNlcnB0cl9p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJICAgICBzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbHApOwogaW50IHJhZGVvbl9nZW1fcGluX2lvY3RsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwog aW50IHJhZGVvbl9nZW1fdW5waW5faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKQEAgLTI4NzEsNiArMjg3MywxMCBAQCBleHRlcm4gdm9pZCByYWRlb25fbGVnYWN5X3Nl dF9jbG9ja19nYXRpbmcoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGludCBlbmFibAogZXh0 ZXJuIHZvaWQgcmFkZW9uX2F0b21fc2V0X2Nsb2NrX2dhdGluZyhzdHJ1Y3QgcmFkZW9uX2Rldmlj ZSAqcmRldiwgaW50IGVuYWJsZSk7CiBleHRlcm4gdm9pZCByYWRlb25fdHRtX3BsYWNlbWVudF9m cm9tX2RvbWFpbihzdHJ1Y3QgcmFkZW9uX2JvICpyYm8sIHUzMiBkb21haW4pOwogZXh0ZXJuIGJv b2wgcmFkZW9uX3R0bV9ib19pc19yYWRlb25fYm8oc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpi byk7CitleHRlcm4gaW50IHJhZGVvbl90dG1fdHRfc2V0X3VzZXJwdHIoc3RydWN0IHR0bV90dCAq dHRtLCB1aW50NjRfdCBhZGRyLAorCQkJCSAgICAgdWludDMyX3QgZmxhZ3MpOworZXh0ZXJuIGJv b2wgcmFkZW9uX3R0bV90dF9oYXNfdXNlcnB0cihzdHJ1Y3QgdHRtX3R0ICp0dG0pOworZXh0ZXJu IGJvb2wgcmFkZW9uX3R0bV90dF9pc19yZWFkb25seShzdHJ1Y3QgdHRtX3R0ICp0dG0pOwogZXh0 ZXJuIHZvaWQgcmFkZW9uX3ZyYW1fbG9jYXRpb24oc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYs IHN0cnVjdCByYWRlb25fbWMgKm1jLCB1NjQgYmFzZSk7CiBleHRlcm4gdm9pZCByYWRlb25fZ3R0 X2xvY2F0aW9uKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBzdHJ1Y3QgcmFkZW9uX21jICpt Yyk7CiBleHRlcm4gaW50IHJhZGVvbl9yZXN1bWVfa21zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGJvb2wgcmVzdW1lLCBib29sIGZiY29uKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9y YWRlb24vcmFkZW9uX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jcy5jCmlu ZGV4IGVlNzEyYzEuLjEzMjE0OTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24v cmFkZW9uX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fY3MuYwpAQCAt NzgsNyArNzgsOCBAQCBzdGF0aWMgaW50IHJhZGVvbl9jc19wYXJzZXJfcmVsb2NzKHN0cnVjdCBy YWRlb25fY3NfcGFyc2VyICpwKQogCXN0cnVjdCByYWRlb25fY3NfY2h1bmsgKmNodW5rOwogCXN0 cnVjdCByYWRlb25fY3NfYnVja2V0cyBidWNrZXRzOwogCXVuc2lnbmVkIGksIGo7Ci0JYm9vbCBk dXBsaWNhdGU7CisJYm9vbCBkdXBsaWNhdGUsIG5lZWRfbW1hcF9sb2NrID0gZmFsc2U7CisJaW50 IHI7CiAKIAlpZiAocC0+Y2h1bmtfcmVsb2NzX2lkeCA9PSAtMSkgewogCQlyZXR1cm4gMDsKQEAg LTE2NCw2ICsxNjUsMTkgQEAgc3RhdGljIGludCByYWRlb25fY3NfcGFyc2VyX3JlbG9jcyhzdHJ1 Y3QgcmFkZW9uX2NzX3BhcnNlciAqcCkKIAkJCXAtPnJlbG9jc1tpXS5hbGxvd2VkX2RvbWFpbnMg PSBkb21haW47CiAJCX0KIAorCQlpZiAocmFkZW9uX3R0bV90dF9oYXNfdXNlcnB0cihwLT5yZWxv Y3NbaV0ucm9iai0+dGJvLnR0bSkpIHsKKwkJCXVpbnQzMl90IGRvbWFpbiA9IHAtPnJlbG9jc1tp XS5wcmVmZXJlZF9kb21haW5zOworCQkJaWYgKCEoZG9tYWluICYgUkFERU9OX0dFTV9ET01BSU5f R1RUKSkgeworCQkJCURSTV9FUlJPUigiT25seSBSQURFT05fR0VNX0RPTUFJTl9HVFQgaXMgIgor CQkJCQkgICJhbGxvd2VkIGZvciB1c2VycHRyIEJPc1xuIik7CisJCQkJcmV0dXJuIC1FSU5WQUw7 CisJCQl9CisJCQluZWVkX21tYXBfbG9jayA9IHRydWU7CisJCQlkb21haW4gPSBSQURFT05fR0VN X0RPTUFJTl9HVFQ7CisJCQlwLT5yZWxvY3NbaV0ucHJlZmVyZWRfZG9tYWlucyA9IGRvbWFpbjsK KwkJCXAtPnJlbG9jc1tpXS5hbGxvd2VkX2RvbWFpbnMgPSBkb21haW47CisJCX0KKwogCQlwLT5y ZWxvY3NbaV0udHYuYm8gPSAmcC0+cmVsb2NzW2ldLnJvYmotPnRibzsKIAkJcC0+cmVsb2NzW2ld LmhhbmRsZSA9IHItPmhhbmRsZTsKIApAQCAtMTc2LDggKzE5MCwxNSBAQCBzdGF0aWMgaW50IHJh ZGVvbl9jc19wYXJzZXJfcmVsb2NzKHN0cnVjdCByYWRlb25fY3NfcGFyc2VyICpwKQogCWlmIChw LT5jc19mbGFncyAmIFJBREVPTl9DU19VU0VfVk0pCiAJCXAtPnZtX2JvcyA9IHJhZGVvbl92bV9n ZXRfYm9zKHAtPnJkZXYsIHAtPmliLnZtLAogCQkJCQkgICAgICAmcC0+dmFsaWRhdGVkKTsKKwlp ZiAobmVlZF9tbWFwX2xvY2spCisJCWRvd25fcmVhZCgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsK KworCXIgPSByYWRlb25fYm9fbGlzdF92YWxpZGF0ZShwLT5yZGV2LCAmcC0+dGlja2V0LCAmcC0+ dmFsaWRhdGVkLCBwLT5yaW5nKTsKIAotCXJldHVybiByYWRlb25fYm9fbGlzdF92YWxpZGF0ZShw LT5yZGV2LCAmcC0+dGlja2V0LCAmcC0+dmFsaWRhdGVkLCBwLT5yaW5nKTsKKwlpZiAobmVlZF9t bWFwX2xvY2spCisJCXVwX3JlYWQoJmN1cnJlbnQtPm1tLT5tbWFwX3NlbSk7CisKKwlyZXR1cm4g cjsKIH0KIAogc3RhdGljIGludCByYWRlb25fY3NfZ2V0X3Jpbmcoc3RydWN0IHJhZGVvbl9jc19w YXJzZXIgKnAsIHUzMiByaW5nLCBzMzIgcHJpb3JpdHkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcmFkZW9uL3JhZGVvbl9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9u X2Rydi5jCmluZGV4IGE3NzM4MzAuLjViMThhZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9yYWRlb24vcmFkZW9uX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9u X2Rydi5jCkBAIC0xMTQsNiArMTE0LDkgQEAgaW50IHJhZGVvbl9nZW1fb2JqZWN0X29wZW4oc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCiAJCQkJc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYp Owogdm9pZCByYWRlb25fZ2VtX29iamVjdF9jbG9zZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i aiwKIAkJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CitzdHJ1Y3QgZG1hX2J1ZiAqcmFk ZW9uX2dlbV9wcmltZV9leHBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkJc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpnb2JqLAorCQkJCQlpbnQgZmxhZ3MpOwogZXh0ZXJuIGludCByYWRl b25fZ2V0X2NydGNfc2Nhbm91dHBvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YywK IAkJCQkgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsCiAJCQkJICAgICAgaW50ICp2cG9zLCBpbnQg Kmhwb3MsIGt0aW1lX3QgKnN0aW1lLApAQCAtNTY4LDcgKzU3MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qg ZHJtX2RyaXZlciBrbXNfZHJpdmVyID0gewogCiAJLnByaW1lX2hhbmRsZV90b19mZCA9IGRybV9n ZW1fcHJpbWVfaGFuZGxlX3RvX2ZkLAogCS5wcmltZV9mZF90b19oYW5kbGUgPSBkcm1fZ2VtX3By aW1lX2ZkX3RvX2hhbmRsZSwKLQkuZ2VtX3ByaW1lX2V4cG9ydCA9IGRybV9nZW1fcHJpbWVfZXhw b3J0LAorCS5nZW1fcHJpbWVfZXhwb3J0ID0gcmFkZW9uX2dlbV9wcmltZV9leHBvcnQsCiAJLmdl bV9wcmltZV9pbXBvcnQgPSBkcm1fZ2VtX3ByaW1lX2ltcG9ydCwKIAkuZ2VtX3ByaW1lX3BpbiA9 IHJhZGVvbl9nZW1fcHJpbWVfcGluLAogCS5nZW1fcHJpbWVfdW5waW4gPSByYWRlb25fZ2VtX3By aW1lX3VucGluLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZ2Vt LmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYwppbmRleCBiZmQ3ZTFiLi45 OTNhYjIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYwpAQCAtMjcyLDYgKzI3Miw2 NSBAQCBpbnQgcmFkZW9uX2dlbV9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKIAlyZXR1cm4gMDsKIH0KIAoraW50IHJhZGVvbl9nZW1fdXNlcnB0cl9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJICAgICBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbHApCit7CisJc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYgPSBkZXYtPmRldl9w cml2YXRlOworCXN0cnVjdCBkcm1fcmFkZW9uX2dlbV91c2VycHRyICphcmdzID0gZGF0YTsKKwlz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdvYmo7CisJc3RydWN0IHJhZGVvbl9ibyAqYm87CisJdWlu dDMyX3QgaGFuZGxlOworCWludCByOworCisJaWYgKG9mZnNldF9pbl9wYWdlKGFyZ3MtPmFkZHIg fCBhcmdzLT5zaXplKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiB3ZSBvbmx5IHN1cHBvcnQg cmVhZCBvbmx5IG1hcHBpbmdzIGZvciBub3cgKi8KKwlpZiAoIShhcmdzLT5mbGFncyAmIFJBREVP Tl9HRU1fVVNFUlBUUl9SRUFET05MWSkpCisJCXJldHVybiAtRUFDQ0VTOworCisJLyogcmVqZWN0 IHVua25vd24gZmxhZyB2YWx1ZXMgKi8KKwlpZiAoYXJncy0+ZmxhZ3MgJiB+UkFERU9OX0dFTV9V U0VSUFRSX1JFQURPTkxZKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIHJlYWRvbmx5IHBhZ2Vz IG5vdCB0ZXN0ZWQgb24gb2xkZXIgaGFyZHdhcmUgKi8KKwlpZiAocmRldi0+ZmFtaWx5IDwgQ0hJ UF9SNjAwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWRvd25fcmVhZCgmcmRldi0+ZXhjbHVzaXZl X2xvY2spOworCisJLyogY3JlYXRlIGEgZ2VtIG9iamVjdCB0byBjb250YWluIHRoaXMgb2JqZWN0 IGluICovCisJciA9IHJhZGVvbl9nZW1fb2JqZWN0X2NyZWF0ZShyZGV2LCBhcmdzLT5zaXplLCAw LAorCQkJCSAgICAgUkFERU9OX0dFTV9ET01BSU5fQ1BVLCAwLAorCQkJCSAgICAgZmFsc2UsICZn b2JqKTsKKwlpZiAocikKKwkJZ290byBoYW5kbGVfbG9ja3VwOworCisJYm8gPSBnZW1fdG9fcmFk ZW9uX2JvKGdvYmopOworCXIgPSByYWRlb25fdHRtX3R0X3NldF91c2VycHRyKGJvLT50Ym8udHRt LCBhcmdzLT5hZGRyLCBhcmdzLT5mbGFncyk7CisJaWYgKHIpCisJCWdvdG8gcmVsZWFzZV9vYmpl Y3Q7CisKKwlyID0gZHJtX2dlbV9oYW5kbGVfY3JlYXRlKGZpbHAsIGdvYmosICZoYW5kbGUpOwor CS8qIGRyb3AgcmVmZXJlbmNlIGZyb20gYWxsb2NhdGUgLSBoYW5kbGUgaG9sZHMgaXQgbm93ICov CisJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQoZ29iaik7CisJaWYgKHIpCisJ CWdvdG8gaGFuZGxlX2xvY2t1cDsKKworCWFyZ3MtPmhhbmRsZSA9IGhhbmRsZTsKKwl1cF9yZWFk KCZyZGV2LT5leGNsdXNpdmVfbG9jayk7CisJcmV0dXJuIDA7CisKK3JlbGVhc2Vfb2JqZWN0Ogor CWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKGdvYmopOworCitoYW5kbGVfbG9j a3VwOgorCXVwX3JlYWQoJnJkZXYtPmV4Y2x1c2l2ZV9sb2NrKTsKKwlyID0gcmFkZW9uX2dlbV9o YW5kbGVfbG9ja3VwKHJkZXYsIHIpOworCisJcmV0dXJuIHI7Cit9CisKIGludCByYWRlb25fZ2Vt X3NldF9kb21haW5faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJ CQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApCiB7CkBAIC0zMTUsNiArMzc0LDEwIEBAIGludCByYWRl b25fbW9kZV9kdW1iX21tYXAoc3RydWN0IGRybV9maWxlICpmaWxwLAogCQlyZXR1cm4gLUVOT0VO VDsKIAl9CiAJcm9iaiA9IGdlbV90b19yYWRlb25fYm8oZ29iaik7CisJaWYgKHJhZGVvbl90dG1f dHRfaGFzX3VzZXJwdHIocm9iai0+dGJvLnR0bSkpIHsKKwkJZHJtX2dlbV9vYmplY3RfdW5yZWZl cmVuY2VfdW5sb2NrZWQoZ29iaik7CisJCXJldHVybiAtRVBFUk07CisJfQogCSpvZmZzZXRfcCA9 IHJhZGVvbl9ib19tbWFwX29mZnNldChyb2JqKTsKIAlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5j ZV91bmxvY2tlZChnb2JqKTsKIAlyZXR1cm4gMDsKQEAgLTUzMiw2ICs1OTUsMTEgQEAgaW50IHJh ZGVvbl9nZW1fb3BfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJ cmV0dXJuIC1FTk9FTlQ7CiAJfQogCXJvYmogPSBnZW1fdG9fcmFkZW9uX2JvKGdvYmopOworCisJ ciA9IC1FUEVSTTsKKwlpZiAocmFkZW9uX3R0bV90dF9oYXNfdXNlcnB0cihyb2JqLT50Ym8udHRt KSkKKwkJZ290byBvdXQ7CisKIAlyID0gcmFkZW9uX2JvX3Jlc2VydmUocm9iaiwgZmFsc2UpOwog CWlmICh1bmxpa2VseShyKSkKIAkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vcmFkZW9uL3JhZGVvbl9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2tt cy5jCmluZGV4IGViNzE2NGQuLjgzMDliMTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9y YWRlb24vcmFkZW9uX2ttcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2tt cy5jCkBAIC04ODUsNSArODg1LDYgQEAgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIHJhZGVv bl9pb2N0bHNfa21zW10gPSB7CiAJRFJNX0lPQ1RMX0RFRl9EUlYoUkFERU9OX0dFTV9CVVNZLCBy YWRlb25fZ2VtX2J1c3lfaW9jdGwsIERSTV9BVVRIfERSTV9VTkxPQ0tFRHxEUk1fUkVOREVSX0FM TE9XKSwKIAlEUk1fSU9DVExfREVGX0RSVihSQURFT05fR0VNX1ZBLCByYWRlb25fZ2VtX3ZhX2lv Y3RsLCBEUk1fQVVUSHxEUk1fVU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyksCiAJRFJNX0lPQ1RM X0RFRl9EUlYoUkFERU9OX0dFTV9PUCwgcmFkZW9uX2dlbV9vcF9pb2N0bCwgRFJNX0FVVEh8RFJN X1VOTE9DS0VEfERSTV9SRU5ERVJfQUxMT1cpLAorCURSTV9JT0NUTF9ERUZfRFJWKFJBREVPTl9H RU1fVVNFUlBUUiwgcmFkZW9uX2dlbV91c2VycHRyX2lvY3RsLCBEUk1fQVVUSHxEUk1fVU5MT0NL RUR8RFJNX1JFTkRFUl9BTExPVyksCiB9OwogaW50IHJhZGVvbl9tYXhfa21zX2lvY3RsID0gQVJS QVlfU0laRShyYWRlb25faW9jdGxzX2ttcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v cmFkZW9uL3JhZGVvbl9vYmplY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX29i amVjdC5jCmluZGV4IDQ4MGM4N2QuLmM3M2MxZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9yYWRlb24vcmFkZW9uX29iamVjdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFk ZW9uX29iamVjdC5jCkBAIC0yNjQsNiArMjY0LDkgQEAgaW50IHJhZGVvbl9ib19waW5fcmVzdHJp Y3RlZChzdHJ1Y3QgcmFkZW9uX2JvICpibywgdTMyIGRvbWFpbiwgdTY0IG1heF9vZmZzZXQsCiB7 CiAJaW50IHIsIGk7CiAKKwlpZiAocmFkZW9uX3R0bV90dF9oYXNfdXNlcnB0cihiby0+dGJvLnR0 bSkpCisJCXJldHVybiAtRVBFUk07CisKIAlpZiAoYm8tPnBpbl9jb3VudCkgewogCQliby0+cGlu X2NvdW50Kys7CiAJCWlmIChncHVfYWRkcikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9y YWRlb24vcmFkZW9uX3ByaW1lLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9wcmlt ZS5jCmluZGV4IGY3ZTQ4ZDMuLmJiMThiYzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9y YWRlb24vcmFkZW9uX3ByaW1lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25f cHJpbWUuYwpAQCAtMTAzLDMgKzEwMywxMyBAQCB2b2lkIHJhZGVvbl9nZW1fcHJpbWVfdW5waW4o c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCiAJcmFkZW9uX2JvX3VucGluKGJvKTsKIAlyYWRl b25fYm9fdW5yZXNlcnZlKGJvKTsKIH0KKworc3RydWN0IGRtYV9idWYgKnJhZGVvbl9nZW1fcHJp bWVfZXhwb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJCXN0cnVjdCBkcm1fZ2VtX29i amVjdCAqZ29iaiwKKwkJCQkJaW50IGZsYWdzKQoreworCXN0cnVjdCByYWRlb25fYm8gKmJvID0g Z2VtX3RvX3JhZGVvbl9ibyhnb2JqKTsKKwlpZiAocmFkZW9uX3R0bV90dF9oYXNfdXNlcnB0cihi by0+dGJvLnR0bSkpCisJCXJldHVybiBFUlJfUFRSKC1FUEVSTSk7CisJcmV0dXJuIGRybV9nZW1f cHJpbWVfZXhwb3J0KGRldiwgZ29iaiwgZmxhZ3MpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3JhZGVvbi9yYWRlb25fdHRtLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVv bl90dG0uYwppbmRleCA3MmFmZTgyLi5iMjA5MzNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vcmFkZW9uL3JhZGVvbl90dG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVv bl90dG0uYwpAQCAtMzksNiArMzksOCBAQAogI2luY2x1ZGUgPGxpbnV4L3NlcV9maWxlLmg+CiAj aW5jbHVkZSA8bGludXgvc2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L3N3aW90bGIuaD4KKyNpbmNs dWRlIDxsaW51eC9zd2FwLmg+CisjaW5jbHVkZSA8bGludXgvcGFnZW1hcC5oPgogI2luY2x1ZGUg PGxpbnV4L2RlYnVnZnMuaD4KICNpbmNsdWRlICJyYWRlb25fcmVnLmgiCiAjaW5jbHVkZSAicmFk ZW9uLmgiCkBAIC01MTUsOCArNTE3LDkyIEBAIHN0cnVjdCByYWRlb25fdHRtX3R0IHsKIAlzdHJ1 Y3QgdHRtX2RtYV90dAkJdHRtOwogCXN0cnVjdCByYWRlb25fZGV2aWNlCQkqcmRldjsKIAl1NjQJ CQkJb2Zmc2V0OworCisJdWludDY0X3QJCQl1c2VycHRyOworCXN0cnVjdCBtbV9zdHJ1Y3QJCSp1 c2VybW07CisJdWludDMyX3QJCQl1c2VyZmxhZ3M7CiB9OwogCisvKiBwcmVwYXJlIHRoZSBzZyB0 YWJsZSB3aXRoIHRoZSB1c2VyIHBhZ2VzICovCitzdGF0aWMgaW50IHJhZGVvbl90dG1fdHRfcGlu X3VzZXJwdHIoc3RydWN0IHR0bV90dCAqdHRtKQoreworCXN0cnVjdCByYWRlb25fZGV2aWNlICpy ZGV2ID0gcmFkZW9uX2dldF9yZGV2KHR0bS0+YmRldik7CisJc3RydWN0IHJhZGVvbl90dG1fdHQg Kmd0dCA9ICh2b2lkICopdHRtOworCXVuc2lnbmVkIHBpbm5lZCA9IDAsIG5lbnRzOworCWludCBy OworCisJaW50IHdyaXRlID0gIShndHQtPnVzZXJmbGFncyAmIFJBREVPTl9HRU1fVVNFUlBUUl9S RUFET05MWSk7CisJZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uID0gd3JpdGUgPwor CQlETUFfQklESVJFQ1RJT05BTCA6IERNQV9UT19ERVZJQ0U7CisKKwlpZiAoY3VycmVudC0+bW0g IT0gZ3R0LT51c2VybW0pCisJCXJldHVybiAtRVBFUk07CisKKwlkbyB7CisJCXVuc2lnbmVkIG51 bV9wYWdlcyA9IHR0bS0+bnVtX3BhZ2VzIC0gcGlubmVkOworCQl1aW50NjRfdCB1c2VycHRyID0g Z3R0LT51c2VycHRyICsgcGlubmVkICogUEFHRV9TSVpFOworCQlzdHJ1Y3QgcGFnZSAqKnBhZ2Vz ID0gdHRtLT5wYWdlcyArIHBpbm5lZDsKKworCQlyID0gZ2V0X3VzZXJfcGFnZXMoY3VycmVudCwg Y3VycmVudC0+bW0sIHVzZXJwdHIsIG51bV9wYWdlcywKKwkJCQkgICB3cml0ZSwgMCwgcGFnZXMs IE5VTEwpOworCQlpZiAociA8IDApCisJCQlnb3RvIHJlbGVhc2VfcGFnZXM7CisKKwkJcGlubmVk ICs9IHI7CisKKwl9IHdoaWxlIChwaW5uZWQgPCB0dG0tPm51bV9wYWdlcyk7CisKKwlyID0gc2df YWxsb2NfdGFibGVfZnJvbV9wYWdlcyh0dG0tPnNnLCB0dG0tPnBhZ2VzLCB0dG0tPm51bV9wYWdl cywgMCwKKwkJCQkgICAgICB0dG0tPm51bV9wYWdlcyA8PCBQQUdFX1NISUZULAorCQkJCSAgICAg IEdGUF9LRVJORUwpOworCWlmIChyKQorCQlnb3RvIHJlbGVhc2Vfc2c7CisKKwlyID0gLUVOT01F TTsKKwluZW50cyA9IGRtYV9tYXBfc2cocmRldi0+ZGV2LCB0dG0tPnNnLT5zZ2wsIHR0bS0+c2ct Pm5lbnRzLCBkaXJlY3Rpb24pOworCWlmIChuZW50cyAhPSB0dG0tPnNnLT5uZW50cykKKwkJZ290 byByZWxlYXNlX3NnOworCisJZHJtX3ByaW1lX3NnX3RvX3BhZ2VfYWRkcl9hcnJheXModHRtLT5z ZywgdHRtLT5wYWdlcywKKwkJCQkJIGd0dC0+dHRtLmRtYV9hZGRyZXNzLCB0dG0tPm51bV9wYWdl cyk7CisKKwlyZXR1cm4gMDsKKworcmVsZWFzZV9zZzoKKwlrZnJlZSh0dG0tPnNnKTsKKworcmVs ZWFzZV9wYWdlczoKKwlyZWxlYXNlX3BhZ2VzKHR0bS0+cGFnZXMsIHBpbm5lZCwgMCk7CisJcmV0 dXJuIHI7Cit9CisKK3N0YXRpYyB2b2lkIHJhZGVvbl90dG1fdHRfdW5waW5fdXNlcnB0cihzdHJ1 Y3QgdHRtX3R0ICp0dG0pCit7CisJc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYgPSByYWRlb25f Z2V0X3JkZXYodHRtLT5iZGV2KTsKKwlzdHJ1Y3QgcmFkZW9uX3R0bV90dCAqZ3R0ID0gKHZvaWQg Kil0dG07CisJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKKwlpbnQgaTsKKworCWludCB3cml0ZSA9 ICEoZ3R0LT51c2VyZmxhZ3MgJiBSQURFT05fR0VNX1VTRVJQVFJfUkVBRE9OTFkpOworCWVudW0g ZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbiA9IHdyaXRlID8KKwkJRE1BX0JJRElSRUNUSU9O QUwgOiBETUFfVE9fREVWSUNFOworCisJLyogZnJlZSB0aGUgc2cgdGFibGUgYW5kIHBhZ2VzIGFn YWluICovCisJZG1hX3VubWFwX3NnKHJkZXYtPmRldiwgdHRtLT5zZy0+c2dsLCB0dG0tPnNnLT5u ZW50cywgZGlyZWN0aW9uKTsKKworCWZvcl9lYWNoX3NnKHR0bS0+c2ctPnNnbCwgc2csIHR0bS0+ c2ctPm5lbnRzLCBpKSB7CisJCXN0cnVjdCBwYWdlICpwYWdlID0gc2dfcGFnZShzZyk7CisKKwkJ aWYgKCEoZ3R0LT51c2VyZmxhZ3MgJiBSQURFT05fR0VNX1VTRVJQVFJfUkVBRE9OTFkpKQorCQkJ c2V0X3BhZ2VfZGlydHkocGFnZSk7CisKKwkJbWFya19wYWdlX2FjY2Vzc2VkKHBhZ2UpOworCQlw YWdlX2NhY2hlX3JlbGVhc2UocGFnZSk7CisJfQorCisJc2dfZnJlZV90YWJsZSh0dG0tPnNnKTsK K30KKwogc3RhdGljIGludCByYWRlb25fdHRtX2JhY2tlbmRfYmluZChzdHJ1Y3QgdHRtX3R0ICp0 dG0sCiAJCQkJICAgc3RydWN0IHR0bV9tZW1fcmVnICpib19tZW0pCiB7CkBAIC01MjUsNiArNjEx LDExIEBAIHN0YXRpYyBpbnQgcmFkZW9uX3R0bV9iYWNrZW5kX2JpbmQoc3RydWN0IHR0bV90dCAq dHRtLAogCQlSQURFT05fR0FSVF9QQUdFX1dSSVRFOwogCWludCByOwogCisJaWYgKGd0dC0+dXNl cnB0cikgeworCQlyYWRlb25fdHRtX3R0X3Bpbl91c2VycHRyKHR0bSk7CisJCWZsYWdzICY9IH5S QURFT05fR0FSVF9QQUdFX1dSSVRFOworCX0KKwogCWd0dC0+b2Zmc2V0ID0gKHVuc2lnbmVkIGxv bmcpKGJvX21lbS0+c3RhcnQgPDwgUEFHRV9TSElGVCk7CiAJaWYgKCF0dG0tPm51bV9wYWdlcykg ewogCQlXQVJOKDEsICJub3RoaW5nIHRvIGJpbmQgJWx1IHBhZ2VzIGZvciBtcmVnICVwIGJhY2sg JXAhXG4iLApAQCAtNTQ3LDYgKzYzOCwxMCBAQCBzdGF0aWMgaW50IHJhZGVvbl90dG1fYmFja2Vu ZF91bmJpbmQoc3RydWN0IHR0bV90dCAqdHRtKQogCXN0cnVjdCByYWRlb25fdHRtX3R0ICpndHQg PSAodm9pZCAqKXR0bTsKIAogCXJhZGVvbl9nYXJ0X3VuYmluZChndHQtPnJkZXYsIGd0dC0+b2Zm c2V0LCB0dG0tPm51bV9wYWdlcyk7CisKKwlpZiAoZ3R0LT51c2VycHRyKQorCQlyYWRlb25fdHRt X3R0X3VucGluX3VzZXJwdHIodHRtKTsKKwogCXJldHVybiAwOwogfQogCkBAIC02MDMsNiArNjk4 LDE2IEBAIHN0YXRpYyBpbnQgcmFkZW9uX3R0bV90dF9wb3B1bGF0ZShzdHJ1Y3QgdHRtX3R0ICp0 dG0pCiAJaWYgKHR0bS0+c3RhdGUgIT0gdHRfdW5wb3B1bGF0ZWQpCiAJCXJldHVybiAwOwogCisJ aWYgKGd0dC0+dXNlcnB0cikgeworCQl0dG0tPnNnID0ga2NhbGxvYygxLCBzaXplb2Yoc3RydWN0 IHNnX3RhYmxlKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghdHRtLT5zZykKKwkJCXJldHVybiAtRU5P TUVNOworCisJCXR0bS0+cGFnZV9mbGFncyB8PSBUVE1fUEFHRV9GTEFHX1NHOworCQl0dG0tPnN0 YXRlID0gdHRfdW5ib3VuZDsKKwkJcmV0dXJuIDA7CisJfQorCiAJaWYgKHNsYXZlICYmIHR0bS0+ c2cpIHsKIAkJZHJtX3ByaW1lX3NnX3RvX3BhZ2VfYWRkcl9hcnJheXModHRtLT5zZywgdHRtLT5w YWdlcywKIAkJCQkJCSBndHQtPnR0bS5kbWFfYWRkcmVzcywgdHRtLT5udW1fcGFnZXMpOwpAQCAt NjUyLDYgKzc1NywxMiBAQCBzdGF0aWMgdm9pZCByYWRlb25fdHRtX3R0X3VucG9wdWxhdGUoc3Ry dWN0IHR0bV90dCAqdHRtKQogCXVuc2lnbmVkIGk7CiAJYm9vbCBzbGF2ZSA9ICEhKHR0bS0+cGFn ZV9mbGFncyAmIFRUTV9QQUdFX0ZMQUdfU0cpOwogCisJaWYgKGd0dC0+dXNlcnB0cikgeworCQlr ZnJlZSh0dG0tPnNnKTsKKwkJdHRtLT5wYWdlX2ZsYWdzICY9IH5UVE1fUEFHRV9GTEFHX1NHOwor CQlyZXR1cm47CisJfQorCiAJaWYgKHNsYXZlKQogCQlyZXR1cm47CiAKQEAgLTY4MCw2ICs3OTEs NDAgQEAgc3RhdGljIHZvaWQgcmFkZW9uX3R0bV90dF91bnBvcHVsYXRlKHN0cnVjdCB0dG1fdHQg KnR0bSkKIAl0dG1fcG9vbF91bnBvcHVsYXRlKHR0bSk7CiB9CiAKK2ludCByYWRlb25fdHRtX3R0 X3NldF91c2VycHRyKHN0cnVjdCB0dG1fdHQgKnR0bSwgdWludDY0X3QgYWRkciwKKwkJCSAgICAg IHVpbnQzMl90IGZsYWdzKQoreworCXN0cnVjdCByYWRlb25fdHRtX3R0ICpndHQgPSAodm9pZCAq KXR0bTsKKworCWlmIChndHQgPT0gTlVMTCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlndHQtPnVz ZXJwdHIgPSBhZGRyOworCWd0dC0+dXNlcm1tID0gY3VycmVudC0+bW07CisJZ3R0LT51c2VyZmxh Z3MgPSBmbGFnczsKKwlyZXR1cm4gMDsKK30KKworYm9vbCByYWRlb25fdHRtX3R0X2hhc191c2Vy cHRyKHN0cnVjdCB0dG1fdHQgKnR0bSkKK3sKKwlzdHJ1Y3QgcmFkZW9uX3R0bV90dCAqZ3R0ID0g KHZvaWQgKil0dG07CisKKwlpZiAoZ3R0ID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCXJl dHVybiAhIWd0dC0+dXNlcnB0cjsKK30KKworYm9vbCByYWRlb25fdHRtX3R0X2lzX3JlYWRvbmx5 KHN0cnVjdCB0dG1fdHQgKnR0bSkKK3sKKwlzdHJ1Y3QgcmFkZW9uX3R0bV90dCAqZ3R0ID0gKHZv aWQgKil0dG07CisKKwlpZiAoZ3R0ID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVy biAhIShndHQtPnVzZXJmbGFncyAmIFJBREVPTl9HRU1fVVNFUlBUUl9SRUFET05MWSk7Cit9CisK IHN0YXRpYyBzdHJ1Y3QgdHRtX2JvX2RyaXZlciByYWRlb25fYm9fZHJpdmVyID0gewogCS50dG1f dHRfY3JlYXRlID0gJnJhZGVvbl90dG1fdHRfY3JlYXRlLAogCS50dG1fdHRfcG9wdWxhdGUgPSAm cmFkZW9uX3R0bV90dF9wb3B1bGF0ZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uX3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl92bS5jCmluZGV4 IGNjYWU0ZDkuLjBlMTA3YzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFk ZW9uX3ZtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fdm0uYwpAQCAtODg4 LDYgKzg4OCw5IEBAIGludCByYWRlb25fdm1fYm9fdXBkYXRlKHN0cnVjdCByYWRlb25fZGV2aWNl ICpyZGV2LAogCWJvX3ZhLT5mbGFncyAmPSB+UkFERU9OX1ZNX1BBR0VfVkFMSUQ7CiAJYm9fdmEt PmZsYWdzICY9IH5SQURFT05fVk1fUEFHRV9TWVNURU07CiAJYm9fdmEtPmZsYWdzICY9IH5SQURF T05fVk1fUEFHRV9TTk9PUEVEOworCWlmIChib192YS0+Ym8gJiYgcmFkZW9uX3R0bV90dF9pc19y ZWFkb25seShib192YS0+Ym8tPnRiby50dG0pKQorCQlib192YS0+ZmxhZ3MgJj0gflJBREVPTl9W TV9QQUdFX1dSSVRFQUJMRTsKKwogCWlmIChtZW0pIHsKIAkJYWRkciA9IG1lbS0+c3RhcnQgPDwg UEFHRV9TSElGVDsKIAkJaWYgKG1lbS0+bWVtX3R5cGUgIT0gVFRNX1BMX1NZU1RFTSkgewpkaWZm IC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9yYWRlb25fZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJt L3JhZGVvbl9kcm0uaAppbmRleCA1MDliMmQ3Li4zYTlmMjA5IDEwMDY0NAotLS0gYS9pbmNsdWRl L3VhcGkvZHJtL3JhZGVvbl9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkvZHJtL3JhZGVvbl9kcm0u aApAQCAtNTExLDYgKzUxMSw3IEBAIHR5cGVkZWYgc3RydWN0IHsKICNkZWZpbmUgRFJNX1JBREVP Tl9HRU1fQlVTWQkJMHgyYQogI2RlZmluZSBEUk1fUkFERU9OX0dFTV9WQQkJMHgyYgogI2RlZmlu ZSBEUk1fUkFERU9OX0dFTV9PUAkJMHgyYworI2RlZmluZSBEUk1fUkFERU9OX0dFTV9VU0VSUFRS CQkweDJkCiAKICNkZWZpbmUgRFJNX0lPQ1RMX1JBREVPTl9DUF9JTklUICAgIERSTV9JT1coIERS TV9DT01NQU5EX0JBU0UgKyBEUk1fUkFERU9OX0NQX0lOSVQsIGRybV9yYWRlb25faW5pdF90KQog I2RlZmluZSBEUk1fSU9DVExfUkFERU9OX0NQX1NUQVJUICAgRFJNX0lPKCAgRFJNX0NPTU1BTkRf QkFTRSArIERSTV9SQURFT05fQ1BfU1RBUlQpCkBAIC01NTQsNiArNTU1LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgewogI2RlZmluZSBEUk1fSU9DVExfUkFERU9OX0dFTV9CVVNZCURSTV9JT1dSKERSTV9D T01NQU5EX0JBU0UgKyBEUk1fUkFERU9OX0dFTV9CVVNZLCBzdHJ1Y3QgZHJtX3JhZGVvbl9nZW1f YnVzeSkKICNkZWZpbmUgRFJNX0lPQ1RMX1JBREVPTl9HRU1fVkEJCURSTV9JT1dSKERSTV9DT01N QU5EX0JBU0UgKyBEUk1fUkFERU9OX0dFTV9WQSwgc3RydWN0IGRybV9yYWRlb25fZ2VtX3ZhKQog I2RlZmluZSBEUk1fSU9DVExfUkFERU9OX0dFTV9PUAkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFT RSArIERSTV9SQURFT05fR0VNX09QLCBzdHJ1Y3QgZHJtX3JhZGVvbl9nZW1fb3ApCisjZGVmaW5l IERSTV9JT0NUTF9SQURFT05fR0VNX1VTRVJQVFIJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSAr IERSTV9SQURFT05fR0VNX1VTRVJQVFIsIHN0cnVjdCBkcm1fcmFkZW9uX2dlbV91c2VycHRyKQog CiB0eXBlZGVmIHN0cnVjdCBkcm1fcmFkZW9uX2luaXQgewogCWVudW0gewpAQCAtODA4LDYgKzgx MCwyMCBAQCBzdHJ1Y3QgZHJtX3JhZGVvbl9nZW1fY3JlYXRlIHsKIAl1aW50MzJfdAlmbGFnczsK IH07CiAKKy8qCisgKiBUaGlzIGlzIG5vdCBhIHJlbGlhYmxlIEFQSSBhbmQgeW91IHNob3VsZCBl eHBlY3QgaXQgdG8gZmFpbCBmb3IgYW55CisgKiBudW1iZXIgb2YgcmVhc29ucyBhbmQgaGF2ZSBm YWxsYmFjayBwYXRoIHRoYXQgZG8gbm90IHVzZSB1c2VycHRyIHRvCisgKiBwZXJmb3JtIGFueSBv cGVyYXRpb24uCisgKi8KKyNkZWZpbmUgUkFERU9OX0dFTV9VU0VSUFRSX1JFQURPTkxZCSgxIDw8 IDApCisKK3N0cnVjdCBkcm1fcmFkZW9uX2dlbV91c2VycHRyIHsKKwl1aW50NjRfdAkJYWRkcjsK Kwl1aW50NjRfdAkJc2l6ZTsKKwl1aW50MzJfdAkJZmxhZ3M7CisJdWludDMyX3QJCWhhbmRsZTsK K307CisKICNkZWZpbmUgUkFERU9OX1RJTElOR19NQUNSTwkJCQkweDEKICNkZWZpbmUgUkFERU9O X1RJTElOR19NSUNSTwkJCQkweDIKICNkZWZpbmUgUkFERU9OX1RJTElOR19TV0FQXzE2QklUCQkJ MHg0Ci0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK