From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liu Ying Subject: [PATCH v2 07/10] drm/imx: atomic phase 3 step 2: Use atomic configuration Date: Tue, 31 May 2016 17:24:28 +0800 Message-ID: <1464686671-20299-8-git-send-email-gnuiyl@gmail.com> References: <1464686671-20299-1-git-send-email-gnuiyl@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1on0087.outbound.protection.outlook.com [157.56.110.87]) by gabe.freedesktop.org (Postfix) with ESMTPS id BF1306E36A for ; Tue, 31 May 2016 09:25:02 +0000 (UTC) In-Reply-To: <1464686671-20299-1-git-send-email-gnuiyl@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Russell King , Daniel Vetter List-Id: dri-devel@lists.freedesktop.org UmVwbGFjaW5nIGRybV9jcnRjX2hlbHBlcl9zZXRfY29uZmlnKCkgYnkgZHJtX2F0b21pY19oZWxw ZXJfc2V0X2NvbmZpZygpCmFuZCBjb252ZXJ0aW5nIHRoZSBzdXNwZW5kL3Jlc3VtZSBvcGVyYXRp b25zIHRvIGF0b21pYyBtYWtlcyB1cyBiZSBhYmxlCnRvIHVzZSBhdG9taWMgY29uZmlndXJhdGlv bnMuICBBbGwgb2YgdGhlc2UgYWxsb3cgdXMgdG8gcmVtb3ZlIHRoZQpjcnRjX2Z1bmNzLT5tb2Rl X3NldCBjYWxsYmFjayBhcyBpdCBpcyBubyBsb25nZXIgdXNlZC4gIEFsc28sIHdlIG1heSByZW1v dmUKYWxsIHRoZSBlbmNvZGVycycgLT5wcmVwYXJlIGNhbGxiYWNrcyBhcyB0aGV5IGNhbiBiZSBy ZXBsYWNlZCBieSAtPmRpc2FibGUuCkluIGNvbnNlcXVlbmNlLCB0aGUgYnVzX2Zvcm1hdCwgYnVz X2ZsYWdzLCBkaV92c3luY19waW4gYW5kIGRpX2hzeW5jX3BpbgpzZXR0aW5ncyBhcmUgbW92ZWQg ZnJvbSAtPnByZXBhcmUgdG8gc3RydWN0dXJlIGlteF9lbmNvZGVyLiAgRnVydGhlcm1vcmUsCnN3 aXRjaGluZyB0byB0aGUgcHVyZSBhdG9taWMgdmVyc2lvbiBvZiBzZXRfY29uZmlnIGNhbGxiYWNr IG1lYW5zIHRoYXQgd2UKbWF5IGltcGxlbWVudCBDUlRDL3BsYW5lIGF0b21pYyBjaGVja3MgYnkg dXNpbmcgdGhlIG5ldyBDUlRDL3BsYW5lIHN0YXRlcwppbnN0ZWFkIG9mIHRoZSBsZWdhY3kgb25l cyBhbmQgd2UgbWF5IHJlbW92ZSB0aGUgcHJpdmF0ZSBpcHVfY3J0Yy0+ZW5hYmxlZApzdGF0ZSB3 aGljaCB3YXMgbGVmdCB0aGVyZSBmb3IgdGhlIHRyYW5zaXRpb25hbCBhdG9taWMgaGVscGVycyBp biBwaGFzZSAxLgpMYXN0LCB0aGUgbGVnYWN5IGZ1bmN0aW9uIGRybV9oZWxwZXJfZGlzYWJsZV91 bnVzZWRfZnVuY3Rpb25zKCkgaXMgcmVtb3ZlZApmcm9tIC0+bG9hZCBpbiBvcmRlciBub3QgdG8g Y29uZnVzZSB0aGUgYXRvbWljIGRyaXZlci4KClNpZ25lZC1vZmYtYnk6IExpdSBZaW5nIDxnbnVp eWxAZ21haWwuY29tPgotLS0KdjEtPnYyOgoqIEhhbmRsZSB0aGUgbmV3bHkgaW50cm9kdWNlZCBi dXNfZmxhZ3MgdmlhIGlteF9lbmNvZGVyIGFmdGVyIHRoZSByZWJhc2luZy4KKiBSZW1vdmUgdGhl IGxlZ2FjeSBmdW5jdGlvbiBkcm1faGVscGVyX2Rpc2FibGVfdW51c2VkX2Z1bmN0aW9ucygpIGZy b20KICAtPmxvYWQgaW4gb3JkZXIgbm90IHRvIGNvbmZ1c2UgdGhlIGF0b21pYyBkcml2ZXIuCgog ZHJpdmVycy9ncHUvZHJtL2lteC9kd19oZG1pLWlteC5jICAgICAgfCAgMTggKysrLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaW14L2lteC1kcm0tY29yZS5jICAgICB8ICA1MyArKysrLS0tLS0tLS0tLS0t CiBkcml2ZXJzL2dwdS9kcm0vaW14L2lteC1kcm0uaCAgICAgICAgICB8ICAxOCArKystLS0KIGRy aXZlcnMvZ3B1L2RybS9pbXgvaW14LWxkYi5jICAgICAgICAgIHwgMTA5ICsrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2lteC9pbXgtdHZlLmMgICAgICAg ICAgfCAgNTggKysrKysrKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLWNy dGMuYyAgICAgICB8ICA2OSArKysrKystLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9p bXgvaXB1djMtcGxhbmUuYyAgICAgIHwgIDIzICsrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pbXgv cGFyYWxsZWwtZGlzcGxheS5jIHwgIDU2ICsrKysrKysrKy0tLS0tLS0tCiA4IGZpbGVzIGNoYW5n ZWQsIDE2MyBpbnNlcnRpb25zKCspLCAyNDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2lteC9kd19oZG1pLWlteC5jIGIvZHJpdmVycy9ncHUvZHJtL2lteC9kd19o ZG1pLWlteC5jCmluZGV4IGEyNDYzMWZkLi41ZjY0Njc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaW14L2R3X2hkbWktaW14LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2lteC9kd19oZG1p LWlteC5jCkBAIC0yMiw5ICsyMiwxMSBAQAogCiAjaW5jbHVkZSAiaW14LWRybS5oIgogCisjZGVm aW5lIGlteF9lbmNfdG9faW14X2hkbWkoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpbXhfaGRt aSwgaW14X2VuY29kZXIpCisKIHN0cnVjdCBpbXhfaGRtaSB7CiAJc3RydWN0IGRldmljZSAqZGV2 OwotCXN0cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOworCXN0cnVjdCBpbXhfZHJtX2VuY29kZXIg aW14X2VuY29kZXI7CiAJc3RydWN0IHJlZ21hcCAqcmVnbWFwOwogfTsKIApAQCAtMTE3LDcgKzEx OSw4IEBAIHN0YXRpYyB2b2lkIGR3X2hkbWlfaW14X2VuY29kZXJfbW9kZV9zZXQoc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyLAogCiBzdGF0aWMgdm9pZCBkd19oZG1pX2lteF9lbmNvZGVyX2Nv bW1pdChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiB7Ci0Jc3RydWN0IGlteF9oZG1pICpo ZG1pID0gY29udGFpbmVyX29mKGVuY29kZXIsIHN0cnVjdCBpbXhfaGRtaSwgZW5jb2Rlcik7CisJ c3RydWN0IGlteF9kcm1fZW5jb2RlciAqaW14X2VuY29kZXIgPSBlbmNfdG9faW14X2VuYyhlbmNv ZGVyKTsKKwlzdHJ1Y3QgaW14X2hkbWkgKmhkbWkgPSBpbXhfZW5jX3RvX2lteF9oZG1pKGlteF9l bmNvZGVyKTsKIAlpbnQgbXV4ID0gZHJtX29mX2VuY29kZXJfYWN0aXZlX3BvcnRfaWQoaGRtaS0+ ZGV2LT5vZl9ub2RlLCBlbmNvZGVyKTsKIAogCXJlZ21hcF91cGRhdGVfYml0cyhoZG1pLT5yZWdt YXAsIElPTVVYQ19HUFIzLApAQCAtMTI1LDE0ICsxMjgsOCBAQCBzdGF0aWMgdm9pZCBkd19oZG1p X2lteF9lbmNvZGVyX2NvbW1pdChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiAJCQkgICBt dXggPDwgSU1YNlFfR1BSM19IRE1JX01VWF9DVExfU0hJRlQpOwogfQogCi1zdGF0aWMgdm9pZCBk d19oZG1pX2lteF9lbmNvZGVyX3ByZXBhcmUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQot ewotCWlteF9kcm1fc2V0X2J1c19mb3JtYXQoZW5jb2RlciwgTUVESUFfQlVTX0ZNVF9SR0I4ODhf MVgyNCk7Ci19Ci0KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNz IGR3X2hkbWlfaW14X2VuY29kZXJfaGVscGVyX2Z1bmNzID0gewogCS5tb2RlX3NldCAgID0gZHdf aGRtaV9pbXhfZW5jb2Rlcl9tb2RlX3NldCwKLQkucHJlcGFyZSAgICA9IGR3X2hkbWlfaW14X2Vu Y29kZXJfcHJlcGFyZSwKIAkuY29tbWl0ICAgICA9IGR3X2hkbWlfaW14X2VuY29kZXJfY29tbWl0 LAogCS5kaXNhYmxlICAgID0gZHdfaGRtaV9pbXhfZW5jb2Rlcl9kaXNhYmxlLAogfTsKQEAgLTIx NSw3ICsyMTIsMTAgQEAgc3RhdGljIGludCBkd19oZG1pX2lteF9iaW5kKHN0cnVjdCBkZXZpY2Ug KmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLAogCW1hdGNoID0gb2ZfbWF0Y2hfbm9kZShkd19o ZG1pX2lteF9kdF9pZHMsIHBkZXYtPmRldi5vZl9ub2RlKTsKIAlwbGF0X2RhdGEgPSBtYXRjaC0+ ZGF0YTsKIAloZG1pLT5kZXYgPSAmcGRldi0+ZGV2OwotCWVuY29kZXIgPSAmaGRtaS0+ZW5jb2Rl cjsKKwllbmNvZGVyID0gJmhkbWktPmlteF9lbmNvZGVyLmVuY29kZXI7CisJaGRtaS0+aW14X2Vu Y29kZXIuYnVzX2Zvcm1hdCA9IE1FRElBX0JVU19GTVRfUkdCODg4XzFYMjQ7CisJaGRtaS0+aW14 X2VuY29kZXIuZGlfaHN5bmNfcGluID0gMjsKKwloZG1pLT5pbXhfZW5jb2Rlci5kaV92c3luY19w aW4gPSAzOwogCiAJaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsKIAlpZiAoaXJxIDwg MCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvaW14LWRybS1jb3JlLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaW14L2lteC1kcm0tY29yZS5jCmluZGV4IDU4OTNjYmMuLjJhMmFiOGMgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvaW14LWRybS1jb3JlLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2lteC9pbXgtZHJtLWNvcmUuYwpAQCAtNDIsNiArNDIsNyBAQCBzdHJ1Y3QgaW14 X2RybV9kZXZpY2UgewogCXN0cnVjdCBpbXhfZHJtX2NydGMJCQkqY3J0Y1tNQVhfQ1JUQ107CiAJ dW5zaWduZWQgaW50CQkJCXBpcGVzOwogCXN0cnVjdCBkcm1fZmJkZXZfY21hCQkJKmZiaGVscGVy OworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlCQkJKnN0YXRlOwogfTsKIAogc3RydWN0IGlteF9k cm1fY3J0YyB7CkBAIC04Niw0NSArODcsNiBAQCBzdGF0aWMgaW50IGlteF9kcm1fZHJpdmVyX3Vu bG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgc3Ry dWN0IGlteF9kcm1fY3J0YyAqaW14X2RybV9maW5kX2NydGMoc3RydWN0IGRybV9jcnRjICpjcnRj KQotewotCXN0cnVjdCBpbXhfZHJtX2RldmljZSAqaW14ZHJtID0gY3J0Yy0+ZGV2LT5kZXZfcHJp dmF0ZTsKLQl1bnNpZ25lZCBpOwotCi0JZm9yIChpID0gMDsgaSA8IE1BWF9DUlRDOyBpKyspCi0J CWlmIChpbXhkcm0tPmNydGNbaV0gJiYgaW14ZHJtLT5jcnRjW2ldLT5jcnRjID09IGNydGMpCi0J CQlyZXR1cm4gaW14ZHJtLT5jcnRjW2ldOwotCi0JcmV0dXJuIE5VTEw7Ci19Ci0KLWludCBpbXhf ZHJtX3NldF9idXNfY29uZmlnKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwgdTMyIGJ1c19m b3JtYXQsCi0JCWludCBoc3luY19waW4sIGludCB2c3luY19waW4sIHUzMiBidXNfZmxhZ3MpCi17 Ci0Jc3RydWN0IGlteF9kcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmhlbHBlcjsKLQlzdHJ1Y3QgaW14 X2RybV9jcnRjICppbXhfY3J0YzsKLQotCWlteF9jcnRjID0gaW14X2RybV9maW5kX2NydGMoZW5j b2Rlci0+Y3J0Yyk7Ci0JaWYgKCFpbXhfY3J0YykKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQloZWxw ZXIgPSAmaW14X2NydGMtPmlteF9kcm1faGVscGVyX2Z1bmNzOwotCWlmIChoZWxwZXItPnNldF9p bnRlcmZhY2VfcGl4X2ZtdCkKLQkJcmV0dXJuIGhlbHBlci0+c2V0X2ludGVyZmFjZV9waXhfZm10 KGVuY29kZXItPmNydGMsCi0JCQkJCWJ1c19mb3JtYXQsIGhzeW5jX3BpbiwgdnN5bmNfcGluLAot CQkJCQlidXNfZmxhZ3MpOwotCXJldHVybiAwOwotfQotRVhQT1JUX1NZTUJPTF9HUEwoaW14X2Ry bV9zZXRfYnVzX2NvbmZpZyk7Ci0KLWludCBpbXhfZHJtX3NldF9idXNfZm9ybWF0KHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlciwgdTMyIGJ1c19mb3JtYXQpCi17Ci0JcmV0dXJuIGlteF9kcm1f c2V0X2J1c19jb25maWcoZW5jb2RlciwgYnVzX2Zvcm1hdCwgMiwgMywKLQkJCQkgICAgICBEUk1f QlVTX0ZMQUdfREVfSElHSCB8Ci0JCQkJICAgICAgRFJNX0JVU19GTEFHX1BJWERBVEFfTkVHRURH RSk7Ci19Ci1FWFBPUlRfU1lNQk9MX0dQTChpbXhfZHJtX3NldF9idXNfZm9ybWF0KTsKLQogaW50 IGlteF9kcm1fY3J0Y192YmxhbmtfZ2V0KHN0cnVjdCBpbXhfZHJtX2NydGMgKmlteF9kcm1fY3J0 YykKIHsKIAlyZXR1cm4gZHJtX2NydGNfdmJsYW5rX2dldChpbXhfZHJtX2NydGMtPmNydGMpOwpA QCAtMjk0LDcgKzI1Niw2IEBAIHN0YXRpYyBpbnQgaW14X2RybV9kcml2ZXJfbG9hZChzdHJ1Y3Qg ZHJtX2RldmljZSAqZHJtLCB1bnNpZ25lZCBsb25nIGZsYWdzKQogCQlkZXZfd2Fybihkcm0tPmRl diwgIkludmFsaWQgbGVnYWN5ZmJfZGVwdGguICBEZWZhdWx0aW5nIHRvIDE2YnBwXG4iKTsKIAkJ bGVnYWN5ZmJfZGVwdGggPSAxNjsKIAl9Ci0JZHJtX2hlbHBlcl9kaXNhYmxlX3VudXNlZF9mdW5j dGlvbnMoZHJtKTsKIAlpbXhkcm0tPmZiaGVscGVyID0gZHJtX2ZiZGV2X2NtYV9pbml0KGRybSwg bGVnYWN5ZmJfZGVwdGgsCiAJCQkJZHJtLT5tb2RlX2NvbmZpZy5udW1fY3J0YywgTUFYX0NSVEMp OwogCWlmIChJU19FUlIoaW14ZHJtLT5mYmhlbHBlcikpIHsKQEAgLTQ5Nyw2ICs0NTgsNyBAQCBz dGF0aWMgaW50IGlteF9kcm1fcGxhdGZvcm1fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCiBzdGF0aWMgaW50IGlteF9kcm1fc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7 CiAJc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlz dHJ1Y3QgaW14X2RybV9kZXZpY2UgKmlteGRybTsKIAogCS8qIFRoZSBkcm1fZGV2IGlzIE5VTEwg YmVmb3JlIC5sb2FkIGhvb2sgaXMgY2FsbGVkICovCiAJaWYgKGRybV9kZXYgPT0gTlVMTCkKQEAg LTUwNCwxNyArNDY2LDI2IEBAIHN0YXRpYyBpbnQgaW14X2RybV9zdXNwZW5kKHN0cnVjdCBkZXZp Y2UgKmRldikKIAogCWRybV9rbXNfaGVscGVyX3BvbGxfZGlzYWJsZShkcm1fZGV2KTsKIAorCWlt eGRybSA9IGRybV9kZXYtPmRldl9wcml2YXRlOworCWlteGRybS0+c3RhdGUgPSBkcm1fYXRvbWlj X2hlbHBlcl9zdXNwZW5kKGRybV9kZXYpOworCWlmIChJU19FUlIoaW14ZHJtLT5zdGF0ZSkpIHsK KwkJZHJtX2ttc19oZWxwZXJfcG9sbF9lbmFibGUoZHJtX2Rldik7CisJCXJldHVybiBQVFJfRVJS KGlteGRybS0+c3RhdGUpOworCX0KKwogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IGlteF9k cm1fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZHJt X2RldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBpbXhfZHJtX2RldmljZSAqaW14 X2RybTsKIAogCWlmIChkcm1fZGV2ID09IE5VTEwpCiAJCXJldHVybiAwOwogCi0JZHJtX2hlbHBl cl9yZXN1bWVfZm9yY2VfbW9kZShkcm1fZGV2KTsKKwlpbXhfZHJtID0gZHJtX2Rldi0+ZGV2X3By aXZhdGU7CisJZHJtX2F0b21pY19oZWxwZXJfcmVzdW1lKGRybV9kZXYsIGlteF9kcm0tPnN0YXRl KTsKIAlkcm1fa21zX2hlbHBlcl9wb2xsX2VuYWJsZShkcm1fZGV2KTsKIAogCXJldHVybiAwOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2lteC9pbXgtZHJtLmggYi9kcml2ZXJzL2dwdS9k cm0vaW14L2lteC1kcm0uaAppbmRleCA3NDMyMGExLi4zOWNlZjE1IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaW14L2lteC1kcm0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaW14L2lteC1k cm0uaApAQCAtMTUsMTIgKzE1LDE5IEBAIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2U7CiAKIHVuc2ln bmVkIGludCBpbXhfZHJtX2NydGNfaWQoc3RydWN0IGlteF9kcm1fY3J0YyAqY3J0Yyk7CiAKK3N0 cnVjdCBpbXhfZHJtX2VuY29kZXIgeworCXN0cnVjdCBkcm1fZW5jb2RlcgkJCWVuY29kZXI7CisJ dTMyCQkJCQlidXNfZm9ybWF0OworCXUzMgkJCQkJYnVzX2ZsYWdzOworCWludAkJCQkJZGlfaHN5 bmNfcGluOworCWludAkJCQkJZGlfdnN5bmNfcGluOworfTsKKworI2RlZmluZSBlbmNfdG9faW14 X2VuYyh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGlteF9kcm1fZW5jb2RlciwgZW5jb2RlcikK Kwogc3RydWN0IGlteF9kcm1fY3J0Y19oZWxwZXJfZnVuY3MgewogCWludCAoKmVuYWJsZV92Ymxh bmspKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CiAJdm9pZCAoKmRpc2FibGVfdmJsYW5rKShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpOwotCWludCAoKnNldF9pbnRlcmZhY2VfcGl4X2ZtdCkoc3RydWN0 IGRybV9jcnRjICpjcnRjLAotCQkJdTMyIGJ1c19mb3JtYXQsIGludCBoc3luY19waW4sIGludCB2 c3luY19waW4sCi0JCQl1MzIgYnVzX2ZsYWdzKTsKIAljb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVs cGVyX2Z1bmNzICpjcnRjX2hlbHBlcl9mdW5jczsKIAljb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVu Y3MgKmNydGNfZnVuY3M7CiB9OwpAQCAtNDIsMTEgKzQ5LDYgQEAgdm9pZCBpbXhfZHJtX21vZGVf Y29uZmlnX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSk7CiAKIHN0cnVjdCBkcm1fZ2VtX2Nt YV9vYmplY3QgKmlteF9kcm1fZmJfZ2V0X29iaihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYik7 CiAKLWludCBpbXhfZHJtX3NldF9idXNfY29uZmlnKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl ciwgdTMyIGJ1c19mb3JtYXQsCi0JCWludCBoc3luY19waW4sIGludCB2c3luY19waW4sIHUzMiBi dXNfZmxhZ3MpOwotaW50IGlteF9kcm1fc2V0X2J1c19mb3JtYXQoc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyLAotCQl1MzIgYnVzX2Zvcm1hdCk7Ci0KIGludCBpbXhfZHJtX2VuY29kZXJfcGFy c2Vfb2Yoc3RydWN0IGRybV9kZXZpY2UgKmRybSwKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaW14L2lteC1sZGIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvaW14LWxkYi5jCmluZGV4IDEy YmYzNjguLjRhOThlYWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvaW14LWxkYi5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvaW14LWxkYi5jCkBAIC01MSwxNCArNTEsMTUgQEAK ICNkZWZpbmUgTERCX0JHUkVGX1JNT0RFX0lOVAkJKDEgPDwgMTUpCiAKICNkZWZpbmUgY29uX3Rv X2lteF9sZGJfY2goeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpbXhfbGRiX2NoYW5uZWwsIGNv bm5lY3RvcikKLSNkZWZpbmUgZW5jX3RvX2lteF9sZGJfY2goeCkgY29udGFpbmVyX29mKHgsIHN0 cnVjdCBpbXhfbGRiX2NoYW5uZWwsIGVuY29kZXIpCisjZGVmaW5lIGlteF9lbmNfdG9faW14X2xk Yl9jaCh4KQlcCisJCQljb250YWluZXJfb2YoeCwgc3RydWN0IGlteF9sZGJfY2hhbm5lbCwgaW14 X2VuY29kZXIpCiAKIHN0cnVjdCBpbXhfbGRiOwogCiBzdHJ1Y3QgaW14X2xkYl9jaGFubmVsIHsK IAlzdHJ1Y3QgaW14X2xkYiAqbGRiOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5lY3RvcjsK LQlzdHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsKKwlzdHJ1Y3QgaW14X2RybV9lbmNvZGVyIGlt eF9lbmNvZGVyOwogCXN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsOwogCXN0cnVjdCBkZXZpY2Vfbm9k ZSAqY2hpbGQ7CiAJc3RydWN0IGkyY19hZGFwdGVyICpkZGM7CkBAIC02Nyw3ICs2OCw2IEBAIHN0 cnVjdCBpbXhfbGRiX2NoYW5uZWwgewogCWludCBlZGlkX2xlbjsKIAlzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSBtb2RlOwogCWludCBtb2RlX3ZhbGlkOwotCWludCBidXNfZm9ybWF0OwogfTsKIAog c3RydWN0IGJ1c19tdXggewpAQCAtMTA0LDggKzEwNCw4IEBAIHN0YXRpYyBpbnQgaW14X2xkYl9j b25uZWN0b3JfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiAJCXN0 cnVjdCBkcm1fZGlzcGxheV9pbmZvICpkaSA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mbzsKIAog CQludW1fbW9kZXMgPSBpbXhfbGRiX2NoLT5wYW5lbC0+ZnVuY3MtPmdldF9tb2RlcyhpbXhfbGRi X2NoLT5wYW5lbCk7Ci0JCWlmICghaW14X2xkYl9jaC0+YnVzX2Zvcm1hdCAmJiBkaS0+bnVtX2J1 c19mb3JtYXRzKQotCQkJaW14X2xkYl9jaC0+YnVzX2Zvcm1hdCA9IGRpLT5idXNfZm9ybWF0c1sw XTsKKwkJaWYgKCFpbXhfbGRiX2NoLT5pbXhfZW5jb2Rlci5idXNfZm9ybWF0ICYmIGRpLT5udW1f YnVzX2Zvcm1hdHMpCisJCQlpbXhfbGRiX2NoLT5pbXhfZW5jb2Rlci5idXNfZm9ybWF0ID0gZGkt PmJ1c19mb3JtYXRzWzBdOwogCQlpZiAobnVtX21vZGVzID4gMCkKIAkJCXJldHVybiBudW1fbW9k ZXM7CiAJfQpAQCAtMTM5LDcgKzEzOSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2VuY29kZXIgKmlt eF9sZGJfY29ubmVjdG9yX2Jlc3RfZW5jb2RlcigKIHsKIAlzdHJ1Y3QgaW14X2xkYl9jaGFubmVs ICppbXhfbGRiX2NoID0gY29uX3RvX2lteF9sZGJfY2goY29ubmVjdG9yKTsKIAotCXJldHVybiAm aW14X2xkYl9jaC0+ZW5jb2RlcjsKKwlyZXR1cm4gJmlteF9sZGJfY2gtPmlteF9lbmNvZGVyLmVu Y29kZXI7CiB9CiAKIHN0YXRpYyB2b2lkIGlteF9sZGJfZW5jb2Rlcl9kcG1zKHN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlciwgaW50IG1vZGUpCkBAIC0xNzQsNDUgKzE3NCwxMCBAQCBzdGF0aWMg dm9pZCBpbXhfbGRiX3NldF9jbG9jayhzdHJ1Y3QgaW14X2xkYiAqbGRiLCBpbnQgbXV4LCBpbnQg Y2hubywKIAkJCWNobm8pOwogfQogCi1zdGF0aWMgdm9pZCBpbXhfbGRiX2VuY29kZXJfcHJlcGFy ZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCi17Ci0Jc3RydWN0IGlteF9sZGJfY2hhbm5l bCAqaW14X2xkYl9jaCA9IGVuY190b19pbXhfbGRiX2NoKGVuY29kZXIpOwotCXN0cnVjdCBpbXhf bGRiICpsZGIgPSBpbXhfbGRiX2NoLT5sZGI7Ci0JaW50IGR1YWwgPSBsZGItPmxkYl9jdHJsICYg TERCX1NQTElUX01PREVfRU47Ci0JdTMyIGJ1c19mb3JtYXQ7Ci0KLQlzd2l0Y2ggKGlteF9sZGJf Y2gtPmJ1c19mb3JtYXQpIHsKLQlkZWZhdWx0OgotCQlkZXZfd2FybihsZGItPmRldiwKLQkJCSAi Y291bGQgbm90IGRldGVybWluZSBkYXRhIG1hcHBpbmcsIGRlZmF1bHQgdG8gMTgtYml0IFwic3B3 Z1wiXG4iKTsKLQkJLyogZmFsbHRocm91Z2ggKi8KLQljYXNlIE1FRElBX0JVU19GTVRfUkdCNjY2 XzFYN1gzX1NQV0c6Ci0JCWJ1c19mb3JtYXQgPSBNRURJQV9CVVNfRk1UX1JHQjY2Nl8xWDE4Owot CQlicmVhazsKLQljYXNlIE1FRElBX0JVU19GTVRfUkdCODg4XzFYN1g0X1NQV0c6Ci0JCWJ1c19m b3JtYXQgPSBNRURJQV9CVVNfRk1UX1JHQjg4OF8xWDI0OwotCQlpZiAoaW14X2xkYl9jaC0+Y2hu byA9PSAwIHx8IGR1YWwpCi0JCQlsZGItPmxkYl9jdHJsIHw9IExEQl9EQVRBX1dJRFRIX0NIMF8y NDsKLQkJaWYgKGlteF9sZGJfY2gtPmNobm8gPT0gMSB8fCBkdWFsKQotCQkJbGRiLT5sZGJfY3Ry bCB8PSBMREJfREFUQV9XSURUSF9DSDFfMjQ7Ci0JCWJyZWFrOwotCWNhc2UgTUVESUFfQlVTX0ZN VF9SR0I4ODhfMVg3WDRfSkVJREE6Ci0JCWJ1c19mb3JtYXQgPSBNRURJQV9CVVNfRk1UX1JHQjg4 OF8xWDI0OwotCQlpZiAoaW14X2xkYl9jaC0+Y2hubyA9PSAwIHx8IGR1YWwpCi0JCQlsZGItPmxk Yl9jdHJsIHw9IExEQl9EQVRBX1dJRFRIX0NIMF8yNCB8Ci0JCQkJCSBMREJfQklUX01BUF9DSDBf SkVJREE7Ci0JCWlmIChpbXhfbGRiX2NoLT5jaG5vID09IDEgfHwgZHVhbCkKLQkJCWxkYi0+bGRi X2N0cmwgfD0gTERCX0RBVEFfV0lEVEhfQ0gxXzI0IHwKLQkJCQkJIExEQl9CSVRfTUFQX0NIMV9K RUlEQTsKLQkJYnJlYWs7Ci0JfQotCi0JaW14X2RybV9zZXRfYnVzX2Zvcm1hdChlbmNvZGVyLCBi dXNfZm9ybWF0KTsKLX0KLQogc3RhdGljIHZvaWQgaW14X2xkYl9lbmNvZGVyX2NvbW1pdChzdHJ1 Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiB7Ci0Jc3RydWN0IGlteF9sZGJfY2hhbm5lbCAqaW14 X2xkYl9jaCA9IGVuY190b19pbXhfbGRiX2NoKGVuY29kZXIpOworCXN0cnVjdCBpbXhfZHJtX2Vu Y29kZXIgKmlteF9lbmNvZGVyID0gZW5jX3RvX2lteF9lbmMoZW5jb2Rlcik7CisJc3RydWN0IGlt eF9sZGJfY2hhbm5lbCAqaW14X2xkYl9jaCA9IGlteF9lbmNfdG9faW14X2xkYl9jaChpbXhfZW5j b2Rlcik7CiAJc3RydWN0IGlteF9sZGIgKmxkYiA9IGlteF9sZGJfY2gtPmxkYjsKIAlpbnQgZHVh bCA9IGxkYi0+bGRiX2N0cmwgJiBMREJfU1BMSVRfTU9ERV9FTjsKIAlpbnQgbXV4ID0gZHJtX29m X2VuY29kZXJfYWN0aXZlX3BvcnRfaWQoaW14X2xkYl9jaC0+Y2hpbGQsIGVuY29kZXIpOwpAQCAt MjYwLDcgKzIyNSw4IEBAIHN0YXRpYyB2b2lkIGlteF9sZGJfZW5jb2Rlcl9tb2RlX3NldChzdHJ1 Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCiAJCQkgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm9y aWdfbW9kZSwKIAkJCSBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKIHsKLQlzdHJ1Y3Qg aW14X2xkYl9jaGFubmVsICppbXhfbGRiX2NoID0gZW5jX3RvX2lteF9sZGJfY2goZW5jb2Rlcik7 CisJc3RydWN0IGlteF9kcm1fZW5jb2RlciAqaW14X2VuY29kZXIgPSBlbmNfdG9faW14X2VuYyhl bmNvZGVyKTsKKwlzdHJ1Y3QgaW14X2xkYl9jaGFubmVsICppbXhfbGRiX2NoID0gaW14X2VuY190 b19pbXhfbGRiX2NoKGlteF9lbmNvZGVyKTsKIAlzdHJ1Y3QgaW14X2xkYiAqbGRiID0gaW14X2xk Yl9jaC0+bGRiOwogCWludCBkdWFsID0gbGRiLT5sZGJfY3RybCAmIExEQl9TUExJVF9NT0RFX0VO OwogCXVuc2lnbmVkIGxvbmcgc2VyaWFsX2NsazsKQEAgLTMwMyw3ICsyNjksOCBAQCBzdGF0aWMg dm9pZCBpbXhfbGRiX2VuY29kZXJfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy LAogCiBzdGF0aWMgdm9pZCBpbXhfbGRiX2VuY29kZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIpCiB7Ci0Jc3RydWN0IGlteF9sZGJfY2hhbm5lbCAqaW14X2xkYl9jaCA9IGVu Y190b19pbXhfbGRiX2NoKGVuY29kZXIpOworCXN0cnVjdCBpbXhfZHJtX2VuY29kZXIgKmlteF9l bmNvZGVyID0gZW5jX3RvX2lteF9lbmMoZW5jb2Rlcik7CisJc3RydWN0IGlteF9sZGJfY2hhbm5l bCAqaW14X2xkYl9jaCA9IGlteF9lbmNfdG9faW14X2xkYl9jaChpbXhfZW5jb2Rlcik7CiAJc3Ry dWN0IGlteF9sZGIgKmxkYiA9IGlteF9sZGJfY2gtPmxkYjsKIAlpbnQgbXV4LCByZXQ7CiAKQEAg LTM3OSw3ICszNDYsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIGlt eF9sZGJfZW5jb2Rlcl9mdW5jcyA9IHsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rl cl9oZWxwZXJfZnVuY3MgaW14X2xkYl9lbmNvZGVyX2hlbHBlcl9mdW5jcyA9IHsKIAkuZHBtcyA9 IGlteF9sZGJfZW5jb2Rlcl9kcG1zLAotCS5wcmVwYXJlID0gaW14X2xkYl9lbmNvZGVyX3ByZXBh cmUsCiAJLmNvbW1pdCA9IGlteF9sZGJfZW5jb2Rlcl9jb21taXQsCiAJLm1vZGVfc2V0ID0gaW14 X2xkYl9lbmNvZGVyX21vZGVfc2V0LAogCS5kaXNhYmxlID0gaW14X2xkYl9lbmNvZGVyX2Rpc2Fi bGUsCkBAIC00MDYsNyArMzcyLDcgQEAgc3RhdGljIGludCBpbXhfbGRiX3JlZ2lzdGVyKHN0cnVj dCBkcm1fZGV2aWNlICpkcm0sCiAJc3RydWN0IGlteF9sZGIgKmxkYiA9IGlteF9sZGJfY2gtPmxk YjsKIAlpbnQgcmV0OwogCi0JcmV0ID0gaW14X2RybV9lbmNvZGVyX3BhcnNlX29mKGRybSwgJmlt eF9sZGJfY2gtPmVuY29kZXIsCisJcmV0ID0gaW14X2RybV9lbmNvZGVyX3BhcnNlX29mKGRybSwg JmlteF9sZGJfY2gtPmlteF9lbmNvZGVyLmVuY29kZXIsCiAJCQkJICAgICAgIGlteF9sZGJfY2gt PmNoaWxkKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpAQCAtNDIxLDEwICszODcsMTAgQEAg c3RhdGljIGludCBpbXhfbGRiX3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCiAJCQly ZXR1cm4gcmV0OwogCX0KIAotCWRybV9lbmNvZGVyX2hlbHBlcl9hZGQoJmlteF9sZGJfY2gtPmVu Y29kZXIsCisJZHJtX2VuY29kZXJfaGVscGVyX2FkZCgmaW14X2xkYl9jaC0+aW14X2VuY29kZXIu ZW5jb2RlciwKIAkJCSZpbXhfbGRiX2VuY29kZXJfaGVscGVyX2Z1bmNzKTsKLQlkcm1fZW5jb2Rl cl9pbml0KGRybSwgJmlteF9sZGJfY2gtPmVuY29kZXIsICZpbXhfbGRiX2VuY29kZXJfZnVuY3Ms Ci0JCQkgRFJNX01PREVfRU5DT0RFUl9MVkRTLCBOVUxMKTsKKwlkcm1fZW5jb2Rlcl9pbml0KGRy bSwgJmlteF9sZGJfY2gtPmlteF9lbmNvZGVyLmVuY29kZXIsCisJCQkgJmlteF9sZGJfZW5jb2Rl cl9mdW5jcywgRFJNX01PREVfRU5DT0RFUl9MVkRTLCBOVUxMKTsKIAogCWRybV9jb25uZWN0b3Jf aGVscGVyX2FkZCgmaW14X2xkYl9jaC0+Y29ubmVjdG9yLAogCQkJJmlteF9sZGJfY29ubmVjdG9y X2hlbHBlcl9mdW5jcyk7CkBAIC00MzUsNyArNDAxLDcgQEAgc3RhdGljIGludCBpbXhfbGRiX3Jl Z2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCiAJCWRybV9wYW5lbF9hdHRhY2goaW14X2xk Yl9jaC0+cGFuZWwsICZpbXhfbGRiX2NoLT5jb25uZWN0b3IpOwogCiAJZHJtX21vZGVfY29ubmVj dG9yX2F0dGFjaF9lbmNvZGVyKCZpbXhfbGRiX2NoLT5jb25uZWN0b3IsCi0JCQkmaW14X2xkYl9j aC0+ZW5jb2Rlcik7CisJCQkmaW14X2xkYl9jaC0+aW14X2VuY29kZXIuZW5jb2Rlcik7CiAKIAly ZXR1cm4gMDsKIH0KQEAgLTU2NCw2ICs1MzAsNyBAQCBzdGF0aWMgaW50IGlteF9sZGJfYmluZChz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKIAkJ c3RydWN0IGlteF9sZGJfY2hhbm5lbCAqY2hhbm5lbDsKIAkJc3RydWN0IGRldmljZV9ub2RlICpk ZGNfbm9kZTsKIAkJc3RydWN0IGRldmljZV9ub2RlICplcDsKKwkJaW50IGJ1c19mb3JtYXQ7CiAK IAkJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIoY2hpbGQsICJyZWciLCAmaSk7CiAJCWlmIChy ZXQgfHwgaSA8IDAgfHwgaSA+IDEpCkBAIC02MzYsMjEgKzYwMyw0NiBAQCBzdGF0aWMgaW50IGlt eF9sZGJfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9p ZCAqZGF0YSkKIAkJCX0KIAkJfQogCi0JCWNoYW5uZWwtPmJ1c19mb3JtYXQgPSBvZl9nZXRfYnVz X2Zvcm1hdChkZXYsIGNoaWxkKTsKLQkJaWYgKGNoYW5uZWwtPmJ1c19mb3JtYXQgPT0gLUVJTlZB TCkgeworCQlidXNfZm9ybWF0ID0gb2ZfZ2V0X2J1c19mb3JtYXQoZGV2LCBjaGlsZCk7CisJCWlm IChidXNfZm9ybWF0ID09IC1FSU5WQUwpIHsKIAkJCS8qCiAJCQkgKiBJZiBubyBidXMgZm9ybWF0 IHdhcyBzcGVjaWZpZWQgaW4gdGhlIGRldmljZSB0cmVlLAogCQkJICogd2UgY2FuIHN0aWxsIGdl dCBpdCBmcm9tIHRoZSBjb25uZWN0ZWQgcGFuZWwgbGF0ZXIuCiAJCQkgKi8KIAkJCWlmIChjaGFu bmVsLT5wYW5lbCAmJiBjaGFubmVsLT5wYW5lbC0+ZnVuY3MgJiYKIAkJCSAgICBjaGFubmVsLT5w YW5lbC0+ZnVuY3MtPmdldF9tb2RlcykKLQkJCQljaGFubmVsLT5idXNfZm9ybWF0ID0gMDsKKwkJ CQlidXNfZm9ybWF0ID0gMDsKIAkJfQotCQlpZiAoY2hhbm5lbC0+YnVzX2Zvcm1hdCA8IDApIHsK KwkJaWYgKGJ1c19mb3JtYXQgPCAwKSB7CiAJCQlkZXZfZXJyKGRldiwgImNvdWxkIG5vdCBkZXRl cm1pbmUgZGF0YSBtYXBwaW5nOiAlZFxuIiwKLQkJCQljaGFubmVsLT5idXNfZm9ybWF0KTsKLQkJ CXJldHVybiBjaGFubmVsLT5idXNfZm9ybWF0OworCQkJCWJ1c19mb3JtYXQpOworCQkJcmV0dXJu IGJ1c19mb3JtYXQ7CiAJCX0KKwkJc3dpdGNoIChidXNfZm9ybWF0KSB7CisJCWNhc2UgTUVESUFf QlVTX0ZNVF9SR0I2NjZfMVg3WDNfU1BXRzoKKwkJCWJ1c19mb3JtYXQgPSBNRURJQV9CVVNfRk1U X1JHQjY2Nl8xWDE4OworCQkJYnJlYWs7CisJCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0I4ODhfMVg3 WDRfU1BXRzoKKwkJCWJ1c19mb3JtYXQgPSBNRURJQV9CVVNfRk1UX1JHQjg4OF8xWDI0OworCQkJ aWYgKGkgPT0gMCB8fCBkdWFsKQorCQkJCWlteF9sZGItPmxkYl9jdHJsIHw9IExEQl9EQVRBX1dJ RFRIX0NIMF8yNDsKKwkJCWlmIChpID09IDEgfHwgZHVhbCkKKwkJCQlpbXhfbGRiLT5sZGJfY3Ry bCB8PSBMREJfREFUQV9XSURUSF9DSDFfMjQ7CisJCQlicmVhazsKKwkJY2FzZSBNRURJQV9CVVNf Rk1UX1JHQjg4OF8xWDdYNF9KRUlEQToKKwkJCWJ1c19mb3JtYXQgPSBNRURJQV9CVVNfRk1UX1JH Qjg4OF8xWDI0OworCQkJaWYgKGkgPT0gMCB8fCBkdWFsKQorCQkJCWlteF9sZGItPmxkYl9jdHJs IHw9IExEQl9EQVRBX1dJRFRIX0NIMF8yNCB8CisJCQkJCQkgICAgIExEQl9CSVRfTUFQX0NIMF9K RUlEQTsKKwkJCWlmIChpID09IDEgfHwgZHVhbCkKKwkJCQlpbXhfbGRiLT5sZGJfY3RybCB8PSBM REJfREFUQV9XSURUSF9DSDFfMjQgfAorCQkJCQkJICAgICBMREJfQklUX01BUF9DSDFfSkVJREE7 CisJCQlicmVhazsKKwkJfQorCQljaGFubmVsLT5pbXhfZW5jb2Rlci5idXNfZm9ybWF0ID0gYnVz X2Zvcm1hdDsKKworCQljaGFubmVsLT5pbXhfZW5jb2Rlci5kaV9oc3luY19waW4gPSAyOworCQlj aGFubmVsLT5pbXhfZW5jb2Rlci5kaV92c3luY19waW4gPSAzOwogCiAJCXJldCA9IGlteF9sZGJf cmVnaXN0ZXIoZHJtLCBjaGFubmVsKTsKIAkJaWYgKHJldCkKQEAgLTY3NSw3ICs2NjcsOCBAQCBz dGF0aWMgdm9pZCBpbXhfbGRiX3VuYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZp Y2UgKm1hc3RlciwKIAkJCWNvbnRpbnVlOwogCiAJCWNoYW5uZWwtPmNvbm5lY3Rvci5mdW5jcy0+ ZGVzdHJveSgmY2hhbm5lbC0+Y29ubmVjdG9yKTsKLQkJY2hhbm5lbC0+ZW5jb2Rlci5mdW5jcy0+ ZGVzdHJveSgmY2hhbm5lbC0+ZW5jb2Rlcik7CisJCWNoYW5uZWwtPmlteF9lbmNvZGVyLmVuY29k ZXIuZnVuY3MtPmRlc3Ryb3koCisJCQkJCSZjaGFubmVsLT5pbXhfZW5jb2Rlci5lbmNvZGVyKTsK IAogCQlrZnJlZShjaGFubmVsLT5lZGlkKTsKIAkJaTJjX3B1dF9hZGFwdGVyKGNoYW5uZWwtPmRk Yyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaW14L2lteC10dmUuYyBiL2RyaXZlcnMv Z3B1L2RybS9pbXgvaW14LXR2ZS5jCmluZGV4IDBiMGFlZWUuLjgyYTFlZGQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pbXgvaW14LXR2ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgv aW14LXR2ZS5jCkBAIC05OSw3ICs5OSw3IEBACiAjZGVmaW5lIFRWRV9UVkRBQ19URVNUX01PREVf TUFTSwkoMHg3IDw8IDApCiAKICNkZWZpbmUgY29uX3RvX3R2ZSh4KSBjb250YWluZXJfb2YoeCwg c3RydWN0IGlteF90dmUsIGNvbm5lY3RvcikKLSNkZWZpbmUgZW5jX3RvX3R2ZSh4KSBjb250YWlu ZXJfb2YoeCwgc3RydWN0IGlteF90dmUsIGVuY29kZXIpCisjZGVmaW5lIGlteF9lbmNfdG9fdHZl KHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgaW14X3R2ZSwgaW14X2VuY29kZXIpCiAKIGVudW0g ewogCVRWRV9NT0RFX1RWT1VULApAQCAtMTA4LDcgKzEwOCw3IEBAIGVudW0gewogCiBzdHJ1Y3Qg aW14X3R2ZSB7CiAJc3RydWN0IGRybV9jb25uZWN0b3IgY29ubmVjdG9yOwotCXN0cnVjdCBkcm1f ZW5jb2RlciBlbmNvZGVyOworCXN0cnVjdCBpbXhfZHJtX2VuY29kZXIgaW14X2VuY29kZXI7CiAJ c3RydWN0IGRldmljZSAqZGV2OwogCXNwaW5sb2NrX3QgbG9jazsJLyogcmVnaXN0ZXIgbG9jayAq LwogCWJvb2wgZW5hYmxlZDsKQEAgLTEyMSw4ICsxMjEsNiBAQCBzdHJ1Y3QgaW14X3R2ZSB7CiAJ c3RydWN0IGNsayAqZGlfc2VsX2NsazsKIAlzdHJ1Y3QgY2xrX2h3IGNsa19od19kaTsKIAlzdHJ1 Y3QgY2xrICpkaV9jbGs7Ci0JaW50IHZzeW5jX3BpbjsKLQlpbnQgaHN5bmNfcGluOwogfTsKIAog c3RhdGljIHZvaWQgdHZlX2xvY2sodm9pZCAqX190dmUpCkBAIC0yNzMsMTIgKzI3MSwxMyBAQCBz dGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICppbXhfdHZlX2Nvbm5lY3Rvcl9iZXN0X2VuY29kZXIo CiB7CiAJc3RydWN0IGlteF90dmUgKnR2ZSA9IGNvbl90b190dmUoY29ubmVjdG9yKTsKIAotCXJl dHVybiAmdHZlLT5lbmNvZGVyOworCXJldHVybiAmdHZlLT5pbXhfZW5jb2Rlci5lbmNvZGVyOwog fQogCiBzdGF0aWMgdm9pZCBpbXhfdHZlX2VuY29kZXJfZHBtcyhzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXIsIGludCBtb2RlKQogewotCXN0cnVjdCBpbXhfdHZlICp0dmUgPSBlbmNfdG9fdHZl KGVuY29kZXIpOworCXN0cnVjdCBpbXhfZHJtX2VuY29kZXIgKmlteF9lbmNvZGVyID0gZW5jX3Rv X2lteF9lbmMoZW5jb2Rlcik7CisJc3RydWN0IGlteF90dmUgKnR2ZSA9IGlteF9lbmNfdG9fdHZl KGlteF9lbmNvZGVyKTsKIAlpbnQgcmV0OwogCiAJcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHR2 ZS0+cmVnbWFwLCBUVkVfQ09NX0NPTkZfUkVHLApAQCAtMjg3LDMwICsyODYsMTIgQEAgc3RhdGlj IHZvaWQgaW14X3R2ZV9lbmNvZGVyX2RwbXMoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLCBp bnQgbW9kZSkKIAkJZGV2X2Vycih0dmUtPmRldiwgImZhaWxlZCB0byBkaXNhYmxlIFRWT1VUOiAl ZFxuIiwgcmV0KTsKIH0KIAotc3RhdGljIHZvaWQgaW14X3R2ZV9lbmNvZGVyX3ByZXBhcmUoc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQotewotCXN0cnVjdCBpbXhfdHZlICp0dmUgPSBlbmNf dG9fdHZlKGVuY29kZXIpOwotCi0JdHZlX2Rpc2FibGUodHZlKTsKLQotCXN3aXRjaCAodHZlLT5t b2RlKSB7Ci0JY2FzZSBUVkVfTU9ERV9WR0E6Ci0JCWlteF9kcm1fc2V0X2J1c19jb25maWcoZW5j b2RlciwgTUVESUFfQlVTX0ZNVF9HQlI4ODhfMVgyNCwKLQkJCQkgICAgICAgdHZlLT5oc3luY19w aW4sIHR2ZS0+dnN5bmNfcGluLAotCQkJCSAgICAgICBEUk1fQlVTX0ZMQUdfREVfSElHSCB8Ci0J CQkJICAgICAgIERSTV9CVVNfRkxBR19QSVhEQVRBX05FR0VER0UpOwotCQlicmVhazsKLQljYXNl IFRWRV9NT0RFX1RWT1VUOgotCQlpbXhfZHJtX3NldF9idXNfZm9ybWF0KGVuY29kZXIsIE1FRElB X0JVU19GTVRfWVVWOF8xWDI0KTsKLQkJYnJlYWs7Ci0JfQotfQotCiBzdGF0aWMgdm9pZCBpbXhf dHZlX2VuY29kZXJfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAogCQkJCSAg ICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm9yaWdfbW9kZSwKIAkJCQkgICAgIHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlKQogewotCXN0cnVjdCBpbXhfdHZlICp0dmUgPSBlbmNfdG9f dHZlKGVuY29kZXIpOworCXN0cnVjdCBpbXhfZHJtX2VuY29kZXIgKmlteF9lbmNvZGVyID0gZW5j X3RvX2lteF9lbmMoZW5jb2Rlcik7CisJc3RydWN0IGlteF90dmUgKnR2ZSA9IGlteF9lbmNfdG9f dHZlKGlteF9lbmNvZGVyKTsKIAl1bnNpZ25lZCBsb25nIHJvdW5kZWRfcmF0ZTsKIAl1bnNpZ25l ZCBsb25nIHJhdGU7CiAJaW50IGRpdiA9IDE7CkBAIC0zNDQsMTQgKzMyNSwxNiBAQCBzdGF0aWMg dm9pZCBpbXhfdHZlX2VuY29kZXJfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy LAogCiBzdGF0aWMgdm9pZCBpbXhfdHZlX2VuY29kZXJfY29tbWl0KHN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlcikKIHsKLQlzdHJ1Y3QgaW14X3R2ZSAqdHZlID0gZW5jX3RvX3R2ZShlbmNvZGVy KTsKKwlzdHJ1Y3QgaW14X2RybV9lbmNvZGVyICppbXhfZW5jb2RlciA9IGVuY190b19pbXhfZW5j KGVuY29kZXIpOworCXN0cnVjdCBpbXhfdHZlICp0dmUgPSBpbXhfZW5jX3RvX3R2ZShpbXhfZW5j b2Rlcik7CiAKIAl0dmVfZW5hYmxlKHR2ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGlteF90dmVfZW5j b2Rlcl9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIHsKLQlzdHJ1Y3QgaW14 X3R2ZSAqdHZlID0gZW5jX3RvX3R2ZShlbmNvZGVyKTsKKwlzdHJ1Y3QgaW14X2RybV9lbmNvZGVy ICppbXhfZW5jb2RlciA9IGVuY190b19pbXhfZW5jKGVuY29kZXIpOworCXN0cnVjdCBpbXhfdHZl ICp0dmUgPSBpbXhfZW5jX3RvX3R2ZShpbXhfZW5jb2Rlcik7CiAKIAl0dmVfZGlzYWJsZSh0dmUp OwogfQpAQCAtMzc4LDcgKzM2MSw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJf ZnVuY3MgaW14X3R2ZV9lbmNvZGVyX2Z1bmNzID0gewogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9lbmNvZGVyX2hlbHBlcl9mdW5jcyBpbXhfdHZlX2VuY29kZXJfaGVscGVyX2Z1bmNzID0gewog CS5kcG1zID0gaW14X3R2ZV9lbmNvZGVyX2RwbXMsCi0JLnByZXBhcmUgPSBpbXhfdHZlX2VuY29k ZXJfcHJlcGFyZSwKIAkubW9kZV9zZXQgPSBpbXhfdHZlX2VuY29kZXJfbW9kZV9zZXQsCiAJLmNv bW1pdCA9IGlteF90dmVfZW5jb2Rlcl9jb21taXQsCiAJLmRpc2FibGUgPSBpbXhfdHZlX2VuY29k ZXJfZGlzYWJsZSwKQEAgLTQ5OSwxMyArNDgxLDE0IEBAIHN0YXRpYyBpbnQgaW14X3R2ZV9yZWdp c3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgaW14X3R2ZSAqdHZlKQogCWVuY29k ZXJfdHlwZSA9IHR2ZS0+bW9kZSA9PSBUVkVfTU9ERV9WR0EgPwogCQkJCURSTV9NT0RFX0VOQ09E RVJfREFDIDogRFJNX01PREVfRU5DT0RFUl9UVkRBQzsKIAotCXJldCA9IGlteF9kcm1fZW5jb2Rl cl9wYXJzZV9vZihkcm0sICZ0dmUtPmVuY29kZXIsCisJcmV0ID0gaW14X2RybV9lbmNvZGVyX3Bh cnNlX29mKGRybSwgJnR2ZS0+aW14X2VuY29kZXIuZW5jb2RlciwKIAkJCQkgICAgICAgdHZlLT5k ZXYtPm9mX25vZGUpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlkcm1fZW5jb2Rlcl9o ZWxwZXJfYWRkKCZ0dmUtPmVuY29kZXIsICZpbXhfdHZlX2VuY29kZXJfaGVscGVyX2Z1bmNzKTsK LQlkcm1fZW5jb2Rlcl9pbml0KGRybSwgJnR2ZS0+ZW5jb2RlciwgJmlteF90dmVfZW5jb2Rlcl9m dW5jcywKKwlkcm1fZW5jb2Rlcl9oZWxwZXJfYWRkKCZ0dmUtPmlteF9lbmNvZGVyLmVuY29kZXIs CisJCQkgICAgICAgJmlteF90dmVfZW5jb2Rlcl9oZWxwZXJfZnVuY3MpOworCWRybV9lbmNvZGVy X2luaXQoZHJtLCAmdHZlLT5pbXhfZW5jb2Rlci5lbmNvZGVyLCAmaW14X3R2ZV9lbmNvZGVyX2Z1 bmNzLAogCQkJIGVuY29kZXJfdHlwZSwgTlVMTCk7CiAKIAlkcm1fY29ubmVjdG9yX2hlbHBlcl9h ZGQoJnR2ZS0+Y29ubmVjdG9yLApAQCAtNTEzLDcgKzQ5Niw4IEBAIHN0YXRpYyBpbnQgaW14X3R2 ZV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgaW14X3R2ZSAqdHZlKQog CWRybV9jb25uZWN0b3JfaW5pdChkcm0sICZ0dmUtPmNvbm5lY3RvciwgJmlteF90dmVfY29ubmVj dG9yX2Z1bmNzLAogCQkJICAgRFJNX01PREVfQ09OTkVDVE9SX1ZHQSk7CiAKLQlkcm1fbW9kZV9j b25uZWN0b3JfYXR0YWNoX2VuY29kZXIoJnR2ZS0+Y29ubmVjdG9yLCAmdHZlLT5lbmNvZGVyKTsK Kwlkcm1fbW9kZV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoJnR2ZS0+Y29ubmVjdG9yLAorCQkJ CQkgICZ0dmUtPmlteF9lbmNvZGVyLmVuY29kZXIpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC01OTEs NyArNTc1LDcgQEAgc3RhdGljIGludCBpbXhfdHZlX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBz dHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCiAKIAlpZiAodHZlLT5tb2RlID09IFRW RV9NT0RFX1ZHQSkgewogCQlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImZzbCxoc3lu Yy1waW4iLAotCQkJCQkgICAmdHZlLT5oc3luY19waW4pOworCQkJCQkgICAmdHZlLT5pbXhfZW5j b2Rlci5kaV9oc3luY19waW4pOwogCiAJCWlmIChyZXQgPCAwKSB7CiAJCQlkZXZfZXJyKGRldiwg ImZhaWxlZCB0byBnZXQgdnN5bmMgcGluXG4iKTsKQEAgLTU5OSwxMiArNTgzLDE0IEBAIHN0YXRp YyBpbnQgaW14X3R2ZV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFz dGVyLCB2b2lkICpkYXRhKQogCQl9CiAKIAkJcmV0IHw9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5w LCAiZnNsLHZzeW5jLXBpbiIsCi0JCQkJCSAgICAmdHZlLT52c3luY19waW4pOworCQkJCQkgICAg JnR2ZS0+aW14X2VuY29kZXIuZGlfdnN5bmNfcGluKTsKIAogCQlpZiAocmV0IDwgMCkgewogCQkJ ZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IHZzeW5jIHBpblxuIik7CiAJCQlyZXR1cm4gcmV0 OwogCQl9CisKKwkJdHZlLT5pbXhfZW5jb2Rlci5idXNfZm9ybWF0ID0gTUVESUFfQlVTX0ZNVF9H QlI4ODhfMVgyNDsKIAl9CiAKIAlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9S RVNPVVJDRV9NRU0sIDApOwpAQCAtNjkzLDcgKzY3OSw3IEBAIHN0YXRpYyB2b2lkIGlteF90dmVf dW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLAogCXN0cnVj dCBpbXhfdHZlICp0dmUgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKIAogCXR2ZS0+Y29ubmVjdG9y LmZ1bmNzLT5kZXN0cm95KCZ0dmUtPmNvbm5lY3Rvcik7Ci0JdHZlLT5lbmNvZGVyLmZ1bmNzLT5k ZXN0cm95KCZ0dmUtPmVuY29kZXIpOworCXR2ZS0+aW14X2VuY29kZXIuZW5jb2Rlci5mdW5jcy0+ ZGVzdHJveSgmdHZlLT5pbXhfZW5jb2Rlci5lbmNvZGVyKTsKIAogCWlmICghSVNfRVJSKHR2ZS0+ ZGFjX3JlZykpCiAJCXJlZ3VsYXRvcl9kaXNhYmxlKHR2ZS0+ZGFjX3JlZyk7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLWNydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgv aXB1djMtY3J0Yy5jCmluZGV4IDdkZjUxZTguLjdmNDQ3NWExIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaW14L2lwdXYzLWNydGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYz LWNydGMuYwpAQCAtNjIsMTUgKzYyLDEwIEBAIHN0cnVjdCBpcHVfY3J0YyB7CiAKIAlzdHJ1Y3Qg aXB1X2RjCQkqZGM7CiAJc3RydWN0IGlwdV9kaQkJKmRpOwotCWludAkJCWVuYWJsZWQ7CiAJZW51 bSBpcHVfZmxpcF9zdGF0dXMJZmxpcF9zdGF0ZTsKIAlzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAq ZmxpcF9xdWV1ZTsKIAlzdHJ1Y3QgaXB1X2ZsaXBfd29yawkqZmxpcF93b3JrOwogCWludAkJCWly cTsKLQl1MzIJCQlidXNfZm9ybWF0OwotCXUzMgkJCWJ1c19mbGFnczsKLQlpbnQJCQlkaV9oc3lu Y19waW47Ci0JaW50CQkJZGlfdnN5bmNfcGluOwogfTsKIAogI2RlZmluZSB0b19pcHVfY3J0Yyh4 KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGlwdV9jcnRjLCBiYXNlKQpAQCAtNzksMTggKzc0LDkg QEAgc3RhdGljIHZvaWQgaXB1X2NydGNfZW5hYmxlKHN0cnVjdCBpcHVfY3J0YyAqaXB1X2NydGMp CiB7CiAJc3RydWN0IGlwdV9zb2MgKmlwdSA9IGRldl9nZXRfZHJ2ZGF0YShpcHVfY3J0Yy0+ZGV2 LT5wYXJlbnQpOwogCi0JaWYgKGlwdV9jcnRjLT5lbmFibGVkKQotCQlyZXR1cm47Ci0KIAlpcHVf ZGNfZW5hYmxlKGlwdSk7CiAJaXB1X2RjX2VuYWJsZV9jaGFubmVsKGlwdV9jcnRjLT5kYyk7CiAJ aXB1X2RpX2VuYWJsZShpcHVfY3J0Yy0+ZGkpOwotCWlwdV9jcnRjLT5lbmFibGVkID0gMTsKLQot CS8qCi0JICogSW4gb3JkZXIgbm90IHRvIGJlIHdhcm5lZCBvbiBlbmFibGluZyB2YmxhbmsgZmFp bHVyZSwKLQkgKiB3ZSBzaG91bGQgY2FsbCBkcm1fY3J0Y192Ymxhbmtfb24oKSBhZnRlciAtPmVu YWJsZWQgaXMgc2V0IHRvIDEuCi0JICovCiAJZHJtX2NydGNfdmJsYW5rX29uKCZpcHVfY3J0Yy0+ YmFzZSk7CiB9CiAKQEAgLTk4LDE0ICs4NCw5IEBAIHN0YXRpYyB2b2lkIGlwdV9jcnRjX2Rpc2Fi bGUoc3RydWN0IGlwdV9jcnRjICppcHVfY3J0YykKIHsKIAlzdHJ1Y3QgaXB1X3NvYyAqaXB1ID0g ZGV2X2dldF9kcnZkYXRhKGlwdV9jcnRjLT5kZXYtPnBhcmVudCk7CiAKLQlpZiAoIWlwdV9jcnRj LT5lbmFibGVkKQotCQlyZXR1cm47Ci0KIAlpcHVfZGNfZGlzYWJsZV9jaGFubmVsKGlwdV9jcnRj LT5kYyk7CiAJaXB1X2RpX2Rpc2FibGUoaXB1X2NydGMtPmRpKTsKIAlpcHVfZGNfZGlzYWJsZShp cHUpOwotCWlwdV9jcnRjLT5lbmFibGVkID0gMDsKLQogCWRybV9jcnRjX3ZibGFua19vZmYoJmlw dV9jcnRjLT5iYXNlKTsKIH0KIApAQCAtMjM0LDcgKzIxNSw3IEBAIHB1dF92Ymxhbms6CiB9CiAK IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3MgaXB1X2NydGNfZnVuY3MgPSB7Ci0J LnNldF9jb25maWcgPSBkcm1fY3J0Y19oZWxwZXJfc2V0X2NvbmZpZywKKwkuc2V0X2NvbmZpZyA9 IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcsCiAJLmRlc3Ryb3kgPSBkcm1fY3J0Y19jbGVh bnVwLAogCS5wYWdlX2ZsaXAgPSBpcHVfcGFnZV9mbGlwLAogCS5yZXNldCA9IGRybV9hdG9taWNf aGVscGVyX2NydGNfcmVzZXQsCkBAIC0zMTQsNiArMjk1LDExIEBAIHN0YXRpYyB2b2lkIGlwdV9j cnRjX2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiBzdGF0aWMgaW50IGlwdV9jcnRjX2F0 b21pY19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJIHN0cnVjdCBkcm1fY3J0Y19z dGF0ZSAqc3RhdGUpCiB7CisJdTMyIHByaW1hcnlfcGxhbmVfbWFzayA9IDEgPDwgZHJtX3BsYW5l X2luZGV4KGNydGMtPnByaW1hcnkpOworCisJaWYgKHN0YXRlLT5hY3RpdmUgJiYgKHByaW1hcnlf cGxhbmVfbWFzayAmIHN0YXRlLT5wbGFuZV9tYXNrKSA9PSAwKQorCQlyZXR1cm4gLUVJTlZBTDsK KwogCXJldHVybiAwOwogfQogCkBAIC0zMjEsNiArMzA3LDcgQEAgc3RhdGljIHZvaWQgaXB1X2Ny dGNfbW9kZV9zZXRfbm9mYihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7CiAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGNydGMtPmRldjsKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7CisJ c3RydWN0IGlteF9kcm1fZW5jb2RlciAqaW14X2VuY29kZXIgPSBOVUxMOwogCXN0cnVjdCBpcHVf Y3J0YyAqaXB1X2NydGMgPSB0b19pcHVfY3J0YyhjcnRjKTsKIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbW9kZSA9ICZjcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsKIAlzdHJ1Y3QgaXB1X2Rp X3NpZ25hbF9jZmcgc2lnX2NmZyA9IHt9OwpAQCAtMzMxLDkgKzMxOCwxMiBAQCBzdGF0aWMgdm9p ZCBpcHVfY3J0Y19tb2RlX3NldF9ub2ZiKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlkZXZfZGJn KGlwdV9jcnRjLT5kZXYsICIlczogbW9kZS0+dmRpc3BsYXk6ICVkXG4iLCBfX2Z1bmNfXywKIAkJ CW1vZGUtPnZkaXNwbGF5KTsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnkoZW5jb2RlciwgJmRldi0+ bW9kZV9jb25maWcuZW5jb2Rlcl9saXN0LCBoZWFkKQotCQlpZiAoZW5jb2Rlci0+Y3J0YyA9PSBj cnRjKQorCWxpc3RfZm9yX2VhY2hfZW50cnkoZW5jb2RlciwgJmRldi0+bW9kZV9jb25maWcuZW5j b2Rlcl9saXN0LCBoZWFkKSB7CisJCWlmIChlbmNvZGVyLT5jcnRjID09IGNydGMpIHsKIAkJCWVu Y29kZXJfdHlwZXMgfD0gQklUKGVuY29kZXItPmVuY29kZXJfdHlwZSk7CisJCQlpbXhfZW5jb2Rl ciA9IGVuY190b19pbXhfZW5jKGVuY29kZXIpOworCQl9CisJfQogCiAJZGV2X2RiZyhpcHVfY3J0 Yy0+ZGV2LCAiJXM6IGF0dGFjaGVkIHRvIGVuY29kZXIgdHlwZXMgMHglbHhcbiIsCiAJCV9fZnVu Y19fLCBlbmNvZGVyX3R5cGVzKTsKQEAgLTM1MSwyNyArMzQxLDI2IEBAIHN0YXRpYyB2b2lkIGlw dV9jcnRjX21vZGVfc2V0X25vZmIoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCWVsc2UKIAkJc2ln X2NmZy5jbGtmbGFncyA9IDA7CiAKLQlzaWdfY2ZnLmVuYWJsZV9wb2wgPSAhKGlwdV9jcnRjLT5i dXNfZmxhZ3MgJiBEUk1fQlVTX0ZMQUdfREVfTE9XKTsKKwlzaWdfY2ZnLmVuYWJsZV9wb2wgPSAh KGlteF9lbmNvZGVyLT5idXNfZmxhZ3MgJiBEUk1fQlVTX0ZMQUdfREVfTE9XKTsKIAkvKiBEZWZh dWx0IHRvIGRyaXZpbmcgcGl4ZWwgZGF0YSBvbiBuZWdhdGl2ZSBjbG9jayBlZGdlcyAqLwotCXNp Z19jZmcuY2xrX3BvbCA9ICEhKGlwdV9jcnRjLT5idXNfZmxhZ3MgJgorCXNpZ19jZmcuY2xrX3Bv bCA9ICEhKGlteF9lbmNvZGVyLT5idXNfZmxhZ3MgJgogCQkJICAgICBEUk1fQlVTX0ZMQUdfUElY REFUQV9QT1NFREdFKTsKLQlzaWdfY2ZnLmJ1c19mb3JtYXQgPSBpcHVfY3J0Yy0+YnVzX2Zvcm1h dDsKKwlzaWdfY2ZnLmJ1c19mb3JtYXQgPSBpbXhfZW5jb2Rlci0+YnVzX2Zvcm1hdDsKIAlzaWdf Y2ZnLnZfdG9faF9zeW5jID0gMDsKLQlzaWdfY2ZnLmhzeW5jX3BpbiA9IGlwdV9jcnRjLT5kaV9o c3luY19waW47Ci0Jc2lnX2NmZy52c3luY19waW4gPSBpcHVfY3J0Yy0+ZGlfdnN5bmNfcGluOwor CXNpZ19jZmcuaHN5bmNfcGluID0gaW14X2VuY29kZXItPmRpX2hzeW5jX3BpbjsKKwlzaWdfY2Zn LnZzeW5jX3BpbiA9IGlteF9lbmNvZGVyLT5kaV92c3luY19waW47CiAKIAlkcm1fZGlzcGxheV9t b2RlX3RvX3ZpZGVvbW9kZShtb2RlLCAmc2lnX2NmZy5tb2RlKTsKIAogCWlwdV9kY19pbml0X3N5 bmMoaXB1X2NydGMtPmRjLCBpcHVfY3J0Yy0+ZGksCiAJCQkgbW9kZS0+ZmxhZ3MgJiBEUk1fTU9E RV9GTEFHX0lOVEVSTEFDRSwKLQkJCSBpcHVfY3J0Yy0+YnVzX2Zvcm1hdCwgbW9kZS0+aGRpc3Bs YXkpOworCQkJIGlteF9lbmNvZGVyLT5idXNfZm9ybWF0LCBtb2RlLT5oZGlzcGxheSk7CiAJaXB1 X2RpX2luaXRfc3luY19wYW5lbChpcHVfY3J0Yy0+ZGksICZzaWdfY2ZnKTsKIH0KIAogc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgaXB1X2hlbHBlcl9mdW5jcyA9IHsK IAkuZHBtcyA9IGlwdV9jcnRjX2RwbXMsCiAJLm1vZGVfZml4dXAgPSBpcHVfY3J0Y19tb2RlX2Zp eHVwLAotCS5tb2RlX3NldCA9IGRybV9oZWxwZXJfY3J0Y19tb2RlX3NldCwKIAkubW9kZV9zZXRf bm9mYiA9IGlwdV9jcnRjX21vZGVfc2V0X25vZmIsCiAJLnByZXBhcmUgPSBpcHVfY3J0Y19wcmVw YXJlLAogCS5jb21taXQgPSBpcHVfY3J0Y19jb21taXQsCkBAIC0zODIsMTQgKzM3MSw2IEBAIHN0 YXRpYyBpbnQgaXB1X2VuYWJsZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0 cnVjdCBpcHVfY3J0YyAqaXB1X2NydGMgPSB0b19pcHVfY3J0YyhjcnRjKTsKIAotCS8qCi0JICog LT5jb21taXQgaXMgZG9uZSBhZnRlciAtPm1vZGVfc2V0IGluIGRybV9jcnRjX2hlbHBlcl9zZXRf bW9kZSgpLAotCSAqIHNvIHdhaXRpbmcgZm9yIHZibGFuayBpbiBkcm1fcGxhbmVfaGVscGVyX2Nv bW1pdCgpIHdpbGwgdGltZW91dC4KLQkgKiBDaGVjayB0aGUgc3RhdGUgaGVyZSB0byBhdm9pZCB0 aGUgd2FpdGluZy4KLQkgKi8KLQlpZiAoIWlwdV9jcnRjLT5lbmFibGVkKQotCQlyZXR1cm4gLUVJ TlZBTDsKLQogCWVuYWJsZV9pcnEoaXB1X2NydGMtPmlycSk7CiAKIAlyZXR1cm4gMDsKQEAgLTQw MiwyMyArMzgzLDkgQEAgc3RhdGljIHZvaWQgaXB1X2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKIAlkaXNhYmxlX2lycV9ub3N5bmMoaXB1X2NydGMtPmlycSk7CiB9CiAKLXN0 YXRpYyBpbnQgaXB1X3NldF9pbnRlcmZhY2VfcGl4X2ZtdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMs Ci0JCXUzMiBidXNfZm9ybWF0LCBpbnQgaHN5bmNfcGluLCBpbnQgdnN5bmNfcGluLCB1MzIgYnVz X2ZsYWdzKQotewotCXN0cnVjdCBpcHVfY3J0YyAqaXB1X2NydGMgPSB0b19pcHVfY3J0YyhjcnRj KTsKLQotCWlwdV9jcnRjLT5idXNfZm9ybWF0ID0gYnVzX2Zvcm1hdDsKLQlpcHVfY3J0Yy0+YnVz X2ZsYWdzID0gYnVzX2ZsYWdzOwotCWlwdV9jcnRjLT5kaV9oc3luY19waW4gPSBoc3luY19waW47 Ci0JaXB1X2NydGMtPmRpX3ZzeW5jX3BpbiA9IHZzeW5jX3BpbjsKLQotCXJldHVybiAwOwotfQot CiBzdGF0aWMgY29uc3Qgc3RydWN0IGlteF9kcm1fY3J0Y19oZWxwZXJfZnVuY3MgaXB1X2NydGNf aGVscGVyX2Z1bmNzID0gewogCS5lbmFibGVfdmJsYW5rID0gaXB1X2VuYWJsZV92YmxhbmssCiAJ LmRpc2FibGVfdmJsYW5rID0gaXB1X2Rpc2FibGVfdmJsYW5rLAotCS5zZXRfaW50ZXJmYWNlX3Bp eF9mbXQgPSBpcHVfc2V0X2ludGVyZmFjZV9waXhfZm10LAogCS5jcnRjX2Z1bmNzID0gJmlwdV9j cnRjX2Z1bmNzLAogCS5jcnRjX2hlbHBlcl9mdW5jcyA9ICZpcHVfaGVscGVyX2Z1bmNzLAogfTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvaXB1djMtcGxhbmUuYyBiL2RyaXZlcnMv Z3B1L2RybS9pbXgvaXB1djMtcGxhbmUuYwppbmRleCBmYzFmZjdjLi43OWNmZmY1IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLXBsYW5lLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2lteC9pcHV2My1wbGFuZS5jCkBAIC0xNCw2ICsxNCw3IEBACiAgKi8KIAogI2luY2x1ZGUg PGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KICNpbmNsdWRlIDxkcm0v ZHJtX2F0b21pY19oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4K ICNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+CkBAIC0zNzQsMzEgKzM3NSwzMSBA QCBzdGF0aWMgaW50IGlwdV9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCiAJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlID0gcGxhbmUtPnN0YXRlOwog CXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYg PSBwbGFuZS0+ZGV2LT5kZXY7Ci0Jc3RydWN0IGRybV9jcnRjICpjcnRjOwogCXN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiID0gc3RhdGUtPmZiOwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9s ZF9mYiA9IG9sZF9zdGF0ZS0+ZmI7CiAJdW5zaWduZWQgbG9uZyBlYmEsIHVibywgdmJvLCBvbGRf dWJvLCBvbGRfdmJvOwogCiAJLyogT2sgdG8gZGlzYWJsZSAqLwogCWlmICghZmIpCi0JCXJldHVy biBvbGRfZmIgPyAwIDogLUVJTlZBTDsKKwkJcmV0dXJuIDA7CisKKwlpZiAoIXN0YXRlLT5jcnRj KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWNydGNfc3RhdGUgPQorCQlkcm1fYXRvbWljX2dldF9l eGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLT5zdGF0ZSwgc3RhdGUtPmNydGMpOworCWlmIChXQVJO X09OKCFjcnRjX3N0YXRlKSkKKwkJcmV0dXJuIC1FSU5WQUw7CiAKIAkvKiBDUlRDIHNob3VsZCBi ZSBlbmFibGVkICovCi0JZHJtX2Zvcl9lYWNoX2NydGMoY3J0YywgcGxhbmUtPmRldikgewotCQlp ZiAoZHJtX2NydGNfbWFzayhjcnRjKSA9PSBwbGFuZS0+cG9zc2libGVfY3J0Y3MpIHsKLQkJCWlm ICghY3J0Yy0+ZW5hYmxlZCkKLQkJCQlyZXR1cm4gLUVJTlZBTDsKLQkJCWJyZWFrOwotCQl9Ci0J fQorCWlmICghY3J0Y19zdGF0ZS0+ZW5hYmxlKQorCQlyZXR1cm4gLUVJTlZBTDsKIAogCS8qIG5v IHNjYWxpbmcgKi8KIAlpZiAoc3RhdGUtPnNyY193ID4+IDE2ICE9IHN0YXRlLT5jcnRjX3cgfHwK IAkgICAgc3RhdGUtPnNyY19oID4+IDE2ICE9IHN0YXRlLT5jcnRjX2gpCiAJCXJldHVybiAtRUlO VkFMOwogCi0JY3J0Y19zdGF0ZSA9IHN0YXRlLT5jcnRjLT5zdGF0ZTsKLQogCXN3aXRjaCAocGxh bmUtPnR5cGUpIHsKIAljYXNlIERSTV9QTEFORV9UWVBFX1BSSU1BUlk6CiAJCS8qIGZ1bGwgcGxh bmUgZG9lc24ndCBzdXBwb3J0IHBhcnRpYWwgb2ZmIHNjcmVlbiAqLwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2lteC9wYXJhbGxlbC1kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaW14 L3BhcmFsbGVsLWRpc3BsYXkuYwppbmRleCA5ZmU4OGM5Li43Mzc0ZDgyIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaW14L3BhcmFsbGVsLWRpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaW14L3BhcmFsbGVsLWRpc3BsYXkuYwpAQCAtMjcsMTUgKzI3LDE1IEBACiAjaW5jbHVkZSAi aW14LWRybS5oIgogCiAjZGVmaW5lIGNvbl90b19pbXhwZCh4KSBjb250YWluZXJfb2YoeCwgc3Ry dWN0IGlteF9wYXJhbGxlbF9kaXNwbGF5LCBjb25uZWN0b3IpCi0jZGVmaW5lIGVuY190b19pbXhw ZCh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGlteF9wYXJhbGxlbF9kaXNwbGF5LCBlbmNvZGVy KQorI2RlZmluZSBpbXhfZW5jX3RvX2lteHBkKHgpCVwKKwkJY29udGFpbmVyX29mKHgsIHN0cnVj dCBpbXhfcGFyYWxsZWxfZGlzcGxheSwgaW14X2VuY29kZXIpCiAKIHN0cnVjdCBpbXhfcGFyYWxs ZWxfZGlzcGxheSB7CiAJc3RydWN0IGRybV9jb25uZWN0b3IgY29ubmVjdG9yOwotCXN0cnVjdCBk cm1fZW5jb2RlciBlbmNvZGVyOworCXN0cnVjdCBpbXhfZHJtX2VuY29kZXIgaW14X2VuY29kZXI7 CiAJc3RydWN0IGRldmljZSAqZGV2OwogCXZvaWQgKmVkaWQ7CiAJaW50IGVkaWRfbGVuOwotCXUz MiBidXNfZm9ybWF0OwogCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIG1vZGU7CiAJc3RydWN0IGRy bV9wYW5lbCAqcGFuZWw7CiB9OwpAQCAtNTcsOCArNTcsOSBAQCBzdGF0aWMgaW50IGlteF9wZF9j b25uZWN0b3JfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiAJCXN0 cnVjdCBkcm1fZGlzcGxheV9pbmZvICpkaSA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mbzsKIAog CQludW1fbW9kZXMgPSBpbXhwZC0+cGFuZWwtPmZ1bmNzLT5nZXRfbW9kZXMoaW14cGQtPnBhbmVs KTsKLQkJaWYgKCFpbXhwZC0+YnVzX2Zvcm1hdCAmJiBkaS0+bnVtX2J1c19mb3JtYXRzKQotCQkJ aW14cGQtPmJ1c19mb3JtYXQgPSBkaS0+YnVzX2Zvcm1hdHNbMF07CisJCWlmICghaW14cGQtPmlt eF9lbmNvZGVyLmJ1c19mb3JtYXQgJiYgZGktPm51bV9idXNfZm9ybWF0cykKKwkJCWlteHBkLT5p bXhfZW5jb2Rlci5idXNfZm9ybWF0ID0gZGktPmJ1c19mb3JtYXRzWzBdOworCQlpbXhwZC0+aW14 X2VuY29kZXIuYnVzX2ZsYWdzID0gZGktPmJ1c19mbGFnczsKIAkJaWYgKG51bV9tb2RlcyA+IDAp CiAJCQlyZXR1cm4gbnVtX21vZGVzOwogCX0KQEAgLTg4LDEyICs4OSwxMyBAQCBzdGF0aWMgc3Ry dWN0IGRybV9lbmNvZGVyICppbXhfcGRfY29ubmVjdG9yX2Jlc3RfZW5jb2RlcigKIHsKIAlzdHJ1 Y3QgaW14X3BhcmFsbGVsX2Rpc3BsYXkgKmlteHBkID0gY29uX3RvX2lteHBkKGNvbm5lY3Rvcik7 CiAKLQlyZXR1cm4gJmlteHBkLT5lbmNvZGVyOworCXJldHVybiAmaW14cGQtPmlteF9lbmNvZGVy LmVuY29kZXI7CiB9CiAKIHN0YXRpYyB2b2lkIGlteF9wZF9lbmNvZGVyX2RwbXMoc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyLCBpbnQgbW9kZSkKIHsKLQlzdHJ1Y3QgaW14X3BhcmFsbGVsX2Rp c3BsYXkgKmlteHBkID0gZW5jX3RvX2lteHBkKGVuY29kZXIpOworCXN0cnVjdCBpbXhfZHJtX2Vu Y29kZXIgKmlteF9lbmNvZGVyID0gZW5jX3RvX2lteF9lbmMoZW5jb2Rlcik7CisJc3RydWN0IGlt eF9wYXJhbGxlbF9kaXNwbGF5ICppbXhwZCA9IGlteF9lbmNfdG9faW14cGQoaW14X2VuY29kZXIp OwogCiAJaWYgKG1vZGUgIT0gRFJNX01PREVfRFBNU19PTikKIAkJZHJtX3BhbmVsX2Rpc2FibGUo aW14cGQtPnBhbmVsKTsKQEAgLTEwMSwxNiArMTAzLDEwIEBAIHN0YXRpYyB2b2lkIGlteF9wZF9l bmNvZGVyX2RwbXMoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLCBpbnQgbW9kZSkKIAkJZHJt X3BhbmVsX2VuYWJsZShpbXhwZC0+cGFuZWwpOwogfQogCi1zdGF0aWMgdm9pZCBpbXhfcGRfZW5j b2Rlcl9wcmVwYXJlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKLXsKLQlzdHJ1Y3QgaW14 X3BhcmFsbGVsX2Rpc3BsYXkgKmlteHBkID0gZW5jX3RvX2lteHBkKGVuY29kZXIpOwotCWlteF9k cm1fc2V0X2J1c19jb25maWcoZW5jb2RlciwgaW14cGQtPmJ1c19mb3JtYXQsIDIsIDMsCi0JCQkg ICAgICAgaW14cGQtPmNvbm5lY3Rvci5kaXNwbGF5X2luZm8uYnVzX2ZsYWdzKTsKLX0KLQogc3Rh dGljIHZvaWQgaW14X3BkX2VuY29kZXJfY29tbWl0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl cikKIHsKLQlzdHJ1Y3QgaW14X3BhcmFsbGVsX2Rpc3BsYXkgKmlteHBkID0gZW5jX3RvX2lteHBk KGVuY29kZXIpOworCXN0cnVjdCBpbXhfZHJtX2VuY29kZXIgKmlteF9lbmNvZGVyID0gZW5jX3Rv X2lteF9lbmMoZW5jb2Rlcik7CisJc3RydWN0IGlteF9wYXJhbGxlbF9kaXNwbGF5ICppbXhwZCA9 IGlteF9lbmNfdG9faW14cGQoaW14X2VuY29kZXIpOwogCiAJZHJtX3BhbmVsX3ByZXBhcmUoaW14 cGQtPnBhbmVsKTsKIAlkcm1fcGFuZWxfZW5hYmxlKGlteHBkLT5wYW5lbCk7CkBAIC0xMjQsNyAr MTIwLDggQEAgc3RhdGljIHZvaWQgaW14X3BkX2VuY29kZXJfbW9kZV9zZXQoc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyLAogCiBzdGF0aWMgdm9pZCBpbXhfcGRfZW5jb2Rlcl9kaXNhYmxlKHN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIHsKLQlzdHJ1Y3QgaW14X3BhcmFsbGVsX2Rpc3Bs YXkgKmlteHBkID0gZW5jX3RvX2lteHBkKGVuY29kZXIpOworCXN0cnVjdCBpbXhfZHJtX2VuY29k ZXIgKmlteF9lbmNvZGVyID0gZW5jX3RvX2lteF9lbmMoZW5jb2Rlcik7CisJc3RydWN0IGlteF9w YXJhbGxlbF9kaXNwbGF5ICppbXhwZCA9IGlteF9lbmNfdG9faW14cGQoaW14X2VuY29kZXIpOwog CiAJZHJtX3BhbmVsX2Rpc2FibGUoaW14cGQtPnBhbmVsKTsKIAlkcm1fcGFuZWxfdW5wcmVwYXJl KGlteHBkLT5wYW5lbCk7CkBAIC0xNTEsNyArMTQ4LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1fZW5jb2Rlcl9mdW5jcyBpbXhfcGRfZW5jb2Rlcl9mdW5jcyA9IHsKIAogc3RhdGljIGNvbnN0 IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgaW14X3BkX2VuY29kZXJfaGVscGVyX2Z1 bmNzID0gewogCS5kcG1zID0gaW14X3BkX2VuY29kZXJfZHBtcywKLQkucHJlcGFyZSA9IGlteF9w ZF9lbmNvZGVyX3ByZXBhcmUsCiAJLmNvbW1pdCA9IGlteF9wZF9lbmNvZGVyX2NvbW1pdCwKIAku bW9kZV9zZXQgPSBpbXhfcGRfZW5jb2Rlcl9tb2RlX3NldCwKIAkuZGlzYWJsZSA9IGlteF9wZF9l bmNvZGVyX2Rpc2FibGUsCkBAIC0xNjIsNyArMTU4LDcgQEAgc3RhdGljIGludCBpbXhfcGRfcmVn aXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRybSwKIHsKIAlpbnQgcmV0OwogCi0JcmV0ID0gaW14 X2RybV9lbmNvZGVyX3BhcnNlX29mKGRybSwgJmlteHBkLT5lbmNvZGVyLAorCXJldCA9IGlteF9k cm1fZW5jb2Rlcl9wYXJzZV9vZihkcm0sICZpbXhwZC0+aW14X2VuY29kZXIuZW5jb2RlciwKIAkJ CQkgICAgICAgaW14cGQtPmRldi0+b2Zfbm9kZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsK QEAgLTE3NCw5ICsxNzAsMTAgQEAgc3RhdGljIGludCBpbXhfcGRfcmVnaXN0ZXIoc3RydWN0IGRy bV9kZXZpY2UgKmRybSwKIAkgKi8KIAlpbXhwZC0+Y29ubmVjdG9yLmRwbXMgPSBEUk1fTU9ERV9E UE1TX09GRjsKIAotCWRybV9lbmNvZGVyX2hlbHBlcl9hZGQoJmlteHBkLT5lbmNvZGVyLCAmaW14 X3BkX2VuY29kZXJfaGVscGVyX2Z1bmNzKTsKLQlkcm1fZW5jb2Rlcl9pbml0KGRybSwgJmlteHBk LT5lbmNvZGVyLCAmaW14X3BkX2VuY29kZXJfZnVuY3MsCi0JCQkgRFJNX01PREVfRU5DT0RFUl9O T05FLCBOVUxMKTsKKwlkcm1fZW5jb2Rlcl9oZWxwZXJfYWRkKCZpbXhwZC0+aW14X2VuY29kZXIu ZW5jb2RlciwKKwkJCSAgICAgICAmaW14X3BkX2VuY29kZXJfaGVscGVyX2Z1bmNzKTsKKwlkcm1f ZW5jb2Rlcl9pbml0KGRybSwgJmlteHBkLT5pbXhfZW5jb2Rlci5lbmNvZGVyLAorCQkJICZpbXhf cGRfZW5jb2Rlcl9mdW5jcywgRFJNX01PREVfRU5DT0RFUl9OT05FLCBOVUxMKTsKIAogCWRybV9j b25uZWN0b3JfaGVscGVyX2FkZCgmaW14cGQtPmNvbm5lY3RvciwKIAkJCSZpbXhfcGRfY29ubmVj dG9yX2hlbHBlcl9mdW5jcyk7CkBAIC0xODYsNyArMTgzLDggQEAgc3RhdGljIGludCBpbXhfcGRf cmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRybSwKIAlpZiAoaW14cGQtPnBhbmVsKQogCQlk cm1fcGFuZWxfYXR0YWNoKGlteHBkLT5wYW5lbCwgJmlteHBkLT5jb25uZWN0b3IpOwogCi0JZHJt X21vZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKCZpbXhwZC0+Y29ubmVjdG9yLCAmaW14cGQt PmVuY29kZXIpOworCWRybV9tb2RlX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2RlcigmaW14cGQtPmNv bm5lY3RvciwKKwkJCQkJICAmaW14cGQtPmlteF9lbmNvZGVyLmVuY29kZXIpOwogCiAJcmV0dXJu IDA7CiB9CkBAIC0xOTksNiArMTk3LDcgQEAgc3RhdGljIGludCBpbXhfcGRfYmluZChzdHJ1Y3Qg ZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKIAljb25zdCB1 OCAqZWRpZHA7CiAJc3RydWN0IGlteF9wYXJhbGxlbF9kaXNwbGF5ICppbXhwZDsKIAlpbnQgcmV0 OworCXUzMiBidXNfZm9ybWF0ID0gMDsKIAljb25zdCBjaGFyICpmbXQ7CiAKIAlpbXhwZCA9IGRl dm1fa3phbGxvYyhkZXYsIHNpemVvZigqaW14cGQpLCBHRlBfS0VSTkVMKTsKQEAgLTIxMiwxNCAr MjExLDE3IEBAIHN0YXRpYyBpbnQgaW14X3BkX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1 Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCiAJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF9z dHJpbmcobnAsICJpbnRlcmZhY2UtcGl4LWZtdCIsICZmbXQpOwogCWlmICghcmV0KSB7CiAJCWlm ICghc3RyY21wKGZtdCwgInJnYjI0IikpCi0JCQlpbXhwZC0+YnVzX2Zvcm1hdCA9IE1FRElBX0JV U19GTVRfUkdCODg4XzFYMjQ7CisJCQlidXNfZm9ybWF0ID0gTUVESUFfQlVTX0ZNVF9SR0I4ODhf MVgyNDsKIAkJZWxzZSBpZiAoIXN0cmNtcChmbXQsICJyZ2I1NjUiKSkKLQkJCWlteHBkLT5idXNf Zm9ybWF0ID0gTUVESUFfQlVTX0ZNVF9SR0I1NjVfMVgxNjsKKwkJCWJ1c19mb3JtYXQgPSBNRURJ QV9CVVNfRk1UX1JHQjU2NV8xWDE2OwogCQllbHNlIGlmICghc3RyY21wKGZtdCwgImJncjY2NiIp KQotCQkJaW14cGQtPmJ1c19mb3JtYXQgPSBNRURJQV9CVVNfRk1UX1JHQjY2Nl8xWDE4OworCQkJ YnVzX2Zvcm1hdCA9IE1FRElBX0JVU19GTVRfUkdCNjY2XzFYMTg7CiAJCWVsc2UgaWYgKCFzdHJj bXAoZm10LCAibHZkczY2NiIpKQotCQkJaW14cGQtPmJ1c19mb3JtYXQgPSBNRURJQV9CVVNfRk1U X1JHQjY2Nl8xWDI0X0NQQURISTsKKwkJCWJ1c19mb3JtYXQgPSBNRURJQV9CVVNfRk1UX1JHQjY2 Nl8xWDI0X0NQQURISTsKIAl9CisJaW14cGQtPmlteF9lbmNvZGVyLmJ1c19mb3JtYXQgPSBidXNf Zm9ybWF0OworCWlteHBkLT5pbXhfZW5jb2Rlci5kaV9oc3luY19waW4gPSAyOworCWlteHBkLT5p bXhfZW5jb2Rlci5kaV92c3luY19waW4gPSAzOwogCiAJLyogcG9ydEAxIGlzIHRoZSBvdXRwdXQg cG9ydCAqLwogCWVwID0gb2ZfZ3JhcGhfZ2V0X2VuZHBvaW50X2J5X3JlZ3MobnAsIDEsIC0xKTsK QEAgLTI1Miw3ICsyNTQsNyBAQCBzdGF0aWMgdm9pZCBpbXhfcGRfdW5iaW5kKHN0cnVjdCBkZXZp Y2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLAogewogCXN0cnVjdCBpbXhfcGFyYWxsZWxf ZGlzcGxheSAqaW14cGQgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKIAotCWlteHBkLT5lbmNvZGVy LmZ1bmNzLT5kZXN0cm95KCZpbXhwZC0+ZW5jb2Rlcik7CisJaW14cGQtPmlteF9lbmNvZGVyLmVu Y29kZXIuZnVuY3MtPmRlc3Ryb3koJmlteHBkLT5pbXhfZW5jb2Rlci5lbmNvZGVyKTsKIAlpbXhw ZC0+Y29ubmVjdG9yLmZ1bmNzLT5kZXN0cm95KCZpbXhwZC0+Y29ubmVjdG9yKTsKIAogCWtmcmVl KGlteHBkLT5lZGlkKTsKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK