From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH v4 16/19] drm/vboxvideo: Convert vboxvideo driver to |struct drm_gem_vram_object| Date: Mon, 6 May 2019 10:26:46 +0200 Message-ID: <20190506082649.942-17-tzimmermann@suse.de> References: <20190506082649.942-1-tzimmermann@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id 66E07896DD for ; Mon, 6 May 2019 08:27:03 +0000 (UTC) In-Reply-To: <20190506082649.942-1-tzimmermann@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: daniel@ffwll.ch, airlied@linux.ie, kraxel@redhat.com, christian.koenig@amd.com, ray.huang@amd.com, hdegoede@redhat.com, noralf@tronnes.org, sam@ravnborg.org, z.liuxinliang@hisilicon.com, zourongrong@gmail.com, kong.kongxinwei@hisilicon.com, puck.chen@hisilicon.com Cc: Thomas Zimmermann , dri-devel@lists.freedesktop.org, virtualization@lists.linux-foundation.org List-Id: dri-devel@lists.freedesktop.org VGhpcyBwYXRjaCByZXBsYWNlcyB8c3RydWN0IHZib3hfYm98IGFuZCBpdHMgaGVscGVycyB3aXRo IHRoZSBnZW5lcmljCmltcGxlbWVudGF0aW9uIG9mIHxzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVj dHwuIFRoZSBvbmx5IGNoYW5nZSBpbgpzZW1hbnRpY3MgaXMgdGhhdCAmdHRtX2JvX2RyaXZlci52 ZXJpZnlfYWNjZXNzKCkgbm93IGRvZXMgdGhlIGFjdHVhbAp2ZXJpZmljYXRpb24uCgp2NDoKCSog c2VsZWN0IGNvbmZpZyBvcHRpb24gRFJNX1ZSQU1fSEVMUEVSCnYzOgoJKiByZW1vdmUgZm9yd2Fy ZCBkZWNsYXJhdGlvbiBvZiBzdHJ1Y3QgdmJveF9nZW1fb2JqZWN0CnYyOgoJbm90aGluZwoKU2ln bmVkLW9mZi1ieTogVGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGU+ClJldmll d2VkLWJ5OiBIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgotLS0KIGRyaXZlcnMv Z3B1L2RybS92Ym94dmlkZW8vS2NvbmZpZyAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL3Zi b3h2aWRlby92Ym94X2Rydi5jICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby92 Ym94X2Rydi5oICB8ICA2MCArLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL3Zib3hf ZmIuYyAgIHwgIDIyICstLQogZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby92Ym94X21haW4uYyB8 ICA3MCArLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby92Ym94X21vZGUuYyB8ICAz NiArKystLQogZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby92Ym94X3R0bS5jICB8IDIyMyArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogNyBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCsp LCAzNzIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRl by9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby9LY29uZmlnCmluZGV4IDFmNDE4 MmUyZTk4MC4uZjhmNjg5YzU1ZTk0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmJveHZp ZGVvL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby9LY29uZmlnCkBAIC0z LDYgKzMsNyBAQCBjb25maWcgRFJNX1ZCT1hWSURFTwogCWRlcGVuZHMgb24gRFJNICYmIFg4NiAm JiBQQ0kKIAlzZWxlY3QgRFJNX0tNU19IRUxQRVIKIAlzZWxlY3QgRFJNX1RUTQorCXNlbGVjdCBE Uk1fVlJBTV9IRUxQRVIKIAlzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1IKIAloZWxwCiAJICBUaGlz IGlzIGEgS01TIGRyaXZlciBmb3IgdGhlIHZpcnR1YWwgR3JhcGhpY3MgQ2FyZCB1c2VkIGluCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL3Zib3hfZHJ2LmMgYi9kcml2ZXJz L2dwdS9kcm0vdmJveHZpZGVvL3Zib3hfZHJ2LmMKaW5kZXggZmI2YTBmMGI4MTY3Li4zMzZhOGUw M2UxNTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92Ym94dmlkZW8vdmJveF9kcnYuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL3Zib3hfZHJ2LmMKQEAgLTIxNSw5ICsyMTUs MTAgQEAgc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIGRyaXZlciA9IHsKIAkubWlub3IgPSBEUklW RVJfTUlOT1IsCiAJLnBhdGNobGV2ZWwgPSBEUklWRVJfUEFUQ0hMRVZFTCwKIAotCS5nZW1fZnJl ZV9vYmplY3RfdW5sb2NrZWQgPSB2Ym94X2dlbV9mcmVlX29iamVjdCwKKwkuZ2VtX2ZyZWVfb2Jq ZWN0X3VubG9ja2VkID0KKwkJZHJtX2dlbV92cmFtX2RyaXZlcl9nZW1fZnJlZV9vYmplY3RfdW5s b2NrZWQsCiAJLmR1bWJfY3JlYXRlID0gdmJveF9kdW1iX2NyZWF0ZSwKLQkuZHVtYl9tYXBfb2Zm c2V0ID0gdmJveF9kdW1iX21tYXBfb2Zmc2V0LAorCS5kdW1iX21hcF9vZmZzZXQgPSBkcm1fZ2Vt X3ZyYW1fZHJpdmVyX2R1bWJfbW1hcF9vZmZzZXQsCiAJLnByaW1lX2hhbmRsZV90b19mZCA9IGRy bV9nZW1fcHJpbWVfaGFuZGxlX3RvX2ZkLAogCS5wcmltZV9mZF90b19oYW5kbGUgPSBkcm1fZ2Vt X3ByaW1lX2ZkX3RvX2hhbmRsZSwKIAkuZ2VtX3ByaW1lX2V4cG9ydCA9IGRybV9nZW1fcHJpbWVf ZXhwb3J0LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby92Ym94X2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby92Ym94X2Rydi5oCmluZGV4IGVjZTMxZjM5NTU0 MC4uMTJlNDczOTJiMmY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL3Zi b3hfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby92Ym94X2Rydi5oCkBAIC0x OCw2ICsxOCw3IEBACiAjaW5jbHVkZSA8ZHJtL2RybV9lbmNvZGVyLmg+CiAjaW5jbHVkZSA8ZHJt L2RybV9mYl9oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2dlbS5oPgorI2luY2x1ZGUgPGRy bS9kcm1fZ2VtX3ZyYW1faGVscGVyLmg+CiAKICNpbmNsdWRlIDxkcm0vdHRtL3R0bV9ib19hcGku aD4KICNpbmNsdWRlIDxkcm0vdHRtL3R0bV9ib19kcml2ZXIuaD4KQEAgLTk2LDggKzk3LDYgQEAg c3RydWN0IHZib3hfcHJpdmF0ZSB7CiAjdW5kZWYgQ1VSU09SX1BJWEVMX0NPVU5UCiAjdW5kZWYg Q1VSU09SX0RBVEFfU0laRQogCi1zdHJ1Y3QgdmJveF9nZW1fb2JqZWN0OwotCiBzdHJ1Y3QgdmJv eF9jb25uZWN0b3IgewogCXN0cnVjdCBkcm1fY29ubmVjdG9yIGJhc2U7CiAJY2hhciBuYW1lWzMy XTsKQEAgLTE3MCw3MyArMTY5LDE2IEBAIGludCB2Ym94ZmJfY3JlYXRlKHN0cnVjdCBkcm1fZmJf aGVscGVyICpoZWxwZXIsCiAJCSAgc3RydWN0IGRybV9mYl9oZWxwZXJfc3VyZmFjZV9zaXplICpz aXplcyk7CiB2b2lkIHZib3hfZmJkZXZfZmluaShzdHJ1Y3QgdmJveF9wcml2YXRlICp2Ym94KTsK IAotc3RydWN0IHZib3hfYm8gewotCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCBibzsKLQlzdHJ1 Y3QgdHRtX3BsYWNlbWVudCBwbGFjZW1lbnQ7Ci0Jc3RydWN0IHR0bV9ib19rbWFwX29iaiBrbWFw OwotCXN0cnVjdCBkcm1fZ2VtX29iamVjdCBnZW07Ci0Jc3RydWN0IHR0bV9wbGFjZSBwbGFjZW1l bnRzWzNdOwotCWludCBwaW5fY291bnQ7Ci19OwotCi0jZGVmaW5lIGdlbV90b192Ym94X2JvKGdv YmopIGNvbnRhaW5lcl9vZigoZ29iaiksIHN0cnVjdCB2Ym94X2JvLCBnZW0pCi0KLXN0YXRpYyBp bmxpbmUgc3RydWN0IHZib3hfYm8gKnZib3hfYm8oc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpi bykKLXsKLQlyZXR1cm4gY29udGFpbmVyX29mKGJvLCBzdHJ1Y3QgdmJveF9ibywgYm8pOwotfQot Ci0jZGVmaW5lIHRvX3Zib3hfb2JqKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgdmJveF9nZW1f b2JqZWN0LCBiYXNlKQotCi1zdGF0aWMgaW5saW5lIHU2NCB2Ym94X2JvX2dwdV9vZmZzZXQoc3Ry dWN0IHZib3hfYm8gKmJvKQotewotCXJldHVybiBiby0+Ym8ub2Zmc2V0OwotfQotCiBpbnQgdmJv eF9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCiAJCSAgICAgc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAkJICAgICBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIgKmFyZ3MpOwog Ci12b2lkIHZib3hfZ2VtX2ZyZWVfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsK LWludCB2Ym94X2R1bWJfbW1hcF9vZmZzZXQoc3RydWN0IGRybV9maWxlICpmaWxlLAotCQkJICBz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJICB1MzIgaGFuZGxlLCB1NjQgKm9mZnNldCk7Ci0K IGludCB2Ym94X21tX2luaXQoc3RydWN0IHZib3hfcHJpdmF0ZSAqdmJveCk7CiB2b2lkIHZib3hf bW1fZmluaShzdHJ1Y3QgdmJveF9wcml2YXRlICp2Ym94KTsKIAotaW50IHZib3hfYm9fY3JlYXRl KHN0cnVjdCB2Ym94X3ByaXZhdGUgKnZib3gsIGludCBzaXplLCBpbnQgYWxpZ24sCi0JCSAgIHUz MiBmbGFncywgc3RydWN0IHZib3hfYm8gKipwdmJveGJvKTsKLQogaW50IHZib3hfZ2VtX2NyZWF0 ZShzdHJ1Y3QgdmJveF9wcml2YXRlICp2Ym94LAogCQkgICAgdTMyIHNpemUsIGJvb2wgaXNrZXJu ZWwsIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqKm9iaik7Ci0KLWludCB2Ym94X2JvX3BpbihzdHJ1 Y3QgdmJveF9ibyAqYm8sIHUzMiBwbF9mbGFnKTsKLWludCB2Ym94X2JvX3VucGluKHN0cnVjdCB2 Ym94X2JvICpibyk7Ci0KLXN0YXRpYyBpbmxpbmUgaW50IHZib3hfYm9fcmVzZXJ2ZShzdHJ1Y3Qg dmJveF9ibyAqYm8sIGJvb2wgbm9fd2FpdCkKLXsKLQlpbnQgcmV0OwotCi0JcmV0ID0gdHRtX2Jv X3Jlc2VydmUoJmJvLT5ibywgdHJ1ZSwgbm9fd2FpdCwgTlVMTCk7Ci0JaWYgKHJldCkgewotCQlp ZiAocmV0ICE9IC1FUkVTVEFSVFNZUyAmJiByZXQgIT0gLUVCVVNZKQotCQkJRFJNX0VSUk9SKCJy ZXNlcnZlIGZhaWxlZCAlcFxuIiwgYm8pOwotCQlyZXR1cm4gcmV0OwotCX0KLQlyZXR1cm4gMDsK LX0KLQotc3RhdGljIGlubGluZSB2b2lkIHZib3hfYm9fdW5yZXNlcnZlKHN0cnVjdCB2Ym94X2Jv ICpibykKLXsKLQl0dG1fYm9fdW5yZXNlcnZlKCZiby0+Ym8pOwotfQotCi12b2lkIHZib3hfdHRt X3BsYWNlbWVudChzdHJ1Y3QgdmJveF9ibyAqYm8sIGludCBkb21haW4pOwotaW50IHZib3hfYm9f cHVzaF9zeXNyYW0oc3RydWN0IHZib3hfYm8gKmJvKTsKIGludCB2Ym94X21tYXAoc3RydWN0IGZp bGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKLXZvaWQgKnZib3hfYm9fa21h cChzdHJ1Y3QgdmJveF9ibyAqYm8pOwotdm9pZCB2Ym94X2JvX2t1bm1hcChzdHJ1Y3QgdmJveF9i byAqYm8pOwogCiAvKiB2Ym94X3ByaW1lLmMgKi8KIGludCB2Ym94X2dlbV9wcmltZV9waW4oc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Zi b3h2aWRlby92Ym94X2ZiLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL3Zib3hfZmIuYwpp bmRleCBiNzI0ZmU3YzBjMzAuLjhmNzRiY2ZmYzAzNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3Zib3h2aWRlby92Ym94X2ZiLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby92 Ym94X2ZiLmMKQEAgLTUxLDkgKzUxLDkgQEAgaW50IHZib3hmYl9jcmVhdGUoc3RydWN0IGRybV9m Yl9oZWxwZXIgKmhlbHBlciwKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKIAlzdHJ1Y3Qg ZmJfaW5mbyAqaW5mbzsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdvYmo7Ci0Jc3RydWN0IHZi b3hfYm8gKmJvOworCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm87CiAJaW50IHNpemUs IHJldDsKLQl1NjQgZ3B1X2FkZHI7CisJczY0IGdwdV9hZGRyOwogCXUzMiBwaXRjaDsKIAogCW1v ZGVfY21kLndpZHRoID0gc2l6ZXMtPnN1cmZhY2Vfd2lkdGg7CkBAIC03NSw5ICs3NSw5IEBAIGlu dCB2Ym94ZmJfY3JlYXRlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCiAJaWYgKHJldCkK IAkJcmV0dXJuIHJldDsKIAotCWJvID0gZ2VtX3RvX3Zib3hfYm8oZ29iaik7CisJZ2JvID0gZHJt X2dlbV92cmFtX29mX2dlbShnb2JqKTsKIAotCXJldCA9IHZib3hfYm9fcGluKGJvLCBUVE1fUExf RkxBR19WUkFNKTsKKwlyZXQgPSBkcm1fZ2VtX3ZyYW1fcGluKGdibywgRFJNX0dFTV9WUkFNX1BM X0ZMQUdfVlJBTSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtODYsNyArODYsNyBA QCBpbnQgdmJveGZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAogCQlyZXR1 cm4gUFRSX0VSUihpbmZvKTsKIAogCWluZm8tPnNjcmVlbl9zaXplID0gc2l6ZTsKLQlpbmZvLT5z Y3JlZW5fYmFzZSA9IChjaGFyIF9faW9tZW0gKil2Ym94X2JvX2ttYXAoYm8pOworCWluZm8tPnNj cmVlbl9iYXNlID0gKGNoYXIgX19pb21lbSAqKWRybV9nZW1fdnJhbV9rbWFwKGdibywgdHJ1ZSwg TlVMTCk7CiAJaWYgKElTX0VSUihpbmZvLT5zY3JlZW5fYmFzZSkpCiAJCXJldHVybiBQVFJfRVJS KGluZm8tPnNjcmVlbl9iYXNlKTsKIApAQCAtMTA0LDcgKzEwNCw5IEBAIGludCB2Ym94ZmJfY3Jl YXRlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCiAKIAlkcm1fZmJfaGVscGVyX2ZpbGxf aW5mbyhpbmZvLCBoZWxwZXIsIHNpemVzKTsKIAotCWdwdV9hZGRyID0gdmJveF9ib19ncHVfb2Zm c2V0KGJvKTsKKwlncHVfYWRkciA9IGRybV9nZW1fdnJhbV9vZmZzZXQoZ2JvKTsKKwlpZiAoZ3B1 X2FkZHIgPCAwKQorCQlyZXR1cm4gKGludClncHVfYWRkcjsKIAlpbmZvLT5maXguc21lbV9zdGFy dCA9IGluZm8tPmFwZXJ0dXJlcy0+cmFuZ2VzWzBdLmJhc2UgKyBncHVfYWRkcjsKIAlpbmZvLT5m aXguc21lbV9sZW4gPSB2Ym94LT5hdmFpbGFibGVfdnJhbV9zaXplIC0gZ3B1X2FkZHI7CiAKQEAg LTEzMiwxMiArMTM0LDEwIEBAIHZvaWQgdmJveF9mYmRldl9maW5pKHN0cnVjdCB2Ym94X3ByaXZh dGUgKnZib3gpCiAJZHJtX2ZiX2hlbHBlcl91bnJlZ2lzdGVyX2ZiaSgmdmJveC0+ZmJfaGVscGVy KTsKIAogCWlmIChhZmItPm9iaikgewotCQlzdHJ1Y3QgdmJveF9ibyAqYm8gPSBnZW1fdG9fdmJv eF9ibyhhZmItPm9iaik7CisJCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8gPSBkcm1f Z2VtX3ZyYW1fb2ZfZ2VtKGFmYi0+b2JqKTsKIAotCQl2Ym94X2JvX2t1bm1hcChibyk7Ci0KLQkJ aWYgKGJvLT5waW5fY291bnQpCi0JCQl2Ym94X2JvX3VucGluKGJvKTsKKwkJZHJtX2dlbV92cmFt X2t1bm1hcChnYm8pOworCQlkcm1fZ2VtX3ZyYW1fdW5waW4oZ2JvKTsKIAogCQlkcm1fZ2VtX29i amVjdF9wdXRfdW5sb2NrZWQoYWZiLT5vYmopOwogCQlhZmItPm9iaiA9IE5VTEw7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL3Zib3hfbWFpbi5jIGIvZHJpdmVycy9ncHUv ZHJtL3Zib3h2aWRlby92Ym94X21haW4uYwppbmRleCBmNGQwMmRlNTUxOGEuLjUyNWU5ZmQ2M2Y0 ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby92Ym94X21haW4uYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL3Zib3hfbWFpbi5jCkBAIC0yNzQsNyArMjc0LDcg QEAgdm9pZCB2Ym94X2h3X2Zpbmkoc3RydWN0IHZib3hfcHJpdmF0ZSAqdmJveCkKIGludCB2Ym94 X2dlbV9jcmVhdGUoc3RydWN0IHZib3hfcHJpdmF0ZSAqdmJveCwKIAkJICAgIHUzMiBzaXplLCBi b29sIGlza2VybmVsLCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKipvYmopCiB7Ci0Jc3RydWN0IHZi b3hfYm8gKnZib3hibzsKKwlzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvOwogCWludCBy ZXQ7CiAKIAkqb2JqID0gTlVMTDsKQEAgLTI4MywxNCArMjgzLDE1IEBAIGludCB2Ym94X2dlbV9j cmVhdGUoc3RydWN0IHZib3hfcHJpdmF0ZSAqdmJveCwKIAlpZiAoc2l6ZSA9PSAwKQogCQlyZXR1 cm4gLUVJTlZBTDsKIAotCXJldCA9IHZib3hfYm9fY3JlYXRlKHZib3gsIHNpemUsIDAsIDAsICZ2 Ym94Ym8pOwotCWlmIChyZXQpIHsKKwlnYm8gPSBkcm1fZ2VtX3ZyYW1fY3JlYXRlKCZ2Ym94LT5k ZGV2LCAmdmJveC0+dHRtLmJkZXYsIHNpemUsIDAsIGZhbHNlKTsKKwlpZiAoSVNfRVJSKGdibykp IHsKKwkJcmV0ID0gUFRSX0VSUihnYm8pOwogCQlpZiAocmV0ICE9IC1FUkVTVEFSVFNZUykKIAkJ CURSTV9FUlJPUigiZmFpbGVkIHRvIGFsbG9jYXRlIEdFTSBvYmplY3RcbiIpOwogCQlyZXR1cm4g cmV0OwogCX0KIAotCSpvYmogPSAmdmJveGJvLT5nZW07CisJKm9iaiA9ICZnYm8tPmdlbTsKIAog CXJldHVybiAwOwogfQpAQCAtMjk4LDY0ICsyOTksOSBAQCBpbnQgdmJveF9nZW1fY3JlYXRlKHN0 cnVjdCB2Ym94X3ByaXZhdGUgKnZib3gsCiBpbnQgdmJveF9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUsCiAJCSAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9t b2RlX2NyZWF0ZV9kdW1iICphcmdzKQogewotCXN0cnVjdCB2Ym94X3ByaXZhdGUgKnZib3ggPQot CQljb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgdmJveF9wcml2YXRlLCBkZGV2KTsKLQlzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKmdvYmo7Ci0JdTMyIGhhbmRsZTsKLQlpbnQgcmV0OwotCi0JYXJncy0+ cGl0Y2ggPSBhcmdzLT53aWR0aCAqICgoYXJncy0+YnBwICsgNykgLyA4KTsKLQlhcmdzLT5zaXpl ID0gYXJncy0+cGl0Y2ggKiBhcmdzLT5oZWlnaHQ7Ci0KLQlyZXQgPSB2Ym94X2dlbV9jcmVhdGUo dmJveCwgYXJncy0+c2l6ZSwgZmFsc2UsICZnb2JqKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0 OwotCi0JcmV0ID0gZHJtX2dlbV9oYW5kbGVfY3JlYXRlKGZpbGUsIGdvYmosICZoYW5kbGUpOwot CWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChnb2JqKTsKLQlpZiAocmV0KQotCQlyZXR1cm4g cmV0OworCXN0cnVjdCB2Ym94X3ByaXZhdGUgKnZib3ggPSBkZXYtPmRldl9wcml2YXRlOwogCi0J YXJncy0+aGFuZGxlID0gaGFuZGxlOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXZvaWQgdmJveF9nZW1f ZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCi17Ci0Jc3RydWN0IHZib3hf Ym8gKnZib3hfYm8gPSBnZW1fdG9fdmJveF9ibyhvYmopOworCXJldHVybiBkcm1fZ2VtX3ZyYW1f ZmlsbF9jcmVhdGVfZHVtYihmaWxlLCBkZXYsICZ2Ym94LT50dG0uYmRldiwgMCwKKwkJCQkJICAg IGZhbHNlLCBhcmdzKTsKIAotCXR0bV9ib19wdXQoJnZib3hfYm8tPmJvKTsKLX0KLQotc3RhdGlj IGlubGluZSB1NjQgdmJveF9ib19tbWFwX29mZnNldChzdHJ1Y3QgdmJveF9ibyAqYm8pCi17Ci0J cmV0dXJuIGRybV92bWFfbm9kZV9vZmZzZXRfYWRkcigmYm8tPmJvLnZtYV9ub2RlKTsKLX0KLQot aW50Ci12Ym94X2R1bWJfbW1hcF9vZmZzZXQoc3RydWN0IGRybV9maWxlICpmaWxlLAotCQkgICAg ICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkgICAgICB1MzIgaGFuZGxlLCB1NjQgKm9mZnNl dCkKLXsKLQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKLQlpbnQgcmV0OwotCXN0cnVjdCB2 Ym94X2JvICpibzsKLQotCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKLQlvYmogPSBk cm1fZ2VtX29iamVjdF9sb29rdXAoZmlsZSwgaGFuZGxlKTsKLQlpZiAoIW9iaikgewotCQlyZXQg PSAtRU5PRU5UOwotCQlnb3RvIG91dF91bmxvY2s7Ci0JfQotCi0JYm8gPSBnZW1fdG9fdmJveF9i byhvYmopOwotCSpvZmZzZXQgPSB2Ym94X2JvX21tYXBfb2Zmc2V0KGJvKTsKLQotCWRybV9nZW1f b2JqZWN0X3B1dChvYmopOwotCXJldCA9IDA7Ci0KLW91dF91bmxvY2s6Ci0JbXV0ZXhfdW5sb2Nr KCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS92Ym94dmlkZW8vdmJveF9tb2RlLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmJveHZp ZGVvL3Zib3hfbW9kZS5jCmluZGV4IDYyMGE2ZTM4ZjcxZi4uOTQzMmMzY2VlYzdjIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL3Zib3hfbW9kZS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS92Ym94dmlkZW8vdmJveF9tb2RlLmMKQEAgLTE3Myw3ICsxNzMsOCBAQCBzdGF0aWMg dm9pZCB2Ym94X2NydGNfc2V0X2Jhc2VfYW5kX21vZGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAog CQkJCQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKIAkJCQkJaW50IHgsIGludCB5KQogewot CXN0cnVjdCB2Ym94X2JvICpibyA9IGdlbV90b192Ym94X2JvKHRvX3Zib3hfZnJhbWVidWZmZXIo ZmIpLT5vYmopOworCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8gPQorCQlkcm1fZ2Vt X3ZyYW1fb2ZfZ2VtKHRvX3Zib3hfZnJhbWVidWZmZXIoZmIpLT5vYmopOwogCXN0cnVjdCB2Ym94 X3ByaXZhdGUgKnZib3ggPSBjcnRjLT5kZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCB2Ym94X2Ny dGMgKnZib3hfY3J0YyA9IHRvX3Zib3hfY3J0YyhjcnRjKTsKIAlib29sIG5lZWRzX21vZGVzZXQg PSBkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChjcnRjLT5zdGF0ZSk7CkBAIC0xODcsNyAr MTg4LDcgQEAgc3RhdGljIHZvaWQgdmJveF9jcnRjX3NldF9iYXNlX2FuZF9tb2RlKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKIAogCXZib3hfY3J0Yy0+eCA9IHg7CiAJdmJveF9jcnRjLT55ID0geTsK LQl2Ym94X2NydGMtPmZiX29mZnNldCA9IHZib3hfYm9fZ3B1X29mZnNldChibyk7CisJdmJveF9j cnRjLT5mYl9vZmZzZXQgPSBkcm1fZ2VtX3ZyYW1fb2Zmc2V0KGdibyk7CiAKIAkvKiB2Ym94X2Rv X21vZGVzZXQoKSBjaGVja3MgdmJveC0+c2luZ2xlX2ZyYW1lYnVmZmVyIHNvIHVwZGF0ZSBpdCBu b3cgKi8KIAlpZiAobmVlZHNfbW9kZXNldCAmJiB2Ym94X3NldF91cF9pbnB1dF9tYXBwaW5nKHZi b3gpKSB7CkBAIC0zMDMsMTQgKzMwNCwxNCBAQCBzdGF0aWMgdm9pZCB2Ym94X3ByaW1hcnlfYXRv bWljX2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiBzdGF0aWMgaW50IHZib3hfcHJp bWFyeV9wcmVwYXJlX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQkJCSAgIHN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgKm5ld19zdGF0ZSkKIHsKLQlzdHJ1Y3QgdmJveF9ibyAqYm87CisJc3Ry dWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibzsKIAlpbnQgcmV0OwogCiAJaWYgKCFuZXdfc3Rh dGUtPmZiKQogCQlyZXR1cm4gMDsKIAotCWJvID0gZ2VtX3RvX3Zib3hfYm8odG9fdmJveF9mcmFt ZWJ1ZmZlcihuZXdfc3RhdGUtPmZiKS0+b2JqKTsKLQlyZXQgPSB2Ym94X2JvX3BpbihibywgVFRN X1BMX0ZMQUdfVlJBTSk7CisJZ2JvID0gZHJtX2dlbV92cmFtX29mX2dlbSh0b192Ym94X2ZyYW1l YnVmZmVyKG5ld19zdGF0ZS0+ZmIpLT5vYmopOworCXJldCA9IGRybV9nZW1fdnJhbV9waW4oZ2Jv LCBEUk1fR0VNX1ZSQU1fUExfRkxBR19WUkFNKTsKIAlpZiAocmV0KQogCQlEUk1fV0FSTigiRXJy b3IgJWQgcGlubmluZyBuZXcgZmIsIG91dCBvZiB2aWRlbyBtZW0/XG4iLCByZXQpOwogCkBAIC0z MjAsMTMgKzMyMSwxMyBAQCBzdGF0aWMgaW50IHZib3hfcHJpbWFyeV9wcmVwYXJlX2ZiKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLAogc3RhdGljIHZvaWQgdmJveF9wcmltYXJ5X2NsZWFudXBfZmIo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQkJICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUg Km9sZF9zdGF0ZSkKIHsKLQlzdHJ1Y3QgdmJveF9ibyAqYm87CisJc3RydWN0IGRybV9nZW1fdnJh bV9vYmplY3QgKmdibzsKIAogCWlmICghb2xkX3N0YXRlLT5mYikKIAkJcmV0dXJuOwogCi0JYm8g PSBnZW1fdG9fdmJveF9ibyh0b192Ym94X2ZyYW1lYnVmZmVyKG9sZF9zdGF0ZS0+ZmIpLT5vYmop OwotCXZib3hfYm9fdW5waW4oYm8pOworCWdibyA9IGRybV9nZW1fdnJhbV9vZl9nZW0odG9fdmJv eF9mcmFtZWJ1ZmZlcihvbGRfc3RhdGUtPmZiKS0+b2JqKTsKKwlkcm1fZ2VtX3ZyYW1fdW5waW4o Z2JvKTsKIH0KIAogc3RhdGljIGludCB2Ym94X2N1cnNvcl9hdG9taWNfY2hlY2soc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCkBAIC0zODYsNyArMzg3LDggQEAgc3RhdGljIHZvaWQgdmJveF9jdXJz b3JfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJY29udGFpbmVyX29m KHBsYW5lLT5kZXYsIHN0cnVjdCB2Ym94X3ByaXZhdGUsIGRkZXYpOwogCXN0cnVjdCB2Ym94X2Ny dGMgKnZib3hfY3J0YyA9IHRvX3Zib3hfY3J0YyhwbGFuZS0+c3RhdGUtPmNydGMpOwogCXN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmUtPnN0YXRlLT5mYjsKLQlzdHJ1Y3QgdmJveF9i byAqYm8gPSBnZW1fdG9fdmJveF9ibyh0b192Ym94X2ZyYW1lYnVmZmVyKGZiKS0+b2JqKTsKKwlz dHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvID0KKwkJZHJtX2dlbV92cmFtX29mX2dlbSh0 b192Ym94X2ZyYW1lYnVmZmVyKGZiKS0+b2JqKTsKIAl1MzIgd2lkdGggPSBwbGFuZS0+c3RhdGUt PmNydGNfdzsKIAl1MzIgaGVpZ2h0ID0gcGxhbmUtPnN0YXRlLT5jcnRjX2g7CiAJc2l6ZV90IGRh dGFfc2l6ZSwgbWFza19zaXplOwpAQCAtNDA1LDcgKzQwNyw3IEBAIHN0YXRpYyB2b2lkIHZib3hf Y3Vyc29yX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJdmJveF9jcnRj LT5jdXJzb3JfZW5hYmxlZCA9IHRydWU7CiAKIAkvKiBwaW5uaW5nIGlzIGRvbmUgaW4gcHJlcGFy ZS9jbGVhbnVwIGZyYW1lYnVmZmVyICovCi0Jc3JjID0gdmJveF9ib19rbWFwKGJvKTsKKwlzcmMg PSBkcm1fZ2VtX3ZyYW1fa21hcChnYm8sIHRydWUsIE5VTEwpOwogCWlmIChJU19FUlIoc3JjKSkg ewogCQltdXRleF91bmxvY2soJnZib3gtPmh3X211dGV4KTsKIAkJRFJNX1dBUk4oIkNvdWxkIG5v dCBrbWFwIGN1cnNvciBibywgc2tpcHBpbmcgdXBkYXRlXG4iKTsKQEAgLTQyMSw3ICs0MjMsNyBA QCBzdGF0aWMgdm9pZCB2Ym94X2N1cnNvcl9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAogCWRhdGFfc2l6ZSA9IHdpZHRoICogaGVpZ2h0ICogNCArIG1hc2tfc2l6ZTsKIAog CWNvcHlfY3Vyc29yX2ltYWdlKHNyYywgdmJveC0+Y3Vyc29yX2RhdGEsIHdpZHRoLCBoZWlnaHQs IG1hc2tfc2l6ZSk7Ci0JdmJveF9ib19rdW5tYXAoYm8pOworCWRybV9nZW1fdnJhbV9rdW5tYXAo Z2JvKTsKIAogCWZsYWdzID0gVkJPWF9NT1VTRV9QT0lOVEVSX1ZJU0lCTEUgfCBWQk9YX01PVVNF X1BPSU5URVJfU0hBUEUgfAogCQlWQk9YX01PVVNFX1BPSU5URVJfQUxQSEE7CkBAIC00NjEsMjUg KzQ2MywyNSBAQCBzdGF0aWMgdm9pZCB2Ym94X2N1cnNvcl9hdG9taWNfZGlzYWJsZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKIHN0YXRpYyBpbnQgdmJveF9jdXJzb3JfcHJlcGFyZV9mYihzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCQkgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19z dGF0ZSkKIHsKLQlzdHJ1Y3QgdmJveF9ibyAqYm87CisJc3RydWN0IGRybV9nZW1fdnJhbV9vYmpl Y3QgKmdibzsKIAogCWlmICghbmV3X3N0YXRlLT5mYikKIAkJcmV0dXJuIDA7CiAKLQlibyA9IGdl bV90b192Ym94X2JvKHRvX3Zib3hfZnJhbWVidWZmZXIobmV3X3N0YXRlLT5mYiktPm9iaik7Ci0J cmV0dXJuIHZib3hfYm9fcGluKGJvLCBUVE1fUExfRkxBR19TWVNURU0pOworCWdibyA9IGRybV9n ZW1fdnJhbV9vZl9nZW0odG9fdmJveF9mcmFtZWJ1ZmZlcihuZXdfc3RhdGUtPmZiKS0+b2JqKTsK KwlyZXR1cm4gZHJtX2dlbV92cmFtX3BpbihnYm8sIERSTV9HRU1fVlJBTV9QTF9GTEFHX1NZU1RF TSk7CiB9CiAKIHN0YXRpYyB2b2lkIHZib3hfY3Vyc29yX2NsZWFudXBfZmIoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCiAJCQkJICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKQog ewotCXN0cnVjdCB2Ym94X2JvICpibzsKKwlzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2Jv OwogCiAJaWYgKCFwbGFuZS0+c3RhdGUtPmZiKQogCQlyZXR1cm47CiAKLQlibyA9IGdlbV90b192 Ym94X2JvKHRvX3Zib3hfZnJhbWVidWZmZXIocGxhbmUtPnN0YXRlLT5mYiktPm9iaik7Ci0JdmJv eF9ib191bnBpbihibyk7CisJZ2JvID0gZHJtX2dlbV92cmFtX29mX2dlbSh0b192Ym94X2ZyYW1l YnVmZmVyKHBsYW5lLT5zdGF0ZS0+ZmIpLT5vYmopOworCWRybV9nZW1fdnJhbV91bnBpbihnYm8p OwogfQogCiBzdGF0aWMgY29uc3QgdTMyIHZib3hfY3Vyc29yX3BsYW5lX2Zvcm1hdHNbXSA9IHsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92Ym94dmlkZW8vdmJveF90dG0uYyBiL2RyaXZl cnMvZ3B1L2RybS92Ym94dmlkZW8vdmJveF90dG0uYwppbmRleCA5ZDc4NDM4YzI4NzcuLjA5ODlk NjU2ZWVkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby92Ym94X3R0bS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS92Ym94dmlkZW8vdmJveF90dG0uYwpAQCAtMTYsMjQgKzE2 LDYgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgdmJveF9wcml2YXRlICp2Ym94X2JkZXYoc3RydWN0 IHR0bV9ib19kZXZpY2UgKmJkKQogCXJldHVybiBjb250YWluZXJfb2YoYmQsIHN0cnVjdCB2Ym94 X3ByaXZhdGUsIHR0bS5iZGV2KTsKIH0KIAotc3RhdGljIHZvaWQgdmJveF9ib190dG1fZGVzdHJv eShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKnRibykKLXsKLQlzdHJ1Y3QgdmJveF9ibyAqYm87 Ci0KLQlibyA9IGNvbnRhaW5lcl9vZih0Ym8sIHN0cnVjdCB2Ym94X2JvLCBibyk7Ci0KLQlkcm1f Z2VtX29iamVjdF9yZWxlYXNlKCZiby0+Z2VtKTsKLQlrZnJlZShibyk7Ci19Ci0KLXN0YXRpYyBi b29sIHZib3hfdHRtX2JvX2lzX3Zib3hfYm8oc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibykK LXsKLQlpZiAoYm8tPmRlc3Ryb3kgPT0gJnZib3hfYm9fdHRtX2Rlc3Ryb3kpCi0JCXJldHVybiB0 cnVlOwotCi0JcmV0dXJuIGZhbHNlOwotfQotCiBzdGF0aWMgaW50CiB2Ym94X2JvX2luaXRfbWVt X3R5cGUoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsIHUzMiB0eXBlLAogCQkgICAgICBzdHJ1 Y3QgdHRtX21lbV90eXBlX21hbmFnZXIgKm1hbikKQEAgLTU4LDI0ICs0MCw2IEBAIHZib3hfYm9f aW5pdF9tZW1fdHlwZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwgdTMyIHR5cGUsCiAJcmV0 dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkCi12Ym94X2JvX2V2aWN0X2ZsYWdzKHN0cnVjdCB0dG1f YnVmZmVyX29iamVjdCAqYm8sIHN0cnVjdCB0dG1fcGxhY2VtZW50ICpwbCkKLXsKLQlzdHJ1Y3Qg dmJveF9ibyAqdmJveGJvID0gdmJveF9ibyhibyk7Ci0KLQlpZiAoIXZib3hfdHRtX2JvX2lzX3Zi b3hfYm8oYm8pKQotCQlyZXR1cm47Ci0KLQl2Ym94X3R0bV9wbGFjZW1lbnQodmJveGJvLCBUVE1f UExfRkxBR19TWVNURU0pOwotCSpwbCA9IHZib3hiby0+cGxhY2VtZW50OwotfQotCi1zdGF0aWMg aW50IHZib3hfYm9fdmVyaWZ5X2FjY2VzcyhzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAot CQkJCSBzdHJ1Y3QgZmlsZSAqZmlscCkKLXsKLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIGludCB2 Ym94X3R0bV9pb19tZW1fcmVzZXJ2ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKIAkJCQkg ICBzdHJ1Y3QgdHRtX21lbV9yZWcgKm1lbSkKIHsKQEAgLTE0MSw4ICsxMDUsOCBAQCBzdGF0aWMg c3RydWN0IHR0bV9ib19kcml2ZXIgdmJveF9ib19kcml2ZXIgPSB7CiAJLnR0bV90dF9jcmVhdGUg PSB2Ym94X3R0bV90dF9jcmVhdGUsCiAJLmluaXRfbWVtX3R5cGUgPSB2Ym94X2JvX2luaXRfbWVt X3R5cGUsCiAJLmV2aWN0aW9uX3ZhbHVhYmxlID0gdHRtX2JvX2V2aWN0aW9uX3ZhbHVhYmxlLAot CS5ldmljdF9mbGFncyA9IHZib3hfYm9fZXZpY3RfZmxhZ3MsCi0JLnZlcmlmeV9hY2Nlc3MgPSB2 Ym94X2JvX3ZlcmlmeV9hY2Nlc3MsCisJLmV2aWN0X2ZsYWdzID0gZHJtX2dlbV92cmFtX2JvX2Ry aXZlcl9ldmljdF9mbGFncywKKwkudmVyaWZ5X2FjY2VzcyA9IGRybV9nZW1fdnJhbV9ib19kcml2 ZXJfdmVyaWZ5X2FjY2VzcywKIAkuaW9fbWVtX3Jlc2VydmUgPSAmdmJveF90dG1faW9fbWVtX3Jl c2VydmUsCiAJLmlvX21lbV9mcmVlID0gJnZib3hfdHRtX2lvX21lbV9mcmVlLAogfTsKQEAgLTE5 NiwxNjUgKzE2MCw2IEBAIHZvaWQgdmJveF9tbV9maW5pKHN0cnVjdCB2Ym94X3ByaXZhdGUgKnZi b3gpCiAJdHRtX2JvX2RldmljZV9yZWxlYXNlKCZ2Ym94LT50dG0uYmRldik7CiB9CiAKLXZvaWQg dmJveF90dG1fcGxhY2VtZW50KHN0cnVjdCB2Ym94X2JvICpibywgaW50IGRvbWFpbikKLXsKLQl1 bnNpZ25lZCBpbnQgaTsKLQl1MzIgYyA9IDA7Ci0KLQliby0+cGxhY2VtZW50LnBsYWNlbWVudCA9 IGJvLT5wbGFjZW1lbnRzOwotCWJvLT5wbGFjZW1lbnQuYnVzeV9wbGFjZW1lbnQgPSBiby0+cGxh Y2VtZW50czsKLQotCWlmIChkb21haW4gJiBUVE1fUExfRkxBR19WUkFNKQotCQliby0+cGxhY2Vt ZW50c1tjKytdLmZsYWdzID0KLQkJICAgIFRUTV9QTF9GTEFHX1dDIHwgVFRNX1BMX0ZMQUdfVU5D QUNIRUQgfCBUVE1fUExfRkxBR19WUkFNOwotCWlmIChkb21haW4gJiBUVE1fUExfRkxBR19TWVNU RU0pCi0JCWJvLT5wbGFjZW1lbnRzW2MrK10uZmxhZ3MgPQotCQkgICAgVFRNX1BMX01BU0tfQ0FD SElORyB8IFRUTV9QTF9GTEFHX1NZU1RFTTsKLQlpZiAoIWMpCi0JCWJvLT5wbGFjZW1lbnRzW2Mr K10uZmxhZ3MgPQotCQkgICAgVFRNX1BMX01BU0tfQ0FDSElORyB8IFRUTV9QTF9GTEFHX1NZU1RF TTsKLQotCWJvLT5wbGFjZW1lbnQubnVtX3BsYWNlbWVudCA9IGM7Ci0JYm8tPnBsYWNlbWVudC5u dW1fYnVzeV9wbGFjZW1lbnQgPSBjOwotCi0JZm9yIChpID0gMDsgaSA8IGM7ICsraSkgewotCQli by0+cGxhY2VtZW50c1tpXS5mcGZuID0gMDsKLQkJYm8tPnBsYWNlbWVudHNbaV0ubHBmbiA9IDA7 Ci0JfQotfQotCi1pbnQgdmJveF9ib19jcmVhdGUoc3RydWN0IHZib3hfcHJpdmF0ZSAqdmJveCwg aW50IHNpemUsIGludCBhbGlnbiwKLQkJICAgdTMyIGZsYWdzLCBzdHJ1Y3QgdmJveF9ibyAqKnB2 Ym94Ym8pCi17Ci0Jc3RydWN0IHZib3hfYm8gKnZib3hibzsKLQlzaXplX3QgYWNjX3NpemU7Ci0J aW50IHJldDsKLQotCXZib3hibyA9IGt6YWxsb2Moc2l6ZW9mKCp2Ym94Ym8pLCBHRlBfS0VSTkVM KTsKLQlpZiAoIXZib3hibykKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQlyZXQgPSBkcm1fZ2VtX29i amVjdF9pbml0KCZ2Ym94LT5kZGV2LCAmdmJveGJvLT5nZW0sIHNpemUpOwotCWlmIChyZXQpCi0J CWdvdG8gZXJyX2ZyZWVfdmJveGJvOwotCi0JdmJveGJvLT5iby5iZGV2ID0gJnZib3gtPnR0bS5i ZGV2OwotCi0JdmJveF90dG1fcGxhY2VtZW50KHZib3hibywgVFRNX1BMX0ZMQUdfVlJBTSB8IFRU TV9QTF9GTEFHX1NZU1RFTSk7Ci0KLQlhY2Nfc2l6ZSA9IHR0bV9ib19kbWFfYWNjX3NpemUoJnZi b3gtPnR0bS5iZGV2LCBzaXplLAotCQkJCSAgICAgICBzaXplb2Yoc3RydWN0IHZib3hfYm8pKTsK LQotCXJldCA9IHR0bV9ib19pbml0KCZ2Ym94LT50dG0uYmRldiwgJnZib3hiby0+Ym8sIHNpemUs Ci0JCQkgIHR0bV9ib190eXBlX2RldmljZSwgJnZib3hiby0+cGxhY2VtZW50LAotCQkJICBhbGln biA+PiBQQUdFX1NISUZULCBmYWxzZSwgYWNjX3NpemUsCi0JCQkgIE5VTEwsIE5VTEwsIHZib3hf Ym9fdHRtX2Rlc3Ryb3kpOwotCWlmIChyZXQpCi0JCWdvdG8gZXJyX2ZyZWVfdmJveGJvOwotCi0J KnB2Ym94Ym8gPSB2Ym94Ym87Ci0KLQlyZXR1cm4gMDsKLQotZXJyX2ZyZWVfdmJveGJvOgotCWtm cmVlKHZib3hibyk7Ci0JcmV0dXJuIHJldDsKLX0KLQotaW50IHZib3hfYm9fcGluKHN0cnVjdCB2 Ym94X2JvICpibywgdTMyIHBsX2ZsYWcpCi17Ci0Jc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4IGN0 eCA9IHsgZmFsc2UsIGZhbHNlIH07Ci0JaW50IGksIHJldDsKLQotCWlmIChiby0+cGluX2NvdW50 KSB7Ci0JCWJvLT5waW5fY291bnQrKzsKLQkJcmV0dXJuIDA7Ci0JfQotCi0JcmV0ID0gdmJveF9i b19yZXNlcnZlKGJvLCBmYWxzZSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCXZib3hf dHRtX3BsYWNlbWVudChibywgcGxfZmxhZyk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgYm8tPnBsYWNl bWVudC5udW1fcGxhY2VtZW50OyBpKyspCi0JCWJvLT5wbGFjZW1lbnRzW2ldLmZsYWdzIHw9IFRU TV9QTF9GTEFHX05PX0VWSUNUOwotCi0JcmV0ID0gdHRtX2JvX3ZhbGlkYXRlKCZiby0+Ym8sICZi by0+cGxhY2VtZW50LCAmY3R4KTsKLQlpZiAocmV0ID09IDApCi0JCWJvLT5waW5fY291bnQgPSAx OwotCi0JdmJveF9ib191bnJlc2VydmUoYm8pOwotCi0JcmV0dXJuIHJldDsKLX0KLQotaW50IHZi b3hfYm9fdW5waW4oc3RydWN0IHZib3hfYm8gKmJvKQotewotCXN0cnVjdCB0dG1fb3BlcmF0aW9u X2N0eCBjdHggPSB7IGZhbHNlLCBmYWxzZSB9OwotCWludCBpLCByZXQ7Ci0KLQlpZiAoIWJvLT5w aW5fY291bnQpIHsKLQkJRFJNX0VSUk9SKCJ1bnBpbiBiYWQgJXBcbiIsIGJvKTsKLQkJcmV0dXJu IDA7Ci0JfQotCWJvLT5waW5fY291bnQtLTsKLQlpZiAoYm8tPnBpbl9jb3VudCkKLQkJcmV0dXJu IDA7Ci0KLQlyZXQgPSB2Ym94X2JvX3Jlc2VydmUoYm8sIGZhbHNlKTsKLQlpZiAocmV0KSB7Ci0J CURSTV9FUlJPUigiRXJyb3IgJWQgcmVzZXJ2aW5nIGJvLCBsZWF2aW5nIGl0IHBpbm5lZFxuIiwg cmV0KTsKLQkJcmV0dXJuIHJldDsKLQl9Ci0KLQlmb3IgKGkgPSAwOyBpIDwgYm8tPnBsYWNlbWVu dC5udW1fcGxhY2VtZW50OyBpKyspCi0JCWJvLT5wbGFjZW1lbnRzW2ldLmZsYWdzICY9IH5UVE1f UExfRkxBR19OT19FVklDVDsKLQotCXJldCA9IHR0bV9ib192YWxpZGF0ZSgmYm8tPmJvLCAmYm8t PnBsYWNlbWVudCwgJmN0eCk7Ci0KLQl2Ym94X2JvX3VucmVzZXJ2ZShibyk7Ci0KLQlyZXR1cm4g cmV0OwotfQotCi0vKgotICogTW92ZSBhIHZib3gtb3duZWQgYnVmZmVyIG9iamVjdCB0byBzeXN0 ZW0gbWVtb3J5IGlmIG5vIG9uZSBlbHNlIGhhcyBpdAotICogcGlubmVkLiAgVGhlIGNhbGxlciBt dXN0IGhhdmUgcGlubmVkIGl0IHByZXZpb3VzbHksIGFuZCB0aGlzIGNhbGwgd2lsbAotICogcmVs ZWFzZSB0aGUgY2FsbGVyJ3MgcGluLgotICovCi1pbnQgdmJveF9ib19wdXNoX3N5c3JhbShzdHJ1 Y3QgdmJveF9ibyAqYm8pCi17Ci0Jc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4IGN0eCA9IHsgZmFs c2UsIGZhbHNlIH07Ci0JaW50IGksIHJldDsKLQotCWlmICghYm8tPnBpbl9jb3VudCkgewotCQlE Uk1fRVJST1IoInVucGluIGJhZCAlcFxuIiwgYm8pOwotCQlyZXR1cm4gMDsKLQl9Ci0JYm8tPnBp bl9jb3VudC0tOwotCWlmIChiby0+cGluX2NvdW50KQotCQlyZXR1cm4gMDsKLQotCWlmIChiby0+ a21hcC52aXJ0dWFsKSB7Ci0JCXR0bV9ib19rdW5tYXAoJmJvLT5rbWFwKTsKLQkJYm8tPmttYXAu dmlydHVhbCA9IE5VTEw7Ci0JfQotCi0JdmJveF90dG1fcGxhY2VtZW50KGJvLCBUVE1fUExfRkxB R19TWVNURU0pOwotCi0JZm9yIChpID0gMDsgaSA8IGJvLT5wbGFjZW1lbnQubnVtX3BsYWNlbWVu dDsgaSsrKQotCQliby0+cGxhY2VtZW50c1tpXS5mbGFncyB8PSBUVE1fUExfRkxBR19OT19FVklD VDsKLQotCXJldCA9IHR0bV9ib192YWxpZGF0ZSgmYm8tPmJvLCAmYm8tPnBsYWNlbWVudCwgJmN0 eCk7Ci0JaWYgKHJldCkgewotCQlEUk1fRVJST1IoInB1c2hpbmcgdG8gVlJBTSBmYWlsZWRcbiIp OwotCQlyZXR1cm4gcmV0OwotCX0KLQotCXJldHVybiAwOwotfQotCiBpbnQgdmJveF9tbWFwKHN0 cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKIHsKIAlzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGVfcHJpdiA9IGZpbHAtPnByaXZhdGVfZGF0YTsKQEAgLTM2MiwyNyArMTY3 LDMgQEAgaW50IHZib3hfbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEpCiAKIAlyZXR1cm4gdHRtX2JvX21tYXAoZmlscCwgdm1hLCAmdmJveC0+dHRtLmJk ZXYpOwogfQotCi12b2lkICp2Ym94X2JvX2ttYXAoc3RydWN0IHZib3hfYm8gKmJvKQotewotCWlu dCByZXQ7Ci0KLQlpZiAoYm8tPmttYXAudmlydHVhbCkKLQkJcmV0dXJuIGJvLT5rbWFwLnZpcnR1 YWw7Ci0KLQlyZXQgPSB0dG1fYm9fa21hcCgmYm8tPmJvLCAwLCBiby0+Ym8ubnVtX3BhZ2VzLCAm Ym8tPmttYXApOwotCWlmIChyZXQpIHsKLQkJRFJNX0VSUk9SKCJFcnJvciBrbWFwcGluZyBibzog JWRcbiIsIHJldCk7Ci0JCXJldHVybiBOVUxMOwotCX0KLQotCXJldHVybiBiby0+a21hcC52aXJ0 dWFsOwotfQotCi12b2lkIHZib3hfYm9fa3VubWFwKHN0cnVjdCB2Ym94X2JvICpibykKLXsKLQlp ZiAoYm8tPmttYXAudmlydHVhbCkgewotCQl0dG1fYm9fa3VubWFwKCZiby0+a21hcCk7Ci0JCWJv LT5rbWFwLnZpcnR1YWwgPSBOVUxMOwotCX0KLX0KLS0gCjIuMjEuMAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs