From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Anholt Subject: [PATCH 4/4] drm/v3d: Use the new shmem helpers to reduce driver boilerplate. Date: Fri, 8 Mar 2019 08:17:16 -0800 Message-ID: <20190308161716.2466-5-eric@anholt.net> References: <20190308161716.2466-1-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from anholt.net (anholt.net [50.246.234.109]) by gabe.freedesktop.org (Postfix) with ESMTP id A87A66E3EC for ; Fri, 8 Mar 2019 16:17:25 +0000 (UTC) In-Reply-To: <20190308161716.2466-1-eric@anholt.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: david.emett@broadcom.com, thomas.spurden@broadcom.com, linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org RGVwZW5kcyBvbgpodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvMjkwNzU0 Lz9zZXJpZXM9NTc2NjkmcmV2PTEgLS0KUm9iIGFuZCBJIGhhdmUgYmVlbiB0YWxraW5nIGFib3V0 IGFkZGluZyBzb21lIG1vcmUgaGVscCBmb3IgdGhlCmRtYV9tYXBfc2coKSBjb2RlIGluIHYzZF9t bXUuYyAod2hpY2ggcGFuZnJvc3QgaGFzIGEgc2ltaWxhciB2ZXJzaW9uCm9mKSwgYnV0IHRoaXMg YWxyZWFkeSBzZWVtcyBsaWtlIGEgZ29vZCBjbGVhbnVwLgoKU2lnbmVkLW9mZi1ieTogRXJpYyBB bmhvbHQgPGVyaWNAYW5ob2x0Lm5ldD4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vdjNkL0tjb25maWcg ICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9iby5jICB8IDMwOCArKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kcnYuYyB8 ICAyNyArLS0KIGRyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2Rydi5oIHwgIDE2ICstCiBkcml2ZXJz L2dwdS9kcm0vdjNkL3YzZF9nZW0uYyB8ICAxMSArLQogZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rf aXJxLmMgfCAgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS92M2QvdjNkX21tdS5jIHwgIDM0ICsrKy0K IDcgZmlsZXMgY2hhbmdlZCwgMTM0IGluc2VydGlvbnMoKyksIDI3MSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdjNkL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0v djNkL0tjb25maWcKaW5kZXggMTU1MmJmNTUyYzk0Li43NWE3NGM0NWYxMDkgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS92M2QvS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL0tj b25maWcKQEAgLTUsNiArNSw3IEBAIGNvbmZpZyBEUk1fVjNECiAJZGVwZW5kcyBvbiBDT01NT05f Q0xLCiAJZGVwZW5kcyBvbiBNTVUKIAlzZWxlY3QgRFJNX1NDSEVECisJc2VsZWN0IERSTV9HRU1f U0hNRU1fSEVMUEVSCiAJaGVscAogCSAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSBoYXZlIGEg c3lzdGVtIHRoYXQgaGFzIGEgQnJvYWRjb20KIAkgIFYzRCAzLnggb3IgbmV3ZXIgR1BVLCBzdWNo IGFzIEJDTTcyNjguCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9iby5jIGIv ZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfYm8uYwppbmRleCBkZmYzOGJmMzZjNTAuLmI2MzFhZGUw OTg1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfYm8uYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vdjNkL3YzZF9iby5jCkBAIC0yNSwxNTggKzI1LDYgQEAKICNpbmNsdWRlICJ2 M2RfZHJ2LmgiCiAjaW5jbHVkZSAidWFwaS9kcm0vdjNkX2RybS5oIgogCi0vKiBQaW5zIHRoZSBz aG1lbSBwYWdlcywgZmlsbHMgaW4gdGhlIC5wYWdlcyBhbmQgLnNndCBmaWVsZHMgb2YgdGhlIEJP LCBhbmQgbWFwcwotICogaXQgZm9yIERNQS4KLSAqLwotc3RhdGljIGludAotdjNkX2JvX2dldF9w YWdlcyhzdHJ1Y3QgdjNkX2JvICpibykKLXsKLQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9 ICZiby0+YmFzZTsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5kZXY7Ci0JaW50IG5w YWdlcyA9IG9iai0+c2l6ZSA+PiBQQUdFX1NISUZUOwotCWludCByZXQgPSAwOwotCi0JbXV0ZXhf bG9jaygmYm8tPmxvY2spOwotCWlmIChiby0+cGFnZXNfcmVmY291bnQrKyAhPSAwKQotCQlnb3Rv IHVubG9jazsKLQotCWlmICghb2JqLT5pbXBvcnRfYXR0YWNoKSB7Ci0JCWJvLT5wYWdlcyA9IGRy bV9nZW1fZ2V0X3BhZ2VzKG9iaik7Ci0JCWlmIChJU19FUlIoYm8tPnBhZ2VzKSkgewotCQkJcmV0 ID0gUFRSX0VSUihiby0+cGFnZXMpOwotCQkJZ290byB1bmxvY2s7Ci0JCX0KLQotCQliby0+c2d0 ID0gZHJtX3ByaW1lX3BhZ2VzX3RvX3NnKGJvLT5wYWdlcywgbnBhZ2VzKTsKLQkJaWYgKElTX0VS Uihiby0+c2d0KSkgewotCQkJcmV0ID0gUFRSX0VSUihiby0+c2d0KTsKLQkJCWdvdG8gcHV0X3Bh Z2VzOwotCQl9Ci0KLQkJLyogTWFwIHRoZSBwYWdlcyBmb3IgdXNlIGJ5IHRoZSBHUFUuICovCi0J CWRtYV9tYXBfc2coZGV2LT5kZXYsIGJvLT5zZ3QtPnNnbCwKLQkJCSAgIGJvLT5zZ3QtPm5lbnRz LCBETUFfQklESVJFQ1RJT05BTCk7Ci0JfSBlbHNlIHsKLQkJYm8tPnBhZ2VzID0ga2NhbGxvYyhu cGFnZXMsIHNpemVvZigqYm8tPnBhZ2VzKSwgR0ZQX0tFUk5FTCk7Ci0JCWlmICghYm8tPnBhZ2Vz KQotCQkJZ290byBwdXRfcGFnZXM7Ci0KLQkJZHJtX3ByaW1lX3NnX3RvX3BhZ2VfYWRkcl9hcnJh eXMoYm8tPnNndCwgYm8tPnBhZ2VzLAotCQkJCQkJIE5VTEwsIG5wYWdlcyk7Ci0KLQkJLyogTm90 ZSB0aGF0IGRtYS1idWZzIGNvbWUgaW4gbWFwcGVkLiAqLwotCX0KLQotCW11dGV4X3VubG9jaygm Ym8tPmxvY2spOwotCi0JcmV0dXJuIDA7Ci0KLXB1dF9wYWdlczoKLQlkcm1fZ2VtX3B1dF9wYWdl cyhvYmosIGJvLT5wYWdlcywgdHJ1ZSwgdHJ1ZSk7Ci0JYm8tPnBhZ2VzID0gTlVMTDsKLXVubG9j azoKLQliby0+cGFnZXNfcmVmY291bnQtLTsKLQltdXRleF91bmxvY2soJmJvLT5sb2NrKTsKLQly ZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgdm9pZAotdjNkX2JvX3B1dF9wYWdlcyhzdHJ1Y3QgdjNk X2JvICpibykKLXsKLQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9ICZiby0+YmFzZTsKLQot CW11dGV4X2xvY2soJmJvLT5sb2NrKTsKLQlpZiAoLS1iby0+cGFnZXNfcmVmY291bnQgPT0gMCkg ewotCQlpZiAoIW9iai0+aW1wb3J0X2F0dGFjaCkgewotCQkJZG1hX3VubWFwX3NnKG9iai0+ZGV2 LT5kZXYsIGJvLT5zZ3QtPnNnbCwKLQkJCQkgICAgIGJvLT5zZ3QtPm5lbnRzLCBETUFfQklESVJF Q1RJT05BTCk7Ci0JCQlzZ19mcmVlX3RhYmxlKGJvLT5zZ3QpOwotCQkJa2ZyZWUoYm8tPnNndCk7 Ci0JCQlkcm1fZ2VtX3B1dF9wYWdlcyhvYmosIGJvLT5wYWdlcywgdHJ1ZSwgdHJ1ZSk7Ci0JCX0g ZWxzZSB7Ci0JCQlrZnJlZShiby0+cGFnZXMpOwotCQl9Ci0JfQotCW11dGV4X3VubG9jaygmYm8t PmxvY2spOwotfQotCi1zdGF0aWMgc3RydWN0IHYzZF9ibyAqdjNkX2JvX2NyZWF0ZV9zdHJ1Y3Qo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJCQkJICAgc2l6ZV90IHVuYWxpZ25lZF9zaXplKQot ewotCXN0cnVjdCB2M2RfZGV2ICp2M2QgPSB0b192M2RfZGV2KGRldik7Ci0Jc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmo7Ci0Jc3RydWN0IHYzZF9ibyAqYm87Ci0Jc2l6ZV90IHNpemUgPSByb3Vu ZHVwKHVuYWxpZ25lZF9zaXplLCBQQUdFX1NJWkUpOwotCWludCByZXQ7Ci0KLQlpZiAoc2l6ZSA9 PSAwKQotCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKLQotCWJvID0ga3phbGxvYyhzaXplb2Yo KmJvKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFibykKLQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7 Ci0Jb2JqID0gJmJvLT5iYXNlOwotCi0JSU5JVF9MSVNUX0hFQUQoJmJvLT51bnJlZl9oZWFkKTsK LQltdXRleF9pbml0KCZiby0+bG9jayk7Ci0KLQlyZXQgPSBkcm1fZ2VtX29iamVjdF9pbml0KGRl diwgb2JqLCBzaXplKTsKLQlpZiAocmV0KQotCQlnb3RvIGZyZWVfYm87Ci0KLQlzcGluX2xvY2so JnYzZC0+bW1fbG9jayk7Ci0JcmV0ID0gZHJtX21tX2luc2VydF9ub2RlX2dlbmVyaWMoJnYzZC0+ bW0sICZiby0+bm9kZSwKLQkJCQkJIG9iai0+c2l6ZSA+PiBQQUdFX1NISUZULAotCQkJCQkgR01Q X0dSQU5VTEFSSVRZID4+IFBBR0VfU0hJRlQsIDAsIDApOwotCXNwaW5fdW5sb2NrKCZ2M2QtPm1t X2xvY2spOwotCWlmIChyZXQpCi0JCWdvdG8gZnJlZV9vYmo7Ci0KLQlyZXR1cm4gYm87Ci0KLWZy ZWVfb2JqOgotCWRybV9nZW1fb2JqZWN0X3JlbGVhc2Uob2JqKTsKLWZyZWVfYm86Ci0Ja2ZyZWUo Ym8pOwotCXJldHVybiBFUlJfUFRSKHJldCk7Ci19Ci0KLXN0cnVjdCB2M2RfYm8gKnYzZF9ib19j cmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYs Ci0JCQkgICAgIHNpemVfdCB1bmFsaWduZWRfc2l6ZSkKLXsKLQlzdHJ1Y3QgdjNkX2RldiAqdjNk ID0gdG9fdjNkX2RldihkZXYpOwotCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOwotCXN0cnVj dCB2M2RfYm8gKmJvOwotCWludCByZXQ7Ci0KLQlibyA9IHYzZF9ib19jcmVhdGVfc3RydWN0KGRl diwgdW5hbGlnbmVkX3NpemUpOwotCWlmIChJU19FUlIoYm8pKQotCQlyZXR1cm4gYm87Ci0Jb2Jq ID0gJmJvLT5iYXNlOwotCi0JcmV0ID0gdjNkX2JvX2dldF9wYWdlcyhibyk7Ci0JaWYgKHJldCkK LQkJZ290byBmcmVlX21tOwotCi0JdjNkX21tdV9pbnNlcnRfcHRlcyhibyk7Ci0KLQltdXRleF9s b2NrKCZ2M2QtPmJvX2xvY2spOwotCXYzZC0+Ym9fc3RhdHMubnVtX2FsbG9jYXRlZCsrOwotCXYz ZC0+Ym9fc3RhdHMucGFnZXNfYWxsb2NhdGVkICs9IG9iai0+c2l6ZSA+PiBQQUdFX1NISUZUOwot CW11dGV4X3VubG9jaygmdjNkLT5ib19sb2NrKTsKLQotCXJldHVybiBibzsKLQotZnJlZV9tbToK LQlzcGluX2xvY2soJnYzZC0+bW1fbG9jayk7Ci0JZHJtX21tX3JlbW92ZV9ub2RlKCZiby0+bm9k ZSk7Ci0Jc3Bpbl91bmxvY2soJnYzZC0+bW1fbG9jayk7Ci0KLQlkcm1fZ2VtX29iamVjdF9yZWxl YXNlKG9iaik7Ci0Ja2ZyZWUoYm8pOwotCXJldHVybiBFUlJfUFRSKHJldCk7Ci19Ci0KIC8qIENh bGxlZCBEUk0gY29yZSBvbiB0aGUgbGFzdCB1c2Vyc3BhY2Uva2VybmVsIHVucmVmZXJlbmNlIG9m IHRoZQogICogQk8uCiAgKi8KQEAgLTE4NSw4MyArMzMsMTEzIEBAIHZvaWQgdjNkX2ZyZWVfb2Jq ZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQogCXN0cnVjdCB2M2RfZGV2ICp2M2QgPSB0 b192M2RfZGV2KG9iai0+ZGV2KTsKIAlzdHJ1Y3QgdjNkX2JvICpibyA9IHRvX3YzZF9ibyhvYmop OwogCisJdjNkX21tdV9yZW1vdmVfcHRlcyhibyk7CisKIAltdXRleF9sb2NrKCZ2M2QtPmJvX2xv Y2spOwogCXYzZC0+Ym9fc3RhdHMubnVtX2FsbG9jYXRlZC0tOwogCXYzZC0+Ym9fc3RhdHMucGFn ZXNfYWxsb2NhdGVkIC09IG9iai0+c2l6ZSA+PiBQQUdFX1NISUZUOwogCW11dGV4X3VubG9jaygm djNkLT5ib19sb2NrKTsKIAotCXYzZF9ib19wdXRfcGFnZXMoYm8pOwotCi0JaWYgKG9iai0+aW1w b3J0X2F0dGFjaCkKLQkJZHJtX3ByaW1lX2dlbV9kZXN0cm95KG9iaiwgYm8tPnNndCk7Ci0KLQl2 M2RfbW11X3JlbW92ZV9wdGVzKGJvKTsKIAlzcGluX2xvY2soJnYzZC0+bW1fbG9jayk7CiAJZHJt X21tX3JlbW92ZV9ub2RlKCZiby0+bm9kZSk7CiAJc3Bpbl91bmxvY2soJnYzZC0+bW1fbG9jayk7 CiAKLQltdXRleF9kZXN0cm95KCZiby0+bG9jayk7CisJZHJtX2dlbV9zaG1lbV9wdXRfcGFnZXMo JmJvLT5iYXNlKTsKIAotCWRybV9nZW1fb2JqZWN0X3JlbGVhc2Uob2JqKTsKLQlrZnJlZShibyk7 CisJZHJtX2dlbV9zaG1lbV9mcmVlX29iamVjdChvYmopOwogfQogCi1zdGF0aWMgdm9pZAotdjNk X3NldF9tbWFwX3ZtYV9mbGFncyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3RfZnVuY3MgdjNkX2dlbV9mdW5jcyA9IHsKKwkuZnJl ZSA9IHYzZF9mcmVlX29iamVjdCwKKwkucHJpbnRfaW5mbyA9IGRybV9nZW1fc2htZW1fcHJpbnRf aW5mbywKKwkucGluID0gZHJtX2dlbV9zaG1lbV9waW4sCisJLnVucGluID0gZHJtX2dlbV9zaG1l bV91bnBpbiwKKwkuZ2V0X3NnX3RhYmxlID0gZHJtX2dlbV9zaG1lbV9nZXRfc2dfdGFibGUsCisJ LnZtYXAgPSBkcm1fZ2VtX3NobWVtX3ZtYXAsCisJLnZ1bm1hcCA9IGRybV9nZW1fc2htZW1fdnVu bWFwLAorCS52bV9vcHMgPSAmZHJtX2dlbV9zaG1lbV92bV9vcHMsCit9OworCisvKiBnZW1fY3Jl YXRlX29iamVjdCBmdW5jdGlvbiBmb3IgYWxsb2NhdGluZyBhIEJPIHN0cnVjdCBhbmQgZG9pbmcK KyAqIGVhcmx5IHNldHVwLgorICovCitzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKnYzZF9jcmVhdGVf b2JqZWN0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplKQogewotCXZtYS0+dm1f ZmxhZ3MgJj0gflZNX1BGTk1BUDsKLQl2bWEtPnZtX2ZsYWdzIHw9IFZNX01JWEVETUFQOwotCXZt YS0+dm1fcGFnZV9wcm90ID0gcGdwcm90X3dyaXRlY29tYmluZSh2bV9nZXRfcGFnZV9wcm90KHZt YS0+dm1fZmxhZ3MpKTsKLX0KKwlzdHJ1Y3QgdjNkX2JvICpibzsKKwlzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKm9iajsKIAotdm1fZmF1bHRfdCB2M2RfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAq dm1mKQotewotCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0gdm1mLT52bWE7Ci0Jc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmogPSB2bWEtPnZtX3ByaXZhdGVfZGF0YTsKLQlzdHJ1Y3QgdjNk X2JvICpibyA9IHRvX3YzZF9ibyhvYmopOwotCXBmbl90IHBmbjsKLQlwZ29mZl90IHBnb2ZmOwor CWlmIChzaXplID09IDApCisJCXJldHVybiBOVUxMOworCisJYm8gPSBremFsbG9jKHNpemVvZigq Ym8pLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWJvKQorCQlyZXR1cm4gTlVMTDsKKwlvYmogPSAmYm8t PmJhc2UuYmFzZTsKIAotCS8qIFdlIGRvbid0IHVzZSB2bWYtPnBnb2ZmIHNpbmNlIHRoYXQgaGFz IHRoZSBmYWtlIG9mZnNldDogKi8KLQlwZ29mZiA9ICh2bWYtPmFkZHJlc3MgLSB2bWEtPnZtX3N0 YXJ0KSA+PiBQQUdFX1NISUZUOwotCXBmbiA9IF9fcGZuX3RvX3Bmbl90KHBhZ2VfdG9fcGZuKGJv LT5wYWdlc1twZ29mZl0pLCBQRk5fREVWKTsKKwlvYmotPmZ1bmNzID0gJnYzZF9nZW1fZnVuY3M7 CiAKLQlyZXR1cm4gdm1mX2luc2VydF9taXhlZCh2bWEsIHZtZi0+YWRkcmVzcywgcGZuKTsKKwlJ TklUX0xJU1RfSEVBRCgmYm8tPnVucmVmX2hlYWQpOworCisJcmV0dXJuICZiby0+YmFzZS5iYXNl OwogfQogCi1pbnQgdjNkX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0 cnVjdCAqdm1hKQorc3RhdGljIGludAordjNkX2JvX2NyZWF0ZV9maW5pc2goc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmopCiB7CisJc3RydWN0IHYzZF9kZXYgKnYzZCA9IHRvX3YzZF9kZXYob2Jq LT5kZXYpOworCXN0cnVjdCB2M2RfYm8gKmJvID0gdG9fdjNkX2JvKG9iaik7CiAJaW50IHJldDsK IAotCXJldCA9IGRybV9nZW1fbW1hcChmaWxwLCB2bWEpOworCXJldCA9IGRybV9nZW1fc2htZW1f Z2V0X3BhZ2VzKCZiby0+YmFzZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXYzZF9z ZXRfbW1hcF92bWFfZmxhZ3Modm1hKTsKKwlzcGluX2xvY2soJnYzZC0+bW1fbG9jayk7CisJLyog QWxsb2NhdGUgdGhlIG9iamVjdCdzIHNwYWNlIGluIHRoZSBHUFUncyBwYWdlIHRhYmxlcy4KKwkg KiBJbnNlcnRpbmcgUFRFcyB3aWxsIGhhcHBlbiBsYXRlciwgYnV0IHRoZSBvZmZzZXQgaXMgZm9y IHRoZQorCSAqIGxpZmV0aW1lIG9mIHRoZSBCTy4KKwkgKi8KKwlyZXQgPSBkcm1fbW1faW5zZXJ0 X25vZGVfZ2VuZXJpYygmdjNkLT5tbSwgJmJvLT5ub2RlLAorCQkJCQkgb2JqLT5zaXplID4+IFBB R0VfU0hJRlQsCisJCQkJCSBHTVBfR1JBTlVMQVJJVFkgPj4gUEFHRV9TSElGVCwgMCwgMCk7CisJ c3Bpbl91bmxvY2soJnYzZC0+bW1fbG9jayk7CisJaWYgKHJldCkgeworCQlkcm1fZ2VtX3NobWVt X3B1dF9wYWdlcygmYm8tPmJhc2UpOworCQlyZXR1cm4gcmV0OworCX0KIAotCXJldHVybiByZXQ7 CisJLyogVHJhY2sgc3RhdHMgZm9yIC9kZWJ1Zy9kcmkvbi9ib19zdGF0cy4gKi8KKwltdXRleF9s b2NrKCZ2M2QtPmJvX2xvY2spOworCXYzZC0+Ym9fc3RhdHMubnVtX2FsbG9jYXRlZCsrOworCXYz ZC0+Ym9fc3RhdHMucGFnZXNfYWxsb2NhdGVkICs9IG9iai0+c2l6ZSA+PiBQQUdFX1NISUZUOwor CW11dGV4X3VubG9jaygmdjNkLT5ib19sb2NrKTsKKworCXYzZF9tbXVfaW5zZXJ0X3B0ZXMoYm8p OworCisJcmV0dXJuIDA7CiB9CiAKLWludCB2M2RfcHJpbWVfbW1hcChzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKm9iaiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCitzdHJ1Y3QgdjNkX2JvICp2 M2RfYm9fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmls ZV9wcml2LAorCQkJICAgICBzaXplX3QgdW5hbGlnbmVkX3NpemUpCiB7CisJc3RydWN0IGRybV9n ZW1fc2htZW1fb2JqZWN0ICpzaG1lbV9vYmo7CisJc3RydWN0IHYzZF9ibyAqYm87CiAJaW50IHJl dDsKIAotCXJldCA9IGRybV9nZW1fbW1hcF9vYmoob2JqLCBvYmotPnNpemUsIHZtYSk7Ci0JaWYg KHJldCA8IDApCi0JCXJldHVybiByZXQ7Ci0KLQl2M2Rfc2V0X21tYXBfdm1hX2ZsYWdzKHZtYSk7 CisJc2htZW1fb2JqID0gZHJtX2dlbV9zaG1lbV9jcmVhdGUoZGV2LCB1bmFsaWduZWRfc2l6ZSk7 CisJaWYgKCFzaG1lbV9vYmopCisJCXJldHVybiBOVUxMOworCWJvID0gdG9fdjNkX2JvKCZzaG1l bV9vYmotPmJhc2UpOwogCi0JcmV0dXJuIDA7Ci19CisJcmV0ID0gdjNkX2JvX2NyZWF0ZV9maW5p c2goJnNobWVtX29iai0+YmFzZSk7CisJaWYgKHJldCkKKwkJZ290byBmcmVlX29iajsKIAotc3Ry dWN0IHNnX3RhYmxlICoKLXYzZF9wcmltZV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmopCi17Ci0Jc3RydWN0IHYzZF9ibyAqYm8gPSB0b192M2RfYm8ob2JqKTsKLQlpbnQg bnBhZ2VzID0gb2JqLT5zaXplID4+IFBBR0VfU0hJRlQ7CisJcmV0dXJuIGJvOwogCi0JcmV0dXJu IGRybV9wcmltZV9wYWdlc190b19zZyhiby0+cGFnZXMsIG5wYWdlcyk7CitmcmVlX29iajoKKwlk cm1fZ2VtX3NobWVtX2ZyZWVfb2JqZWN0KCZzaG1lbV9vYmotPmJhc2UpOworCXJldHVybiBFUlJf UFRSKHJldCk7CiB9CiAKIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqCkBAIC0yNjksMjcgKzE0Nywx OCBAQCB2M2RfcHJpbWVfaW1wb3J0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ CQkgIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCwKIAkJCSAgc3RydWN0IHNnX3Rh YmxlICpzZ3QpCiB7Ci0Jc3RydWN0IHYzZF9kZXYgKnYzZCA9IHRvX3YzZF9kZXYoZGV2KTsKIAlz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKLQlzdHJ1Y3QgdjNkX2JvICpibzsKLQotCWJvID0g djNkX2JvX2NyZWF0ZV9zdHJ1Y3QoZGV2LCBhdHRhY2gtPmRtYWJ1Zi0+c2l6ZSk7Ci0JaWYgKElT X0VSUihibykpCi0JCXJldHVybiBFUlJfQ0FTVChibyk7Ci0Jb2JqID0gJmJvLT5iYXNlOwotCi0J b2JqLT5yZXN2ID0gYXR0YWNoLT5kbWFidWYtPnJlc3Y7Ci0KLQliby0+c2d0ID0gc2d0OwotCW9i ai0+aW1wb3J0X2F0dGFjaCA9IGF0dGFjaDsKLQl2M2RfYm9fZ2V0X3BhZ2VzKGJvKTsKKwlpbnQg cmV0OwogCi0JbXV0ZXhfbG9jaygmdjNkLT5ib19sb2NrKTsKLQl2M2QtPmJvX3N0YXRzLm51bV9h bGxvY2F0ZWQrKzsKLQl2M2QtPmJvX3N0YXRzLnBhZ2VzX2FsbG9jYXRlZCArPSBvYmotPnNpemUg Pj4gUEFHRV9TSElGVDsKLQltdXRleF91bmxvY2soJnYzZC0+Ym9fbG9jayk7CisJb2JqID0gZHJt X2dlbV9zaG1lbV9wcmltZV9pbXBvcnRfc2dfdGFibGUoZGV2LCBhdHRhY2gsIHNndCk7CisJaWYg KElTX0VSUihvYmopKQorCQlyZXR1cm4gb2JqOwogCi0JdjNkX21tdV9pbnNlcnRfcHRlcyhibyk7 CisJcmV0ID0gdjNkX2JvX2NyZWF0ZV9maW5pc2gob2JqKTsKKwlpZiAocmV0KSB7CisJCWRybV9n ZW1fc2htZW1fZnJlZV9vYmplY3Qob2JqKTsKKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKKwl9CiAK IAlyZXR1cm4gb2JqOwogfQpAQCAtMzEyLDggKzE4MSw4IEBAIGludCB2M2RfY3JlYXRlX2JvX2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAKIAlhcmdzLT5vZmZzZXQg PSBiby0+bm9kZS5zdGFydCA8PCBQQUdFX1NISUZUOwogCi0JcmV0ID0gZHJtX2dlbV9oYW5kbGVf Y3JlYXRlKGZpbGVfcHJpdiwgJmJvLT5iYXNlLCAmYXJncy0+aGFuZGxlKTsKLQlkcm1fZ2VtX29i amVjdF9wdXRfdW5sb2NrZWQoJmJvLT5iYXNlKTsKKwlyZXQgPSBkcm1fZ2VtX2hhbmRsZV9jcmVh dGUoZmlsZV9wcml2LCAmYm8tPmJhc2UuYmFzZSwgJmFyZ3MtPmhhbmRsZSk7CisJZHJtX2dlbV9v YmplY3RfcHV0X3VubG9ja2VkKCZiby0+YmFzZS5iYXNlKTsKIAogCXJldHVybiByZXQ7CiB9CkBA IC0zMjMsNyArMTkyLDYgQEAgaW50IHYzZF9tbWFwX2JvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCiB7CiAJc3RydWN0IGRybV92M2RfbW1hcF9ibyAqYXJncyA9IGRh dGE7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqOwotCWludCByZXQ7CiAKIAlpZiAo YXJncy0+ZmxhZ3MgIT0gMCkgewogCQlEUk1fSU5GTygidW5rbm93biBtbWFwX2JvIGZsYWdzOiAl ZFxuIiwgYXJncy0+ZmxhZ3MpOwpAQCAtMzM2LDEyICsyMDQsMTAgQEAgaW50IHYzZF9tbWFwX2Jv X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCXJldHVybiAtRU5P RU5UOwogCX0KIAotCXJldCA9IGRybV9nZW1fY3JlYXRlX21tYXBfb2Zmc2V0KGdlbV9vYmopOwot CWlmIChyZXQgPT0gMCkKLQkJYXJncy0+b2Zmc2V0ID0gZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRy KCZnZW1fb2JqLT52bWFfbm9kZSk7CisJYXJncy0+b2Zmc2V0ID0gZHJtX3ZtYV9ub2RlX29mZnNl dF9hZGRyKCZnZW1fb2JqLT52bWFfbm9kZSk7CiAJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2Vk KGdlbV9vYmopOwogCi0JcmV0dXJuIHJldDsKKwlyZXR1cm4gMDsKIH0KIAogaW50IHYzZF9nZXRf Ym9fb2Zmc2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS92 M2QvdjNkX2Rydi5jCmluZGV4IDM2ODBlYmQyMjlmMi4uNTM3ZWUyYjQ0ZTQyIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdjNk L3YzZF9kcnYuYwpAQCAtMTYwLDE3ICsxNjAsNyBAQCB2M2RfcG9zdGNsb3NlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIAlrZnJlZSh2M2RfcHJpdik7CiB9 CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHYzZF9kcm1fZm9wcyA9IHsK LQkub3duZXIgPSBUSElTX01PRFVMRSwKLQkub3BlbiA9IGRybV9vcGVuLAotCS5yZWxlYXNlID0g ZHJtX3JlbGVhc2UsCi0JLnVubG9ja2VkX2lvY3RsID0gZHJtX2lvY3RsLAotCS5tbWFwID0gdjNk X21tYXAsCi0JLnBvbGwgPSBkcm1fcG9sbCwKLQkucmVhZCA9IGRybV9yZWFkLAotCS5jb21wYXRf aW9jdGwgPSBkcm1fY29tcGF0X2lvY3RsLAotCS5sbHNlZWsgPSBub29wX2xsc2VlaywKLX07CitE RUZJTkVfRFJNX0dFTV9TSE1FTV9GT1BTKHYzZF9kcm1fZm9wcyk7CiAKIC8qIERSTV9BVVRIIGlz IHJlcXVpcmVkIG9uIFNVQk1JVF9DTCBmb3Igbm93LCB3aGlsZSB3ZSBkb24ndCBoYXZlIEdNUAog ICogcHJvdGVjdGlvbiBiZXR3ZWVuIGNsaWVudHMuICBOb3RlIHRoYXQgcmVuZGVyIG5vZGVzIHdv dWxkIGJlIGJlCkBAIC0xODgsMTIgKzE3OCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2lv Y3RsX2Rlc2MgdjNkX2RybV9pb2N0bHNbXSA9IHsKIAlEUk1fSU9DVExfREVGX0RSVihWM0RfU1VC TUlUX1RGVSwgdjNkX3N1Ym1pdF90ZnVfaW9jdGwsIERSTV9SRU5ERVJfQUxMT1cgfCBEUk1fQVVU SCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IHYzZF92 bV9vcHMgPSB7Ci0JLmZhdWx0ID0gdjNkX2dlbV9mYXVsdCwKLQkub3BlbiA9IGRybV9nZW1fdm1f b3BlbiwKLQkuY2xvc2UgPSBkcm1fZ2VtX3ZtX2Nsb3NlLAotfTsKLQogc3RhdGljIHN0cnVjdCBk cm1fZHJpdmVyIHYzZF9kcm1fZHJpdmVyID0gewogCS5kcml2ZXJfZmVhdHVyZXMgPSAoRFJJVkVS X0dFTSB8CiAJCQkgICAgRFJJVkVSX1JFTkRFUiB8CkBAIC0yMDcsMTYgKzE5MSwxMSBAQCBzdGF0 aWMgc3RydWN0IGRybV9kcml2ZXIgdjNkX2RybV9kcml2ZXIgPSB7CiAJLmRlYnVnZnNfaW5pdCA9 IHYzZF9kZWJ1Z2ZzX2luaXQsCiAjZW5kaWYKIAotCS5nZW1fZnJlZV9vYmplY3RfdW5sb2NrZWQg PSB2M2RfZnJlZV9vYmplY3QsCi0JLmdlbV92bV9vcHMgPSAmdjNkX3ZtX29wcywKLQorCS5nZW1f Y3JlYXRlX29iamVjdCA9IHYzZF9jcmVhdGVfb2JqZWN0LAogCS5wcmltZV9oYW5kbGVfdG9fZmQg PSBkcm1fZ2VtX3ByaW1lX2hhbmRsZV90b19mZCwKIAkucHJpbWVfZmRfdG9faGFuZGxlID0gZHJt X2dlbV9wcmltZV9mZF90b19oYW5kbGUsCi0JLmdlbV9wcmltZV9pbXBvcnQgPSBkcm1fZ2VtX3By aW1lX2ltcG9ydCwKLQkuZ2VtX3ByaW1lX2V4cG9ydCA9IGRybV9nZW1fcHJpbWVfZXhwb3J0LAot CS5nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlCT0gdjNkX3ByaW1lX2dldF9zZ190YWJsZSwKIAkuZ2Vt X3ByaW1lX2ltcG9ydF9zZ190YWJsZSA9IHYzZF9wcmltZV9pbXBvcnRfc2dfdGFibGUsCi0JLmdl bV9wcmltZV9tbWFwID0gdjNkX3ByaW1lX21tYXAsCisJLmdlbV9wcmltZV9tbWFwID0gZHJtX2dl bV9wcmltZV9tbWFwLAogCiAJLmlvY3RscyA9IHYzZF9kcm1faW9jdGxzLAogCS5udW1faW9jdGxz ID0gQVJSQVlfU0laRSh2M2RfZHJtX2lvY3RscyksCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdjNkL3YzZF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2Rydi5oCmluZGV4IGY1 ZWQ5MTVhMGYxNS4uMWQzNDE5ZTM2N2E4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdjNk L3YzZF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kcnYuaApAQCAtNSw2ICs1 LDcgQEAKICNpbmNsdWRlIDxkcm0vZHJtUC5oPgogI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlci5o PgogI2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9nZW1fc2htZW1f aGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2dwdV9zY2hlZHVsZXIuaD4KICNpbmNsdWRlICJ1YXBp L2RybS92M2RfZHJtLmgiCiAKQEAgLTEwOSwxNiArMTEwLDEwIEBAIHN0cnVjdCB2M2RfZmlsZV9w cml2IHsKIH07CiAKIHN0cnVjdCB2M2RfYm8gewotCXN0cnVjdCBkcm1fZ2VtX29iamVjdCBiYXNl OwotCi0Jc3RydWN0IG11dGV4IGxvY2s7CisJc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0IGJh c2U7CiAKIAlzdHJ1Y3QgZHJtX21tX25vZGUgbm9kZTsKIAotCXUzMiBwYWdlc19yZWZjb3VudDsK LQlzdHJ1Y3QgcGFnZSAqKnBhZ2VzOwotCXN0cnVjdCBzZ190YWJsZSAqc2d0OwotCiAJLyogTGlz dCBlbnRyeSBmb3IgdGhlIEJPJ3MgcG9zaXRpb24gaW4KIAkgKiB2M2RfZXhlY19pbmZvLT51bnJl Zl9saXN0CiAJICovCkBAIC0yNTYsNiArMjUxLDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBs b25nIG5zZWNzX3RvX2ppZmZpZXNfdGltZW91dChjb25zdCB1NjQgbikKIH0KIAogLyogdjNkX2Jv LmMgKi8KK3N0cnVjdCBkcm1fZ2VtX29iamVjdCAqdjNkX2NyZWF0ZV9vYmplY3Qoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgc2l6ZV90IHNpemUpOwogdm9pZCB2M2RfZnJlZV9vYmplY3Qoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKTsKIHN0cnVjdCB2M2RfYm8gKnYzZF9ib19jcmVhdGUo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCiAJCQkg ICAgIHNpemVfdCBzaXplKTsKQEAgLTI2NSwxMCArMjYxLDYgQEAgaW50IHYzZF9tbWFwX2JvX2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCSAgICAgIHN0cnVjdCBk cm1fZmlsZSAqZmlsZV9wcml2KTsKIGludCB2M2RfZ2V0X2JvX29mZnNldF9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmls ZV9wcml2KTsKLXZtX2ZhdWx0X3QgdjNkX2dlbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZik7 Ci1pbnQgdjNkX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq dm1hKTsKLWludCB2M2RfcHJpbWVfbW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwotc3RydWN0IHNnX3RhYmxlICp2M2RfcHJpbWVfZ2V0 X3NnX3RhYmxlKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKIHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqdjNkX3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog CQkJCQkJIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCwKIAkJCQkJCSBzdHJ1Y3Qg c2dfdGFibGUgKnNndCk7CkBAIC0zMDQsNyArMjk2LDcgQEAgdm9pZCB2M2RfaXJxX3Jlc2V0KHN0 cnVjdCB2M2RfZGV2ICp2M2QpOwogaW50IHYzZF9tbXVfZ2V0X29mZnNldChzdHJ1Y3QgZHJtX2Zp bGUgKmZpbGVfcHJpdiwgc3RydWN0IHYzZF9ibyAqYm8sCiAJCSAgICAgICB1MzIgKm9mZnNldCk7 CiBpbnQgdjNkX21tdV9zZXRfcGFnZV90YWJsZShzdHJ1Y3QgdjNkX2RldiAqdjNkKTsKLXZvaWQg djNkX21tdV9pbnNlcnRfcHRlcyhzdHJ1Y3QgdjNkX2JvICpibyk7CitpbnQgdjNkX21tdV9pbnNl cnRfcHRlcyhzdHJ1Y3QgdjNkX2JvICpibyk7CiB2b2lkIHYzZF9tbXVfcmVtb3ZlX3B0ZXMoc3Ry dWN0IHYzZF9ibyAqYm8pOwogCiAvKiB2M2Rfc2NoZWQuYyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3YzZC92M2RfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9nZW0uYwpp bmRleCBhNDMzOGQ1NmZmOWUuLmU2MWFmYjA5MjE0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3YzZC92M2RfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZ2VtLmMKQEAg LTE5MCw3ICsxOTAsNyBAQCB2M2RfYXR0YWNoX29iamVjdF9mZW5jZXMoc3RydWN0IHYzZF9ibyAq KmJvcywgaW50IGJvX2NvdW50LAogCiAJZm9yIChpID0gMDsgaSA8IGJvX2NvdW50OyBpKyspIHsK IAkJLyogWFhYOiBVc2Ugc2hhcmVkIGZlbmNlcyBmb3IgcmVhZC1vbmx5IG9iamVjdHMuICovCi0J CXJlc2VydmF0aW9uX29iamVjdF9hZGRfZXhjbF9mZW5jZShib3NbaV0tPmJhc2UucmVzdiwgZmVu Y2UpOworCQlyZXNlcnZhdGlvbl9vYmplY3RfYWRkX2V4Y2xfZmVuY2UoYm9zW2ldLT5iYXNlLmJh c2UucmVzdiwgZmVuY2UpOwogCX0KIH0KIApAQCAtMjI2LDcgKzIyNiw4IEBAIHYzZF9sb2NrX2Jv X3Jlc2VydmF0aW9ucyhzdHJ1Y3QgdjNkX2JvICoqYm9zLAogCSAqIGJlZm9yZSB3ZSBjb21taXQg dGhlIENMIHRvIHRoZSBoYXJkd2FyZS4KIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgYm9fY291bnQ7 IGkrKykgewotCQlyZXQgPSByZXNlcnZhdGlvbl9vYmplY3RfcmVzZXJ2ZV9zaGFyZWQoYm9zW2ld LT5iYXNlLnJlc3YsIDEpOworCQlyZXQgPSByZXNlcnZhdGlvbl9vYmplY3RfcmVzZXJ2ZV9zaGFy ZWQoYm9zW2ldLT5iYXNlLmJhc2UucmVzdiwKKwkJCQkJCQkxKTsKIAkJaWYgKHJldCkgewogCQkJ djNkX3VubG9ja19ib19yZXNlcnZhdGlvbnMoYm9zLCBib19jb3VudCwKIAkJCQkJCSAgIGFjcXVp cmVfY3R4KTsKQEAgLTMzNCwxMSArMzM1LDExIEBAIHYzZF9leGVjX2NsZWFudXAoc3RydWN0IGty ZWYgKnJlZikKIAlkbWFfZmVuY2VfcHV0KGV4ZWMtPnJlbmRlcl9kb25lX2ZlbmNlKTsKIAogCWZv ciAoaSA9IDA7IGkgPCBleGVjLT5ib19jb3VudDsgaSsrKQotCQlkcm1fZ2VtX29iamVjdF9wdXRf dW5sb2NrZWQoJmV4ZWMtPmJvW2ldLT5iYXNlKTsKKwkJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9j a2VkKCZleGVjLT5ib1tpXS0+YmFzZS5iYXNlKTsKIAlrdmZyZWUoZXhlYy0+Ym8pOwogCiAJbGlz dF9mb3JfZWFjaF9lbnRyeV9zYWZlKGJvLCBzYXZlLCAmZXhlYy0+dW5yZWZfbGlzdCwgdW5yZWZf aGVhZCkgewotCQlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQoJmJvLT5iYXNlKTsKKwkJZHJt X2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKCZiby0+YmFzZS5iYXNlKTsKIAl9CiAKIAlwbV9ydW50 aW1lX21hcmtfbGFzdF9idXN5KHYzZC0+ZGV2KTsKQEAgLTM2NSw3ICszNjYsNyBAQCB2M2RfdGZ1 X2pvYl9jbGVhbnVwKHN0cnVjdCBrcmVmICpyZWYpCiAKIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRShqb2ItPmJvKTsgaSsrKSB7CiAJCWlmIChqb2ItPmJvW2ldKQotCQkJZHJtX2dlbV9vYmpl Y3RfcHV0X3VubG9ja2VkKCZqb2ItPmJvW2ldLT5iYXNlKTsKKwkJCWRybV9nZW1fb2JqZWN0X3B1 dF91bmxvY2tlZCgmam9iLT5ib1tpXS0+YmFzZS5iYXNlKTsKIAl9CiAKIAlwbV9ydW50aW1lX21h cmtfbGFzdF9idXN5KHYzZC0+ZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92M2Qv djNkX2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfaXJxLmMKaW5kZXggNjkzMzhkYTcw ZGRjLi5hNTlmODcyNzViZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2ly cS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2lycS5jCkBAIC0zNCwxMiArMzQsMTQg QEAgdjNkX292ZXJmbG93X21lbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJY29u dGFpbmVyX29mKHdvcmssIHN0cnVjdCB2M2RfZGV2LCBvdmVyZmxvd19tZW1fd29yayk7CiAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9ICZ2M2QtPmRybTsKIAlzdHJ1Y3QgdjNkX2JvICpibyA9IHYz ZF9ib19jcmVhdGUoZGV2LCBOVUxMIC8qIFhYWDogR01QICovLCAyNTYgKiAxMDI0KTsKKwlzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwogCiAJaWYg KElTX0VSUihibykpIHsKIAkJRFJNX0VSUk9SKCJDb3VsZG4ndCBhbGxvY2F0ZSBiaW5uZXIgb3Zl cmZsb3cgbWVtXG4iKTsKIAkJcmV0dXJuOwogCX0KKwlvYmogPSAmYm8tPmJhc2UuYmFzZTsKIAog CS8qIFdlIGxvc3QgYSByYWNlLCBhbmQgb3VyIHdvcmsgdGFzayBjYW1lIGluIGFmdGVyIHRoZSBi aW4gam9iCiAJICogY29tcGxldGVkIGFuZCBleGl0ZWQuICBUaGlzIGNhbiBoYXBwZW4gYmVjYXVz ZSB0aGUgSFcKQEAgLTU2LDE1ICs1OCwxNSBAQCB2M2Rfb3ZlcmZsb3dfbWVtX3dvcmsoc3RydWN0 IHdvcmtfc3RydWN0ICp3b3JrKQogCQlnb3RvIG91dDsKIAl9CiAKLQlkcm1fZ2VtX29iamVjdF9n ZXQoJmJvLT5iYXNlKTsKKwlkcm1fZ2VtX29iamVjdF9nZXQob2JqKTsKIAlsaXN0X2FkZF90YWls KCZiby0+dW5yZWZfaGVhZCwgJnYzZC0+YmluX2pvYi0+dW5yZWZfbGlzdCk7CiAJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmdjNkLT5qb2JfbG9jaywgaXJxZmxhZ3MpOwogCiAJVjNEX0NPUkVfV1JJ VEUoMCwgVjNEX1BUQl9CUE9BLCBiby0+bm9kZS5zdGFydCA8PCBQQUdFX1NISUZUKTsKLQlWM0Rf Q09SRV9XUklURSgwLCBWM0RfUFRCX0JQT1MsIGJvLT5iYXNlLnNpemUpOworCVYzRF9DT1JFX1dS SVRFKDAsIFYzRF9QVEJfQlBPUywgb2JqLT5zaXplKTsKIAogb3V0OgotCWRybV9nZW1fb2JqZWN0 X3B1dF91bmxvY2tlZCgmYm8tPmJhc2UpOworCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChv YmopOwogfQogCiBzdGF0aWMgaXJxcmV0dXJuX3QKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS92M2QvdjNkX21tdS5jIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfbW11LmMKaW5kZXggYjAw Zjk3YzMxYjcwLi5hYTM1MTg5OWFmZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92M2Qv djNkX21tdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX21tdS5jCkBAIC04MSwxNSAr ODEsMjcgQEAgaW50IHYzZF9tbXVfc2V0X3BhZ2VfdGFibGUoc3RydWN0IHYzZF9kZXYgKnYzZCkK IAlyZXR1cm4gdjNkX21tdV9mbHVzaF9hbGwodjNkKTsKIH0KIAotdm9pZCB2M2RfbW11X2luc2Vy dF9wdGVzKHN0cnVjdCB2M2RfYm8gKmJvKQoraW50IHYzZF9tbXVfaW5zZXJ0X3B0ZXMoc3RydWN0 IHYzZF9ibyAqYm8pCiB7Ci0Jc3RydWN0IHYzZF9kZXYgKnYzZCA9IHRvX3YzZF9kZXYoYm8tPmJh c2UuZGV2KTsKKwlzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtX29iaiA9ICZiby0+ YmFzZTsKKwlzdHJ1Y3QgdjNkX2RldiAqdjNkID0gdG9fdjNkX2RldihzaG1lbV9vYmotPmJhc2Uu ZGV2KTsKIAl1MzIgcGFnZSA9IGJvLT5ub2RlLnN0YXJ0OwogCXUzMiBwYWdlX3Byb3QgPSBWM0Rf UFRFX1dSSVRFQUJMRSB8IFYzRF9QVEVfVkFMSUQ7CiAJdW5zaWduZWQgaW50IGNvdW50OwogCXN0 cnVjdCBzY2F0dGVybGlzdCAqc2dsOwogCi0JZm9yX2VhY2hfc2coYm8tPnNndC0+c2dsLCBzZ2ws IGJvLT5zZ3QtPm5lbnRzLCBjb3VudCkgeworCWlmICghc2htZW1fb2JqLT5iYXNlLmltcG9ydF9h dHRhY2gpIHsKKwkJV0FSTl9PTl9PTkNFKHNobWVtX29iai0+c2d0KTsKKwkJc2htZW1fb2JqLT5z Z3QgPSBkcm1fcHJpbWVfcGFnZXNfdG9fc2coc2htZW1fb2JqLT5wYWdlcywKKwkJCQkJCSAgICAg ICBzaG1lbV9vYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUKTsKKwkJaWYgKElTX0VSUihzaG1l bV9vYmotPnNndCkpCisJCQlyZXR1cm4gUFRSX0VSUihzaG1lbV9vYmotPnNndCk7CisJCS8qIE1h cCB0aGUgcGFnZXMgZm9yIHVzZSBieSB0aGUgR1BVLiAqLworCQlkbWFfbWFwX3NnKHYzZC0+ZGV2 LCBzaG1lbV9vYmotPnNndC0+c2dsLAorCQkJICAgc2htZW1fb2JqLT5zZ3QtPm5lbnRzLCBETUFf QklESVJFQ1RJT05BTCk7CisJfQorCisJZm9yX2VhY2hfc2coc2htZW1fb2JqLT5zZ3QtPnNnbCwg c2dsLCBzaG1lbV9vYmotPnNndC0+bmVudHMsIGNvdW50KSB7CiAJCXUzMiBwYWdlX2FkZHJlc3Mg PSBzZ19kbWFfYWRkcmVzcyhzZ2wpID4+IFYzRF9NTVVfUEFHRV9TSElGVDsKIAkJdTMyIHB0ZSA9 IHBhZ2VfcHJvdCB8IHBhZ2VfYWRkcmVzczsKIAkJdTMyIGk7CkBAIC0xMDIsMTYgKzExNCwxOSBA QCB2b2lkIHYzZF9tbXVfaW5zZXJ0X3B0ZXMoc3RydWN0IHYzZF9ibyAqYm8pCiAJfQogCiAJV0FS Tl9PTl9PTkNFKHBhZ2UgLSBiby0+bm9kZS5zdGFydCAhPQotCQkgICAgIGJvLT5iYXNlLnNpemUg Pj4gVjNEX01NVV9QQUdFX1NISUZUKTsKKwkJICAgICBzaG1lbV9vYmotPmJhc2Uuc2l6ZSA+PiBW M0RfTU1VX1BBR0VfU0hJRlQpOwogCiAJaWYgKHYzZF9tbXVfZmx1c2hfYWxsKHYzZCkpCiAJCWRl dl9lcnIodjNkLT5kZXYsICJNTVUgZmx1c2ggdGltZW91dFxuIik7CisKKwlyZXR1cm4gMDsKIH0K IAogdm9pZCB2M2RfbW11X3JlbW92ZV9wdGVzKHN0cnVjdCB2M2RfYm8gKmJvKQogewotCXN0cnVj dCB2M2RfZGV2ICp2M2QgPSB0b192M2RfZGV2KGJvLT5iYXNlLmRldik7Ci0JdTMyIG5wYWdlcyA9 IGJvLT5iYXNlLnNpemUgPj4gVjNEX01NVV9QQUdFX1NISUZUOworCXN0cnVjdCBkcm1fZ2VtX3No bWVtX29iamVjdCAqc2htZW1fb2JqID0gJmJvLT5iYXNlOworCXN0cnVjdCB2M2RfZGV2ICp2M2Qg PSB0b192M2RfZGV2KHNobWVtX29iai0+YmFzZS5kZXYpOworCXUzMiBucGFnZXMgPSBzaG1lbV9v YmotPmJhc2Uuc2l6ZSA+PiBWM0RfTU1VX1BBR0VfU0hJRlQ7CiAJdTMyIHBhZ2U7CiAKIAlmb3Ig KHBhZ2UgPSBiby0+bm9kZS5zdGFydDsgcGFnZSA8IGJvLT5ub2RlLnN0YXJ0ICsgbnBhZ2VzOyBw YWdlKyspCkBAIC0xMTksNCArMTM0LDExIEBAIHZvaWQgdjNkX21tdV9yZW1vdmVfcHRlcyhzdHJ1 Y3QgdjNkX2JvICpibykKIAogCWlmICh2M2RfbW11X2ZsdXNoX2FsbCh2M2QpKQogCQlkZXZfZXJy KHYzZC0+ZGV2LCAiTU1VIGZsdXNoIHRpbWVvdXRcbiIpOworCisJaWYgKCFzaG1lbV9vYmotPmJh c2UuaW1wb3J0X2F0dGFjaCkgeworCQlkbWFfdW5tYXBfc2codjNkLT5kZXYsIHNobWVtX29iai0+ c2d0LT5zZ2wsCisJCQkgICAgIHNobWVtX29iai0+c2d0LT5uZW50cywgRE1BX0JJRElSRUNUSU9O QUwpOworCQlzZ19mcmVlX3RhYmxlKHNobWVtX29iai0+c2d0KTsKKwkJa2ZyZWUoc2htZW1fb2Jq LT5zZ3QpOworCX0KIH0KLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVs