From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: [PATCH 14/28] drm/vmwgfx: Introduce a pin count to allow for recursive pinning v2 Date: Wed, 12 Aug 2015 22:43:03 -0700 Message-ID: <1439444597-4664-15-git-send-email-thellstrom@vmware.com> References: <1439444597-4664-1-git-send-email-thellstrom@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx2.bahnhof.se (mx2.bahnhof.se [213.80.101.12]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6EE5D6EC0E for ; Wed, 12 Aug 2015 23:36:34 -0700 (PDT) Received: from localhost (mf.bahnhof.se [213.80.101.20]) by mx2-reinject (Postfix) with ESMTP id CB45840DEA for ; Thu, 13 Aug 2015 08:36:32 +0200 (CEST) Received: from mf2.bahnhof.se ([127.0.0.1]) by localhost (mf2.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CJTIG1gpA-HZ for ; Thu, 13 Aug 2015 08:36:24 +0200 (CEST) Received: from mail.shipmail.org (h-5-150-198-217.na.cust.bahnhof.se [5.150.198.217]) by mf2.bahnhof.se (Postfix) with ESMTP id 0B8D39401CD for ; Thu, 13 Aug 2015 08:36:23 +0200 (CEST) Received: from mail.shipmail.org (lin0.kontor.shipmail.org [127.0.0.1]) by mail.shipmail.org (Postfix) with ESMTP id 21C0B3F4005 for ; Thu, 13 Aug 2015 07:43:25 +0200 (CEST) Received: from localhost.localdomain (lin0.kontor.shipmail.org [127.0.0.1]) by mail.shipmail.org (Postfix) with ESMTP id E9EFA3F4004 for ; Thu, 13 Aug 2015 07:43:24 +0200 (CEST) In-Reply-To: <1439444597-4664-1-git-send-email-thellstrom@vmware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org djI6IEZpeCBkbWEgYnVmZmVyIHZhbGlkYXRpb24gb24gcmVzb3VyY2UgcGlubmluZy4KClNpZ25l ZC1vZmYtYnk6IFRob21hcyBIZWxsc3Ryb20gPHRoZWxsc3Ryb21Adm13YXJlLmNvbT4KUmV2aWV3 ZWQtYnk6IFNpbmNsYWlyIFllaCA8c3llaEB2bXdhcmUuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS92bXdnZngvdm13Z2Z4X2RtYWJ1Zi5jICAgfCAxODIgKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmMgICAgICB8ICAzMSAr KystLS0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5oICAgICAgfCAgMzMgKysr LS0tCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9leGVjYnVmLmMgIHwgIDgxICsrKysr KystLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9mYi5jICAgICAgIHwgICAy ICstCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9maWZvLmMgICAgIHwgICA0ICstCiBk cml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuYyAgICAgIHwgICAyICstCiBkcml2ZXJz L2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9vdmVybGF5LmMgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9yZXNvdXJjZS5jIHwgIDM2ICsrKy0tLQogOSBmaWxlcyBjaGFuZ2Vk LCAxNzkgaW5zZXJ0aW9ucygrKSwgMTk2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2RtYWJ1Zi5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfZG1hYnVmLmMKaW5kZXggOTE0YjM3NS4uNGI5MzQ0ZCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZG1hYnVmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L3Ztd2dmeC92bXdnZnhfZG1hYnVmLmMKQEAgLTMyLDI1ICszMiwyMCBAQAogCiAKIC8qKgotICog dm13X2RtYWJ1Zl90b19wbGFjZW1lbnQgLSBWYWxpZGF0ZSBhIGJ1ZmZlciB0byBwbGFjZW1lbnQu CisgKiB2bXdfZG1hYnVmX3Bpbl9pbl9wbGFjZW1lbnQgLSBWYWxpZGF0ZSBhIGJ1ZmZlciB0byBw bGFjZW1lbnQuCiAgKgogICogQGRldl9wcml2OiAgRHJpdmVyIHByaXZhdGUuCiAgKiBAYnVmOiAg RE1BIGJ1ZmZlciB0byBtb3ZlLgotICogQHBpbjogIFBpbiBidWZmZXIgaWYgdHJ1ZS4KKyAqIEBw bGFjZW1lbnQ6ICBUaGUgcGxhY2VtZW50IHRvIHBpbiBpdC4KICAqIEBpbnRlcnJ1cHRpYmxlOiAg VXNlIGludGVycnVwdGlibGUgd2FpdC4KICAqCi0gKiBNYXkgb25seSBiZSBjYWxsZWQgYnkgdGhl IGN1cnJlbnQgbWFzdGVyIHNpbmNlIGl0IGFzc3VtZXMgdGhhdCB0aGUKLSAqIG1hc3RlciBsb2Nr IGlzIHRoZSBjdXJyZW50IG1hc3RlcidzIGxvY2suCi0gKiBUaGlzIGZ1bmN0aW9uIHRha2VzIHRo ZSBtYXN0ZXIncyBsb2NrIGluIHdyaXRlIG1vZGUuCi0gKiBGbHVzaGVzIGFuZCB1bnBpbnMgdGhl IHF1ZXJ5IGJvIHRvIGF2b2lkIGZhaWx1cmVzLgotICoKICAqIFJldHVybnMKICAqICAtRVJFU1RB UlRTWVMgaWYgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuCiAgKi8KLWludCB2bXdfZG1hYnVmX3Rv X3BsYWNlbWVudChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgIHN0cnVjdCB2 bXdfZG1hX2J1ZmZlciAqYnVmLAotCQkJICAgIHN0cnVjdCB0dG1fcGxhY2VtZW50ICpwbGFjZW1l bnQsCi0JCQkgICAgYm9vbCBpbnRlcnJ1cHRpYmxlKQoraW50IHZtd19kbWFidWZfcGluX2luX3Bs YWNlbWVudChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCXN0cnVjdCB2bXdfZG1h X2J1ZmZlciAqYnVmLAorCQkJCXN0cnVjdCB0dG1fcGxhY2VtZW50ICpwbGFjZW1lbnQsCisJCQkJ Ym9vbCBpbnRlcnJ1cHRpYmxlKQogewogCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSAm YnVmLT5iYXNlOwogCWludCByZXQ7CkBAIC02Niw2ICs2MSw4IEBAIGludCB2bXdfZG1hYnVmX3Rv X3BsYWNlbWVudChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogCQlnb3RvIGVycjsKIAog CXJldCA9IHR0bV9ib192YWxpZGF0ZShibywgcGxhY2VtZW50LCBpbnRlcnJ1cHRpYmxlLCBmYWxz ZSk7CisJaWYgKCFyZXQpCisJCXZtd19ib19waW5fcmVzZXJ2ZWQoYnVmLCB0cnVlKTsKIAogCXR0 bV9ib191bnJlc2VydmUoYm8pOwogCkBAIC03NSwxMiArNzIsMTAgQEAgZXJyOgogfQogCiAvKioK LSAqIHZtd19kbWFidWZfdG9fdnJhbV9vcl9nbXIgLSBNb3ZlIGEgYnVmZmVyIHRvIHZyYW0gb3Ig Z21yLgorICogdm13X2RtYWJ1Zl9waW5faW5fdnJhbV9vcl9nbXIgLSBNb3ZlIGEgYnVmZmVyIHRv IHZyYW0gb3IgZ21yLgogICoKLSAqIE1heSBvbmx5IGJlIGNhbGxlZCBieSB0aGUgY3VycmVudCBt YXN0ZXIgc2luY2UgaXQgYXNzdW1lcyB0aGF0IHRoZQotICogbWFzdGVyIGxvY2sgaXMgdGhlIGN1 cnJlbnQgbWFzdGVyJ3MgbG9jay4KLSAqIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIG1hc3Rlcidz IGxvY2sgaW4gd3JpdGUgbW9kZS4KLSAqIEZsdXNoZXMgYW5kIHVucGlucyB0aGUgcXVlcnkgYm8g aWYgQHBpbiA9PSB0cnVlIHRvIGF2b2lkIGZhaWx1cmVzLgorICogVGhpcyBmdW5jdGlvbiB0YWtl cyB0aGUgcmVzZXJ2YXRpb25fc2VtIGluIHdyaXRlIG1vZGUuCisgKiBGbHVzaGVzIGFuZCB1bnBp bnMgdGhlIHF1ZXJ5IGJvIHRvIGF2b2lkIGZhaWx1cmVzLgogICoKICAqIEBkZXZfcHJpdjogIERy aXZlciBwcml2YXRlLgogICogQGJ1ZjogIERNQSBidWZmZXIgdG8gbW92ZS4KQEAgLTkwLDU1ICs4 NSwzNCBAQCBlcnI6CiAgKiBSZXR1cm5zCiAgKiAtRVJFU1RBUlRTWVMgaWYgaW50ZXJydXB0ZWQg YnkgYSBzaWduYWwuCiAgKi8KLWludCB2bXdfZG1hYnVmX3RvX3ZyYW1fb3JfZ21yKHN0cnVjdCB2 bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgICAgICBzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKmJ1 ZiwKLQkJCSAgICAgIGJvb2wgcGluLCBib29sIGludGVycnVwdGlibGUpCitpbnQgdm13X2RtYWJ1 Zl9waW5faW5fdnJhbV9vcl9nbXIoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkg IHN0cnVjdCB2bXdfZG1hX2J1ZmZlciAqYnVmLAorCQkJCSAgYm9vbCBpbnRlcnJ1cHRpYmxlKQog ewogCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSAmYnVmLT5iYXNlOwotCXN0cnVjdCB0 dG1fcGxhY2VtZW50ICpwbGFjZW1lbnQ7CiAJaW50IHJldDsKIAogCXJldCA9IHR0bV93cml0ZV9s b2NrKCZkZXZfcHJpdi0+cmVzZXJ2YXRpb25fc2VtLCBpbnRlcnJ1cHRpYmxlKTsKIAlpZiAodW5s aWtlbHkocmV0ICE9IDApKQogCQlyZXR1cm4gcmV0OwogCi0JaWYgKHBpbikKLQkJdm13X2V4ZWNi dWZfcmVsZWFzZV9waW5uZWRfYm8oZGV2X3ByaXYpOworCXZtd19leGVjYnVmX3JlbGVhc2VfcGlu bmVkX2JvKGRldl9wcml2KTsKIAogCXJldCA9IHR0bV9ib19yZXNlcnZlKGJvLCBpbnRlcnJ1cHRp YmxlLCBmYWxzZSwgZmFsc2UsIE5VTEwpOwogCWlmICh1bmxpa2VseShyZXQgIT0gMCkpCiAJCWdv dG8gZXJyOwogCi0JLyoqCi0JICogUHV0IEJPIGluIFZSQU0gaWYgdGhlcmUgaXMgc3BhY2UsIG90 aGVyd2lzZSBhcyBhIEdNUi4KLQkgKiBJZiB0aGVyZSBpcyBubyBzcGFjZSBpbiBWUkFNIGFuZCBH TVIgaWRzIGFyZSBhbGwgdXNlZCB1cCwKLQkgKiBzdGFydCBldmljdGluZyBHTVJzIHRvIG1ha2Ug cm9vbS4gSWYgdGhlIERNQSBidWZmZXIgY2FuJ3QgYmUKLQkgKiB1c2VkIGFzIGEgR01SLCB0aGlz IHdpbGwgcmV0dXJuIC1FTk9NRU0uCi0JICovCi0KLQlpZiAocGluKQotCQlwbGFjZW1lbnQgPSAm dm13X3ZyYW1fZ21yX25lX3BsYWNlbWVudDsKLQllbHNlCi0JCXBsYWNlbWVudCA9ICZ2bXdfdnJh bV9nbXJfcGxhY2VtZW50OwotCi0JcmV0ID0gdHRtX2JvX3ZhbGlkYXRlKGJvLCBwbGFjZW1lbnQs IGludGVycnVwdGlibGUsIGZhbHNlKTsKKwlyZXQgPSB0dG1fYm9fdmFsaWRhdGUoYm8sICZ2bXdf dnJhbV9nbXJfcGxhY2VtZW50LCBpbnRlcnJ1cHRpYmxlLAorCQkJICAgICAgZmFsc2UpOwogCWlm IChsaWtlbHkocmV0ID09IDApIHx8IHJldCA9PSAtRVJFU1RBUlRTWVMpCi0JCWdvdG8gZXJyX3Vu cmVzZXJ2ZTsKLQorCQlnb3RvIG91dF91bnJlc2VydmU7CiAKLQkvKioKLQkgKiBJZiB0aGF0IGZh aWxlZCwgdHJ5IFZSQU0gYWdhaW4sIHRoaXMgdGltZSBldmljdGluZwotCSAqIHByZXZpb3VzIGNv bnRlbnRzLgotCSAqLwotCi0JaWYgKHBpbikKLQkJcGxhY2VtZW50ID0gJnZtd192cmFtX25lX3Bs YWNlbWVudDsKLQllbHNlCi0JCXBsYWNlbWVudCA9ICZ2bXdfdnJhbV9wbGFjZW1lbnQ7CisJcmV0 ID0gdHRtX2JvX3ZhbGlkYXRlKGJvLCAmdm13X3ZyYW1fcGxhY2VtZW50LCBpbnRlcnJ1cHRpYmxl LCBmYWxzZSk7CiAKLQlyZXQgPSB0dG1fYm9fdmFsaWRhdGUoYm8sIHBsYWNlbWVudCwgaW50ZXJy dXB0aWJsZSwgZmFsc2UpOworb3V0X3VucmVzZXJ2ZToKKwlpZiAoIXJldCkKKwkJdm13X2JvX3Bp bl9yZXNlcnZlZChidWYsIHRydWUpOwogCi1lcnJfdW5yZXNlcnZlOgogCXR0bV9ib191bnJlc2Vy dmUoYm8pOwogZXJyOgogCXR0bV93cml0ZV91bmxvY2soJmRldl9wcml2LT5yZXNlcnZhdGlvbl9z ZW0pOwpAQCAtMTQ2LDY3ICsxMjAsNTAgQEAgZXJyOgogfQogCiAvKioKLSAqIHZtd19kbWFidWZf dG9fdnJhbSAtIE1vdmUgYSBidWZmZXIgdG8gdnJhbS4KKyAqIHZtd19kbWFidWZfcGluX2luX3Zy YW0gLSBNb3ZlIGEgYnVmZmVyIHRvIHZyYW0uCiAgKgotICogTWF5IG9ubHkgYmUgY2FsbGVkIGJ5 IHRoZSBjdXJyZW50IG1hc3RlciBzaW5jZSBpdCBhc3N1bWVzIHRoYXQgdGhlCi0gKiBtYXN0ZXIg bG9jayBpcyB0aGUgY3VycmVudCBtYXN0ZXIncyBsb2NrLgotICogVGhpcyBmdW5jdGlvbiB0YWtl cyB0aGUgbWFzdGVyJ3MgbG9jayBpbiB3cml0ZSBtb2RlLgorICogVGhpcyBmdW5jdGlvbiB0YWtl cyB0aGUgcmVzZXJ2YXRpb25fc2VtIGluIHdyaXRlIG1vZGUuCisgKiBGbHVzaGVzIGFuZCB1bnBp bnMgdGhlIHF1ZXJ5IGJvIHRvIGF2b2lkIGZhaWx1cmVzLgogICoKICAqIEBkZXZfcHJpdjogIERy aXZlciBwcml2YXRlLgogICogQGJ1ZjogIERNQSBidWZmZXIgdG8gbW92ZS4KLSAqIEBwaW46ICBQ aW4gYnVmZmVyIGluIHZyYW0gaWYgdHJ1ZS4KICAqIEBpbnRlcnJ1cHRpYmxlOiAgVXNlIGludGVy cnVwdGlibGUgd2FpdC4KICAqCiAgKiBSZXR1cm5zCiAgKiAtRVJFU1RBUlRTWVMgaWYgaW50ZXJy dXB0ZWQgYnkgYSBzaWduYWwuCiAgKi8KLWludCB2bXdfZG1hYnVmX3RvX3ZyYW0oc3RydWN0IHZt d19wcml2YXRlICpkZXZfcHJpdiwKLQkJICAgICAgIHN0cnVjdCB2bXdfZG1hX2J1ZmZlciAqYnVm LAotCQkgICAgICAgYm9vbCBwaW4sIGJvb2wgaW50ZXJydXB0aWJsZSkKK2ludCB2bXdfZG1hYnVm X3Bpbl9pbl92cmFtKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICBzdHJ1Y3Qg dm13X2RtYV9idWZmZXIgKmJ1ZiwKKwkJCSAgIGJvb2wgaW50ZXJydXB0aWJsZSkKIHsKLQlzdHJ1 Y3QgdHRtX3BsYWNlbWVudCAqcGxhY2VtZW50OwotCi0JaWYgKHBpbikKLQkJcGxhY2VtZW50ID0g JnZtd192cmFtX25lX3BsYWNlbWVudDsKLQllbHNlCi0JCXBsYWNlbWVudCA9ICZ2bXdfdnJhbV9w bGFjZW1lbnQ7Ci0KLQlyZXR1cm4gdm13X2RtYWJ1Zl90b19wbGFjZW1lbnQoZGV2X3ByaXYsIGJ1 ZiwKLQkJCQkgICAgICAgcGxhY2VtZW50LAotCQkJCSAgICAgICBpbnRlcnJ1cHRpYmxlKTsKKwly ZXR1cm4gdm13X2RtYWJ1Zl9waW5faW5fcGxhY2VtZW50KGRldl9wcml2LCBidWYsICZ2bXdfdnJh bV9wbGFjZW1lbnQsCisJCQkJCSAgIGludGVycnVwdGlibGUpOwogfQogCiAvKioKLSAqIHZtd19k bWFidWZfdG9fc3RhcnRfb2ZfdnJhbSAtIE1vdmUgYSBidWZmZXIgdG8gc3RhcnQgb2YgdnJhbS4K KyAqIHZtd19kbWFidWZfcGluX2luX3N0YXJ0X29mX3ZyYW0gLSBNb3ZlIGEgYnVmZmVyIHRvIHN0 YXJ0IG9mIHZyYW0uCiAgKgotICogTWF5IG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBjdXJyZW50IG1h c3RlciBzaW5jZSBpdCBhc3N1bWVzIHRoYXQgdGhlCi0gKiBtYXN0ZXIgbG9jayBpcyB0aGUgY3Vy cmVudCBtYXN0ZXIncyBsb2NrLgotICogVGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgbWFzdGVyJ3Mg bG9jayBpbiB3cml0ZSBtb2RlLgotICogRmx1c2hlcyBhbmQgdW5waW5zIHRoZSBxdWVyeSBibyBp ZiBAcGluID09IHRydWUgdG8gYXZvaWQgZmFpbHVyZXMuCisgKiBUaGlzIGZ1bmN0aW9uIHRha2Vz IHRoZSByZXNlcnZhdGlvbl9zZW0gaW4gd3JpdGUgbW9kZS4KKyAqIEZsdXNoZXMgYW5kIHVucGlu cyB0aGUgcXVlcnkgYm8gdG8gYXZvaWQgZmFpbHVyZXMuCiAgKgogICogQGRldl9wcml2OiAgRHJp dmVyIHByaXZhdGUuCi0gKiBAYnVmOiAgRE1BIGJ1ZmZlciB0byBtb3ZlLgotICogQHBpbjogIFBp biBidWZmZXIgaW4gdnJhbSBpZiB0cnVlLgorICogQGJ1ZjogIERNQSBidWZmZXIgdG8gcGluLgog ICogQGludGVycnVwdGlibGU6ICBVc2UgaW50ZXJydXB0aWJsZSB3YWl0LgogICoKICAqIFJldHVy bnMKICAqIC1FUkVTVEFSVFNZUyBpZiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4KICAqLwotaW50 IHZtd19kbWFidWZfdG9fc3RhcnRfb2ZfdnJhbShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2 LAotCQkJCXN0cnVjdCB2bXdfZG1hX2J1ZmZlciAqYnVmLAotCQkJCWJvb2wgcGluLCBib29sIGlu dGVycnVwdGlibGUpCitpbnQgdm13X2RtYWJ1Zl9waW5faW5fc3RhcnRfb2ZfdnJhbShzdHJ1Y3Qg dm13X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCSAgICBzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKmJ1 ZiwKKwkJCQkgICAgYm9vbCBpbnRlcnJ1cHRpYmxlKQogewogCXN0cnVjdCB0dG1fYnVmZmVyX29i amVjdCAqYm8gPSAmYnVmLT5iYXNlOwogCXN0cnVjdCB0dG1fcGxhY2VtZW50IHBsYWNlbWVudDsK IAlzdHJ1Y3QgdHRtX3BsYWNlIHBsYWNlOwogCWludCByZXQgPSAwOwogCi0JaWYgKHBpbikKLQkJ cGxhY2UgPSB2bXdfdnJhbV9uZV9wbGFjZW1lbnQucGxhY2VtZW50WzBdOwotCWVsc2UKLQkJcGxh Y2UgPSB2bXdfdnJhbV9wbGFjZW1lbnQucGxhY2VtZW50WzBdOworCXBsYWNlID0gdm13X3ZyYW1f cGxhY2VtZW50LnBsYWNlbWVudFswXTsKIAlwbGFjZS5scGZuID0gYm8tPm51bV9wYWdlczsKLQog CXBsYWNlbWVudC5udW1fcGxhY2VtZW50ID0gMTsKIAlwbGFjZW1lbnQucGxhY2VtZW50ID0gJnBs YWNlOwogCXBsYWNlbWVudC5udW1fYnVzeV9wbGFjZW1lbnQgPSAxOwpAQCAtMjE2LDEzICsxNzMs MTYgQEAgaW50IHZtd19kbWFidWZfdG9fc3RhcnRfb2ZfdnJhbShzdHJ1Y3Qgdm13X3ByaXZhdGUg KmRldl9wcml2LAogCWlmICh1bmxpa2VseShyZXQgIT0gMCkpCiAJCXJldHVybiByZXQ7CiAKLQlp ZiAocGluKQotCQl2bXdfZXhlY2J1Zl9yZWxlYXNlX3Bpbm5lZF9ibyhkZXZfcHJpdik7CisJdm13 X2V4ZWNidWZfcmVsZWFzZV9waW5uZWRfYm8oZGV2X3ByaXYpOwogCXJldCA9IHR0bV9ib19yZXNl cnZlKGJvLCBpbnRlcnJ1cHRpYmxlLCBmYWxzZSwgZmFsc2UsIE5VTEwpOwogCWlmICh1bmxpa2Vs eShyZXQgIT0gMCkpCiAJCWdvdG8gZXJyX3VubG9jazsKIAotCS8qIElzIHRoaXMgYnVmZmVyIGFs cmVhZHkgaW4gdnJhbSBidXQgbm90IGF0IHRoZSBzdGFydCBvZiBpdD8gKi8KKwkvKgorCSAqIElz IHRoaXMgYnVmZmVyIGFscmVhZHkgaW4gdnJhbSBidXQgbm90IGF0IHRoZSBzdGFydCBvZiBpdD8K KwkgKiBJbiB0aGF0IGNhc2UsIGV2aWN0IGl0IGZpcnN0IGJlY2F1c2UgVFRNIGlzbid0IGdvb2Qg YXQgaGFuZGxpbmcKKwkgKiB0aGF0IHNpdHVhdGlvbi4KKwkgKi8KIAlpZiAoYm8tPm1lbS5tZW1f dHlwZSA9PSBUVE1fUExfVlJBTSAmJgogCSAgICBiby0+bWVtLnN0YXJ0IDwgYm8tPm51bV9wYWdl cyAmJgogCSAgICBiby0+bWVtLnN0YXJ0ID4gMCkKQEAgLTIzMCw4ICsxOTAsMTAgQEAgaW50IHZt d19kbWFidWZfdG9fc3RhcnRfb2ZfdnJhbShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAog CiAJcmV0ID0gdHRtX2JvX3ZhbGlkYXRlKGJvLCAmcGxhY2VtZW50LCBpbnRlcnJ1cHRpYmxlLCBm YWxzZSk7CiAKLQkvKiBGb3Igc29tZSByZWFzb24gd2UgZGlkbid0IHVwIGF0IHRoZSBzdGFydCBv ZiB2cmFtICovCisJLyogRm9yIHNvbWUgcmVhc29uIHdlIGRpZG4ndCBlbmQgdXAgYXQgdGhlIHN0 YXJ0IG9mIHZyYW0gKi8KIAlXQVJOX09OKHJldCA9PSAwICYmIGJvLT5vZmZzZXQgIT0gMCk7CisJ aWYgKCFyZXQpCisJCXZtd19ib19waW5fcmVzZXJ2ZWQoYnVmLCB0cnVlKTsKIAogCXR0bV9ib191 bnJlc2VydmUoYm8pOwogZXJyX3VubG9jazoKQEAgLTI0MCwxMyArMjAyLDEwIEBAIGVycl91bmxv Y2s6CiAJcmV0dXJuIHJldDsKIH0KIAotCiAvKioKLSAqIHZtd19kbWFidWZfdXBpbiAtIFVucGlu IHRoZSBidWZmZXIgZ2l2ZW4gYnVmZmVyLCBkb2VzIG5vdCBtb3ZlIHRoZSBidWZmZXIuCisgKiB2 bXdfZG1hYnVmX3VucGluIC0gVW5waW4gdGhlIGJ1ZmZlciBnaXZlbiBidWZmZXIsIGRvZXMgbm90 IG1vdmUgdGhlIGJ1ZmZlci4KICAqCi0gKiBNYXkgb25seSBiZSBjYWxsZWQgYnkgdGhlIGN1cnJl bnQgbWFzdGVyIHNpbmNlIGl0IGFzc3VtZXMgdGhhdCB0aGUKLSAqIG1hc3RlciBsb2NrIGlzIHRo ZSBjdXJyZW50IG1hc3RlcidzIGxvY2suCi0gKiBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBtYXN0 ZXIncyBsb2NrIGluIHdyaXRlIG1vZGUuCisgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSByZXNl cnZhdGlvbl9zZW0gaW4gd3JpdGUgbW9kZS4KICAqCiAgKiBAZGV2X3ByaXY6ICBEcml2ZXIgcHJp dmF0ZS4KICAqIEBidWY6ICBETUEgYnVmZmVyIHRvIHVucGluLgpAQCAtMjU5LDE2ICsyMTgsMjUg QEAgaW50IHZtd19kbWFidWZfdW5waW4oc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKIAkJ ICAgICBzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKmJ1ZiwKIAkJICAgICBib29sIGludGVycnVwdGli bGUpCiB7Ci0JLyoKLQkgKiBXZSBjb3VsZCBpbiB0aGVvcnkgZWFybHkgb3V0IGlmIHRoZSBidWZm ZXIgaXMKLQkgKiB1bnBpbm5lZCBidXQgd2UgbmVlZCB0byBsb2NrIGFuZCByZXNlcnZlIHRoZSBi dWZmZXIKLQkgKiBhbnl3YXlzIHNvIHdlIGRvbid0IGdhaW4gbXVjaCBieSB0aGF0LgotCSAqLwot CXJldHVybiB2bXdfZG1hYnVmX3RvX3BsYWNlbWVudChkZXZfcHJpdiwgYnVmLAotCQkJCSAgICAg ICAmdm13X2V2aWN0YWJsZV9wbGFjZW1lbnQsCi0JCQkJICAgICAgIGludGVycnVwdGlibGUpOwot fQorCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSAmYnVmLT5iYXNlOworCWludCByZXQ7 CiAKKwlyZXQgPSB0dG1fcmVhZF9sb2NrKCZkZXZfcHJpdi0+cmVzZXJ2YXRpb25fc2VtLCBpbnRl cnJ1cHRpYmxlKTsKKwlpZiAodW5saWtlbHkocmV0ICE9IDApKQorCQlyZXR1cm4gcmV0OworCisJ cmV0ID0gdHRtX2JvX3Jlc2VydmUoYm8sIGludGVycnVwdGlibGUsIGZhbHNlLCBmYWxzZSwgMCk7 CisJaWYgKHVubGlrZWx5KHJldCAhPSAwKSkKKwkJZ290byBlcnI7CisKKwl2bXdfYm9fcGluX3Jl c2VydmVkKGJ1ZiwgZmFsc2UpOworCisJdHRtX2JvX3VucmVzZXJ2ZShibyk7CisKK2VycjoKKwl0 dG1fcmVhZF91bmxvY2soJmRldl9wcml2LT5yZXNlcnZhdGlvbl9zZW0pOworCXJldHVybiByZXQ7 Cit9CiAKIC8qKgogICogdm13X2JvX2dldF9ndWVzdF9wdHIgLSBHZXQgdGhlIGd1ZXN0IHB0ciBy ZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgcGxhY2VtZW50CkBAIC0yOTEsMjEgKzI1OSwzMSBAQCB2 b2lkIHZtd19ib19nZXRfZ3Vlc3RfcHRyKGNvbnN0IHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAq Ym8sCiAKIAogLyoqCi0gKiB2bXdfYm9fcGluIC0gUGluIG9yIHVucGluIGEgYnVmZmVyIG9iamVj dCB3aXRob3V0IG1vdmluZyBpdC4KKyAqIHZtd19ib19waW5fcmVzZXJ2ZWQgLSBQaW4gb3IgdW5w aW4gYSBidWZmZXIgb2JqZWN0IHdpdGhvdXQgbW92aW5nIGl0LgogICoKLSAqIEBibzogVGhlIGJ1 ZmZlciBvYmplY3QuIE11c3QgYmUgcmVzZXJ2ZWQuCisgKiBAdmJvOiBUaGUgYnVmZmVyIG9iamVj dC4gTXVzdCBiZSByZXNlcnZlZC4KICAqIEBwaW46IFdoZXRoZXIgdG8gcGluIG9yIHVucGluLgog ICoKICAqLwotdm9pZCB2bXdfYm9fcGluKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sIGJv b2wgcGluKQordm9pZCB2bXdfYm9fcGluX3Jlc2VydmVkKHN0cnVjdCB2bXdfZG1hX2J1ZmZlciAq dmJvLCBib29sIHBpbikKIHsKIAlzdHJ1Y3QgdHRtX3BsYWNlIHBsOwogCXN0cnVjdCB0dG1fcGxh Y2VtZW50IHBsYWNlbWVudDsKKwlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvID0gJnZiby0+ YmFzZTsKIAl1aW50MzJfdCBvbGRfbWVtX3R5cGUgPSBiby0+bWVtLm1lbV90eXBlOwogCWludCBy ZXQ7CiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZiby0+cmVzdi0+bG9jay5iYXNlKTsKIAorCWlm IChwaW4pIHsKKwkJaWYgKHZiby0+cGluX2NvdW50KysgPiAwKQorCQkJcmV0dXJuOworCX0gZWxz ZSB7CisJCVdBUk5fT04odmJvLT5waW5fY291bnQgPD0gMCk7CisJCWlmICgtLXZiby0+cGluX2Nv dW50ID4gMCkKKwkJCXJldHVybjsKKwl9CisKIAlwbC5mcGZuID0gMDsKIAlwbC5scGZuID0gMDsK IAlwbC5mbGFncyA9IFRUTV9QTF9GTEFHX1ZSQU0gfCBWTVdfUExfRkxBR19HTVIgfCBWTVdfUExf RkxBR19NT0IKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5j IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmMKaW5kZXggYWIxYjcwYy4uZTU1 ZGIzZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmMKQEAgLTI5OCwzMCArMjk4LDMx IEBAIHN0YXRpYyB2b2lkIHZtd19wcmludF9jYXBhYmlsaXRpZXModWludDMyX3QgY2FwYWJpbGl0 aWVzKQogc3RhdGljIGludCB2bXdfZHVtbXlfcXVlcnlfYm9fY3JlYXRlKHN0cnVjdCB2bXdfcHJp dmF0ZSAqZGV2X3ByaXYpCiB7CiAJaW50IHJldDsKLQlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3Qg KmJvOworCXN0cnVjdCB2bXdfZG1hX2J1ZmZlciAqdmJvOwogCXN0cnVjdCB0dG1fYm9fa21hcF9v YmogbWFwOwogCXZvbGF0aWxlIFNWR0EzZFF1ZXJ5UmVzdWx0ICpyZXN1bHQ7CiAJYm9vbCBkdW1t eTsKIAogCS8qCi0JICogQ3JlYXRlIHRoZSBibyBhcyBwaW5uZWQsIHNvIHRoYXQgYSB0cnlyZXNl cnZlIHdpbGwKKwkgKiBDcmVhdGUgdGhlIHZibyBhcyBwaW5uZWQsIHNvIHRoYXQgYSB0cnlyZXNl cnZlIHdpbGwKIAkgKiBpbW1lZGlhdGVseSBzdWNjZWVkLiBUaGlzIGlzIGJlY2F1c2Ugd2UncmUg dGhlIG9ubHkKIAkgKiB1c2VyIG9mIHRoZSBibyBjdXJyZW50bHkuCiAJICovCi0JcmV0ID0gdHRt X2JvX2NyZWF0ZSgmZGV2X3ByaXYtPmJkZXYsCi0JCQkgICAgUEFHRV9TSVpFLAotCQkJICAgIHR0 bV9ib190eXBlX2RldmljZSwKLQkJCSAgICAmdm13X3N5c19uZV9wbGFjZW1lbnQsCi0JCQkgICAg MCwgZmFsc2UsIE5VTEwsCi0JCQkgICAgJmJvKTsKKwl2Ym8gPSBremFsbG9jKHNpemVvZigqdmJv KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCF2Ym8pCisJCXJldHVybiAtRU5PTUVNOwogCisJcmV0ID0g dm13X2RtYWJ1Zl9pbml0KGRldl9wcml2LCB2Ym8sIFBBR0VfU0laRSwKKwkJCSAgICAgICZ2bXdf c3lzX25lX3BsYWNlbWVudCwgZmFsc2UsCisJCQkgICAgICAmdm13X2RtYWJ1Zl9ib19mcmVlKTsK IAlpZiAodW5saWtlbHkocmV0ICE9IDApKQogCQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gdHRtX2Jv X3Jlc2VydmUoYm8sIGZhbHNlLCB0cnVlLCBmYWxzZSwgTlVMTCk7CisJcmV0ID0gdHRtX2JvX3Jl c2VydmUoJnZiby0+YmFzZSwgZmFsc2UsIHRydWUsIGZhbHNlLCBOVUxMKTsKIAlCVUdfT04ocmV0 ICE9IDApOworCXZtd19ib19waW5fcmVzZXJ2ZWQodmJvLCB0cnVlKTsKIAotCXJldCA9IHR0bV9i b19rbWFwKGJvLCAwLCAxLCAmbWFwKTsKKwlyZXQgPSB0dG1fYm9fa21hcCgmdmJvLT5iYXNlLCAw LCAxLCAmbWFwKTsKIAlpZiAobGlrZWx5KHJldCA9PSAwKSkgewogCQlyZXN1bHQgPSB0dG1fa21h cF9vYmpfdmlydHVhbCgmbWFwLCAmZHVtbXkpOwogCQlyZXN1bHQtPnRvdGFsU2l6ZSA9IHNpemVv ZigqcmVzdWx0KTsKQEAgLTMyOSwxNCArMzMwLDE0IEBAIHN0YXRpYyBpbnQgdm13X2R1bW15X3F1 ZXJ5X2JvX2NyZWF0ZShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2KQogCQlyZXN1bHQtPnJl c3VsdDMyID0gMHhmZjsKIAkJdHRtX2JvX2t1bm1hcCgmbWFwKTsKIAl9Ci0Jdm13X2JvX3Bpbihi bywgZmFsc2UpOwotCXR0bV9ib191bnJlc2VydmUoYm8pOworCXZtd19ib19waW5fcmVzZXJ2ZWQo dmJvLCBmYWxzZSk7CisJdHRtX2JvX3VucmVzZXJ2ZSgmdmJvLT5iYXNlKTsKIAogCWlmICh1bmxp a2VseShyZXQgIT0gMCkpIHsKIAkJRFJNX0VSUk9SKCJEdW1teSBxdWVyeSBidWZmZXIgbWFwIGZh aWxlZC5cbiIpOwotCQl0dG1fYm9fdW5yZWYoJmJvKTsKKwkJdm13X2RtYWJ1Zl91bnJlZmVyZW5j ZSgmdmJvKTsKIAl9IGVsc2UKLQkJZGV2X3ByaXYtPmR1bW15X3F1ZXJ5X2JvID0gYm87CisJCWRl dl9wcml2LT5kdW1teV9xdWVyeV9ibyA9IHZibzsKIAogCXJldHVybiByZXQ7CiB9CkBAIC00MzQs NyArNDM1LDcgQEAgc3RhdGljIHZvaWQgdm13X3JlbGVhc2VfZGV2aWNlX2Vhcmx5KHN0cnVjdCB2 bXdfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAlCVUdfT04oZGV2X3ByaXYtPnBpbm5lZF9ibyAhPSBO VUxMKTsKIAotCXR0bV9ib191bnJlZigmZGV2X3ByaXYtPmR1bW15X3F1ZXJ5X2JvKTsKKwl2bXdf ZG1hYnVmX3VucmVmZXJlbmNlKCZkZXZfcHJpdi0+ZHVtbXlfcXVlcnlfYm8pOwogCWlmIChkZXZf cHJpdi0+Y21hbikKIAkJdm13X2NtZGJ1Zl9yZW1vdmVfcG9vbChkZXZfcHJpdi0+Y21hbik7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgKaW5kZXggNWQwNDg1OS4uMTJlYWE2YyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgKQEAgLTg1LDYgKzg1LDcgQEAgc3RydWN0IHZt d19mcHJpdiB7CiBzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgewogCXN0cnVjdCB0dG1fYnVmZmVyX29i amVjdCBiYXNlOwogCXN0cnVjdCBsaXN0X2hlYWQgcmVzX2xpc3Q7CisJczMyIHBpbl9jb3VudDsK IH07CiAKIC8qKgpAQCAtMzU4LDcgKzM1OSw3IEBAIHN0cnVjdCB2bXdfc3dfY29udGV4dHsKIAl1 aW50MzJfdCAqY21kX2JvdW5jZTsKIAl1aW50MzJfdCBjbWRfYm91bmNlX3NpemU7CiAJc3RydWN0 IGxpc3RfaGVhZCByZXNvdXJjZV9saXN0OwotCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqY3Vy X3F1ZXJ5X2JvOworCXN0cnVjdCB2bXdfZG1hX2J1ZmZlciAqY3VyX3F1ZXJ5X2JvOwogCXN0cnVj dCBsaXN0X2hlYWQgcmVzX3JlbG9jYXRpb25zOwogCXVpbnQzMl90ICpidWZfc3RhcnQ7CiAJc3Ry dWN0IHZtd19yZXNfY2FjaGVfZW50cnkgcmVzX2NhY2hlW3Ztd19yZXNfbWF4XTsKQEAgLTUzMyw4 ICs1MzQsOCBAQCBzdHJ1Y3Qgdm13X3ByaXZhdGUgewogCSAqIGFyZSBwcm90ZWN0ZWQgYnkgdGhl IGNtZGJ1ZiBtdXRleC4KIAkgKi8KIAotCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqZHVtbXlf cXVlcnlfYm87Ci0Jc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpwaW5uZWRfYm87CisJc3RydWN0 IHZtd19kbWFfYnVmZmVyICpkdW1teV9xdWVyeV9ibzsKKwlzdHJ1Y3Qgdm13X2RtYV9idWZmZXIg KnBpbm5lZF9ibzsKIAl1aW50MzJfdCBxdWVyeV9jaWQ7CiAJdWludDMyX3QgcXVlcnlfY2lkX3Zh bGlkOwogCWJvb2wgZHVtbXlfcXVlcnlfYm9fcGlubmVkOwpAQCAtNzAwLDI1ICs3MDEsMjUgQEAg ZXh0ZXJuIHZvaWQgdm13X3Jlc291cmNlX2V2aWN0X2FsbChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRl dl9wcml2KTsKIC8qKgogICogRE1BIGJ1ZmZlciBoZWxwZXIgcm91dGluZXMgLSB2bXdnZnhfZG1h YnVmLmMKICAqLwotZXh0ZXJuIGludCB2bXdfZG1hYnVmX3RvX3BsYWNlbWVudChzdHJ1Y3Qgdm13 X3ByaXZhdGUgKnZtd19wcml2LAotCQkJCSAgIHN0cnVjdCB2bXdfZG1hX2J1ZmZlciAqYm8sCi0J CQkJICAgc3RydWN0IHR0bV9wbGFjZW1lbnQgKnBsYWNlbWVudCwKLQkJCQkgICBib29sIGludGVy cnVwdGlibGUpOwotZXh0ZXJuIGludCB2bXdfZG1hYnVmX3RvX3ZyYW0oc3RydWN0IHZtd19wcml2 YXRlICpkZXZfcHJpdiwKLQkJCSAgICAgIHN0cnVjdCB2bXdfZG1hX2J1ZmZlciAqYnVmLAotCQkJ ICAgICAgYm9vbCBwaW4sIGJvb2wgaW50ZXJydXB0aWJsZSk7Ci1leHRlcm4gaW50IHZtd19kbWFi dWZfdG9fdnJhbV9vcl9nbXIoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKLQkJCQkgICAg IHN0cnVjdCB2bXdfZG1hX2J1ZmZlciAqYnVmLAotCQkJCSAgICAgYm9vbCBwaW4sIGJvb2wgaW50 ZXJydXB0aWJsZSk7Ci1leHRlcm4gaW50IHZtd19kbWFidWZfdG9fc3RhcnRfb2ZfdnJhbShzdHJ1 Y3Qgdm13X3ByaXZhdGUgKnZtd19wcml2LAorZXh0ZXJuIGludCB2bXdfZG1hYnVmX3Bpbl9pbl9w bGFjZW1lbnQoc3RydWN0IHZtd19wcml2YXRlICp2bXdfcHJpdiwKIAkJCQkgICAgICAgc3RydWN0 IHZtd19kbWFfYnVmZmVyICpibywKLQkJCQkgICAgICAgYm9vbCBwaW4sIGJvb2wgaW50ZXJydXB0 aWJsZSk7CisJCQkJICAgICAgIHN0cnVjdCB0dG1fcGxhY2VtZW50ICpwbGFjZW1lbnQsCisJCQkJ ICAgICAgIGJvb2wgaW50ZXJydXB0aWJsZSk7CitleHRlcm4gaW50IHZtd19kbWFidWZfcGluX2lu X3ZyYW0oc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkgIHN0cnVjdCB2bXdfZG1h X2J1ZmZlciAqYnVmLAorCQkJCSAgYm9vbCBpbnRlcnJ1cHRpYmxlKTsKK2V4dGVybiBpbnQgdm13 X2RtYWJ1Zl9waW5faW5fdnJhbV9vcl9nbXIoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwK KwkJCQkJIHN0cnVjdCB2bXdfZG1hX2J1ZmZlciAqYnVmLAorCQkJCQkgYm9vbCBpbnRlcnJ1cHRp YmxlKTsKK2V4dGVybiBpbnQgdm13X2RtYWJ1Zl9waW5faW5fc3RhcnRfb2ZfdnJhbShzdHJ1Y3Qg dm13X3ByaXZhdGUgKnZtd19wcml2LAorCQkJCQkgICBzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKmJv LAorCQkJCQkgICBib29sIGludGVycnVwdGlibGUpOwogZXh0ZXJuIGludCB2bXdfZG1hYnVmX3Vu cGluKHN0cnVjdCB2bXdfcHJpdmF0ZSAqdm13X3ByaXYsCiAJCQkgICAgc3RydWN0IHZtd19kbWFf YnVmZmVyICpibywKIAkJCSAgICBib29sIGludGVycnVwdGlibGUpOwogZXh0ZXJuIHZvaWQgdm13 X2JvX2dldF9ndWVzdF9wdHIoY29uc3Qgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpidWYsCiAJ CQkJIFNWR0FHdWVzdFB0ciAqcHRyKTsKLWV4dGVybiB2b2lkIHZtd19ib19waW4oc3RydWN0IHR0 bV9idWZmZXJfb2JqZWN0ICpibywgYm9vbCBwaW4pOworZXh0ZXJuIHZvaWQgdm13X2JvX3Bpbl9y ZXNlcnZlZChzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKmJvLCBib29sIHBpbik7CiAKIC8qKgogICog TWlzYyBJb2N0bCBmdW5jdGlvbmFsaXR5IC0gdm13Z2Z4X2lvY3RsLmMKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2V4ZWNidWYuYyBiL2RyaXZlcnMvZ3B1L2RybS92 bXdnZngvdm13Z2Z4X2V4ZWNidWYuYwppbmRleCAwZWM1ZmQ2Li45MmU4OTk4IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9leGVjYnVmLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL3Ztd2dmeC92bXdnZnhfZXhlY2J1Zi5jCkBAIC0zMDgsNyArMzA4LDcgQEAgc3RhdGlj IGludCB2bXdfY21kX29rKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAgKiBzdWJtaXNz aW9uIGlzIHJlYWNoZWQuCiAgKi8KIHN0YXRpYyBpbnQgdm13X2JvX3RvX3ZhbGlkYXRlX2xpc3Qo c3RydWN0IHZtd19zd19jb250ZXh0ICpzd19jb250ZXh0LAotCQkJCSAgIHN0cnVjdCB0dG1fYnVm ZmVyX29iamVjdCAqYm8sCisJCQkJICAgc3RydWN0IHZtd19kbWFfYnVmZmVyICp2Ym8sCiAJCQkJ ICAgYm9vbCB2YWxpZGF0ZV9hc19tb2IsCiAJCQkJICAgdWludDMyX3QgKnBfdmFsX25vZGUpCiB7 CkBAIC0zMTgsNyArMzE4LDcgQEAgc3RhdGljIGludCB2bXdfYm9fdG9fdmFsaWRhdGVfbGlzdChz dHJ1Y3Qgdm13X3N3X2NvbnRleHQgKnN3X2NvbnRleHQsCiAJc3RydWN0IGRybV9oYXNoX2l0ZW0g Kmhhc2g7CiAJaW50IHJldDsKIAotCWlmIChsaWtlbHkoZHJtX2h0X2ZpbmRfaXRlbSgmc3dfY29u dGV4dC0+cmVzX2h0LCAodW5zaWduZWQgbG9uZykgYm8sCisJaWYgKGxpa2VseShkcm1faHRfZmlu ZF9pdGVtKCZzd19jb250ZXh0LT5yZXNfaHQsICh1bnNpZ25lZCBsb25nKSB2Ym8sCiAJCQkJICAg ICZoYXNoKSA9PSAwKSkgewogCQl2dmFsX2J1ZiA9IGNvbnRhaW5lcl9vZihoYXNoLCBzdHJ1Y3Qg dm13X3ZhbGlkYXRlX2J1ZmZlciwKIAkJCQkJaGFzaCk7CkBAIC0zMzYsNyArMzM2LDcgQEAgc3Rh dGljIGludCB2bXdfYm9fdG9fdmFsaWRhdGVfbGlzdChzdHJ1Y3Qgdm13X3N3X2NvbnRleHQgKnN3 X2NvbnRleHQsCiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQogCQl2dmFsX2J1ZiA9ICZzd19jb250 ZXh0LT52YWxfYnVmc1t2YWxfbm9kZV07Ci0JCXZ2YWxfYnVmLT5oYXNoLmtleSA9ICh1bnNpZ25l ZCBsb25nKSBibzsKKwkJdnZhbF9idWYtPmhhc2gua2V5ID0gKHVuc2lnbmVkIGxvbmcpIHZibzsK IAkJcmV0ID0gZHJtX2h0X2luc2VydF9pdGVtKCZzd19jb250ZXh0LT5yZXNfaHQsICZ2dmFsX2J1 Zi0+aGFzaCk7CiAJCWlmICh1bmxpa2VseShyZXQgIT0gMCkpIHsKIAkJCURSTV9FUlJPUigiRmFp bGVkIHRvIGluaXRpYWxpemUgYSBidWZmZXIgdmFsaWRhdGlvbiAiCkBAIC0zNDUsNyArMzQ1LDcg QEAgc3RhdGljIGludCB2bXdfYm9fdG9fdmFsaWRhdGVfbGlzdChzdHJ1Y3Qgdm13X3N3X2NvbnRl eHQgKnN3X2NvbnRleHQsCiAJCX0KIAkJKytzd19jb250ZXh0LT5jdXJfdmFsX2J1ZjsKIAkJdmFs X2J1ZiA9ICZ2dmFsX2J1Zi0+YmFzZTsKLQkJdmFsX2J1Zi0+Ym8gPSB0dG1fYm9fcmVmZXJlbmNl KGJvKTsKKwkJdmFsX2J1Zi0+Ym8gPSB0dG1fYm9fcmVmZXJlbmNlKCZ2Ym8tPmJhc2UpOwogCQl2 YWxfYnVmLT5zaGFyZWQgPSBmYWxzZTsKIAkJbGlzdF9hZGRfdGFpbCgmdmFsX2J1Zi0+aGVhZCwg JnN3X2NvbnRleHQtPnZhbGlkYXRlX25vZGVzKTsKIAkJdnZhbF9idWYtPnZhbGlkYXRlX2FzX21v YiA9IHZhbGlkYXRlX2FzX21vYjsKQEAgLTM4MCwxMCArMzgwLDEwIEBAIHN0YXRpYyBpbnQgdm13 X3Jlc291cmNlc19yZXNlcnZlKHN0cnVjdCB2bXdfc3dfY29udGV4dCAqc3dfY29udGV4dCkKIAkJ CXJldHVybiByZXQ7CiAKIAkJaWYgKHJlcy0+YmFja3VwKSB7Ci0JCQlzdHJ1Y3QgdHRtX2J1ZmZl cl9vYmplY3QgKmJvID0gJnJlcy0+YmFja3VwLT5iYXNlOworCQkJc3RydWN0IHZtd19kbWFfYnVm ZmVyICp2Ym8gPSByZXMtPmJhY2t1cDsKIAogCQkJcmV0ID0gdm13X2JvX3RvX3ZhbGlkYXRlX2xp c3QKLQkJCQkoc3dfY29udGV4dCwgYm8sCisJCQkJKHN3X2NvbnRleHQsIHZibywKIAkJCQkgdm13 X3Jlc291cmNlX25lZWRzX2JhY2t1cChyZXMpLCBOVUxMKTsKIAogCQkJaWYgKHVubGlrZWx5KHJl dCAhPSAwKSkKQEAgLTc1OSw3ICs3NTksNyBAQCBzdGF0aWMgaW50IHZtd19jbWRfcHJlc2VudF9j aGVjayhzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogICogY29tbWFuZCBiYXRjaC4KICAq Lwogc3RhdGljIGludCB2bXdfcXVlcnlfYm9fc3dpdGNoX3ByZXBhcmUoc3RydWN0IHZtd19wcml2 YXRlICpkZXZfcHJpdiwKLQkJCQkgICAgICAgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpuZXdf cXVlcnlfYm8sCisJCQkJICAgICAgIHN0cnVjdCB2bXdfZG1hX2J1ZmZlciAqbmV3X3F1ZXJ5X2Jv LAogCQkJCSAgICAgICBzdHJ1Y3Qgdm13X3N3X2NvbnRleHQgKnN3X2NvbnRleHQpCiB7CiAJc3Ry dWN0IHZtd19yZXNfY2FjaGVfZW50cnkgKmN0eF9lbnRyeSA9CkBAIC03NzEsNyArNzcxLDcgQEAg c3RhdGljIGludCB2bXdfcXVlcnlfYm9fc3dpdGNoX3ByZXBhcmUoc3RydWN0IHZtd19wcml2YXRl ICpkZXZfcHJpdiwKIAogCWlmICh1bmxpa2VseShuZXdfcXVlcnlfYm8gIT0gc3dfY29udGV4dC0+ Y3VyX3F1ZXJ5X2JvKSkgewogCi0JCWlmICh1bmxpa2VseShuZXdfcXVlcnlfYm8tPm51bV9wYWdl cyA+IDQpKSB7CisJCWlmICh1bmxpa2VseShuZXdfcXVlcnlfYm8tPmJhc2UubnVtX3BhZ2VzID4g NCkpIHsKIAkJCURSTV9FUlJPUigiUXVlcnkgYnVmZmVyIHRvbyBsYXJnZS5cbiIpOwogCQkJcmV0 dXJuIC1FSU5WQUw7CiAJCX0KQEAgLTg0MCwxMiArODQwLDEyIEBAIHN0YXRpYyB2b2lkIHZtd19x dWVyeV9ib19zd2l0Y2hfY29tbWl0KHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAlp ZiAoZGV2X3ByaXYtPnBpbm5lZF9ibyAhPSBzd19jb250ZXh0LT5jdXJfcXVlcnlfYm8pIHsKIAkJ aWYgKGRldl9wcml2LT5waW5uZWRfYm8pIHsKLQkJCXZtd19ib19waW4oZGV2X3ByaXYtPnBpbm5l ZF9ibywgZmFsc2UpOwotCQkJdHRtX2JvX3VucmVmKCZkZXZfcHJpdi0+cGlubmVkX2JvKTsKKwkJ CXZtd19ib19waW5fcmVzZXJ2ZWQoZGV2X3ByaXYtPnBpbm5lZF9ibywgZmFsc2UpOworCQkJdm13 X2RtYWJ1Zl91bnJlZmVyZW5jZSgmZGV2X3ByaXYtPnBpbm5lZF9ibyk7CiAJCX0KIAogCQlpZiAo IXN3X2NvbnRleHQtPm5lZWRzX3Bvc3RfcXVlcnlfYmFycmllcikgewotCQkJdm13X2JvX3Bpbihz d19jb250ZXh0LT5jdXJfcXVlcnlfYm8sIHRydWUpOworCQkJdm13X2JvX3Bpbl9yZXNlcnZlZChz d19jb250ZXh0LT5jdXJfcXVlcnlfYm8sIHRydWUpOwogCiAJCQkvKgogCQkJICogV2UgcGluIGFs c28gdGhlIGR1bW15X3F1ZXJ5X2JvIGJ1ZmZlciBzbyB0aGF0IHdlCkBAIC04NTMsMTQgKzg1Mywx NyBAQCBzdGF0aWMgdm9pZCB2bXdfcXVlcnlfYm9fc3dpdGNoX2NvbW1pdChzdHJ1Y3Qgdm13X3By aXZhdGUgKmRldl9wcml2LAogCQkJICogZHVtbXkgcXVlcmllcyBpbiBjb250ZXh0IGRlc3Ryb3kg cGF0aHMuCiAJCQkgKi8KIAotCQkJdm13X2JvX3BpbihkZXZfcHJpdi0+ZHVtbXlfcXVlcnlfYm8s IHRydWUpOwotCQkJZGV2X3ByaXYtPmR1bW15X3F1ZXJ5X2JvX3Bpbm5lZCA9IHRydWU7CisJCQlp ZiAoIWRldl9wcml2LT5kdW1teV9xdWVyeV9ib19waW5uZWQpIHsKKwkJCQl2bXdfYm9fcGluX3Jl c2VydmVkKGRldl9wcml2LT5kdW1teV9xdWVyeV9ibywKKwkJCQkJCSAgICB0cnVlKTsKKwkJCQlk ZXZfcHJpdi0+ZHVtbXlfcXVlcnlfYm9fcGlubmVkID0gdHJ1ZTsKKwkJCX0KIAogCQkJQlVHX09O KHN3X2NvbnRleHQtPmxhc3RfcXVlcnlfY3R4ID09IE5VTEwpOwogCQkJZGV2X3ByaXYtPnF1ZXJ5 X2NpZCA9IHN3X2NvbnRleHQtPmxhc3RfcXVlcnlfY3R4LT5pZDsKIAkJCWRldl9wcml2LT5xdWVy eV9jaWRfdmFsaWQgPSB0cnVlOwogCQkJZGV2X3ByaXYtPnBpbm5lZF9ibyA9Ci0JCQkJdHRtX2Jv X3JlZmVyZW5jZShzd19jb250ZXh0LT5jdXJfcXVlcnlfYm8pOworCQkJCXZtd19kbWFidWZfcmVm ZXJlbmNlKHN3X2NvbnRleHQtPmN1cl9xdWVyeV9ibyk7CiAJCX0KIAl9CiB9CkBAIC04ODksNyAr ODkyLDYgQEAgc3RhdGljIGludCB2bXdfdHJhbnNsYXRlX21vYl9wdHIoc3RydWN0IHZtd19wcml2 YXRlICpkZXZfcHJpdiwKIAkJCQkgc3RydWN0IHZtd19kbWFfYnVmZmVyICoqdm13X2JvX3ApCiB7 CiAJc3RydWN0IHZtd19kbWFfYnVmZmVyICp2bXdfYm8gPSBOVUxMOwotCXN0cnVjdCB0dG1fYnVm ZmVyX29iamVjdCAqYm87CiAJdWludDMyX3QgaGFuZGxlID0gKmlkOwogCXN0cnVjdCB2bXdfcmVs b2NhdGlvbiAqcmVsb2M7CiAJaW50IHJldDsKQEAgLTkwMCw3ICs5MDIsNiBAQCBzdGF0aWMgaW50 IHZtd190cmFuc2xhdGVfbW9iX3B0cihzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogCQly ZXQgPSAtRUlOVkFMOwogCQlnb3RvIG91dF9ub19yZWxvYzsKIAl9Ci0JYm8gPSAmdm13X2JvLT5i YXNlOwogCiAJaWYgKHVubGlrZWx5KHN3X2NvbnRleHQtPmN1cl9yZWxvYyA+PSBWTVdHRlhfTUFY X1JFTE9DQVRJT05TKSkgewogCQlEUk1fRVJST1IoIk1heCBudW1iZXIgcmVsb2NhdGlvbnMgcGVy IHN1Ym1pc3Npb24iCkBAIC05MTMsNyArOTE0LDcgQEAgc3RhdGljIGludCB2bXdfdHJhbnNsYXRl X21vYl9wdHIoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKIAlyZWxvYy0+bW9iX2xvYyA9 IGlkOwogCXJlbG9jLT5sb2NhdGlvbiA9IE5VTEw7CiAKLQlyZXQgPSB2bXdfYm9fdG9fdmFsaWRh dGVfbGlzdChzd19jb250ZXh0LCBibywgdHJ1ZSwgJnJlbG9jLT5pbmRleCk7CisJcmV0ID0gdm13 X2JvX3RvX3ZhbGlkYXRlX2xpc3Qoc3dfY29udGV4dCwgdm13X2JvLCB0cnVlLCAmcmVsb2MtPmlu ZGV4KTsKIAlpZiAodW5saWtlbHkocmV0ICE9IDApKQogCQlnb3RvIG91dF9ub19yZWxvYzsKIApA QCAtOTUxLDcgKzk1Miw2IEBAIHN0YXRpYyBpbnQgdm13X3RyYW5zbGF0ZV9ndWVzdF9wdHIoc3Ry dWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgICBzdHJ1Y3Qgdm13X2RtYV9idWZmZXIg Kip2bXdfYm9fcCkKIHsKIAlzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKnZtd19ibyA9IE5VTEw7Ci0J c3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibzsKIAl1aW50MzJfdCBoYW5kbGUgPSBwdHItPmdt cklkOwogCXN0cnVjdCB2bXdfcmVsb2NhdGlvbiAqcmVsb2M7CiAJaW50IHJldDsKQEAgLTk2Miw3 ICs5NjIsNiBAQCBzdGF0aWMgaW50IHZtd190cmFuc2xhdGVfZ3Vlc3RfcHRyKHN0cnVjdCB2bXdf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJCXJldCA9IC1FSU5WQUw7CiAJCWdvdG8gb3V0X25vX3JlbG9j OwogCX0KLQlibyA9ICZ2bXdfYm8tPmJhc2U7CiAKIAlpZiAodW5saWtlbHkoc3dfY29udGV4dC0+ Y3VyX3JlbG9jID49IFZNV0dGWF9NQVhfUkVMT0NBVElPTlMpKSB7CiAJCURSTV9FUlJPUigiTWF4 IG51bWJlciByZWxvY2F0aW9ucyBwZXIgc3VibWlzc2lvbiIKQEAgLTk3NCw3ICs5NzMsNyBAQCBz dGF0aWMgaW50IHZtd190cmFuc2xhdGVfZ3Vlc3RfcHRyKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJcmVsb2MgPSAmc3dfY29udGV4dC0+cmVsb2NzW3N3X2NvbnRleHQtPmN1cl9yZWxv YysrXTsKIAlyZWxvYy0+bG9jYXRpb24gPSBwdHI7CiAKLQlyZXQgPSB2bXdfYm9fdG9fdmFsaWRh dGVfbGlzdChzd19jb250ZXh0LCBibywgZmFsc2UsICZyZWxvYy0+aW5kZXgpOworCXJldCA9IHZt d19ib190b192YWxpZGF0ZV9saXN0KHN3X2NvbnRleHQsIHZtd19ibywgZmFsc2UsICZyZWxvYy0+ aW5kZXgpOwogCWlmICh1bmxpa2VseShyZXQgIT0gMCkpCiAJCWdvdG8gb3V0X25vX3JlbG9jOwog CkBAIC0xMDgxLDcgKzEwODAsNyBAQCBzdGF0aWMgaW50IHZtd19jbWRfZW5kX2diX3F1ZXJ5KHN0 cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaWYgKHVubGlrZWx5KHJldCAhPSAwKSkKIAkJ cmV0dXJuIHJldDsKIAotCXJldCA9IHZtd19xdWVyeV9ib19zd2l0Y2hfcHJlcGFyZShkZXZfcHJp diwgJnZtd19iby0+YmFzZSwgc3dfY29udGV4dCk7CisJcmV0ID0gdm13X3F1ZXJ5X2JvX3N3aXRj aF9wcmVwYXJlKGRldl9wcml2LCB2bXdfYm8sIHN3X2NvbnRleHQpOwogCiAJdm13X2RtYWJ1Zl91 bnJlZmVyZW5jZSgmdm13X2JvKTsKIAlyZXR1cm4gcmV0OwpAQCAtMTEzNSw3ICsxMTM0LDcgQEAg c3RhdGljIGludCB2bXdfY21kX2VuZF9xdWVyeShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2 LAogCWlmICh1bmxpa2VseShyZXQgIT0gMCkpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSB2bXdf cXVlcnlfYm9fc3dpdGNoX3ByZXBhcmUoZGV2X3ByaXYsICZ2bXdfYm8tPmJhc2UsIHN3X2NvbnRl eHQpOworCXJldCA9IHZtd19xdWVyeV9ib19zd2l0Y2hfcHJlcGFyZShkZXZfcHJpdiwgdm13X2Jv LCBzd19jb250ZXh0KTsKIAogCXZtd19kbWFidWZfdW5yZWZlcmVuY2UoJnZtd19ibyk7CiAJcmV0 dXJuIHJldDsKQEAgLTIyMzksMTYgKzIyMzgsMTEgQEAgc3RhdGljIGludCB2bXdfdmFsaWRhdGVf c2luZ2xlX2J1ZmZlcihzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgICAgIHN0 cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCiAJCQkJICAgICAgYm9vbCB2YWxpZGF0ZV9hc19t b2IpCiB7CisJc3RydWN0IHZtd19kbWFfYnVmZmVyICp2Ym8gPSBjb250YWluZXJfb2YoYm8sIHN0 cnVjdCB2bXdfZG1hX2J1ZmZlciwKKwkJCQkJCSAgYmFzZSk7CiAJaW50IHJldDsKIAotCi0JLyoK LQkgKiBEb24ndCB2YWxpZGF0ZSBwaW5uZWQgYnVmZmVycy4KLQkgKi8KLQotCWlmIChibyA9PSBk ZXZfcHJpdi0+cGlubmVkX2JvIHx8Ci0JICAgIChibyA9PSBkZXZfcHJpdi0+ZHVtbXlfcXVlcnlf Ym8gJiYKLQkgICAgIGRldl9wcml2LT5kdW1teV9xdWVyeV9ib19waW5uZWQpKQorCWlmICh2Ym8t PnBpbl9jb3VudCA+IDApCiAJCXJldHVybiAwOwogCiAJaWYgKHZhbGlkYXRlX2FzX21vYikKQEAg LTI3NjcsOSArMjc2MSwxMSBAQCBzdGF0aWMgdm9pZCB2bXdfZXhlY2J1Zl91bnBpbl9wYW5pYyhz dHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2KQogCURSTV9FUlJPUigiQ2FuJ3QgdW5waW4gcXVl cnkgYnVmZmVyLiBUcnlpbmcgdG8gcmVjb3Zlci5cbiIpOwogCiAJKHZvaWQpIHZtd19mYWxsYmFj a193YWl0KGRldl9wcml2LCBmYWxzZSwgdHJ1ZSwgMCwgZmFsc2UsIDEwKkhaKTsKLQl2bXdfYm9f cGluKGRldl9wcml2LT5waW5uZWRfYm8sIGZhbHNlKTsKLQl2bXdfYm9fcGluKGRldl9wcml2LT5k dW1teV9xdWVyeV9ibywgZmFsc2UpOwotCWRldl9wcml2LT5kdW1teV9xdWVyeV9ib19waW5uZWQg PSBmYWxzZTsKKwl2bXdfYm9fcGluX3Jlc2VydmVkKGRldl9wcml2LT5waW5uZWRfYm8sIGZhbHNl KTsKKwlpZiAoZGV2X3ByaXYtPmR1bW15X3F1ZXJ5X2JvX3Bpbm5lZCkgeworCQl2bXdfYm9fcGlu X3Jlc2VydmVkKGRldl9wcml2LT5kdW1teV9xdWVyeV9ibywgZmFsc2UpOworCQlkZXZfcHJpdi0+ ZHVtbXlfcXVlcnlfYm9fcGlubmVkID0gZmFsc2U7CisJfQogfQogCiAKQEAgLTI4MTEsMTEgKzI4 MDcsMTEgQEAgdm9pZCBfX3Ztd19leGVjYnVmX3JlbGVhc2VfcGlubmVkX2JvKHN0cnVjdCB2bXdf cHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAlJTklUX0xJU1RfSEVBRCgmdmFsaWRhdGVfbGlzdCk7CiAK LQlwaW5uZWRfdmFsLmJvID0gdHRtX2JvX3JlZmVyZW5jZShkZXZfcHJpdi0+cGlubmVkX2JvKTsK KwlwaW5uZWRfdmFsLmJvID0gdHRtX2JvX3JlZmVyZW5jZSgmZGV2X3ByaXYtPnBpbm5lZF9iby0+ YmFzZSk7CiAJcGlubmVkX3ZhbC5zaGFyZWQgPSBmYWxzZTsKIAlsaXN0X2FkZF90YWlsKCZwaW5u ZWRfdmFsLmhlYWQsICZ2YWxpZGF0ZV9saXN0KTsKIAotCXF1ZXJ5X3ZhbC5ibyA9IHR0bV9ib19y ZWZlcmVuY2UoZGV2X3ByaXYtPmR1bW15X3F1ZXJ5X2JvKTsKKwlxdWVyeV92YWwuYm8gPSB0dG1f Ym9fcmVmZXJlbmNlKCZkZXZfcHJpdi0+ZHVtbXlfcXVlcnlfYm8tPmJhc2UpOwogCXF1ZXJ5X3Zh bC5zaGFyZWQgPSBmYWxzZTsKIAlsaXN0X2FkZF90YWlsKCZxdWVyeV92YWwuaGVhZCwgJnZhbGlk YXRlX2xpc3QpOwogCkBAIC0yODM2LDEwICsyODMyLDExIEBAIHZvaWQgX192bXdfZXhlY2J1Zl9y ZWxlYXNlX3Bpbm5lZF9ibyhzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogCQlkZXZfcHJp di0+cXVlcnlfY2lkX3ZhbGlkID0gZmFsc2U7CiAJfQogCi0Jdm13X2JvX3BpbihkZXZfcHJpdi0+ cGlubmVkX2JvLCBmYWxzZSk7Ci0Jdm13X2JvX3BpbihkZXZfcHJpdi0+ZHVtbXlfcXVlcnlfYm8s IGZhbHNlKTsKLQlkZXZfcHJpdi0+ZHVtbXlfcXVlcnlfYm9fcGlubmVkID0gZmFsc2U7Ci0KKwl2 bXdfYm9fcGluX3Jlc2VydmVkKGRldl9wcml2LT5waW5uZWRfYm8sIGZhbHNlKTsKKwlpZiAoZGV2 X3ByaXYtPmR1bW15X3F1ZXJ5X2JvX3Bpbm5lZCkgeworCQl2bXdfYm9fcGluX3Jlc2VydmVkKGRl dl9wcml2LT5kdW1teV9xdWVyeV9ibywgZmFsc2UpOworCQlkZXZfcHJpdi0+ZHVtbXlfcXVlcnlf Ym9fcGlubmVkID0gZmFsc2U7CisJfQogCWlmIChmZW5jZSA9PSBOVUxMKSB7CiAJCSh2b2lkKSB2 bXdfZXhlY2J1Zl9mZW5jZV9jb21tYW5kcyhOVUxMLCBkZXZfcHJpdiwgJmxmZW5jZSwKIAkJCQkJ CSAgTlVMTCk7CkBAIC0yODUxLDcgKzI4NDgsOSBAQCB2b2lkIF9fdm13X2V4ZWNidWZfcmVsZWFz ZV9waW5uZWRfYm8oc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKIAogCXR0bV9ib191bnJl ZigmcXVlcnlfdmFsLmJvKTsKIAl0dG1fYm9fdW5yZWYoJnBpbm5lZF92YWwuYm8pOwotCXR0bV9i b191bnJlZigmZGV2X3ByaXYtPnBpbm5lZF9ibyk7CisJdm13X2RtYWJ1Zl91bnJlZmVyZW5jZSgm ZGV2X3ByaXYtPnBpbm5lZF9ibyk7CisJRFJNX0lORk8oIkR1bW15IHF1ZXJ5IGJvIHBpbiBjb3Vu dDogJWRcbiIsCisJCSBkZXZfcHJpdi0+ZHVtbXlfcXVlcnlfYm8tPnBpbl9jb3VudCk7CiAKIG91 dF91bmxvY2s6CiAJcmV0dXJuOwpAQCAtMjg2MSw3ICsyODYwLDcgQEAgb3V0X25vX2VtaXQ6CiBv dXRfbm9fcmVzZXJ2ZToKIAl0dG1fYm9fdW5yZWYoJnF1ZXJ5X3ZhbC5ibyk7CiAJdHRtX2JvX3Vu cmVmKCZwaW5uZWRfdmFsLmJvKTsKLQl0dG1fYm9fdW5yZWYoJmRldl9wcml2LT5waW5uZWRfYm8p OworCXZtd19kbWFidWZfdW5yZWZlcmVuY2UoJmRldl9wcml2LT5waW5uZWRfYm8pOwogfQogCiAv KioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ZiLmMgYi9kcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9mYi5jCmluZGV4IGQwYTNiY2YuLmI1NGQ5OWJjIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9mYi5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ZiLmMKQEAgLTYzNiw3ICs2MzYsNyBAQCBpbnQgdm13 X2ZiX29uKHN0cnVjdCB2bXdfcHJpdmF0ZSAqdm13X3ByaXYpCiAJLyogTWFrZSBzdXJlIHRoYXQg YWxsIG92ZXJsYXlzIGFyZSBzdG9wZWQgd2hlbiB3ZSB0YWtlIG92ZXIgKi8KIAl2bXdfb3Zlcmxh eV9zdG9wX2FsbCh2bXdfcHJpdik7CiAKLQlyZXQgPSB2bXdfZG1hYnVmX3RvX3N0YXJ0X29mX3Zy YW0odm13X3ByaXYsIHBhci0+dm13X2JvLCB0cnVlLCBmYWxzZSk7CisJcmV0ID0gdm13X2RtYWJ1 Zl9waW5faW5fc3RhcnRfb2ZfdnJhbSh2bXdfcHJpdiwgcGFyLT52bXdfYm8sIGZhbHNlKTsKIAlp ZiAodW5saWtlbHkocmV0ICE9IDApKSB7CiAJCURSTV9FUlJPUigiY291bGQgbm90IG1vdmUgYnVm ZmVyIHRvIHN0YXJ0IG9mIFZSQU1cbiIpOwogCQlnb3RvIGVycl9ub19idWZmZXI7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9maWZvLmMgYi9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9maWZvLmMKaW5kZXggMjM5ODE1Yy4uOWI4YjA5ZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZmlmby5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS92bXdnZngvdm13Z2Z4X2ZpZm8uYwpAQCAtNjA0LDcgKzYwNCw3IEBAIHN0YXRpYyBpbnQg dm13X2ZpZm9fZW1pdF9kdW1teV9sZWdhY3lfcXVlcnkoc3RydWN0IHZtd19wcml2YXRlICpkZXZf cHJpdiwKIAkgKiB3aXRob3V0IHdyaXRpbmcgdG8gdGhlIHF1ZXJ5IHJlc3VsdCBzdHJ1Y3R1cmUu CiAJICovCiAKLQlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvID0gZGV2X3ByaXYtPmR1bW15 X3F1ZXJ5X2JvOworCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSAmZGV2X3ByaXYtPmR1 bW15X3F1ZXJ5X2JvLT5iYXNlOwogCXN0cnVjdCB7CiAJCVNWR0EzZENtZEhlYWRlciBoZWFkZXI7 CiAJCVNWR0EzZENtZFdhaXRGb3JRdWVyeSBib2R5OwpAQCAtNjUzLDcgKzY1Myw3IEBAIHN0YXRp YyBpbnQgdm13X2ZpZm9fZW1pdF9kdW1teV9nYl9xdWVyeShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRl dl9wcml2LAogCSAqIHdpdGhvdXQgd3JpdGluZyB0byB0aGUgcXVlcnkgcmVzdWx0IHN0cnVjdHVy ZS4KIAkgKi8KIAotCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSBkZXZfcHJpdi0+ZHVt bXlfcXVlcnlfYm87CisJc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyA9ICZkZXZfcHJpdi0+ ZHVtbXlfcXVlcnlfYm8tPmJhc2U7CiAJc3RydWN0IHsKIAkJU1ZHQTNkQ21kSGVhZGVyIGhlYWRl cjsKIAkJU1ZHQTNkQ21kV2FpdEZvckdCUXVlcnkgYm9keTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdn Znhfa21zLmMKaW5kZXggNjE1ZmY2Y2ZjLi45OWUyZjViIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Zt d2dmeF9rbXMuYwpAQCAtNjc4LDcgKzY3OCw3IEBAIHN0YXRpYyBpbnQgdm13X2ZyYW1lYnVmZmVy X2RtYWJ1Zl9waW4oc3RydWN0IHZtd19mcmFtZWJ1ZmZlciAqdmZiKQogCiAJdm13X292ZXJsYXlf cGF1c2VfYWxsKGRldl9wcml2KTsKIAotCXJldCA9IHZtd19kbWFidWZfdG9fc3RhcnRfb2ZfdnJh bShkZXZfcHJpdiwgdmZiZC0+YnVmZmVyLCB0cnVlLCBmYWxzZSk7CisJcmV0ID0gdm13X2RtYWJ1 Zl9waW5faW5fc3RhcnRfb2ZfdnJhbShkZXZfcHJpdiwgdmZiZC0+YnVmZmVyLCBmYWxzZSk7CiAK IAl2bXdfb3ZlcmxheV9yZXN1bWVfYWxsKGRldl9wcml2KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfb3ZlcmxheS5jCmluZGV4IDdmNGIyZjAuLmQ4MzkwNTEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X292ZXJsYXkuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9vdmVybGF5LmMKQEAgLTIzMiw5ICsyMzIsOSBAQCBzdGF0aWMgaW50 IHZtd19vdmVybGF5X21vdmVfYnVmZmVyKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ CXJldHVybiB2bXdfZG1hYnVmX3VucGluKGRldl9wcml2LCBidWYsIGludGVyKTsKIAogCWlmIChk ZXZfcHJpdi0+YWN0aXZlX2Rpc3BsYXlfdW5pdCA9PSB2bXdfZHVfbGVnYWN5KQotCQlyZXR1cm4g dm13X2RtYWJ1Zl90b192cmFtKGRldl9wcml2LCBidWYsIHRydWUsIGludGVyKTsKKwkJcmV0dXJu IHZtd19kbWFidWZfcGluX2luX3ZyYW0oZGV2X3ByaXYsIGJ1ZiwgaW50ZXIpOwogCi0JcmV0dXJu IHZtd19kbWFidWZfdG9fdnJhbV9vcl9nbXIoZGV2X3ByaXYsIGJ1ZiwgdHJ1ZSwgaW50ZXIpOwor CXJldHVybiB2bXdfZG1hYnVmX3Bpbl9pbl92cmFtX29yX2dtcihkZXZfcHJpdiwgYnVmLCBpbnRl cik7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhf cmVzb3VyY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3Jlc291cmNlLmMKaW5k ZXggOWRjYmU4Yi4uMjcxYmM5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92 bXdnZnhfcmVzb3VyY2UuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9yZXNv dXJjZS5jCkBAIC0xNTk2LDI1ICsxNTk2LDI5IEBAIGludCB2bXdfcmVzb3VyY2VfcGluKHN0cnVj dCB2bXdfcmVzb3VyY2UgKnJlcykKIAkJZ290byBvdXRfbm9fcmVzZXJ2ZTsKIAogCWlmIChyZXMt PnBpbl9jb3VudCA9PSAwKSB7Ci0JCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSBOVUxM OworCQlzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKnZibyA9IE5VTEw7CiAKIAkJaWYgKHJlcy0+YmFj a3VwKSB7Ci0JCQlibyA9ICZyZXMtPmJhY2t1cC0+YmFzZTsKLQotCQkJdHRtX2JvX3Jlc2VydmUo Ym8sIGZhbHNlLCBmYWxzZSwgZmFsc2UsIE5VTEwpOwotCQkJcmV0ID0gdHRtX2JvX3ZhbGlkYXRl KGJvLCByZXMtPmZ1bmMtPmJhY2t1cF9wbGFjZW1lbnQsCi0JCQkJCSAgICAgIGZhbHNlLCBmYWxz ZSk7Ci0JCQlpZiAocmV0KSB7Ci0JCQkJdHRtX2JvX3VucmVzZXJ2ZShibyk7Ci0JCQkJZ290byBv dXRfbm9fdmFsaWRhdGU7CisJCQl2Ym8gPSByZXMtPmJhY2t1cDsKKworCQkJdHRtX2JvX3Jlc2Vy dmUoJnZiby0+YmFzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgTlVMTCk7CisJCQlpZiAoIXZiby0+ cGluX2NvdW50KSB7CisJCQkJcmV0ID0gdHRtX2JvX3ZhbGlkYXRlCisJCQkJCSgmdmJvLT5iYXNl LAorCQkJCQkgcmVzLT5mdW5jLT5iYWNrdXBfcGxhY2VtZW50LAorCQkJCQkgZmFsc2UsIGZhbHNl KTsKKwkJCQlpZiAocmV0KSB7CisJCQkJCXR0bV9ib191bnJlc2VydmUoJnZiby0+YmFzZSk7CisJ CQkJCWdvdG8gb3V0X25vX3ZhbGlkYXRlOworCQkJCX0KIAkJCX0KIAogCQkJLyogRG8gd2UgcmVh bGx5IG5lZWQgdG8gcGluIHRoZSBNT0IgYXMgd2VsbD8gKi8KLQkJCXZtd19ib19waW4oYm8sIHRy dWUpOworCQkJdm13X2JvX3Bpbl9yZXNlcnZlZCh2Ym8sIHRydWUpOwogCQl9CiAJCXJldCA9IHZt d19yZXNvdXJjZV92YWxpZGF0ZShyZXMpOwotCQlpZiAoYm8pCi0JCQl0dG1fYm9fdW5yZXNlcnZl KGJvKTsKKwkJaWYgKHZibykKKwkJCXR0bV9ib191bnJlc2VydmUoJnZiby0+YmFzZSk7CiAJCWlm IChyZXQpCiAJCQlnb3RvIG91dF9ub192YWxpZGF0ZTsKIAl9CkBAIC0xNjUwLDExICsxNjU0LDEx IEBAIHZvaWQgdm13X3Jlc291cmNlX3VucGluKHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcykKIAog CVdBUk5fT04ocmVzLT5waW5fY291bnQgPT0gMCk7CiAJaWYgKC0tcmVzLT5waW5fY291bnQgPT0g MCAmJiByZXMtPmJhY2t1cCkgewotCQlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvID0gJnJl cy0+YmFja3VwLT5iYXNlOworCQlzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKnZibyA9IHJlcy0+YmFj a3VwOwogCi0JCXR0bV9ib19yZXNlcnZlKGJvLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBOVUxMKTsK LQkJdm13X2JvX3BpbihibywgZmFsc2UpOwotCQl0dG1fYm9fdW5yZXNlcnZlKGJvKTsKKwkJdHRt X2JvX3Jlc2VydmUoJnZiby0+YmFzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgTlVMTCk7CisJCXZt d19ib19waW5fcmVzZXJ2ZWQodmJvLCBmYWxzZSk7CisJCXR0bV9ib191bnJlc2VydmUoJnZiby0+ YmFzZSk7CiAJfQogCiAJdm13X3Jlc291cmNlX3VucmVzZXJ2ZShyZXMsIE5VTEwsIDBVTCk7Ci0t IAoyLjEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==