From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: =?UTF-8?q?=5BPATCH=2011/26=5D=20vmwgfx=3A=20Add=20dmabuf=20helper=20functions=20for=20pinning?= Date: Tue, 4 Oct 2011 20:13:21 +0200 Message-ID: <1317752016-2680-12-git-send-email-thellstrom@vmware.com> References: <1317752016-2680-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 A559FA0998 for ; Tue, 4 Oct 2011 11:14:11 -0700 (PDT) In-Reply-To: <1317752016-2680-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 Cc: Thomas Hellstrom , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogSmFrb2IgQm9ybmVjcmFudHogPGpha29iQHZtd2FyZS5jb20+CgpTaWduZWQtb2ZmLWJ5 OiBKYWtvYiBCb3JuZWNyYW50eiA8amFrb2JAdm13YXJlLmNvbT4KU2lnbmVkLW9mZi1ieTogVGhv bWFzIEhlbGxzdHJvbSA8dGhlbGxzdHJvbUB2bXdhcmUuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS92bXdnZngvTWFrZWZpbGUgICAgICAgICB8ICAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS92bXdn Zngvdm13Z2Z4X2J1ZmZlci5jICB8ICAgMzMgKysrKwogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92 bXdnZnhfZG1hYnVmLmMgIHwgIDI5MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBk cml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaCAgICAgfCAgIDMyICsrKy0KIGRyaXZl cnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ZiLmMgICAgICB8ICAgNTcgKy0tLS0tLQogZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmMgICAgIHwgICAgNCArLQogZHJpdmVycy9ncHUv ZHJtL3Ztd2dmeC92bXdnZnhfb3ZlcmxheS5jIHwgICA2NiArKy0tLS0tCiA3IGZpbGVzIGNoYW5n ZWQsIDM3OSBpbnNlcnRpb25zKCspLCAxMDcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZG1hYnVmLmMKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vdm13Z2Z4L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9N YWtlZmlsZQppbmRleCA3ZDhlOWQ1Li5lMTNhMTE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvTWFrZWZpbGUK QEAgLTUsNiArNSw2IEBAIHZtd2dmeC15IDo9IHZtd2dmeF9leGVjYnVmLm8gdm13Z2Z4X2dtci5v IHZtd2dmeF9rbXMubyB2bXdnZnhfZHJ2Lm8gXAogCSAgICB2bXdnZnhfZmIubyB2bXdnZnhfaW9j dGwubyB2bXdnZnhfcmVzb3VyY2UubyB2bXdnZnhfYnVmZmVyLm8gXAogCSAgICB2bXdnZnhfZmlm by5vIHZtd2dmeF9pcnEubyB2bXdnZnhfbGR1Lm8gdm13Z2Z4X3R0bV9nbHVlLm8gXAogCSAgICB2 bXdnZnhfb3ZlcmxheS5vIHZtd2dmeF9tYXJrZXIubyB2bXdnZnhfZ21yaWRfbWFuYWdlci5vIFwK LQkgICAgdm13Z2Z4X2ZlbmNlLm8KKwkgICAgdm13Z2Z4X2ZlbmNlLm8gdm13Z2Z4X2RtYWJ1Zi5v CiAKIG9iai0kKENPTkZJR19EUk1fVk1XR0ZYKSA6PSB2bXdnZngubwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vdm13 Z2Z4L3Ztd2dmeF9idWZmZXIuYwppbmRleCA1ZDY2NWNlLi45OGE1ZDdlIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9idWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9idWZmZXIuYwpAQCAtNDIsNiArNDIsMTAgQEAgc3RhdGljIHVpbnQz Ml90IHN5c19wbGFjZW1lbnRfZmxhZ3MgPSBUVE1fUExfRkxBR19TWVNURU0gfAogc3RhdGljIHVp bnQzMl90IGdtcl9wbGFjZW1lbnRfZmxhZ3MgPSBWTVdfUExfRkxBR19HTVIgfAogCVRUTV9QTF9G TEFHX0NBQ0hFRDsKIAorc3RhdGljIHVpbnQzMl90IGdtcl9uZV9wbGFjZW1lbnRfZmxhZ3MgPSBW TVdfUExfRkxBR19HTVIgfAorCVRUTV9QTF9GTEFHX0NBQ0hFRCB8CisJVFRNX1BMX0ZMQUdfTk9f RVZJQ1Q7CisKIHN0cnVjdCB0dG1fcGxhY2VtZW50IHZtd192cmFtX3BsYWNlbWVudCA9IHsKIAku ZnBmbiA9IDAsCiAJLmxwZm4gPSAwLApAQCAtNjUsNiArNjksMjAgQEAgc3RydWN0IHR0bV9wbGFj ZW1lbnQgdm13X3ZyYW1fZ21yX3BsYWNlbWVudCA9IHsKIAkuYnVzeV9wbGFjZW1lbnQgPSAmZ21y X3BsYWNlbWVudF9mbGFncwogfTsKIAorc3RhdGljIHVpbnQzMl90IHZyYW1fZ21yX25lX3BsYWNl bWVudF9mbGFnc1tdID0geworCVRUTV9QTF9GTEFHX1ZSQU0gfCBUVE1fUExfRkxBR19DQUNIRUQg fCBUVE1fUExfRkxBR19OT19FVklDVCwKKwlWTVdfUExfRkxBR19HTVIgfCBUVE1fUExfRkxBR19D QUNIRUQgfCBUVE1fUExfRkxBR19OT19FVklDVAorfTsKKworc3RydWN0IHR0bV9wbGFjZW1lbnQg dm13X3ZyYW1fZ21yX25lX3BsYWNlbWVudCA9IHsKKwkuZnBmbiA9IDAsCisJLmxwZm4gPSAwLAor CS5udW1fcGxhY2VtZW50ID0gMiwKKwkucGxhY2VtZW50ID0gdnJhbV9nbXJfbmVfcGxhY2VtZW50 X2ZsYWdzLAorCS5udW1fYnVzeV9wbGFjZW1lbnQgPSAxLAorCS5idXN5X3BsYWNlbWVudCA9ICZn bXJfbmVfcGxhY2VtZW50X2ZsYWdzCit9OworCiBzdHJ1Y3QgdHRtX3BsYWNlbWVudCB2bXdfdnJh bV9zeXNfcGxhY2VtZW50ID0gewogCS5mcGZuID0gMCwKIAkubHBmbiA9IDAsCkBAIC05Miw2ICsx MTAsMjEgQEAgc3RydWN0IHR0bV9wbGFjZW1lbnQgdm13X3N5c19wbGFjZW1lbnQgPSB7CiAJLmJ1 c3lfcGxhY2VtZW50ID0gJnN5c19wbGFjZW1lbnRfZmxhZ3MKIH07CiAKK3N0YXRpYyB1aW50MzJf dCBldmljdGFibGVfcGxhY2VtZW50X2ZsYWdzW10gPSB7CisJVFRNX1BMX0ZMQUdfU1lTVEVNIHwg VFRNX1BMX0ZMQUdfQ0FDSEVELAorCVRUTV9QTF9GTEFHX1ZSQU0gfCBUVE1fUExfRkxBR19DQUNI RUQsCisJVk1XX1BMX0ZMQUdfR01SIHwgVFRNX1BMX0ZMQUdfQ0FDSEVECit9OworCitzdHJ1Y3Qg dHRtX3BsYWNlbWVudCB2bXdfZXZpY3RhYmxlX3BsYWNlbWVudCA9IHsKKwkuZnBmbiA9IDAsCisJ LmxwZm4gPSAwLAorCS5udW1fcGxhY2VtZW50ID0gMywKKwkucGxhY2VtZW50ID0gZXZpY3RhYmxl X3BsYWNlbWVudF9mbGFncywKKwkubnVtX2J1c3lfcGxhY2VtZW50ID0gMSwKKwkuYnVzeV9wbGFj ZW1lbnQgPSAmc3lzX3BsYWNlbWVudF9mbGFncworfTsKKwogc3RydWN0IHZtd190dG1fYmFja2Vu ZCB7CiAJc3RydWN0IHR0bV9iYWNrZW5kIGJhY2tlbmQ7CiAJc3RydWN0IHBhZ2UgKipwYWdlczsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2RtYWJ1Zi5jIGIvZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZG1hYnVmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uNTY2OGFkOQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS92bXdnZngvdm13Z2Z4X2RtYWJ1Zi5jCkBAIC0wLDAgKzEsMjkyIEBACisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAqCisgKiBDb3B5cmlnaHQgwqkgMjAxMSBWTXdhcmUsIEluYy4sIFBhbG8gQWx0bywg Q0EuLCBVU0EKKyAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEK KyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyAqIGRpc3RyaWJ1dGUsIHN1 YiBsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KKyAq IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0bworICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRp bmcgdGhlCisgKiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGll cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucworICogb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAor ICogVEhFIENPUFlSSUdIVCBIT0xERVJTLCBBVVRIT1JTIEFORC9PUiBJVFMgU1VQUExJRVJTIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLAorICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCisgKiBPVEhFUldJU0UsIEFS SVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFCisgKiBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKworI2luY2x1ZGUgInR0bS90dG1fcGxhY2VtZW50LmgiCisKKyNpbmNs dWRlICJkcm1QLmgiCisjaW5jbHVkZSAidm13Z2Z4X2Rydi5oIgorCisKKy8qKgorICogVmFsaWRh dGUgYSBidWZmZXIgdG8gcGxhY2VtZW50LgorICoKKyAqIE1heSBvbmx5IGJlIGNhbGxlZCBieSB0 aGUgY3VycmVudCBtYXN0ZXIgYXMgdGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUKKyAqIGl0cyBsb2Nr IGluIHdyaXRlIG1vZGUuCisgKgorICogUmV0dXJucworICogIC1FUkVTVEFSVFNZUyBpZiBpbnRl cnJ1cHRlZCBieSBhIHNpZ25hbC4KKyAqLworaW50IHZtd19kbWFidWZfdG9fcGxhY2VtZW50KHN0 cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAgc3RydWN0IHZtd19kbWFfYnVmZmVy ICpidWYsCisJCQkgICAgc3RydWN0IHR0bV9wbGFjZW1lbnQgKnBsYWNlbWVudCwKKwkJCSAgICBi b29sIGludGVycnVwdGlibGUpCit7CisJc3RydWN0IHZtd19tYXN0ZXIgKnZtYXN0ZXIgPSBkZXZf cHJpdi0+YWN0aXZlX21hc3RlcjsKKwlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvID0gJmJ1 Zi0+YmFzZTsKKwlpbnQgcmV0OworCisJcmV0ID0gdHRtX3dyaXRlX2xvY2soJnZtYXN0ZXItPmxv Y2ssIGludGVycnVwdGlibGUpOworCWlmICh1bmxpa2VseShyZXQgIT0gMCkpCisJCXJldHVybiBy ZXQ7CisKKwlyZXQgPSB0dG1fYm9fcmVzZXJ2ZShibywgaW50ZXJydXB0aWJsZSwgZmFsc2UsIGZh bHNlLCAwKTsKKwlpZiAodW5saWtlbHkocmV0ICE9IDApKQorCQlnb3RvIGVycjsKKworCXJldCA9 IHR0bV9ib192YWxpZGF0ZShibywgcGxhY2VtZW50LCBpbnRlcnJ1cHRpYmxlLCBmYWxzZSwgZmFs c2UpOworCisJdHRtX2JvX3VucmVzZXJ2ZShibyk7CisKK2VycjoKKwl0dG1fd3JpdGVfdW5sb2Nr KCZ2bWFzdGVyLT5sb2NrKTsKKwlyZXR1cm4gcmV0OworfQorCisvKioKKyAqIE1vdmUgYSBidWZm ZXIgdG8gdnJhbSBvciBnbXIuCisgKgorICogTWF5IG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBjdXJy ZW50IG1hc3RlciBhcyB0aGlzIGZ1bmN0aW9uIHRha2VzIHRoZQorICogaXRzIGxvY2sgaW4gd3Jp dGUgbW9kZS4KKyAqCisgKiBAZGV2X3ByaXY6ICBEcml2ZXIgcHJpdmF0ZS4KKyAqIEBidWY6ICBE TUEgYnVmZmVyIHRvIG1vdmUuCisgKiBAcGluOiAgUGluIGJ1ZmZlciBpZiB0cnVlLgorICogQGlu dGVycnVwdGlibGU6ICBVc2UgaW50ZXJydXB0aWJsZSB3YWl0LgorICoKKyAqIFJldHVybnMKKyAq IC1FUkVTVEFSVFNZUyBpZiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4KKyAqLworaW50IHZtd19k bWFidWZfdG9fdnJhbV9vcl9nbXIoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAg ICAgIHN0cnVjdCB2bXdfZG1hX2J1ZmZlciAqYnVmLAorCQkJICAgICAgYm9vbCBwaW4sIGJvb2wg aW50ZXJydXB0aWJsZSkKK3sKKwlzdHJ1Y3Qgdm13X21hc3RlciAqdm1hc3RlciA9IGRldl9wcml2 LT5hY3RpdmVfbWFzdGVyOworCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSAmYnVmLT5i YXNlOworCXN0cnVjdCB0dG1fcGxhY2VtZW50ICpwbGFjZW1lbnQ7CisJaW50IHJldDsKKworCXJl dCA9IHR0bV93cml0ZV9sb2NrKCZ2bWFzdGVyLT5sb2NrLCBpbnRlcnJ1cHRpYmxlKTsKKwlpZiAo dW5saWtlbHkocmV0ICE9IDApKQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gdHRtX2JvX3Jlc2Vy dmUoYm8sIGludGVycnVwdGlibGUsIGZhbHNlLCBmYWxzZSwgMCk7CisJaWYgKHVubGlrZWx5KHJl dCAhPSAwKSkKKwkJZ290byBlcnI7CisKKwkvKioKKwkgKiBQdXQgQk8gaW4gVlJBTSBpZiB0aGVy ZSBpcyBzcGFjZSwgb3RoZXJ3aXNlIGFzIGEgR01SLgorCSAqIElmIHRoZXJlIGlzIG5vIHNwYWNl IGluIFZSQU0gYW5kIEdNUiBpZHMgYXJlIGFsbCB1c2VkIHVwLAorCSAqIHN0YXJ0IGV2aWN0aW5n IEdNUnMgdG8gbWFrZSByb29tLiBJZiB0aGUgRE1BIGJ1ZmZlciBjYW4ndCBiZQorCSAqIHVzZWQg YXMgYSBHTVIsIHRoaXMgd2lsbCByZXR1cm4gLUVOT01FTS4KKwkgKi8KKworCWlmIChwaW4pCisJ CXBsYWNlbWVudCA9ICZ2bXdfdnJhbV9nbXJfbmVfcGxhY2VtZW50OworCWVsc2UKKwkJcGxhY2Vt ZW50ID0gJnZtd192cmFtX2dtcl9wbGFjZW1lbnQ7CisKKwlyZXQgPSB0dG1fYm9fdmFsaWRhdGUo Ym8sIHBsYWNlbWVudCwgaW50ZXJydXB0aWJsZSwgZmFsc2UsIGZhbHNlKTsKKwlpZiAobGlrZWx5 KHJldCA9PSAwKSB8fCByZXQgPT0gLUVSRVNUQVJUU1lTKQorCQlnb3RvIGVycl91bnJlc2VydmU7 CisKKworCS8qKgorCSAqIElmIHRoYXQgZmFpbGVkLCB0cnkgVlJBTSBhZ2FpbiwgdGhpcyB0aW1l IGV2aWN0aW5nCisJICogcHJldmlvdXMgY29udGVudHMuCisJICovCisKKwlpZiAocGluKQorCQlw bGFjZW1lbnQgPSAmdm13X3ZyYW1fbmVfcGxhY2VtZW50OworCWVsc2UKKwkJcGxhY2VtZW50ID0g JnZtd192cmFtX3BsYWNlbWVudDsKKworCXJldCA9IHR0bV9ib192YWxpZGF0ZShibywgcGxhY2Vt ZW50LCBpbnRlcnJ1cHRpYmxlLCBmYWxzZSwgZmFsc2UpOworCitlcnJfdW5yZXNlcnZlOgorCXR0 bV9ib191bnJlc2VydmUoYm8pOworZXJyOgorCXR0bV93cml0ZV91bmxvY2soJnZtYXN0ZXItPmxv Y2spOworCXJldHVybiByZXQ7Cit9CisKKy8qKgorICogTW92ZSBhIGJ1ZmZlciB0byB2cmFtLgor ICoKKyAqIE1heSBvbmx5IGJlIGNhbGxlZCBieSB0aGUgY3VycmVudCBtYXN0ZXIgYXMgdGhpcyBm dW5jdGlvbiB0YWtlcyB0aGUKKyAqIGl0cyBsb2NrIGluIHdyaXRlIG1vZGUuCisgKgorICogQGRl dl9wcml2OiAgRHJpdmVyIHByaXZhdGUuCisgKiBAYnVmOiAgRE1BIGJ1ZmZlciB0byBtb3ZlLgor ICogQHBpbjogIFBpbiBidWZmZXIgaW4gdnJhbSBpZiB0cnVlLgorICogQGludGVycnVwdGlibGU6 ICBVc2UgaW50ZXJydXB0aWJsZSB3YWl0LgorICoKKyAqIFJldHVybnMKKyAqIC1FUkVTVEFSVFNZ UyBpZiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4KKyAqLworaW50IHZtd19kbWFidWZfdG9fdnJh bShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAorCQkgICAgICAgc3RydWN0IHZtd19kbWFf YnVmZmVyICpidWYsCisJCSAgICAgICBib29sIHBpbiwgYm9vbCBpbnRlcnJ1cHRpYmxlKQorewor CXN0cnVjdCB0dG1fcGxhY2VtZW50ICpwbGFjZW1lbnQ7CisKKwlpZiAocGluKQorCQlwbGFjZW1l bnQgPSAmdm13X3ZyYW1fbmVfcGxhY2VtZW50OworCWVsc2UKKwkJcGxhY2VtZW50ID0gJnZtd192 cmFtX3BsYWNlbWVudDsKKworCXJldHVybiB2bXdfZG1hYnVmX3RvX3BsYWNlbWVudChkZXZfcHJp diwgYnVmLAorCQkJCSAgICAgICBwbGFjZW1lbnQsCisJCQkJICAgICAgIGludGVycnVwdGlibGUp OworfQorCisvKioKKyAqIE1vdmUgYSBidWZmZXIgdG8gc3RhcnQgb2YgdnJhbS4KKyAqCisgKiBN YXkgb25seSBiZSBjYWxsZWQgYnkgdGhlIGN1cnJlbnQgbWFzdGVyIGFzIHRoaXMgZnVuY3Rpb24g dGFrZXMgdGhlCisgKiBpdHMgbG9jayBpbiB3cml0ZSBtb2RlLgorICoKKyAqIEBkZXZfcHJpdjog IERyaXZlciBwcml2YXRlLgorICogQGJ1ZjogIERNQSBidWZmZXIgdG8gbW92ZS4KKyAqIEBwaW46 ICBQaW4gYnVmZmVyIGluIHZyYW0gaWYgdHJ1ZS4KKyAqIEBpbnRlcnJ1cHRpYmxlOiAgVXNlIGlu dGVycnVwdGlibGUgd2FpdC4KKyAqCisgKiBSZXR1cm5zCisgKiAtRVJFU1RBUlRTWVMgaWYgaW50 ZXJydXB0ZWQgYnkgYSBzaWduYWwuCisgKi8KK2ludCB2bXdfZG1hYnVmX3RvX3N0YXJ0X29mX3Zy YW0oc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKKwkJCQlzdHJ1Y3Qgdm13X2RtYV9idWZm ZXIgKmJ1ZiwKKwkJCQlib29sIHBpbiwgYm9vbCBpbnRlcnJ1cHRpYmxlKQoreworCXN0cnVjdCB2 bXdfbWFzdGVyICp2bWFzdGVyID0gZGV2X3ByaXYtPmFjdGl2ZV9tYXN0ZXI7CisJc3RydWN0IHR0 bV9idWZmZXJfb2JqZWN0ICpibyA9ICZidWYtPmJhc2U7CisJc3RydWN0IHR0bV9wbGFjZW1lbnQg cGxhY2VtZW50OworCWludCByZXQgPSAwOworCisJaWYgKHBpbikKKwkJcGxhY2VtZW50ID0gdm13 X3ZyYW1fbmVfcGxhY2VtZW50OworCWVsc2UKKwkJcGxhY2VtZW50ID0gdm13X3ZyYW1fcGxhY2Vt ZW50OworCXBsYWNlbWVudC5scGZuID0gYm8tPm51bV9wYWdlczsKKworCXJldCA9IHR0bV93cml0 ZV9sb2NrKCZ2bWFzdGVyLT5sb2NrLCBpbnRlcnJ1cHRpYmxlKTsKKwlpZiAodW5saWtlbHkocmV0 ICE9IDApKQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gdHRtX2JvX3Jlc2VydmUoYm8sIGludGVy cnVwdGlibGUsIGZhbHNlLCBmYWxzZSwgMCk7CisJaWYgKHVubGlrZWx5KHJldCAhPSAwKSkKKwkJ Z290byBlcnJfdW5sb2NrOworCisJLyogSXMgdGhpcyBidWZmZXIgYWxyZWFkeSBpbiB2cmFtIGJ1 dCBub3QgYXQgdGhlIHN0YXJ0IG9mIGl0PyAqLworCWlmIChiby0+bWVtLm1lbV90eXBlID09IFRU TV9QTF9WUkFNICYmCisJICAgIGJvLT5tZW0uc3RhcnQgPCBiby0+bnVtX3BhZ2VzICYmCisJICAg IGJvLT5tZW0uc3RhcnQgPiAwKQorCQkodm9pZCkgdHRtX2JvX3ZhbGlkYXRlKGJvLCAmdm13X3N5 c19wbGFjZW1lbnQsIGZhbHNlLAorCQkJCSAgICAgICBmYWxzZSwgZmFsc2UpOworCisJcmV0ID0g dHRtX2JvX3ZhbGlkYXRlKGJvLCAmcGxhY2VtZW50LCBpbnRlcnJ1cHRpYmxlLCBmYWxzZSwgZmFs c2UpOworCisJLyogRm9yIHNvbWUgcmVhc29uIHdlIGRpZG4ndCB1cCBhdCB0aGUgc3RhcnQgb2Yg dnJhbSAqLworCVdBUk5fT04ocmV0ID09IDAgJiYgYm8tPm9mZnNldCAhPSAwKTsKKworCXR0bV9i b191bnJlc2VydmUoYm8pOworZXJyX3VubG9jazoKKwl0dG1fd3JpdGVfdW5sb2NrKCZ2bWFzdGVy LT5sb2NrKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qKgorICogVW5waW4gdGhlIGJ1ZmZlciBn aXZlbiBidWZmZXIsIGRvZXMgbm90IG1vdmUgdGhlIGJ1ZmZlci4KKyAqCisgKiBNYXkgb25seSBi ZSBjYWxsZWQgYnkgdGhlIGN1cnJlbnQgbWFzdGVyIGFzIHRoaXMgZnVuY3Rpb24gdGFrZXMgdGhl CisgKiBpdHMgbG9jayBpbiB3cml0ZSBtb2RlLgorICoKKyAqIEBkZXZfcHJpdjogIERyaXZlciBw cml2YXRlLgorICogQGJ1ZjogIERNQSBidWZmZXIgdG8gdW5waW4uCisgKiBAaW50ZXJydXB0aWJs ZTogIFVzZSBpbnRlcnJ1cHRpYmxlIHdhaXQuCisgKgorICogUmV0dXJucworICogLUVSRVNUQVJU U1lTIGlmIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLgorICovCitpbnQgdm13X2RtYWJ1Zl91bnBp bihzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAorCQkgICAgIHN0cnVjdCB2bXdfZG1hX2J1 ZmZlciAqYnVmLAorCQkgICAgIGJvb2wgaW50ZXJydXB0aWJsZSkKK3sKKwkvKgorCSAqIFdlIGNv dWxkIGluIHRoZW9yeSBlYXJseSBvdXQgaWYgdGhlIGJ1ZmZlciBpcworCSAqIHVucGlubmVkIGJ1 dCB3ZSBuZWVkIHRvIGxvY2sgYW5kIHJlc2VydmUgdGhlIGJ1ZmZlcgorCSAqIGFueXdheXMgc28g d2UgZG9uJ3QgZ2FpbiBtdWNoIGJ5IHRoYXQuCisJICovCisJcmV0dXJuIHZtd19kbWFidWZfdG9f cGxhY2VtZW50KGRldl9wcml2LCBidWYsCisJCQkJICAgICAgICZ2bXdfZXZpY3RhYmxlX3BsYWNl bWVudCwKKwkJCQkgICAgICAgaW50ZXJydXB0aWJsZSk7Cit9CisKKy8qKgorICogTW92ZSBhIGJ1 ZmZlciB0byBzeXN0ZW0gbWVtb3J5LCBkb2VzIG5vdCBwaW4gdGhlIGJ1ZmZlci4KKyAqCisgKiBN YXkgb25seSBiZSBjYWxsZWQgYnkgdGhlIGN1cnJlbnQgbWFzdGVyIGFzIHRoaXMgZnVuY3Rpb24g dGFrZXMgdGhlCisgKiBpdHMgbG9jayBpbiB3cml0ZSBtb2RlLgorICoKKyAqIEBkZXZfcHJpdjog IERyaXZlciBwcml2YXRlLgorICogQGJ1ZjogIERNQSBidWZmZXIgdG8gbW92ZS4KKyAqIEBpbnRl cnJ1cHRpYmxlOiAgVXNlIGludGVycnVwdGlibGUgd2FpdC4KKyAqCisgKiBSZXR1cm5zCisgKiAt RVJFU1RBUlRTWVMgaWYgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuCisgKi8KK2ludCB2bXdfZG1h YnVmX3RvX3N5c3RlbShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAorCQkJIHN0cnVjdCB2 bXdfZG1hX2J1ZmZlciAqYnVmLAorCQkJIGJvb2wgaW50ZXJydXB0aWJsZSkKK3sKKwlyZXR1cm4g dm13X2RtYWJ1Zl90b19wbGFjZW1lbnQoZGV2X3ByaXYsIGJ1ZiwKKwkJCQkgICAgICAgJnZtd19z eXNfcGxhY2VtZW50LAorCQkJCSAgICAgICBpbnRlcnJ1cHRpYmxlKTsKK30KKwordm9pZCB2bXdf ZG1hYnVmX2dldF9pZF9vZmZzZXQoc3RydWN0IHZtd19kbWFfYnVmZmVyICpidWYsCisJCQkgICAg ICB1aW50MzJfdCAqZ21ySWQsIHVpbnQzMl90ICpvZmZzZXQpCit7CisJaWYgKGJ1Zi0+YmFzZS5t ZW0ubWVtX3R5cGUgPT0gVFRNX1BMX1ZSQU0pIHsKKwkJKmdtcklkID0gU1ZHQV9HTVJfRlJBTUVC VUZGRVI7CisJCSpvZmZzZXQgPSBidWYtPmJhc2Uub2Zmc2V0OworCX0gZWxzZSB7CisJCSpnbXJJ ZCA9IGJ1Zi0+YmFzZS5tZW0uc3RhcnQ7CisJCSpvZmZzZXQgPSAwOworCX0KK30KKwordm9pZCB2 bXdfZG1hYnVmX2dldF9ndWVzdF9wdHIoc3RydWN0IHZtd19kbWFfYnVmZmVyICpidWYsIFNWR0FH dWVzdFB0ciAqcHRyKQoreworCWlmIChidWYtPmJhc2UubWVtLm1lbV90eXBlID09IFRUTV9QTF9W UkFNKSB7CisJCXB0ci0+Z21ySWQgPSBTVkdBX0dNUl9GUkFNRUJVRkZFUjsKKwkJcHRyLT5vZmZz ZXQgPSBidWYtPmJhc2Uub2Zmc2V0OworCX0gZWxzZSB7CisJCXB0ci0+Z21ySWQgPSBidWYtPmJh c2UubWVtLnN0YXJ0OworCQlwdHItPm9mZnNldCA9IDA7CisJfQorfQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4 L3Ztd2dmeF9kcnYuaAppbmRleCBlZGQxZTgzLi41YWNmMWYyIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4 L3Ztd2dmeF9kcnYuaApAQCAtMzg1LDEwICszODUsNiBAQCBleHRlcm4gdWludDMyX3Qgdm13X2Rt YWJ1Zl92YWxpZGF0ZV9ub2RlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCiBleHRlcm4g dm9pZCB2bXdfZG1hYnVmX3ZhbGlkYXRlX2NsZWFyKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAq Ym8pOwogZXh0ZXJuIGludCB2bXdfdXNlcl9kbWFidWZfbG9va3VwKHN0cnVjdCB0dG1fb2JqZWN0 X2ZpbGUgKnRmaWxlLAogCQkJCSAgdWludDMyX3QgaWQsIHN0cnVjdCB2bXdfZG1hX2J1ZmZlciAq Km91dCk7Ci1leHRlcm4gaW50IHZtd19kbWFidWZfdG9fc3RhcnRfb2ZfdnJhbShzdHJ1Y3Qgdm13 X3ByaXZhdGUgKnZtd19wcml2LAotCQkJCSAgICAgICBzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKmJv KTsKLWV4dGVybiBpbnQgdm13X2RtYWJ1Zl9mcm9tX3ZyYW0oc3RydWN0IHZtd19wcml2YXRlICp2 bXdfcHJpdiwKLQkJCQlzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKmJvKTsKIGV4dGVybiBpbnQgdm13 X3N0cmVhbV9jbGFpbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAog CQkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogZXh0ZXJuIGludCB2bXdfc3RyZWFt X3VucmVmX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCkBAIC0zOTgs NiArMzk0LDMyIEBAIGV4dGVybiBpbnQgdm13X3VzZXJfc3RyZWFtX2xvb2t1cChzdHJ1Y3Qgdm13 X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgdWludDMyX3QgKmlub3V0X2lkLAogCQkJCSAgc3Ry dWN0IHZtd19yZXNvdXJjZSAqKm91dCk7CiAKKy8qKgorICogRE1BIGJ1ZmZlciBoZWxwZXIgcm91 dGluZXMgLSB2bXdnZnhfZG1hYnVmLmMKKyAqLworZXh0ZXJuIGludCB2bXdfZG1hYnVmX3RvX3Bs YWNlbWVudChzdHJ1Y3Qgdm13X3ByaXZhdGUgKnZtd19wcml2LAorCQkJCSAgIHN0cnVjdCB2bXdf ZG1hX2J1ZmZlciAqYm8sCisJCQkJICAgc3RydWN0IHR0bV9wbGFjZW1lbnQgKnBsYWNlbWVudCwK KwkJCQkgICBib29sIGludGVycnVwdGlibGUpOworZXh0ZXJuIGludCB2bXdfZG1hYnVmX3RvX3Zy YW0oc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgICAgIHN0cnVjdCB2bXdfZG1h X2J1ZmZlciAqYnVmLAorCQkJICAgICAgYm9vbCBwaW4sIGJvb2wgaW50ZXJydXB0aWJsZSk7Citl eHRlcm4gaW50IHZtd19kbWFidWZfdG9fdnJhbV9vcl9nbXIoc3RydWN0IHZtd19wcml2YXRlICpk ZXZfcHJpdiwKKwkJCQkgICAgIHN0cnVjdCB2bXdfZG1hX2J1ZmZlciAqYnVmLAorCQkJCSAgICAg Ym9vbCBwaW4sIGJvb2wgaW50ZXJydXB0aWJsZSk7CitleHRlcm4gaW50IHZtd19kbWFidWZfdG9f c3RhcnRfb2ZfdnJhbShzdHJ1Y3Qgdm13X3ByaXZhdGUgKnZtd19wcml2LAorCQkJCSAgICAgICBz dHJ1Y3Qgdm13X2RtYV9idWZmZXIgKmJvLAorCQkJCSAgICAgICBib29sIHBpbiwgYm9vbCBpbnRl cnJ1cHRpYmxlKTsKK2V4dGVybiBpbnQgdm13X2RtYWJ1Zl91bnBpbihzdHJ1Y3Qgdm13X3ByaXZh dGUgKnZtd19wcml2LAorCQkJICAgIHN0cnVjdCB2bXdfZG1hX2J1ZmZlciAqYm8sCisJCQkgICAg Ym9vbCBpbnRlcnJ1cHRpYmxlKTsKK2V4dGVybiBpbnQgdm13X2RtYWJ1Zl90b19zeXN0ZW0oc3Ry dWN0IHZtd19wcml2YXRlICp2bXdfcHJpdiwKKwkJCQlzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKmJv LAorCQkJCWJvb2wgaW50ZXJydXB0aWJsZSk7CitleHRlcm4gdm9pZCB2bXdfZG1hYnVmX2dldF9p ZF9vZmZzZXQoc3RydWN0IHZtd19kbWFfYnVmZmVyICpidWYsCisJCQkJICAgICB1aW50MzJfdCAq Z21ySWQsIHVpbnQzMl90ICpvZmZzZXQpOworZXh0ZXJuIHZvaWQgdm13X2RtYWJ1Zl9nZXRfZ3Vl c3RfcHRyKHN0cnVjdCB2bXdfZG1hX2J1ZmZlciAqYnVmLAorCQkJCSAgICAgU1ZHQUd1ZXN0UHRy ICpwdHIpOwogCiAvKioKICAqIE1pc2MgSW9jdGwgZnVuY3Rpb25hbGl0eSAtIHZtd2dmeF9pb2N0 bC5jCkBAIC00NDAsNyArNDYyLDkgQEAgZXh0ZXJuIHN0cnVjdCB0dG1fcGxhY2VtZW50IHZtd192 cmFtX3BsYWNlbWVudDsKIGV4dGVybiBzdHJ1Y3QgdHRtX3BsYWNlbWVudCB2bXdfdnJhbV9uZV9w bGFjZW1lbnQ7CiBleHRlcm4gc3RydWN0IHR0bV9wbGFjZW1lbnQgdm13X3ZyYW1fc3lzX3BsYWNl bWVudDsKIGV4dGVybiBzdHJ1Y3QgdHRtX3BsYWNlbWVudCB2bXdfdnJhbV9nbXJfcGxhY2VtZW50 OworZXh0ZXJuIHN0cnVjdCB0dG1fcGxhY2VtZW50IHZtd192cmFtX2dtcl9uZV9wbGFjZW1lbnQ7 CiBleHRlcm4gc3RydWN0IHR0bV9wbGFjZW1lbnQgdm13X3N5c19wbGFjZW1lbnQ7CitleHRlcm4g c3RydWN0IHR0bV9wbGFjZW1lbnQgdm13X2V2aWN0YWJsZV9wbGFjZW1lbnQ7CiBleHRlcm4gc3Ry dWN0IHR0bV9ib19kcml2ZXIgdm13X2JvX2RyaXZlcjsKIGV4dGVybiBpbnQgdm13X2RtYV9xdWll c2NlbnQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS92bXdnZngvdm13Z2Z4X2ZiLmMgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9m Yi5jCmluZGV4IGIxODg4ZTguLjE5MWYxYjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92 bXdnZngvdm13Z2Z4X2ZiLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZmIu YwpAQCAtNTkyLDU4ICs1OTIsNiBAQCBpbnQgdm13X2ZiX2Nsb3NlKHN0cnVjdCB2bXdfcHJpdmF0 ZSAqdm13X3ByaXYpCiAJcmV0dXJuIDA7CiB9CiAKLWludCB2bXdfZG1hYnVmX2Zyb21fdnJhbShz dHJ1Y3Qgdm13X3ByaXZhdGUgKnZtd19wcml2LAotCQkJIHN0cnVjdCB2bXdfZG1hX2J1ZmZlciAq dm13X2JvKQotewotCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSAmdm13X2JvLT5iYXNl OwotCWludCByZXQgPSAwOwotCi0JcmV0ID0gdHRtX2JvX3Jlc2VydmUoYm8sIGZhbHNlLCBmYWxz ZSwgZmFsc2UsIDApOwotCWlmICh1bmxpa2VseShyZXQgIT0gMCkpCi0JCXJldHVybiByZXQ7Ci0K LQlyZXQgPSB0dG1fYm9fdmFsaWRhdGUoYm8sICZ2bXdfc3lzX3BsYWNlbWVudCwgZmFsc2UsIGZh bHNlLCBmYWxzZSk7Ci0JdHRtX2JvX3VucmVzZXJ2ZShibyk7Ci0KLQlyZXR1cm4gcmV0OwotfQot Ci1pbnQgdm13X2RtYWJ1Zl90b19zdGFydF9vZl92cmFtKHN0cnVjdCB2bXdfcHJpdmF0ZSAqdm13 X3ByaXYsCi0JCQkJc3RydWN0IHZtd19kbWFfYnVmZmVyICp2bXdfYm8pCi17Ci0Jc3RydWN0IHR0 bV9idWZmZXJfb2JqZWN0ICpibyA9ICZ2bXdfYm8tPmJhc2U7Ci0Jc3RydWN0IHR0bV9wbGFjZW1l bnQgbmVfcGxhY2VtZW50ID0gdm13X3ZyYW1fbmVfcGxhY2VtZW50OwotCWludCByZXQgPSAwOwot Ci0JbmVfcGxhY2VtZW50LmxwZm4gPSBiby0+bnVtX3BhZ2VzOwotCi0JLyogaW50ZXJ1cHRhYmxl PyAqLwotCXJldCA9IHR0bV93cml0ZV9sb2NrKCZ2bXdfcHJpdi0+YWN0aXZlX21hc3Rlci0+bG9j aywgZmFsc2UpOwotCWlmICh1bmxpa2VseShyZXQgIT0gMCkpCi0JCXJldHVybiByZXQ7Ci0KLQly ZXQgPSB0dG1fYm9fcmVzZXJ2ZShibywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7Ci0JaWYgKHVu bGlrZWx5KHJldCAhPSAwKSkKLQkJZ290byBlcnJfdW5sb2NrOwotCi0JaWYgKGJvLT5tZW0ubWVt X3R5cGUgPT0gVFRNX1BMX1ZSQU0gJiYKLQkgICAgYm8tPm1lbS5zdGFydCA8IGJvLT5udW1fcGFn ZXMgJiYKLQkgICAgYm8tPm1lbS5zdGFydCA+IDApCi0JCSh2b2lkKSB0dG1fYm9fdmFsaWRhdGUo Ym8sICZ2bXdfc3lzX3BsYWNlbWVudCwgZmFsc2UsCi0JCQkJICAgICAgIGZhbHNlLCBmYWxzZSk7 Ci0KLQlyZXQgPSB0dG1fYm9fdmFsaWRhdGUoYm8sICZuZV9wbGFjZW1lbnQsIGZhbHNlLCBmYWxz ZSwgZmFsc2UpOwotCi0JLyogQ291bGQgcHJvYmFibHkgYnVnIG9uICovCi0JV0FSTl9PTihiby0+ b2Zmc2V0ICE9IDApOwotCi0JdHRtX2JvX3VucmVzZXJ2ZShibyk7Ci1lcnJfdW5sb2NrOgotCXR0 bV93cml0ZV91bmxvY2soJnZtd19wcml2LT5hY3RpdmVfbWFzdGVyLT5sb2NrKTsKLQotCXJldHVy biByZXQ7Ci19Ci0KIGludCB2bXdfZmJfb2ZmKHN0cnVjdCB2bXdfcHJpdmF0ZSAqdm13X3ByaXYp CiB7CiAJc3RydWN0IGZiX2luZm8gKmluZm87CkBAIC02NjUsNyArNjEzLDggQEAgaW50IHZtd19m Yl9vZmYoc3RydWN0IHZtd19wcml2YXRlICp2bXdfcHJpdikKIAlwYXItPmJvX3B0ciA9IE5VTEw7 CiAJdHRtX2JvX2t1bm1hcCgmcGFyLT5tYXApOwogCi0Jdm13X2RtYWJ1Zl9mcm9tX3ZyYW0odm13 X3ByaXYsIHBhci0+dm13X2JvKTsKKwkvKiBtb3ZlIHRoaXMgdG8gc3lzdGVtIGluc3RlYWQgb2Yg anVzdCB1bnBpbm5pbmcgaXQgKi8KKwl2bXdfZG1hYnVmX3RvX3N5c3RlbSh2bXdfcHJpdiwgcGFy LT52bXdfYm8sIGZhbHNlKTsKIAogCXJldHVybiAwOwogfQpAQCAtNjkxLDcgKzY0MCw3IEBAIGlu dCB2bXdfZmJfb24oc3RydWN0IHZtd19wcml2YXRlICp2bXdfcHJpdikKIAkvKiBNYWtlIHN1cmUg dGhhdCBhbGwgb3ZlcmxheXMgYXJlIHN0b3BlZCB3aGVuIHdlIHRha2Ugb3ZlciAqLwogCXZtd19v dmVybGF5X3N0b3BfYWxsKHZtd19wcml2KTsKIAotCXJldCA9IHZtd19kbWFidWZfdG9fc3RhcnRf b2ZfdnJhbSh2bXdfcHJpdiwgcGFyLT52bXdfYm8pOworCXJldCA9IHZtd19kbWFidWZfdG9fc3Rh cnRfb2ZfdnJhbSh2bXdfcHJpdiwgcGFyLT52bXdfYm8sIHRydWUsIGZhbHNlKTsKIAlpZiAodW5s aWtlbHkocmV0ICE9IDApKSB7CiAJCURSTV9FUlJPUigiY291bGQgbm90IG1vdmUgYnVmZmVyIHRv IHN0YXJ0IG9mIFZSQU1cbiIpOwogCQlnb3RvIGVycl9ub19idWZmZXI7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdn Zngvdm13Z2Z4X2ttcy5jCmluZGV4IGMzNDg2NmEuLmIzZDUxMjAgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdn Zngvdm13Z2Z4X2ttcy5jCkBAIC04MDQsNyArODA0LDcgQEAgc3RhdGljIGludCB2bXdfZnJhbWVi dWZmZXJfZG1hYnVmX3BpbihzdHJ1Y3Qgdm13X2ZyYW1lYnVmZmVyICp2ZmIpCiAKIAl2bXdfb3Zl cmxheV9wYXVzZV9hbGwoZGV2X3ByaXYpOwogCi0JcmV0ID0gdm13X2RtYWJ1Zl90b19zdGFydF9v Zl92cmFtKGRldl9wcml2LCB2ZmJkLT5idWZmZXIpOworCXJldCA9IHZtd19kbWFidWZfdG9fc3Rh cnRfb2ZfdnJhbShkZXZfcHJpdiwgdmZiZC0+YnVmZmVyLCB0cnVlLCBmYWxzZSk7CiAKIAl2bXdf b3ZlcmxheV9yZXN1bWVfYWxsKGRldl9wcml2KTsKIApAQCAtODI0LDcgKzgyNCw3IEBAIHN0YXRp YyBpbnQgdm13X2ZyYW1lYnVmZmVyX2RtYWJ1Zl91bnBpbihzdHJ1Y3Qgdm13X2ZyYW1lYnVmZmVy ICp2ZmIpCiAJCXJldHVybiAwOwogCX0KIAotCXJldHVybiB2bXdfZG1hYnVmX2Zyb21fdnJhbShk ZXZfcHJpdiwgdmZiZC0+YnVmZmVyKTsKKwlyZXR1cm4gdm13X2RtYWJ1Zl91bnBpbihkZXZfcHJp diwgdmZiZC0+YnVmZmVyLCBmYWxzZSk7CiB9CiAKIHN0YXRpYyBpbnQgdm13X2ttc19uZXdfZnJh bWVidWZmZXJfZG1hYnVmKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9vdmVybGF5LmMgYi9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9vdmVybGF5LmMKaW5kZXggMDdjZTAyZC4uN2E3YWJjZCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfb3ZlcmxheS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X292ZXJsYXkuYwpAQCAtODcsNDggKzg3LDYgQEAgc3Rh dGljIGlubGluZSB2b2lkIGZpbGxfZmx1c2goc3RydWN0IHZtd19lc2NhcGVfdmlkZW9fZmx1c2gg KmNtZCwKIH0KIAogLyoqCi0gKiBQaW4gb3IgdW5waW4gYSBidWZmZXIgaW4gdnJhbS4KLSAqCi0g KiBAZGV2X3ByaXY6ICBEcml2ZXIgcHJpdmF0ZS4KLSAqIEBidWY6ICBETUEgYnVmZmVyIHRvIHBp biBvciB1bnBpbi4KLSAqIEBwaW46ICBQaW4gYnVmZmVyIGluIHZyYW0gaWYgdHJ1ZS4KLSAqIEBp bnRlcnJ1cHRpYmxlOiAgVXNlIGludGVycnVwdGlibGUgd2FpdC4KLSAqCi0gKiBUYWtlcyB0aGUg Y3VycmVudCBtYXN0ZXJzIHR0bSBsb2NrIGluIHJlYWQuCi0gKgotICogUmV0dXJucwotICogLUVS RVNUQVJUU1lTIGlmIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLgotICovCi1zdGF0aWMgaW50IHZt d19kbWFidWZfcGluX2luX3ZyYW0oc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKLQkJCQkg IHN0cnVjdCB2bXdfZG1hX2J1ZmZlciAqYnVmLAotCQkJCSAgYm9vbCBwaW4sIGJvb2wgaW50ZXJy dXB0aWJsZSkKLXsKLQlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvID0gJmJ1Zi0+YmFzZTsK LQlzdHJ1Y3QgdHRtX3BsYWNlbWVudCAqb3ZlcmxheV9wbGFjZW1lbnQgPSAmdm13X3ZyYW1fcGxh Y2VtZW50OwotCWludCByZXQ7Ci0KLQlyZXQgPSB0dG1fcmVhZF9sb2NrKCZkZXZfcHJpdi0+YWN0 aXZlX21hc3Rlci0+bG9jaywgaW50ZXJydXB0aWJsZSk7Ci0JaWYgKHVubGlrZWx5KHJldCAhPSAw KSkKLQkJcmV0dXJuIHJldDsKLQotCXJldCA9IHR0bV9ib19yZXNlcnZlKGJvLCBpbnRlcnJ1cHRp YmxlLCBmYWxzZSwgZmFsc2UsIDApOwotCWlmICh1bmxpa2VseShyZXQgIT0gMCkpCi0JCWdvdG8g ZXJyOwotCi0JaWYgKHBpbikKLQkJb3ZlcmxheV9wbGFjZW1lbnQgPSAmdm13X3ZyYW1fbmVfcGxh Y2VtZW50OwotCi0JcmV0ID0gdHRtX2JvX3ZhbGlkYXRlKGJvLCBvdmVybGF5X3BsYWNlbWVudCwg aW50ZXJydXB0aWJsZSwgZmFsc2UsIGZhbHNlKTsKLQotCXR0bV9ib191bnJlc2VydmUoYm8pOwot Ci1lcnI6Ci0JdHRtX3JlYWRfdW5sb2NrKCZkZXZfcHJpdi0+YWN0aXZlX21hc3Rlci0+bG9jayk7 Ci0KLQlyZXR1cm4gcmV0OwotfQotCi0vKioKICAqIFNlbmQgcHV0IGNvbW1hbmQgdG8gaHcuCiAg KgogICogUmV0dXJucwpAQCAtMjQ4LDYgKzIwNiwyMSBAQCBzdGF0aWMgaW50IHZtd19vdmVybGF5 X3NlbmRfc3RvcChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogfQogCiAvKioKKyAqIE1v dmUgYSBidWZmZXIgdG8gdnJhbSwgYW5kIHBpbiBpdCBpZiBAcGluLgorICoKKyAqIFhYWDogVGhp cyBmdW5jdGlvbiBpcyBoZXJlIHRvIGJlIGNoYW5nZWQgYXQgYSBsYXRlciBkYXRlLgorICovCitz dGF0aWMgaW50IHZtd19vdmVybGF5X21vdmVfYnVmZmVyKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2 X3ByaXYsCisJCQkJICAgc3RydWN0IHZtd19kbWFfYnVmZmVyICpidWYsCisJCQkJICAgYm9vbCBw aW4sIGJvb2wgaW50ZXIpCit7CisJaWYgKHBpbikKKwkJcmV0dXJuIHZtd19kbWFidWZfdG9fdnJh bShkZXZfcHJpdiwgYnVmLCB0cnVlLCBpbnRlcik7CisJZWxzZQorCQlyZXR1cm4gdm13X2RtYWJ1 Zl91bnBpbihkZXZfcHJpdiwgYnVmLCBpbnRlcik7Cit9CisKKy8qKgogICogU3RvcCBvciBwYXVz ZSBhIHN0cmVhbS4KICAqCiAgKiBJZiB0aGUgc3RyZWFtIGlzIHBhdXNlZCB0aGUgbm8gZXZpY3Qg ZmxhZyBpcyByZW1vdmVkIGZyb20gdGhlIGJ1ZmZlcgpAQCAtMjc5LDggKzI1Miw4IEBAIHN0YXRp YyBpbnQgdm13X292ZXJsYXlfc3RvcChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogCQkJ cmV0dXJuIHJldDsKIAogCQkvKiBXZSBqdXN0IHJlbW92ZSB0aGUgTk9fRVZJQ1QgZmxhZyBzbyBu byAtRU5PTUVNICovCi0JCXJldCA9IHZtd19kbWFidWZfcGluX2luX3ZyYW0oZGV2X3ByaXYsIHN0 cmVhbS0+YnVmLCBmYWxzZSwKLQkJCQkJICAgICBpbnRlcnJ1cHRpYmxlKTsKKwkJcmV0ID0gdm13 X292ZXJsYXlfbW92ZV9idWZmZXIoZGV2X3ByaXYsIHN0cmVhbS0+YnVmLCBmYWxzZSwKKwkJCQkJ ICAgICAgaW50ZXJydXB0aWJsZSk7CiAJCWlmIChpbnRlcnJ1cHRpYmxlICYmIHJldCA9PSAtRVJF U1RBUlRTWVMpCiAJCQlyZXR1cm4gcmV0OwogCQllbHNlCkBAIC0zNDIsNyArMzE1LDcgQEAgc3Rh dGljIGludCB2bXdfb3ZlcmxheV91cGRhdGVfc3RyZWFtKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJLyogV2UgZG9uJ3Qgc3RhcnQgdGhlIG9sZCBzdHJlYW0gaWYgd2UgYXJlIGludGVy cnVwdGVkLgogCSAqIE1pZ2h0IHJldHVybiAtRU5PTUVNIGlmIGl0IGNhbid0IGZpdCB0aGUgYnVm ZmVyIGluIHZyYW0uCiAJICovCi0JcmV0ID0gdm13X2RtYWJ1Zl9waW5faW5fdnJhbShkZXZfcHJp diwgYnVmLCB0cnVlLCBpbnRlcnJ1cHRpYmxlKTsKKwlyZXQgPSB2bXdfb3ZlcmxheV9tb3ZlX2J1 ZmZlcihkZXZfcHJpdiwgYnVmLCB0cnVlLCBpbnRlcnJ1cHRpYmxlKTsKIAlpZiAocmV0KQogCQly ZXR1cm4gcmV0OwogCkBAIC0zNTEsNyArMzI0LDggQEAgc3RhdGljIGludCB2bXdfb3ZlcmxheV91 cGRhdGVfc3RyZWFtKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCS8qIFRoaXMgb25l IG5lZWRzIHRvIGhhcHBlbiBubyBtYXR0ZXIgd2hhdC4gV2Ugb25seSByZW1vdmUKIAkJICogdGhl IE5PX0VWSUNUIGZsYWcgc28gdGhpcyBpcyBzYWZlIGZyb20gLUVOT01FTS4KIAkJICovCi0JCUJV R19PTih2bXdfZG1hYnVmX3Bpbl9pbl92cmFtKGRldl9wcml2LCBidWYsIGZhbHNlLCBmYWxzZSkg IT0gMCk7CisJCUJVR19PTih2bXdfb3ZlcmxheV9tb3ZlX2J1ZmZlcihkZXZfcHJpdiwgYnVmLCBm YWxzZSwgZmFsc2UpCisJCSAgICAgICAhPSAwKTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKLS0gCjEu Ny40LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==