From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH 10/15] drm/mgag200: Convert mgag200 driver to |struct drm_gem_ttm_object| Date: Mon, 8 Apr 2019 11:21:39 +0200 Message-ID: <20190408092144.4548-11-tzimmermann@suse.de> References: <20190408092144.4548-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 65DF7897B4 for ; Mon, 8 Apr 2019 09:21:55 +0000 (UTC) In-Reply-To: <20190408092144.4548-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, Jerry.Zhang@amd.com, hdegoede@redhat.com, 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 U2lnbmVkLW9mZi1ieTogVGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGU+Ci0t LQogZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvS2NvbmZpZyAgICAgICAgICB8ICAgMSArCiBkcml2 ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2N1cnNvci5jIHwgIDYxICsrKystLS0tCiBkcml2 ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2Rydi5jICAgIHwgICA0ICstCiBkcml2ZXJzL2dw dS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2Rydi5oICAgIHwgIDYyICsrLS0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2ZiLmMgICAgIHwgIDE4ICstLQogZHJpdmVycy9ncHUvZHJt L21nYWcyMDAvbWdhZzIwMF9tYWluLmMgICB8ICA4NCArKystLS0tLS0tLQogZHJpdmVycy9ncHUv ZHJtL21nYWcyMDAvbWdhZzIwMF9tb2RlLmMgICB8ICA0NSArKystLS0KIGRyaXZlcnMvZ3B1L2Ry bS9tZ2FnMjAwL21nYWcyMDBfdHRtLmMgICAgfCAxNzIgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IDggZmlsZXMgY2hhbmdlZCwgMTAxIGluc2VydGlvbnMoKyksIDM0NiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9LY29uZmlnIGIvZHJpdmVycy9ncHUv ZHJtL21nYWcyMDAvS2NvbmZpZwppbmRleCBkYjU4NTc4NzE5ZDIuLmI1ZWVkNGUwZTQ1MiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvS2NvbmZpZworKysgYi9kcml2ZXJzL2dw dS9kcm0vbWdhZzIwMC9LY29uZmlnCkBAIC0zLDYgKzMsNyBAQCBjb25maWcgRFJNX01HQUcyMDAK IAlkZXBlbmRzIG9uIERSTSAmJiBQQ0kgJiYgTU1VCiAJc2VsZWN0IERSTV9LTVNfSEVMUEVSCiAJ c2VsZWN0IERSTV9UVE0KKwlzZWxlY3QgRFJNX0dFTV9UVE1fSEVMUEVSCiAJaGVscAogCSBUaGlz IGlzIGEgS01TIGRyaXZlciBmb3IgdGhlIE1HQSBHMjAwIHNlcnZlciBjaGlwcywgaXQKICAgICAg ICAgIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9yaWdpbmFsIE1HQSBHMjAwIG9yIGFueSBvZiB0aGUg ZGVza3RvcApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9jdXJz b3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfY3Vyc29yLmMKaW5kZXggOTY4 ZTIwMzc5ZDU0Li43ZThlOWY5MjQ4NmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZ2Fn MjAwL21nYWcyMDBfY3Vyc29yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIw MF9jdXJzb3IuYwpAQCAtMjMsOSArMjMsOSBAQCBzdGF0aWMgdm9pZCBtZ2FfaGlkZV9jdXJzb3Io c3RydWN0IG1nYV9kZXZpY2UgKm1kZXYpCiAJV1JFRzgoTUdBX0NVUlBPU1hMLCAwKTsKIAlXUkVH OChNR0FfQ1VSUE9TWEgsIDApOwogCWlmIChtZGV2LT5jdXJzb3IucGl4ZWxzXzEtPnBpbl9jb3Vu dCkKLQkJbWdhZzIwMF9ib191bnBpbihtZGV2LT5jdXJzb3IucGl4ZWxzXzEpOworCQlkcm1fZ2Vt X3R0bV91bnBpbihtZGV2LT5jdXJzb3IucGl4ZWxzXzEpOwogCWlmIChtZGV2LT5jdXJzb3IucGl4 ZWxzXzItPnBpbl9jb3VudCkKLQkJbWdhZzIwMF9ib191bnBpbihtZGV2LT5jdXJzb3IucGl4ZWxz XzIpOworCQlkcm1fZ2VtX3R0bV91bnBpbihtZGV2LT5jdXJzb3IucGl4ZWxzXzIpOwogfQogCiBp bnQgbWdhX2NydGNfY3Vyc29yX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCkBAIC0zNiwxMiAr MzYsMTIgQEAgaW50IG1nYV9jcnRjX2N1cnNvcl9zZXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAog ewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0IG1nYV9kZXZp Y2UgKm1kZXYgPSAoc3RydWN0IG1nYV9kZXZpY2UgKilkZXYtPmRldl9wcml2YXRlOwotCXN0cnVj dCBtZ2FnMjAwX2JvICpwaXhlbHNfMSA9IG1kZXYtPmN1cnNvci5waXhlbHNfMTsKLQlzdHJ1Y3Qg bWdhZzIwMF9ibyAqcGl4ZWxzXzIgPSBtZGV2LT5jdXJzb3IucGl4ZWxzXzI7Ci0Jc3RydWN0IG1n YWcyMDBfYm8gKnBpeGVsc19jdXJyZW50ID0gbWRldi0+Y3Vyc29yLnBpeGVsc19jdXJyZW50Owot CXN0cnVjdCBtZ2FnMjAwX2JvICpwaXhlbHNfcHJldiA9IG1kZXYtPmN1cnNvci5waXhlbHNfcHJl djsKKwlzdHJ1Y3QgZHJtX2dlbV90dG1fb2JqZWN0ICpwaXhlbHNfMSA9IG1kZXYtPmN1cnNvci5w aXhlbHNfMTsKKwlzdHJ1Y3QgZHJtX2dlbV90dG1fb2JqZWN0ICpwaXhlbHNfMiA9IG1kZXYtPmN1 cnNvci5waXhlbHNfMjsKKwlzdHJ1Y3QgZHJtX2dlbV90dG1fb2JqZWN0ICpwaXhlbHNfY3VycmVu dCA9IG1kZXYtPmN1cnNvci5waXhlbHNfY3VycmVudDsKKwlzdHJ1Y3QgZHJtX2dlbV90dG1fb2Jq ZWN0ICpwaXhlbHNfcHJldiA9IG1kZXYtPmN1cnNvci5waXhlbHNfcHJldjsKIAlzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iajsKLQlzdHJ1Y3QgbWdhZzIwMF9ibyAqYm8gPSBOVUxMOworCXN0cnVj dCBkcm1fZ2VtX3R0bV9vYmplY3QgKmdibyA9IE5VTEw7CiAJaW50IHJldCA9IDA7CiAJdW5zaWdu ZWQgaW50IGksIHJvdywgY29sOwogCXVpbnQzMl90IGNvbG91cl9zZXRbMTZdOwpAQCAtNzksNDQg Kzc5LDU1IEBAIGludCBtZ2FfY3J0Y19jdXJzb3Jfc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK IAlpZiAoIW9iaikKIAkJcmV0dXJuIC1FTk9FTlQ7CiAKLQlyZXQgPSBtZ2FnMjAwX2JvX3Jlc2Vy dmUocGl4ZWxzXzEsIHRydWUpOworCXJldCA9IGRybV9nZW1fdHRtX3Jlc2VydmUocGl4ZWxzXzEs IHRydWUpOwogCWlmIChyZXQpIHsKIAkJV1JFRzgoTUdBX0NVUlBPU1hMLCAwKTsKIAkJV1JFRzgo TUdBX0NVUlBPU1hILCAwKTsKIAkJZ290byBvdXRfdW5yZWY7CiAJfQotCXJldCA9IG1nYWcyMDBf Ym9fcmVzZXJ2ZShwaXhlbHNfMiwgdHJ1ZSk7CisJcmV0ID0gZHJtX2dlbV90dG1fcmVzZXJ2ZShw aXhlbHNfMiwgdHJ1ZSk7CiAJaWYgKHJldCkgewogCQlXUkVHOChNR0FfQ1VSUE9TWEwsIDApOwog CQlXUkVHOChNR0FfQ1VSUE9TWEgsIDApOwotCQltZ2FnMjAwX2JvX3VucmVzZXJ2ZShwaXhlbHNf MSk7CisJCWRybV9nZW1fdHRtX3VucmVzZXJ2ZShwaXhlbHNfMSk7CiAJCWdvdG8gb3V0X3VucmVz ZXJ2ZTE7CiAJfQogCiAJLyogTW92ZSBjdXJzb3IgYnVmZmVycyBpbnRvIFZSQU0gaWYgdGhleSBh cmVuJ3QgYWxyZWFkeSAqLwogCWlmICghcGl4ZWxzXzEtPnBpbl9jb3VudCkgewotCQlyZXQgPSBt Z2FnMjAwX2JvX3BpbihwaXhlbHNfMSwgVFRNX1BMX0ZMQUdfVlJBTSwKLQkJCQkgICAgICZtZGV2 LT5jdXJzb3IucGl4ZWxzXzFfZ3B1X2FkZHIpOworCQlyZXQgPSBkcm1fZ2VtX3R0bV9waW4ocGl4 ZWxzXzEsIFRUTV9QTF9GTEFHX1ZSQU0pOwogCQlpZiAocmV0KQogCQkJZ290byBvdXQxOworCQln cHVfYWRkciA9IGRybV9nZW1fdHRtX3ZyYW1fb2Zmc2V0KHBpeGVsc18xKTsKKwkJaWYgKGdwdV9h ZGRyIDwgMCkgeworCQkJZHJtX2dlbV90dG1fdW5waW4ocGl4ZWxzXzEpOworCQkJZ290byBvdXQx OworCQl9CisJCW1kZXYtPmN1cnNvci5waXhlbHNfMV9ncHVfYWRkciA9IGdwdV9hZGRyOwogCX0K IAlpZiAoIXBpeGVsc18yLT5waW5fY291bnQpIHsKLQkJcmV0ID0gbWdhZzIwMF9ib19waW4ocGl4 ZWxzXzIsIFRUTV9QTF9GTEFHX1ZSQU0sCi0JCQkJICAgICAmbWRldi0+Y3Vyc29yLnBpeGVsc18y X2dwdV9hZGRyKTsKKwkJcmV0ID0gZHJtX2dlbV90dG1fcGluKHBpeGVsc18yLCBUVE1fUExfRkxB R19WUkFNKTsKIAkJaWYgKHJldCkgewotCQkJbWdhZzIwMF9ib191bnBpbihwaXhlbHNfMSk7CisJ CQlkcm1fZ2VtX3R0bV91bnBpbihwaXhlbHNfMSk7CisJCQlnb3RvIG91dDE7CisJCX0KKwkJZ3B1 X2FkZHIgPSBkcm1fZ2VtX3R0bV92cmFtX29mZnNldChwaXhlbHNfMik7CisJCWlmIChncHVfYWRk ciA8IDApIHsKKwkJCWRybV9nZW1fdHRtX3VucGluKHBpeGVsc18xKTsKKwkJCWRybV9nZW1fdHRt X3VucGluKHBpeGVsc18yKTsKIAkJCWdvdG8gb3V0MTsKIAkJfQorCQltZGV2LT5jdXJzb3IucGl4 ZWxzXzJfZ3B1X2FkZHIgPSBncHVfYWRkcjsKIAl9CiAKLQlibyA9IGdlbV90b19tZ2FfYm8ob2Jq KTsKLQlyZXQgPSBtZ2FnMjAwX2JvX3Jlc2VydmUoYm8sIHRydWUpOworCWdibyA9IGRybV9nZW1f dHRtX29mX2dlbShvYmopOworCXJldCA9IGRybV9nZW1fdHRtX3Jlc2VydmUoZ2JvLCB0cnVlKTsK IAlpZiAocmV0KSB7CiAJCWRldl9lcnIoJmRldi0+cGRldi0+ZGV2LCAiZmFpbGVkIHRvIHJlc2Vy dmUgdXNlciBib1xuIik7CiAJCWdvdG8gb3V0MTsKIAl9Ci0JaWYgKCFiby0+a21hcC52aXJ0dWFs KSB7Ci0JCXJldCA9IHR0bV9ib19rbWFwKCZiby0+Ym8sIDAsIGJvLT5iby5udW1fcGFnZXMsICZi by0+a21hcCk7CisJaWYgKCFnYm8tPmttYXAudmlydHVhbCkgeworCQlyZXQgPSB0dG1fYm9fa21h cCgmZ2JvLT5ibywgMCwgZ2JvLT5iby5udW1fcGFnZXMsICZnYm8tPmttYXApOwogCQlpZiAocmV0 KSB7CiAJCQlkZXZfZXJyKCZkZXYtPnBkZXYtPmRldiwgImZhaWxlZCB0byBrbWFwIHVzZXIgYnVm ZmVyIHVwZGF0ZXNcbiIpOwogCQkJZ290byBvdXQyOwpAQCAtMTI2LDcgKzEzNyw3IEBAIGludCBt Z2FfY3J0Y19jdXJzb3Jfc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAltZW1zZXQoJmNvbG91 cl9zZXRbMF0sIDAsIHNpemVvZih1aW50MzJfdCkqMTYpOwogCS8qIHdpZHRoKmhlaWdodCo0ID0g MTYzODQgKi8KIAlmb3IgKGkgPSAwOyBpIDwgMTYzODQ7IGkgKz0gNCkgewotCQl0aGlzX2NvbG91 ciA9IGlvcmVhZDMyKGJvLT5rbWFwLnZpcnR1YWwgKyBpKTsKKwkJdGhpc19jb2xvdXIgPSBpb3Jl YWQzMihnYm8tPmttYXAudmlydHVhbCArIGkpOwogCQkvKiBObyB0cmFuc3BhcmVuY3kgKi8KIAkJ aWYgKHRoaXNfY29sb3VyPj4yNCAhPSAweGZmICYmCiAJCQl0aGlzX2NvbG91cj4+MjQgIT0gMHgw KSB7CkBAIC0xOTIsNyArMjAzLDcgQEAgaW50IG1nYV9jcnRjX2N1cnNvcl9zZXQoc3RydWN0IGRy bV9jcnRjICpjcnRjLAogCWZvciAocm93ID0gMDsgcm93IDwgNjQ7IHJvdysrKSB7CiAJCW1lbXNl dCgmdGhpc19yb3dbMF0sIDAsIDQ4KTsKIAkJZm9yIChjb2wgPSAwOyBjb2wgPCA2NDsgY29sKysp IHsKLQkJCXRoaXNfY29sb3VyID0gaW9yZWFkMzIoYm8tPmttYXAudmlydHVhbCArIDQqKGNvbCAr IDY0KnJvdykpOworCQkJdGhpc19jb2xvdXIgPSBpb3JlYWQzMihnYm8tPmttYXAudmlydHVhbCAr IDQqKGNvbCArIDY0KnJvdykpOwogCQkJLyogd3JpdGUgdHJhbnNwYXJlbnQgcGl4ZWxzICovCiAJ CQlpZiAodGhpc19jb2xvdXI+PjI0ID09IDB4MCkgewogCQkJCXRoaXNfcm93WzQ3IC0gY29sLzhd IHw9IDB4ODA+Pihjb2wlOCk7CkBAIC0yMzgsMTUgKzI0OSwxNSBAQCBpbnQgbWdhX2NydGNfY3Vy c29yX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIAl0dG1fYm9fa3VubWFwKCZwaXhlbHNf cHJldi0+a21hcCk7CiAgb3V0MzoKLQl0dG1fYm9fa3VubWFwKCZiby0+a21hcCk7CisJdHRtX2Jv X2t1bm1hcCgmZ2JvLT5rbWFwKTsKICBvdXQyOgotCW1nYWcyMDBfYm9fdW5yZXNlcnZlKGJvKTsK Kwlkcm1fZ2VtX3R0bV91bnJlc2VydmUoZ2JvKTsKICBvdXQxOgogCWlmIChyZXQpCiAJCW1nYV9o aWRlX2N1cnNvcihtZGV2KTsKLQltZ2FnMjAwX2JvX3VucmVzZXJ2ZShwaXhlbHNfMSk7CisJZHJt X2dlbV90dG1fdW5yZXNlcnZlKHBpeGVsc18xKTsKIG91dF91bnJlc2VydmUxOgotCW1nYWcyMDBf Ym9fdW5yZXNlcnZlKHBpeGVsc18yKTsKKwlkcm1fZ2VtX3R0bV91bnJlc2VydmUocGl4ZWxzXzIp Owogb3V0X3VucmVmOgogCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChvYmopOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2Rydi5jIGIvZHJpdmVycy9n cHUvZHJtL21nYWcyMDAvbWdhZzIwMF9kcnYuYwppbmRleCBhYzZhZjRiZDlkZjYuLjFmYTUyYzM2 ZDc4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9kcnYuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2Rydi5jCkBAIC04MCw5ICs4MCw5 IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBkcml2ZXIgPSB7CiAJLm1pbm9yID0gRFJJVkVS X01JTk9SLAogCS5wYXRjaGxldmVsID0gRFJJVkVSX1BBVENITEVWRUwsCiAKLQkuZ2VtX2ZyZWVf b2JqZWN0X3VubG9ja2VkID0gbWdhZzIwMF9nZW1fZnJlZV9vYmplY3QsCisJLmdlbV9mcmVlX29i amVjdF91bmxvY2tlZCA9IGRybV9nZW1fdHRtX2RyaXZlcl9nZW1fZnJlZV9vYmplY3RfdW5sb2Nr ZWQsCiAJLmR1bWJfY3JlYXRlID0gbWdhZzIwMF9kdW1iX2NyZWF0ZSwKLQkuZHVtYl9tYXBfb2Zm c2V0ID0gbWdhZzIwMF9kdW1iX21tYXBfb2Zmc2V0LAorCS5kdW1iX21hcF9vZmZzZXQgPSBkcm1f Z2VtX3R0bV9kcml2ZXJfZHVtYl9tbWFwX29mZnNldCwKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgcGNp X2RyaXZlciBtZ2FnMjAwX3BjaV9kcml2ZXIgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbWdhZzIwMC9tZ2FnMjAwX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIw MF9kcnYuaAppbmRleCA4YzMxZTQ0MjJjYWUuLmEzMTEwYTAwNjZiOSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v bWdhZzIwMC9tZ2FnMjAwX2Rydi5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAy MDEwIE1hdHQgVHVybmVyLgotICogQ29weXJpZ2h0IDIwMTIgUmVkIEhhdCAKKyAqIENvcHlyaWdo dCAyMDEyIFJlZCBIYXQKICAqCiAgKiBUaGlzIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMg YW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsCiAgKiBQdWJsaWMgTGljZW5zZSB2ZXJz aW9uIDIuIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBtYWluCkBAIC0yNCw2ICsyNCw3IEBA CiAjaW5jbHVkZSA8ZHJtL3R0bS90dG1fbW9kdWxlLmg+CiAKICNpbmNsdWRlIDxkcm0vZHJtX2dl bS5oPgorI2luY2x1ZGUgPGRybS9kcm1fZ2VtX3R0bV9oZWxwZXIuaD4KIAogI2luY2x1ZGUgPGxp bnV4L2kyYy5oPgogI2luY2x1ZGUgPGxpbnV4L2kyYy1hbGdvLWJpdC5oPgpAQCAtMTU5LDEzICsx NjAsMTMgQEAgc3RydWN0IG1nYV9jdXJzb3IgewogCSAgIElmIGVpdGhlciBvZiB0aGVzZSBpcyBO VUxMLCB0aGVuIGRvbid0IGRvIGhhcmR3YXJlIGN1cnNvcnMsIGFuZAogCSAgIGZhbGwgYmFjayB0 byBzb2Z0d2FyZS4KIAkqLwotCXN0cnVjdCBtZ2FnMjAwX2JvICpwaXhlbHNfMTsKLQlzdHJ1Y3Qg bWdhZzIwMF9ibyAqcGl4ZWxzXzI7CisJc3RydWN0IGRybV9nZW1fdHRtX29iamVjdCAqcGl4ZWxz XzE7CisJc3RydWN0IGRybV9nZW1fdHRtX29iamVjdCAqcGl4ZWxzXzI7CiAJdTY0IHBpeGVsc18x X2dwdV9hZGRyLCBwaXhlbHNfMl9ncHVfYWRkcjsKIAkvKiBUaGUgY3VycmVudGx5IGRpc3BsYXll ZCBpY29uLCB0aGlzIHBvaW50cyB0byBvbmUgb2YgcGl4ZWxzXzEsIG9yIHBpeGVsc18yICovCi0J c3RydWN0IG1nYWcyMDBfYm8gKnBpeGVsc19jdXJyZW50OworCXN0cnVjdCBkcm1fZ2VtX3R0bV9v YmplY3QgKnBpeGVsc19jdXJyZW50OwogCS8qIFRoZSBwcmV2aW91c2x5IGRpc3BsYXllZCBpY29u ICovCi0Jc3RydWN0IG1nYWcyMDBfYm8gKnBpeGVsc19wcmV2OworCXN0cnVjdCBkcm1fZ2VtX3R0 bV9vYmplY3QgKnBpeGVsc19wcmV2OwogfTsKIAogc3RydWN0IG1nYV9tYyB7CkBAIC0yMTksMjMg KzIyMCw2IEBAIHN0cnVjdCBtZ2FfZGV2aWNlIHsKIAl1MzIgdW5pcXVlX3Jldl9pZDsKIH07CiAK LQotc3RydWN0IG1nYWcyMDBfYm8gewotCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCBibzsKLQlz dHJ1Y3QgdHRtX3BsYWNlbWVudCBwbGFjZW1lbnQ7Ci0Jc3RydWN0IHR0bV9ib19rbWFwX29iaiBr bWFwOwotCXN0cnVjdCBkcm1fZ2VtX29iamVjdCBnZW07Ci0Jc3RydWN0IHR0bV9wbGFjZSBwbGFj ZW1lbnRzWzNdOwotCWludCBwaW5fY291bnQ7Ci19OwotI2RlZmluZSBnZW1fdG9fbWdhX2JvKGdv YmopIGNvbnRhaW5lcl9vZigoZ29iaiksIHN0cnVjdCBtZ2FnMjAwX2JvLCBnZW0pCi0KLXN0YXRp YyBpbmxpbmUgc3RydWN0IG1nYWcyMDBfYm8gKgotbWdhZzIwMF9ibyhzdHJ1Y3QgdHRtX2J1ZmZl cl9vYmplY3QgKmJvKQotewotCXJldHVybiBjb250YWluZXJfb2YoYm8sIHN0cnVjdCBtZ2FnMjAw X2JvLCBibyk7Ci19Ci0KIAkJCQkvKiBtZ2FnMjAwX21vZGUuYyAqLwogaW50IG1nYWcyMDBfbW9k ZXNldF9pbml0KHN0cnVjdCBtZ2FfZGV2aWNlICptZGV2KTsKIHZvaWQgbWdhZzIwMF9tb2Rlc2V0 X2Zpbmkoc3RydWN0IG1nYV9kZXZpY2UgKm1kZXYpOwpAQCAtMjU5LDQ1ICsyNDMsMTUgQEAgaW50 IG1nYWcyMDBfZ2VtX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogaW50IG1nYWcyMDBf ZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlLAogCQkJc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAkJCXN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncyk7Ci12b2lkIG1nYWcy MDBfZ2VtX2ZyZWVfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKLWludAotbWdh ZzIwMF9kdW1iX21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKLQkJCSBzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAotCQkJIHVpbnQzMl90IGhhbmRsZSwKLQkJCSB1aW50NjRfdCAqb2Zm c2V0KTsKKwogCQkJCS8qIG1nYWcyMDBfaTJjLmMgKi8KIHN0cnVjdCBtZ2FfaTJjX2NoYW4gKm1n YWcyMDBfaTJjX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgbWdhZzIwMF9p MmNfZGVzdHJveShzdHJ1Y3QgbWdhX2kyY19jaGFuICppMmMpOwogCi12b2lkIG1nYWcyMDBfdHRt X3BsYWNlbWVudChzdHJ1Y3QgbWdhZzIwMF9ibyAqYm8sIGludCBkb21haW4pOwotCi1zdGF0aWMg aW5saW5lIGludCBtZ2FnMjAwX2JvX3Jlc2VydmUoc3RydWN0IG1nYWcyMDBfYm8gKmJvLCBib29s IG5vX3dhaXQpCi17Ci0JaW50IHJldDsKLQotCXJldCA9IHR0bV9ib19yZXNlcnZlKCZiby0+Ym8s IHRydWUsIG5vX3dhaXQsIE5VTEwpOwotCWlmIChyZXQpIHsKLQkJaWYgKHJldCAhPSAtRVJFU1RB UlRTWVMgJiYgcmV0ICE9IC1FQlVTWSkKLQkJCURSTV9FUlJPUigicmVzZXJ2ZSBmYWlsZWQgJXBc biIsIGJvKTsKLQkJcmV0dXJuIHJldDsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbmxp bmUgdm9pZCBtZ2FnMjAwX2JvX3VucmVzZXJ2ZShzdHJ1Y3QgbWdhZzIwMF9ibyAqYm8pCi17Ci0J dHRtX2JvX3VucmVzZXJ2ZSgmYm8tPmJvKTsKLX0KLQotaW50IG1nYWcyMDBfYm9fY3JlYXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBzaXplLCBpbnQgYWxpZ24sCi0JCSAgICAgIHVpbnQz Ml90IGZsYWdzLCBzdHJ1Y3QgbWdhZzIwMF9ibyAqKnBhc3Ribyk7CiBpbnQgbWdhZzIwMF9tbV9p bml0KHN0cnVjdCBtZ2FfZGV2aWNlICptZGV2KTsKIHZvaWQgbWdhZzIwMF9tbV9maW5pKHN0cnVj dCBtZ2FfZGV2aWNlICptZGV2KTsKIGludCBtZ2FnMjAwX21tYXAoc3RydWN0IGZpbGUgKmZpbHAs IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKLWludCBtZ2FnMjAwX2JvX3BpbihzdHJ1Y3Qg bWdhZzIwMF9ibyAqYm8sIHUzMiBwbF9mbGFnLCB1NjQgKmdwdV9hZGRyKTsKLWludCBtZ2FnMjAw X2JvX3VucGluKHN0cnVjdCBtZ2FnMjAwX2JvICpibyk7Ci1pbnQgbWdhZzIwMF9ib19wdXNoX3N5 c3JhbShzdHJ1Y3QgbWdhZzIwMF9ibyAqYm8pOwotCQkJICAgLyogbWdhZzIwMF9jdXJzb3IuYyAq LworCiBpbnQgbWdhX2NydGNfY3Vyc29yX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVj dCBkcm1fZmlsZSAqZmlsZV9wcml2LAogCQkJCQkJdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCB3 aWR0aCwgdWludDMyX3QgaGVpZ2h0KTsKIGludCBtZ2FfY3J0Y19jdXJzb3JfbW92ZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsIGludCB4LCBpbnQgeSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbWdhZzIwMC9tZ2FnMjAwX2ZiLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAw X2ZiLmMKaW5kZXggNWI3ZTY0Y2FjMDA0Li4zMDJjNWI3ZWZmMmEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZmIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbWdh ZzIwMC9tZ2FnMjAwX2ZiLmMKQEAgLTIzLDcgKzIzLDcgQEAgc3RhdGljIHZvaWQgbWdhX2RpcnR5 X3VwZGF0ZShzdHJ1Y3QgbWdhX2ZiZGV2ICptZmJkZXYsCiB7CiAJaW50IGk7CiAJc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmo7Ci0Jc3RydWN0IG1nYWcyMDBfYm8gKmJvOworCXN0cnVjdCBkcm1f Z2VtX3R0bV9vYmplY3QgKmdibzsKIAlpbnQgc3JjX29mZnNldCwgZHN0X29mZnNldDsKIAlpbnQg YnBwID0gbWZiZGV2LT5tZmIuYmFzZS5mb3JtYXQtPmNwcFswXTsKIAlpbnQgcmV0ID0gLUVCVVNZ OwpAQCAtMzMsNyArMzMsNyBAQCBzdGF0aWMgdm9pZCBtZ2FfZGlydHlfdXBkYXRlKHN0cnVjdCBt Z2FfZmJkZXYgKm1mYmRldiwKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJb2JqID0gbWZiZGV2 LT5tZmIub2JqOwotCWJvID0gZ2VtX3RvX21nYV9ibyhvYmopOworCWdibyA9IGRybV9nZW1fdHRt X29mX2dlbShvYmopOwogCiAJLyoKIAkgKiB0cnkgYW5kIHJlc2VydmUgdGhlIEJPLCBpZiB3ZSBm YWlsIHdpdGggYnVzeQpAQCAtNDEsNyArNDEsNyBAQCBzdGF0aWMgdm9pZCBtZ2FfZGlydHlfdXBk YXRlKHN0cnVjdCBtZ2FfZmJkZXYgKm1mYmRldiwKIAkgKiBzdG9yZSB1cCB0aGUgZGFtYWdlIHVu dGlsIGxhdGVyLgogCSAqLwogCWlmIChkcm1fY2FuX3NsZWVwKCkpCi0JCXJldCA9IG1nYWcyMDBf Ym9fcmVzZXJ2ZShibywgdHJ1ZSk7CisJCXJldCA9IGRybV9nZW1fdHRtX3Jlc2VydmUoZ2JvLCB0 cnVlKTsKIAlpZiAocmV0KSB7CiAJCWlmIChyZXQgIT0gLUVCVVNZKQogCQkJcmV0dXJuOwpAQCAt NzUsMTEgKzc1LDExIEBAIHN0YXRpYyB2b2lkIG1nYV9kaXJ0eV91cGRhdGUoc3RydWN0IG1nYV9m YmRldiAqbWZiZGV2LAogCW1mYmRldi0+eDIgPSBtZmJkZXYtPnkyID0gMDsKIAlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZtZmJkZXYtPmRpcnR5X2xvY2ssIGZsYWdzKTsKIAotCWlmICghYm8tPmtt YXAudmlydHVhbCkgewotCQlyZXQgPSB0dG1fYm9fa21hcCgmYm8tPmJvLCAwLCBiby0+Ym8ubnVt X3BhZ2VzLCAmYm8tPmttYXApOworCWlmICghZ2JvLT5rbWFwLnZpcnR1YWwpIHsKKwkJcmV0ID0g dHRtX2JvX2ttYXAoJmdiby0+Ym8sIDAsIGdiby0+Ym8ubnVtX3BhZ2VzLCAmZ2JvLT5rbWFwKTsK IAkJaWYgKHJldCkgewogCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8ga21hcCBmYiB1cGRhdGVzXG4i KTsKLQkJCW1nYWcyMDBfYm9fdW5yZXNlcnZlKGJvKTsKKwkJCWRybV9nZW1fdHRtX3VucmVzZXJ2 ZShnYm8pOwogCQkJcmV0dXJuOwogCQl9CiAJCXVubWFwID0gdHJ1ZTsKQEAgLTg3LDEzICs4Nywx MyBAQCBzdGF0aWMgdm9pZCBtZ2FfZGlydHlfdXBkYXRlKHN0cnVjdCBtZ2FfZmJkZXYgKm1mYmRl diwKIAlmb3IgKGkgPSB5OyBpIDw9IHkyOyBpKyspIHsKIAkJLyogYXNzdW1lIGVxdWFsIHN0cmlk ZSBmb3Igbm93ICovCiAJCXNyY19vZmZzZXQgPSBkc3Rfb2Zmc2V0ID0gaSAqIG1mYmRldi0+bWZi LmJhc2UucGl0Y2hlc1swXSArICh4ICogYnBwKTsKLQkJbWVtY3B5X3RvaW8oYm8tPmttYXAudmly dHVhbCArIHNyY19vZmZzZXQsIG1mYmRldi0+c3lzcmFtICsgc3JjX29mZnNldCwgKHgyIC0geCAr IDEpICogYnBwKTsKKwkJbWVtY3B5X3RvaW8oZ2JvLT5rbWFwLnZpcnR1YWwgKyBzcmNfb2Zmc2V0 LCBtZmJkZXYtPnN5c3JhbSArIHNyY19vZmZzZXQsICh4MiAtIHggKyAxKSAqIGJwcCk7CiAKIAl9 CiAJaWYgKHVubWFwKQotCQl0dG1fYm9fa3VubWFwKCZiby0+a21hcCk7CisJCXR0bV9ib19rdW5t YXAoJmdiby0+a21hcCk7CiAKLQltZ2FnMjAwX2JvX3VucmVzZXJ2ZShibyk7CisJZHJtX2dlbV90 dG1fdW5yZXNlcnZlKGdibyk7CiB9CiAKIHN0YXRpYyB2b2lkIG1nYV9maWxscmVjdChzdHJ1Y3Qg ZmJfaW5mbyAqaW5mbywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcy MDBfbWFpbi5jIGIvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9tYWluLmMKaW5kZXgg MTYzMjU1MDk5Nzc5Li45YTlmNmE4ZGJjOWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t Z2FnMjAwL21nYWcyMDBfbWFpbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcy MDBfbWFpbi5jCkBAIC0yMzAsMTEgKzIzMCwxMyBAQCBpbnQgbWdhZzIwMF9kcml2ZXJfbG9hZChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGZsYWdzKQogCX0KIAogCS8qIE1h a2Ugc21hbGwgYnVmZmVycyB0byBzdG9yZSBhIGhhcmR3YXJlIGN1cnNvciAoZG91YmxlIGJ1ZmZl cmVkIGljb24gdXBkYXRlcykgKi8KLQltZ2FnMjAwX2JvX2NyZWF0ZShkZXYsIHJvdW5kdXAoNDgq NjQsIFBBR0VfU0laRSksIDAsIDAsCi0JCQkJCSAgJm1kZXYtPmN1cnNvci5waXhlbHNfMSk7Ci0J bWdhZzIwMF9ib19jcmVhdGUoZGV2LCByb3VuZHVwKDQ4KjY0LCBQQUdFX1NJWkUpLCAwLCAwLAot CQkJCQkgICZtZGV2LT5jdXJzb3IucGl4ZWxzXzIpOwotCWlmICghbWRldi0+Y3Vyc29yLnBpeGVs c18yIHx8ICFtZGV2LT5jdXJzb3IucGl4ZWxzXzEpIHsKKwltZGV2LT5jdXJzb3IucGl4ZWxzXzEg PSBkcm1fZ2VtX3R0bV9jcmVhdGUoZGV2LCAmbWRldi0+dHRtLmJkZXYsCisJCQkJCQkgICByb3Vu ZHVwKDQ4KjY0LCBQQUdFX1NJWkUpLAorCQkJCQkJICAgMCwgMCk7CisJbWRldi0+Y3Vyc29yLnBp eGVsc18yID0gZHJtX2dlbV90dG1fY3JlYXRlKGRldiwgJm1kZXYtPnR0bS5iZGV2LAorCQkJCQkJ ICAgcm91bmR1cCg0OCo2NCwgUEFHRV9TSVpFKSwKKwkJCQkJCSAgIDAsIDApOworCWlmIChJU19F UlIobWRldi0+Y3Vyc29yLnBpeGVsc18yKSB8fCBJU19FUlIobWRldi0+Y3Vyc29yLnBpeGVsc18x KSkgewogCQltZGV2LT5jdXJzb3IucGl4ZWxzXzEgPSBOVUxMOwogCQltZGV2LT5jdXJzb3IucGl4 ZWxzXzIgPSBOVUxMOwogCQlkZXZfd2FybigmZGV2LT5wZGV2LT5kZXYsCkBAIC0yNzIsNyArMjc0 LDggQEAgaW50IG1nYWcyMDBfZ2VtX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkg ICB1MzIgc2l6ZSwgYm9vbCBpc2tlcm5lbCwKIAkJICAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICoq b2JqKQogewotCXN0cnVjdCBtZ2FnMjAwX2JvICphc3RibzsKKwlzdHJ1Y3QgbWdhX2RldmljZSAq bWRldiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9nZW1fdHRtX29iamVjdCAqZ2Jv OwogCWludCByZXQ7CiAKIAkqb2JqID0gTlVMTDsKQEAgLTI4MSwxMyArMjg0LDE0IEBAIGludCBt Z2FnMjAwX2dlbV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAoc2l6ZSA9PSAw KQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXJldCA9IG1nYWcyMDBfYm9fY3JlYXRlKGRldiwgc2l6 ZSwgMCwgMCwgJmFzdGJvKTsKLQlpZiAocmV0KSB7CisJZ2JvID0gZHJtX2dlbV90dG1fY3JlYXRl KGRldiwgJm1kZXYtPnR0bS5iZGV2LCBzaXplLCAwLCBmYWxzZSk7CisJaWYgKElTX0VSUihnYm8p KSB7CisJCXJldCA9IFBUUl9FUlIoZ2JvKTsKIAkJaWYgKHJldCAhPSAtRVJFU1RBUlRTWVMpCiAJ CQlEUk1fRVJST1IoImZhaWxlZCB0byBhbGxvY2F0ZSBHRU0gb2JqZWN0XG4iKTsKIAkJcmV0dXJu IHJldDsKIAl9Ci0JKm9iaiA9ICZhc3Riby0+Z2VtOworCSpvYmogPSAmZ2JvLT5nZW07CiAJcmV0 dXJuIDA7CiB9CiAKQEAgLTI5NSw2NCArMjk5LDggQEAgaW50IG1nYWcyMDBfZHVtYl9jcmVhdGUo c3RydWN0IGRybV9maWxlICpmaWxlLAogCQkgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJ ICAgIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncykKIHsKLQlpbnQgcmV0OwotCXN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqZ29iajsKLQl1MzIgaGFuZGxlOwotCi0JYXJncy0+cGl0Y2gg PSBhcmdzLT53aWR0aCAqICgoYXJncy0+YnBwICsgNykgLyA4KTsKLQlhcmdzLT5zaXplID0gYXJn cy0+cGl0Y2ggKiBhcmdzLT5oZWlnaHQ7Ci0KLQlyZXQgPSBtZ2FnMjAwX2dlbV9jcmVhdGUoZGV2 LCBhcmdzLT5zaXplLCBmYWxzZSwKLQkJCSAgICAgJmdvYmopOwotCWlmIChyZXQpCi0JCXJldHVy biByZXQ7Ci0KLQlyZXQgPSBkcm1fZ2VtX2hhbmRsZV9jcmVhdGUoZmlsZSwgZ29iaiwgJmhhbmRs ZSk7Ci0JZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKGdvYmopOwotCWlmIChyZXQpCi0JCXJl dHVybiByZXQ7Ci0KLQlhcmdzLT5oYW5kbGUgPSBoYW5kbGU7Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0 YXRpYyB2b2lkIG1nYWcyMDBfYm9fdW5yZWYoc3RydWN0IG1nYWcyMDBfYm8gKipibykKLXsKLQlp ZiAoKCpibykgPT0gTlVMTCkKLQkJcmV0dXJuOwotCXR0bV9ib19wdXQoJigoKmJvKS0+Ym8pKTsK LQkqYm8gPSBOVUxMOwotfQotCi12b2lkIG1nYWcyMDBfZ2VtX2ZyZWVfb2JqZWN0KHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqb2JqKQotewotCXN0cnVjdCBtZ2FnMjAwX2JvICptZ2FnMjAwX2JvID0g Z2VtX3RvX21nYV9ibyhvYmopOwotCi0JbWdhZzIwMF9ib191bnJlZigmbWdhZzIwMF9ibyk7Ci19 Ci0KLQotc3RhdGljIGlubGluZSB1NjQgbWdhZzIwMF9ib19tbWFwX29mZnNldChzdHJ1Y3QgbWdh ZzIwMF9ibyAqYm8pCi17Ci0JcmV0dXJuIGRybV92bWFfbm9kZV9vZmZzZXRfYWRkcigmYm8tPmJv LnZtYV9ub2RlKTsKLX0KLQotaW50Ci1tZ2FnMjAwX2R1bWJfbW1hcF9vZmZzZXQoc3RydWN0IGRy bV9maWxlICpmaWxlLAotCQkgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCSAgICAgdWlu dDMyX3QgaGFuZGxlLAotCQkgICAgIHVpbnQ2NF90ICpvZmZzZXQpCi17Ci0Jc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmo7Ci0Jc3RydWN0IG1nYWcyMDBfYm8gKmJvOwotCi0Jb2JqID0gZHJtX2dl bV9vYmplY3RfbG9va3VwKGZpbGUsIGhhbmRsZSk7Ci0JaWYgKG9iaiA9PSBOVUxMKQotCQlyZXR1 cm4gLUVOT0VOVDsKLQotCWJvID0gZ2VtX3RvX21nYV9ibyhvYmopOwotCSpvZmZzZXQgPSBtZ2Fn MjAwX2JvX21tYXBfb2Zmc2V0KGJvKTsKKwlzdHJ1Y3QgbWdhX2RldmljZSAqbWRldiA9IGRldi0+ ZGV2X3ByaXZhdGU7CiAKLQlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsKLQlyZXR1 cm4gMDsKKwlyZXR1cm4gZHJtX2dlbV90dG1fZmlsbF9jcmVhdGVfZHVtYihmaWxlLCBkZXYsICZt ZGV2LT50dG0uYmRldiwgMCwKKwkJCQkJICAgIGZhbHNlLCBhcmdzKTsKIH0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfbW9kZS5jIGIvZHJpdmVycy9ncHUvZHJt L21nYWcyMDAvbWdhZzIwMF9tb2RlLmMKaW5kZXggNzQ4MWEzZDU1NmFkLi40ZDNlMzQ1MjM2MDcg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfbW9kZS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfbW9kZS5jCkBAIC04NjcsNDggKzg2Nyw1 NyBAQCBzdGF0aWMgaW50IG1nYV9jcnRjX2RvX3NldF9iYXNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKIAlzdHJ1Y3QgbWdhX2RldmljZSAqbWRldiA9IGNydGMtPmRldi0+ZGV2X3ByaXZhdGU7CiAJ c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7CiAJc3RydWN0IG1nYV9mcmFtZWJ1ZmZlciAqbWdh X2ZiOwotCXN0cnVjdCBtZ2FnMjAwX2JvICpibzsKKwlzdHJ1Y3QgZHJtX2dlbV90dG1fb2JqZWN0 ICpnYm87CiAJaW50IHJldDsKLQl1NjQgZ3B1X2FkZHI7CisJczY0IGdwdV9hZGRyOwogCiAJLyog cHVzaCB0aGUgcHJldmlvdXMgZmIgdG8gc3lzdGVtIHJhbSAqLwogCWlmICghYXRvbWljICYmIGZi KSB7CiAJCW1nYV9mYiA9IHRvX21nYV9mcmFtZWJ1ZmZlcihmYik7CiAJCW9iaiA9IG1nYV9mYi0+ b2JqOwotCQlibyA9IGdlbV90b19tZ2FfYm8ob2JqKTsKLQkJcmV0ID0gbWdhZzIwMF9ib19yZXNl cnZlKGJvLCBmYWxzZSk7CisJCWdibyA9IGRybV9nZW1fdHRtX29mX2dlbShvYmopOworCQlyZXQg PSBkcm1fZ2VtX3R0bV9yZXNlcnZlKGdibywgZmFsc2UpOwogCQlpZiAocmV0KQogCQkJcmV0dXJu IHJldDsKLQkJbWdhZzIwMF9ib19wdXNoX3N5c3JhbShibyk7Ci0JCW1nYWcyMDBfYm9fdW5yZXNl cnZlKGJvKTsKKwkJZHJtX2dlbV90dG1fcHVzaF90b19zeXN0ZW0oZ2JvKTsKKwkJZHJtX2dlbV90 dG1fdW5yZXNlcnZlKGdibyk7CiAJfQogCiAJbWdhX2ZiID0gdG9fbWdhX2ZyYW1lYnVmZmVyKGNy dGMtPnByaW1hcnktPmZiKTsKIAlvYmogPSBtZ2FfZmItPm9iajsKLQlibyA9IGdlbV90b19tZ2Ff Ym8ob2JqKTsKKwlnYm8gPSBkcm1fZ2VtX3R0bV9vZl9nZW0ob2JqKTsKIAotCXJldCA9IG1nYWcy MDBfYm9fcmVzZXJ2ZShibywgZmFsc2UpOworCXJldCA9IGRybV9nZW1fdHRtX3Jlc2VydmUoZ2Jv LCBmYWxzZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldCA9IG1nYWcyMDBfYm9f cGluKGJvLCBUVE1fUExfRkxBR19WUkFNLCAmZ3B1X2FkZHIpOwotCWlmIChyZXQpIHsKLQkJbWdh ZzIwMF9ib191bnJlc2VydmUoYm8pOwotCQlyZXR1cm4gcmV0OworCXJldCA9IGRybV9nZW1fdHRt X3BpbihnYm8sIFRUTV9QTF9GTEFHX1ZSQU0pOworCWlmIChyZXQpCisJCWdvdG8gZXJyX2RybV9n ZW1fdHRtX3VucmVzZXJ2ZTsKKwlncHVfYWRkciA9IGRybV9nZW1fdHRtX3ZyYW1fb2Zmc2V0KGdi byk7CisJaWYgKGdwdV9hZGRyIDwgMCkgeworCQlyZXQgPSAoaW50KWdwdV9hZGRyOworCQlnb3Rv IGVycl9kcm1fZ2VtX3R0bV91bnBpbjsKIAl9CiAKIAlpZiAoJm1kZXYtPm1mYmRldi0+bWZiID09 IG1nYV9mYikgewogCQkvKiBpZiBwdXNoaW5nIGNvbnNvbGUgaW4ga21hcCBpdCAqLwotCQlyZXQg PSB0dG1fYm9fa21hcCgmYm8tPmJvLCAwLCBiby0+Ym8ubnVtX3BhZ2VzLCAmYm8tPmttYXApOwor CQlyZXQgPSB0dG1fYm9fa21hcCgmZ2JvLT5ibywgMCwgZ2JvLT5iby5udW1fcGFnZXMsICZnYm8t PmttYXApOwogCQlpZiAocmV0KQogCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8ga21hcCBmYmNvblxu Iik7CiAKIAl9Ci0JbWdhZzIwMF9ib191bnJlc2VydmUoYm8pOworCWRybV9nZW1fdHRtX3VucmVz ZXJ2ZShnYm8pOwogCiAJbWdhX3NldF9zdGFydF9hZGRyZXNzKGNydGMsICh1MzIpZ3B1X2FkZHIp OwogCiAJcmV0dXJuIDA7CisKK2Vycl9kcm1fZ2VtX3R0bV91bnBpbjoKKwlkcm1fZ2VtX3R0bV91 bnBpbihnYm8pOworZXJyX2RybV9nZW1fdHRtX3VucmVzZXJ2ZToKKwlkcm1fZ2VtX3R0bV91bnJl c2VydmUoZ2JvKTsKKwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IG1nYV9jcnRjX21vZGVf c2V0X2Jhc2Uoc3RydWN0IGRybV9jcnRjICpjcnRjLCBpbnQgeCwgaW50IHksCkBAIC0xNDI4LDEy ICsxNDM3LDEyIEBAIHN0YXRpYyB2b2lkIG1nYV9jcnRjX2Rpc2FibGUoc3RydWN0IGRybV9jcnRj ICpjcnRjKQogCWlmIChjcnRjLT5wcmltYXJ5LT5mYikgewogCQlzdHJ1Y3QgbWdhX2ZyYW1lYnVm ZmVyICptZ2FfZmIgPSB0b19tZ2FfZnJhbWVidWZmZXIoY3J0Yy0+cHJpbWFyeS0+ZmIpOwogCQlz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9IG1nYV9mYi0+b2JqOwotCQlzdHJ1Y3QgbWdhZzIw MF9ibyAqYm8gPSBnZW1fdG9fbWdhX2JvKG9iaik7Ci0JCXJldCA9IG1nYWcyMDBfYm9fcmVzZXJ2 ZShibywgZmFsc2UpOworCQlzdHJ1Y3QgZHJtX2dlbV90dG1fb2JqZWN0ICpnYm8gPSBkcm1fZ2Vt X3R0bV9vZl9nZW0ob2JqKTsKKwkJcmV0ID0gZHJtX2dlbV90dG1fcmVzZXJ2ZShnYm8sIGZhbHNl KTsKIAkJaWYgKHJldCkKIAkJCXJldHVybjsKLQkJbWdhZzIwMF9ib19wdXNoX3N5c3JhbShibyk7 Ci0JCW1nYWcyMDBfYm9fdW5yZXNlcnZlKGJvKTsKKwkJZHJtX2dlbV90dG1fcHVzaF90b19zeXN0 ZW0oZ2JvKTsKKwkJZHJtX2dlbV90dG1fdW5yZXNlcnZlKGdibyk7CiAJfQogCWNydGMtPnByaW1h cnktPmZiID0gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21n YWcyMDBfdHRtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX3R0bS5jCmluZGV4 IGJkNDIzNjVhOGFhOC4uMzRhNWM1OGJkZTY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v bWdhZzIwMC9tZ2FnMjAwX3R0bS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcy MDBfdHRtLmMKQEAgLTM2LDIzICszNiw2IEBAIG1nYWcyMDBfYmRldihzdHJ1Y3QgdHRtX2JvX2Rl dmljZSAqYmQpCiAJcmV0dXJuIGNvbnRhaW5lcl9vZihiZCwgc3RydWN0IG1nYV9kZXZpY2UsIHR0 bS5iZGV2KTsKIH0KIAotc3RhdGljIHZvaWQgbWdhZzIwMF9ib190dG1fZGVzdHJveShzdHJ1Y3Qg dHRtX2J1ZmZlcl9vYmplY3QgKnRibykKLXsKLQlzdHJ1Y3QgbWdhZzIwMF9ibyAqYm87Ci0KLQli byA9IGNvbnRhaW5lcl9vZih0Ym8sIHN0cnVjdCBtZ2FnMjAwX2JvLCBibyk7Ci0KLQlkcm1fZ2Vt X29iamVjdF9yZWxlYXNlKCZiby0+Z2VtKTsKLQlrZnJlZShibyk7Ci19Ci0KLXN0YXRpYyBib29s IG1nYWcyMDBfdHRtX2JvX2lzX21nYWcyMDBfYm8oc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpi bykKLXsKLQlpZiAoYm8tPmRlc3Ryb3kgPT0gJm1nYWcyMDBfYm9fdHRtX2Rlc3Ryb3kpCi0JCXJl dHVybiB0cnVlOwotCXJldHVybiBmYWxzZTsKLX0KLQogc3RhdGljIGludAogbWdhZzIwMF9ib19p bml0X21lbV90eXBlKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCB1aW50MzJfdCB0eXBlLAog CQkgICAgIHN0cnVjdCB0dG1fbWVtX3R5cGVfbWFuYWdlciAqbWFuKQpAQCAtNzgsMjYgKzYxLDYg QEAgbWdhZzIwMF9ib19pbml0X21lbV90eXBlKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCB1 aW50MzJfdCB0eXBlLAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZAotbWdhZzIwMF9ib19l dmljdF9mbGFncyhzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLCBzdHJ1Y3QgdHRtX3BsYWNl bWVudCAqcGwpCi17Ci0Jc3RydWN0IG1nYWcyMDBfYm8gKm1nYWJvID0gbWdhZzIwMF9ibyhibyk7 Ci0KLQlpZiAoIW1nYWcyMDBfdHRtX2JvX2lzX21nYWcyMDBfYm8oYm8pKQotCQlyZXR1cm47Ci0K LQltZ2FnMjAwX3R0bV9wbGFjZW1lbnQobWdhYm8sIFRUTV9QTF9GTEFHX1NZU1RFTSk7Ci0JKnBs ID0gbWdhYm8tPnBsYWNlbWVudDsKLX0KLQotc3RhdGljIGludCBtZ2FnMjAwX2JvX3ZlcmlmeV9h Y2Nlc3Moc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywgc3RydWN0IGZpbGUgKmZpbHApCi17 Ci0Jc3RydWN0IG1nYWcyMDBfYm8gKm1nYWJvID0gbWdhZzIwMF9ibyhibyk7Ci0KLQlyZXR1cm4g ZHJtX3ZtYV9ub2RlX3ZlcmlmeV9hY2Nlc3MoJm1nYWJvLT5nZW0udm1hX25vZGUsCi0JCQkJCSAg ZmlscC0+cHJpdmF0ZV9kYXRhKTsKLX0KLQogc3RhdGljIGludCBtZ2FnMjAwX3R0bV9pb19tZW1f cmVzZXJ2ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKIAkJCQkgIHN0cnVjdCB0dG1fbWVt X3JlZyAqbWVtKQogewpAQCAtMTYyLDkgKzEyNSw5IEBAIHN0cnVjdCB0dG1fYm9fZHJpdmVyIG1n YWcyMDBfYm9fZHJpdmVyID0gewogCS50dG1fdHRfY3JlYXRlID0gbWdhZzIwMF90dG1fdHRfY3Jl YXRlLAogCS5pbml0X21lbV90eXBlID0gbWdhZzIwMF9ib19pbml0X21lbV90eXBlLAogCS5ldmlj dGlvbl92YWx1YWJsZSA9IHR0bV9ib19ldmljdGlvbl92YWx1YWJsZSwKLQkuZXZpY3RfZmxhZ3Mg PSBtZ2FnMjAwX2JvX2V2aWN0X2ZsYWdzLAorCS5ldmljdF9mbGFncyA9IGRybV9nZW1fdHRtX2Jv X2RyaXZlcl9ldmljdF9mbGFncywKIAkubW92ZSA9IE5VTEwsCi0JLnZlcmlmeV9hY2Nlc3MgPSBt Z2FnMjAwX2JvX3ZlcmlmeV9hY2Nlc3MsCisJLnZlcmlmeV9hY2Nlc3MgPSBkcm1fZ2VtX3R0bV9i b19kcml2ZXJfdmVyaWZ5X2FjY2VzcywKIAkuaW9fbWVtX3Jlc2VydmUgPSAmbWdhZzIwMF90dG1f aW9fbWVtX3Jlc2VydmUsCiAJLmlvX21lbV9mcmVlID0gJm1nYWcyMDBfdHRtX2lvX21lbV9mcmVl LAogfTsKQEAgLTIxMSwxMzcgKzE3NCw2IEBAIHZvaWQgbWdhZzIwMF9tbV9maW5pKHN0cnVjdCBt Z2FfZGV2aWNlICptZGV2KQogCW1kZXYtPmZiX210cnIgPSAwOwogfQogCi12b2lkIG1nYWcyMDBf dHRtX3BsYWNlbWVudChzdHJ1Y3QgbWdhZzIwMF9ibyAqYm8sIGludCBkb21haW4pCi17Ci0JdTMy IGMgPSAwOwotCXVuc2lnbmVkIGk7Ci0KLQliby0+cGxhY2VtZW50LnBsYWNlbWVudCA9IGJvLT5w bGFjZW1lbnRzOwotCWJvLT5wbGFjZW1lbnQuYnVzeV9wbGFjZW1lbnQgPSBiby0+cGxhY2VtZW50 czsKLQlpZiAoZG9tYWluICYgVFRNX1BMX0ZMQUdfVlJBTSkKLQkJYm8tPnBsYWNlbWVudHNbYysr XS5mbGFncyA9IFRUTV9QTF9GTEFHX1dDIHwgVFRNX1BMX0ZMQUdfVU5DQUNIRUQgfCBUVE1fUExf RkxBR19WUkFNOwotCWlmIChkb21haW4gJiBUVE1fUExfRkxBR19TWVNURU0pCi0JCWJvLT5wbGFj ZW1lbnRzW2MrK10uZmxhZ3MgPSBUVE1fUExfTUFTS19DQUNISU5HIHwgVFRNX1BMX0ZMQUdfU1lT VEVNOwotCWlmICghYykKLQkJYm8tPnBsYWNlbWVudHNbYysrXS5mbGFncyA9IFRUTV9QTF9NQVNL X0NBQ0hJTkcgfCBUVE1fUExfRkxBR19TWVNURU07Ci0JYm8tPnBsYWNlbWVudC5udW1fcGxhY2Vt ZW50ID0gYzsKLQliby0+cGxhY2VtZW50Lm51bV9idXN5X3BsYWNlbWVudCA9IGM7Ci0JZm9yIChp ID0gMDsgaSA8IGM7ICsraSkgewotCQliby0+cGxhY2VtZW50c1tpXS5mcGZuID0gMDsKLQkJYm8t PnBsYWNlbWVudHNbaV0ubHBmbiA9IDA7Ci0JfQotfQotCi1pbnQgbWdhZzIwMF9ib19jcmVhdGUo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHNpemUsIGludCBhbGlnbiwKLQkJICB1aW50MzJf dCBmbGFncywgc3RydWN0IG1nYWcyMDBfYm8gKipwbWdhYm8pCi17Ci0Jc3RydWN0IG1nYV9kZXZp Y2UgKm1kZXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBtZ2FnMjAwX2JvICptZ2FibzsK LQlzaXplX3QgYWNjX3NpemU7Ci0JaW50IHJldDsKLQotCW1nYWJvID0ga3phbGxvYyhzaXplb2Yo c3RydWN0IG1nYWcyMDBfYm8pLCBHRlBfS0VSTkVMKTsKLQlpZiAoIW1nYWJvKQotCQlyZXR1cm4g LUVOT01FTTsKLQotCXJldCA9IGRybV9nZW1fb2JqZWN0X2luaXQoZGV2LCAmbWdhYm8tPmdlbSwg c2l6ZSk7Ci0JaWYgKHJldCkgewotCQlrZnJlZShtZ2Fibyk7Ci0JCXJldHVybiByZXQ7Ci0JfQot Ci0JbWdhYm8tPmJvLmJkZXYgPSAmbWRldi0+dHRtLmJkZXY7Ci0KLQltZ2FnMjAwX3R0bV9wbGFj ZW1lbnQobWdhYm8sIFRUTV9QTF9GTEFHX1ZSQU0gfCBUVE1fUExfRkxBR19TWVNURU0pOwotCi0J YWNjX3NpemUgPSB0dG1fYm9fZG1hX2FjY19zaXplKCZtZGV2LT50dG0uYmRldiwgc2l6ZSwKLQkJ CQkgICAgICAgc2l6ZW9mKHN0cnVjdCBtZ2FnMjAwX2JvKSk7Ci0KLQlyZXQgPSB0dG1fYm9faW5p dCgmbWRldi0+dHRtLmJkZXYsICZtZ2Fiby0+Ym8sIHNpemUsCi0JCQkgIHR0bV9ib190eXBlX2Rl dmljZSwgJm1nYWJvLT5wbGFjZW1lbnQsCi0JCQkgIGFsaWduID4+IFBBR0VfU0hJRlQsIGZhbHNl LCBhY2Nfc2l6ZSwKLQkJCSAgTlVMTCwgTlVMTCwgbWdhZzIwMF9ib190dG1fZGVzdHJveSk7Ci0J aWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCSpwbWdhYm8gPSBtZ2FibzsKLQlyZXR1cm4gMDsK LX0KLQotc3RhdGljIGlubGluZSB1NjQgbWdhZzIwMF9ib19ncHVfb2Zmc2V0KHN0cnVjdCBtZ2Fn MjAwX2JvICpibykKLXsKLQlyZXR1cm4gYm8tPmJvLm9mZnNldDsKLX0KLQotaW50IG1nYWcyMDBf Ym9fcGluKHN0cnVjdCBtZ2FnMjAwX2JvICpibywgdTMyIHBsX2ZsYWcsIHU2NCAqZ3B1X2FkZHIp Ci17Ci0Jc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4IGN0eCA9IHsgZmFsc2UsIGZhbHNlIH07Ci0J aW50IGksIHJldDsKLQotCWlmIChiby0+cGluX2NvdW50KSB7Ci0JCWJvLT5waW5fY291bnQrKzsK LQkJaWYgKGdwdV9hZGRyKQotCQkJKmdwdV9hZGRyID0gbWdhZzIwMF9ib19ncHVfb2Zmc2V0KGJv KTsKLQkJcmV0dXJuIDA7Ci0JfQotCi0JbWdhZzIwMF90dG1fcGxhY2VtZW50KGJvLCBwbF9mbGFn KTsKLQlmb3IgKGkgPSAwOyBpIDwgYm8tPnBsYWNlbWVudC5udW1fcGxhY2VtZW50OyBpKyspCi0J CWJvLT5wbGFjZW1lbnRzW2ldLmZsYWdzIHw9IFRUTV9QTF9GTEFHX05PX0VWSUNUOwotCXJldCA9 IHR0bV9ib192YWxpZGF0ZSgmYm8tPmJvLCAmYm8tPnBsYWNlbWVudCwgJmN0eCk7Ci0JaWYgKHJl dCkKLQkJcmV0dXJuIHJldDsKLQotCWJvLT5waW5fY291bnQgPSAxOwotCWlmIChncHVfYWRkcikK LQkJKmdwdV9hZGRyID0gbWdhZzIwMF9ib19ncHVfb2Zmc2V0KGJvKTsKLQlyZXR1cm4gMDsKLX0K LQotaW50IG1nYWcyMDBfYm9fdW5waW4oc3RydWN0IG1nYWcyMDBfYm8gKmJvKQotewotCXN0cnVj dCB0dG1fb3BlcmF0aW9uX2N0eCBjdHggPSB7IGZhbHNlLCBmYWxzZSB9OwotCWludCBpOwotCWlm ICghYm8tPnBpbl9jb3VudCkgewotCQlEUk1fRVJST1IoInVucGluIGJhZCAlcFxuIiwgYm8pOwot CQlyZXR1cm4gMDsKLQl9Ci0JYm8tPnBpbl9jb3VudC0tOwotCWlmIChiby0+cGluX2NvdW50KQot CQlyZXR1cm4gMDsKLQotCWZvciAoaSA9IDA7IGkgPCBiby0+cGxhY2VtZW50Lm51bV9wbGFjZW1l bnQgOyBpKyspCi0JCWJvLT5wbGFjZW1lbnRzW2ldLmZsYWdzICY9IH5UVE1fUExfRkxBR19OT19F VklDVDsKLQlyZXR1cm4gdHRtX2JvX3ZhbGlkYXRlKCZiby0+Ym8sICZiby0+cGxhY2VtZW50LCAm Y3R4KTsKLX0KLQotaW50IG1nYWcyMDBfYm9fcHVzaF9zeXNyYW0oc3RydWN0IG1nYWcyMDBfYm8g KmJvKQotewotCXN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCBjdHggPSB7IGZhbHNlLCBmYWxzZSB9 OwotCWludCBpLCByZXQ7Ci0JaWYgKCFiby0+cGluX2NvdW50KSB7Ci0JCURSTV9FUlJPUigidW5w aW4gYmFkICVwXG4iLCBibyk7Ci0JCXJldHVybiAwOwotCX0KLQliby0+cGluX2NvdW50LS07Ci0J aWYgKGJvLT5waW5fY291bnQpCi0JCXJldHVybiAwOwotCi0JaWYgKGJvLT5rbWFwLnZpcnR1YWwp Ci0JCXR0bV9ib19rdW5tYXAoJmJvLT5rbWFwKTsKLQotCW1nYWcyMDBfdHRtX3BsYWNlbWVudChi bywgVFRNX1BMX0ZMQUdfU1lTVEVNKTsKLQlmb3IgKGkgPSAwOyBpIDwgYm8tPnBsYWNlbWVudC5u dW1fcGxhY2VtZW50IDsgaSsrKQotCQliby0+cGxhY2VtZW50c1tpXS5mbGFncyB8PSBUVE1fUExf RkxBR19OT19FVklDVDsKLQotCXJldCA9IHR0bV9ib192YWxpZGF0ZSgmYm8tPmJvLCAmYm8tPnBs YWNlbWVudCwgJmN0eCk7Ci0JaWYgKHJldCkgewotCQlEUk1fRVJST1IoInB1c2hpbmcgdG8gVlJB TSBmYWlsZWRcbiIpOwotCQlyZXR1cm4gcmV0OwotCX0KLQlyZXR1cm4gMDsKLX0KLQogaW50IG1n YWcyMDBfbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEp CiB7CiAJc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYgPSBmaWxwLT5wcml2YXRlX2RhdGE7Ci0t IAoyLjIxLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==