From owner-freebsd-mips@freebsd.org Thu Feb 4 16:59:49 2016 Return-Path: Delivered-To: freebsd-mips@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E934EA9BC49 for ; Thu, 4 Feb 2016 16:59:49 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from phabric-backend.rbsd.freebsd.org (unknown [IPv6:2607:fc50:2000:101::1bb:73]) by mx1.freebsd.org (Postfix) with ESMTP id C9A341370 for ; Thu, 4 Feb 2016 16:59:49 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by phabric-backend.rbsd.freebsd.org (Postfix, from userid 1346) id C18DC1073C3; Thu, 4 Feb 2016 16:59:49 +0000 (UTC) Date: Thu, 4 Feb 2016 16:59:49 +0000 To: freebsd-mips@freebsd.org From: "Sgalabov_gmail.com (Stanislav Galabov)" Reply-to: D5182+328+d50d24cb3b48f0f7@reviews.freebsd.org Subject: [Differential] [Updated, 745 lines] D5182: Introduce INTRNG support for MIPS Message-ID: X-Priority: 3 X-Phabricator-Sent-This-Message: Yes X-Mail-Transport-Agent: MetaMTA X-Auto-Response-Suppress: All X-Phabricator-Mail-Tags: , , Thread-Topic: D5182: Introduce INTRNG support for MIPS X-Herald-Rules: <28> X-Phabricator-Projects: <#mips> X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: Precedence: bulk In-Reply-To: References: Thread-Index: YTNiZTMzOTczYThlNTY2OTc3Njk3NGIyZTc5IFazg4U= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_c4bd241a3ff1f88809a994ccd867c7de" X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.20 List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Feb 2016 16:59:50 -0000 --b1_c4bd241a3ff1f88809a994ccd867c7de Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: 8bit Sgalabov_gmail.com updated this revision to Diff 13009. Sgalabov_gmail.com added a comment. I've updated the patch, addressing kan's comments. I'll send out a separate review for enabling bus pass on MIPS (together with enabling it for the mips_pic (intr.c) tomorrow. I'll also update the bus_space_fdt removal patch tomorrow. REPOSITORY rS FreeBSD src repository CHANGES SINCE LAST UPDATE https://reviews.freebsd.org/D5182?vs=12991&id=13009 REVISION DETAIL https://reviews.freebsd.org/D5182 AFFECTED FILES sys/conf/options.mips sys/mips/include/intr.h sys/mips/include/smp.h sys/mips/mips/exception.S sys/mips/mips/intr.c sys/mips/mips/nexus.c EMAIL PREFERENCES https://reviews.freebsd.org/settings/panel/emailpreferences/ To: Sgalabov_gmail.com, MIPS, adrian, kan Cc: skra, imp, freebsd-mips-list --b1_c4bd241a3ff1f88809a994ccd867c7de Content-Type: text/x-patch; charset=utf-8; name="D5182.13009.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D5182.13009.patch" ZGlmZiAtLWdpdCBhL3N5cy9taXBzL21pcHMvbmV4dXMuYyBiL3N5cy9taXBzL21pcHMvbmV4dXMu YwotLS0gYS9zeXMvbWlwcy9taXBzL25leHVzLmMKKysrIGIvc3lzL21pcHMvbWlwcy9uZXh1cy5j CkBAIC0zNiw2ICszNiw3IEBACiAgKiB0aGlzIGNvZGUgaW1wbGVtZW50cyB0aGUgY29yZSByZXNv dXJjZSBtYW5hZ2VycyBmb3IgaW50ZXJydXB0CiAgKiByZXF1ZXN0cyBhbmQgbWVtb3J5IGFkZHJl c3Mgc3BhY2UuCiAgKi8KKyNpbmNsdWRlICJvcHRfcGxhdGZvcm0uaCIKIAogI2luY2x1ZGUgPHN5 cy9jZGVmcy5oPgogX19GQlNESUQoIiRGcmVlQlNEJCIpOwpAQCAtNTMsMTMgKzU0LDIzIEBACiAj aW5jbHVkZSA8dm0vcG1hcC5oPgogCiAjaW5jbHVkZSA8bWFjaGluZS9idXMuaD4KLSNpbmNsdWRl IDxtYWNoaW5lL2ludHJfbWFjaGRlcC5oPgogI2luY2x1ZGUgPG1hY2hpbmUvcG1hcC5oPgogI2lu Y2x1ZGUgPG1hY2hpbmUvcmVzb3VyY2UuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3ZtcGFyYW0uaD4K IAorI2lmZGVmIE1JUFNfSU5UUk5HCisjaW5jbHVkZSA8bWFjaGluZS9pbnRyLmg+CisjZWxzZQor I2luY2x1ZGUgPG1hY2hpbmUvaW50cl9tYWNoZGVwLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgIm9w dF9wbGF0Zm9ybS5oIgogCisjaWZkZWYgRkRUCisjaW5jbHVkZSA8bWFjaGluZS9mZHQuaD4KKyNp bmNsdWRlICJvZndfYnVzX2lmLmgiCisjZW5kaWYKKwogI3VuZGVmIE5FWFVTX0RFQlVHCiAjaWZk ZWYgTkVYVVNfREVCVUcKICNkZWZpbmUgZHByaW50ZiBwcmludGYKQEAgLTEwNyw2ICsxMTgsMTkg QEAKIAkJICAgIGRyaXZlcl9pbnRyX3QgKmludHIsIHZvaWQgKmFyZywgdm9pZCAqKmNvb2tpZXAp Owogc3RhdGljIGludAluZXh1c190ZWFyZG93bl9pbnRyKGRldmljZV90LCBkZXZpY2VfdCwgc3Ry dWN0IHJlc291cmNlICosCiAJCSAgICB2b2lkICopOworI2lmZGVmIE1JUFNfSU5UUk5HCisjaWZk ZWYgU01QCitzdGF0aWMgaW50CW5leHVzX2JpbmRfaW50cihkZXZpY2VfdCwgZGV2aWNlX3QsIHN0 cnVjdCByZXNvdXJjZSAqLCBpbnQpOworI2VuZGlmCisjaWZkZWYgRkRUCitzdGF0aWMgaW50CW5l eHVzX29md19tYXBfaW50cihkZXZpY2VfdCBkZXYsIGRldmljZV90IGNoaWxkLAorCQkgICAgcGhh bmRsZV90IGlwYXJlbnQsIGludCBpY2VsbHMsIHBjZWxsX3QgKmludHIpOworI2VuZGlmCitzdGF0 aWMgaW50CW5leHVzX2Rlc2NyaWJlX2ludHIoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCwK KwkJICAgIHN0cnVjdCByZXNvdXJjZSAqaXJxLCB2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKmRl c2NyKTsKK3N0YXRpYyBpbnQJbmV4dXNfY29uZmlnX2ludHIoZGV2aWNlX3QgZGV2LCBpbnQgaXJx LCBlbnVtIGludHJfdHJpZ2dlciB0cmlnLAorCQkgICAgZW51bSBpbnRyX3BvbGFyaXR5IHBvbCk7 CisjZW5kaWYKIAogc3RhdGljIGRldmljZV9tZXRob2RfdCBuZXh1c19tZXRob2RzW10gPSB7CiAJ LyogRGV2aWNlIGludGVyZmFjZSAqLwpAQCAtMTI3LDYgKzE1MSwxNiBAQAogCURFVk1FVEhPRChi dXNfYWN0aXZhdGVfcmVzb3VyY2UsbmV4dXNfYWN0aXZhdGVfcmVzb3VyY2UpLAogCURFVk1FVEhP RChidXNfZGVhY3RpdmF0ZV9yZXNvdXJjZSwJbmV4dXNfZGVhY3RpdmF0ZV9yZXNvdXJjZSksCiAJ REVWTUVUSE9EKGJ1c19oaW50ZWRfY2hpbGQsCW5leHVzX2hpbnRlZF9jaGlsZCksCisjaWZkZWYg TUlQU19JTlRSTkcKKwlERVZNRVRIT0QoYnVzX2NvbmZpZ19pbnRyLAluZXh1c19jb25maWdfaW50 ciksCisJREVWTUVUSE9EKGJ1c19kZXNjcmliZV9pbnRyLAluZXh1c19kZXNjcmliZV9pbnRyKSwK KyNpZmRlZiBTTVAKKwlERVZNRVRIT0QoYnVzX2JpbmRfaW50ciwJbmV4dXNfYmluZF9pbnRyKSwK KyNlbmRpZgorI2lmZGVmIEZEVAorCURFVk1FVEhPRChvZndfYnVzX21hcF9pbnRyLAluZXh1c19v ZndfbWFwX2ludHIpLAorI2VuZGlmCisjZW5kaWYKIAogCXsgMCwgMCB9CiB9OwpAQCAtNDE2LDkg KzQ1MCwxNiBAQAogbmV4dXNfc2V0dXBfaW50cihkZXZpY2VfdCBkZXYsIGRldmljZV90IGNoaWxk LCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgaW50IGZsYWdzLAogICAgIGRyaXZlcl9maWx0ZXJfdCAq ZmlsdCwgZHJpdmVyX2ludHJfdCAqaW50ciwgdm9pZCAqYXJnLCB2b2lkICoqY29va2llcCkKIHsK LQlyZWdpc3Rlcl90IHM7CiAJaW50IGlycTsKIAorI2lmZGVmIE1JUFNfSU5UUk5HCisJZm9yIChp cnEgPSBybWFuX2dldF9zdGFydChyZXMpOyBpcnEgPD0gcm1hbl9nZXRfZW5kKHJlcyk7IGlycSsr KSB7CisJCWludHJfaXJxX2FkZF9oYW5kbGVyKGNoaWxkLCBmaWx0LCBpbnRyLCBhcmcsIGlycSwg ZmxhZ3MsCisJCSAgICBjb29raWVwKTsKKwl9CisjZWxzZQorCXJlZ2lzdGVyX3QgczsKKwogCXMg PSBpbnRyX2Rpc2FibGUoKTsKIAlpcnEgPSBybWFuX2dldF9zdGFydChyZXMpOwogCWlmIChpcnEg Pj0gTlVNX01JUFNfSVJRUykgewpAQCAtNDI5LDE2ICs0NzAsNTggQEAKIAljcHVfZXN0YWJsaXNo X2hhcmRpbnRyKGRldmljZV9nZXRfbmFtZXVuaXQoY2hpbGQpLCBmaWx0LCBpbnRyLCBhcmcsCiAJ ICAgIGlycSwgZmxhZ3MsIGNvb2tpZXApOwogCWludHJfcmVzdG9yZShzKTsKKyNlbmRpZgogCXJl dHVybiAoMCk7CiB9CiAKIHN0YXRpYyBpbnQKIG5leHVzX3RlYXJkb3duX2ludHIoZGV2aWNlX3Qg ZGV2LCBkZXZpY2VfdCBjaGlsZCwgc3RydWN0IHJlc291cmNlICpyLCB2b2lkICppaCkKIHsKIAor I2lmZGVmIE1JUFNfSU5UUk5HCisJcmV0dXJuIChpbnRyX2lycV9yZW1vdmVfaGFuZGxlcihjaGls ZCwgcm1hbl9nZXRfc3RhcnQociksIGloKSk7CisjZWxzZQogCXByaW50ZigiVW5pbXBsZW1lbnRl ZCAlcyBhdCAlczolZFxuIiwgX19mdW5jX18sIF9fRklMRV9fLCBfX0xJTkVfXyk7CiAJcmV0dXJu ICgwKTsKKyNlbmRpZgorfQorCisjaWZkZWYgTUlQU19JTlRSTkcKK3N0YXRpYyBpbnQKK25leHVz X2NvbmZpZ19pbnRyKGRldmljZV90IGRldiwgaW50IGlycSwgZW51bSBpbnRyX3RyaWdnZXIgdHJp ZywKKyAgICBlbnVtIGludHJfcG9sYXJpdHkgcG9sKQoreworCisJcmV0dXJuIChpbnRyX2lycV9j b25maWcoaXJxLCB0cmlnLCBwb2wpKTsKK30KKworc3RhdGljIGludAorbmV4dXNfZGVzY3JpYmVf aW50cihkZXZpY2VfdCBkZXYsIGRldmljZV90IGNoaWxkLCBzdHJ1Y3QgcmVzb3VyY2UgKmlycSwK KyAgICB2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKmRlc2NyKQoreworCisJcmV0dXJuIChpbnRy X2lycV9kZXNjcmliZShybWFuX2dldF9zdGFydChpcnEpLCBjb29raWUsIGRlc2NyKSk7Cit9CisK KyNpZmRlZiBTTVAKK3N0YXRpYyBpbnQKK25leHVzX2JpbmRfaW50cihkZXZpY2VfdCBkZXYsIGRl dmljZV90IGNoaWxkLCBzdHJ1Y3QgcmVzb3VyY2UgKmlycSwgaW50IGNwdSkKK3sKKworCXJldHVy biAoaW50cl9pcnFfYmluZChybWFuX2dldF9zdGFydChpcnEpLCBjcHUpKTsKK30KKyNlbmRpZgor CisjaWZkZWYgRkRUCitzdGF0aWMgaW50CituZXh1c19vZndfbWFwX2ludHIoZGV2aWNlX3QgZGV2 LCBkZXZpY2VfdCBjaGlsZCwgcGhhbmRsZV90IGlwYXJlbnQsIGludCBpY2VsbHMsCisgICAgcGNl bGxfdCAqaW50cikKK3sKKworCXJldHVybiAoaW50cl9mZHRfbWFwX2lycShpcGFyZW50LCBpbnRy LCBpY2VsbHMpKTsKIH0KKyNlbmRpZgorI2VuZGlmIC8qIE1JUFNfSU5UUk5HICovCiAKIHN0YXRp YyB2b2lkCiBuZXh1c19oaW50ZWRfY2hpbGQoZGV2aWNlX3QgYnVzLCBjb25zdCBjaGFyICpkbmFt ZSwgaW50IGR1bml0KQpkaWZmIC0tZ2l0IGEvc3lzL21pcHMvbWlwcy9pbnRyLmMgYi9zeXMvbWlw cy9taXBzL2ludHIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0gL2Rldi9udWxsCisrKyBiL3N5 cy9taXBzL21pcHMvaW50ci5jCkBAIC0wLDAgKzEsNDkwIEBACisvKi0KKyAqIENvcHlyaWdodCAo YykgMjAxNSBBbGV4YW5kZXIgS2FiYWV2CisgKiBDb3B5cmlnaHQgKGMpIDIwMDYgT2xla3NhbmRy IFR5bW9zaGVua28KKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA0IEp1bGkgTWFsbGV0dCA8am1h bGxldHRARnJlZUJTRC5vcmc+CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0 aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMsIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIs CisgKiAgICB3aXRob3V0IG1vZGlmaWNhdGlvbiwgaW1tZWRpYXRlbHkgYXQgdGhlIGJlZ2lubmlu ZyBvZiB0aGUgZmlsZS4KKyAqIDIuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1 c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cworICogICAgZGVyaXZlZCBmcm9tIHRo aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklC VVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09O VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElO Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP T0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV U0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFks IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB TlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lu Y2x1ZGUgPHN5cy9jZGVmcy5oPgorX19GQlNESUQoIiRGcmVlQlNEJCIpOworCisjaW5jbHVkZSAi b3B0X3BsYXRmb3JtLmgiCisjaW5jbHVkZSAib3B0X2h3cG1jX2hvb2tzLmgiCisKKyNpbmNsdWRl IDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KKyNpbmNsdWRlIDxzeXMvYnVz Lmg+CisjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgorI2luY2x1ZGUgPHN5cy9rdHIuaD4KKyNpbmNs dWRlIDxzeXMvbW9kdWxlLmg+CisjaW5jbHVkZSA8c3lzL21hbGxvYy5oPgorI2luY2x1ZGUgPHN5 cy9ybWFuLmg+CisjaW5jbHVkZSA8c3lzL3BjcHUuaD4KKyNpbmNsdWRlIDxzeXMvcHJvYy5oPgor I2luY2x1ZGUgPHN5cy9jcHVzZXQuaD4KKyNpbmNsdWRlIDxzeXMvbG9jay5oPgorI2luY2x1ZGUg PHN5cy9tdXRleC5oPgorI2luY2x1ZGUgPHN5cy9zbXAuaD4KKyNpbmNsdWRlIDxzeXMvc2NoZWQu aD4KKworI2luY2x1ZGUgPG1hY2hpbmUvYnVzLmg+CisjaW5jbHVkZSA8bWFjaGluZS9od2Z1bmMu aD4KKyNpbmNsdWRlIDxtYWNoaW5lL2ludHIuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL3NtcC5oPgor CisjaW5jbHVkZSA8ZGV2L2ZkdC9mZHRfY29tbW9uLmg+CisjaW5jbHVkZSA8ZGV2L29mdy9vcGVu ZmlybS5oPgorI2luY2x1ZGUgPGRldi9vZncvb2Z3X2J1cy5oPgorI2luY2x1ZGUgPGRldi9vZncv b2Z3X2J1c19zdWJyLmg+CisKKyNpbmNsdWRlICJwaWNfaWYuaCIKKworI2RlZmluZSBOSEFSRF9J UlFTCTYKKyNkZWZpbmUgTlNPRlRfSVJRUwkyCisjZGVmaW5lIE5SRUFMX0lSUVMJKE5IQVJEX0lS UVMgKyBOU09GVF9JUlFTKQorCitzdGF0aWMgaW50IG1pcHNfcGljX2ludHIodm9pZCAqKTsKKwor c3RydWN0IG1pcHNfcGljX3NvZnRjIHsKKwlkZXZpY2VfdAkJcGljX2RldjsKKwlzdHJ1Y3QgaW50 cl9pcnFzcmMgKglwaWNfaXJxc1tOUkVBTF9JUlFTXTsKKwlzdHJ1Y3QgbXR4CQltdXRleDsKKwl1 aW50MzJfdAkJbmlycXM7Cit9OworCitzdGF0aWMgc3RydWN0IG1pcHNfcGljX3NvZnRjICpwaWNf c2M7CisKK3N0YXRpYyBzdHJ1Y3Qgb2Z3X2NvbXBhdF9kYXRhIGNvbXBhdF9kYXRhW10gPSB7CisJ eyJtdGksY3B1LWludGVycnVwdC1jb250cm9sbGVyIiwJdHJ1ZX0sCisJe05VTEwsCQkJCQlmYWxz ZX0KK307CisKK3N0YXRpYyBpbnQKK21pcHNfcGljX3Byb2JlKGRldmljZV90IGRldikKK3sKKwor CWlmICghb2Z3X2J1c19zdGF0dXNfb2theShkZXYpKQorCQlyZXR1cm4gKEVOWElPKTsKKworCWlm ICghb2Z3X2J1c19zZWFyY2hfY29tcGF0aWJsZShkZXYsIGNvbXBhdF9kYXRhKS0+b2NkX2RhdGEp CisJCXJldHVybiAoRU5YSU8pOworCWRldmljZV9zZXRfZGVzYyhkZXYsICJNSVBTMzIgSW50ZXJy dXB0IENvbnRyb2xsZXIiKTsKKwlyZXR1cm4gKEJVU19QUk9CRV9ERUZBVUxUKTsKK30KKworc3Rh dGljIGlubGluZSB2b2lkCitwaWNfaXJxX3VubWFzayhzdHJ1Y3QgbWlwc19waWNfc29mdGMgKnNj LCB1X2ludCBpcnEpCit7CisKKwltaXBzX3dyX3N0YXR1cyhtaXBzX3JkX3N0YXR1cygpIHwgKCgx IDw8IGlycSkgPDwgOCkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3BpY19pcnFfbWFzayhz dHJ1Y3QgbWlwc19waWNfc29mdGMgKnNjLCB1X2ludCBpcnEpCit7CisKKwltaXBzX3dyX3N0YXR1 cyhtaXBzX3JkX3N0YXR1cygpICYgfigoMSA8PCBpcnEpIDw8IDgpKTsKK30KKworI2lmZGVmIFNN UAorc3RhdGljIHZvaWQKK21pcHNfcGljX2luaXRfc2Vjb25kYXJ5KGRldmljZV90IGRldikKK3sK K30KKyNlbmRpZiAvKiBTTVAgKi8KKworc3RhdGljIGlubGluZSBpbnRwdHJfdAorcGljX3hyZWYo ZGV2aWNlX3QgZGV2KQoreworI2lmZGVmIEZEVAorCXJldHVybiAoT0ZfeHJlZl9mcm9tX25vZGUo b2Z3X2J1c19nZXRfbm9kZShkZXYpKSk7CisjZWxzZQorCXJldHVybiAoMCk7CisjZW5kaWYKK30K Kworc3RhdGljIGludAorbWlwc19waWNfYXR0YWNoKGRldmljZV90IGRldikKK3sKKwlzdHJ1Y3QJ CW1pcHNfcGljX3NvZnRjICpzYzsKKwlpbnRwdHJfdAl4cmVmID0gcGljX3hyZWYoZGV2KTsKKwor CWlmIChwaWNfc2MpCisJCXJldHVybiAoRU5YSU8pOworCisJc2MgPSBkZXZpY2VfZ2V0X3NvZnRj KGRldik7CisKKwlzYy0+cGljX2RldiA9IGRldjsKKwlwaWNfc2MgPSBzYzsKKworCS8qIEluaXRp YWxpemUgbXV0ZXggKi8KKwltdHhfaW5pdCgmc2MtPm11dGV4LCAiUElDIGxvY2siLCAiIiwgTVRY X1NQSU4pOworCisJLyogU2V0IHRoZSBudW1iZXIgb2YgaW50ZXJydXB0cyAqLworCXNjLT5uaXJx cyA9IG5pdGVtcyhzYy0+cGljX2lycXMpOworCisJLyoKKwkgKiBOb3csIHdoZW4gZXZlcnl0aGlu ZyBpcyBpbml0aWFsaXplZCwgaXQncyByaWdodCB0aW1lIHRvCisJICogcmVnaXN0ZXIgaW50ZXJy dXB0IGNvbnRyb2xsZXIgdG8gaW50ZXJydXB0IGZyYW1lZm9yay4KKwkgKi8KKwlpZiAoaW50cl9w aWNfcmVnaXN0ZXIoZGV2LCB4cmVmKSAhPSAwKSB7CisJCWRldmljZV9wcmludGYoZGV2LCAiY291 bGQgbm90IHJlZ2lzdGVyIFBJQ1xuIik7CisJCWdvdG8gY2xlYW51cDsKKwl9CisKKwkvKiBDbGFp bSBvdXIgcm9vdCBjb250cm9sbGVyIHJvbGUgKi8KKwlpZiAoaW50cl9waWNfY2xhaW1fcm9vdChk ZXYsIHhyZWYsIG1pcHNfcGljX2ludHIsIHNjLCAwKSAhPSAwKSB7CisJCWRldmljZV9wcmludGYo ZGV2LCAiY291bGQgbm90IHNldCBQSUMgYXMgYSByb290XG4iKTsKKwkJaW50cl9waWNfdW5yZWdp c3RlcihkZXYsIHhyZWYpOworCQlnb3RvIGNsZWFudXA7CisJfQorCisJcmV0dXJuICgwKTsKKwor Y2xlYW51cDoKKwlyZXR1cm4oRU5YSU8pOworfQorCitpbnQKK21pcHNfcGljX2ludHIodm9pZCAq YXJnKQoreworCXN0cnVjdCBtaXBzX3BpY19zb2Z0YyAqc2MgPSBhcmc7CisJcmVnaXN0ZXJfdCBj YXVzZSwgc3RhdHVzOworCXN0cnVjdCBpbnRyX2lycXNyYyAqaXNyYzsKKwlpbnQgaSwgaW50cjsK KworCWNhdXNlID0gbWlwc19yZF9jYXVzZSgpOworCXN0YXR1cyA9IG1pcHNfcmRfc3RhdHVzKCk7 CisJaW50ciA9IChjYXVzZSAmIE1JUFNfSU5UX01BU0spID4+IDg7CisJLyoKKwkgKiBEbyBub3Qg aGFuZGxlIG1hc2tlZCBpbnRlcnJ1cHRzLiBUaGV5IHdlcmUgbWFza2VkIGJ5CisJICogcHJlX2l0 aHJlYWQgZnVuY3Rpb24gKG1pcHNfbWFza19YWFhfaW50cikgYW5kIHdpbGwgYmUKKwkgKiB1bm1h c2tlZCBvbmNlIGl0aHJlYWQgaXMgdGhyb3VnaCB3aXRoIGhhbmRsZXIKKwkgKi8KKwlpbnRyICY9 IChzdGF0dXMgJiBNSVBTX0lOVF9NQVNLKSA+PiA4OworCXdoaWxlICgoaSA9IGZscyhpbnRyKSkg IT0gMCkgeworCQlpLS07IC8qIEdldCBhIDAtb2Zmc2V0IGludGVycnVwdC4gKi8KKwkJaW50ciAm PSB+KDEgPDwgaSk7CisKKwkJaXNyYyA9IHNjLT5waWNfaXJxc1tpXTsKKwkJaWYgKGlzcmMgPT0g TlVMTCkgeworCQkJZGV2aWNlX3ByaW50ZihzYy0+cGljX2RldiwKKwkJCSAgICAiU3RyYXkgaW50 ZXJydXB0ICV1IGRldGVjdGVkXG4iLCBpKTsKKwkJCXBpY19pcnFfbWFzayhzYywgaSk7CisJCQlj b250aW51ZTsKKwkJfQorCisJCWludHJfaXJxX2Rpc3BhdGNoKGlzcmMsIGN1cnRocmVhZC0+dGRf aW50cl9mcmFtZSk7CisJfQorCisJS0FTU0VSVChpID09IDAsICgiYWxsIGludGVycnVwdHMgaGFu ZGxlZCIpKTsKKworI2lmZGVmIEhXUE1DX0hPT0tTCisJaWYgKHBtY19ob29rICYmIChQQ1BVX0dF VChjdXJ0aHJlYWQpLT50ZF9wZmxhZ3MgJiBURFBfQ0FMTENIQUlOKSkKKwkJcG1jX2hvb2soUENQ VV9HRVQoY3VydGhyZWFkKSwgUE1DX0ZOX1VTRVJfQ0FMTENIQUlOLCB0Zik7CisjZW5kaWYKKwly ZXR1cm4gKEZJTFRFUl9IQU5ETEVEKTsKK30KKworc3RhdGljIGludAorcGljX2F0dGFjaF9pc3Jj KHN0cnVjdCBtaXBzX3BpY19zb2Z0YyAqc2MsIHN0cnVjdCBpbnRyX2lycXNyYyAqaXNyYywgdV9p bnQgaXJxKQoreworCisJLyoKKwkgKiAxLiBUaGUgbGluayBiZXR3ZWVuIElTUkMgYW5kIGNvbnRy b2xsZXIgbXVzdCBiZSBzZXQgYXRvbWljYWxseS4KKwkgKiAyLiBKdXN0IGRvIHRoaW5ncyBvbmx5 IG9uY2UgaW4gcmFyZSBjYXNlIHdoZW4gY29uc3VtZXJzCisJICogICAgb2Ygc2hhcmVkIGludGVy cnVwdCBjYW1lIGhlcmUgYXQgdGhlIHNhbWUgbW9tZW50LgorCSAqLworCW10eF9sb2NrX3NwaW4o JnNjLT5tdXRleCk7CisJaWYgKHNjLT5waWNfaXJxc1tpcnFdICE9IE5VTEwpIHsKKwkJbXR4X3Vu bG9ja19zcGluKCZzYy0+bXV0ZXgpOworCQlyZXR1cm4gKHNjLT5waWNfaXJxc1tpcnFdID09IGlz cmMgPyAwIDogRUVYSVNUKTsKKwl9CisJc2MtPnBpY19pcnFzW2lycV0gPSBpc3JjOworCWlzcmMt PmlzcmNfZGF0YSA9IGlycTsKKwltdHhfdW5sb2NrX3NwaW4oJnNjLT5tdXRleCk7CisKKwlpZiAo aXJxIDwgTlNPRlRfSVJRUykKKwkJaW50cl9pcnFfc2V0X25hbWUoaXNyYywgInNpbnQldSIsIGly cSk7CisJZWxzZSBpZiAoaXJxIDwgTlJFQUxfSVJRUykKKwkJaW50cl9pcnFfc2V0X25hbWUoaXNy YywgImludCV1IiwgaXJxIC0gTlNPRlRfSVJRUyk7CisJZWxzZQorCQlwYW5pYygiSW52YWxpZCBp cnEgJXUiLCBpcnEpOworCXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBpbnQKK3BpY19kZXRhY2hf aXNyYyhzdHJ1Y3QgbWlwc19waWNfc29mdGMgKnNjLCBzdHJ1Y3QgaW50cl9pcnFzcmMgKmlzcmMs IHVfaW50IGlycSkKK3sKKworCW10eF9sb2NrX3NwaW4oJnNjLT5tdXRleCk7CisJaWYgKHNjLT5w aWNfaXJxc1tpcnFdICE9IGlzcmMpIHsKKwkJbXR4X3VubG9ja19zcGluKCZzYy0+bXV0ZXgpOwor CQlyZXR1cm4gKHNjLT5waWNfaXJxc1tpcnFdID09IE5VTEwgPyAwIDogRUlOVkFMKTsKKwl9CisJ c2MtPnBpY19pcnFzW2lycV0gPSBOVUxMOworCWlzcmMtPmlzcmNfZGF0YSA9IDA7CisJbXR4X3Vu bG9ja19zcGluKCZzYy0+bXV0ZXgpOworCisJaW50cl9pcnFfc2V0X25hbWUoaXNyYywgIiVzIiwg IiIpOworCXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBpbnQKK3BpY19pcnFfZnJvbV9uc3BjKHN0 cnVjdCBtaXBzX3BpY19zb2Z0YyAqc2MsIHVfaW50IHR5cGUsIHVfaW50IG51bSwgdV9pbnQgKmly cXApCit7CisKKwlzd2l0Y2ggKHR5cGUpIHsKKwljYXNlIElOVFJfSVJRX05TUENfUExBSU46CisJ CSppcnFwID0gbnVtOworCQlyZXR1cm4gKCppcnFwIDwgc2MtPm5pcnFzID8gMCA6IEVJTlZBTCk7 CisKKwljYXNlIElOVFJfSVJRX05TUENfU1dJOgorCQkqaXJxcCA9IG51bTsKKwkJcmV0dXJuIChu dW0gPCBOU09GVF9JUlFTID8gMCA6IEVJTlZBTCk7CisKKwljYXNlIElOVFJfSVJRX05TUENfSVJR OgorCQkqaXJxcCA9IG51bSArIE5TT0ZUX0lSUVM7CisJCXJldHVybiAobnVtIDwgTkhBUkRfSVJR UyA/IDAgOiBFSU5WQUwpOworCisJZGVmYXVsdDoKKwkJcmV0dXJuIChFSU5WQUwpOworCX0KK30K Kworc3RhdGljIGludAorcGljX21hcF9uc3BjKHN0cnVjdCBtaXBzX3BpY19zb2Z0YyAqc2MsIHN0 cnVjdCBpbnRyX2lycXNyYyAqaXNyYywgdV9pbnQgKmlycXApCit7CisJaW50IGVycm9yOworCisJ ZXJyb3IgPSBwaWNfaXJxX2Zyb21fbnNwYyhzYywgaXNyYy0+aXNyY19uc3BjX3R5cGUsIGlzcmMt PmlzcmNfbnNwY19udW0sCisJICAgIGlycXApOworCWlmIChlcnJvciAhPSAwKQorCQlyZXR1cm4g KGVycm9yKTsKKwlyZXR1cm4gKHBpY19hdHRhY2hfaXNyYyhzYywgaXNyYywgKmlycXApKTsKK30K KworI2lmZGVmIEZEVAorc3RhdGljIGludAorcGljX21hcF9mZHQoc3RydWN0IG1pcHNfcGljX3Nv ZnRjICpzYywgc3RydWN0IGludHJfaXJxc3JjICppc3JjLCB1X2ludCAqaXJxcCkKK3sKKwl1X2lu dCBpcnE7CisJaW50IGVycm9yOworCisJaXJxID0gaXNyYy0+aXNyY19jZWxsc1swXTsKKworCWlm IChpcnEgPj0gc2MtPm5pcnFzKQorCQlyZXR1cm4gKEVJTlZBTCk7CisKKwllcnJvciA9IHBpY19h dHRhY2hfaXNyYyhzYywgaXNyYywgaXJxKTsKKwlpZiAoZXJyb3IgIT0gMCkKKwkJcmV0dXJuIChl cnJvcik7CisKKwlpc3JjLT5pc3JjX25zcGNfdHlwZSA9IElOVFJfSVJRX05TUENfUExBSU47CisJ aXNyYy0+aXNyY19uc3BjX251bSA9IGlycTsKKwlpc3JjLT5pc3JjX3RyaWcgPSBJTlRSX1RSSUdH RVJfQ09ORk9STTsKKwlpc3JjLT5pc3JjX3BvbCA9IElOVFJfUE9MQVJJVFlfQ09ORk9STTsKKwor CSppcnFwID0gaXJxOworCXJldHVybiAoMCk7Cit9CisjZW5kaWYKKworc3RhdGljIGludAorbWlw c19waWNfcmVnaXN0ZXIoZGV2aWNlX3QgZGV2LCBzdHJ1Y3QgaW50cl9pcnFzcmMgKmlzcmMsIGJv b2xlYW5fdCAqaXNfcGVyY3B1KQoreworCXN0cnVjdCBtaXBzX3BpY19zb2Z0YyAqc2MgPSBkZXZp Y2VfZ2V0X3NvZnRjKGRldik7CisJdV9pbnQgaXJxOworCWludCBlcnJvcjsKKworCWlmIChpc3Jj LT5pc3JjX3R5cGUgPT0gSU5UUl9JU1JDVF9OQU1FU1BBQ0UpCisJCWVycm9yID0gcGljX21hcF9u c3BjKHNjLCBpc3JjLCAmaXJxKTsKKyNpZmRlZiBGRFQKKwllbHNlIGlmIChpc3JjLT5pc3JjX3R5 cGUgPT0gSU5UUl9JU1JDVF9GRFQpCisJCWVycm9yID0gcGljX21hcF9mZHQoc2MsIGlzcmMsICZp cnEpOworI2VuZGlmCisJZWxzZQorCQlyZXR1cm4gKEVJTlZBTCk7CisKKwlpZiAoZXJyb3IgPT0g MCkKKwkJKmlzX3BlcmNwdSA9IFRSVUU7CisJcmV0dXJuIChlcnJvcik7Cit9CisKK3N0YXRpYyB2 b2lkCittaXBzX3BpY19lbmFibGVfaW50cihkZXZpY2VfdCBkZXYsIHN0cnVjdCBpbnRyX2lycXNy YyAqaXNyYykKK3sKKworCWlmIChpc3JjLT5pc3JjX3RyaWcgPT0gSU5UUl9UUklHR0VSX0NPTkZP Uk0pCisJCWlzcmMtPmlzcmNfdHJpZyA9IElOVFJfVFJJR0dFUl9MRVZFTDsKK30KKworc3RhdGlj IHZvaWQKK21pcHNfcGljX2VuYWJsZV9zb3VyY2UoZGV2aWNlX3QgZGV2LCBzdHJ1Y3QgaW50cl9p cnFzcmMgKmlzcmMpCit7CisJc3RydWN0IG1pcHNfcGljX3NvZnRjICpzYyA9IGRldmljZV9nZXRf c29mdGMoZGV2KTsKKwl1X2ludCBpcnEgPSBpc3JjLT5pc3JjX2RhdGE7CisKKwlwaWNfaXJxX3Vu bWFzayhzYywgaXJxKTsKK30KKworc3RhdGljIHZvaWQKK21pcHNfcGljX2Rpc2FibGVfc291cmNl KGRldmljZV90IGRldiwgc3RydWN0IGludHJfaXJxc3JjICppc3JjKQoreworCXN0cnVjdCBtaXBz X3BpY19zb2Z0YyAqc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CisJdV9pbnQgaXJxID0gaXNy Yy0+aXNyY19kYXRhOworCisJcGljX2lycV9tYXNrKHNjLCBpcnEpOworfQorCitzdGF0aWMgaW50 CittaXBzX3BpY191bnJlZ2lzdGVyKGRldmljZV90IGRldiwgc3RydWN0IGludHJfaXJxc3JjICpp c3JjKQoreworCXN0cnVjdCBtaXBzX3BpY19zb2Z0YyAqc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRl dik7CisJdV9pbnQgaXJxID0gaXNyYy0+aXNyY19kYXRhOworCisJcmV0dXJuIChwaWNfZGV0YWNo X2lzcmMoc2MsIGlzcmMsIGlycSkpOworfQorCitzdGF0aWMgdm9pZAorbWlwc19waWNfcHJlX2l0 aHJlYWQoZGV2aWNlX3QgZGV2LCBzdHJ1Y3QgaW50cl9pcnFzcmMgKmlzcmMpCit7CisKKwltaXBz X3BpY19kaXNhYmxlX3NvdXJjZShkZXYsIGlzcmMpOworfQorCitzdGF0aWMgdm9pZAorbWlwc19w aWNfcG9zdF9pdGhyZWFkKGRldmljZV90IGRldiwgc3RydWN0IGludHJfaXJxc3JjICppc3JjKQor eworCisJbWlwc19waWNfZW5hYmxlX3NvdXJjZShkZXYsIGlzcmMpOworfQorCitzdGF0aWMgdm9p ZAorbWlwc19waWNfcG9zdF9maWx0ZXIoZGV2aWNlX3QgZGV2LCBzdHJ1Y3QgaW50cl9pcnFzcmMg KmlzcmMpCit7Cit9CisKKyNpZmRlZiBTTVAKK3N0YXRpYyBpbnQKK21pcHNfcGljX2JpbmQoZGV2 aWNlX3QgZGV2LCBzdHJ1Y3QgaW50cl9pcnFzcmMgKmlzcmMpCit7CisJcmV0dXJuIChFT1BOT1RT VVBQKTsKK30KKworc3RhdGljIHZvaWQKK21pcHNfcGljX2lwaV9zZW5kKGRldmljZV90IGRldiwg c3RydWN0IGludHJfaXJxc3JjICppc3JjLCBjcHVzZXRfdCBjcHVzKQoreworfQorI2VuZGlmCisK K3N0YXRpYyBkZXZpY2VfbWV0aG9kX3QgbWlwc19waWNfbWV0aG9kc1tdID0geworCS8qIERldmlj ZSBpbnRlcmZhY2UgKi8KKwlERVZNRVRIT0QoZGV2aWNlX3Byb2JlLAkJbWlwc19waWNfcHJvYmUp LAorCURFVk1FVEhPRChkZXZpY2VfYXR0YWNoLAltaXBzX3BpY19hdHRhY2gpLAorCS8qIEludGVy cnVwdCBjb250cm9sbGVyIGludGVyZmFjZSAqLworCURFVk1FVEhPRChwaWNfZGlzYWJsZV9zb3Vy Y2UsCW1pcHNfcGljX2Rpc2FibGVfc291cmNlKSwKKwlERVZNRVRIT0QocGljX2VuYWJsZV9pbnRy LAltaXBzX3BpY19lbmFibGVfaW50ciksCisJREVWTUVUSE9EKHBpY19lbmFibGVfc291cmNlLAlt aXBzX3BpY19lbmFibGVfc291cmNlKSwKKwlERVZNRVRIT0QocGljX3Bvc3RfZmlsdGVyLAltaXBz X3BpY19wb3N0X2ZpbHRlciksCisJREVWTUVUSE9EKHBpY19wb3N0X2l0aHJlYWQsCW1pcHNfcGlj X3Bvc3RfaXRocmVhZCksCisJREVWTUVUSE9EKHBpY19wcmVfaXRocmVhZCwJbWlwc19waWNfcHJl X2l0aHJlYWQpLAorCURFVk1FVEhPRChwaWNfcmVnaXN0ZXIsCQltaXBzX3BpY19yZWdpc3Rlciks CisJREVWTUVUSE9EKHBpY191bnJlZ2lzdGVyLAltaXBzX3BpY191bnJlZ2lzdGVyKSwKKyNpZmRl ZiBTTVAKKwlERVZNRVRIT0QocGljX2JpbmQsCQltaXBzX3BpY19iaW5kKSwKKwlERVZNRVRIT0Qo cGljX2luaXRfc2Vjb25kYXJ5LAltaXBzX3BpY19pbml0X3NlY29uZGFyeSksCisJREVWTUVUSE9E KHBpY19pcGlfc2VuZCwJCW1pcHNfcGljX2lwaV9zZW5kKSwKKyNlbmRpZgorCXsgMCwgMCB9Cit9 OworCitzdGF0aWMgZHJpdmVyX3QgbWlwc19waWNfZHJpdmVyID0geworCSJtaXBzX3BpYyIsCisJ bWlwc19waWNfbWV0aG9kcywKKwlzaXplb2Yoc3RydWN0IG1pcHNfcGljX3NvZnRjKSwKK307CisK K3N0YXRpYyBkZXZjbGFzc190IG1pcHNfcGljX2RldmNsYXNzOworCitEUklWRVJfTU9EVUxFKGNw dXBpYywgb2Z3YnVzLCBtaXBzX3BpY19kcml2ZXIsIG1pcHNfcGljX2RldmNsYXNzLCAwLCAwKTsK Kwordm9pZAorY3B1X2luaXRfaW50ZXJydXB0cyh2b2lkKQoreworfQorCit2b2lkCitjcHVfZXN0 YWJsaXNoX2hhcmRpbnRyKGNvbnN0IGNoYXIgKm5hbWUsIGRyaXZlcl9maWx0ZXJfdCAqZmlsdCwK KyAgICB2b2lkICgqaGFuZGxlcikodm9pZCopLCB2b2lkICphcmcsIGludCBpcnEsIGludCBmbGFn cywgdm9pZCAqKmNvb2tpZXApCit7CisJdV9pbnQgdmVjOworCWludCByZXM7CisKKwkvKgorCSAq IFdlIGhhdmUgNiBsZXZlbHMsIGJ1dCB0aGF0cyAwIC0gNSAobm90IGluY2x1ZGluZyA2KQorCSAq LworCWlmIChpcnEgPCAwIHx8IGlycSA+PSBOSEFSRF9JUlFTKQorCQlwYW5pYygiJXMgY2FsbGVk IGZvciB1bmtub3duIGhhcmQgaW50ciAlZCIsIF9fZnVuY19fLCBpcnEpOworCisJS0FTU0VSVChw aWNfc2MgIT0gTlVMTCwgKCIlczogbm8gcGljIiwgX19mdW5jX18pKTsKKwl2ZWMgPSBpbnRyX25h bWVzcGFjZV9tYXBfaXJxKHBpY19zYy0+cGljX2RldiwgSU5UUl9JUlFfTlNQQ19JUlEsIGlycSk7 CisJS0FTU0VSVCh2ZWMgIT0gTklSUSwgKCJVbmFibGUgdG8gbWFwIGhhcmQgSVJRICVkXG4iLCBp cnEpKTsKKworCXJlcyA9IGludHJfaXJxX2FkZF9oYW5kbGVyKHBpY19zYy0+cGljX2RldiwgZmls dCwgaGFuZGxlciwgYXJnLCB2ZWMsCisJICAgIGZsYWdzLCBjb29raWVwKTsKKwlpZiAocmVzICE9 IDApIHBhbmljKCJVbmFibGUgdG8gYWRkIGhhcmQgSVJRICVkIGhhbmRsZXIiLCBpcnEpOworCisJ KHZvaWQpcGljX2lycV9mcm9tX25zcGMocGljX3NjLCBJTlRSX0lSUV9OU1BDX0lSUSwgaXJxLCAm dmVjKTsKKwlLQVNTRVJUKHBpY19zYy0+cGljX2lycXNbdmVjXSAhPSBOVUxMLAorCSAgICAoIkhh cmQgSVJRICVkIG5vdCByZWdpc3RlcmVkXG4iLCBpcnEpKTsKKwlpbnRyX2lycV9zZXRfbmFtZShw aWNfc2MtPnBpY19pcnFzW3ZlY10sICIlcyIsIG5hbWUpOworfQorCit2b2lkCitjcHVfZXN0YWJs aXNoX3NvZnRpbnRyKGNvbnN0IGNoYXIgKm5hbWUsIGRyaXZlcl9maWx0ZXJfdCAqZmlsdCwKKyAg ICB2b2lkICgqaGFuZGxlcikodm9pZCopLCB2b2lkICphcmcsIGludCBpcnEsIGludCBmbGFncywK KyAgICB2b2lkICoqY29va2llcCkKK3sKKwl1X2ludCB2ZWM7CisJaW50IHJlczsKKworCWlmIChp cnEgPCAwIHx8IGlycSA+IE5TT0ZUX0lSUVMpCisJCXBhbmljKCIlcyBjYWxsZWQgZm9yIHVua25v d24gc29mdCBpbnRyICVkIiwgX19mdW5jX18sIGlycSk7CisKKwlLQVNTRVJUKHBpY19zYyAhPSBO VUxMLCAoIiVzOiBubyBwaWMiLCBfX2Z1bmNfXykpOworCXZlYyA9IGludHJfbmFtZXNwYWNlX21h cF9pcnEocGljX3NjLT5waWNfZGV2LCBJTlRSX0lSUV9OU1BDX1NXSSwgaXJxKTsKKwlLQVNTRVJU KHZlYyA8PSBOSVJRLCAoIlVuYWJsZSB0byBtYXAgc29mdCBJUlEgJWRcbiIsIGlycSkpOworCisJ aW50cl9pcnFfYWRkX2hhbmRsZXIocGljX3NjLT5waWNfZGV2LCBmaWx0LCBoYW5kbGVyLCBhcmcs IHZlYywKKwkgICAgZmxhZ3MsIGNvb2tpZXApOworCWlmIChyZXMgIT0gMCkgcGFuaWMoIlVuYWJs ZSB0byBhZGQgc29mdCBJUlEgJWQgaGFuZGxlciIsIGlycSk7CisKKwkodm9pZClwaWNfaXJxX2Zy b21fbnNwYyhwaWNfc2MsIElOVFJfSVJRX05TUENfU1dJLCBpcnEsICZ2ZWMpOworCUtBU1NFUlQo cGljX3NjLT5waWNfaXJxc1t2ZWNdICE9IE5VTEwsCisJICAgICgiU29mdCBJUlEgJWQgbm90IHJl Z2lzdGVyZWRcbiIsIGlycSkpOworCWludHJfaXJxX3NldF9uYW1lKHBpY19zYy0+cGljX2lycXNb dmVjXSwgIiVzIiwgbmFtZSk7Cit9CisKZGlmZiAtLWdpdCBhL3N5cy9taXBzL21pcHMvZXhjZXB0 aW9uLlMgYi9zeXMvbWlwcy9taXBzL2V4Y2VwdGlvbi5TCi0tLSBhL3N5cy9taXBzL21pcHMvZXhj ZXB0aW9uLlMKKysrIGIvc3lzL21pcHMvbWlwcy9leGNlcHRpb24uUwpAQCAtNjQ2LDcgKzY0Niwx MSBAQAogICogIENhbGwgdGhlIGludGVycnVwdCBoYW5kbGVyLiBhMCBwb2ludHMgYXQgdGhlIHNh dmVkIGZyYW1lLgogICovCiAJUFRSX0xBCWdwLCBfQ19MQUJFTChfZ3ApCisjaWZkZWYgTUlQU19J TlRSTkcKKwlQVFJfTEEJazAsIF9DX0xBQkVMKGludHJfaXJxX2hhbmRsZXIpCisjZWxzZQogCVBU Ul9MQQlrMCwgX0NfTEFCRUwoY3B1X2ludHIpCisjZW5kaWYKIAlqYWxyCWswCiAJUkVHX1MJYTMs IENBTExGUkFNRV9SQSArIEtFUk5fUkVHX1NJWkUoc3ApCQkjIGZvciBkZWJ1Z2dpbmcKIApAQCAt NzU4LDcgKzc2MiwxMSBAQAogLyoKICAqIENhbGwgdGhlIGludGVycnVwdCBoYW5kbGVyLgogICov CisjaWZkZWYgTUlQU19JTlRSTkcKKwlQVFJfTEEJazAsIF9DX0xBQkVMKGludHJfaXJxX2hhbmRs ZXIpCisjZWxzZQogCVBUUl9MQQlrMCwgX0NfTEFCRUwoY3B1X2ludHIpCisjZW5kaWYKIAlqYWxy CWswCiAJUkVHX1MJYTMsIENBTExGUkFNRV9SQShzcCkJIyBmb3IgZGVidWdnaW5nCiAKQEAgLTEx OTAsNiArMTE5OCw3IEBACiAJUFRSX0FERFUgc3AsIHNwLCBDQUxMRlJBTUVfU0laCiBFTkQoTWlw c0ZQVHJhcCkKIAorI2lmbmRlZiBNSVBTX0lOVFJORwogLyoKICAqIEludGVycnVwdCBjb3VudGVy cyBmb3Igdm1zdGF0LgogICovCkBAIC0xMjE2LDYgKzEyMjUsNyBAQAogI2Vsc2UKIAkuaW50ICBJ TlRSQ05UX0NPVU5UICogKF9NSVBTX1NaTE9ORyAvIDgpICogMgogI2VuZGlmCisjZW5kaWYgLyog TUlQU19JTlRSTkcgKi8KIAogCiAvKgpkaWZmIC0tZ2l0IGEvc3lzL21pcHMvaW5jbHVkZS9zbXAu aCBiL3N5cy9taXBzL2luY2x1ZGUvc21wLmgKLS0tIGEvc3lzL21pcHMvaW5jbHVkZS9zbXAuaAor KysgYi9zeXMvbWlwcy9pbmNsdWRlL3NtcC5oCkBAIC0yMSw2ICsyMSwxMSBAQAogCiAjaW5jbHVk ZSA8bWFjaGluZS9wY2IuaD4KIAorI2lmZGVmIE1JUFNfSU5UUk5HCisjIGRlZmluZSBNSVBTX0lQ SV9DT1VOVCAJMQorIyBkZWZpbmUgSU5UUl9JUElfQ09VTlQgCU1JUFNfSVBJX0NPVU5UCisjZW5k aWYKKwogLyoKICAqIEludGVycHJvY2Vzc29yIGludGVycnVwdHMgZm9yIFNNUC4KICAqLwpkaWZm IC0tZ2l0IGEvc3lzL21pcHMvaW5jbHVkZS9pbnRyLmggYi9zeXMvbWlwcy9pbmNsdWRlL2ludHIu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9taXBzL2luY2x1 ZGUvaW50ci5oCkBAIC0wLDAgKzEsMTQ5IEBACisvKiAJJE5ldEJTRDogaW50ci5oLHYgMS43IDIw MDMvMDYvMTYgMjA6MDE6MDAgdGhvcnBlaiBFeHAgJAkqLworCisvKi0KKyAqIENvcHlyaWdodCAo YykgMTk5NyBNYXJrIEJyaW5pY29tYmUuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0 aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u LgorICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9y IHVzZSBvZiB0aGlzIHNvZnR3YXJlCisgKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBh Y2tub3dsZWRnZW1lbnQ6CisgKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxv cGVkIGJ5IE1hcmsgQnJpbmljb21iZQorICoJZm9yIHRoZSBOZXRCU0QgUHJvamVjdC4KKyAqIDQu IFRoZSBuYW1lIG9mIHRoZSBjb21wYW55IG5vciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBi ZSB1c2VkIHRvCisgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYworICogICAgcHJpb3Igd3JpdHRlbiBwZXJt aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBg YEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKyAqIFdBUlJBTlRJRVMsIElOQ0xV RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBN RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE SVNDTEFJTUVELgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRP UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK KyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg SU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9S VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkK KyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU SEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICoKKyAqICRGcmVlQlNEJAorICoK KyAqLworCisjaWZuZGVmIF9NQUNISU5FX0lOVFJfSF8KKyNkZWZpbmUgX01BQ0hJTkVfSU5UUl9I XworCisjaWZkZWYgRkRUCisjaW5jbHVkZSA8ZGV2L29mdy9vcGVuZmlybS5oPgorI2VuZGlmCisK KyNpZm5kZWYgTklSUQorI2RlZmluZQlOSVJRCQkxMjgKKyNlbmRpZgorCisjaWZkZWYgbm90eWV0 CisjZGVmaW5lCUlOVFJfU09MTwlJTlRSX01EMQordHlwZWRlZiBpbnQgaW50cl9pcnFfZmlsdGVy X3Qodm9pZCAqYXJnLCBzdHJ1Y3QgdHJhcGZyYW1lICp0Zik7CisjZWxzZQordHlwZWRlZiBpbnQg aW50cl9pcnFfZmlsdGVyX3Qodm9pZCAqYXJnKTsKKyNlbmRpZgorCisjZGVmaW5lIElOVFJfSVNS Q19OQU1FTEVOCShNQVhDT01MRU4gKyAxKQorCit0eXBlZGVmIHZvaWQgaW50cl9pcGlfZmlsdGVy X3Qodm9pZCAqYXJnKTsKKworZW51bSBpbnRyX2lzcmNfdHlwZSB7CisJSU5UUl9JU1JDVF9OQU1F U1BBQ0UsCisJSU5UUl9JU1JDVF9GRFQKK307CisKKyNkZWZpbmUgSU5UUl9JU1JDRl9SRUdJU1RF UkVECTB4MDEJLyogcmVnaXN0ZXJlZCBpbiBhIGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgSU5UUl9J U1JDRl9QRVJDUFUJMHgwMgkvKiBwZXIgQ1BVIGludGVycnVwdCAqLworI2RlZmluZSBJTlRSX0lT UkNGX0JPVU5ECQkweDA0CS8qIGJvdW5kIHRvIGEgQ1BVICovCisKKy8qIEludGVycnVwdCBzb3Vy Y2UgZGVmaW5pdGlvbi4gKi8KK3N0cnVjdCBpbnRyX2lycXNyYyB7CisJZGV2aWNlX3QJCWlzcmNf ZGV2OwkvKiB3aGVyZSBpc3JjIGlzIG1hcHBlZCAqLworCWludHB0cl90CQlpc3JjX3hyZWY7CS8q IGRldmljZSByZWZlcmVuY2Uga2V5ICovCisJdWludHB0cl90CQlpc3JjX2RhdGE7CS8qIGRldmlj ZSBkYXRhIGZvciBpc3JjICovCisJdV9pbnQJCQlpc3JjX2lycTsJLyogdW5pcXVlIGlkZW50aWZp Y2F0b3IgKi8KKwllbnVtIGludHJfaXNyY190eXBlCWlzcmNfdHlwZTsJLyogaG93IGlzIGlzcmMg ZGVjcmliZWQgKi8KKwl1X2ludAkJCWlzcmNfZmxhZ3M7CisJY2hhcgkJCWlzcmNfbmFtZVtJTlRS X0lTUkNfTkFNRUxFTl07CisJdWludDE2X3QJCWlzcmNfbnNwY190eXBlOworCXVpbnQxNl90CQlp c3JjX25zcGNfbnVtOworCWVudW0gaW50cl90cmlnZ2VyCWlzcmNfdHJpZzsKKwllbnVtIGludHJf cG9sYXJpdHkJaXNyY19wb2w7CisJY3B1c2V0X3QJCWlzcmNfY3B1OwkvKiBvbiB3aGljaCBDUFVz IGlzIGVuYWJsZWQgKi8KKwl1X2ludAkJCWlzcmNfaW5kZXg7CisJdV9sb25nICoJCWlzcmNfY291 bnQ7CisJdV9pbnQJCQlpc3JjX2hhbmRsZXJzOworCXN0cnVjdCBpbnRyX2V2ZW50ICoJaXNyY19l dmVudDsKKwlpbnRyX2lycV9maWx0ZXJfdCAqCWlzcmNfZmlsdGVyOworCWludHJfaXBpX2ZpbHRl cl90ICoJaXNyY19pcGlmaWx0ZXI7CisJdm9pZCAqCQkJaXNyY19hcmc7CisjaWZkZWYgRkRUCisJ dV9pbnQJCQlpc3JjX25jZWxsczsKKwlwY2VsbF90CQkJaXNyY19jZWxsc1tdOwkvKiBsZWF2ZSBp dCBsYXN0ICovCisjZW5kaWYKK307CisKK3ZvaWQgaW50cl9pcnFfc2V0X25hbWUoc3RydWN0IGlu dHJfaXJxc3JjICppc3JjLCBjb25zdCBjaGFyICpmbXQsIC4uLikKKyAgICBfX3ByaW50Zmxpa2Uo MiwgMyk7CisKK3ZvaWQgaW50cl9pcnFfZGlzcGF0Y2goc3RydWN0IGludHJfaXJxc3JjICppc3Jj LCBzdHJ1Y3QgdHJhcGZyYW1lICp0Zik7CisKKyNkZWZpbmUgSU5UUl9JUlFfTlNQQ19OT05FCTAK KyNkZWZpbmUgSU5UUl9JUlFfTlNQQ19QTEFJTgkxCisjZGVmaW5lIElOVFJfSVJRX05TUENfSVJR CTIKKyNkZWZpbmUgSU5UUl9JUlFfTlNQQ19JUEkJMworI2RlZmluZSBJTlRSX0lSUV9OU1BDX1NX SQk0CisKK3VfaW50IGludHJfbmFtZXNwYWNlX21hcF9pcnEoZGV2aWNlX3QgZGV2LCB1aW50MTZf dCB0eXBlLCB1aW50MTZfdCBudW0pOworI2lmZGVmIEZEVAordV9pbnQgaW50cl9mZHRfbWFwX2ly cShwaGFuZGxlX3QsIHBjZWxsX3QgKiwgdV9pbnQpOworI2VuZGlmCisKK2ludCBpbnRyX3BpY19y ZWdpc3RlcihkZXZpY2VfdCBkZXYsIGludHB0cl90IHhyZWYpOworaW50IGludHJfcGljX3VucmVn aXN0ZXIoZGV2aWNlX3QgZGV2LCBpbnRwdHJfdCB4cmVmKTsKK2ludCBpbnRyX3BpY19jbGFpbV9y b290KGRldmljZV90IGRldiwgaW50cHRyX3QgeHJlZiwgaW50cl9pcnFfZmlsdGVyX3QgKmZpbHRl ciwKKyAgICB2b2lkICphcmcsIHVfaW50IGlwaWNvdW50KTsKKworaW50IGludHJfaXJxX2FkZF9o YW5kbGVyKGRldmljZV90IGRldiwgZHJpdmVyX2ZpbHRlcl90LCBkcml2ZXJfaW50cl90LCB2b2lk ICosCisgICAgdV9pbnQsIGludCwgdm9pZCAqKik7CitpbnQgaW50cl9pcnFfcmVtb3ZlX2hhbmRs ZXIoZGV2aWNlX3QgZGV2LCB1X2ludCwgdm9pZCAqKTsKK2ludCBpbnRyX2lycV9jb25maWcodV9p bnQsIGVudW0gaW50cl90cmlnZ2VyLCBlbnVtIGludHJfcG9sYXJpdHkpOworaW50IGludHJfaXJx X2Rlc2NyaWJlKHVfaW50LCB2b2lkICosIGNvbnN0IGNoYXIgKik7CisKK3VfaW50IGludHJfaXJx X25leHRfY3B1KHVfaW50IGN1cnJlbnRfY3B1LCBjcHVzZXRfdCAqY3B1bWFzayk7CisKKyNpZmRl ZiBTTVAKK2ludCBpbnRyX2lycV9iaW5kKHVfaW50LCBpbnQpOworCit2b2lkIGludHJfaXBpX2Rp c3BhdGNoKHN0cnVjdCBpbnRyX2lycXNyYyAqaXNyYywgc3RydWN0IHRyYXBmcmFtZSAqdGYpOwor CisjZGVmaW5lIEFJU0hGX05PQUxMT0MJMHgwMDAxCisKK2ludCBpbnRyX2lwaV9zZXRfaGFuZGxl cih1X2ludCBpcGksIGNvbnN0IGNoYXIgKm5hbWUsIGludHJfaXBpX2ZpbHRlcl90ICpmaWx0ZXIs CisgICAgdm9pZCAqYXJnLCB1X2ludCBmbGFncyk7CisKK3ZvaWQgaW50cl9waWNfaW5pdF9zZWNv bmRhcnkodm9pZCk7CisjZW5kaWYKKworLyogTUlQUyBjb21wYXRpYmlsaXR5IGZvciBsZWdhY3kg bWlwcyBjb2RlICovCit2b2lkIGNwdV9pbml0X2ludGVycnVwdHModm9pZCk7Cit2b2lkIGNwdV9l c3RhYmxpc2hfaGFyZGludHIoY29uc3QgY2hhciAqLCBkcml2ZXJfZmlsdGVyX3QgKiwgZHJpdmVy X2ludHJfdCAqLAorICAgIHZvaWQgKiwgaW50LCBpbnQsIHZvaWQgKiopOwordm9pZCBjcHVfZXN0 YWJsaXNoX3NvZnRpbnRyKGNvbnN0IGNoYXIgKiwgZHJpdmVyX2ZpbHRlcl90ICosIHZvaWQgKCop KHZvaWQqKSwKKyAgICB2b2lkICosIGludCwgaW50LCB2b2lkICoqKTsKKy8qIE1JUFMgaW50ZXJy dXB0IEMgZW50cnkgcG9pbnQgKi8KK3ZvaWQgY3B1X2ludHIoc3RydWN0IHRyYXBmcmFtZSAqKTsK KworCisjZW5kaWYJLyogX01BQ0hJTkVfSU5UUl9IICovCmRpZmYgLS1naXQgYS9zeXMvY29uZi9v cHRpb25zLm1pcHMgYi9zeXMvY29uZi9vcHRpb25zLm1pcHMKLS0tIGEvc3lzL2NvbmYvb3B0aW9u cy5taXBzCisrKyBiL3N5cy9jb25mL29wdGlvbnMubWlwcwpAQCAtMTQwLDMgKzE0MCw3IEBACiAj IE9wdGlvbnMgdGhhdCBhZmZlY3QgdGhlIHBtYXAuCiAjCiBQVl9TVEFUUwkJb3B0X3BtYXAuaAor IworIyBPcHRpb25zIHRvIHVzZSBBUk1fSU5UUk5HIGNvZGUKKyMKK01JUFNfSU5UUk5HCQlvcHRf Z2xvYmFsLmgKCg== --b1_c4bd241a3ff1f88809a994ccd867c7de--