From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sedat Dilek Subject: Re: [linux-pm] linux-next: Tree for Feb 8 [ smp|cpufreq: WARNING: at kernel/smp.c:245 smp_call_function_single ] Date: Fri, 8 Feb 2013 17:28:11 +0100 Message-ID: References: <2612804.Hcyse1lRVO@vostro.rjw.lan> Reply-To: sedat.dilek@gmail.com Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=20cf30334dd1a54ea204d5390b96 Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org To: Viresh Kumar Cc: "Rafael J. Wysocki" , Stephen Rothwell , x86@kernel.org, linux-kernel@vger.kernel.org, Linux ACPI , Hillf Danton , linux-next@vger.kernel.org, Linux PM List , Chuansheng Liu , Ingo Molnar List-Id: linux-acpi@vger.kernel.org --20cf30334dd1a54ea204d5390b96 Content-Type: text/plain; charset=UTF-8 On Fri, Feb 8, 2013 at 4:21 PM, Sedat Dilek wrote: > On Fri, Feb 8, 2013 at 3:56 PM, Viresh Kumar wrote: >> On Fri, Feb 8, 2013 at 8:18 PM, Sedat Dilek wrote: >>> Nah, I pulled in latest pm-next where this commit is new... >>> >>> commit 8d5666f3456f2fd4a4e5dced228475b829851e53 >>> "ACPI: Unbind ACPI drv when probe failed" >>> >>> ...building with it. >>> >>> Same to you, say concretely which commit is fixing what... >>> >>> Pull-N-B-Happy was never my strategy... I want to understand what went >>> wrong and have stolen my time. >> >> I don't have any pointers to broken tree and so can't point you to the culprit, >> but it was this patch: >> >> http://git.linaro.org/gitweb?p=people/vireshk/linux.git;a=commit;h=e034e731f4d9d18ad0401f033f485a3096796c58 >> >> minus >> >> the patch i sent you as attachment. >> >> There were some locking introduced around init/exit of cpufreq_driver, which >> caused some drivers to break. Its fixed now in the above commit. > > Hmm, this "high-patch-maths" is not user-friendly! > > I will pull-in your tree into Linux-Next (next-20130208) and see if it > applies cleanly. > > - Sedat - No, it did NOT apply cleanly and I merged your tree like this. To me it does not look like your changes from the patch you sent me are included? - Sedat - --20cf30334dd1a54ea204d5390b96 Content-Type: application/octet-stream; name="cpufreq-next.patch" Content-Disposition: attachment; filename="cpufreq-next.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hcxjqn4h0 QW5kcmV3IEx1bm4gKDEpOgogICAgICBjcHVmcmVxOiBraXJrd29vZDogQWRkIGEgY3B1ZnJlcSBk cml2ZXIgZm9yIE1hcnZlbGwgS2lya3dvb2QgU29DcwoKRGlyayBCcmFuZGV3aWUgKDUpOgogICAg ICBjcHVmcmVxOiBSZXRyaWV2ZSBjdXJyZW50IGZyZXF1ZW5jeSBmcm9tIHNjYWxpbmcgZHJpdmVy cyB3aXRoIGludGVybmFsIGdvdmVybm9ycwogICAgICBjcHVmcmVxOiBPbmx5IGNhbGwgY3B1ZnJl cV9vdXRfb2Zfc3luYygpIGZvciBkcml2ZXIgdGhhdCBpbXBsZW1lbnQgY3B1ZnJlcV9kcml2ZXIu dGFyZ2V0KCkKICAgICAgY3B1ZnJlcTogRG8gbm90IHRyYWNrIGdvdmVybm9yIG5hbWUgZm9yIHNj YWxpbmcgZHJpdmVycyB3aXRoIGludGVybmFsIGdvdmVybm9ycy4KICAgICAgY3B1ZnJlcV9zdGF0 czogZG8gbm90IHJlbW92ZSBzeXNmcyBmaWxlcyBpZiBmcmVxdWVuY3kgdGFibGUgaXMgbm90IHBy ZXNlbnQKICAgICAgY3B1ZnJlcS94ODY6IEFkZCBQLXN0YXRlIGRyaXZlciBmb3Igc2FuZHkgYnJp ZGdlLgoKU2VkYXQgRGlsZWsgKDIpOgogICAgICBNZXJnZSB0YWcgJ25leHQtMjAxMzAyMDgnIG9m IGdpdDovL2dpdC5rZXJuZWwub3JnLy4uLi9uZXh0L2xpbnV4LW5leHQgaW50byBMaW51eC1OZXh0 LXYyMDEzMDIwOAogICAgICBNZXJnZSBicmFuY2ggJ2Zvci1yYWZhZWwnIG9mIGdpdDovL2dpdC5s aW5hcm8ub3JnL3Blb3BsZS92aXJlc2hrL2xpbnV4IGludG8gY3B1ZnJlcS1uZXh0CgpWaXJlc2gg S3VtYXIgKDUpOgogICAgICBjcHVmcmVxOiBnb3Zlcm5vcnM6IEZpeCBXQVJOX09OKCkgZm9yIG11 bHRpLXBvbGljeSBwbGF0Zm9ybXMKICAgICAgY3B1ZnJlcTogUmVtb3ZlIHVudXNlZCBIT1RQTFVH X0NQVSBjb2RlCiAgICAgIGNwdWZyZXE6IENyZWF0ZSBhIG1hY3JvIGZvciB1bmxvY2tfcG9saWN5 X3J3c2Vte3JlYWQsd3JpdGV9CiAgICAgIGNwdWZyZXE6IEZpeCBsb2NraW5nIGlzc3VlcwogICAg ICBjcHVmcmVxOiBleHlub3M6IHNpbXBsaWZ5IC5pbml0KCkgZm9yIHNldHRpbmcgcG9saWN5LT5j cHVzCgogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9raXJrd29vZC50eHQg fCAgMjcgKwogZHJpdmVycy9jbGsvbXZlYnUvY2xrLWdhdGluZy1jdHJsLmMgICAgICAgICAgICAg ICAgfCAgIDEgKwogZHJpdmVycy9jcHVmcmVxL0tjb25maWcuYXJtICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDYgKwogZHJpdmVycy9jcHVmcmVxL0tjb25maWcueDg2ICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMTggKwogZHJpdmVycy9jcHVmcmVxL01ha2VmaWxlICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDIgKwogZHJpdmVycy9jcHVmcmVxL2NwdWZyZXEuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMjEgKy0KIGRyaXZlcnMvY3B1ZnJlcS9jcHVmcmVxX3N0YXRzLmMg ICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIGRyaXZlcnMvY3B1ZnJlcS9leHlub3MtY3B1ZnJl cS5jICAgICAgICAgICAgICAgICAgIHwgIDE0ICstCiBkcml2ZXJzL2NwdWZyZXEvaW50ZWxfcHN0 YXRlLmMgICAgICAgICAgICAgICAgICAgICB8IDgwNiArKysrKysrKysrKysrKysrKysrKysKIGRy aXZlcnMvY3B1ZnJlcS9raXJrd29vZC1jcHVmcmVxLmMgICAgICAgICAgICAgICAgIHwgMjU5ICsr KysrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDExMzQgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9r aXJrd29vZC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2tpcmt3 b29kLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGNjZTlhCi0tLSAv ZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9raXJr d29vZC50eHQKQEAgLTAsMCArMSwyNyBAQAorTWFydmVsbCBLaXJrd29vZCBQbGF0Zm9ybXMgRGV2 aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisKK0JvYXJkcyB3aXRoIGEgU29DIG9mIHRoZSBNYXJ2ZWxsIEtpcmt3b29kCitz aGFsbCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydHk6CisKK1JlcXVpcmVkIHJvb3Qgbm9kZSBw cm9wZXJ0eToKKworY29tcGF0aWJsZTogbXVzdCBjb250YWluICJtYXJ2ZWxsLGtpcmt3b29kIjsK KworSW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUga2lya3dvb2QgY3B1ZnJlcSBkcml2ZXIsIHRoZXJl IG11c3QgYmUgYSBub2RlCitjcHVzL2NwdUAwIHdpdGggdGhyZWUgY2xvY2tzLCAiY3B1X2NsayIs ICJkZHJjbGsiIGFuZCAicG93ZXJzYXZlIiwKK3doZXJlIHRoZSAicG93ZXJzYXZlIiBjbG9jayBp cyBhIGdhdGluZyBjbG9jayB1c2VkIHRvIHN3aXRjaCB0aGUgQ1BVCitiZXR3ZWVuIHRoZSAiY3B1 X2NsayIgYW5kIHRoZSAiZGRyY2xrIi4KKworRXhhbXBsZToKKworCWNwdXMgeworCQkjYWRkcmVz cy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJY3B1QDAgeworCQkgICAg ICBkZXZpY2VfdHlwZSA9ICJjcHUiOworCQkgICAgICBjb21wYXRpYmxlID0gIm1hcnZlbGwsc2hl ZXZhLTg4U1YxMzEiOworCQkgICAgICBjbG9ja3MgPSA8JmNvcmVfY2xrIDE+LCA8JmNvcmVfY2xr IDM+LCA8JmdhdGVfY2xrIDExPjsKKwkJICAgICAgY2xvY2stbmFtZXMgPSAiY3B1X2NsayIsICJk ZHJjbGsiLCAicG93ZXJzYXZlIjsKKwkJfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL212ZWJ1 L2Nsay1nYXRpbmctY3RybC5jIGIvZHJpdmVycy9jbGsvbXZlYnUvY2xrLWdhdGluZy1jdHJsLmMK aW5kZXggOGZhNTQwOC4uZWJmMTQxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsvbXZlYnUvY2xr LWdhdGluZy1jdHJsLmMKKysrIGIvZHJpdmVycy9jbGsvbXZlYnUvY2xrLWdhdGluZy1jdHJsLmMK QEAgLTE5Myw2ICsxOTMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ZWJ1X3NvY19kZXNjciBf X2luaXRjb25zdCBraXJrd29vZF9nYXRpbmdfZGVzY3JbXSA9IHsKIAl7ICJydW5pdCIsIE5VTEws IDcgfSwKIAl7ICJ4b3IwIiwgTlVMTCwgOCB9LAogCXsgImF1ZGlvIiwgTlVMTCwgOSB9LAorCXsg InBvd2Vyc2F2ZSIsICJjcHVjbGsiLCAxMSB9LAogCXsgInNhdGEwIiwgTlVMTCwgMTQgfSwKIAl7 ICJzYXRhMSIsIE5VTEwsIDE1IH0sCiAJeyAieG9yMSIsIE5VTEwsIDE2IH0sCmRpZmYgLS1naXQg YS9kcml2ZXJzL2NwdWZyZXEvS2NvbmZpZy5hcm0gYi9kcml2ZXJzL2NwdWZyZXEvS2NvbmZpZy5h cm0KaW5kZXggNjY5M2NmMC4uMDMwZGRmNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jcHVmcmVxL0tj b25maWcuYXJtCisrKyBiL2RyaXZlcnMvY3B1ZnJlcS9LY29uZmlnLmFybQpAQCAtNzcsNiArNzcs MTIgQEAgY29uZmlnIEFSTV9FWFlOT1M1MjUwX0NQVUZSRVEKIAkgIFRoaXMgYWRkcyB0aGUgQ1BV RnJlcSBkcml2ZXIgZm9yIFNhbXN1bmcgRVhZTk9TNTI1MAogCSAgU29DLgogCitjb25maWcgQVJN X0tJUktXT09EX0NQVUZSRVEKKwlkZWZfYm9vbCBBUkNIX0tJUktXT09EICYmIE9GCisJaGVscAor CSAgVGhpcyBhZGRzIHRoZSBDUFVGcmVxIGRyaXZlciBmb3IgTWFydmVsbCBLaXJrd29vZAorCSAg U29Dcy4KKwogY29uZmlnIEFSTV9JTVg2UV9DUFVGUkVRCiAJdHJpc3RhdGUgIkZyZWVzY2FsZSBp Lk1YNlEgY3B1ZnJlcSBzdXBwb3J0IgogCWRlcGVuZHMgb24gU09DX0lNWDZRCmRpZmYgLS1naXQg YS9kcml2ZXJzL2NwdWZyZXEvS2NvbmZpZy54ODYgYi9kcml2ZXJzL2NwdWZyZXEvS2NvbmZpZy54 ODYKaW5kZXggNGVhNGUyYi4uYmQxNzMzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jcHVmcmVxL0tj b25maWcueDg2CisrKyBiL2RyaXZlcnMvY3B1ZnJlcS9LY29uZmlnLng4NgpAQCAtMiw2ICsyLDI0 IEBACiAjIHg4NiBDUFUgRnJlcXVlbmN5IHNjYWxpbmcgZHJpdmVycwogIwogCitjb25maWcgWDg2 X0lOVEVMX1BTVEFURQorICAgICAgIHRyaXN0YXRlICJJbnRlbCBQIHN0YXRlIGNvbnRyb2wiCisg ICAgICAgZGVwZW5kcyBvbiBYODYKKyAgICAgICBoZWxwCisgICAgICAgICAgVGhpcyBkcml2ZXIg cHJvdmlkZXMgYSBQIHN0YXRlIGZvciBJbnRlbCBjb3JlIHByb2Nlc3NvcnMuCisJICBUaGUgZHJp dmVyIGltcGxlbWVudHMgYW4gaW50ZXJuYWwgZ292ZXJub3IgYW5kIHdpbGwgYmVjb21lCisgICAg ICAgICAgdGhlIHNjYWxpbmcgZHJpdmVyIGFuZCBnb3Zlcm5vciBmb3IgU2FuZHkgYnJpZGdlIHBy b2Nlc3NvcnMuCisKKwkgIFdoZW4gdGhpcyBkcml2ZXIgaXMgZW5hYmxlZCBpdCB3aWxsIGJlY29t ZSB0aGUgcGVyZmVycmVkCisgICAgICAgICAgc2NhbGluZyBkcml2ZXIgZm9yIFNhbmR5IGJyaWRn ZSBwcm9jZXNzb3JzLgorCisJICBOb3RlOiBUaGlzIGRyaXZlciBzaG91bGQgYmUgYnVpbHQgd2l0 aCB0aGUgc2FtZSBzZXR0aW5ncyBhcworCSAgdGhlIG90aGVyIHNjYWxpbmcgZHJpdmVycyBjb25m aWd1cmVkIGludG8gdGhlIHN5c3RlbQorCSAgKG1vZHVsZS9idWlsdC1pbikgaW4gb3JkZXIgZm9y IHRoZSBkcml2ZXIgdG8gcmVnaXN0ZXIgaXRzZWxmCisJICBhcyB0aGUgc2NhbGluZyBkcml2ZXIg b24gdGhlIHN5c3RlbS4KKworCSAgSWYgaW4gZG91YnQsIHNheSBOLgorCiBjb25maWcgWDg2X1BD Q19DUFVGUkVRCiAJdHJpc3RhdGUgIlByb2Nlc3NvciBDbG9ja2luZyBDb250cm9sIGludGVyZmFj ZSBkcml2ZXIiCiAJZGVwZW5kcyBvbiBBQ1BJICYmIEFDUElfUFJPQ0VTU09SCmRpZmYgLS1naXQg YS9kcml2ZXJzL2NwdWZyZXEvTWFrZWZpbGUgYi9kcml2ZXJzL2NwdWZyZXEvTWFrZWZpbGUKaW5k ZXggNjU1ZThhOS4uODYzZmQxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jcHVmcmVxL01ha2VmaWxl CisrKyBiL2RyaXZlcnMvY3B1ZnJlcS9NYWtlZmlsZQpAQCAtNDAsNiArNDAsNyBAQCBvYmotJChD T05GSUdfWDg2X1NQRUVEU1RFUF9TTUkpCQkrPSBzcGVlZHN0ZXAtc21pLm8KIG9iai0kKENPTkZJ R19YODZfU1BFRURTVEVQX0NFTlRSSU5PKQkrPSBzcGVlZHN0ZXAtY2VudHJpbm8ubwogb2JqLSQo Q09ORklHX1g4Nl9QNF9DTE9DS01PRCkJCSs9IHA0LWNsb2NrbW9kLm8KIG9iai0kKENPTkZJR19Y ODZfQ1BVRlJFUV9ORk9SQ0UyKQkrPSBjcHVmcmVxLW5mb3JjZTIubworb2JqLSQoQ09ORklHX1g4 Nl9JTlRFTF9QU1RBVEUpCQkrPSBpbnRlbF9wc3RhdGUubwogCiAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCiAjIEFSTSBTb0MgZHJpdmVycwpAQCAtNTEsNiArNTIsNyBAQCBvYmotJChDT05GSUdf QVJNX0VYWU5PU19DUFVGUkVRKQkrPSBleHlub3MtY3B1ZnJlcS5vCiBvYmotJChDT05GSUdfQVJN X0VYWU5PUzQyMTBfQ1BVRlJFUSkJKz0gZXh5bm9zNDIxMC1jcHVmcmVxLm8KIG9iai0kKENPTkZJ R19BUk1fRVhZTk9TNFgxMl9DUFVGUkVRKQkrPSBleHlub3M0eDEyLWNwdWZyZXEubwogb2JqLSQo Q09ORklHX0FSTV9FWFlOT1M1MjUwX0NQVUZSRVEpCSs9IGV4eW5vczUyNTAtY3B1ZnJlcS5vCitv YmotJChDT05GSUdfQVJNX0tJUktXT09EX0NQVUZSRVEpCSs9IGtpcmt3b29kLWNwdWZyZXEubwog b2JqLSQoQ09ORklHX0FSTV9PTUFQMlBMVVNfQ1BVRlJFUSkJKz0gb21hcC1jcHVmcmVxLm8KIG9i ai0kKENPTkZJR19BUk1fU1BFQVJfQ1BVRlJFUSkJCSs9IHNwZWFyLWNwdWZyZXEubwogb2JqLSQo Q09ORklHX0FSTV9ISUdIQkFOS19DUFVGUkVRKQkrPSBoaWdoYmFuay1jcHVmcmVxLm8KZGlmZiAt LWdpdCBhL2RyaXZlcnMvY3B1ZnJlcS9jcHVmcmVxLmMgYi9kcml2ZXJzL2NwdWZyZXEvY3B1ZnJl cS5jCmluZGV4IDc5NTExYWIuLjg3M2NkMTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY3B1ZnJlcS9j cHVmcmVxLmMKKysrIGIvZHJpdmVycy9jcHVmcmVxL2NwdWZyZXEuYwpAQCAtNzk0LDEwICs3OTQs OCBAQCBzdGF0aWMgaW50IGNwdWZyZXFfYWRkX2Rldl9pbnRlcmZhY2UodW5zaWduZWQgaW50IGNw dSwKIAogCWlmIChyZXQpIHsKIAkJcHJfZGVidWcoInNldHRpbmcgcG9saWN5IGZhaWxlZFxuIik7 Ci0JCXNwaW5fbG9ja19pcnFzYXZlKCZjcHVmcmVxX2RyaXZlcl9sb2NrLCBmbGFncyk7CiAJCWlm IChkcml2ZXItPmV4aXQpCiAJCQlkcml2ZXItPmV4aXQocG9saWN5KTsKLQkJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmY3B1ZnJlcV9kcml2ZXJfbG9jaywgZmxhZ3MpOwogCX0KIAlyZXR1cm4gcmV0 OwogCkBAIC05MTksMTcgKzkxNywxNCBAQCBzdGF0aWMgaW50IGNwdWZyZXFfYWRkX2RldihzdHJ1 Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzdWJzeXNfaW50ZXJmYWNlICpzaWYpCiAJaW5pdF9jb21w bGV0aW9uKCZwb2xpY3ktPmtvYmpfdW5yZWdpc3Rlcik7CiAJSU5JVF9XT1JLKCZwb2xpY3ktPnVw ZGF0ZSwgaGFuZGxlX3VwZGF0ZSk7CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmY3B1ZnJlcV9kcml2 ZXJfbG9jaywgZmxhZ3MpOwogCS8qIGNhbGwgZHJpdmVyLiBGcm9tIHRoZW4gb24gdGhlIGNwdWZy ZXEgbXVzdCBiZSBhYmxlCiAJICogdG8gYWNjZXB0IGFsbCBjYWxscyB0byAtPnZlcmlmeSBhbmQg LT5zZXRwb2xpY3kgZm9yIHRoaXMgQ1BVCiAJICovCiAJcmV0ID0gZHJpdmVyLT5pbml0KHBvbGlj eSk7CiAJaWYgKHJldCkgewogCQlwcl9kZWJ1ZygiaW5pdGlhbGl6YXRpb24gZmFpbGVkXG4iKTsK LQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3B1ZnJlcV9kcml2ZXJfbG9jaywgZmxhZ3MpOwog CQlnb3RvIGVycl9zZXRfcG9saWN5X2NwdTsKIAl9Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm Y3B1ZnJlcV9kcml2ZXJfbG9jaywgZmxhZ3MpOwogCiAJLyogcmVsYXRlZCBjcHVzIHNob3VsZCBh dGxlYXN0IGhhdmUgcG9saWN5LT5jcHVzICovCiAJY3B1bWFza19vcihwb2xpY3ktPnJlbGF0ZWRf Y3B1cywgcG9saWN5LT5yZWxhdGVkX2NwdXMsIHBvbGljeS0+Y3B1cyk7CkBAIC0xMDM5LDggKzEw MzQsOSBAQCBzdGF0aWMgaW50IF9fY3B1ZnJlcV9yZW1vdmVfZGV2KHN0cnVjdCBkZXZpY2UgKmRl diwgc3RydWN0IHN1YnN5c19pbnRlcmZhY2UgKnNpZgogCQlfX2NwdWZyZXFfZ292ZXJub3IoZGF0 YSwgQ1BVRlJFUV9HT1ZfU1RPUCk7CiAKICNpZmRlZiBDT05GSUdfSE9UUExVR19DUFUKLQlzdHJu Y3B5KHBlcl9jcHUoY3B1ZnJlcV9jcHVfZ292ZXJub3IsIGNwdSksIGRhdGEtPmdvdmVybm9yLT5u YW1lLAotCQkJQ1BVRlJFUV9OQU1FX0xFTik7CisJaWYgKCFkcml2ZXItPnNldHBvbGljeSkKKwkJ c3RybmNweShwZXJfY3B1KGNwdWZyZXFfY3B1X2dvdmVybm9yLCBjcHUpLAorCQkJZGF0YS0+Z292 ZXJub3ItPm5hbWUsIENQVUZSRVFfTkFNRV9MRU4pOwogI2VuZGlmCiAKIAlXQVJOX09OKGxvY2tf cG9saWN5X3J3c2VtX3dyaXRlKGNwdSkpOwpAQCAtMTA5OCwxMCArMTA5NCw4IEBAIHN0YXRpYyBp bnQgX19jcHVmcmVxX3JlbW92ZV9kZXYoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc3Vic3lz X2ludGVyZmFjZSAqc2lmCiAJCXdhaXRfZm9yX2NvbXBsZXRpb24oY21wKTsKIAkJcHJfZGVidWco IndhaXQgY29tcGxldGVcbiIpOwogCi0JCXNwaW5fbG9ja19pcnFzYXZlKCZjcHVmcmVxX2RyaXZl cl9sb2NrLCBmbGFncyk7CiAJCWlmIChkcml2ZXItPmV4aXQpCiAJCQlkcml2ZXItPmV4aXQoZGF0 YSk7Ci0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNwdWZyZXFfZHJpdmVyX2xvY2ssIGZsYWdz KTsKIAogCQlmcmVlX2NwdW1hc2tfdmFyKGRhdGEtPnJlbGF0ZWRfY3B1cyk7CiAJCWZyZWVfY3B1 bWFza192YXIoZGF0YS0+Y3B1cyk7CkBAIC0xMTcyLDkgKzExNjYsMTQgQEAgc3RhdGljIHZvaWQg Y3B1ZnJlcV9vdXRfb2Zfc3luYyh1bnNpZ25lZCBpbnQgY3B1LCB1bnNpZ25lZCBpbnQgb2xkX2Zy ZXEsCiAgKi8KIHVuc2lnbmVkIGludCBjcHVmcmVxX3F1aWNrX2dldCh1bnNpZ25lZCBpbnQgY3B1 KQogewotCXN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5ID0gY3B1ZnJlcV9jcHVfZ2V0KGNw dSk7CisJc3RydWN0IGNwdWZyZXFfZHJpdmVyICpkcml2ZXIgPSByY3VfZGVyZWZlcmVuY2UoY3B1 ZnJlcV9kcml2ZXIpOworCXN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5OwogCXVuc2lnbmVk IGludCByZXRfZnJlcSA9IDA7CiAKKwlpZiAoZHJpdmVyICYmIGRyaXZlci0+c2V0cG9saWN5ICYm IGRyaXZlci0+Z2V0KQorCQkJcmV0dXJuIGRyaXZlci0+Z2V0KGNwdSk7CisKKwlwb2xpY3kgPSBj cHVmcmVxX2NwdV9nZXQoY3B1KTsKIAlpZiAocG9saWN5KSB7CiAJCXJldF9mcmVxID0gcG9saWN5 LT5jdXI7CiAJCWNwdWZyZXFfY3B1X3B1dChwb2xpY3kpOwpAQCAtMTc5MCw3ICsxNzg5LDcgQEAg aW50IGNwdWZyZXFfdXBkYXRlX3BvbGljeSh1bnNpZ25lZCBpbnQgY3B1KQogCQkJcHJfZGVidWco IkRyaXZlciBkaWQgbm90IGluaXRpYWxpemUgY3VycmVudCBmcmVxIik7CiAJCQlkYXRhLT5jdXIg PSBwb2xpY3kuY3VyOwogCQl9IGVsc2UgewotCQkJaWYgKGRhdGEtPmN1ciAhPSBwb2xpY3kuY3Vy KQorCQkJaWYgKGRhdGEtPmN1ciAhPSBwb2xpY3kuY3VyICYmIGRyaXZlci0+dGFyZ2V0KQogCQkJ CWNwdWZyZXFfb3V0X29mX3N5bmMoY3B1LCBkYXRhLT5jdXIsCiAJCQkJCQkJCXBvbGljeS5jdXIp OwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NwdWZyZXEvY3B1ZnJlcV9zdGF0cy5jIGIvZHJp dmVycy9jcHVmcmVxL2NwdWZyZXFfc3RhdHMuYwppbmRleCBhMmRlZTRjLi4yZmQ3NzllIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2NwdWZyZXEvY3B1ZnJlcV9zdGF0cy5jCisrKyBiL2RyaXZlcnMvY3B1 ZnJlcS9jcHVmcmVxX3N0YXRzLmMKQEAgLTE3OSw2ICsxNzksMTAgQEAgc3RhdGljIHZvaWQgY3B1 ZnJlcV9zdGF0c19mcmVlX3RhYmxlKHVuc2lnbmVkIGludCBjcHUpCiBzdGF0aWMgdm9pZCBjcHVm cmVxX3N0YXRzX2ZyZWVfc3lzZnModW5zaWduZWQgaW50IGNwdSkKIHsKIAlzdHJ1Y3QgY3B1ZnJl cV9wb2xpY3kgKnBvbGljeSA9IGNwdWZyZXFfY3B1X2dldChjcHUpOworCisJaWYgKCFjcHVmcmVx X2ZyZXF1ZW5jeV9nZXRfdGFibGUoY3B1KSkKKwkJcmV0dXJuOworCiAJaWYgKHBvbGljeSAmJiAh cG9saWN5X2lzX3NoYXJlZChwb2xpY3kpKSB7CiAJCXByX2RlYnVnKCIlczogRnJlZSBzeXNmcyBz dGF0XG4iLCBfX2Z1bmNfXyk7CiAJCXN5c2ZzX3JlbW92ZV9ncm91cCgmcG9saWN5LT5rb2JqLCAm c3RhdHNfYXR0cl9ncm91cCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NwdWZyZXEvZXh5bm9zLWNw dWZyZXEuYyBiL2RyaXZlcnMvY3B1ZnJlcS9leHlub3MtY3B1ZnJlcS5jCmluZGV4IDQyNjhlNDYu LjkzZjJlZWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY3B1ZnJlcS9leHlub3MtY3B1ZnJlcS5jCisr KyBiL2RyaXZlcnMvY3B1ZnJlcS9leHlub3MtY3B1ZnJlcS5jCkBAIC0yNDksMTkgKzI0OSw3IEBA IHN0YXRpYyBpbnQgZXh5bm9zX2NwdWZyZXFfY3B1X2luaXQoc3RydWN0IGNwdWZyZXFfcG9saWN5 ICpwb2xpY3kpCiAJLyogc2V0IHRoZSB0cmFuc2l0aW9uIGxhdGVuY3kgdmFsdWUgKi8KIAlwb2xp Y3ktPmNwdWluZm8udHJhbnNpdGlvbl9sYXRlbmN5ID0gMTAwMDAwOwogCi0JLyoKLQkgKiBFWFlO T1M0IG11bHRpLWNvcmUgcHJvY2Vzc29ycyBoYXMgMiBjb3JlcwotCSAqIHRoYXQgdGhlIGZyZXF1 ZW5jeSBjYW5ub3QgYmUgc2V0IGluZGVwZW5kZW50bHkuCi0JICogRWFjaCBjcHUgaXMgYm91bmQg dG8gdGhlIHNhbWUgc3BlZWQuCi0JICogU28gdGhlIGFmZmVjdGVkIGNwdSBpcyBhbGwgb2YgdGhl IGNwdXMuCi0JICovCi0JaWYgKG51bV9vbmxpbmVfY3B1cygpID09IDEpIHsKLQkJY3B1bWFza19j b3B5KHBvbGljeS0+cmVsYXRlZF9jcHVzLCBjcHVfcG9zc2libGVfbWFzayk7Ci0JCWNwdW1hc2tf Y29weShwb2xpY3ktPmNwdXMsIGNwdV9vbmxpbmVfbWFzayk7Ci0JfSBlbHNlIHsKLQkJcG9saWN5 LT5zaGFyZWRfdHlwZSA9IENQVUZSRVFfU0hBUkVEX1RZUEVfQU5ZOwotCQljcHVtYXNrX3NldGFs bChwb2xpY3ktPmNwdXMpOwotCX0KKwljcHVtYXNrX3NldGFsbChwb2xpY3ktPmNwdXMpOwogCiAJ cmV0dXJuIGNwdWZyZXFfZnJlcXVlbmN5X3RhYmxlX2NwdWluZm8ocG9saWN5LCBleHlub3NfaW5m by0+ZnJlcV90YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NwdWZyZXEvaW50ZWxfcHN0 YXRlLmMgYi9kcml2ZXJzL2NwdWZyZXEvaW50ZWxfcHN0YXRlLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uODZhZDQ4MgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvY3B1 ZnJlcS9pbnRlbF9wc3RhdGUuYwpAQCAtMCwwICsxLDgwNiBAQAorLyoKKyAqIGNwdWZyZXFfc25i LmM6IE5hdGl2ZSBQIHN0YXRlIG1hbmFnZW1lbnQgZm9yIEludGVsIHByb2Nlc3NvcnMKKyAqCisg KiAoQykgQ29weXJpZ2h0IDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KKyAqIEF1dGhvcjogRGlyayBC cmFuZGV3aWUgPGRpcmsuai5icmFuZGV3aWVAaW50ZWwuY29tPgorICoKKyAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lv biAyCisgKiBvZiB0aGUgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+ CisjaW5jbHVkZSA8bGludXgva2VybmVsX3N0YXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4KKyNpbmNsdWRlIDxsaW51eC9rdGltZS5oPgorI2luY2x1ZGUgPGxpbnV4L2hydGltZXIuaD4K KyNpbmNsdWRlIDxsaW51eC90aWNrLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1 ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvbGlzdC5oPgorI2luY2x1ZGUgPGxp bnV4L2NwdS5oPgorI2luY2x1ZGUgPGxpbnV4L2NwdWZyZXEuaD4KKyNpbmNsdWRlIDxsaW51eC9z eXNmcy5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvZnMuaD4K KyNpbmNsdWRlIDxsaW51eC9kZWJ1Z2ZzLmg+CisjaW5jbHVkZSA8dHJhY2UvZXZlbnRzL3Bvd2Vy Lmg+CisKKyNpbmNsdWRlIDxhc20vZGl2NjQuaD4KKyNpbmNsdWRlIDxhc20vbXNyLmg+CisjaW5j bHVkZSA8YXNtL2NwdV9kZXZpY2VfaWQuaD4KKworI2RlZmluZSBTQU1QTEVfQ09VTlQJCTMKKwor I2RlZmluZSBGUkFDX0JJVFMgOAorI2RlZmluZSBpbnRfdG9mcChYKSAoKGludDY0X3QpKFgpIDw8 IEZSQUNfQklUUykKKyNkZWZpbmUgZnBfdG9pbnQoWCkgKChYKSA+PiBGUkFDX0JJVFMpCisKK3N0 YXRpYyBpbmxpbmUgaW50MzJfdCBtdWxfZnAoaW50MzJfdCB4LCBpbnQzMl90IHkpCit7CisJcmV0 dXJuICgoaW50NjRfdCl4ICogKGludDY0X3QpeSkgPj4gRlJBQ19CSVRTOworfQorCitzdGF0aWMg aW5saW5lIGludDMyX3QgZGl2X2ZwKGludDMyX3QgeCwgaW50MzJfdCB5KQoreworCXJldHVybiBk aXZfczY0KChpbnQ2NF90KXggPDwgRlJBQ19CSVRTLCAoaW50NjRfdCl5KTsKK30KKworc3RydWN0 IHNhbXBsZSB7CisJa3RpbWVfdCBzdGFydF90aW1lOworCWt0aW1lX3QgZW5kX3RpbWU7CisJaW50 IGNvcmVfcGN0X2J1c3k7CisJaW50IHBzdGF0ZV9wY3RfYnVzeTsKKwl1NjQgZHVyYXRpb25fdXM7 CisJdTY0IGlkbGV0aW1lX3VzOworCXU2NCBhcGVyZjsKKwl1NjQgbXBlcmY7CisJaW50IGZyZXE7 Cit9OworCitzdHJ1Y3QgcHN0YXRlX2RhdGEgeworCWludAljdXJyZW50X3BzdGF0ZTsKKwlpbnQJ bWluX3BzdGF0ZTsKKwlpbnQJbWF4X3BzdGF0ZTsKKwlpbnQJdHVyYm9fcHN0YXRlOworfTsKKwor c3RydWN0IF9waWQgeworCWludCBzZXRwb2ludDsKKwlpbnQzMl90IGludGVncmFsOworCWludDMy X3QgcF9nYWluOworCWludDMyX3QgaV9nYWluOworCWludDMyX3QgZF9nYWluOworCWludCBkZWFk YmFuZDsKKwlpbnQgbGFzdF9lcnI7Cit9OworCitzdHJ1Y3QgY3B1ZGF0YSB7CisJaW50IGNwdTsK KworCWNoYXIgbmFtZVs2NF07CisKKwlzdHJ1Y3QgdGltZXJfbGlzdCB0aW1lcjsKKworCXN0cnVj dCBwc3RhdGVfYWRqdXN0X3BvbGljeSAqcHN0YXRlX3BvbGljeTsKKwlzdHJ1Y3QgcHN0YXRlX2Rh dGEgcHN0YXRlOworCXN0cnVjdCBfcGlkIHBpZDsKKwlzdHJ1Y3QgX3BpZCBpZGxlX3BpZDsKKwor CWludCBtaW5fcHN0YXRlX2NvdW50OworCWludCBpZGxlX21vZGU7CisKKwlrdGltZV90IHByZXZf c2FtcGxlOworCXU2NAlwcmV2X2lkbGVfdGltZV91czsKKwl1NjQJcHJldl9hcGVyZjsKKwl1NjQJ cHJldl9tcGVyZjsKKwlpbnQJc2FtcGxlX3B0cjsKKwlzdHJ1Y3Qgc2FtcGxlIHNhbXBsZXNbU0FN UExFX0NPVU5UXTsKK307CisKK3N0YXRpYyBzdHJ1Y3QgY3B1ZGF0YSAqKmFsbF9jcHVfZGF0YTsK K3N0cnVjdCBwc3RhdGVfYWRqdXN0X3BvbGljeSB7CisJaW50IHNhbXBsZV9yYXRlX21zOworCWlu dCBkZWFkYmFuZDsKKwlpbnQgc2V0cG9pbnQ7CisJaW50IHBfZ2Fpbl9wY3Q7CisJaW50IGRfZ2Fp bl9wY3Q7CisJaW50IGlfZ2Fpbl9wY3Q7Cit9OworCitzdGF0aWMgc3RydWN0IHBzdGF0ZV9hZGp1 c3RfcG9saWN5IGRlZmF1bHRfcG9saWN5ID0geworCS5zYW1wbGVfcmF0ZV9tcyA9IDEwLAorCS5k ZWFkYmFuZCA9IDAsCisJLnNldHBvaW50ID0gMTA5LAorCS5wX2dhaW5fcGN0ID0gMTcsCisJLmRf Z2Fpbl9wY3QgPSAwLAorCS5pX2dhaW5fcGN0ID0gNCwKK307CisKK3N0cnVjdCBwZXJmX2xpbWl0 cyB7CisJaW50IG5vX3R1cmJvOworCWludCBtYXhfcGVyZl9wY3Q7CisJaW50IG1pbl9wZXJmX3Bj dDsKKwlpbnQzMl90IG1heF9wZXJmOworCWludDMyX3QgbWluX3BlcmY7Cit9OworCitzdGF0aWMg c3RydWN0IHBlcmZfbGltaXRzIGxpbWl0cyA9IHsKKwkubm9fdHVyYm8gPSAwLAorCS5tYXhfcGVy Zl9wY3QgPSAxMDAsCisJLm1heF9wZXJmID0gaW50X3RvZnAoMSksCisJLm1pbl9wZXJmX3BjdCA9 IDAsCisJLm1pbl9wZXJmID0gMCwKK307CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBwaWRfcmVzZXQo c3RydWN0IF9waWQgKnBpZCwgaW50IHNldHBvaW50LCBpbnQgYnVzeSwKKwkJCWludCBkZWFkYmFu ZCwgaW50IGludGVncmFsKSB7CisJcGlkLT5zZXRwb2ludCA9IHNldHBvaW50OworCXBpZC0+ZGVh ZGJhbmQgID0gZGVhZGJhbmQ7CisJcGlkLT5pbnRlZ3JhbCAgPSBpbnRfdG9mcChpbnRlZ3JhbCk7 CisJcGlkLT5sYXN0X2VyciAgPSBzZXRwb2ludCAtIGJ1c3k7Cit9CisKK3N0YXRpYyBpbmxpbmUg dm9pZCBwaWRfcF9nYWluX3NldChzdHJ1Y3QgX3BpZCAqcGlkLCBpbnQgcGVyY2VudCkKK3sKKwlw aWQtPnBfZ2FpbiA9IGRpdl9mcChpbnRfdG9mcChwZXJjZW50KSwgaW50X3RvZnAoMTAwKSk7Cit9 CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBwaWRfaV9nYWluX3NldChzdHJ1Y3QgX3BpZCAqcGlkLCBp bnQgcGVyY2VudCkKK3sKKwlwaWQtPmlfZ2FpbiA9IGRpdl9mcChpbnRfdG9mcChwZXJjZW50KSwg aW50X3RvZnAoMTAwKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBwaWRfZF9nYWluX3NldChz dHJ1Y3QgX3BpZCAqcGlkLCBpbnQgcGVyY2VudCkKK3sKKworCXBpZC0+ZF9nYWluID0gZGl2X2Zw KGludF90b2ZwKHBlcmNlbnQpLCBpbnRfdG9mcCgxMDApKTsKK30KKworc3RhdGljIHNpZ25lZCBp bnQgcGlkX2NhbGMoc3RydWN0IF9waWQgKnBpZCwgaW50IGJ1c3kpCit7CisJc2lnbmVkIGludCBl cnIsIHJlc3VsdDsKKwlpbnQzMl90IHB0ZXJtLCBkdGVybSwgZnBfZXJyb3I7CisJaW50MzJfdCBp bnRlZ3JhbF9saW1pdDsKKworCWVyciA9IHBpZC0+c2V0cG9pbnQgLSBidXN5OworCWZwX2Vycm9y ID0gaW50X3RvZnAoZXJyKTsKKworCWlmIChhYnMoZXJyKSA8PSBwaWQtPmRlYWRiYW5kKQorCQly ZXR1cm4gMDsKKworCXB0ZXJtID0gbXVsX2ZwKHBpZC0+cF9nYWluLCBmcF9lcnJvcik7CisKKwlw aWQtPmludGVncmFsICs9IGZwX2Vycm9yOworCisJLyogbGltaXQgdGhlIGludGVncmFsIHRlcm0g Ki8KKwlpbnRlZ3JhbF9saW1pdCA9IGludF90b2ZwKDMwKTsKKwlpZiAocGlkLT5pbnRlZ3JhbCA+ IGludGVncmFsX2xpbWl0KQorCQlwaWQtPmludGVncmFsID0gaW50ZWdyYWxfbGltaXQ7CisJaWYg KHBpZC0+aW50ZWdyYWwgPCAtaW50ZWdyYWxfbGltaXQpCisJCXBpZC0+aW50ZWdyYWwgPSAtaW50 ZWdyYWxfbGltaXQ7CisKKwlkdGVybSA9IG11bF9mcChwaWQtPmRfZ2FpbiwgKGVyciAtIHBpZC0+ bGFzdF9lcnIpKTsKKwlwaWQtPmxhc3RfZXJyID0gZXJyOworCisJcmVzdWx0ID0gcHRlcm0gKyBt dWxfZnAocGlkLT5pbnRlZ3JhbCwgcGlkLT5pX2dhaW4pICsgZHRlcm07CisKKwlyZXR1cm4gKHNp Z25lZCBpbnQpZnBfdG9pbnQocmVzdWx0KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGludGVs X3BzdGF0ZV9idXN5X3BpZF9yZXNldChzdHJ1Y3QgY3B1ZGF0YSAqY3B1KQoreworCXBpZF9wX2dh aW5fc2V0KCZjcHUtPnBpZCwgY3B1LT5wc3RhdGVfcG9saWN5LT5wX2dhaW5fcGN0KTsKKwlwaWRf ZF9nYWluX3NldCgmY3B1LT5waWQsIGNwdS0+cHN0YXRlX3BvbGljeS0+ZF9nYWluX3BjdCk7CisJ cGlkX2lfZ2Fpbl9zZXQoJmNwdS0+cGlkLCBjcHUtPnBzdGF0ZV9wb2xpY3ktPmlfZ2Fpbl9wY3Qp OworCisJcGlkX3Jlc2V0KCZjcHUtPnBpZCwKKwkJY3B1LT5wc3RhdGVfcG9saWN5LT5zZXRwb2lu dCwKKwkJMTAwLAorCQljcHUtPnBzdGF0ZV9wb2xpY3ktPmRlYWRiYW5kLAorCQkwKTsKK30KKwor c3RhdGljIGlubGluZSB2b2lkIGludGVsX3BzdGF0ZV9pZGxlX3BpZF9yZXNldChzdHJ1Y3QgY3B1 ZGF0YSAqY3B1KQoreworCXBpZF9wX2dhaW5fc2V0KCZjcHUtPmlkbGVfcGlkLCBjcHUtPnBzdGF0 ZV9wb2xpY3ktPnBfZ2Fpbl9wY3QpOworCXBpZF9kX2dhaW5fc2V0KCZjcHUtPmlkbGVfcGlkLCBj cHUtPnBzdGF0ZV9wb2xpY3ktPmRfZ2Fpbl9wY3QpOworCXBpZF9pX2dhaW5fc2V0KCZjcHUtPmlk bGVfcGlkLCBjcHUtPnBzdGF0ZV9wb2xpY3ktPmlfZ2Fpbl9wY3QpOworCisJcGlkX3Jlc2V0KCZj cHUtPmlkbGVfcGlkLAorCQk3NSwKKwkJNTAsCisJCWNwdS0+cHN0YXRlX3BvbGljeS0+ZGVhZGJh bmQsCisJCTApOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfcHN0YXRlX3Jlc2V0X2Fs bF9waWQodm9pZCkKK3sKKwl1bnNpZ25lZCBpbnQgY3B1OworCWZvcl9lYWNoX29ubGluZV9jcHUo Y3B1KSB7CisJCWlmIChhbGxfY3B1X2RhdGFbY3B1XSkKKwkJCWludGVsX3BzdGF0ZV9idXN5X3Bp ZF9yZXNldChhbGxfY3B1X2RhdGFbY3B1XSk7CisJfQorfQorCisvKioqKioqKioqKioqKioqKioq KioqKioqKiogZGVidWdmcyBiZWdpbiAqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMg aW50IHBpZF9wYXJhbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKK3sKKwkqKHUzMiAqKWRhdGEg PSB2YWw7CisJaW50ZWxfcHN0YXRlX3Jlc2V0X2FsbF9waWQoKTsKKwlyZXR1cm4gMDsKK30KK3N0 YXRpYyBpbnQgcGlkX3BhcmFtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbCkKK3sKKwkqdmFsID0g Kih1MzIgKilkYXRhOworCXJldHVybiAwOworfQorREVGSU5FX1NJTVBMRV9BVFRSSUJVVEUoZm9w c19waWRfcGFyYW0sIHBpZF9wYXJhbV9nZXQsCisJCQlwaWRfcGFyYW1fc2V0LCAiJWxsdVxuIik7 CisKK3N0cnVjdCBwaWRfcGFyYW0geworCWNoYXIgKm5hbWU7CisJdm9pZCAqdmFsdWU7Cit9Owor CitzdGF0aWMgc3RydWN0IHBpZF9wYXJhbSBwaWRfZmlsZXNbXSA9IHsKKwl7InNhbXBsZV9yYXRl X21zIiwgJmRlZmF1bHRfcG9saWN5LnNhbXBsZV9yYXRlX21zfSwKKwl7ImRfZ2Fpbl9wY3QiLCAm ZGVmYXVsdF9wb2xpY3kuZF9nYWluX3BjdH0sCisJeyJpX2dhaW5fcGN0IiwgJmRlZmF1bHRfcG9s aWN5LmlfZ2Fpbl9wY3R9LAorCXsiZGVhZGJhbmQiLCAmZGVmYXVsdF9wb2xpY3kuZGVhZGJhbmR9 LAorCXsic2V0cG9pbnQiLCAmZGVmYXVsdF9wb2xpY3kuc2V0cG9pbnR9LAorCXsicF9nYWluX3Bj dCIsICZkZWZhdWx0X3BvbGljeS5wX2dhaW5fcGN0fSwKKwl7TlVMTCwgTlVMTH0KK307CisKK3N0 YXRpYyBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BhcmVudDsKK3N0YXRpYyB2b2lkIGludGVsX3Bz dGF0ZV9kZWJ1Z19leHBvc2VfcGFyYW1zKHZvaWQpCit7CisJaW50IGkgPSAwOworCisJZGVidWdm c19wYXJlbnQgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoInBzdGF0ZV9zbmIiLCBOVUxMKTsKKwlpZiAo SVNfRVJSX09SX05VTEwoZGVidWdmc19wYXJlbnQpKQorCQlyZXR1cm47CisJd2hpbGUgKHBpZF9m aWxlc1tpXS5uYW1lKSB7CisJCWRlYnVnZnNfY3JlYXRlX2ZpbGUocGlkX2ZpbGVzW2ldLm5hbWUs IDA2NjAsCisJCQkJZGVidWdmc19wYXJlbnQsIHBpZF9maWxlc1tpXS52YWx1ZSwKKwkJCQkmZm9w c19waWRfcGFyYW0pOworCQlpKys7CisJfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioq KiogZGVidWdmcyBlbmQgKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioq KioqKioqKioqKioqKiogc3lzZnMgYmVnaW4gKioqKioqKioqKioqKioqKioqKioqKioqLworI2Rl ZmluZSBzaG93X29uZShmaWxlX25hbWUsIG9iamVjdCkJCQkJCVwKKwlzdGF0aWMgc3NpemVfdCBz aG93XyMjZmlsZV9uYW1lCQkJCQlcCisJKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0 cmlidXRlICphdHRyLCBjaGFyICpidWYpCVwKKwl7CQkJCQkJCQlcCisJCXJldHVybiBzcHJpbnRm KGJ1ZiwgIiV1XG4iLCBsaW1pdHMub2JqZWN0KTsJCVwKKwl9CisKK3N0YXRpYyBzc2l6ZV90IHN0 b3JlX25vX3R1cmJvKHN0cnVjdCBrb2JqZWN0ICphLCBzdHJ1Y3QgYXR0cmlidXRlICpiLAorCQkJ CWNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworCXVuc2lnbmVkIGludCBpbnB1dDsK KwlpbnQgcmV0OworCXJldCA9IHNzY2FuZihidWYsICIldSIsICZpbnB1dCk7CisJaWYgKHJldCAh PSAxKQorCQlyZXR1cm4gLUVJTlZBTDsKKwlsaW1pdHMubm9fdHVyYm8gPSBjbGFtcF90KGludCwg aW5wdXQsIDAgLCAxKTsKKworCXJldHVybiBjb3VudDsKK30KKworc3RhdGljIHNzaXplX3Qgc3Rv cmVfbWF4X3BlcmZfcGN0KHN0cnVjdCBrb2JqZWN0ICphLCBzdHJ1Y3QgYXR0cmlidXRlICpiLAor CQkJCWNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworCXVuc2lnbmVkIGludCBpbnB1 dDsKKwlpbnQgcmV0OworCXJldCA9IHNzY2FuZihidWYsICIldSIsICZpbnB1dCk7CisJaWYgKHJl dCAhPSAxKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWxpbWl0cy5tYXhfcGVyZl9wY3QgPSBjbGFt cF90KGludCwgaW5wdXQsIDAgLCAxMDApOworCWxpbWl0cy5tYXhfcGVyZiA9IGRpdl9mcChpbnRf dG9mcChsaW1pdHMubWF4X3BlcmZfcGN0KSwgaW50X3RvZnAoMTAwKSk7CisJcmV0dXJuIGNvdW50 OworfQorCitzdGF0aWMgc3NpemVfdCBzdG9yZV9taW5fcGVyZl9wY3Qoc3RydWN0IGtvYmplY3Qg KmEsIHN0cnVjdCBhdHRyaWJ1dGUgKmIsCisJCQkJY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291 bnQpCit7CisJdW5zaWduZWQgaW50IGlucHV0OworCWludCByZXQ7CisJcmV0ID0gc3NjYW5mKGJ1 ZiwgIiV1IiwgJmlucHV0KTsKKwlpZiAocmV0ICE9IDEpCisJCXJldHVybiAtRUlOVkFMOworCWxp bWl0cy5taW5fcGVyZl9wY3QgPSBjbGFtcF90KGludCwgaW5wdXQsIDAgLCAxMDApOworCWxpbWl0 cy5taW5fcGVyZiA9IGRpdl9mcChpbnRfdG9mcChsaW1pdHMubWluX3BlcmZfcGN0KSwgaW50X3Rv ZnAoMTAwKSk7CisKKwlyZXR1cm4gY291bnQ7Cit9CisKK3Nob3dfb25lKG5vX3R1cmJvLCBub190 dXJibyk7CitzaG93X29uZShtYXhfcGVyZl9wY3QsIG1heF9wZXJmX3BjdCk7CitzaG93X29uZSht aW5fcGVyZl9wY3QsIG1pbl9wZXJmX3BjdCk7CisKK2RlZmluZV9vbmVfZ2xvYmFsX3J3KG5vX3R1 cmJvKTsKK2RlZmluZV9vbmVfZ2xvYmFsX3J3KG1heF9wZXJmX3BjdCk7CitkZWZpbmVfb25lX2ds b2JhbF9ydyhtaW5fcGVyZl9wY3QpOworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqaW50ZWxf cHN0YXRlX2F0dHJpYnV0ZXNbXSA9IHsKKwkmbm9fdHVyYm8uYXR0ciwKKwkmbWF4X3BlcmZfcGN0 LmF0dHIsCisJJm1pbl9wZXJmX3BjdC5hdHRyLAorCU5VTEwKK307CisKK3N0YXRpYyBzdHJ1Y3Qg YXR0cmlidXRlX2dyb3VwIGludGVsX3BzdGF0ZV9hdHRyX2dyb3VwID0geworCS5hdHRycyA9IGlu dGVsX3BzdGF0ZV9hdHRyaWJ1dGVzLAorfTsKK3N0YXRpYyBzdHJ1Y3Qga29iamVjdCAqaW50ZWxf cHN0YXRlX2tvYmplY3Q7CisKK3N0YXRpYyB2b2lkIGludGVsX3BzdGF0ZV9zeXNmc19leHBvc2Vf cGFyYW1zKHZvaWQpCit7CisJaW50IHJjOworCisJaW50ZWxfcHN0YXRlX2tvYmplY3QgPSBrb2Jq ZWN0X2NyZWF0ZV9hbmRfYWRkKCJpbnRlbF9wc3RhdGUiLAorCQkJCQkJJmNwdV9zdWJzeXMuZGV2 X3Jvb3QtPmtvYmopOworCUJVR19PTighaW50ZWxfcHN0YXRlX2tvYmplY3QpOworCXJjID0gc3lz ZnNfY3JlYXRlX2dyb3VwKGludGVsX3BzdGF0ZV9rb2JqZWN0LAorCQkJCSZpbnRlbF9wc3RhdGVf YXR0cl9ncm91cCk7CisJQlVHX09OKHJjKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioq KioqIHN5c2ZzIGVuZCAqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBpbnQgaW50 ZWxfcHN0YXRlX21pbl9wc3RhdGUodm9pZCkKK3sKKwl1NjQgdmFsdWU7CisJcmRtc3JsKDB4Q0Us IHZhbHVlKTsKKwlyZXR1cm4gKHZhbHVlID4+IDQwKSAmIDB4RkY7Cit9CisKK3N0YXRpYyBpbnQg aW50ZWxfcHN0YXRlX21heF9wc3RhdGUodm9pZCkKK3sKKwl1NjQgdmFsdWU7CisJcmRtc3JsKDB4 Q0UsIHZhbHVlKTsKKwlyZXR1cm4gKHZhbHVlID4+IDgpICYgMHhGRjsKK30KKworc3RhdGljIGlu dCBpbnRlbF9wc3RhdGVfdHVyYm9fcHN0YXRlKHZvaWQpCit7CisJdTY0IHZhbHVlOworCWludCBu b250LCByZXQ7CisJcmRtc3JsKDB4MUFELCB2YWx1ZSk7CisJbm9udCA9IGludGVsX3BzdGF0ZV9t YXhfcHN0YXRlKCk7CisJcmV0ID0gKCh2YWx1ZSkgJiAyNTUpOworCWlmIChyZXQgPD0gbm9udCkK KwkJcmV0ID0gbm9udDsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBpbnRlbF9wc3Rh dGVfZ2V0X21pbl9tYXgoc3RydWN0IGNwdWRhdGEgKmNwdSwgaW50ICptaW4sIGludCAqbWF4KQor eworCWludCBtYXhfcGVyZiA9IGNwdS0+cHN0YXRlLnR1cmJvX3BzdGF0ZTsKKwlpbnQgbWluX3Bl cmY7CisJaWYgKGxpbWl0cy5ub190dXJibykKKwkJbWF4X3BlcmYgPSBjcHUtPnBzdGF0ZS5tYXhf cHN0YXRlOworCisJbWF4X3BlcmYgPSBmcF90b2ludChtdWxfZnAoaW50X3RvZnAobWF4X3BlcmYp LCBsaW1pdHMubWF4X3BlcmYpKTsKKwkqbWF4ID0gY2xhbXBfdChpbnQsIG1heF9wZXJmLAorCQkJ Y3B1LT5wc3RhdGUubWluX3BzdGF0ZSwgY3B1LT5wc3RhdGUudHVyYm9fcHN0YXRlKTsKKworCW1p bl9wZXJmID0gZnBfdG9pbnQobXVsX2ZwKGludF90b2ZwKG1heF9wZXJmKSwgbGltaXRzLm1pbl9w ZXJmKSk7CisJKm1pbiA9IGNsYW1wX3QoaW50LCBtaW5fcGVyZiwKKwkJCWNwdS0+cHN0YXRlLm1p bl9wc3RhdGUsIG1heF9wZXJmKTsKK30KKworc3RhdGljIHZvaWQgaW50ZWxfcHN0YXRlX3NldF9w c3RhdGUoc3RydWN0IGNwdWRhdGEgKmNwdSwgaW50IHBzdGF0ZSkKK3sKKwlpbnQgbWF4X3BlcmYs IG1pbl9wZXJmOworCisJaW50ZWxfcHN0YXRlX2dldF9taW5fbWF4KGNwdSwgJm1pbl9wZXJmLCAm bWF4X3BlcmYpOworCisJcHN0YXRlID0gY2xhbXBfdChpbnQsIHBzdGF0ZSwgbWluX3BlcmYsIG1h eF9wZXJmKTsKKworCWlmIChwc3RhdGUgPT0gY3B1LT5wc3RhdGUuY3VycmVudF9wc3RhdGUpCisJ CXJldHVybjsKKworI2lmbmRlZiBNT0RVTEUKKwl0cmFjZV9jcHVfZnJlcXVlbmN5KHBzdGF0ZSAq IDEwMDAwMCwgY3B1LT5jcHUpOworI2VuZGlmCisJY3B1LT5wc3RhdGUuY3VycmVudF9wc3RhdGUg PSBwc3RhdGU7CisJd3Jtc3JsKE1TUl9JQTMyX1BFUkZfQ1RMLCBwc3RhdGUgPDwgOCk7CisKK30K Kworc3RhdGljIGlubGluZSB2b2lkIGludGVsX3BzdGF0ZV9wc3RhdGVfaW5jcmVhc2Uoc3RydWN0 IGNwdWRhdGEgKmNwdSwgaW50IHN0ZXBzKQoreworCWludCB0YXJnZXQ7CisJdGFyZ2V0ID0gY3B1 LT5wc3RhdGUuY3VycmVudF9wc3RhdGUgKyBzdGVwczsKKworCWludGVsX3BzdGF0ZV9zZXRfcHN0 YXRlKGNwdSwgdGFyZ2V0KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGludGVsX3BzdGF0ZV9w c3RhdGVfZGVjcmVhc2Uoc3RydWN0IGNwdWRhdGEgKmNwdSwgaW50IHN0ZXBzKQoreworCWludCB0 YXJnZXQ7CisJdGFyZ2V0ID0gY3B1LT5wc3RhdGUuY3VycmVudF9wc3RhdGUgLSBzdGVwczsKKwlp bnRlbF9wc3RhdGVfc2V0X3BzdGF0ZShjcHUsIHRhcmdldCk7Cit9CisKK3N0YXRpYyB2b2lkIGlu dGVsX3BzdGF0ZV9nZXRfY3B1X3BzdGF0ZXMoc3RydWN0IGNwdWRhdGEgKmNwdSkKK3sKKwlzcHJp bnRmKGNwdS0+bmFtZSwgIkludGVsIDJuZCBnZW5lcmF0aW9uIGNvcmUiKTsKKworCWNwdS0+cHN0 YXRlLm1pbl9wc3RhdGUgPSBpbnRlbF9wc3RhdGVfbWluX3BzdGF0ZSgpOworCWNwdS0+cHN0YXRl Lm1heF9wc3RhdGUgPSBpbnRlbF9wc3RhdGVfbWF4X3BzdGF0ZSgpOworCWNwdS0+cHN0YXRlLnR1 cmJvX3BzdGF0ZSA9IGludGVsX3BzdGF0ZV90dXJib19wc3RhdGUoKTsKKworCS8qCisJICogZ290 byBtYXggcHN0YXRlIHNvIHdlIGRvbid0IHNsb3cgdXAgYm9vdCBpZiB3ZSBhcmUgYnVpbHQtaW4g aWYgd2UgYXJlCisJICogYSBtb2R1bGUgd2Ugd2lsbCB0YWtlIGNhcmUgb2YgaXQgZHVyaW5nIG5v cm1hbCBvcGVyYXRpb24KKwkgKi8KKwlpbnRlbF9wc3RhdGVfc2V0X3BzdGF0ZShjcHUsIGNwdS0+ cHN0YXRlLm1heF9wc3RhdGUpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfcHN0YXRl X2NhbGNfYnVzeShzdHJ1Y3QgY3B1ZGF0YSAqY3B1LAorCQkJCQlzdHJ1Y3Qgc2FtcGxlICpzYW1w bGUpCit7CisJdTY0IGNvcmVfcGN0OworCXNhbXBsZS0+cHN0YXRlX3BjdF9idXN5ID0gMTAwIC0g ZGl2NjRfdTY0KAorCQkJCQlzYW1wbGUtPmlkbGV0aW1lX3VzICogMTAwLAorCQkJCQlzYW1wbGUt PmR1cmF0aW9uX3VzKTsKKwljb3JlX3BjdCA9IGRpdjY0X3U2NChzYW1wbGUtPmFwZXJmICogMTAw LCBzYW1wbGUtPm1wZXJmKTsKKwlzYW1wbGUtPmZyZXEgPSBjcHUtPnBzdGF0ZS50dXJib19wc3Rh dGUgKiBjb3JlX3BjdCAqIDEwMDA7CisKKwlzYW1wbGUtPmNvcmVfcGN0X2J1c3kgPSBzYW1wbGUt PnBzdGF0ZV9wY3RfYnVzeSAqIGNvcmVfcGN0IC8gMTAwOworfQorCitzdGF0aWMgaW5saW5lIHZv aWQgaW50ZWxfcHN0YXRlX3NhbXBsZShzdHJ1Y3QgY3B1ZGF0YSAqY3B1KQoreworCWt0aW1lX3Qg bm93OworCXU2NCBpZGxlX3RpbWVfdXM7CisJdTY0IGFwZXJmLCBtcGVyZjsKKworCW5vdyA9IGt0 aW1lX2dldCgpOworCWlkbGVfdGltZV91cyA9IGdldF9jcHVfaWRsZV90aW1lX3VzKGNwdS0+Y3B1 LCBOVUxMKTsKKworCXJkbXNybChNU1JfSUEzMl9BUEVSRiwgYXBlcmYpOworCXJkbXNybChNU1Jf SUEzMl9NUEVSRiwgbXBlcmYpOworCS8qIGZvciB0aGUgZmlyc3Qgc2FtcGxlLCBkb24ndCBhY3R1 YWxseSByZWNvcmQgYSBzYW1wbGUsIGp1c3QKKwkgKiBzZXQgdGhlIGJhc2VsaW5lICovCisJaWYg KGNwdS0+cHJldl9pZGxlX3RpbWVfdXMgPiAwKSB7CisJCWNwdS0+c2FtcGxlX3B0ciA9IChjcHUt PnNhbXBsZV9wdHIgKyAxKSAlIFNBTVBMRV9DT1VOVDsKKwkJY3B1LT5zYW1wbGVzW2NwdS0+c2Ft cGxlX3B0cl0uc3RhcnRfdGltZSA9IGNwdS0+cHJldl9zYW1wbGU7CisJCWNwdS0+c2FtcGxlc1tj cHUtPnNhbXBsZV9wdHJdLmVuZF90aW1lID0gbm93OworCQljcHUtPnNhbXBsZXNbY3B1LT5zYW1w bGVfcHRyXS5kdXJhdGlvbl91cyA9CisJCQlrdGltZV91c19kZWx0YShub3csIGNwdS0+cHJldl9z YW1wbGUpOworCQljcHUtPnNhbXBsZXNbY3B1LT5zYW1wbGVfcHRyXS5pZGxldGltZV91cyA9CisJ CQlpZGxlX3RpbWVfdXMgLSBjcHUtPnByZXZfaWRsZV90aW1lX3VzOworCisJCWNwdS0+c2FtcGxl c1tjcHUtPnNhbXBsZV9wdHJdLmFwZXJmID0gYXBlcmY7CisJCWNwdS0+c2FtcGxlc1tjcHUtPnNh bXBsZV9wdHJdLm1wZXJmID0gbXBlcmY7CisJCWNwdS0+c2FtcGxlc1tjcHUtPnNhbXBsZV9wdHJd LmFwZXJmIC09IGNwdS0+cHJldl9hcGVyZjsKKwkJY3B1LT5zYW1wbGVzW2NwdS0+c2FtcGxlX3B0 cl0ubXBlcmYgLT0gY3B1LT5wcmV2X21wZXJmOworCisJCWludGVsX3BzdGF0ZV9jYWxjX2J1c3ko Y3B1LCAmY3B1LT5zYW1wbGVzW2NwdS0+c2FtcGxlX3B0cl0pOworCX0KKworCWNwdS0+cHJldl9z YW1wbGUgPSBub3c7CisJY3B1LT5wcmV2X2lkbGVfdGltZV91cyA9IGlkbGVfdGltZV91czsKKwlj cHUtPnByZXZfYXBlcmYgPSBhcGVyZjsKKwljcHUtPnByZXZfbXBlcmYgPSBtcGVyZjsKK30KKwor c3RhdGljIGlubGluZSB2b2lkIGludGVsX3BzdGF0ZV9zZXRfc2FtcGxlX3RpbWUoc3RydWN0IGNw dWRhdGEgKmNwdSkKK3sKKwlpbnQgc2FtcGxlX3RpbWUsIGRlbGF5OworCisJc2FtcGxlX3RpbWUg PSBjcHUtPnBzdGF0ZV9wb2xpY3ktPnNhbXBsZV9yYXRlX21zOworCWRlbGF5ID0gbXNlY3NfdG9f amlmZmllcyhzYW1wbGVfdGltZSk7CisJZGVsYXkgLT0gamlmZmllcyAlIGRlbGF5OworCW1vZF90 aW1lcl9waW5uZWQoJmNwdS0+dGltZXIsIGppZmZpZXMgKyBkZWxheSk7Cit9CisKK3N0YXRpYyBp bmxpbmUgdm9pZCBpbnRlbF9wc3RhdGVfaWRsZV9tb2RlKHN0cnVjdCBjcHVkYXRhICpjcHUpCit7 CisJY3B1LT5pZGxlX21vZGUgPSAxOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfcHN0 YXRlX25vcm1hbF9tb2RlKHN0cnVjdCBjcHVkYXRhICpjcHUpCit7CisJY3B1LT5pZGxlX21vZGUg PSAwOworfQorCitzdGF0aWMgaW5saW5lIGludCBpbnRlbF9wc3RhdGVfZ2V0X3NjYWxlZF9idXN5 KHN0cnVjdCBjcHVkYXRhICpjcHUpCit7CisJaW50MzJfdCBidXN5X3NjYWxlZDsKKwlpbnQzMl90 IGNvcmVfYnVzeSwgdHVyYm9fcHN0YXRlLCBjdXJyZW50X3BzdGF0ZTsKKworCWNvcmVfYnVzeSA9 IGludF90b2ZwKGNwdS0+c2FtcGxlc1tjcHUtPnNhbXBsZV9wdHJdLmNvcmVfcGN0X2J1c3kpOwor CXR1cmJvX3BzdGF0ZSA9IGludF90b2ZwKGNwdS0+cHN0YXRlLnR1cmJvX3BzdGF0ZSk7CisJY3Vy cmVudF9wc3RhdGUgPSBpbnRfdG9mcChjcHUtPnBzdGF0ZS5jdXJyZW50X3BzdGF0ZSk7CisJYnVz eV9zY2FsZWQgPSBtdWxfZnAoY29yZV9idXN5LCBkaXZfZnAodHVyYm9fcHN0YXRlLCBjdXJyZW50 X3BzdGF0ZSkpOworCisJcmV0dXJuIGZwX3RvaW50KGJ1c3lfc2NhbGVkKTsKK30KKworc3RhdGlj IGlubGluZSB2b2lkIGludGVsX3BzdGF0ZV9hZGp1c3RfYnVzeV9wc3RhdGUoc3RydWN0IGNwdWRh dGEgKmNwdSkKK3sKKwlpbnQgYnVzeV9zY2FsZWQ7CisJc3RydWN0IF9waWQgKnBpZDsKKwlzaWdu ZWQgaW50IGN0bCA9IDA7CisJaW50IHN0ZXBzOworCisJcGlkID0gJmNwdS0+cGlkOworCWJ1c3lf c2NhbGVkID0gaW50ZWxfcHN0YXRlX2dldF9zY2FsZWRfYnVzeShjcHUpOworCisJY3RsID0gcGlk X2NhbGMocGlkLCBidXN5X3NjYWxlZCk7CisKKwlzdGVwcyA9IGFicyhjdGwpOworCWlmIChjdGwg PCAwKQorCQlpbnRlbF9wc3RhdGVfcHN0YXRlX2luY3JlYXNlKGNwdSwgc3RlcHMpOworCWVsc2UK KwkJaW50ZWxfcHN0YXRlX3BzdGF0ZV9kZWNyZWFzZShjcHUsIHN0ZXBzKTsKK30KKworc3RhdGlj IGlubGluZSB2b2lkIGludGVsX3BzdGF0ZV9hZGp1c3RfaWRsZV9wc3RhdGUoc3RydWN0IGNwdWRh dGEgKmNwdSkKK3sKKwlpbnQgYnVzeV9zY2FsZWQ7CisJc3RydWN0IF9waWQgKnBpZDsKKwlpbnQg Y3RsID0gMDsKKwlpbnQgc3RlcHM7CisKKwlwaWQgPSAmY3B1LT5pZGxlX3BpZDsKKworCWJ1c3lf c2NhbGVkID0gaW50ZWxfcHN0YXRlX2dldF9zY2FsZWRfYnVzeShjcHUpOworCisJY3RsID0gcGlk X2NhbGMocGlkLCAxMDAgLSBidXN5X3NjYWxlZCk7CisKKwlzdGVwcyA9IGFicyhjdGwpOworCWlm IChjdGwgPCAwKQorCQlpbnRlbF9wc3RhdGVfcHN0YXRlX2RlY3JlYXNlKGNwdSwgc3RlcHMpOwor CWVsc2UKKwkJaW50ZWxfcHN0YXRlX3BzdGF0ZV9pbmNyZWFzZShjcHUsIHN0ZXBzKTsKKworCWlm IChjcHUtPnBzdGF0ZS5jdXJyZW50X3BzdGF0ZSA9PSBjcHUtPnBzdGF0ZS5taW5fcHN0YXRlKQor CQlpbnRlbF9wc3RhdGVfbm9ybWFsX21vZGUoY3B1KTsKK30KKworc3RhdGljIHZvaWQgaW50ZWxf cHN0YXRlX3RpbWVyX2Z1bmModW5zaWduZWQgbG9uZyBfX2RhdGEpCit7CisJc3RydWN0IGNwdWRh dGEgKmNwdSA9IChzdHJ1Y3QgY3B1ZGF0YSAqKSBfX2RhdGE7CisKKwlpbnRlbF9wc3RhdGVfc2Ft cGxlKGNwdSk7CisKKwlpZiAoIWNwdS0+aWRsZV9tb2RlKQorCQlpbnRlbF9wc3RhdGVfYWRqdXN0 X2J1c3lfcHN0YXRlKGNwdSk7CisJZWxzZQorCQlpbnRlbF9wc3RhdGVfYWRqdXN0X2lkbGVfcHN0 YXRlKGNwdSk7CisKKyNpZiBkZWZpbmVkKFhQRVJGX0ZJWCkKKwlpZiAoY3B1LT5wc3RhdGUuY3Vy cmVudF9wc3RhdGUgPT0gY3B1LT5wc3RhdGUubWluX3BzdGF0ZSkgeworCQljcHUtPm1pbl9wc3Rh dGVfY291bnQrKzsKKwkJaWYgKCEoY3B1LT5taW5fcHN0YXRlX2NvdW50ICUgNSkpIHsKKwkJCWlu dGVsX3BzdGF0ZV9zZXRfcHN0YXRlKGNwdSwgY3B1LT5wc3RhdGUubWF4X3BzdGF0ZSk7CisJCQlp bnRlbF9wc3RhdGVfaWRsZV9tb2RlKGNwdSk7CisJCX0KKwl9IGVsc2UKKwkJY3B1LT5taW5fcHN0 YXRlX2NvdW50ID0gMDsKKyNlbmRpZgorCWludGVsX3BzdGF0ZV9zZXRfc2FtcGxlX3RpbWUoY3B1 KTsKK30KKworI2RlZmluZSBJQ1BVKG1vZGVsLCBwb2xpY3kpIFwKKwl7IFg4Nl9WRU5ET1JfSU5U RUwsIDYsIG1vZGVsLCBYODZfRkVBVFVSRV9BTlksICh1bnNpZ25lZCBsb25nKSZwb2xpY3kgfQor CitzdGF0aWMgY29uc3Qgc3RydWN0IHg4Nl9jcHVfaWQgaW50ZWxfcHN0YXRlX2NwdV9pZHNbXSA9 IHsKKwlJQ1BVKDB4MmEsIGRlZmF1bHRfcG9saWN5KSwKKwlJQ1BVKDB4MmQsIGRlZmF1bHRfcG9s aWN5KSwKKwl7fQorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUoeDg2Y3B1LCBpbnRlbF9wc3RhdGVf Y3B1X2lkcyk7CisKK3N0YXRpYyBpbnQgaW50ZWxfcHN0YXRlX2luaXRfY3B1KHVuc2lnbmVkIGlu dCBjcHVudW0pCit7CisKKwljb25zdCBzdHJ1Y3QgeDg2X2NwdV9pZCAqaWQ7CisJc3RydWN0IGNw dWRhdGEgKmNwdTsKKworCWlkID0geDg2X21hdGNoX2NwdShpbnRlbF9wc3RhdGVfY3B1X2lkcyk7 CisJaWYgKCFpZCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlhbGxfY3B1X2RhdGFbY3B1bnVtXSA9 IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBjcHVkYXRhKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFhbGxf Y3B1X2RhdGFbY3B1bnVtXSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwljcHUgPSBhbGxfY3B1X2Rh dGFbY3B1bnVtXTsKKworCWludGVsX3BzdGF0ZV9nZXRfY3B1X3BzdGF0ZXMoY3B1KTsKKworCWNw dS0+Y3B1ID0gY3B1bnVtOworCWNwdS0+cHN0YXRlX3BvbGljeSA9CisJCShzdHJ1Y3QgcHN0YXRl X2FkanVzdF9wb2xpY3kgKilpZC0+ZHJpdmVyX2RhdGE7CisJaW5pdF90aW1lcl9kZWZlcnJhYmxl KCZjcHUtPnRpbWVyKTsKKwljcHUtPnRpbWVyLmZ1bmN0aW9uID0gaW50ZWxfcHN0YXRlX3RpbWVy X2Z1bmM7CisJY3B1LT50aW1lci5kYXRhID0KKwkJKHVuc2lnbmVkIGxvbmcpY3B1OworCWNwdS0+ dGltZXIuZXhwaXJlcyA9IGppZmZpZXMgKyBIWi8xMDA7CisJaW50ZWxfcHN0YXRlX2J1c3lfcGlk X3Jlc2V0KGNwdSk7CisJaW50ZWxfcHN0YXRlX2lkbGVfcGlkX3Jlc2V0KGNwdSk7CisJaW50ZWxf cHN0YXRlX3NhbXBsZShjcHUpOworCWludGVsX3BzdGF0ZV9zZXRfcHN0YXRlKGNwdSwgY3B1LT5w c3RhdGUubWF4X3BzdGF0ZSk7CisKKwlhZGRfdGltZXJfb24oJmNwdS0+dGltZXIsIGNwdW51bSk7 CisKKwlwcl9pbmZvKCJJbnRlbCBwc3RhdGUgY29udHJvbGxpbmc6IGNwdSAlZFxuIiwgY3B1bnVt KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IGludGVsX3BzdGF0ZV9n ZXQodW5zaWduZWQgaW50IGNwdV9udW0pCit7CisJc3RydWN0IHNhbXBsZSAqc2FtcGxlOworCXN0 cnVjdCBjcHVkYXRhICpjcHU7CisKKwljcHUgPSBhbGxfY3B1X2RhdGFbY3B1X251bV07CisJaWYg KCFjcHUpCisJCXJldHVybiAwOworCXNhbXBsZSA9ICZjcHUtPnNhbXBsZXNbY3B1LT5zYW1wbGVf cHRyXTsKKwlyZXR1cm4gc2FtcGxlLT5mcmVxOworfQorCitzdGF0aWMgaW50IGludGVsX3BzdGF0 ZV9zZXRfcG9saWN5KHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5KQoreworCXN0cnVjdCBj cHVkYXRhICpjcHU7CisJaW50IG1pbiwgbWF4OworCisJY3B1ID0gYWxsX2NwdV9kYXRhW3BvbGlj eS0+Y3B1XTsKKworCWludGVsX3BzdGF0ZV9nZXRfbWluX21heChjcHUsICZtaW4sICZtYXgpOwor CisJbGltaXRzLm1pbl9wZXJmX3BjdCA9IChwb2xpY3ktPm1pbiAqIDEwMCkgLyBwb2xpY3ktPmNw dWluZm8ubWF4X2ZyZXE7CisJbGltaXRzLm1pbl9wZXJmX3BjdCA9IGNsYW1wX3QoaW50LCBsaW1p dHMubWluX3BlcmZfcGN0LCAwICwgMTAwKTsKKwlsaW1pdHMubWluX3BlcmYgPSBkaXZfZnAoaW50 X3RvZnAobGltaXRzLm1pbl9wZXJmX3BjdCksIGludF90b2ZwKDEwMCkpOworCisJbGltaXRzLm1h eF9wZXJmX3BjdCA9IHBvbGljeS0+bWF4ICogMTAwIC8gcG9saWN5LT5jcHVpbmZvLm1heF9mcmVx OworCWxpbWl0cy5tYXhfcGVyZl9wY3QgPSBjbGFtcF90KGludCwgbGltaXRzLm1heF9wZXJmX3Bj dCwgMCAsIDEwMCk7CisJbGltaXRzLm1heF9wZXJmID0gZGl2X2ZwKGludF90b2ZwKGxpbWl0cy5t YXhfcGVyZl9wY3QpLCBpbnRfdG9mcCgxMDApKTsKKworCWlmIChwb2xpY3ktPnBvbGljeSA9PSBD UFVGUkVRX1BPTElDWV9QRVJGT1JNQU5DRSkgeworCQlsaW1pdHMubWluX3BlcmZfcGN0ID0gMTAw OworCQlsaW1pdHMubWluX3BlcmYgPSBpbnRfdG9mcCgxKTsKKwkJbGltaXRzLm1heF9wZXJmX3Bj dCA9IDEwMDsKKwkJbGltaXRzLm1heF9wZXJmID0gaW50X3RvZnAoMSk7CisJCWxpbWl0cy5ub190 dXJibyA9IDA7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaW50ZWxfcHN0YXRl X3ZlcmlmeV9wb2xpY3koc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3kpCit7CisJY3B1ZnJl cV92ZXJpZnlfd2l0aGluX2xpbWl0cyhwb2xpY3ksCisJCQkJcG9saWN5LT5jcHVpbmZvLm1pbl9m cmVxLAorCQkJCXBvbGljeS0+Y3B1aW5mby5tYXhfZnJlcSk7CisKKwlpZiAoKHBvbGljeS0+cG9s aWN5ICE9IENQVUZSRVFfUE9MSUNZX1BPV0VSU0FWRSkgJiYKKwkJKHBvbGljeS0+cG9saWN5ICE9 IENQVUZSRVFfUE9MSUNZX1BFUkZPUk1BTkNFKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBfX2NwdWluaXQgaW50ZWxfcHN0YXRlX2NwdV9leGl0KHN0 cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5KQoreworCWludCBjcHUgPSBwb2xpY3ktPmNwdTsK KworCWRlbF90aW1lcigmYWxsX2NwdV9kYXRhW2NwdV0tPnRpbWVyKTsKKwlrZnJlZShhbGxfY3B1 X2RhdGFbY3B1XSk7CisJYWxsX2NwdV9kYXRhW2NwdV0gPSBOVUxMOworCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IF9fY3B1aW5pdCBpbnRlbF9wc3RhdGVfY3B1X2luaXQoc3RydWN0IGNwdWZy ZXFfcG9saWN5ICpwb2xpY3kpCit7CisJaW50IHJjLCBtaW5fcHN0YXRlLCBtYXhfcHN0YXRlOwor CXN0cnVjdCBjcHVkYXRhICpjcHU7CisKKwlyYyA9IGludGVsX3BzdGF0ZV9pbml0X2NwdShwb2xp Y3ktPmNwdSk7CisJaWYgKHJjKQorCQlyZXR1cm4gcmM7CisKKwljcHUgPSBhbGxfY3B1X2RhdGFb cG9saWN5LT5jcHVdOworCisJaWYgKCFsaW1pdHMubm9fdHVyYm8gJiYKKwkJbGltaXRzLm1pbl9w ZXJmX3BjdCA9PSAxMDAgJiYgbGltaXRzLm1heF9wZXJmX3BjdCA9PSAxMDApCisJCXBvbGljeS0+ cG9saWN5ID0gQ1BVRlJFUV9QT0xJQ1lfUEVSRk9STUFOQ0U7CisJZWxzZQorCQlwb2xpY3ktPnBv bGljeSA9IENQVUZSRVFfUE9MSUNZX1BPV0VSU0FWRTsKKworCWludGVsX3BzdGF0ZV9nZXRfbWlu X21heChjcHUsICZtaW5fcHN0YXRlLCAmbWF4X3BzdGF0ZSk7CisJcG9saWN5LT5taW4gPSBtaW5f cHN0YXRlICogMTAwMDAwOworCXBvbGljeS0+bWF4ID0gbWF4X3BzdGF0ZSAqIDEwMDAwMDsKKwor CS8qIGNwdWluZm8gYW5kIGRlZmF1bHQgcG9saWN5IHZhbHVlcyAqLworCXBvbGljeS0+Y3B1aW5m by5taW5fZnJlcSA9IGNwdS0+cHN0YXRlLm1pbl9wc3RhdGUgKiAxMDAwMDA7CisJcG9saWN5LT5j cHVpbmZvLm1heF9mcmVxID0gY3B1LT5wc3RhdGUudHVyYm9fcHN0YXRlICogMTAwMDAwOworCXBv bGljeS0+Y3B1aW5mby50cmFuc2l0aW9uX2xhdGVuY3kgPSBDUFVGUkVRX0VURVJOQUw7CisJY3B1 bWFza19zZXRfY3B1KHBvbGljeS0+Y3B1LCBwb2xpY3ktPmNwdXMpOworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBzdHJ1Y3QgY3B1ZnJlcV9kcml2ZXIgaW50ZWxfcHN0YXRlX2RyaXZlciA9IHsK KwkuZmxhZ3MJCT0gQ1BVRlJFUV9DT05TVF9MT09QUywKKwkudmVyaWZ5CQk9IGludGVsX3BzdGF0 ZV92ZXJpZnlfcG9saWN5LAorCS5zZXRwb2xpY3kJPSBpbnRlbF9wc3RhdGVfc2V0X3BvbGljeSwK KwkuZ2V0CQk9IGludGVsX3BzdGF0ZV9nZXQsCisJLmluaXQJCT0gaW50ZWxfcHN0YXRlX2NwdV9p bml0LAorCS5leGl0CQk9IGludGVsX3BzdGF0ZV9jcHVfZXhpdCwKKwkubmFtZQkJPSAiaW50ZWxf cHN0YXRlIiwKKwkub3duZXIJCT0gVEhJU19NT0RVTEUsCit9OworCitzdGF0aWMgdm9pZCBpbnRl bF9wc3RhdGVfZXhpdCh2b2lkKQoreworCWludCBjcHU7CisKKwlzeXNmc19yZW1vdmVfZ3JvdXAo aW50ZWxfcHN0YXRlX2tvYmplY3QsCisJCQkJJmludGVsX3BzdGF0ZV9hdHRyX2dyb3VwKTsKKwlk ZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZGVidWdmc19wYXJlbnQpOworCisJY3B1ZnJlcV91bnJl Z2lzdGVyX2RyaXZlcigmaW50ZWxfcHN0YXRlX2RyaXZlcik7CisKKwlpZiAoIWFsbF9jcHVfZGF0 YSkKKwkJcmV0dXJuOworCisJZ2V0X29ubGluZV9jcHVzKCk7CisJZm9yX2VhY2hfb25saW5lX2Nw dShjcHUpIHsKKwkJaWYgKGFsbF9jcHVfZGF0YVtjcHVdKSB7CisJCQlkZWxfdGltZXJfc3luYygm YWxsX2NwdV9kYXRhW2NwdV0tPnRpbWVyKTsKKwkJCWtmcmVlKGFsbF9jcHVfZGF0YVtjcHVdKTsK KwkJfQorCX0KKworCXB1dF9vbmxpbmVfY3B1cygpOworCXZmcmVlKGFsbF9jcHVfZGF0YSk7Cit9 Cittb2R1bGVfZXhpdChpbnRlbF9wc3RhdGVfZXhpdCk7CisKK3N0YXRpYyBpbnQgX19pbml0IGlu dGVsX3BzdGF0ZV9pbml0KHZvaWQpCit7CisJaW50IHJjID0gMDsKKwljb25zdCBzdHJ1Y3QgeDg2 X2NwdV9pZCAqaWQ7CisKKwlpZCA9IHg4Nl9tYXRjaF9jcHUoaW50ZWxfcHN0YXRlX2NwdV9pZHMp OworCWlmICghaWQpCisJCXJldHVybiAtRU5PREVWOworCisJcHJfaW5mbygiSW50ZWwgUC1zdGF0 ZSBkcml2ZXIgaW5pdGlhbGl6aW5nLlxuIik7CisKKwlhbGxfY3B1X2RhdGEgPSB2bWFsbG9jKHNp emVvZih2b2lkICopICogbnVtX3Bvc3NpYmxlX2NwdXMoKSk7CisJaWYgKCFhbGxfY3B1X2RhdGEp CisJCXJldHVybiAtRU5PTUVNOworCW1lbXNldChhbGxfY3B1X2RhdGEsIDAsIHNpemVvZih2b2lk ICopICogbnVtX3Bvc3NpYmxlX2NwdXMoKSk7CisKKwlyYyA9IGNwdWZyZXFfcmVnaXN0ZXJfZHJp dmVyKCZpbnRlbF9wc3RhdGVfZHJpdmVyKTsKKwlpZiAocmMpCisJCWdvdG8gb3V0OworCisJaW50 ZWxfcHN0YXRlX2RlYnVnX2V4cG9zZV9wYXJhbXMoKTsKKwlpbnRlbF9wc3RhdGVfc3lzZnNfZXhw b3NlX3BhcmFtcygpOworCXJldHVybiByYzsKK291dDoKKwlpbnRlbF9wc3RhdGVfZXhpdCgpOwor CXJldHVybiAtRU5PREVWOworfQorZGV2aWNlX2luaXRjYWxsKGludGVsX3BzdGF0ZV9pbml0KTsK KworTU9EVUxFX0FVVEhPUigiRGlyayBCcmFuZGV3aWUgPGRpcmsuai5icmFuZGV3aWVAaW50ZWwu Y29tPiIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCInaW50ZWxfcHN0YXRlJyAtIFAgc3RhdGUgZHJp dmVyIEludGVsIENvcmUgcHJvY2Vzc29ycyIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9jcHVmcmVxL2tpcmt3b29kLWNwdWZyZXEuYyBiL2RyaXZlcnMvY3B1 ZnJlcS9raXJrd29vZC1jcHVmcmVxLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMGU4M2UzYwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvY3B1ZnJlcS9raXJrd29vZC1j cHVmcmVxLmMKQEAgLTAsMCArMSwyNTkgQEAKKy8qCisgKglraXJrd29vZF9mcmVxLmM6IGNwdWZy ZXEgZHJpdmVyIGZvciB0aGUgTWFydmVsbCBraXJrd29vZAorICoKKyAqCUNvcHlyaWdodCAoQykg MjAxMyBBbmRyZXcgTHVubiA8YW5kcmV3QGx1bm4uY2g+CisgKgorICoJVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICoJbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq CWFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbgorICoJMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGlu dXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvY2xrLmg+CisjaW5jbHVkZSA8bGludXgvY2xr LXByb3ZpZGVyLmg+CisjaW5jbHVkZSA8bGludXgvY3B1ZnJlcS5oPgorI2luY2x1ZGUgPGxpbnV4 L29mLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGlu dXgvaW8uaD4KKyNpbmNsdWRlIDxhc20vcHJvYy1mbnMuaD4KKworI2RlZmluZSBDUFVfU1dfSU5U X0JMSyBCSVQoMjgpCisKK3N0YXRpYyBzdHJ1Y3QgcHJpdgoreworCXN0cnVjdCBjbGsgKmNwdV9j bGs7CisJc3RydWN0IGNsayAqZGRyX2NsazsKKwlzdHJ1Y3QgY2xrICpwb3dlcnNhdmVfY2xrOwor CXN0cnVjdCBkZXZpY2UgKmRldjsKKwl2b2lkIF9faW9tZW0gKmJhc2U7Cit9IHByaXY7CisKKyNk ZWZpbmUgU1RBVEVfQ1BVX0ZSRVEgMHgwMQorI2RlZmluZSBTVEFURV9ERFJfRlJFUSAweDAyCisK Ky8qCisgKiBLaXJrd29vZCBjYW4gc3dhcCB0aGUgY2xvY2sgdG8gdGhlIENQVSBiZXR3ZWVuIHR3 byBjbG9ja3M6CisgKgorICogLSBjcHUgY2xrCisgKiAtIGRkciBjbGsKKyAqCisgKiBUaGUgZnJl cXVlbmNpZXMgYXJlIHNldCBhdCBydW50aW1lIGJlZm9yZSByZWdpc3RlcmluZyB0aGlzICoKKyAq IHRhYmxlLgorICovCitzdGF0aWMgc3RydWN0IGNwdWZyZXFfZnJlcXVlbmN5X3RhYmxlIGtpcmt3 b29kX2ZyZXFfdGFibGVbXSA9IHsKKwl7U1RBVEVfQ1BVX0ZSRVEsCTB9LCAvKiBDUFUgdXNlcyBj cHVjbGsgKi8KKwl7U1RBVEVfRERSX0ZSRVEsCTB9LCAvKiBDUFUgdXNlcyBkZHJjbGsgKi8KKwl7 MCwJCQlDUFVGUkVRX1RBQkxFX0VORH0sCit9OworCitzdGF0aWMgdW5zaWduZWQgaW50IGtpcmt3 b29kX2NwdWZyZXFfZ2V0X2NwdV9mcmVxdWVuY3kodW5zaWduZWQgaW50IGNwdSkKK3sKKwlpZiAo X19jbGtfaXNfZW5hYmxlZChwcml2LnBvd2Vyc2F2ZV9jbGspKQorCQlyZXR1cm4ga2lya3dvb2Rf ZnJlcV90YWJsZVsxXS5mcmVxdWVuY3k7CisJcmV0dXJuIGtpcmt3b29kX2ZyZXFfdGFibGVbMF0u ZnJlcXVlbmN5OworfQorCitzdGF0aWMgdm9pZCBraXJrd29vZF9jcHVmcmVxX3NldF9jcHVfc3Rh dGUodW5zaWduZWQgaW50IGluZGV4KQoreworCXN0cnVjdCBjcHVmcmVxX2ZyZXFzIGZyZXFzOwor CXVuc2lnbmVkIGludCBzdGF0ZSA9IGtpcmt3b29kX2ZyZXFfdGFibGVbaW5kZXhdLmluZGV4Owor CXVuc2lnbmVkIGxvbmcgcmVnOworCisJZnJlcXMub2xkID0ga2lya3dvb2RfY3B1ZnJlcV9nZXRf Y3B1X2ZyZXF1ZW5jeSgwKTsKKwlmcmVxcy5uZXcgPSBraXJrd29vZF9mcmVxX3RhYmxlW2luZGV4 XS5mcmVxdWVuY3k7CisJZnJlcXMuY3B1ID0gMDsgLyogS2lya3dvb2QgaXMgVVAgKi8KKworCWNw dWZyZXFfbm90aWZ5X3RyYW5zaXRpb24oJmZyZXFzLCBDUFVGUkVRX1BSRUNIQU5HRSk7CisKKwlk ZXZfZGJnKHByaXYuZGV2LCAiQXR0ZW1wdGluZyB0byBzZXQgZnJlcXVlbmN5IHRvICVpIEtIelxu IiwKKwkJa2lya3dvb2RfZnJlcV90YWJsZVtpbmRleF0uZnJlcXVlbmN5KTsKKwlkZXZfZGJnKHBy aXYuZGV2LCAib2xkIGZyZXF1ZW5jeSB3YXMgJWkgS0h6XG4iLAorCQlraXJrd29vZF9jcHVmcmVx X2dldF9jcHVfZnJlcXVlbmN5KDApKTsKKworCWlmIChmcmVxcy5vbGQgIT0gZnJlcXMubmV3KSB7 CisJCWxvY2FsX2lycV9kaXNhYmxlKCk7CisKKwkJLyogRGlzYWJsZSBpbnRlcnJ1cHRzIHRvIHRo ZSBDUFUgKi8KKwkJcmVnID0gcmVhZGxfcmVsYXhlZChwcml2LmJhc2UpOworCQlyZWcgfD0gQ1BV X1NXX0lOVF9CTEs7CisJCXdyaXRlbF9yZWxheGVkKHJlZywgcHJpdi5iYXNlKTsKKworCQlzd2l0 Y2ggKHN0YXRlKSB7CisJCWNhc2UgU1RBVEVfQ1BVX0ZSRVE6CisJCQljbGtfZGlzYWJsZShwcml2 LnBvd2Vyc2F2ZV9jbGspOworCQkJYnJlYWs7CisJCWNhc2UgU1RBVEVfRERSX0ZSRVE6CisJCQlj bGtfZW5hYmxlKHByaXYucG93ZXJzYXZlX2Nsayk7CisJCQlicmVhazsKKwkJfQorCisJCS8qIFdh aXQtZm9yLUludGVycnVwdCwgd2hpbGUgdGhlIGhhcmR3YXJlIGNoYW5nZXMgZnJlcXVlbmN5ICov CisJCWNwdV9kb19pZGxlKCk7CisKKwkJLyogRW5hYmxlIGludGVycnVwdHMgdG8gdGhlIENQVSAq LworCQlyZWcgPSByZWFkbF9yZWxheGVkKHByaXYuYmFzZSk7CisJCXJlZyAmPSB+Q1BVX1NXX0lO VF9CTEs7CisJCXdyaXRlbF9yZWxheGVkKHJlZywgcHJpdi5iYXNlKTsKKworCQlsb2NhbF9pcnFf ZW5hYmxlKCk7CisJfQorCWNwdWZyZXFfbm90aWZ5X3RyYW5zaXRpb24oJmZyZXFzLCBDUFVGUkVR X1BPU1RDSEFOR0UpOworfTsKKworc3RhdGljIGludCBraXJrd29vZF9jcHVmcmVxX3ZlcmlmeShz dHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKnBvbGljeSkKK3sKKwlyZXR1cm4gY3B1ZnJlcV9mcmVxdWVu Y3lfdGFibGVfdmVyaWZ5KHBvbGljeSwga2lya3dvb2RfZnJlcV90YWJsZSk7Cit9CisKK3N0YXRp YyBpbnQga2lya3dvb2RfY3B1ZnJlcV90YXJnZXQoc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xp Y3ksCisJCQkgICAgdW5zaWduZWQgaW50IHRhcmdldF9mcmVxLAorCQkJICAgIHVuc2lnbmVkIGlu dCByZWxhdGlvbikKK3sKKwl1bnNpZ25lZCBpbnQgaW5kZXggPSAwOworCisJaWYgKGNwdWZyZXFf ZnJlcXVlbmN5X3RhYmxlX3RhcmdldChwb2xpY3ksIGtpcmt3b29kX2ZyZXFfdGFibGUsCisJCQkJ dGFyZ2V0X2ZyZXEsIHJlbGF0aW9uLCAmaW5kZXgpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWtp cmt3b29kX2NwdWZyZXFfc2V0X2NwdV9zdGF0ZShpbmRleCk7CisKKwlyZXR1cm4gMDsKK30KKwor LyogTW9kdWxlIGluaXQgYW5kIGV4aXQgY29kZSAqLworc3RhdGljIGludCBraXJrd29vZF9jcHVm cmVxX2NwdV9pbml0KHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5KQoreworCWludCByZXN1 bHQ7CisKKwkvKiBjcHVpbmZvIGFuZCBkZWZhdWx0IHBvbGljeSB2YWx1ZXMgKi8KKwlwb2xpY3kt PmNwdWluZm8udHJhbnNpdGlvbl9sYXRlbmN5ID0gNTAwMDsgLyogNXVTICovCisJcG9saWN5LT5j dXIgPSBraXJrd29vZF9jcHVmcmVxX2dldF9jcHVfZnJlcXVlbmN5KDApOworCisJcmVzdWx0ID0g Y3B1ZnJlcV9mcmVxdWVuY3lfdGFibGVfY3B1aW5mbyhwb2xpY3ksIGtpcmt3b29kX2ZyZXFfdGFi bGUpOworCWlmIChyZXN1bHQpCisJCXJldHVybiByZXN1bHQ7CisKKwljcHVmcmVxX2ZyZXF1ZW5j eV90YWJsZV9nZXRfYXR0cihraXJrd29vZF9mcmVxX3RhYmxlLCBwb2xpY3ktPmNwdSk7CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBraXJrd29vZF9jcHVmcmVxX2NwdV9leGl0KHN0cnVj dCBjcHVmcmVxX3BvbGljeSAqcG9saWN5KQoreworCWNwdWZyZXFfZnJlcXVlbmN5X3RhYmxlX3B1 dF9hdHRyKHBvbGljeS0+Y3B1KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBmcmVx X2F0dHIgKmtpcmt3b29kX2NwdWZyZXFfYXR0cltdID0geworCSZjcHVmcmVxX2ZyZXFfYXR0cl9z Y2FsaW5nX2F2YWlsYWJsZV9mcmVxcywKKwlOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBjcHVm cmVxX2RyaXZlciBraXJrd29vZF9jcHVmcmVxX2RyaXZlciA9IHsKKwkuZ2V0CT0ga2lya3dvb2Rf Y3B1ZnJlcV9nZXRfY3B1X2ZyZXF1ZW5jeSwKKwkudmVyaWZ5CT0ga2lya3dvb2RfY3B1ZnJlcV92 ZXJpZnksCisJLnRhcmdldAk9IGtpcmt3b29kX2NwdWZyZXFfdGFyZ2V0LAorCS5pbml0CT0ga2ly a3dvb2RfY3B1ZnJlcV9jcHVfaW5pdCwKKwkuZXhpdAk9IGtpcmt3b29kX2NwdWZyZXFfY3B1X2V4 aXQsCisJLm5hbWUJPSAia2lya3dvb2QtY3B1ZnJlcSIsCisJLm93bmVyCT0gVEhJU19NT0RVTEUs CisJLmF0dHIJPSBraXJrd29vZF9jcHVmcmVxX2F0dHIsCit9OworCitzdGF0aWMgaW50IGtpcmt3 b29kX2NwdWZyZXFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1 Y3QgZGV2aWNlX25vZGUgKm5wOworCXN0cnVjdCByZXNvdXJjZSAqcmVzOworCWludCBlcnI7CisK Kwlwcml2LmRldiA9ICZwZGV2LT5kZXY7CisKKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2Uo cGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOworCWlmICghcmVzKSB7CisJCWRldl9lcnIoJnBkZXYt PmRldiwgIkNhbm5vdCBnZXQgbWVtb3J5IHJlc291cmNlXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7 CisJfQorCXByaXYuYmFzZSA9IGRldm1fcmVxdWVzdF9hbmRfaW9yZW1hcCgmcGRldi0+ZGV2LCBy ZXMpOworCWlmICghcHJpdi5iYXNlKSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgIkNhbm5vdCBp b3JlbWFwXG4iKTsKKwkJcmV0dXJuIC1FQUREUk5PVEFWQUlMOworCX0KKworCW5wID0gb2ZfZmlu ZF9ub2RlX2J5X3BhdGgoIi9jcHVzL2NwdUAwIik7CisJaWYgKCFucCkKKwkJcmV0dXJuIC1FTk9E RVY7CisKKwlwcml2LmNwdV9jbGsgPSBvZl9jbGtfZ2V0X2J5X25hbWUobnAsICJjcHVfY2xrIik7 CisJaWYgKElTX0VSUihwcml2LmNwdV9jbGspKSB7CisJCWRldl9lcnIocHJpdi5kZXYsICJVbmFi bGUgdG8gZ2V0IGNwdWNsayIpOworCQlyZXR1cm4gUFRSX0VSUihwcml2LmNwdV9jbGspOworCX0K KworCWNsa19wcmVwYXJlX2VuYWJsZShwcml2LmNwdV9jbGspOworCWtpcmt3b29kX2ZyZXFfdGFi bGVbMF0uZnJlcXVlbmN5ID0gY2xrX2dldF9yYXRlKHByaXYuY3B1X2NsaykgLyAxMDAwOworCisJ cHJpdi5kZHJfY2xrID0gb2ZfY2xrX2dldF9ieV9uYW1lKG5wLCAiZGRyY2xrIik7CisJaWYgKElT X0VSUihwcml2LmRkcl9jbGspKSB7CisJCWRldl9lcnIocHJpdi5kZXYsICJVbmFibGUgdG8gZ2V0 IGRkcmNsayIpOworCQllcnIgPSBQVFJfRVJSKHByaXYuZGRyX2Nsayk7CisJCWdvdG8gb3V0X2Nw dTsKKwl9CisKKwljbGtfcHJlcGFyZV9lbmFibGUocHJpdi5kZHJfY2xrKTsKKwlraXJrd29vZF9m cmVxX3RhYmxlWzFdLmZyZXF1ZW5jeSA9IGNsa19nZXRfcmF0ZShwcml2LmRkcl9jbGspIC8gMTAw MDsKKworCXByaXYucG93ZXJzYXZlX2NsayA9IG9mX2Nsa19nZXRfYnlfbmFtZShucCwgInBvd2Vy c2F2ZSIpOworCWlmIChJU19FUlIocHJpdi5wb3dlcnNhdmVfY2xrKSkgeworCQlkZXZfZXJyKHBy aXYuZGV2LCAiVW5hYmxlIHRvIGdldCBwb3dlcnNhdmUiKTsKKwkJZXJyID0gUFRSX0VSUihwcml2 LnBvd2Vyc2F2ZV9jbGspOworCQlnb3RvIG91dF9kZHI7CisJfQorCWNsa19wcmVwYXJlKHByaXYu cG93ZXJzYXZlX2Nsayk7CisKKwlvZl9ub2RlX3B1dChucCk7CisJbnAgPSBOVUxMOworCisJZXJy ID0gY3B1ZnJlcV9yZWdpc3Rlcl9kcml2ZXIoJmtpcmt3b29kX2NwdWZyZXFfZHJpdmVyKTsKKwlp ZiAoIWVycikKKwkJcmV0dXJuIDA7CisKKwlkZXZfZXJyKHByaXYuZGV2LCAiRmFpbGVkIHRvIHJl Z2lzdGVyIGNwdWZyZXEgZHJpdmVyIik7CisKKwljbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi5w b3dlcnNhdmVfY2xrKTsKK291dF9kZHI6CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYuZGRy X2Nsayk7CitvdXRfY3B1OgorCWNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LmNwdV9jbGspOwor CW9mX25vZGVfcHV0KG5wKTsKKworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQga2lya3dv b2RfY3B1ZnJlcV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwljcHVm cmVxX3VucmVnaXN0ZXJfZHJpdmVyKCZraXJrd29vZF9jcHVmcmVxX2RyaXZlcik7CisKKwljbGtf ZGlzYWJsZV91bnByZXBhcmUocHJpdi5wb3dlcnNhdmVfY2xrKTsKKwljbGtfZGlzYWJsZV91bnBy ZXBhcmUocHJpdi5kZHJfY2xrKTsKKwljbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi5jcHVfY2xr KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBraXJr d29vZF9jcHVmcmVxX3BsYXRmb3JtX2RyaXZlciA9IHsKKwkucHJvYmUgPSBraXJrd29vZF9jcHVm cmVxX3Byb2JlLAorCS5yZW1vdmUgPSBraXJrd29vZF9jcHVmcmVxX3JlbW92ZSwKKwkuZHJpdmVy ID0geworCQkubmFtZSA9ICJraXJrd29vZC1jcHVmcmVxIiwKKwkJLm93bmVyID0gVEhJU19NT0RV TEUsCisJfSwKK307CisKK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoa2lya3dvb2RfY3B1ZnJlcV9w bGF0Zm9ybV9kcml2ZXIpOworCitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7CitNT0RVTEVfQVVU SE9SKCJBbmRyZXcgTHVubiA8YW5kcmV3QGx1bm4uY2giKTsKK01PRFVMRV9ERVNDUklQVElPTigi Y3B1ZnJlcSBkcml2ZXIgZm9yIE1hcnZlbGwncyBraXJrd29vZCBDUFUiKTsKK01PRFVMRV9BTElB UygicGxhdGZvcm06a2lya3dvb2QtY3B1ZnJlcSIpOwo= --20cf30334dd1a54ea204d5390b96--