From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH v4 13/19] drm/mgag200: Convert mgag200 driver to |struct drm_gem_vram_object| Date: Mon, 6 May 2019 10:26:43 +0200 Message-ID: <20190506082649.942-14-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 1738B89683 for ; Mon, 6 May 2019 08:27:01 +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 VGhlIGRhdGEgc3RydWN0dXJlIHxzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdHwgYW5kIGl0cyBo ZWxwZXJzIHJlcGxhY2UKfHN0cnVjdCBtZ2FnMjAwX2JvfC4gSXQncyB0aGUgc2FtZSBpbXBsZW1l bnRhdGlvbjsgZXhjZXB0IGZvciB0aGUgdHlwZQpuYW1lcy4KCnY0OgoJKiBjbGVhbnVwcyBmcm9t IGNoZWNrcGF0Y2gucGwKCSogc2VsZWN0IGNvbmZpZyBvcHRpb24gRFJNX1ZSQU1fSEVMUEVSCgpT aWduZWQtb2ZmLWJ5OiBUaG9tYXMgWmltbWVybWFubiA8dHppbW1lcm1hbm5Ac3VzZS5kZT4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9LY29uZmlnICAgICAgICAgIHwgICAxICsKIGRyaXZl cnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfY3Vyc29yLmMgfCAgNjMgKysrKystLS0tCiBkcml2 ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2Rydi5jICAgIHwgICA1ICstCiBkcml2ZXJzL2dw dS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2Rydi5oICAgIHwgIDYyICsrLS0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2ZiLmMgICAgIHwgIDIyICstLQogZHJpdmVycy9ncHUvZHJt L21nYWcyMDAvbWdhZzIwMF9tYWluLmMgICB8ICA4NCArKystLS0tLS0tLQogZHJpdmVycy9ncHUv ZHJtL21nYWcyMDAvbWdhZzIwMF9tb2RlLmMgICB8ICA0NiArKystLS0KIGRyaXZlcnMvZ3B1L2Ry bS9tZ2FnMjAwL21nYWcyMDBfdHRtLmMgICAgfCAxNzIgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IDggZmlsZXMgY2hhbmdlZCwgMTA3IGluc2VydGlvbnMoKyksIDM0OCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9LY29uZmlnIGIvZHJpdmVycy9ncHUv ZHJtL21nYWcyMDAvS2NvbmZpZwppbmRleCBkYjU4NTc4NzE5ZDIuLjkwN2JiMjE2MjIyOCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvS2NvbmZpZworKysgYi9kcml2ZXJzL2dw dS9kcm0vbWdhZzIwMC9LY29uZmlnCkBAIC0zLDYgKzMsNyBAQCBjb25maWcgRFJNX01HQUcyMDAK IAlkZXBlbmRzIG9uIERSTSAmJiBQQ0kgJiYgTU1VCiAJc2VsZWN0IERSTV9LTVNfSEVMUEVSCiAJ c2VsZWN0IERSTV9UVE0KKwlzZWxlY3QgRFJNX1ZSQU1fSEVMUEVSCiAJaGVscAogCSBUaGlzIGlz IGEgS01TIGRyaXZlciBmb3IgdGhlIE1HQSBHMjAwIHNlcnZlciBjaGlwcywgaXQKICAgICAgICAg IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9yaWdpbmFsIE1HQSBHMjAwIG9yIGFueSBvZiB0aGUgZGVz a3RvcApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9jdXJzb3Iu YyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfY3Vyc29yLmMKaW5kZXggOTY4ZTIw Mzc5ZDU0Li5jY2EzOTIyZjlmNjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAw L21nYWcyMDBfY3Vyc29yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9j dXJzb3IuYwpAQCAtMjMsOSArMjMsOSBAQCBzdGF0aWMgdm9pZCBtZ2FfaGlkZV9jdXJzb3Ioc3Ry dWN0IG1nYV9kZXZpY2UgKm1kZXYpCiAJV1JFRzgoTUdBX0NVUlBPU1hMLCAwKTsKIAlXUkVHOChN R0FfQ1VSUE9TWEgsIDApOwogCWlmIChtZGV2LT5jdXJzb3IucGl4ZWxzXzEtPnBpbl9jb3VudCkK LQkJbWdhZzIwMF9ib191bnBpbihtZGV2LT5jdXJzb3IucGl4ZWxzXzEpOworCQlkcm1fZ2VtX3Zy YW1fdW5waW4obWRldi0+Y3Vyc29yLnBpeGVsc18xKTsKIAlpZiAobWRldi0+Y3Vyc29yLnBpeGVs c18yLT5waW5fY291bnQpCi0JCW1nYWcyMDBfYm9fdW5waW4obWRldi0+Y3Vyc29yLnBpeGVsc18y KTsKKwkJZHJtX2dlbV92cmFtX3VucGluKG1kZXYtPmN1cnNvci5waXhlbHNfMik7CiB9CiAKIGlu dCBtZ2FfY3J0Y19jdXJzb3Jfc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKQEAgLTM2LDEyICsz NiwxMiBAQCBpbnQgbWdhX2NydGNfY3Vyc29yX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiB7 CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKIAlzdHJ1Y3QgbWdhX2Rldmlj ZSAqbWRldiA9IChzdHJ1Y3QgbWdhX2RldmljZSAqKWRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0 IG1nYWcyMDBfYm8gKnBpeGVsc18xID0gbWRldi0+Y3Vyc29yLnBpeGVsc18xOwotCXN0cnVjdCBt Z2FnMjAwX2JvICpwaXhlbHNfMiA9IG1kZXYtPmN1cnNvci5waXhlbHNfMjsKLQlzdHJ1Y3QgbWdh ZzIwMF9ibyAqcGl4ZWxzX2N1cnJlbnQgPSBtZGV2LT5jdXJzb3IucGl4ZWxzX2N1cnJlbnQ7Ci0J c3RydWN0IG1nYWcyMDBfYm8gKnBpeGVsc19wcmV2ID0gbWRldi0+Y3Vyc29yLnBpeGVsc19wcmV2 OworCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpwaXhlbHNfMSA9IG1kZXYtPmN1cnNvci5w aXhlbHNfMTsKKwlzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqcGl4ZWxzXzIgPSBtZGV2LT5j dXJzb3IucGl4ZWxzXzI7CisJc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKnBpeGVsc19jdXJy ZW50ID0gbWRldi0+Y3Vyc29yLnBpeGVsc19jdXJyZW50OworCXN0cnVjdCBkcm1fZ2VtX3ZyYW1f b2JqZWN0ICpwaXhlbHNfcHJldiA9IG1kZXYtPmN1cnNvci5waXhlbHNfcHJldjsKIAlzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iajsKLQlzdHJ1Y3QgbWdhZzIwMF9ibyAqYm8gPSBOVUxMOworCXN0 cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8gPSBOVUxMOwogCWludCByZXQgPSAwOwogCXVu c2lnbmVkIGludCBpLCByb3csIGNvbDsKIAl1aW50MzJfdCBjb2xvdXJfc2V0WzE2XTsKQEAgLTUw LDcgKzUwLDcgQEAgaW50IG1nYV9jcnRjX2N1cnNvcl9zZXQoc3RydWN0IGRybV9jcnRjICpjcnRj LAogCXVpbnQzMl90IHRoaXNfY29sb3VyOwogCWJvb2wgZm91bmQgPSBmYWxzZTsKIAlpbnQgY29s b3VyX2NvdW50ID0gMDsKLQl1NjQgZ3B1X2FkZHI7CisJczY0IGdwdV9hZGRyOwogCXU4IHJlZ19p bmRleDsKIAl1OCB0aGlzX3Jvd1s0OF07CiAKQEAgLTc5LDQ0ICs3OSw1NSBAQCBpbnQgbWdhX2Ny dGNfY3Vyc29yX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJaWYgKCFvYmopCiAJCXJldHVy biAtRU5PRU5UOwogCi0JcmV0ID0gbWdhZzIwMF9ib19yZXNlcnZlKHBpeGVsc18xLCB0cnVlKTsK KwlyZXQgPSBkcm1fZ2VtX3ZyYW1fcmVzZXJ2ZShwaXhlbHNfMSwgdHJ1ZSk7CiAJaWYgKHJldCkg ewogCQlXUkVHOChNR0FfQ1VSUE9TWEwsIDApOwogCQlXUkVHOChNR0FfQ1VSUE9TWEgsIDApOwog CQlnb3RvIG91dF91bnJlZjsKIAl9Ci0JcmV0ID0gbWdhZzIwMF9ib19yZXNlcnZlKHBpeGVsc18y LCB0cnVlKTsKKwlyZXQgPSBkcm1fZ2VtX3ZyYW1fcmVzZXJ2ZShwaXhlbHNfMiwgdHJ1ZSk7CiAJ aWYgKHJldCkgewogCQlXUkVHOChNR0FfQ1VSUE9TWEwsIDApOwogCQlXUkVHOChNR0FfQ1VSUE9T WEgsIDApOwotCQltZ2FnMjAwX2JvX3VucmVzZXJ2ZShwaXhlbHNfMSk7CisJCWRybV9nZW1fdnJh bV91bnJlc2VydmUocGl4ZWxzXzEpOwogCQlnb3RvIG91dF91bnJlc2VydmUxOwogCX0KIAogCS8q IE1vdmUgY3Vyc29yIGJ1ZmZlcnMgaW50byBWUkFNIGlmIHRoZXkgYXJlbid0IGFscmVhZHkgKi8K IAlpZiAoIXBpeGVsc18xLT5waW5fY291bnQpIHsKLQkJcmV0ID0gbWdhZzIwMF9ib19waW4ocGl4 ZWxzXzEsIFRUTV9QTF9GTEFHX1ZSQU0sCi0JCQkJICAgICAmbWRldi0+Y3Vyc29yLnBpeGVsc18x X2dwdV9hZGRyKTsKKwkJcmV0ID0gZHJtX2dlbV92cmFtX3BpbihwaXhlbHNfMSwgRFJNX0dFTV9W UkFNX1BMX0ZMQUdfVlJBTSk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIG91dDE7CisJCWdwdV9hZGRy ID0gZHJtX2dlbV92cmFtX29mZnNldChwaXhlbHNfMSk7CisJCWlmIChncHVfYWRkciA8IDApIHsK KwkJCWRybV9nZW1fdnJhbV91bnBpbihwaXhlbHNfMSk7CisJCQlnb3RvIG91dDE7CisJCX0KKwkJ bWRldi0+Y3Vyc29yLnBpeGVsc18xX2dwdV9hZGRyID0gZ3B1X2FkZHI7CiAJfQogCWlmICghcGl4 ZWxzXzItPnBpbl9jb3VudCkgewotCQlyZXQgPSBtZ2FnMjAwX2JvX3BpbihwaXhlbHNfMiwgVFRN X1BMX0ZMQUdfVlJBTSwKLQkJCQkgICAgICZtZGV2LT5jdXJzb3IucGl4ZWxzXzJfZ3B1X2FkZHIp OworCQlyZXQgPSBkcm1fZ2VtX3ZyYW1fcGluKHBpeGVsc18yLCBEUk1fR0VNX1ZSQU1fUExfRkxB R19WUkFNKTsKIAkJaWYgKHJldCkgewotCQkJbWdhZzIwMF9ib191bnBpbihwaXhlbHNfMSk7CisJ CQlkcm1fZ2VtX3ZyYW1fdW5waW4ocGl4ZWxzXzEpOworCQkJZ290byBvdXQxOworCQl9CisJCWdw dV9hZGRyID0gZHJtX2dlbV92cmFtX29mZnNldChwaXhlbHNfMik7CisJCWlmIChncHVfYWRkciA8 IDApIHsKKwkJCWRybV9nZW1fdnJhbV91bnBpbihwaXhlbHNfMSk7CisJCQlkcm1fZ2VtX3ZyYW1f dW5waW4ocGl4ZWxzXzIpOwogCQkJZ290byBvdXQxOwogCQl9CisJCW1kZXYtPmN1cnNvci5waXhl bHNfMl9ncHVfYWRkciA9IGdwdV9hZGRyOwogCX0KIAotCWJvID0gZ2VtX3RvX21nYV9ibyhvYmop OwotCXJldCA9IG1nYWcyMDBfYm9fcmVzZXJ2ZShibywgdHJ1ZSk7CisJZ2JvID0gZHJtX2dlbV92 cmFtX29mX2dlbShvYmopOworCXJldCA9IGRybV9nZW1fdnJhbV9yZXNlcnZlKGdibywgdHJ1ZSk7 CiAJaWYgKHJldCkgewogCQlkZXZfZXJyKCZkZXYtPnBkZXYtPmRldiwgImZhaWxlZCB0byByZXNl cnZlIHVzZXIgYm9cbiIpOwogCQlnb3RvIG91dDE7CiAJfQotCWlmICghYm8tPmttYXAudmlydHVh bCkgewotCQlyZXQgPSB0dG1fYm9fa21hcCgmYm8tPmJvLCAwLCBiby0+Ym8ubnVtX3BhZ2VzLCAm Ym8tPmttYXApOworCWlmICghZ2JvLT5rbWFwLnZpcnR1YWwpIHsKKwkJcmV0ID0gdHRtX2JvX2tt YXAoJmdiby0+Ym8sIDAsIGdiby0+Ym8ubnVtX3BhZ2VzLCAmZ2JvLT5rbWFwKTsKIAkJaWYgKHJl dCkgewogCQkJZGV2X2VycigmZGV2LT5wZGV2LT5kZXYsICJmYWlsZWQgdG8ga21hcCB1c2VyIGJ1 ZmZlciB1cGRhdGVzXG4iKTsKIAkJCWdvdG8gb3V0MjsKQEAgLTEyNiw3ICsxMzcsNyBAQCBpbnQg bWdhX2NydGNfY3Vyc29yX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJbWVtc2V0KCZjb2xv dXJfc2V0WzBdLCAwLCBzaXplb2YodWludDMyX3QpKjE2KTsKIAkvKiB3aWR0aCpoZWlnaHQqNCA9 IDE2Mzg0ICovCiAJZm9yIChpID0gMDsgaSA8IDE2Mzg0OyBpICs9IDQpIHsKLQkJdGhpc19jb2xv dXIgPSBpb3JlYWQzMihiby0+a21hcC52aXJ0dWFsICsgaSk7CisJCXRoaXNfY29sb3VyID0gaW9y ZWFkMzIoZ2JvLT5rbWFwLnZpcnR1YWwgKyBpKTsKIAkJLyogTm8gdHJhbnNwYXJlbmN5ICovCiAJ CWlmICh0aGlzX2NvbG91cj4+MjQgIT0gMHhmZiAmJgogCQkJdGhpc19jb2xvdXI+PjI0ICE9IDB4 MCkgewpAQCAtMTkyLDcgKzIwMyw3IEBAIGludCBtZ2FfY3J0Y19jdXJzb3Jfc2V0KHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKIAlmb3IgKHJvdyA9IDA7IHJvdyA8IDY0OyByb3crKykgewogCQltZW1z ZXQoJnRoaXNfcm93WzBdLCAwLCA0OCk7CiAJCWZvciAoY29sID0gMDsgY29sIDwgNjQ7IGNvbCsr KSB7Ci0JCQl0aGlzX2NvbG91ciA9IGlvcmVhZDMyKGJvLT5rbWFwLnZpcnR1YWwgKyA0Kihjb2wg KyA2NCpyb3cpKTsKKwkJCXRoaXNfY29sb3VyID0gaW9yZWFkMzIoZ2JvLT5rbWFwLnZpcnR1YWwg KyA0Kihjb2wgKyA2NCpyb3cpKTsKIAkJCS8qIHdyaXRlIHRyYW5zcGFyZW50IHBpeGVscyAqLwog CQkJaWYgKHRoaXNfY29sb3VyPj4yNCA9PSAweDApIHsKIAkJCQl0aGlzX3Jvd1s0NyAtIGNvbC84 XSB8PSAweDgwPj4oY29sJTgpOwpAQCAtMjM4LDE1ICsyNDksMTUgQEAgaW50IG1nYV9jcnRjX2N1 cnNvcl9zZXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJdHRtX2JvX2t1bm1hcCgmcGl4ZWxz X3ByZXYtPmttYXApOwogIG91dDM6Ci0JdHRtX2JvX2t1bm1hcCgmYm8tPmttYXApOworCXR0bV9i b19rdW5tYXAoJmdiby0+a21hcCk7CiAgb3V0MjoKLQltZ2FnMjAwX2JvX3VucmVzZXJ2ZShibyk7 CisJZHJtX2dlbV92cmFtX3VucmVzZXJ2ZShnYm8pOwogIG91dDE6CiAJaWYgKHJldCkKIAkJbWdh X2hpZGVfY3Vyc29yKG1kZXYpOwotCW1nYWcyMDBfYm9fdW5yZXNlcnZlKHBpeGVsc18xKTsKKwlk cm1fZ2VtX3ZyYW1fdW5yZXNlcnZlKHBpeGVsc18xKTsKIG91dF91bnJlc2VydmUxOgotCW1nYWcy MDBfYm9fdW5yZXNlcnZlKHBpeGVsc18yKTsKKwlkcm1fZ2VtX3ZyYW1fdW5yZXNlcnZlKHBpeGVs c18yKTsKIG91dF91bnJlZjoKIAlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9kcnYuYyBiL2RyaXZl cnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZHJ2LmMKaW5kZXggYWM2YWY0YmQ5ZGY2Li4xZjJh MDM0ZDVhOWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZHJ2 LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9kcnYuYwpAQCAtODAsOSAr ODAsMTAgQEAgc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIGRyaXZlciA9IHsKIAkubWlub3IgPSBE UklWRVJfTUlOT1IsCiAJLnBhdGNobGV2ZWwgPSBEUklWRVJfUEFUQ0hMRVZFTCwKIAotCS5nZW1f ZnJlZV9vYmplY3RfdW5sb2NrZWQgPSBtZ2FnMjAwX2dlbV9mcmVlX29iamVjdCwKKwkuZ2VtX2Zy ZWVfb2JqZWN0X3VubG9ja2VkID0KKwkJZHJtX2dlbV92cmFtX2RyaXZlcl9nZW1fZnJlZV9vYmpl Y3RfdW5sb2NrZWQsCiAJLmR1bWJfY3JlYXRlID0gbWdhZzIwMF9kdW1iX2NyZWF0ZSwKLQkuZHVt Yl9tYXBfb2Zmc2V0ID0gbWdhZzIwMF9kdW1iX21tYXBfb2Zmc2V0LAorCS5kdW1iX21hcF9vZmZz ZXQgPSBkcm1fZ2VtX3ZyYW1fZHJpdmVyX2R1bWJfbW1hcF9vZmZzZXQsCiB9OwogCiBzdGF0aWMg c3RydWN0IHBjaV9kcml2ZXIgbWdhZzIwMF9wY2lfZHJpdmVyID0gewpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZ2Fn MjAwL21nYWcyMDBfZHJ2LmgKaW5kZXggOGMzMWU0NDIyY2FlLi44NmIzM2UyM2FiN2YgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZHJ2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9kcnYuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBD b3B5cmlnaHQgMjAxMCBNYXR0IFR1cm5lci4KLSAqIENvcHlyaWdodCAyMDEyIFJlZCBIYXQgCisg KiBDb3B5cmlnaHQgMjAxMiBSZWQgSGF0CiAgKgogICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8g dGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbAogICogUHVibGljIExp Y2Vuc2UgdmVyc2lvbiAyLiBTZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgbWFpbgpAQCAtMjQs NiArMjQsNyBAQAogI2luY2x1ZGUgPGRybS90dG0vdHRtX21vZHVsZS5oPgogCiAjaW5jbHVkZSA8 ZHJtL2RybV9nZW0uaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV92cmFtX2hlbHBlci5oPgogCiAj aW5jbHVkZSA8bGludXgvaTJjLmg+CiAjaW5jbHVkZSA8bGludXgvaTJjLWFsZ28tYml0Lmg+CkBA IC0xNTksMTMgKzE2MCwxMyBAQCBzdHJ1Y3QgbWdhX2N1cnNvciB7CiAJICAgSWYgZWl0aGVyIG9m IHRoZXNlIGlzIE5VTEwsIHRoZW4gZG9uJ3QgZG8gaGFyZHdhcmUgY3Vyc29ycywgYW5kCiAJICAg ZmFsbCBiYWNrIHRvIHNvZnR3YXJlLgogCSovCi0Jc3RydWN0IG1nYWcyMDBfYm8gKnBpeGVsc18x OwotCXN0cnVjdCBtZ2FnMjAwX2JvICpwaXhlbHNfMjsKKwlzdHJ1Y3QgZHJtX2dlbV92cmFtX29i amVjdCAqcGl4ZWxzXzE7CisJc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKnBpeGVsc18yOwog CXU2NCBwaXhlbHNfMV9ncHVfYWRkciwgcGl4ZWxzXzJfZ3B1X2FkZHI7CiAJLyogVGhlIGN1cnJl bnRseSBkaXNwbGF5ZWQgaWNvbiwgdGhpcyBwb2ludHMgdG8gb25lIG9mIHBpeGVsc18xLCBvciBw aXhlbHNfMiAqLwotCXN0cnVjdCBtZ2FnMjAwX2JvICpwaXhlbHNfY3VycmVudDsKKwlzdHJ1Y3Qg ZHJtX2dlbV92cmFtX29iamVjdCAqcGl4ZWxzX2N1cnJlbnQ7CiAJLyogVGhlIHByZXZpb3VzbHkg ZGlzcGxheWVkIGljb24gKi8KLQlzdHJ1Y3QgbWdhZzIwMF9ibyAqcGl4ZWxzX3ByZXY7CisJc3Ry dWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKnBpeGVsc19wcmV2OwogfTsKIAogc3RydWN0IG1nYV9t YyB7CkBAIC0yMTksMjMgKzIyMCw2IEBAIHN0cnVjdCBtZ2FfZGV2aWNlIHsKIAl1MzIgdW5pcXVl X3Jldl9pZDsKIH07CiAKLQotc3RydWN0IG1nYWcyMDBfYm8gewotCXN0cnVjdCB0dG1fYnVmZmVy X29iamVjdCBibzsKLQlzdHJ1Y3QgdHRtX3BsYWNlbWVudCBwbGFjZW1lbnQ7Ci0Jc3RydWN0IHR0 bV9ib19rbWFwX29iaiBrbWFwOwotCXN0cnVjdCBkcm1fZ2VtX29iamVjdCBnZW07Ci0Jc3RydWN0 IHR0bV9wbGFjZSBwbGFjZW1lbnRzWzNdOwotCWludCBwaW5fY291bnQ7Ci19OwotI2RlZmluZSBn ZW1fdG9fbWdhX2JvKGdvYmopIGNvbnRhaW5lcl9vZigoZ29iaiksIHN0cnVjdCBtZ2FnMjAwX2Jv LCBnZW0pCi0KLXN0YXRpYyBpbmxpbmUgc3RydWN0IG1nYWcyMDBfYm8gKgotbWdhZzIwMF9ibyhz dHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKQotewotCXJldHVybiBjb250YWluZXJfb2YoYm8s IHN0cnVjdCBtZ2FnMjAwX2JvLCBibyk7Ci19Ci0KIAkJCQkvKiBtZ2FnMjAwX21vZGUuYyAqLwog aW50IG1nYWcyMDBfbW9kZXNldF9pbml0KHN0cnVjdCBtZ2FfZGV2aWNlICptZGV2KTsKIHZvaWQg bWdhZzIwMF9tb2Rlc2V0X2Zpbmkoc3RydWN0IG1nYV9kZXZpY2UgKm1kZXYpOwpAQCAtMjU5LDQ1 ICsyNDMsMTUgQEAgaW50IG1nYWcyMDBfZ2VtX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogaW50IG1nYWcyMDBfZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlLAogCQkJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCXN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJn cyk7Ci12b2lkIG1nYWcyMDBfZ2VtX2ZyZWVfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqKTsKLWludAotbWdhZzIwMF9kdW1iX21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1fZmlsZSAqZmls ZSwKLQkJCSBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJIHVpbnQzMl90IGhhbmRsZSwKLQkJ CSB1aW50NjRfdCAqb2Zmc2V0KTsKKwogCQkJCS8qIG1nYWcyMDBfaTJjLmMgKi8KIHN0cnVjdCBt Z2FfaTJjX2NoYW4gKm1nYWcyMDBfaTJjX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsK IHZvaWQgbWdhZzIwMF9pMmNfZGVzdHJveShzdHJ1Y3QgbWdhX2kyY19jaGFuICppMmMpOwogCi12 b2lkIG1nYWcyMDBfdHRtX3BsYWNlbWVudChzdHJ1Y3QgbWdhZzIwMF9ibyAqYm8sIGludCBkb21h aW4pOwotCi1zdGF0aWMgaW5saW5lIGludCBtZ2FnMjAwX2JvX3Jlc2VydmUoc3RydWN0IG1nYWcy MDBfYm8gKmJvLCBib29sIG5vX3dhaXQpCi17Ci0JaW50IHJldDsKLQotCXJldCA9IHR0bV9ib19y ZXNlcnZlKCZiby0+Ym8sIHRydWUsIG5vX3dhaXQsIE5VTEwpOwotCWlmIChyZXQpIHsKLQkJaWYg KHJldCAhPSAtRVJFU1RBUlRTWVMgJiYgcmV0ICE9IC1FQlVTWSkKLQkJCURSTV9FUlJPUigicmVz ZXJ2ZSBmYWlsZWQgJXBcbiIsIGJvKTsKLQkJcmV0dXJuIHJldDsKLQl9Ci0JcmV0dXJuIDA7Ci19 Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBtZ2FnMjAwX2JvX3VucmVzZXJ2ZShzdHJ1Y3QgbWdhZzIw MF9ibyAqYm8pCi17Ci0JdHRtX2JvX3VucmVzZXJ2ZSgmYm8tPmJvKTsKLX0KLQotaW50IG1nYWcy MDBfYm9fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBzaXplLCBpbnQgYWxpZ24s Ci0JCSAgICAgIHVpbnQzMl90IGZsYWdzLCBzdHJ1Y3QgbWdhZzIwMF9ibyAqKnBhc3Ribyk7CiBp bnQgbWdhZzIwMF9tbV9pbml0KHN0cnVjdCBtZ2FfZGV2aWNlICptZGV2KTsKIHZvaWQgbWdhZzIw MF9tbV9maW5pKHN0cnVjdCBtZ2FfZGV2aWNlICptZGV2KTsKIGludCBtZ2FnMjAwX21tYXAoc3Ry dWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKLWludCBtZ2FnMjAw X2JvX3BpbihzdHJ1Y3QgbWdhZzIwMF9ibyAqYm8sIHUzMiBwbF9mbGFnLCB1NjQgKmdwdV9hZGRy KTsKLWludCBtZ2FnMjAwX2JvX3VucGluKHN0cnVjdCBtZ2FnMjAwX2JvICpibyk7Ci1pbnQgbWdh ZzIwMF9ib19wdXNoX3N5c3JhbShzdHJ1Y3QgbWdhZzIwMF9ibyAqYm8pOwotCQkJICAgLyogbWdh ZzIwMF9jdXJzb3IuYyAqLworCiBpbnQgbWdhX2NydGNfY3Vyc29yX3NldChzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAogCQkJCQkJdWludDMyX3QgaGFu ZGxlLCB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KTsKIGludCBtZ2FfY3J0Y19jdXJz b3JfbW92ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGludCB4LCBpbnQgeSk7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2ZiLmMgYi9kcml2ZXJzL2dwdS9kcm0v bWdhZzIwMC9tZ2FnMjAwX2ZiLmMKaW5kZXggNWI3ZTY0Y2FjMDA0Li4xYmNmMGQ2NTg2OGQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZmIuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2ZiLmMKQEAgLTIzLDcgKzIzLDcgQEAgc3RhdGlj IHZvaWQgbWdhX2RpcnR5X3VwZGF0ZShzdHJ1Y3QgbWdhX2ZiZGV2ICptZmJkZXYsCiB7CiAJaW50 IGk7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7Ci0Jc3RydWN0IG1nYWcyMDBfYm8gKmJv OworCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm87CiAJaW50IHNyY19vZmZzZXQsIGRz dF9vZmZzZXQ7CiAJaW50IGJwcCA9IG1mYmRldi0+bWZiLmJhc2UuZm9ybWF0LT5jcHBbMF07CiAJ aW50IHJldCA9IC1FQlVTWTsKQEAgLTMzLDcgKzMzLDcgQEAgc3RhdGljIHZvaWQgbWdhX2RpcnR5 X3VwZGF0ZShzdHJ1Y3QgbWdhX2ZiZGV2ICptZmJkZXYsCiAJdW5zaWduZWQgbG9uZyBmbGFnczsK IAogCW9iaiA9IG1mYmRldi0+bWZiLm9iajsKLQlibyA9IGdlbV90b19tZ2FfYm8ob2JqKTsKKwln Ym8gPSBkcm1fZ2VtX3ZyYW1fb2ZfZ2VtKG9iaik7CiAKIAkvKgogCSAqIHRyeSBhbmQgcmVzZXJ2 ZSB0aGUgQk8sIGlmIHdlIGZhaWwgd2l0aCBidXN5CkBAIC00MSw3ICs0MSw3IEBAIHN0YXRpYyB2 b2lkIG1nYV9kaXJ0eV91cGRhdGUoc3RydWN0IG1nYV9mYmRldiAqbWZiZGV2LAogCSAqIHN0b3Jl IHVwIHRoZSBkYW1hZ2UgdW50aWwgbGF0ZXIuCiAJICovCiAJaWYgKGRybV9jYW5fc2xlZXAoKSkK LQkJcmV0ID0gbWdhZzIwMF9ib19yZXNlcnZlKGJvLCB0cnVlKTsKKwkJcmV0ID0gZHJtX2dlbV92 cmFtX3Jlc2VydmUoZ2JvLCB0cnVlKTsKIAlpZiAocmV0KSB7CiAJCWlmIChyZXQgIT0gLUVCVVNZ KQogCQkJcmV0dXJuOwpAQCAtNzUsMjUgKzc1LDI3IEBAIHN0YXRpYyB2b2lkIG1nYV9kaXJ0eV91 cGRhdGUoc3RydWN0IG1nYV9mYmRldiAqbWZiZGV2LAogCW1mYmRldi0+eDIgPSBtZmJkZXYtPnky ID0gMDsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZtZmJkZXYtPmRpcnR5X2xvY2ssIGZsYWdz KTsKIAotCWlmICghYm8tPmttYXAudmlydHVhbCkgewotCQlyZXQgPSB0dG1fYm9fa21hcCgmYm8t PmJvLCAwLCBiby0+Ym8ubnVtX3BhZ2VzLCAmYm8tPmttYXApOworCWlmICghZ2JvLT5rbWFwLnZp cnR1YWwpIHsKKwkJcmV0ID0gdHRtX2JvX2ttYXAoJmdiby0+Ym8sIDAsIGdiby0+Ym8ubnVtX3Bh Z2VzLCAmZ2JvLT5rbWFwKTsKIAkJaWYgKHJldCkgewogCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8g a21hcCBmYiB1cGRhdGVzXG4iKTsKLQkJCW1nYWcyMDBfYm9fdW5yZXNlcnZlKGJvKTsKKwkJCWRy bV9nZW1fdnJhbV91bnJlc2VydmUoZ2JvKTsKIAkJCXJldHVybjsKIAkJfQogCQl1bm1hcCA9IHRy dWU7CiAJfQogCWZvciAoaSA9IHk7IGkgPD0geTI7IGkrKykgewogCQkvKiBhc3N1bWUgZXF1YWwg c3RyaWRlIGZvciBub3cgKi8KLQkJc3JjX29mZnNldCA9IGRzdF9vZmZzZXQgPSBpICogbWZiZGV2 LT5tZmIuYmFzZS5waXRjaGVzWzBdICsgKHggKiBicHApOwotCQltZW1jcHlfdG9pbyhiby0+a21h cC52aXJ0dWFsICsgc3JjX29mZnNldCwgbWZiZGV2LT5zeXNyYW0gKyBzcmNfb2Zmc2V0LCAoeDIg LSB4ICsgMSkgKiBicHApOworCQlzcmNfb2Zmc2V0ID0gZHN0X29mZnNldCA9CisJCQlpICogbWZi ZGV2LT5tZmIuYmFzZS5waXRjaGVzWzBdICsgKHggKiBicHApOworCQltZW1jcHlfdG9pbyhnYm8t PmttYXAudmlydHVhbCArIHNyY19vZmZzZXQsCisJCQkgICAgbWZiZGV2LT5zeXNyYW0gKyBkc3Rf b2Zmc2V0LCAoeDIgLSB4ICsgMSkgKiBicHApOwogCiAJfQogCWlmICh1bm1hcCkKLQkJdHRtX2Jv X2t1bm1hcCgmYm8tPmttYXApOworCQl0dG1fYm9fa3VubWFwKCZnYm8tPmttYXApOwogCi0JbWdh ZzIwMF9ib191bnJlc2VydmUoYm8pOworCWRybV9nZW1fdnJhbV91bnJlc2VydmUoZ2JvKTsKIH0K IAogc3RhdGljIHZvaWQgbWdhX2ZpbGxyZWN0KHN0cnVjdCBmYl9pbmZvICppbmZvLApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9tYWluLmMgYi9kcml2ZXJzL2dw dS9kcm0vbWdhZzIwMC9tZ2FnMjAwX21haW4uYwppbmRleCAxNjMyNTUwOTk3NzkuLjU5YTQwMjhh NWM2YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9tYWluLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9tYWluLmMKQEAgLTIzMCwxMSAr MjMwLDEzIEBAIGludCBtZ2FnMjAwX2RyaXZlcl9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiAJfQogCiAJLyogTWFrZSBzbWFsbCBidWZmZXJzIHRvIHN0 b3JlIGEgaGFyZHdhcmUgY3Vyc29yIChkb3VibGUgYnVmZmVyZWQgaWNvbiB1cGRhdGVzKSAqLwot CW1nYWcyMDBfYm9fY3JlYXRlKGRldiwgcm91bmR1cCg0OCo2NCwgUEFHRV9TSVpFKSwgMCwgMCwK LQkJCQkJICAmbWRldi0+Y3Vyc29yLnBpeGVsc18xKTsKLQltZ2FnMjAwX2JvX2NyZWF0ZShkZXYs IHJvdW5kdXAoNDgqNjQsIFBBR0VfU0laRSksIDAsIDAsCi0JCQkJCSAgJm1kZXYtPmN1cnNvci5w aXhlbHNfMik7Ci0JaWYgKCFtZGV2LT5jdXJzb3IucGl4ZWxzXzIgfHwgIW1kZXYtPmN1cnNvci5w aXhlbHNfMSkgeworCW1kZXYtPmN1cnNvci5waXhlbHNfMSA9IGRybV9nZW1fdnJhbV9jcmVhdGUo ZGV2LCAmbWRldi0+dHRtLmJkZXYsCisJCQkJCQkgICAgcm91bmR1cCg0OCo2NCwgUEFHRV9TSVpF KSwKKwkJCQkJCSAgICAwLCAwKTsKKwltZGV2LT5jdXJzb3IucGl4ZWxzXzIgPSBkcm1fZ2VtX3Zy YW1fY3JlYXRlKGRldiwgJm1kZXYtPnR0bS5iZGV2LAorCQkJCQkJICAgIHJvdW5kdXAoNDgqNjQs IFBBR0VfU0laRSksCisJCQkJCQkgICAgMCwgMCk7CisJaWYgKElTX0VSUihtZGV2LT5jdXJzb3Iu cGl4ZWxzXzIpIHx8IElTX0VSUihtZGV2LT5jdXJzb3IucGl4ZWxzXzEpKSB7CiAJCW1kZXYtPmN1 cnNvci5waXhlbHNfMSA9IE5VTEw7CiAJCW1kZXYtPmN1cnNvci5waXhlbHNfMiA9IE5VTEw7CiAJ CWRldl93YXJuKCZkZXYtPnBkZXYtPmRldiwKQEAgLTI3Miw3ICsyNzQsOCBAQCBpbnQgbWdhZzIw MF9nZW1fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCSAgIHUzMiBzaXplLCBib29s IGlza2VybmVsLAogCQkgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKipvYmopCiB7Ci0Jc3RydWN0 IG1nYWcyMDBfYm8gKmFzdGJvOworCXN0cnVjdCBtZ2FfZGV2aWNlICptZGV2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvOwogCWludCByZXQ7CiAK IAkqb2JqID0gTlVMTDsKQEAgLTI4MSwxMyArMjg0LDE0IEBAIGludCBtZ2FnMjAwX2dlbV9jcmVh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAoc2l6ZSA9PSAwKQogCQlyZXR1cm4gLUVJ TlZBTDsKIAotCXJldCA9IG1nYWcyMDBfYm9fY3JlYXRlKGRldiwgc2l6ZSwgMCwgMCwgJmFzdGJv KTsKLQlpZiAocmV0KSB7CisJZ2JvID0gZHJtX2dlbV92cmFtX2NyZWF0ZShkZXYsICZtZGV2LT50 dG0uYmRldiwgc2l6ZSwgMCwgZmFsc2UpOworCWlmIChJU19FUlIoZ2JvKSkgeworCQlyZXQgPSBQ VFJfRVJSKGdibyk7CiAJCWlmIChyZXQgIT0gLUVSRVNUQVJUU1lTKQogCQkJRFJNX0VSUk9SKCJm YWlsZWQgdG8gYWxsb2NhdGUgR0VNIG9iamVjdFxuIik7CiAJCXJldHVybiByZXQ7CiAJfQotCSpv YmogPSAmYXN0Ym8tPmdlbTsKKwkqb2JqID0gJmdiby0+Z2VtOwogCXJldHVybiAwOwogfQogCkBA IC0yOTUsNjQgKzI5OSw4IEBAIGludCBtZ2FnMjAwX2R1bWJfY3JlYXRlKHN0cnVjdCBkcm1fZmls ZSAqZmlsZSwKIAkJICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCSAgICBzdHJ1Y3QgZHJt X21vZGVfY3JlYXRlX2R1bWIgKmFyZ3MpCiB7Ci0JaW50IHJldDsKLQlzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKmdvYmo7Ci0JdTMyIGhhbmRsZTsKLQotCWFyZ3MtPnBpdGNoID0gYXJncy0+d2lkdGgg KiAoKGFyZ3MtPmJwcCArIDcpIC8gOCk7Ci0JYXJncy0+c2l6ZSA9IGFyZ3MtPnBpdGNoICogYXJn cy0+aGVpZ2h0OwotCi0JcmV0ID0gbWdhZzIwMF9nZW1fY3JlYXRlKGRldiwgYXJncy0+c2l6ZSwg ZmFsc2UsCi0JCQkgICAgICZnb2JqKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0 ID0gZHJtX2dlbV9oYW5kbGVfY3JlYXRlKGZpbGUsIGdvYmosICZoYW5kbGUpOwotCWRybV9nZW1f b2JqZWN0X3B1dF91bmxvY2tlZChnb2JqKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0J YXJncy0+aGFuZGxlID0gaGFuZGxlOwotCXJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCBtZ2Fn MjAwX2JvX3VucmVmKHN0cnVjdCBtZ2FnMjAwX2JvICoqYm8pCi17Ci0JaWYgKCgqYm8pID09IE5V TEwpCi0JCXJldHVybjsKLQl0dG1fYm9fcHV0KCYoKCpibyktPmJvKSk7Ci0JKmJvID0gTlVMTDsK LX0KLQotdm9pZCBtZ2FnMjAwX2dlbV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaikKLXsKLQlzdHJ1Y3QgbWdhZzIwMF9ibyAqbWdhZzIwMF9ibyA9IGdlbV90b19tZ2FfYm8o b2JqKTsKLQotCW1nYWcyMDBfYm9fdW5yZWYoJm1nYWcyMDBfYm8pOwotfQotCi0KLXN0YXRpYyBp bmxpbmUgdTY0IG1nYWcyMDBfYm9fbW1hcF9vZmZzZXQoc3RydWN0IG1nYWcyMDBfYm8gKmJvKQot ewotCXJldHVybiBkcm1fdm1hX25vZGVfb2Zmc2V0X2FkZHIoJmJvLT5iby52bWFfbm9kZSk7Ci19 Ci0KLWludAotbWdhZzIwMF9kdW1iX21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwK LQkJICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkgICAgIHVpbnQzMl90IGhhbmRsZSwK LQkJICAgICB1aW50NjRfdCAqb2Zmc2V0KQotewotCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jq OwotCXN0cnVjdCBtZ2FnMjAwX2JvICpibzsKLQotCW9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1 cChmaWxlLCBoYW5kbGUpOwotCWlmIChvYmogPT0gTlVMTCkKLQkJcmV0dXJuIC1FTk9FTlQ7Ci0K LQlibyA9IGdlbV90b19tZ2FfYm8ob2JqKTsKLQkqb2Zmc2V0ID0gbWdhZzIwMF9ib19tbWFwX29m ZnNldChibyk7CisJc3RydWN0IG1nYV9kZXZpY2UgKm1kZXYgPSBkZXYtPmRldl9wcml2YXRlOwog Ci0JZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7Ci0JcmV0dXJuIDA7CisJcmV0dXJu IGRybV9nZW1fdnJhbV9maWxsX2NyZWF0ZV9kdW1iKGZpbGUsIGRldiwgJm1kZXYtPnR0bS5iZGV2 LCAwLAorCQkJCQkgICAgZmFsc2UsIGFyZ3MpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21nYWcyMDAvbWdhZzIwMF9tb2RlLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2Fn MjAwX21vZGUuYwppbmRleCA3NDgxYTNkNTU2YWQuLjI2YmFhZTVlZWI5YiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9tb2RlLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL21nYWcyMDAvbWdhZzIwMF9tb2RlLmMKQEAgLTg2Nyw0OCArODY3LDU3IEBAIHN0YXRpYyBp bnQgbWdhX2NydGNfZG9fc2V0X2Jhc2Uoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCXN0cnVjdCBt Z2FfZGV2aWNlICptZGV2ID0gY3J0Yy0+ZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKm9iajsKIAlzdHJ1Y3QgbWdhX2ZyYW1lYnVmZmVyICptZ2FfZmI7Ci0Jc3RydWN0 IG1nYWcyMDBfYm8gKmJvOworCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm87CiAJaW50 IHJldDsKLQl1NjQgZ3B1X2FkZHI7CisJczY0IGdwdV9hZGRyOwogCiAJLyogcHVzaCB0aGUgcHJl dmlvdXMgZmIgdG8gc3lzdGVtIHJhbSAqLwogCWlmICghYXRvbWljICYmIGZiKSB7CiAJCW1nYV9m YiA9IHRvX21nYV9mcmFtZWJ1ZmZlcihmYik7CiAJCW9iaiA9IG1nYV9mYi0+b2JqOwotCQlibyA9 IGdlbV90b19tZ2FfYm8ob2JqKTsKLQkJcmV0ID0gbWdhZzIwMF9ib19yZXNlcnZlKGJvLCBmYWxz ZSk7CisJCWdibyA9IGRybV9nZW1fdnJhbV9vZl9nZW0ob2JqKTsKKwkJcmV0ID0gZHJtX2dlbV92 cmFtX3Jlc2VydmUoZ2JvLCBmYWxzZSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwotCQlt Z2FnMjAwX2JvX3B1c2hfc3lzcmFtKGJvKTsKLQkJbWdhZzIwMF9ib191bnJlc2VydmUoYm8pOwor CQlkcm1fZ2VtX3ZyYW1fcHVzaF90b19zeXN0ZW0oZ2JvKTsKKwkJZHJtX2dlbV92cmFtX3VucmVz ZXJ2ZShnYm8pOwogCX0KIAogCW1nYV9mYiA9IHRvX21nYV9mcmFtZWJ1ZmZlcihjcnRjLT5wcmlt YXJ5LT5mYik7CiAJb2JqID0gbWdhX2ZiLT5vYmo7Ci0JYm8gPSBnZW1fdG9fbWdhX2JvKG9iaik7 CisJZ2JvID0gZHJtX2dlbV92cmFtX29mX2dlbShvYmopOwogCi0JcmV0ID0gbWdhZzIwMF9ib19y ZXNlcnZlKGJvLCBmYWxzZSk7CisJcmV0ID0gZHJtX2dlbV92cmFtX3Jlc2VydmUoZ2JvLCBmYWxz ZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldCA9IG1nYWcyMDBfYm9fcGluKGJv LCBUVE1fUExfRkxBR19WUkFNLCAmZ3B1X2FkZHIpOwotCWlmIChyZXQpIHsKLQkJbWdhZzIwMF9i b191bnJlc2VydmUoYm8pOwotCQlyZXR1cm4gcmV0OworCXJldCA9IGRybV9nZW1fdnJhbV9waW4o Z2JvLCBEUk1fR0VNX1ZSQU1fUExfRkxBR19WUkFNKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9k cm1fZ2VtX3ZyYW1fdW5yZXNlcnZlOworCWdwdV9hZGRyID0gZHJtX2dlbV92cmFtX29mZnNldChn Ym8pOworCWlmIChncHVfYWRkciA8IDApIHsKKwkJcmV0ID0gKGludClncHVfYWRkcjsKKwkJZ290 byBlcnJfZHJtX2dlbV92cmFtX3VucGluOwogCX0KIAogCWlmICgmbWRldi0+bWZiZGV2LT5tZmIg PT0gbWdhX2ZiKSB7CiAJCS8qIGlmIHB1c2hpbmcgY29uc29sZSBpbiBrbWFwIGl0ICovCi0JCXJl dCA9IHR0bV9ib19rbWFwKCZiby0+Ym8sIDAsIGJvLT5iby5udW1fcGFnZXMsICZiby0+a21hcCk7 CisJCXJldCA9IHR0bV9ib19rbWFwKCZnYm8tPmJvLCAwLCBnYm8tPmJvLm51bV9wYWdlcywgJmdi by0+a21hcCk7CiAJCWlmIChyZXQpCiAJCQlEUk1fRVJST1IoImZhaWxlZCB0byBrbWFwIGZiY29u XG4iKTsKIAogCX0KLQltZ2FnMjAwX2JvX3VucmVzZXJ2ZShibyk7CisJZHJtX2dlbV92cmFtX3Vu cmVzZXJ2ZShnYm8pOwogCiAJbWdhX3NldF9zdGFydF9hZGRyZXNzKGNydGMsICh1MzIpZ3B1X2Fk ZHIpOwogCiAJcmV0dXJuIDA7CisKK2Vycl9kcm1fZ2VtX3ZyYW1fdW5waW46CisJZHJtX2dlbV92 cmFtX3VucGluKGdibyk7CitlcnJfZHJtX2dlbV92cmFtX3VucmVzZXJ2ZToKKwlkcm1fZ2VtX3Zy YW1fdW5yZXNlcnZlKGdibyk7CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBtZ2FfY3J0 Y19tb2RlX3NldF9iYXNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgaW50IHgsIGludCB5LApAQCAt MTQyOCwxMiArMTQzNywxMyBAQCBzdGF0aWMgdm9pZCBtZ2FfY3J0Y19kaXNhYmxlKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKIAlpZiAoY3J0Yy0+cHJpbWFyeS0+ZmIpIHsKIAkJc3RydWN0IG1nYV9m cmFtZWJ1ZmZlciAqbWdhX2ZiID0gdG9fbWdhX2ZyYW1lYnVmZmVyKGNydGMtPnByaW1hcnktPmZi KTsKIAkJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBtZ2FfZmItPm9iajsKLQkJc3RydWN0 IG1nYWcyMDBfYm8gKmJvID0gZ2VtX3RvX21nYV9ibyhvYmopOwotCQlyZXQgPSBtZ2FnMjAwX2Jv X3Jlc2VydmUoYm8sIGZhbHNlKTsKKwkJc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibyA9 IGRybV9nZW1fdnJhbV9vZl9nZW0ob2JqKTsKKworCQlyZXQgPSBkcm1fZ2VtX3ZyYW1fcmVzZXJ2 ZShnYm8sIGZhbHNlKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybjsKLQkJbWdhZzIwMF9ib19wdXNo X3N5c3JhbShibyk7Ci0JCW1nYWcyMDBfYm9fdW5yZXNlcnZlKGJvKTsKKwkJZHJtX2dlbV92cmFt X3B1c2hfdG9fc3lzdGVtKGdibyk7CisJCWRybV9nZW1fdnJhbV91bnJlc2VydmUoZ2JvKTsKIAl9 CiAJY3J0Yy0+cHJpbWFyeS0+ZmIgPSBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21nYWcyMDAvbWdhZzIwMF90dG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcy MDBfdHRtLmMKaW5kZXggYmQ0MjM2NWE4YWE4Li4yYzAyNDkwODZiZjkgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfdHRtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L21nYWcyMDAvbWdhZzIwMF90dG0uYwpAQCAtMzYsMjMgKzM2LDYgQEAgbWdhZzIwMF9iZGV2KHN0 cnVjdCB0dG1fYm9fZGV2aWNlICpiZCkKIAlyZXR1cm4gY29udGFpbmVyX29mKGJkLCBzdHJ1Y3Qg bWdhX2RldmljZSwgdHRtLmJkZXYpOwogfQogCi1zdGF0aWMgdm9pZCBtZ2FnMjAwX2JvX3R0bV9k ZXN0cm95KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqdGJvKQotewotCXN0cnVjdCBtZ2FnMjAw X2JvICpibzsKLQotCWJvID0gY29udGFpbmVyX29mKHRibywgc3RydWN0IG1nYWcyMDBfYm8sIGJv KTsKLQotCWRybV9nZW1fb2JqZWN0X3JlbGVhc2UoJmJvLT5nZW0pOwotCWtmcmVlKGJvKTsKLX0K LQotc3RhdGljIGJvb2wgbWdhZzIwMF90dG1fYm9faXNfbWdhZzIwMF9ibyhzdHJ1Y3QgdHRtX2J1 ZmZlcl9vYmplY3QgKmJvKQotewotCWlmIChiby0+ZGVzdHJveSA9PSAmbWdhZzIwMF9ib190dG1f ZGVzdHJveSkKLQkJcmV0dXJuIHRydWU7Ci0JcmV0dXJuIGZhbHNlOwotfQotCiBzdGF0aWMgaW50 CiBtZ2FnMjAwX2JvX2luaXRfbWVtX3R5cGUoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsIHVp bnQzMl90IHR5cGUsCiAJCSAgICAgc3RydWN0IHR0bV9tZW1fdHlwZV9tYW5hZ2VyICptYW4pCkBA IC03OCwyNiArNjEsNiBAQCBtZ2FnMjAwX2JvX2luaXRfbWVtX3R5cGUoc3RydWN0IHR0bV9ib19k ZXZpY2UgKmJkZXYsIHVpbnQzMl90IHR5cGUsCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lk Ci1tZ2FnMjAwX2JvX2V2aWN0X2ZsYWdzKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sIHN0 cnVjdCB0dG1fcGxhY2VtZW50ICpwbCkKLXsKLQlzdHJ1Y3QgbWdhZzIwMF9ibyAqbWdhYm8gPSBt Z2FnMjAwX2JvKGJvKTsKLQotCWlmICghbWdhZzIwMF90dG1fYm9faXNfbWdhZzIwMF9ibyhibykp Ci0JCXJldHVybjsKLQotCW1nYWcyMDBfdHRtX3BsYWNlbWVudChtZ2FibywgVFRNX1BMX0ZMQUdf U1lTVEVNKTsKLQkqcGwgPSBtZ2Fiby0+cGxhY2VtZW50OwotfQotCi1zdGF0aWMgaW50IG1nYWcy MDBfYm9fdmVyaWZ5X2FjY2VzcyhzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLCBzdHJ1Y3Qg ZmlsZSAqZmlscCkKLXsKLQlzdHJ1Y3QgbWdhZzIwMF9ibyAqbWdhYm8gPSBtZ2FnMjAwX2JvKGJv KTsKLQotCXJldHVybiBkcm1fdm1hX25vZGVfdmVyaWZ5X2FjY2VzcygmbWdhYm8tPmdlbS52bWFf bm9kZSwKLQkJCQkJICBmaWxwLT5wcml2YXRlX2RhdGEpOwotfQotCiBzdGF0aWMgaW50IG1nYWcy MDBfdHRtX2lvX21lbV9yZXNlcnZlKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAogCQkJCSAg c3RydWN0IHR0bV9tZW1fcmVnICptZW0pCiB7CkBAIC0xNjIsOSArMTI1LDkgQEAgc3RydWN0IHR0 bV9ib19kcml2ZXIgbWdhZzIwMF9ib19kcml2ZXIgPSB7CiAJLnR0bV90dF9jcmVhdGUgPSBtZ2Fn MjAwX3R0bV90dF9jcmVhdGUsCiAJLmluaXRfbWVtX3R5cGUgPSBtZ2FnMjAwX2JvX2luaXRfbWVt X3R5cGUsCiAJLmV2aWN0aW9uX3ZhbHVhYmxlID0gdHRtX2JvX2V2aWN0aW9uX3ZhbHVhYmxlLAot CS5ldmljdF9mbGFncyA9IG1nYWcyMDBfYm9fZXZpY3RfZmxhZ3MsCisJLmV2aWN0X2ZsYWdzID0g ZHJtX2dlbV92cmFtX2JvX2RyaXZlcl9ldmljdF9mbGFncywKIAkubW92ZSA9IE5VTEwsCi0JLnZl cmlmeV9hY2Nlc3MgPSBtZ2FnMjAwX2JvX3ZlcmlmeV9hY2Nlc3MsCisJLnZlcmlmeV9hY2Nlc3Mg PSBkcm1fZ2VtX3ZyYW1fYm9fZHJpdmVyX3ZlcmlmeV9hY2Nlc3MsCiAJLmlvX21lbV9yZXNlcnZl ID0gJm1nYWcyMDBfdHRtX2lvX21lbV9yZXNlcnZlLAogCS5pb19tZW1fZnJlZSA9ICZtZ2FnMjAw X3R0bV9pb19tZW1fZnJlZSwKIH07CkBAIC0yMTEsMTM3ICsxNzQsNiBAQCB2b2lkIG1nYWcyMDBf bW1fZmluaShzdHJ1Y3QgbWdhX2RldmljZSAqbWRldikKIAltZGV2LT5mYl9tdHJyID0gMDsKIH0K IAotdm9pZCBtZ2FnMjAwX3R0bV9wbGFjZW1lbnQoc3RydWN0IG1nYWcyMDBfYm8gKmJvLCBpbnQg ZG9tYWluKQotewotCXUzMiBjID0gMDsKLQl1bnNpZ25lZCBpOwotCi0JYm8tPnBsYWNlbWVudC5w bGFjZW1lbnQgPSBiby0+cGxhY2VtZW50czsKLQliby0+cGxhY2VtZW50LmJ1c3lfcGxhY2VtZW50 ID0gYm8tPnBsYWNlbWVudHM7Ci0JaWYgKGRvbWFpbiAmIFRUTV9QTF9GTEFHX1ZSQU0pCi0JCWJv LT5wbGFjZW1lbnRzW2MrK10uZmxhZ3MgPSBUVE1fUExfRkxBR19XQyB8IFRUTV9QTF9GTEFHX1VO Q0FDSEVEIHwgVFRNX1BMX0ZMQUdfVlJBTTsKLQlpZiAoZG9tYWluICYgVFRNX1BMX0ZMQUdfU1lT VEVNKQotCQliby0+cGxhY2VtZW50c1tjKytdLmZsYWdzID0gVFRNX1BMX01BU0tfQ0FDSElORyB8 IFRUTV9QTF9GTEFHX1NZU1RFTTsKLQlpZiAoIWMpCi0JCWJvLT5wbGFjZW1lbnRzW2MrK10uZmxh Z3MgPSBUVE1fUExfTUFTS19DQUNISU5HIHwgVFRNX1BMX0ZMQUdfU1lTVEVNOwotCWJvLT5wbGFj ZW1lbnQubnVtX3BsYWNlbWVudCA9IGM7Ci0JYm8tPnBsYWNlbWVudC5udW1fYnVzeV9wbGFjZW1l bnQgPSBjOwotCWZvciAoaSA9IDA7IGkgPCBjOyArK2kpIHsKLQkJYm8tPnBsYWNlbWVudHNbaV0u ZnBmbiA9IDA7Ci0JCWJvLT5wbGFjZW1lbnRzW2ldLmxwZm4gPSAwOwotCX0KLX0KLQotaW50IG1n YWcyMDBfYm9fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBzaXplLCBpbnQgYWxp Z24sCi0JCSAgdWludDMyX3QgZmxhZ3MsIHN0cnVjdCBtZ2FnMjAwX2JvICoqcG1nYWJvKQotewot CXN0cnVjdCBtZ2FfZGV2aWNlICptZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQlzdHJ1Y3QgbWdh ZzIwMF9ibyAqbWdhYm87Ci0Jc2l6ZV90IGFjY19zaXplOwotCWludCByZXQ7Ci0KLQltZ2FibyA9 IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBtZ2FnMjAwX2JvKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFt Z2FibykKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQlyZXQgPSBkcm1fZ2VtX29iamVjdF9pbml0KGRl diwgJm1nYWJvLT5nZW0sIHNpemUpOwotCWlmIChyZXQpIHsKLQkJa2ZyZWUobWdhYm8pOwotCQly ZXR1cm4gcmV0OwotCX0KLQotCW1nYWJvLT5iby5iZGV2ID0gJm1kZXYtPnR0bS5iZGV2OwotCi0J bWdhZzIwMF90dG1fcGxhY2VtZW50KG1nYWJvLCBUVE1fUExfRkxBR19WUkFNIHwgVFRNX1BMX0ZM QUdfU1lTVEVNKTsKLQotCWFjY19zaXplID0gdHRtX2JvX2RtYV9hY2Nfc2l6ZSgmbWRldi0+dHRt LmJkZXYsIHNpemUsCi0JCQkJICAgICAgIHNpemVvZihzdHJ1Y3QgbWdhZzIwMF9ibykpOwotCi0J cmV0ID0gdHRtX2JvX2luaXQoJm1kZXYtPnR0bS5iZGV2LCAmbWdhYm8tPmJvLCBzaXplLAotCQkJ ICB0dG1fYm9fdHlwZV9kZXZpY2UsICZtZ2Fiby0+cGxhY2VtZW50LAotCQkJICBhbGlnbiA+PiBQ QUdFX1NISUZULCBmYWxzZSwgYWNjX3NpemUsCi0JCQkgIE5VTEwsIE5VTEwsIG1nYWcyMDBfYm9f dHRtX2Rlc3Ryb3kpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQkqcG1nYWJvID0gbWdh Ym87Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdTY0IG1nYWcyMDBfYm9fZ3B1X29m ZnNldChzdHJ1Y3QgbWdhZzIwMF9ibyAqYm8pCi17Ci0JcmV0dXJuIGJvLT5iby5vZmZzZXQ7Ci19 Ci0KLWludCBtZ2FnMjAwX2JvX3BpbihzdHJ1Y3QgbWdhZzIwMF9ibyAqYm8sIHUzMiBwbF9mbGFn LCB1NjQgKmdwdV9hZGRyKQotewotCXN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCBjdHggPSB7IGZh bHNlLCBmYWxzZSB9OwotCWludCBpLCByZXQ7Ci0KLQlpZiAoYm8tPnBpbl9jb3VudCkgewotCQli by0+cGluX2NvdW50Kys7Ci0JCWlmIChncHVfYWRkcikKLQkJCSpncHVfYWRkciA9IG1nYWcyMDBf Ym9fZ3B1X29mZnNldChibyk7Ci0JCXJldHVybiAwOwotCX0KLQotCW1nYWcyMDBfdHRtX3BsYWNl bWVudChibywgcGxfZmxhZyk7Ci0JZm9yIChpID0gMDsgaSA8IGJvLT5wbGFjZW1lbnQubnVtX3Bs YWNlbWVudDsgaSsrKQotCQliby0+cGxhY2VtZW50c1tpXS5mbGFncyB8PSBUVE1fUExfRkxBR19O T19FVklDVDsKLQlyZXQgPSB0dG1fYm9fdmFsaWRhdGUoJmJvLT5ibywgJmJvLT5wbGFjZW1lbnQs ICZjdHgpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQliby0+cGluX2NvdW50ID0gMTsK LQlpZiAoZ3B1X2FkZHIpCi0JCSpncHVfYWRkciA9IG1nYWcyMDBfYm9fZ3B1X29mZnNldChibyk7 Ci0JcmV0dXJuIDA7Ci19Ci0KLWludCBtZ2FnMjAwX2JvX3VucGluKHN0cnVjdCBtZ2FnMjAwX2Jv ICpibykKLXsKLQlzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggY3R4ID0geyBmYWxzZSwgZmFsc2Ug fTsKLQlpbnQgaTsKLQlpZiAoIWJvLT5waW5fY291bnQpIHsKLQkJRFJNX0VSUk9SKCJ1bnBpbiBi YWQgJXBcbiIsIGJvKTsKLQkJcmV0dXJuIDA7Ci0JfQotCWJvLT5waW5fY291bnQtLTsKLQlpZiAo Ym8tPnBpbl9jb3VudCkKLQkJcmV0dXJuIDA7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgYm8tPnBsYWNl bWVudC5udW1fcGxhY2VtZW50IDsgaSsrKQotCQliby0+cGxhY2VtZW50c1tpXS5mbGFncyAmPSB+ VFRNX1BMX0ZMQUdfTk9fRVZJQ1Q7Ci0JcmV0dXJuIHR0bV9ib192YWxpZGF0ZSgmYm8tPmJvLCAm Ym8tPnBsYWNlbWVudCwgJmN0eCk7Ci19Ci0KLWludCBtZ2FnMjAwX2JvX3B1c2hfc3lzcmFtKHN0 cnVjdCBtZ2FnMjAwX2JvICpibykKLXsKLQlzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggY3R4ID0g eyBmYWxzZSwgZmFsc2UgfTsKLQlpbnQgaSwgcmV0OwotCWlmICghYm8tPnBpbl9jb3VudCkgewot CQlEUk1fRVJST1IoInVucGluIGJhZCAlcFxuIiwgYm8pOwotCQlyZXR1cm4gMDsKLQl9Ci0JYm8t PnBpbl9jb3VudC0tOwotCWlmIChiby0+cGluX2NvdW50KQotCQlyZXR1cm4gMDsKLQotCWlmIChi by0+a21hcC52aXJ0dWFsKQotCQl0dG1fYm9fa3VubWFwKCZiby0+a21hcCk7Ci0KLQltZ2FnMjAw X3R0bV9wbGFjZW1lbnQoYm8sIFRUTV9QTF9GTEFHX1NZU1RFTSk7Ci0JZm9yIChpID0gMDsgaSA8 IGJvLT5wbGFjZW1lbnQubnVtX3BsYWNlbWVudCA7IGkrKykKLQkJYm8tPnBsYWNlbWVudHNbaV0u ZmxhZ3MgfD0gVFRNX1BMX0ZMQUdfTk9fRVZJQ1Q7Ci0KLQlyZXQgPSB0dG1fYm9fdmFsaWRhdGUo JmJvLT5ibywgJmJvLT5wbGFjZW1lbnQsICZjdHgpOwotCWlmIChyZXQpIHsKLQkJRFJNX0VSUk9S KCJwdXNoaW5nIHRvIFZSQU0gZmFpbGVkXG4iKTsKLQkJcmV0dXJuIHJldDsKLQl9Ci0JcmV0dXJu IDA7Ci19Ci0KIGludCBtZ2FnMjAwX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hKQogewogCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2ID0gZmlscC0+ cHJpdmF0ZV9kYXRhOwotLSAKMi4yMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWw=