From owner-freebsd-arch@freebsd.org Sat Aug 29 18:35:48 2015 Return-Path: Delivered-To: freebsd-arch@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 459889C5704 for ; Sat, 29 Aug 2015 18:35:48 +0000 (UTC) (envelope-from chmeeedalf@gmail.com) Received: from mail-io0-x233.google.com (mail-io0-x233.google.com [IPv6:2607:f8b0:4001:c06::233]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 02B4E334; Sat, 29 Aug 2015 18:35:48 +0000 (UTC) (envelope-from chmeeedalf@gmail.com) Received: by ioej130 with SMTP id j130so40884806ioe.3; Sat, 29 Aug 2015 11:35:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=RLljBotrRlvxhbTPVmCNiN5Yd7EeLrUnjMui668Mmnk=; b=gcQk7zpuLMt3x2TawSUFnTVz6aO8mTDJdCD1ldsRhzCCOZGH3tfwp6K53KIhXLZ80Z bcrWEF1/wibNgHL6an+U0vAiTBoZlBFPuAEW/tE7IVRkZ9O8IqU/UktA4cCkpQvlHRJO 3OEeCdwhqlCFeBb5uqnDFAoJKqQaqdLF05q2sCbu5VFMxeZWbwyzYLDk1h74nEWTOB5W 9i9Oz2OGmmorp/tYbZZmp7miNx7AZCQHId7Uen2FWPq9s+C285no3ZufiGupdfVkWmNt tLcr+a7D80zmeFChO7Eo62vpsED2wioC73jQZ5oNJ26chrZcUsK5to1xMXWM0lJAnMB+ BXAg== MIME-Version: 1.0 X-Received: by 10.107.167.199 with SMTP id q190mr22741089ioe.119.1440873347319; Sat, 29 Aug 2015 11:35:47 -0700 (PDT) Sender: chmeeedalf@gmail.com Received: by 10.36.58.149 with HTTP; Sat, 29 Aug 2015 11:35:47 -0700 (PDT) In-Reply-To: References: <1568331.OrSoeYfXsf@ralph.baldwin.cx> Date: Sat, 29 Aug 2015 11:35:47 -0700 X-Google-Sender-Auth: ljK1pwWT12zjsyEJzb8v4Eg7-mw Message-ID: Subject: Re: Devices with 36-bit paddr on 32-bit system From: Justin Hibbits To: Adrian Chadd Cc: John Baldwin , "freebsd-arch@freebsd.org" , Marcel Moolenaar Content-Type: multipart/mixed; boundary=001a1141f3be08c46f051e777817 X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 Aug 2015 18:35:48 -0000 --001a1141f3be08c46f051e777817 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hey, I already had that thought, too, you just encouraged me to take it :) Anyway, here's an initial patch. I've *only* tested it on one PowerPC board (the one needing this change), none of my other devices, and no other architectures. Thoughts? tl;dr I went with using bus_addr_t for the addresses, and kept u_long for the sizes (I can change it to use bus_size_t instead, but it's already vm_offset_t on PowerPC, which is long anyway). Since I took the diff as a whole, and erased unrelated bits, there may still be unrelated bits in the diff, which can be ignored (all part of my larger work). - Justin On Fri, Aug 28, 2015 at 1:59 PM, Adrian Chadd wrot= e: > +1 on this. > > Also - justin/i figured it out (well, I made the suggestion, he did > the suggestion) which is just to do a big/single mapping of the > relevant hardware window into vmem early in boot, and hack that bus > nexus to treat things as being in that vmem region. He's gotten pretty > far along the device bringup path now. That way the rmem allocation is > just from that vmem region. > > > > -adrian > > > > On 28 August 2015 at 10:35, John Baldwin wrote: >> On Tuesday, August 25, 2015 08:55:45 AM Marcel Moolenaar wrote: >>> >>> > On Aug 24, 2015, at 11:44 PM, Justin Hibbits = wrote: >>> > >>> > With my work porting FreeBSD to PowerPC e500mc and e5500, I have >>> > devices in my device tree mapped well above the 4GB mark >>> > (0xffexxxxxx), and have no idea how to properly address them for >>> > resources in rman. Do we already have a solution to support this? >>> > Part of the problem is the powerpc nexus does a straight convert to >>> > vm_offset_t of rman_get_start() (itself returning a u_long), and >>> > vm_offset_t is not necessarily equal to vm_paddr_t (on Book-E powerpc >>> > vm_offset_t is 32-bits, vm_paddr_t is 64-bits). >>> >>> I think the best solution is to represent a resource address >>> space with a type other than u_long. It makes sense to have >>> it use bus_addr_t or vm_paddr_t for example. Such a change >>> comes at a high price for sure, but you=E2=80=99ll fix it once and >>> for all. I don=E2=80=99t think you should kluge your way out of this... >> >> Expanding beyond u_long is the right solution. PAE doesn't generally su= ffer >> from this on i386 (though the ram0 device "punts" and ignores RAM ranges= above >> 4G as a workaround). >> >> However, u_long is baked into the bus resource API quite a bit. Specifi= cally, >> the values 0ul and ~0ul are used as magic numbers in lots of places to r= equest >> "anywhere" locations. Some of this has been mitigated by >> bus_alloc_resource_any(), but that doesn't cover all cases. You will pr= obably >> want to add some explicit constants and do a sweep replacing the magic n= umbers >> with those first (and MFC the constants at least to make it easier to po= rt >> drivers across branches). Then you can change the type. >> >> As far as the best type: rman's are in theory generic and not just for b= us >> addresses. I'd be tempted to let each platform define an rman_addr_t al= ong >> with RMAN_ADDR_MAX constants, but in practice it is probably fine to use >> bus_addr_t and BUS_SPACE_MAXADDR. If you do that it also means you can = skip >> the step of having to MFC new constants. >> >> Note that various bus APIs will have to change to use bus_addr_t instead= of >> u_long as well. >> >> -- >> John Baldwin >> _______________________________________________ >> freebsd-arch@freebsd.org mailing list >> https://lists.freebsd.org/mailman/listinfo/freebsd-arch >> To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org" --001a1141f3be08c46f051e777817 Content-Type: text/plain; charset=US-ASCII; name="rman.diff" Content-Disposition: attachment; filename="rman.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_idxeo38y0 SW5kZXg6IHN5cy9kZXYvYXRhL2F0YS1wY2kuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvZGV2L2F0YS9h dGEtcGNpLmMJKHJldmlzaW9uIDI4NzE4OSkKKysrIHN5cy9kZXYvYXRhL2F0YS1wY2kuYwkod29y a2luZyBjb3B5KQpAQCAtMjE3LDcgKzIxNyw3IEBACiAKIHN0cnVjdCByZXNvdXJjZSAqCiBhdGFf cGNpX2FsbG9jX3Jlc291cmNlKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBl LCBpbnQgKnJpZCwKLQkJICAgICAgIHVfbG9uZyBzdGFydCwgdV9sb25nIGVuZCwgdV9sb25nIGNv dW50LCB1X2ludCBmbGFncykKKwkJICAgICAgIGJ1c19hZGRyX3Qgc3RhcnQsIGJ1c19hZGRyX3Qg ZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKQogewogCXN0cnVjdCBhdGFfcGNpX2NvbnRy b2xsZXIgKmNvbnRyb2xsZXIgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CiAJc3RydWN0IHJlc291 cmNlICpyZXMgPSBOVUxMOwpJbmRleDogc3lzL2Rldi9hdGEvYXRhLXBjaS5oCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIHN5cy9kZXYvYXRhL2F0YS1wY2kuaAkocmV2aXNpb24gMjg3MTg5KQorKysgc3lzL2Rldi9h dGEvYXRhLXBjaS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MzUsNyArNTM1LDcgQEAKIGludCBhdGFf cGNpX3ByaW50X2NoaWxkKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQpOwogaW50IGF0YV9w Y2lfY2hpbGRfbG9jYXRpb25fc3RyKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIGNoYXIg KmJ1ZiwKICAgICBzaXplX3QgYnVmbGVuKTsKLXN0cnVjdCByZXNvdXJjZSAqIGF0YV9wY2lfYWxs b2NfcmVzb3VyY2UoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAq cmlkLCB1X2xvbmcgc3RhcnQsIHVfbG9uZyBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3Mp Oworc3RydWN0IHJlc291cmNlICogYXRhX3BjaV9hbGxvY19yZXNvdXJjZShkZXZpY2VfdCBkZXYs IGRldmljZV90IGNoaWxkLCBpbnQgdHlwZSwgaW50ICpyaWQsIGJ1c19hZGRyX3Qgc3RhcnQsIGJ1 c19hZGRyX3QgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKTsKIGludCBhdGFfcGNpX3Jl bGVhc2VfcmVzb3VyY2UoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGlu dCByaWQsIHN0cnVjdCByZXNvdXJjZSAqcik7CiBpbnQgYXRhX3BjaV9zZXR1cF9pbnRyKGRldmlj ZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIHN0cnVjdCByZXNvdXJjZSAqaXJxLCBpbnQgZmxhZ3Ms IGRyaXZlcl9maWx0ZXJfdCAqZmlsdGVyLCBkcml2ZXJfaW50cl90ICpmdW5jdGlvbiwgdm9pZCAq YXJndW1lbnQsIHZvaWQgKipjb29raWVwKTsKICBpbnQgYXRhX3BjaV90ZWFyZG93bl9pbnRyKGRl dmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIHN0cnVjdCByZXNvdXJjZSAqaXJxLCB2b2lkICpj b29raWUpOwpJbmRleDogc3lzL2Rldi9hdGEvY2hpcHNldHMvYXRhLXByb21pc2UuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBzeXMvZGV2L2F0YS9jaGlwc2V0cy9hdGEtcHJvbWlzZS5jCShyZXZpc2lvbiAyODcx ODkpCisrKyBzeXMvZGV2L2F0YS9jaGlwc2V0cy9hdGEtcHJvbWlzZS5jCSh3b3JraW5nIGNvcHkp CkBAIC0xOTEsMTggKzE5MSwxOSBAQAogCSFCVVNfUkVBRF9JVkFSKGRldmljZV9nZXRfcGFyZW50 KEdSQU5EUEFSRU5UKGRldikpLAogCQkgICAgICAgR1JBTkRQQVJFTlQoZGV2KSwgUENJX0lWQVJf REVWSUQsICZkZXZpZCkgJiYKIAkoKGRldmlkID09IEFUQV9ERUNfMjExNTApIHx8IChkZXZpZCA9 PSBBVEFfREVDXzIxMTUwXzEpKSkgewotCXN0YXRpYyBsb25nIHN0YXJ0ID0gMCwgZW5kID0gMDsK KwlzdGF0aWMgYnVzX2FkZHJfdCBzdGFydCA9IDA7CisJc3RhdGljIHVfbG9uZyBjb3VudCA9IDA7 CiAKIAlpZiAocGNpX2dldF9zbG90KGRldikgPT0gMSkgewotCSAgICBidXNfZ2V0X3Jlc291cmNl KGRldiwgU1lTX1JFU19JUlEsIDAsICZzdGFydCwgJmVuZCk7CisJICAgIGJ1c19nZXRfcmVzb3Vy Y2UoZGV2LCBTWVNfUkVTX0lSUSwgMCwgJnN0YXJ0LCAmY291bnQpOwogCSAgICBzdHJjYXQoYnVm ZmVyLCAiIChjaGFubmVsIDArMSkiKTsKIAl9Ci0JZWxzZSBpZiAocGNpX2dldF9zbG90KGRldikg PT0gMiAmJiBzdGFydCAmJiBlbmQpIHsKLQkgICAgYnVzX3NldF9yZXNvdXJjZShkZXYsIFNZU19S RVNfSVJRLCAwLCBzdGFydCwgZW5kKTsKKwllbHNlIGlmIChwY2lfZ2V0X3Nsb3QoZGV2KSA9PSAy ICYmIHN0YXJ0ICYmIGNvdW50KSB7CisJICAgIGJ1c19zZXRfcmVzb3VyY2UoZGV2LCBTWVNfUkVT X0lSUSwgMCwgc3RhcnQsIGNvdW50KTsKIAkgICAgc3RyY2F0KGJ1ZmZlciwgIiAoY2hhbm5lbCAy KzMpIik7CiAJfQogCWVsc2UgewotCSAgICBzdGFydCA9IGVuZCA9IDA7CisJICAgIHN0YXJ0ID0g Y291bnQgPSAwOwogCX0KICAgICB9CiAgICAgc3ByaW50ZihidWZmZXIsICIlcyAlcyBjb250cm9s bGVyIiwgYnVmZmVyLCBhdGFfbW9kZTJzdHIoaWR4LT5tYXhfZG1hKSk7CkluZGV4OiBzeXMvZGV2 L2ZkdC9zaW1wbGVidXMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvZGV2L2ZkdC9zaW1wbGVidXMuYwko cmV2aXNpb24gMjg3MTg5KQorKysgc3lzL2Rldi9mZHQvc2ltcGxlYnVzLmMJKHdvcmtpbmcgY29w eSkKQEAgLTQ2LDcgKzQ2LDcgQEAKIHN0YXRpYyBpbnQJCXNpbXBsZWJ1c19wcm9iZShkZXZpY2Vf dCBkZXYpOwogc3RhdGljIGludAkJc2ltcGxlYnVzX2F0dGFjaChkZXZpY2VfdCBkZXYpOwogc3Rh dGljIHN0cnVjdCByZXNvdXJjZSAqc2ltcGxlYnVzX2FsbG9jX3Jlc291cmNlKGRldmljZV90LCBk ZXZpY2VfdCwgaW50LAotICAgIGludCAqLCB1X2xvbmcsIHVfbG9uZywgdV9sb25nLCB1X2ludCk7 CisgICAgaW50ICosIGJ1c19hZGRyX3QsIGJ1c19hZGRyX3QsIHVfbG9uZywgdV9pbnQpOwogc3Rh dGljIHZvaWQJCXNpbXBsZWJ1c19wcm9iZV9ub21hdGNoKGRldmljZV90IGJ1cywgZGV2aWNlX3Qg Y2hpbGQpOwogc3RhdGljIGludAkJc2ltcGxlYnVzX3ByaW50X2NoaWxkKGRldmljZV90IGJ1cywg ZGV2aWNlX3QgY2hpbGQpOwogc3RhdGljIGRldmljZV90CQlzaW1wbGVidXNfYWRkX2NoaWxkKGRl dmljZV90IGRldiwgdV9pbnQgb3JkZXIsCkBAIC0zMTgsNyArMzE4LDcgQEAKIAogc3RhdGljIHN0 cnVjdCByZXNvdXJjZSAqCiBzaW1wbGVidXNfYWxsb2NfcmVzb3VyY2UoZGV2aWNlX3QgYnVzLCBk ZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAqcmlkLAotICAgIHVfbG9uZyBzdGFydCwgdV9s b25nIGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKKyAgICBidXNfYWRkcl90IHN0YXJ0 LCBidXNfYWRkcl90IGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKIHsKIAlzdHJ1Y3Qg c2ltcGxlYnVzX3NvZnRjICpzYzsKIAlzdHJ1Y3Qgc2ltcGxlYnVzX2RldmluZm8gKmRpOwpAQCAt MzMxLDcgKzMzMSw3IEBACiAJICogUmVxdWVzdCBmb3IgdGhlIGRlZmF1bHQgYWxsb2NhdGlvbiB3 aXRoIGEgZ2l2ZW4gcmlkOiB1c2UgcmVzb3VyY2UKIAkgKiBsaXN0IHN0b3JlZCBpbiB0aGUgbG9j YWwgZGV2aWNlIGluZm8uCiAJICovCi0JaWYgKChzdGFydCA9PSAwVUwpICYmIChlbmQgPT0gfjBV TCkpIHsKKwlpZiAoKHN0YXJ0ID09IFJNX01JTl9TVEFSVCkgJiYgKGVuZCA9PSBSTV9NQVhfRU5E KSkgewogCQlpZiAoKGRpID0gZGV2aWNlX2dldF9pdmFycyhjaGlsZCkpID09IE5VTEwpCiAJCQly ZXR1cm4gKE5VTEwpOwogCkBAIC0zNjUsNyArMzY1LDggQEAKIAkJaWYgKGogPT0gc2MtPm5yYW5n ZXMgJiYgc2MtPm5yYW5nZXMgIT0gMCkgewogCQkJaWYgKGJvb3R2ZXJib3NlKQogCQkJCWRldmlj ZV9wcmludGYoYnVzLCAiQ291bGQgbm90IG1hcCByZXNvdXJjZSAiCi0JCQkJICAgICIlI2x4LSUj bHhcbiIsIHN0YXJ0LCBlbmQpOworCQkJCSAgICAiJSNsbHgtJSNsbHhcbiIsICh1aW50NjRfdClz dGFydCwKKwkJCQkgICAgKHVpbnQ2NF90KWVuZCk7CiAKIAkJCXJldHVybiAoTlVMTCk7CiAJCX0K QEAgLTM4MSw4ICszODIsOCBAQAogCWludCBydjsKIAogCXJ2ID0gMDsKLQlydiArPSByZXNvdXJj ZV9saXN0X3ByaW50X3R5cGUoJmRpLT5ybCwgIm1lbSIsIFNZU19SRVNfTUVNT1JZLCAiJSNseCIp OwotCXJ2ICs9IHJlc291cmNlX2xpc3RfcHJpbnRfdHlwZSgmZGktPnJsLCAiaXJxIiwgU1lTX1JF U19JUlEsICIlbGQiKTsKKwlydiArPSByZXNvdXJjZV9saXN0X3ByaW50X3R5cGUoJmRpLT5ybCwg Im1lbSIsIFNZU19SRVNfTUVNT1JZLCAiJSNsbHgiKTsKKwlydiArPSByZXNvdXJjZV9saXN0X3By aW50X3R5cGUoJmRpLT5ybCwgImlycSIsIFNZU19SRVNfSVJRLCAiJWxsZCIpOwogCXJldHVybiAo cnYpOwogfQogCkluZGV4OiBzeXMvZGV2L2dwaW8vZ3Bpb2J1cy5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5 cy9kZXYvZ3Bpby9ncGlvYnVzLmMJKHJldmlzaW9uIDI4NzE4OSkKKysrIHN5cy9kZXYvZ3Bpby9n cGlvYnVzLmMJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQAogCXNjLT5zY19pbnRy X3JtYW4ucm1fdHlwZSA9IFJNQU5fQVJSQVk7CiAJc2MtPnNjX2ludHJfcm1hbi5ybV9kZXNjciA9 ICJHUElPIEludGVycnVwdHMiOwogCWlmIChybWFuX2luaXQoJnNjLT5zY19pbnRyX3JtYW4pICE9 IDAgfHwKLQkgICAgcm1hbl9tYW5hZ2VfcmVnaW9uKCZzYy0+c2NfaW50cl9ybWFuLCAwLCB+MCkg IT0gMCkKKwkgICAgcm1hbl9tYW5hZ2VfcmVnaW9uKCZzYy0+c2NfaW50cl9ybWFuLCAwLCB+KGJ1 c19hZGRyX3QpMCkgIT0gMCkKIAkJcGFuaWMoIiVzOiBmYWlsZWQgdG8gc2V0IHVwIHJtYW4uIiwg X19mdW5jX18pOwogCiAJaWYgKEdQSU9fUElOX01BWChzYy0+c2NfZGV2LCAmc2MtPnNjX25waW5z KSAhPSAwKQpAQCAtNDg4LDcgKzQ4OCw3IEBACiAKIHN0YXRpYyBpbnQKIGdwaW9idXNfc2V0X3Jl c291cmNlKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgcmlkLAot ICAgIHVfbG9uZyBzdGFydCwgdV9sb25nIGNvdW50KQorICAgIGJ1c19hZGRyX3Qgc3RhcnQsIHVf bG9uZyBjb3VudCkKIHsKIAlzdHJ1Y3QgZ3Bpb2J1c19pdmFyICpkZXZpOwogCXN0cnVjdCByZXNv dXJjZV9saXN0X2VudHJ5ICpybGU7CkBAIC01MDYsNyArNTA2LDcgQEAKIAogc3RhdGljIHN0cnVj dCByZXNvdXJjZSAqCiBncGlvYnVzX2FsbG9jX3Jlc291cmNlKGRldmljZV90IGJ1cywgZGV2aWNl X3QgY2hpbGQsIGludCB0eXBlLCBpbnQgKnJpZCwKLSAgICB1X2xvbmcgc3RhcnQsIHVfbG9uZyBl bmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCisgICAgYnVzX2FkZHJfdCBzdGFydCwgYnVz X2FkZHJfdCBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCiB7CiAJc3RydWN0IGdwaW9i dXNfc29mdGMgKnNjOwogCXN0cnVjdCByZXNvdXJjZSAqcnY7CkBAIC01MTYsNyArNTE2LDcgQEAK IAogCWlmICh0eXBlICE9IFNZU19SRVNfSVJRKQogCQlyZXR1cm4gKE5VTEwpOwotCWlzZGVmYXVs dCA9IChzdGFydCA9PSAwVUwgJiYgZW5kID09IH4wVUwgJiYgY291bnQgPT0gMSk7CisJaXNkZWZh dWx0ID0gKHN0YXJ0ID09IDBVTCAmJiBlbmQgPT0gfihidXNfYWRkcl90KTBVTCAmJiBjb3VudCA9 PSAxKTsKIAlybGUgPSBOVUxMOwogCWlmIChpc2RlZmF1bHQpIHsKIAkJcmwgPSBCVVNfR0VUX1JF U09VUkNFX0xJU1QoYnVzLCBjaGlsZCk7CkluZGV4OiBzeXMvZGV2L29mdy9vZndidXMuYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBzeXMvZGV2L29mdy9vZndidXMuYwkocmV2aXNpb24gMjg3MTg5KQorKysgc3lz L2Rldi9vZncvb2Z3YnVzLmMJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYsNyBAQAogCXNj LT5zY19tZW1fcm1hbi5ybV9kZXNjciA9ICJEZXZpY2UgTWVtb3J5IjsKIAlpZiAocm1hbl9pbml0 KCZzYy0+c2NfaW50cl9ybWFuKSAhPSAwIHx8CiAJICAgIHJtYW5faW5pdCgmc2MtPnNjX21lbV9y bWFuKSAhPSAwIHx8Ci0JICAgIHJtYW5fbWFuYWdlX3JlZ2lvbigmc2MtPnNjX2ludHJfcm1hbiwg MCwgfjApICE9IDAgfHwKKwkgICAgcm1hbl9tYW5hZ2VfcmVnaW9uKCZzYy0+c2NfaW50cl9ybWFu LCAwLCBCVVNfU1BBQ0VfTUFYQUREUikgIT0gMCB8fAogCSAgICBybWFuX21hbmFnZV9yZWdpb24o JnNjLT5zY19tZW1fcm1hbiwgMCwgQlVTX1NQQUNFX01BWEFERFIpICE9IDApCiAJCXBhbmljKCIl czogZmFpbGVkIHRvIHNldCB1cCBybWFucy4iLCBfX2Z1bmNfXyk7CiAKQEAgLTE3OCw3ICsxNzgs NyBAQAogCiBzdGF0aWMgc3RydWN0IHJlc291cmNlICoKIG9md2J1c19hbGxvY19yZXNvdXJjZShk ZXZpY2VfdCBidXMsIGRldmljZV90IGNoaWxkLCBpbnQgdHlwZSwgaW50ICpyaWQsCi0gICAgdV9s b25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKQorICAgIGJ1 c19hZGRyX3Qgc3RhcnQsIGJ1c19hZGRyX3QgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdz KQogewogCXN0cnVjdCBvZndidXNfc29mdGMgKnNjOwogCXN0cnVjdCBybWFuICpybTsKQEAgLTE4 Niw3ICsxODYsNyBAQAogCXN0cnVjdCByZXNvdXJjZV9saXN0X2VudHJ5ICpybGU7CiAJaW50IGlz ZGVmYXVsdCwgcGFzc3Rocm91Z2g7CiAKLQlpc2RlZmF1bHQgPSAoc3RhcnQgPT0gMFVMICYmIGVu ZCA9PSB+MFVMKTsKKwlpc2RlZmF1bHQgPSAoc3RhcnQgPT0gUk1fTUlOX1NUQVJUICYmIGVuZCA9 PSBSTV9NQVhfRU5EKTsKIAlwYXNzdGhyb3VnaCA9IChkZXZpY2VfZ2V0X3BhcmVudChjaGlsZCkg IT0gYnVzKTsKIAlzYyA9IGRldmljZV9nZXRfc29mdGMoYnVzKTsKIAlybGUgPSBOVUxMOwpAQCAt MjAxLDcgKzIwMSw3IEBACiAJCX0KIAkJc3RhcnQgPSBybGUtPnN0YXJ0OwogCQljb3VudCA9IHVs bWF4KGNvdW50LCBybGUtPmNvdW50KTsKLQkJZW5kID0gdWxtYXgocmxlLT5lbmQsIHN0YXJ0ICsg Y291bnQgLSAxKTsKKwkJZW5kID0gcW1heChybGUtPmVuZCwgc3RhcnQgKyBjb3VudCAtIDEpOwog CX0KIAogCXN3aXRjaCAodHlwZSkgewpAQCAtMjM5LDcgKzIzOSw3IEBACiAKIHN0YXRpYyBpbnQK IG9md2J1c19hZGp1c3RfcmVzb3VyY2UoZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCBfX3Vu dXNlZCwgaW50IHR5cGUsCi0gICAgc3RydWN0IHJlc291cmNlICpyLCB1X2xvbmcgc3RhcnQsIHVf bG9uZyBlbmQpCisgICAgc3RydWN0IHJlc291cmNlICpyLCBidXNfYWRkcl90IHN0YXJ0LCBidXNf YWRkcl90IGVuZCkKIHsKIAlzdHJ1Y3Qgb2Z3YnVzX3NvZnRjICpzYzsKIAlzdHJ1Y3Qgcm1hbiAq cm07CkluZGV4OiBzeXMvZGV2L3BjaS9ob3N0Yl9wY2kuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvZGV2 L3BjaS9ob3N0Yl9wY2kuYwkocmV2aXNpb24gMjg3MTg5KQorKysgc3lzL2Rldi9wY2kvaG9zdGJf cGNpLmMJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQAogCiBzdGF0aWMgc3RydWN0 IHJlc291cmNlICoKIHBjaV9ob3N0Yl9hbGxvY19yZXNvdXJjZShkZXZpY2VfdCBkZXYsIGRldmlj ZV90IGNoaWxkLCBpbnQgdHlwZSwgaW50ICpyaWQsCi0gICAgdV9sb25nIHN0YXJ0LCB1X2xvbmcg ZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKQorICAgIGJ1c19hZGRyX3Qgc3RhcnQsIGJ1 c19hZGRyX3QgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKQogewogCiAJcmV0dXJuIChi dXNfYWxsb2NfcmVzb3VyY2UoZGV2LCB0eXBlLCByaWQsIHN0YXJ0LCBlbmQsIGNvdW50LCBmbGFn cykpOwpJbmRleDogc3lzL2Rldi9wY2kvcGNpLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9wY2kv cGNpLmMJKHJldmlzaW9uIDI4NzE4OSkKKysrIHN5cy9kZXYvcGNpL3BjaS5jCSh3b3JraW5nIGNv cHkpCkBAIC00NzEwLDcgKzQ3MTAsNyBAQAogCiBzdHJ1Y3QgcmVzb3VyY2UgKgogcGNpX2FsbG9j X3Jlc291cmNlKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgKnJp ZCwKLSAgICB1X2xvbmcgc3RhcnQsIHVfbG9uZyBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxh Z3MpCisgICAgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQsIHVfbG9uZyBjb3VudCwg dV9pbnQgZmxhZ3MpCiB7CiAjaWZkZWYgUENJX0lPVgogCXN0cnVjdCBwY2lfZGV2aW5mbyAqZGlu Zm87CkluZGV4OiBzeXMvZGV2L3BjaS9wY2lfcGNpLmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9w Y2kvcGNpX3BjaS5jCShyZXZpc2lvbiAyODcxODkpCisrKyBzeXMvZGV2L3BjaS9wY2lfcGNpLmMJ KHdvcmtpbmcgY29weSkKQEAgLTIxMiw5ICsyMTIsMTAgQEAKICAqIElTQSBhbGlhcyByYW5nZS4K ICAqLwogc3RhdGljIGludAotcGNpYl9pc19pc2FfcmFuZ2Uoc3RydWN0IHBjaWJfc29mdGMgKnNj LCB1X2xvbmcgc3RhcnQsIHVfbG9uZyBlbmQsIHVfbG9uZyBjb3VudCkKK3BjaWJfaXNfaXNhX3Jh bmdlKHN0cnVjdCBwY2liX3NvZnRjICpzYywgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBl bmQsCisgICAgdV9sb25nIGNvdW50KQogewotCXVfbG9uZyBuZXh0X2FsaWFzOworCWJ1c19hZGRy X3QgbmV4dF9hbGlhczsKIAogCWlmICghKHNjLT5icmlkZ2VjdGwgJiBQQ0lCX0JDUl9JU0FfRU5B QkxFKSkKIAkJcmV0dXJuICgwKTsKQEAgLTI3NSwxMyArMjc2LDEzIEBACiAJfQogfQogCi10eXBl ZGVmIHZvaWQgKG5vbmlzYV9jYWxsYmFjaykodV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB2b2lk ICphcmcpOwordHlwZWRlZiB2b2lkIChub25pc2FfY2FsbGJhY2spKGJ1c19hZGRyX3Qgc3RhcnQs IGJ1c19hZGRyX3QgZW5kLCB2b2lkICphcmcpOwogCiBzdGF0aWMgdm9pZAotcGNpYl93YWxrX25v bmlzYV9yYW5nZXModV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCBub25pc2FfY2FsbGJhY2sgKmNi LAorcGNpYl93YWxrX25vbmlzYV9yYW5nZXMoYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBl bmQsIG5vbmlzYV9jYWxsYmFjayAqY2IsCiAgICAgdm9pZCAqYXJnKQogewotCXVfbG9uZyBuZXh0 X2VuZDsKKwlidXNfYWRkcl90IG5leHRfZW5kOwogCiAJLyoKIAkgKiBJZiBzdGFydCBpcyB3aXRo aW4gYW4gSVNBIGFsaWFzIHJhbmdlLCBtb3ZlIHVwIHRvIHRoZSBzdGFydApAQCAtMzA5LDcgKzMx MCw3IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1jb3VudF9yYW5nZXModV9sb25nIHN0YXJ0LCB1X2xv bmcgZW5kLCB2b2lkICphcmcpCitjb3VudF9yYW5nZXMoYnVzX2FkZHJfdCBzdGFydCwgYnVzX2Fk ZHJfdCBlbmQsIHZvaWQgKmFyZykKIHsKIAlpbnQgKmNvdW50cDsKIApAQCAtMzI0LDcgKzMyNSw3 IEBACiB9OwogCiBzdGF0aWMgdm9pZAotYWxsb2NfcmFuZ2VzKHVfbG9uZyBzdGFydCwgdV9sb25n IGVuZCwgdm9pZCAqYXJnKQorYWxsb2NfcmFuZ2VzKGJ1c19hZGRyX3Qgc3RhcnQsIGJ1c19hZGRy X3QgZW5kLCB2b2lkICphcmcpCiB7CiAJc3RydWN0IGFsbG9jX3N0YXRlICphczsKIAlzdHJ1Y3Qg cGNpYl93aW5kb3cgKnc7CkBAIC0zNDgsNyArMzQ5LDcgQEAKIH0KIAogc3RhdGljIGludAotcGNp Yl9hbGxvY19ub25pc2FfcmFuZ2VzKHN0cnVjdCBwY2liX3NvZnRjICpzYywgdV9sb25nIHN0YXJ0 LCB1X2xvbmcgZW5kKQorcGNpYl9hbGxvY19ub25pc2FfcmFuZ2VzKHN0cnVjdCBwY2liX3NvZnRj ICpzYywgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQpCiB7CiAJc3RydWN0IGFsbG9j X3N0YXRlIGFzOwogCWludCBpLCBuZXdfY291bnQ7CkBAIC0zODcsNyArMzg4LDcgQEAKIAljaGFy IGJ1Zls2NF07CiAJaW50IGVycm9yLCByaWQ7CiAKLQlpZiAobWF4X2FkZHJlc3MgIT0gKHVfbG9u ZyltYXhfYWRkcmVzcykKKwlpZiAobWF4X2FkZHJlc3MgIT0gKGJ1c19hZGRyX3QpbWF4X2FkZHJl c3MpCiAJCW1heF9hZGRyZXNzID0gfjB1bDsKIAl3LT5ybWFuLnJtX3N0YXJ0ID0gMDsKIAl3LT5y bWFuLnJtX2VuZCA9IG1heF9hZGRyZXNzOwpAQCAtNjA5LDcgKzYxMCw3IEBACiAKIHN0YXRpYyBz dHJ1Y3QgcmVzb3VyY2UgKgogcGNpYl9zdWJhbGxvY19idXMoc3RydWN0IHBjaWJfc2VjYnVzICpi dXMsIGRldmljZV90IGNoaWxkLCBpbnQgKnJpZCwKLSAgICB1X2xvbmcgc3RhcnQsIHVfbG9uZyBl bmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCisgICAgYnVzX2FkZHJfdCBzdGFydCwgYnVz X2FkZHJfdCBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCiB7CiAJc3RydWN0IHJlc291 cmNlICpyZXM7CiAKQEAgLTYzMyw5ICs2MzQsOSBAQAogICogc3ViYnVzLgogICovCiBzdGF0aWMg aW50Ci1wY2liX2dyb3dfc3ViYnVzKHN0cnVjdCBwY2liX3NlY2J1cyAqYnVzLCB1X2xvbmcgbmV3 X2VuZCkKK3BjaWJfZ3Jvd19zdWJidXMoc3RydWN0IHBjaWJfc2VjYnVzICpidXMsIGJ1c19hZGRy X3QgbmV3X2VuZCkKIHsKLQl1X2xvbmcgb2xkX2VuZDsKKwlidXNfYWRkcl90IG9sZF9lbmQ7CiAJ aW50IGVycm9yOwogCiAJb2xkX2VuZCA9IHJtYW5fZ2V0X2VuZChidXMtPnJlcyk7CkBAIC02NTgs MTAgKzY1OSwxMCBAQAogCiBzdHJ1Y3QgcmVzb3VyY2UgKgogcGNpYl9hbGxvY19zdWJidXMoc3Ry dWN0IHBjaWJfc2VjYnVzICpidXMsIGRldmljZV90IGNoaWxkLCBpbnQgKnJpZCwKLSAgICB1X2xv bmcgc3RhcnQsIHVfbG9uZyBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCisgICAgYnVz X2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3Mp CiB7CiAJc3RydWN0IHJlc291cmNlICpyZXM7Ci0JdV9sb25nIHN0YXJ0X2ZyZWUsIGVuZF9mcmVl LCBuZXdfZW5kOworCWJ1c19hZGRyX3Qgc3RhcnRfZnJlZSwgZW5kX2ZyZWUsIG5ld19lbmQ7CiAK IAkvKgogCSAqIEZpcnN0LCBzZWUgaWYgdGhlIHJlcXVlc3QgY2FuIGJlIHNhdGlzaWZpZWQgYnkg dGhlIGV4aXN0aW5nCkBAIC0xMTU4LDggKzExNTksOCBAQAogICovCiBzdGF0aWMgc3RydWN0IHJl c291cmNlICoKIHBjaWJfc3ViYWxsb2NfcmVzb3VyY2Uoc3RydWN0IHBjaWJfc29mdGMgKnNjLCBz dHJ1Y3QgcGNpYl93aW5kb3cgKncsCi0gICAgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQg KnJpZCwgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB1X2xvbmcgY291bnQsCi0gICAgdV9pbnQg ZmxhZ3MpCisgICAgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgKnJpZCwgYnVzX2FkZHJf dCBzdGFydCwgYnVzX2FkZHJfdCBlbmQsCisgICAgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykK IHsKIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKIApAQCAtMTE5NiwxMCArMTE5NywxMCBAQAogLyog QWxsb2NhdGUgYSBmcmVzaCByZXNvdXJjZSByYW5nZSBmb3IgYW4gdW5jb25maWd1cmVkIHdpbmRv dy4gKi8KIHN0YXRpYyBpbnQKIHBjaWJfYWxsb2NfbmV3X3dpbmRvdyhzdHJ1Y3QgcGNpYl9zb2Z0 YyAqc2MsIHN0cnVjdCBwY2liX3dpbmRvdyAqdywgaW50IHR5cGUsCi0gICAgdV9sb25nIHN0YXJ0 LCB1X2xvbmcgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKQorICAgIGJ1c19hZGRyX3Qg c3RhcnQsIGJ1c19hZGRyX3QgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKQogewogCXN0 cnVjdCByZXNvdXJjZSAqcmVzOwotCXVfbG9uZyBiYXNlLCBsaW1pdCwgd21hc2s7CisJYnVzX2Fk ZHJfdCBiYXNlLCBsaW1pdCwgd21hc2s7CiAJaW50IHJpZDsKIAogCS8qCkBAIC0xMjY5LDcgKzEy NzAsNyBAQAogLyogVHJ5IHRvIGV4cGFuZCBhbiBleGlzdGluZyB3aW5kb3cgdG8gdGhlIHJlcXVl c3RlZCBiYXNlIGFuZCBsaW1pdC4gKi8KIHN0YXRpYyBpbnQKIHBjaWJfZXhwYW5kX3dpbmRvdyhz dHJ1Y3QgcGNpYl9zb2Z0YyAqc2MsIHN0cnVjdCBwY2liX3dpbmRvdyAqdywgaW50IHR5cGUsCi0g ICAgdV9sb25nIGJhc2UsIHVfbG9uZyBsaW1pdCkKKyAgICBidXNfYWRkcl90IGJhc2UsIGJ1c19h ZGRyX3QgbGltaXQpCiB7CiAJc3RydWN0IHJlc291cmNlICpyZXM7CiAJaW50IGVycm9yLCBpLCBm b3JjZV82NGtfYmFzZTsKQEAgLTEzNjcsOSArMTM2OCwxMCBAQAogICovCiBzdGF0aWMgaW50CiBw Y2liX2dyb3dfd2luZG93KHN0cnVjdCBwY2liX3NvZnRjICpzYywgc3RydWN0IHBjaWJfd2luZG93 ICp3LCBpbnQgdHlwZSwKLSAgICB1X2xvbmcgc3RhcnQsIHVfbG9uZyBlbmQsIHVfbG9uZyBjb3Vu dCwgdV9pbnQgZmxhZ3MpCisgICAgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQsIHVf bG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCiB7Ci0JdV9sb25nIGFsaWduLCBzdGFydF9mcmVlLCBl bmRfZnJlZSwgZnJvbnQsIGJhY2ssIHdtYXNrOworCWJ1c19hZGRyX3Qgc3RhcnRfZnJlZSwgZW5k X2ZyZWUsIGZyb250LCBiYWNrOworCWJ1c19hZGRyX3QgYWxpZ24sIHdtYXNrOwogCWludCBlcnJv cjsKIAogCS8qCkBAIC0xNDAwLDggKzE0MDIsOCBAQAogCQlpZiAoZXJyb3IpIHsKIAkJCWlmIChi b290dmVyYm9zZSkKIAkJCQlkZXZpY2VfcHJpbnRmKHNjLT5kZXYsCi0JCSAgICAiZmFpbGVkIHRv IGFsbG9jYXRlIGluaXRpYWwgJXMgd2luZG93ICglI2x4LSUjbHgsJSNseClcbiIsCi0JCQkJICAg IHctPm5hbWUsIHN0YXJ0LCBlbmQsIGNvdW50KTsKKwkJICAgICJmYWlsZWQgdG8gYWxsb2NhdGUg aW5pdGlhbCAlcyB3aW5kb3cgKCUjangtJSNqeCwlI2x4KVxuIiwKKwkJCQkgICAgdy0+bmFtZSwg KHVpbnRtYXhfdClzdGFydCwgKHVpbnRtYXhfdCllbmQsIGNvdW50KTsKIAkJCXJldHVybiAoZXJy b3IpOwogCQl9CiAJCWlmIChib290dmVyYm9zZSkKQEAgLTE1MzQsNyArMTUzNiw3IEBACiAgKi8K IHN0cnVjdCByZXNvdXJjZSAqCiBwY2liX2FsbG9jX3Jlc291cmNlKGRldmljZV90IGRldiwgZGV2 aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgKnJpZCwKLSAgICB1X2xvbmcgc3RhcnQsIHVfbG9u ZyBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCisgICAgYnVzX2FkZHJfdCBzdGFydCwg YnVzX2FkZHJfdCBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCiB7CiAJc3RydWN0IHBj aWJfc29mdGMgKnNjOwogCXN0cnVjdCByZXNvdXJjZSAqcjsKQEAgLTE2MjMsNyArMTYyNSw3IEBA CiAKIGludAogcGNpYl9hZGp1c3RfcmVzb3VyY2UoZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGls ZCwgaW50IHR5cGUsIHN0cnVjdCByZXNvdXJjZSAqciwKLSAgICB1X2xvbmcgc3RhcnQsIHVfbG9u ZyBlbmQpCisgICAgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQpCiB7CiAJc3RydWN0 IHBjaWJfc29mdGMgKnNjOwogCkBAIC0xNjU4LDcgKzE2NjAsNyBAQAogICovCiBzdHJ1Y3QgcmVz b3VyY2UgKgogcGNpYl9hbGxvY19yZXNvdXJjZShkZXZpY2VfdCBkZXYsIGRldmljZV90IGNoaWxk LCBpbnQgdHlwZSwgaW50ICpyaWQsIAotICAgIHVfbG9uZyBzdGFydCwgdV9sb25nIGVuZCwgdV9s b25nIGNvdW50LCB1X2ludCBmbGFncykKKyAgICBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRkcl90 IGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKIHsKIAlzdHJ1Y3QgcGNpYl9zb2Z0Ywkq c2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CiAJY29uc3QgY2hhciAqbmFtZSwgKnN1ZmZpeDsK SW5kZXg6IHN5cy9kZXYvcGNpL3BjaV9wcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9w Y2kvcGNpX3ByaXZhdGUuaAkocmV2aXNpb24gMjg3MTg5KQorKysgc3lzL2Rldi9wY2kvcGNpX3By aXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDggKzEwMyw4IEBACiBpbnQJCXBjaV9tc2lf Y291bnRfbWV0aG9kKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQpOwogaW50CQlwY2lfbXNp eF9jb3VudF9tZXRob2QoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCk7CiBzdHJ1Y3QgcmVz b3VyY2UJKnBjaV9hbGxvY19yZXNvdXJjZShkZXZpY2VfdCBkZXYsIGRldmljZV90IGNoaWxkLCAK LQkJICAgIGludCB0eXBlLCBpbnQgKnJpZCwgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB1X2xv bmcgY291bnQsCi0JCSAgICB1X2ludCBmbGFncyk7CisJCSAgICBpbnQgdHlwZSwgaW50ICpyaWQs IGJ1c19hZGRyX3Qgc3RhcnQsIGJ1c19hZGRyX3QgZW5kLAorCQkgICAgdV9sb25nIGNvdW50LCB1 X2ludCBmbGFncyk7CiBpbnQJCXBjaV9yZWxlYXNlX3Jlc291cmNlKGRldmljZV90IGRldiwgZGV2 aWNlX3QgY2hpbGQsIGludCB0eXBlLAogCQkgICAgaW50IHJpZCwgc3RydWN0IHJlc291cmNlICpy KTsKIGludAkJcGNpX2FjdGl2YXRlX3Jlc291cmNlKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hp bGQsIGludCB0eXBlLApJbmRleDogc3lzL2Rldi9wY2kvcGNpX3N1YnIuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBzeXMvZGV2L3BjaS9wY2lfc3Vici5jCShyZXZpc2lvbiAyODcxODkpCisrKyBzeXMvZGV2L3Bj aS9wY2lfc3Vici5jCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsOCArMTc4LDggQEAKIH0KIAogaW50 Ci1wY2liX2hvc3RfcmVzX2RlY29kZXMoc3RydWN0IHBjaWJfaG9zdF9yZXNvdXJjZXMgKmhyLCBp bnQgdHlwZSwgdV9sb25nIHN0YXJ0LAotICAgIHVfbG9uZyBlbmQsIHVfaW50IGZsYWdzKQorcGNp Yl9ob3N0X3Jlc19kZWNvZGVzKHN0cnVjdCBwY2liX2hvc3RfcmVzb3VyY2VzICpociwgaW50IHR5 cGUsIGJ1c19hZGRyX3Qgc3RhcnQsCisgICAgYnVzX2FkZHJfdCBlbmQsIHVfaW50IGZsYWdzKQog ewogCXN0cnVjdCByZXNvdXJjZV9saXN0X2VudHJ5ICpybGU7CiAJaW50IHJpZDsKQEAgLTIwMSwx MSArMjAxLDExIEBACiAKIHN0cnVjdCByZXNvdXJjZSAqCiBwY2liX2hvc3RfcmVzX2FsbG9jKHN0 cnVjdCBwY2liX2hvc3RfcmVzb3VyY2VzICpociwgZGV2aWNlX3QgZGV2LCBpbnQgdHlwZSwKLSAg ICBpbnQgKnJpZCwgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50 IGZsYWdzKQorICAgIGludCAqcmlkLCBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCwg dV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKIHsKIAlzdHJ1Y3QgcmVzb3VyY2VfbGlzdF9lbnRy eSAqcmxlOwogCXN0cnVjdCByZXNvdXJjZSAqcjsKLQl1X2xvbmcgbmV3X3N0YXJ0LCBuZXdfZW5k OworCWJ1c19hZGRyX3QgbmV3X3N0YXJ0LCBuZXdfZW5kOwogCiAJaWYgKGZsYWdzICYgUkZfUFJF RkVUQ0hBQkxFKQogCQlLQVNTRVJUKHR5cGUgPT0gU1lTX1JFU19NRU1PUlksCkBAIC0yMjksOCAr MjI5LDggQEAKIAkJaWYgKCgoZmxhZ3MgJiBSRl9QUkVGRVRDSEFCTEUpICE9IDApICE9CiAJCSAg ICAoKHJsZS0+ZmxhZ3MgJiBSTEVfUFJFRkVUQ0gpICE9IDApKQogCQkJY29udGludWU7Ci0JCW5l d19zdGFydCA9IHVsbWF4KHN0YXJ0LCBybGUtPnN0YXJ0KTsKLQkJbmV3X2VuZCA9IHVsbWluKGVu ZCwgcmxlLT5lbmQpOworCQluZXdfc3RhcnQgPSBxbWF4KHN0YXJ0LCBybGUtPnN0YXJ0KTsKKwkJ bmV3X2VuZCA9IHFtaW4oZW5kLCBybGUtPmVuZCk7CiAJCWlmIChuZXdfc3RhcnQgPiBuZXdfZW5k IHx8CiAJCSAgICBuZXdfc3RhcnQgKyBjb3VudCAtIDEgPiBuZXdfZW5kIHx8CiAJCSAgICBuZXdf c3RhcnQgKyBjb3VudCA8IG5ld19zdGFydCkKQEAgLTI2MSw3ICsyNjEsNyBAQAogCiBpbnQKIHBj aWJfaG9zdF9yZXNfYWRqdXN0KHN0cnVjdCBwY2liX2hvc3RfcmVzb3VyY2VzICpociwgZGV2aWNl X3QgZGV2LCBpbnQgdHlwZSwKLSAgICBzdHJ1Y3QgcmVzb3VyY2UgKnIsIHVfbG9uZyBzdGFydCwg dV9sb25nIGVuZCkKKyAgICBzdHJ1Y3QgcmVzb3VyY2UgKnIsIGJ1c19hZGRyX3Qgc3RhcnQsIGJ1 c19hZGRyX3QgZW5kKQogewogCXN0cnVjdCByZXNvdXJjZV9saXN0X2VudHJ5ICpybGU7CiAKQEAg LTMyOSw4ICszMjksOCBAQAogfQogCiBzdHJ1Y3QgcmVzb3VyY2UgKgotcGNpX2RvbWFpbl9hbGxv Y19idXMoaW50IGRvbWFpbiwgZGV2aWNlX3QgZGV2LCBpbnQgKnJpZCwgdV9sb25nIHN0YXJ0LAot ICAgIHVfbG9uZyBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCitwY2lfZG9tYWluX2Fs bG9jX2J1cyhpbnQgZG9tYWluLCBkZXZpY2VfdCBkZXYsIGludCAqcmlkLCBidXNfYWRkcl90IHN0 YXJ0LAorICAgIGJ1c19hZGRyX3QgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKQogewog CXN0cnVjdCBwY2lfZG9tYWluICpkOwogCXN0cnVjdCByZXNvdXJjZSAqcmVzOwpAQCAtMzQ5LDcg KzM0OSw3IEBACiAKIGludAogcGNpX2RvbWFpbl9hZGp1c3RfYnVzKGludCBkb21haW4sIGRldmlj ZV90IGRldiwgc3RydWN0IHJlc291cmNlICpyLAotICAgIHVfbG9uZyBzdGFydCwgdV9sb25nIGVu ZCkKKyAgICBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCkKIHsKICNpZmRlZiBJTlZB UklBTlRTCiAJc3RydWN0IHBjaV9kb21haW4gKmQ7CkluZGV4OiBzeXMvZGV2L3BjaS9wY2liX3By aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvZGV2L3BjaS9wY2liX3ByaXZhdGUuaAkocmV2aXNp b24gMjg3MTg5KQorKysgc3lzL2Rldi9wY2kvcGNpYl9wcml2YXRlLmgJKHdvcmtpbmcgY29weSkK QEAgLTQ5LDEzICs0OSwxMyBAQAogaW50CQlwY2liX2hvc3RfcmVzX2ZyZWUoZGV2aWNlX3QgcGNp YiwKIAkJICAgIHN0cnVjdCBwY2liX2hvc3RfcmVzb3VyY2VzICpocik7CiBpbnQJCXBjaWJfaG9z dF9yZXNfZGVjb2RlcyhzdHJ1Y3QgcGNpYl9ob3N0X3Jlc291cmNlcyAqaHIsIGludCB0eXBlLAot CQkgICAgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB1X2ludCBmbGFncyk7CisJCSAgICBidXNf YWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCwgdV9pbnQgZmxhZ3MpOwogc3RydWN0IHJlc291 cmNlICpwY2liX2hvc3RfcmVzX2FsbG9jKHN0cnVjdCBwY2liX2hvc3RfcmVzb3VyY2VzICpociwK LQkJICAgIGRldmljZV90IGRldiwgaW50IHR5cGUsIGludCAqcmlkLCB1X2xvbmcgc3RhcnQsIHVf bG9uZyBlbmQsCi0JCSAgICB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKTsKKwkJICAgIGRldmlj ZV90IGRldiwgaW50IHR5cGUsIGludCAqcmlkLCBidXNfYWRkcl90IHN0YXJ0LAorCQkgICAgYnVz X2FkZHJfdCBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpOwogaW50CQlwY2liX2hvc3Rf cmVzX2FkanVzdChzdHJ1Y3QgcGNpYl9ob3N0X3Jlc291cmNlcyAqaHIsCi0JCSAgICBkZXZpY2Vf dCBkZXYsIGludCB0eXBlLCBzdHJ1Y3QgcmVzb3VyY2UgKnIsIHVfbG9uZyBzdGFydCwKLQkJICAg IHVfbG9uZyBlbmQpOworCQkgICAgZGV2aWNlX3QgZGV2LCBpbnQgdHlwZSwgc3RydWN0IHJlc291 cmNlICpyLCBidXNfYWRkcl90IHN0YXJ0LAorCQkgICAgYnVzX2FkZHJfdCBlbmQpOwogI2VuZGlm CiAKIC8qCkBAIC0xMzIsMTMgKzEzMiwxMyBAQAogICAgIGludCBzbG90LCBpbnQgZnVuYywgdWlu dDhfdCAqYnVzbnVtKTsKICNpZiBkZWZpbmVkKE5FV19QQ0lCKSAmJiBkZWZpbmVkKFBDSV9SRVNf QlVTKQogc3RydWN0IHJlc291cmNlICpwY2lfZG9tYWluX2FsbG9jX2J1cyhpbnQgZG9tYWluLCBk ZXZpY2VfdCBkZXYsIGludCAqcmlkLAotCQkgICAgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB1 X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKTsKKwkJICAgIGJ1c19hZGRyX3Qgc3RhcnQsIGJ1c19h ZGRyX3QgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKTsKIGludAkJcGNpX2RvbWFpbl9h ZGp1c3RfYnVzKGludCBkb21haW4sIGRldmljZV90IGRldiwKLQkJICAgIHN0cnVjdCByZXNvdXJj ZSAqciwgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kKTsKKwkJICAgIHN0cnVjdCByZXNvdXJjZSAq ciwgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQpOwogaW50CQlwY2lfZG9tYWluX3Jl bGVhc2VfYnVzKGludCBkb21haW4sIGRldmljZV90IGRldiwgaW50IHJpZCwKIAkJICAgIHN0cnVj dCByZXNvdXJjZSAqcik7CiBzdHJ1Y3QgcmVzb3VyY2UgKnBjaWJfYWxsb2Nfc3ViYnVzKHN0cnVj dCBwY2liX3NlY2J1cyAqYnVzLCBkZXZpY2VfdCBjaGlsZCwKLQkJICAgIGludCAqcmlkLCB1X2xv bmcgc3RhcnQsIHVfbG9uZyBlbmQsIHVfbG9uZyBjb3VudCwKKwkJICAgIGludCAqcmlkLCBidXNf YWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCwgdV9sb25nIGNvdW50LAogCQkgICAgdV9pbnQg ZmxhZ3MpOwogdm9pZAkJcGNpYl9zZXR1cF9zZWNidXMoZGV2aWNlX3QgZGV2LCBzdHJ1Y3QgcGNp Yl9zZWNidXMgKmJ1cywKICAgICBpbnQgbWluX2NvdW50KTsKQEAgLTE1MiwxMCArMTUyLDExIEBA CiBpbnQJCXBjaWJfcmVhZF9pdmFyKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIGludCB3 aGljaCwgdWludHB0cl90ICpyZXN1bHQpOwogaW50CQlwY2liX3dyaXRlX2l2YXIoZGV2aWNlX3Qg ZGV2LCBkZXZpY2VfdCBjaGlsZCwgaW50IHdoaWNoLCB1aW50cHRyX3QgdmFsdWUpOwogc3RydWN0 IHJlc291cmNlICpwY2liX2FsbG9jX3Jlc291cmNlKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hp bGQsIGludCB0eXBlLCBpbnQgKnJpZCwgCi0JCQkJCSAgICB1X2xvbmcgc3RhcnQsIHVfbG9uZyBl bmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpOworCQkJCQkgICAgYnVzX2FkZHJfdCBzdGFy dCwgYnVzX2FkZHJfdCBlbmQsCisJCQkJCSAgICB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKTsK ICNpZmRlZiBORVdfUENJQgogaW50CQlwY2liX2FkanVzdF9yZXNvdXJjZShkZXZpY2VfdCBidXMs IGRldmljZV90IGNoaWxkLCBpbnQgdHlwZSwKLSAgICBzdHJ1Y3QgcmVzb3VyY2UgKnIsIHVfbG9u ZyBzdGFydCwgdV9sb25nIGVuZCk7CisgICAgc3RydWN0IHJlc291cmNlICpyLCBidXNfYWRkcl90 IHN0YXJ0LCBidXNfYWRkcl90IGVuZCk7CiBpbnQJCXBjaWJfcmVsZWFzZV9yZXNvdXJjZShkZXZp Y2VfdCBkZXYsIGRldmljZV90IGNoaWxkLCBpbnQgdHlwZSwgaW50IHJpZCwKICAgICBzdHJ1Y3Qg cmVzb3VyY2UgKnIpOwogI2VuZGlmCkluZGV4OiBzeXMvZGV2L3BjaS92Z2FfcGNpLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gc3lzL2Rldi9wY2kvdmdhX3BjaS5jCShyZXZpc2lvbiAyODcxODkpCisrKyBzeXMv ZGV2L3BjaS92Z2FfcGNpLmMJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAKIAogc3Rh dGljIHN0cnVjdCB2Z2FfcmVzb3VyY2UgKmxvb2t1cF9yZXMoc3RydWN0IHZnYV9wY2lfc29mdGMg KnNjLCBpbnQgcmlkKTsKIHN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKnZnYV9wY2lfYWxsb2NfcmVz b3VyY2UoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCwKLSAgICBpbnQgdHlwZSwgaW50ICpy aWQsIHVfbG9uZyBzdGFydCwgdV9sb25nIGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncyk7 CisgICAgaW50IHR5cGUsIGludCAqcmlkLCBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVu ZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncyk7CiBzdGF0aWMgaW50CXZnYV9wY2lfcmVsZWFz ZV9yZXNvdXJjZShkZXZpY2VfdCBkZXYsIGRldmljZV90IGNoaWxkLCBpbnQgdHlwZSwKICAgICBp bnQgcmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnIpOwogCkBAIC0xNjMsOCArMTYzLDggQEAKICNlbmRp ZgogCiAJcmlkID0gUENJUl9CSU9TOwotCXJlcyA9IHZnYV9wY2lfYWxsb2NfcmVzb3VyY2UoZGV2 LCBOVUxMLCBTWVNfUkVTX01FTU9SWSwgJnJpZCwgMHVsLAotCSAgICB+MHVsLCAxLCBSRl9BQ1RJ VkUpOworCXJlcyA9IHZnYV9wY2lfYWxsb2NfcmVzb3VyY2UoZGV2LCBOVUxMLCBTWVNfUkVTX01F TU9SWSwgJnJpZCwgUk1fTUlOX1NUQVJULAorCSAgICBSTV9NQVhfRU5ELCAxLCBSRl9BQ1RJVkUp OwogCWlmIChyZXMgPT0gTlVMTCkgewogCQlyZXR1cm4gKE5VTEwpOwogCX0KQEAgLTMzMyw3ICsz MzMsNyBAQAogCiBzdGF0aWMgc3RydWN0IHJlc291cmNlICoKIHZnYV9wY2lfYWxsb2NfcmVzb3Vy Y2UoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAqcmlkLAotICAg IHVfbG9uZyBzdGFydCwgdV9sb25nIGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKKyAg ICBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBm bGFncykKIHsKIAlzdHJ1Y3QgdmdhX3Jlc291cmNlICp2cjsKIApJbmRleDogc3lzL2Rldi9zY2Mv c2NjX2JmZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9kZXYvc2NjL3NjY19iZmUuaAkocmV2aXNpb24g Mjg3MTg5KQorKysgc3lzL2Rldi9zY2Mvc2NjX2JmZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMs OCArMTQzLDggQEAKIGludCBzY2NfYmZlX3Byb2JlKGRldmljZV90IGRldiwgdV9pbnQgcmVnc2hm dCwgdV9pbnQgcmNsaywgdV9pbnQgcmlkKTsKIAogc3RydWN0IHJlc291cmNlICpzY2NfYnVzX2Fs bG9jX3Jlc291cmNlKGRldmljZV90LCBkZXZpY2VfdCwgaW50LCBpbnQgKiwKLSAgICB1X2xvbmcs IHVfbG9uZywgdV9sb25nLCB1X2ludCk7Ci1pbnQgc2NjX2J1c19nZXRfcmVzb3VyY2UoZGV2aWNl X3QsIGRldmljZV90LCBpbnQsIGludCwgdV9sb25nICosIHVfbG9uZyAqKTsKKyAgICBidXNfYWRk cl90LCBidXNfYWRkcl90LCB1X2xvbmcsIHVfaW50KTsKK2ludCBzY2NfYnVzX2dldF9yZXNvdXJj ZShkZXZpY2VfdCwgZGV2aWNlX3QsIGludCwgaW50LCBidXNfYWRkcl90ICosIHVfbG9uZyAqKTsK IGludCBzY2NfYnVzX3JlYWRfaXZhcihkZXZpY2VfdCwgZGV2aWNlX3QsIGludCwgdWludHB0cl90 ICopOwogaW50IHNjY19idXNfcmVsZWFzZV9yZXNvdXJjZShkZXZpY2VfdCwgZGV2aWNlX3QsIGlu dCwgaW50LCBzdHJ1Y3QgcmVzb3VyY2UgKik7CiBpbnQgc2NjX2J1c19zZXR1cF9pbnRyKGRldmlj ZV90LCBkZXZpY2VfdCwgc3RydWN0IHJlc291cmNlICosIGludCwKSW5kZXg6IHN5cy9kZXYvc2Nj L3NjY19jb3JlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9zY2Mvc2NjX2NvcmUuYwkocmV2aXNp b24gMjg3MTg5KQorKysgc3lzL2Rldi9zY2Mvc2NjX2NvcmUuYwkod29ya2luZyBjb3B5KQpAQCAt MTAzLDcgKzEwMyw4IEBACiAJc3RydWN0IHNjY19zb2Z0YyAqc2MsICpzYzA7CiAJY29uc3QgY2hh ciAqc2VwOwogCWJ1c19zcGFjZV9oYW5kbGVfdCBiaDsKLQl1X2xvbmcgYmFzZSwgc2l6ZSwgc3Rh cnQsIHN6OworCWJ1c19hZGRyX3QgYmFzZSwgc3RhcnQ7CisJYnVzX3NpemVfdCBzaXplLCBzejsK IAlpbnQgYywgZXJyb3IsIG1vZGUsIHN5c2RldjsKIAogCS8qCkBAIC00MDcsNyArNDA4LDcgQEAK IAogc3RydWN0IHJlc291cmNlICoKIHNjY19idXNfYWxsb2NfcmVzb3VyY2UoZGV2aWNlX3QgZGV2 LCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAqcmlkLAotICAgIHVfbG9uZyBzdGFydCwg dV9sb25nIGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKKyAgICBidXNfYWRkcl90IHN0 YXJ0LCBidXNfYWRkcl90IGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKIHsKIAlzdHJ1 Y3QgcmVzb3VyY2VfbGlzdF9lbnRyeSAqcmxlOwogCXN0cnVjdCBzY2NfY2hhbiAqY2g7CkBAIC00 MzEsNyArNDMyLDcgQEAKIAogaW50CiBzY2NfYnVzX2dldF9yZXNvdXJjZShkZXZpY2VfdCBkZXYs IGRldmljZV90IGNoaWxkLCBpbnQgdHlwZSwgaW50IHJpZCwKLSAgICB1X2xvbmcgKnN0YXJ0cCwg dV9sb25nICpjb3VudHApCisgICAgYnVzX2FkZHJfdCAqc3RhcnRwLCB1X2xvbmcgKmNvdW50cCkK IHsKIAlzdHJ1Y3QgcmVzb3VyY2VfbGlzdF9lbnRyeSAqcmxlOwogCXN0cnVjdCBzY2NfY2hhbiAq Y2g7CkluZGV4OiBzeXMva2Vybi9idXNfaWYubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMva2Vybi9idXNf aWYubQkocmV2aXNpb24gMjg3MTg5KQorKysgc3lzL2tlcm4vYnVzX2lmLm0JKHdvcmtpbmcgY29w eSkKQEAgLTQ0LDcgKzQ0LDcgQEAKIENPREUgewogCXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKgog CW51bGxfYWxsb2NfcmVzb3VyY2UoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCwKLQkgICAg aW50IHR5cGUsIGludCAqcmlkLCB1X2xvbmcgc3RhcnQsIHVfbG9uZyBlbmQsCisJICAgIGludCB0 eXBlLCBpbnQgKnJpZCwgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQsCiAJICAgIHVf bG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCiAJewogCSAgICByZXR1cm4gKDApOwpAQCAtMjYyLDgg KzI2Miw4IEBACiAJZGV2aWNlX3QJX2NoaWxkOwogCWludAkJX3R5cGU7CiAJaW50CSAgICAgICAq X3JpZDsKLQl1X2xvbmcJCV9zdGFydDsKLQl1X2xvbmcJCV9lbmQ7CisJYnVzX2FkZHJfdAlfc3Rh cnQ7CisJYnVzX2FkZHJfdAlfZW5kOwogCXVfbG9uZwkJX2NvdW50OwogCXVfaW50CQlfZmxhZ3M7 CiB9IERFRkFVTFQgbnVsbF9hbGxvY19yZXNvdXJjZTsKQEAgLTMzMCw4ICszMzAsOCBAQAogCWRl dmljZV90CV9jaGlsZDsKIAlpbnQJCV90eXBlOwogCXN0cnVjdCByZXNvdXJjZSAqX3JlczsKLQl1 X2xvbmcJCV9zdGFydDsKLQl1X2xvbmcJCV9lbmQ7CisJYnVzX2FkZHJfdAlfc3RhcnQ7CisJYnVz X2FkZHJfdAlfZW5kOwogfTsKIAogLyoqCkBAIC00MzEsNyArNDMxLDcgQEAKIAlkZXZpY2VfdAlf Y2hpbGQ7CiAJaW50CQlfdHlwZTsKIAlpbnQJCV9yaWQ7Ci0JdV9sb25nCQlfc3RhcnQ7CisJYnVz X2FkZHJfdAlfc3RhcnQ7CiAJdV9sb25nCQlfY291bnQ7CiB9OwogCkBAIC00NTUsNyArNDU1LDcg QEAKIAlkZXZpY2VfdAlfY2hpbGQ7CiAJaW50CQlfdHlwZTsKIAlpbnQJCV9yaWQ7Ci0JdV9sb25n CQkqX3N0YXJ0cDsKKwlidXNfYWRkcl90CSpfc3RhcnRwOwogCXVfbG9uZwkJKl9jb3VudHA7CiB9 OwogCkluZGV4OiBzeXMva2Vybi9zdWJyX2J1cy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9rZXJuL3N1 YnJfYnVzLmMJKHJldmlzaW9uIDI4NzE4OSkKKysrIHN5cy9rZXJuL3N1YnJfYnVzLmMJKHdvcmtp bmcgY29weSkKQEAgLTMwNjMsOCArMzA2Myw4IEBACiAgKiBAcGFyYW0gY291bnQJCVhYWCBlbmQt c3RhcnQrMQogICovCiBpbnQKLXJlc291cmNlX2xpc3RfYWRkX25leHQoc3RydWN0IHJlc291cmNl X2xpc3QgKnJsLCBpbnQgdHlwZSwgdV9sb25nIHN0YXJ0LAotICAgIHVfbG9uZyBlbmQsIHVfbG9u ZyBjb3VudCkKK3Jlc291cmNlX2xpc3RfYWRkX25leHQoc3RydWN0IHJlc291cmNlX2xpc3QgKnJs LCBpbnQgdHlwZSwgYnVzX2FkZHJfdCBzdGFydCwKKyAgICBidXNfYWRkcl90IGVuZCwgdV9sb25n IGNvdW50KQogewogCWludCByaWQ7CiAKQEAgLTMwOTIsNyArMzA5Miw3IEBACiAgKi8KIHN0cnVj dCByZXNvdXJjZV9saXN0X2VudHJ5ICoKIHJlc291cmNlX2xpc3RfYWRkKHN0cnVjdCByZXNvdXJj ZV9saXN0ICpybCwgaW50IHR5cGUsIGludCByaWQsCi0gICAgdV9sb25nIHN0YXJ0LCB1X2xvbmcg ZW5kLCB1X2xvbmcgY291bnQpCisgICAgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQs IHVfbG9uZyBjb3VudCkKIHsKIAlzdHJ1Y3QgcmVzb3VyY2VfbGlzdF9lbnRyeSAqcmxlOwogCkBA IC0zMjUwLDcgKzMyNTAsNyBAQAogICovCiBzdHJ1Y3QgcmVzb3VyY2UgKgogcmVzb3VyY2VfbGlz dF9yZXNlcnZlKHN0cnVjdCByZXNvdXJjZV9saXN0ICpybCwgZGV2aWNlX3QgYnVzLCBkZXZpY2Vf dCBjaGlsZCwKLSAgICBpbnQgdHlwZSwgaW50ICpyaWQsIHVfbG9uZyBzdGFydCwgdV9sb25nIGVu ZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKKyAgICBpbnQgdHlwZSwgaW50ICpyaWQsIGJ1 c19hZGRyX3Qgc3RhcnQsIGJ1c19hZGRyX3QgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdz KQogewogCXN0cnVjdCByZXNvdXJjZV9saXN0X2VudHJ5ICpybGUgPSBOVUxMOwogCWludCBwYXNz dGhyb3VnaCA9IChkZXZpY2VfZ2V0X3BhcmVudChjaGlsZCkgIT0gYnVzKTsKQEAgLTMzMDcsNyAr MzMwNyw3IEBACiAgKi8KIHN0cnVjdCByZXNvdXJjZSAqCiByZXNvdXJjZV9saXN0X2FsbG9jKHN0 cnVjdCByZXNvdXJjZV9saXN0ICpybCwgZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwKLSAg ICBpbnQgdHlwZSwgaW50ICpyaWQsIHVfbG9uZyBzdGFydCwgdV9sb25nIGVuZCwgdV9sb25nIGNv dW50LCB1X2ludCBmbGFncykKKyAgICBpbnQgdHlwZSwgaW50ICpyaWQsIGJ1c19hZGRyX3Qgc3Rh cnQsIGJ1c19hZGRyX3QgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKQogewogCXN0cnVj dCByZXNvdXJjZV9saXN0X2VudHJ5ICpybGUgPSBOVUxMOwogCWludCBwYXNzdGhyb3VnaCA9IChk ZXZpY2VfZ2V0X3BhcmVudChjaGlsZCkgIT0gYnVzKTsKQEAgLTM5NDksNyArMzk0OSw3IEBACiAg Ki8KIGludAogYnVzX2dlbmVyaWNfYWRqdXN0X3Jlc291cmNlKGRldmljZV90IGRldiwgZGV2aWNl X3QgY2hpbGQsIGludCB0eXBlLAotICAgIHN0cnVjdCByZXNvdXJjZSAqciwgdV9sb25nIHN0YXJ0 LCB1X2xvbmcgZW5kKQorICAgIHN0cnVjdCByZXNvdXJjZSAqciwgYnVzX2FkZHJfdCBzdGFydCwg YnVzX2FkZHJfdCBlbmQpCiB7CiAJLyogUHJvcGFnYXRlIHVwIHRoZSBidXMgaGllcmFyY2h5IHVu dGlsIHNvbWVvbmUgaGFuZGxlcyBpdC4gKi8KIAlpZiAoZGV2LT5wYXJlbnQpCkBAIC0zOTY2LDcg KzM5NjYsNyBAQAogICovCiBzdHJ1Y3QgcmVzb3VyY2UgKgogYnVzX2dlbmVyaWNfYWxsb2NfcmVz b3VyY2UoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAqcmlkLAot ICAgIHVfbG9uZyBzdGFydCwgdV9sb25nIGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykK KyAgICBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCwgdV9sb25nIGNvdW50LCB1X2lu dCBmbGFncykKIHsKIAkvKiBQcm9wYWdhdGUgdXAgdGhlIGJ1cyBoaWVyYXJjaHkgdW50aWwgc29t ZW9uZSBoYW5kbGVzIGl0LiAqLwogCWlmIChkZXYtPnBhcmVudCkKQEAgLTQxMDQsNyArNDEwNCw3 IEBACiAgKi8KIGludAogYnVzX2dlbmVyaWNfcmxfZ2V0X3Jlc291cmNlKGRldmljZV90IGRldiwg ZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgcmlkLAotICAgIHVfbG9uZyAqc3RhcnRwLCB1 X2xvbmcgKmNvdW50cCkKKyAgICBidXNfYWRkcl90ICpzdGFydHAsIHVfbG9uZyAqY291bnRwKQog ewogCXN0cnVjdCByZXNvdXJjZV9saXN0ICoJCXJsID0gTlVMTDsKIAlzdHJ1Y3QgcmVzb3VyY2Vf bGlzdF9lbnRyeSAqCXJsZSA9IE5VTEw7CkBAIC00MTM1LDcgKzQxMzUsNyBAQAogICovCiBpbnQK IGJ1c19nZW5lcmljX3JsX3NldF9yZXNvdXJjZShkZXZpY2VfdCBkZXYsIGRldmljZV90IGNoaWxk LCBpbnQgdHlwZSwgaW50IHJpZCwKLSAgICB1X2xvbmcgc3RhcnQsIHVfbG9uZyBjb3VudCkKKyAg ICBidXNfYWRkcl90IHN0YXJ0LCB1X2xvbmcgY291bnQpCiB7CiAJc3RydWN0IHJlc291cmNlX2xp c3QgKgkJcmwgPSBOVUxMOwogCkBAIC00MjAzLDcgKzQyMDMsNyBAQAogICovCiBzdHJ1Y3QgcmVz b3VyY2UgKgogYnVzX2dlbmVyaWNfcmxfYWxsb2NfcmVzb3VyY2UoZGV2aWNlX3QgZGV2LCBkZXZp Y2VfdCBjaGlsZCwgaW50IHR5cGUsCi0gICAgaW50ICpyaWQsIHVfbG9uZyBzdGFydCwgdV9sb25n IGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKKyAgICBpbnQgKnJpZCwgYnVzX2FkZHJf dCBzdGFydCwgYnVzX2FkZHJfdCBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCiB7CiAJ c3RydWN0IHJlc291cmNlX2xpc3QgKgkJcmwgPSBOVUxMOwogCkBAIC00Mjg5LDcgKzQyODksNyBA QAogICogcGFyZW50IG9mIEBwIGRldi4KICAqLwogc3RydWN0IHJlc291cmNlICoKLWJ1c19hbGxv Y19yZXNvdXJjZShkZXZpY2VfdCBkZXYsIGludCB0eXBlLCBpbnQgKnJpZCwgdV9sb25nIHN0YXJ0 LCB1X2xvbmcgZW5kLAorYnVzX2FsbG9jX3Jlc291cmNlKGRldmljZV90IGRldiwgaW50IHR5cGUs IGludCAqcmlkLCBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCwKICAgICB1X2xvbmcg Y291bnQsIHVfaW50IGZsYWdzKQogewogCWlmIChkZXYtPnBhcmVudCA9PSBOVUxMKQpAQCAtNDMw NSw4ICs0MzA1LDggQEAKICAqIHBhcmVudCBvZiBAcCBkZXYuCiAgKi8KIGludAotYnVzX2FkanVz dF9yZXNvdXJjZShkZXZpY2VfdCBkZXYsIGludCB0eXBlLCBzdHJ1Y3QgcmVzb3VyY2UgKnIsIHVf bG9uZyBzdGFydCwKLSAgICB1X2xvbmcgZW5kKQorYnVzX2FkanVzdF9yZXNvdXJjZShkZXZpY2Vf dCBkZXYsIGludCB0eXBlLCBzdHJ1Y3QgcmVzb3VyY2UgKnIsIGJ1c19hZGRyX3Qgc3RhcnQsCisg ICAgYnVzX2FkZHJfdCBlbmQpCiB7CiAJaWYgKGRldi0+cGFyZW50ID09IE5VTEwpCiAJCXJldHVy biAoRUlOVkFMKTsKQEAgLTQ0MzYsNyArNDQzNiw3IEBACiAgKi8KIGludAogYnVzX3NldF9yZXNv dXJjZShkZXZpY2VfdCBkZXYsIGludCB0eXBlLCBpbnQgcmlkLAotICAgIHVfbG9uZyBzdGFydCwg dV9sb25nIGNvdW50KQorICAgIGJ1c19hZGRyX3Qgc3RhcnQsIHVfbG9uZyBjb3VudCkKIHsKIAly ZXR1cm4gKEJVU19TRVRfUkVTT1VSQ0UoZGV2aWNlX2dldF9wYXJlbnQoZGV2KSwgZGV2LCB0eXBl LCByaWQsCiAJICAgIHN0YXJ0LCBjb3VudCkpOwpAQCAtNDQ1MCw3ICs0NDUwLDcgQEAKICAqLwog aW50CiBidXNfZ2V0X3Jlc291cmNlKGRldmljZV90IGRldiwgaW50IHR5cGUsIGludCByaWQsCi0g ICAgdV9sb25nICpzdGFydHAsIHVfbG9uZyAqY291bnRwKQorICAgIGJ1c19hZGRyX3QgKnN0YXJ0 cCwgdV9sb25nICpjb3VudHApCiB7CiAJcmV0dXJuIChCVVNfR0VUX1JFU09VUkNFKGRldmljZV9n ZXRfcGFyZW50KGRldiksIGRldiwgdHlwZSwgcmlkLAogCSAgICBzdGFydHAsIGNvdW50cCkpOwpA QCAtNDQ2MiwxMCArNDQ2MiwxMSBAQAogICogVGhpcyBmdW5jdGlvbiBzaW1wbHkgY2FsbHMgdGhl IEJVU19HRVRfUkVTT1VSQ0UoKSBtZXRob2Qgb2YgdGhlCiAgKiBwYXJlbnQgb2YgQHAgZGV2IGFu ZCByZXR1cm5zIHRoZSBzdGFydCB2YWx1ZS4KICAqLwotdV9sb25nCitidXNfYWRkcl90CiBidXNf Z2V0X3Jlc291cmNlX3N0YXJ0KGRldmljZV90IGRldiwgaW50IHR5cGUsIGludCByaWQpCiB7Ci0J dV9sb25nIHN0YXJ0LCBjb3VudDsKKwlidXNfYWRkcl90IHN0YXJ0OworCXVfbG9uZyBjb3VudDsK IAlpbnQgZXJyb3I7CiAKIAllcnJvciA9IEJVU19HRVRfUkVTT1VSQ0UoZGV2aWNlX2dldF9wYXJl bnQoZGV2KSwgZGV2LCB0eXBlLCByaWQsCkBAIC00NDg0LDcgKzQ0ODUsOCBAQAogdV9sb25nCiBi dXNfZ2V0X3Jlc291cmNlX2NvdW50KGRldmljZV90IGRldiwgaW50IHR5cGUsIGludCByaWQpCiB7 Ci0JdV9sb25nIHN0YXJ0LCBjb3VudDsKKwlidXNfYWRkcl90IHN0YXJ0OworCXVfbG9uZyBjb3Vu dDsKIAlpbnQgZXJyb3I7CiAKIAllcnJvciA9IEJVU19HRVRfUkVTT1VSQ0UoZGV2aWNlX2dldF9w YXJlbnQoZGV2KSwgZGV2LCB0eXBlLCByaWQsCkluZGV4OiBzeXMva2Vybi9zdWJyX3JtYW4uYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBzeXMva2Vybi9zdWJyX3JtYW4uYwkocmV2aXNpb24gMjg3MTg5KQorKysg c3lzL2tlcm4vc3Vicl9ybWFuLmMJKHdvcmtpbmcgY29weSkKQEAgLTkwLDggKzkwLDggQEAKIAlU QUlMUV9FTlRSWShyZXNvdXJjZV9pKQlyX2xpbms7CiAJTElTVF9FTlRSWShyZXNvdXJjZV9pKQly X3NoYXJlbGluazsKIAlMSVNUX0hFQUQoLCByZXNvdXJjZV9pKQkqcl9zaGFyZWhlYWQ7Ci0JdV9s b25nCXJfc3RhcnQ7CS8qIGluZGV4IG9mIHRoZSBmaXJzdCBlbnRyeSBpbiB0aGlzIHJlc291cmNl ICovCi0JdV9sb25nCXJfZW5kOwkJLyogaW5kZXggb2YgdGhlIGxhc3QgZW50cnkgKGluY2x1c2l2 ZSkgKi8KKwlidXNfYWRkcl90CXJfc3RhcnQ7CS8qIGluZGV4IG9mIHRoZSBmaXJzdCBlbnRyeSBp biB0aGlzIHJlc291cmNlICovCisJYnVzX2FkZHJfdAlyX2VuZDsJCS8qIGluZGV4IG9mIHRoZSBs YXN0IGVudHJ5IChpbmNsdXNpdmUpICovCiAJdV9pbnQJcl9mbGFnczsKIAl2b2lkCSpyX3ZpcnR1 YWw7CS8qIHZpcnR1YWwgYWRkcmVzcyBvZiB0aGlzIHJlc291cmNlICovCiAJc3RydWN0IGRldmlj ZSAqcl9kZXY7CS8qIGRldmljZSB3aGljaCBoYXMgYWxsb2NhdGVkIHRoaXMgcmVzb3VyY2UgKi8K QEAgLTEzNSw3ICsxMzUsNyBAQAogCX0KIAogCWlmIChybS0+cm1fc3RhcnQgPT0gMCAmJiBybS0+ cm1fZW5kID09IDApCi0JCXJtLT5ybV9lbmQgPSB+MHVsOworCQlybS0+cm1fZW5kID0gUk1fTUFY X0VORDsKIAlpZiAocm0tPnJtX3R5cGUgPT0gUk1BTl9VTklOSVQpCiAJCXBhbmljKCJybWFuX2lu aXQiKTsKIAlpZiAocm0tPnJtX3R5cGUgPT0gUk1BTl9HQVVHRSkKQEAgLTE1NCwxMyArMTU0LDEz IEBACiB9CiAKIGludAotcm1hbl9tYW5hZ2VfcmVnaW9uKHN0cnVjdCBybWFuICpybSwgdV9sb25n IHN0YXJ0LCB1X2xvbmcgZW5kKQorcm1hbl9tYW5hZ2VfcmVnaW9uKHN0cnVjdCBybWFuICpybSwg YnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQpCiB7CiAJc3RydWN0IHJlc291cmNlX2kg KnIsICpzLCAqdDsKIAlpbnQgcnYgPSAwOwogCi0JRFBSSU5URigoInJtYW5fbWFuYWdlX3JlZ2lv bjogPCVzPiByZXF1ZXN0OiBzdGFydCAlI2x4LCBlbmQgJSNseFxuIiwKLQkgICAgcm0tPnJtX2Rl c2NyLCBzdGFydCwgZW5kKSk7CisJRFBSSU5URigoInJtYW5fbWFuYWdlX3JlZ2lvbjogPCVzPiBy ZXF1ZXN0OiBzdGFydCAlI2xseCwgZW5kICUjbGx4XG4iLAorCSAgICBybS0+cm1fZGVzY3IsICh1 aW50NjRfdClzdGFydCwgKHVpbnQ2NF90KWVuZCkpOwogCWlmIChzdGFydCA8IHJtLT5ybV9zdGFy dCB8fCBlbmQgPiBybS0+cm1fZW5kKQogCQlyZXR1cm4gRUlOVkFMOwogCXIgPSBpbnRfYWxsb2Nf cmVzb3VyY2UoTV9OT1dBSVQpOwpAQCAtMTc0LDcgKzE3NCw3IEBACiAKIAkvKiBTa2lwIGVudHJp ZXMgYmVmb3JlIHVzLiAqLwogCVRBSUxRX0ZPUkVBQ0gocywgJnJtLT5ybV9saXN0LCByX2xpbmsp IHsKLQkJaWYgKHMtPnJfZW5kID09IFVMT05HX01BWCkKKwkJaWYgKHMtPnJfZW5kID09IEJVU19T UEFDRV9NQVhBRERSKQogCQkJYnJlYWs7CiAJCWlmIChzLT5yX2VuZCArIDEgPj0gci0+cl9zdGFy dCkKIAkJCWJyZWFrOwpAQCAtMjc0LDcgKzI3NCw3IEBACiB9CiAKIGludAotcm1hbl9maXJzdF9m cmVlX3JlZ2lvbihzdHJ1Y3Qgcm1hbiAqcm0sIHVfbG9uZyAqc3RhcnQsIHVfbG9uZyAqZW5kKQor cm1hbl9maXJzdF9mcmVlX3JlZ2lvbihzdHJ1Y3Qgcm1hbiAqcm0sIGJ1c19hZGRyX3QgKnN0YXJ0 LCBidXNfYWRkcl90ICplbmQpCiB7CiAJc3RydWN0IHJlc291cmNlX2kgKnI7CiAKQEAgLTI5Miw3 ICsyOTIsNyBAQAogfQogCiBpbnQKLXJtYW5fbGFzdF9mcmVlX3JlZ2lvbihzdHJ1Y3Qgcm1hbiAq cm0sIHVfbG9uZyAqc3RhcnQsIHVfbG9uZyAqZW5kKQorcm1hbl9sYXN0X2ZyZWVfcmVnaW9uKHN0 cnVjdCBybWFuICpybSwgYnVzX2FkZHJfdCAqc3RhcnQsIGJ1c19hZGRyX3QgKmVuZCkKIHsKIAlz dHJ1Y3QgcmVzb3VyY2VfaSAqcjsKIApAQCAtMzExLDcgKzMxMSw3IEBACiAKIC8qIFNocmluayBv ciBleHRlbmQgb25lIG9yIGJvdGggZW5kcyBvZiBhbiBhbGxvY2F0ZWQgcmVzb3VyY2UuICovCiBp bnQKLXJtYW5fYWRqdXN0X3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqcnIsIHVfbG9uZyBzdGFy dCwgdV9sb25nIGVuZCkKK3JtYW5fYWRqdXN0X3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqcnIs IGJ1c19hZGRyX3Qgc3RhcnQsIGJ1c19hZGRyX3QgZW5kKQogewogCXN0cnVjdCByZXNvdXJjZV9p ICpyLCAqcywgKnQsICpuZXc7CiAJc3RydWN0IHJtYW4gKnJtOwpAQCAtNDM0LDE4ICs0MzQsMTkg QEAKICNkZWZpbmUJU0hBUkVfVFlQRShmKQkoZiAmIChSRl9TSEFSRUFCTEUgfCBSRl9QUkVGRVRD SEFCTEUpKQogCiBzdHJ1Y3QgcmVzb3VyY2UgKgotcm1hbl9yZXNlcnZlX3Jlc291cmNlX2JvdW5k KHN0cnVjdCBybWFuICpybSwgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLAotCQkJICAgIHVfbG9u ZyBjb3VudCwgdV9sb25nIGJvdW5kLCB1X2ludCBmbGFncywKK3JtYW5fcmVzZXJ2ZV9yZXNvdXJj ZV9ib3VuZChzdHJ1Y3Qgcm1hbiAqcm0sIGJ1c19hZGRyX3Qgc3RhcnQsIGJ1c19hZGRyX3QgZW5k LAorCQkJICAgIHVfbG9uZyBjb3VudCwgYnVzX2FkZHJfdCBib3VuZCwgdV9pbnQgZmxhZ3MsCiAJ CQkgICAgc3RydWN0IGRldmljZSAqZGV2KQogewogCXVfaW50IG5ld19yZmxhZ3M7CiAJc3RydWN0 IHJlc291cmNlX2kgKnIsICpzLCAqcnY7Ci0JdV9sb25nIHJzdGFydCwgcmVuZCwgYW1hc2ssIGJt YXNrOworCWJ1c19hZGRyX3QgcnN0YXJ0LCByZW5kLCBhbWFzaywgYm1hc2s7CiAKIAlydiA9IE5V TEw7CiAKLQlEUFJJTlRGKCgicm1hbl9yZXNlcnZlX3Jlc291cmNlX2JvdW5kOiA8JXM+IHJlcXVl c3Q6IFslI2x4LCAlI2x4XSwgIgotCSAgICAgICAibGVuZ3RoICUjbHgsIGZsYWdzICV1LCBkZXZp Y2UgJXNcbiIsIHJtLT5ybV9kZXNjciwgc3RhcnQsIGVuZCwKKwlEUFJJTlRGKCgicm1hbl9yZXNl cnZlX3Jlc291cmNlX2JvdW5kOiA8JXM+IHJlcXVlc3Q6IFslI2xseCwgJSNsbHhdLCAiCisJICAg ICAgICJsZW5ndGggJSNseCwgZmxhZ3MgJXUsIGRldmljZSAlc1xuIiwgcm0tPnJtX2Rlc2NyLAor CSAgICAgICAodWludDY0X3Qpc3RhcnQsICh1aW50NjRfdCllbmQsCiAJICAgICAgIGNvdW50LCBm bGFncywKIAkgICAgICAgZGV2ID09IE5VTEwgPyAiPG51bGw+IiA6IGRldmljZV9nZXRfbmFtZXVu aXQoZGV2KSkpOwogCUtBU1NFUlQoKGZsYWdzICYgUkZfRklSU1RTSEFSRSkgPT0gMCwKQEAgLTQ2 NCw5ICs0NjUsMTAgQEAKIAkJZ290byBvdXQ7CiAJfQogCi0JYW1hc2sgPSAoMXVsIDw8IFJGX0FM SUdOTUVOVChmbGFncykpIC0gMTsKLQlLQVNTRVJUKHN0YXJ0IDw9IFVMT05HX01BWCAtIGFtYXNr LAotCSAgICAoInN0YXJ0ICglI2x4KSArIGFtYXNrICglI2x4KSB3b3VsZCB3cmFwIGFyb3VuZCIs IHN0YXJ0LCBhbWFzaykpOworCWFtYXNrID0gKDF1bGwgPDwgUkZfQUxJR05NRU5UKGZsYWdzKSkg LSAxOworCUtBU1NFUlQoc3RhcnQgPD0gQlVTX1NQQUNFX01BWEFERFIgLSBhbWFzaywKKwkgICAg KCJzdGFydCAoJSNsbHgpICsgYW1hc2sgKCUjbGx4KSB3b3VsZCB3cmFwIGFyb3VuZCIsICh1aW50 NjRfdClzdGFydCwKKwkgICAgKHVpbnQ2NF90KWFtYXNrKSk7CiAKIAkvKiBJZiBib3VuZCBpcyAw LCBibWFzayB3aWxsIGFsc28gYmUgMCAqLwogCWJtYXNrID0gfihib3VuZCAtIDEpOwpAQCAtNDc0 LDE5ICs0NzYsMjAgQEAKIAkgKiBGaXJzdCB0cnkgdG8gZmluZCBhbiBhY2NlcHRhYmxlIHRvdGFs bHktdW5zaGFyZWQgcmVnaW9uLgogCSAqLwogCWZvciAocyA9IHI7IHM7IHMgPSBUQUlMUV9ORVhU KHMsIHJfbGluaykpIHsKLQkJRFBSSU5URigoImNvbnNpZGVyaW5nIFslI2x4LCAlI2x4XVxuIiwg cy0+cl9zdGFydCwgcy0+cl9lbmQpKTsKKwkJRFBSSU5URigoImNvbnNpZGVyaW5nIFslI2xseCwg JSNsbHhdXG4iLCAodWludDY0X3Qpcy0+cl9zdGFydCwKKwkJICAgICh1aW50NjRfdClzLT5yX2Vu ZCkpOwogCQkvKgogCQkgKiBUaGUgcmVzb3VyY2UgbGlzdCBpcyBzb3J0ZWQsIHNvIHRoZXJlIGlz IG5vIHBvaW50IGluCiAJCSAqIHNlYXJjaGluZyBmdXJ0aGVyIG9uY2Ugcl9zdGFydCBpcyB0b28g bGFyZ2UuCiAJCSAqLwogCQlpZiAocy0+cl9zdGFydCA+IGVuZCAtIChjb3VudCAtIDEpKSB7Ci0J CQlEUFJJTlRGKCgicy0+cl9zdGFydCAoJSNseCkgKyBjb3VudCAtIDE+IGVuZCAoJSNseClcbiIs Ci0JCQkgICAgcy0+cl9zdGFydCwgZW5kKSk7CisJCQlEUFJJTlRGKCgicy0+cl9zdGFydCAoJSNs bHgpICsgY291bnQgLSAxPiBlbmQgKCUjbGx4KVxuIiwKKwkJCSAgICAodWludDY0X3Qpcy0+cl9z dGFydCwgKHVpbnQ2NF90KWVuZCkpOwogCQkJYnJlYWs7CiAJCX0KLQkJaWYgKHMtPnJfc3RhcnQg PiBVTE9OR19NQVggLSBhbWFzaykgewotCQkJRFBSSU5URigoInMtPnJfc3RhcnQgKCUjbHgpICsg YW1hc2sgKCUjbHgpIHRvbyBsYXJnZVxuIiwKLQkJCSAgICBzLT5yX3N0YXJ0LCBhbWFzaykpOwor CQlpZiAocy0+cl9zdGFydCA+IEJVU19TUEFDRV9NQVhBRERSIC0gYW1hc2spIHsKKwkJCURQUklO VEYoKCJzLT5yX3N0YXJ0ICglI2xseCkgKyBhbWFzayAoJSNsbHgpIHRvbyBsYXJnZVxuIiwKKwkJ CSAgICAodWludDY0X3Qpcy0+cl9zdGFydCwgKHVpbnQ2NF90KWFtYXNrKSk7CiAJCQlicmVhazsK IAkJfQogCQlpZiAocy0+cl9mbGFncyAmIFJGX0FMTE9DQVRFRCkgewpAQCAtNDkzLDcgKzQ5Niw3 IEBACiAJCQlEUFJJTlRGKCgicmVnaW9uIGlzIGFsbG9jYXRlZFxuIikpOwogCQkJY29udGludWU7 CiAJCX0KLQkJcnN0YXJ0ID0gdWxtYXgocy0+cl9zdGFydCwgc3RhcnQpOworCQlyc3RhcnQgPSBx bWF4KHMtPnJfc3RhcnQsIHN0YXJ0KTsKIAkJLyoKIAkJICogVHJ5IHRvIGZpbmQgYSByZWdpb24g YnkgYWRqdXN0aW5nIHRvIGJvdW5kYXJ5IGFuZCBhbGlnbm1lbnQKIAkJICogdW50aWwgYm90aCBj b25kaXRpb25zIGFyZSBzYXRpc2ZpZWQuIFRoaXMgaXMgbm90IGFuIG9wdGltYWwKQEAgLTUwNSwx NyArNTA4LDE4IEBACiAJCQkJcnN0YXJ0ICs9IGJvdW5kIC0gKHJzdGFydCAmIH5ibWFzayk7CiAJ CX0gd2hpbGUgKChyc3RhcnQgJiBhbWFzaykgIT0gMCAmJiByc3RhcnQgPCBlbmQgJiYKIAkJICAg IHJzdGFydCA8IHMtPnJfZW5kKTsKLQkJcmVuZCA9IHVsbWluKHMtPnJfZW5kLCB1bG1heChyc3Rh cnQgKyBjb3VudCAtIDEsIGVuZCkpOworCQlyZW5kID0gcW1pbihzLT5yX2VuZCwgcW1heChyc3Rh cnQgKyBjb3VudCAtIDEsIGVuZCkpOwogCQlpZiAocnN0YXJ0ID4gcmVuZCkgewogCQkJRFBSSU5U RigoImFkanVzdGVkIHN0YXJ0IGV4Y2VlZHMgZW5kXG4iKSk7CiAJCQljb250aW51ZTsKIAkJfQot CQlEUFJJTlRGKCgidHJ1bmNhdGVkIHJlZ2lvbjogWyUjbHgsICUjbHhdOyBzaXplICUjbHggKHJl cXVlc3RlZCAlI2x4KVxuIiwKLQkJICAgICAgIHJzdGFydCwgcmVuZCwgKHJlbmQgLSByc3RhcnQg KyAxKSwgY291bnQpKTsKKwkJRFBSSU5URigoInRydW5jYXRlZCByZWdpb246IFslI2xseCwgJSNs bHhdOyBzaXplICUjbHggKHJlcXVlc3RlZCAlI2x4KVxuIiwKKwkJICAgICAgICh1aW50NjRfdCly c3RhcnQsICh1aW50NjRfdClyZW5kLCAodV9sb25nKShyZW5kIC0gcnN0YXJ0ICsgMSksIGNvdW50 KSk7CiAKIAkJaWYgKChyZW5kIC0gcnN0YXJ0ICsgMSkgPj0gY291bnQpIHsKLQkJCURQUklOVEYo KCJjYW5kaWRhdGUgcmVnaW9uOiBbJSNseCwgJSNseF0sIHNpemUgJSNseFxuIiwKLQkJCSAgICAg ICByc3RhcnQsIHJlbmQsIChyZW5kIC0gcnN0YXJ0ICsgMSkpKTsKKwkJCURQUklOVEYoKCJjYW5k aWRhdGUgcmVnaW9uOiBbJSNsbHgsICUjbGx4XSwgc2l6ZSAlI2x4XG4iLAorCQkJICAgICAgICh1 aW50NjRfdClyc3RhcnQsICh1aW50NjRfdClyZW5kLAorCQkJICAgICAgICh1X2xvbmcpKHJlbmQg LSByc3RhcnQgKyAxKSkpOwogCQkJaWYgKChzLT5yX2VuZCAtIHMtPnJfc3RhcnQgKyAxKSA9PSBj b3VudCkgewogCQkJCURQUklOVEYoKCJjYW5kaWRhdGUgcmVnaW9uIGlzIGVudGlyZSBjaHVua1xu IikpOwogCQkJCXJ2ID0gczsKQEAgLTU0NSwxMCArNTQ5LDEwIEBACiAKIAkJCWlmIChzLT5yX3N0 YXJ0IDwgcnYtPnJfc3RhcnQgJiYgcy0+cl9lbmQgPiBydi0+cl9lbmQpIHsKIAkJCQlEUFJJTlRG KCgic3BsaXR0aW5nIHJlZ2lvbiBpbiB0aHJlZSBwYXJ0czogIgotCQkJCSAgICAgICAiWyUjbHgs ICUjbHhdOyBbJSNseCwgJSNseF07IFslI2x4LCAlI2x4XVxuIiwKLQkJCQkgICAgICAgcy0+cl9z dGFydCwgcnYtPnJfc3RhcnQgLSAxLAotCQkJCSAgICAgICBydi0+cl9zdGFydCwgcnYtPnJfZW5k LAotCQkJCSAgICAgICBydi0+cl9lbmQgKyAxLCBzLT5yX2VuZCkpOworCQkJCSAgICAgICAiWyUj bGx4LCAlI2xseF07IFslI2xseCwgJSNsbHhdOyBbJSNsbHgsICUjbGx4XVxuIiwKKwkJCQkgICAg ICAgKHVpbnQ2NF90KXMtPnJfc3RhcnQsICh1aW50NjRfdClydi0+cl9zdGFydCAtIDEsCisJCQkJ ICAgICAgICh1aW50NjRfdClydi0+cl9zdGFydCwgKHVpbnQ2NF90KXJ2LT5yX2VuZCwKKwkJCQkg ICAgICAgKHVpbnQ2NF90KXJ2LT5yX2VuZCArIDEsICh1aW50NjRfdClzLT5yX2VuZCkpOwogCQkJ CS8qCiAJCQkJICogV2UgYXJlIGFsbG9jYXRpbmcgaW4gdGhlIG1pZGRsZS4KIAkJCQkgKi8KQEAg LTY0MSw4ICs2NDUsOCBAQAogfQogCiBzdHJ1Y3QgcmVzb3VyY2UgKgotcm1hbl9yZXNlcnZlX3Jl c291cmNlKHN0cnVjdCBybWFuICpybSwgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB1X2xvbmcg Y291bnQsCi0JCSAgICAgIHVfaW50IGZsYWdzLCBzdHJ1Y3QgZGV2aWNlICpkZXYpCitybWFuX3Jl c2VydmVfcmVzb3VyY2Uoc3RydWN0IHJtYW4gKnJtLCBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRk cl90IGVuZCwKKwkJICAgICAgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncywgc3RydWN0IGRldmlj ZSAqZGV2KQogewogCiAJcmV0dXJuIChybWFuX3Jlc2VydmVfcmVzb3VyY2VfYm91bmQocm0sIHN0 YXJ0LCBlbmQsIGNvdW50LCAwLCBmbGFncywKQEAgLTgwMywxMyArODA3LDEzIEBACiB9CiAKIHZv aWQKLXJtYW5fc2V0X3N0YXJ0KHN0cnVjdCByZXNvdXJjZSAqciwgdV9sb25nIHN0YXJ0KQorcm1h bl9zZXRfc3RhcnQoc3RydWN0IHJlc291cmNlICpyLCBidXNfYWRkcl90IHN0YXJ0KQogewogCiAJ ci0+X19yX2ktPnJfc3RhcnQgPSBzdGFydDsKIH0KIAotdV9sb25nCitidXNfYWRkcl90CiBybWFu X2dldF9zdGFydChzdHJ1Y3QgcmVzb3VyY2UgKnIpCiB7CiAKQEAgLTgxNywxMyArODIxLDEzIEBA CiB9CiAKIHZvaWQKLXJtYW5fc2V0X2VuZChzdHJ1Y3QgcmVzb3VyY2UgKnIsIHVfbG9uZyBlbmQp CitybWFuX3NldF9lbmQoc3RydWN0IHJlc291cmNlICpyLCBidXNfYWRkcl90IGVuZCkKIHsKIAog CXItPl9fcl9pLT5yX2VuZCA9IGVuZDsKIH0KIAotdV9sb25nCitidXNfYWRkcl90CiBybWFuX2dl dF9lbmQoc3RydWN0IHJlc291cmNlICpyKQogewogCkBAIC04MzAsNyArODM0LDcgQEAKIAlyZXR1 cm4gKHItPl9fcl9pLT5yX2VuZCk7CiB9CiAKLXVfbG9uZworYnVzX3NpemVfdAogcm1hbl9nZXRf c2l6ZShzdHJ1Y3QgcmVzb3VyY2UgKnIpCiB7CiAKSW5kZXg6IHN5cy9wb3dlcnBjL2luY2x1ZGUv YnVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gc3lzL3Bvd2VycGMvaW5jbHVkZS9idXMuaAkocmV2aXNpb24g Mjg3MTg5KQorKysgc3lzL3Bvd2VycGMvaW5jbHVkZS9idXMuaAkod29ya2luZyBjb3B5KQpAQCAt NzksOSArNzksMTQgQEAKICNkZWZpbmUgQlVTX1NQQUNFX01BWEFERFIgCTB4RkZGRkZGRkZGRkZG RkZGRlVMCiAjZGVmaW5lIEJVU19TUEFDRV9NQVhTSVpFIAkweEZGRkZGRkZGRkZGRkZGRkZVTAog I2Vsc2UKKyNpZmRlZiBCT09LRQorI2RlZmluZSBCVVNfU1BBQ0VfTUFYQUREUiAJMHhGRkZGRkZG RkZVTAorI2RlZmluZSBCVVNfU1BBQ0VfTUFYU0laRSAJMHhGRkZGRkZGRlVMCisjZWxzZQogI2Rl ZmluZSBCVVNfU1BBQ0VfTUFYQUREUiAJMHhGRkZGRkZGRlVMCiAjZGVmaW5lIEJVU19TUEFDRV9N QVhTSVpFIAkweEZGRkZGRkZGVUwKICNlbmRpZgorI2VuZGlmCiAKICNkZWZpbmUJQlVTX1NQQUNF X01BUF9DQUNIRUFCTEUJCTB4MDEKICNkZWZpbmUJQlVTX1NQQUNFX01BUF9MSU5FQVIJCTB4MDIK SW5kZXg6IHN5cy9wb3dlcnBjL2luY2x1ZGUvcGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMv cG93ZXJwYy9pbmNsdWRlL3BsYXRmb3JtLmgJKHJldmlzaW9uIDI4NzE4OSkKKysrIHN5cy9wb3dl cnBjL2luY2x1ZGUvcGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOCBAQAog I2luY2x1ZGUgPG1hY2hpbmUvcGNwdS5oPgogCiBzdHJ1Y3QgbWVtX3JlZ2lvbiB7Ci0Jdm1fb2Zm c2V0X3QJbXJfc3RhcnQ7Ci0Jdm1fc2l6ZV90CW1yX3NpemU7CisJdWludDY0X3QJbXJfc3RhcnQ7 CisJdWludDY0X3QJbXJfc2l6ZTsKIH07CiAKIHZvaWQJbWVtX3JlZ2lvbnMoc3RydWN0IG1lbV9y ZWdpb24gKiosIGludCAqLCBzdHJ1Y3QgbWVtX3JlZ2lvbiAqKiwgaW50ICopOwpJbmRleDogc3lz L3Bvd2VycGMvbXBjODV4eC9sYmMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvcG93ZXJwYy9tcGM4NXh4 L2xiYy5jCShyZXZpc2lvbiAyODcxODkpCisrKyBzeXMvcG93ZXJwYy9tcGM4NXh4L2xiYy5jCSh3 b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBACiBzdGF0aWMgaW50IGxiY19hdHRhY2goZGV2 aWNlX3QpOwogc3RhdGljIGludCBsYmNfc2h1dGRvd24oZGV2aWNlX3QpOwogc3RhdGljIHN0cnVj dCByZXNvdXJjZSAqbGJjX2FsbG9jX3Jlc291cmNlKGRldmljZV90LCBkZXZpY2VfdCwgaW50LCBp bnQgKiwKLSAgICB1X2xvbmcsIHVfbG9uZywgdV9sb25nLCB1X2ludCk7CisgICAgYnVzX2FkZHJf dCwgYnVzX2FkZHJfdCwgdV9sb25nLCB1X2ludCk7CiBzdGF0aWMgaW50IGxiY19wcmludF9jaGls ZChkZXZpY2VfdCwgZGV2aWNlX3QpOwogc3RhdGljIGludCBsYmNfcmVsZWFzZV9yZXNvdXJjZShk ZXZpY2VfdCwgZGV2aWNlX3QsIGludCwgaW50LAogICAgIHN0cnVjdCByZXNvdXJjZSAqKTsKQEAg LTExMyw3ICsxMTMsOCBAQAogCiBkZXZjbGFzc190IGxiY19kZXZjbGFzczsKIAotRFJJVkVSX01P RFVMRShsYmMsIG9md2J1cywgbGJjX2RyaXZlciwgbGJjX2RldmNsYXNzLCAwLCAwKTsKK0VBUkxZ X0RSSVZFUl9NT0RVTEUobGJjLCBvZndidXMsIGxiY19kcml2ZXIsIGxiY19kZXZjbGFzcywgMCwg MCwKKyAgICBCVVNfUEFTU19CVVMgKyBCVVNfUEFTU19PUkRFUl9NSURETEUpOwogCiAvKgogICog Q2FsY3VsYXRlIGFkZHJlc3MgbWFzayB1c2VkIGJ5IE9SKG4pIHJlZ2lzdGVycy4gVXNlIG1lbW9y eSByZWdpb24gc2l6ZSB0bwpAQCAtMzU0LDcgKzM1NSw3IEBACiBmZHRfbGJjX3JlZ19kZWNvZGUo cGhhbmRsZV90IG5vZGUsIHN0cnVjdCBsYmNfc29mdGMgKnNjLAogICAgIHN0cnVjdCBsYmNfZGV2 aW5mbyAqZGkpCiB7Ci0JdV9sb25nIHN0YXJ0LCBlbmQsIGNvdW50OworCXVpbnQ2NF90IHN0YXJ0 LCBlbmQsIGNvdW50OwogCXBjZWxsX3QgKnJlZywgKnJlZ3B0cjsKIAlwY2VsbF90IGFkZHJfY2Vs bHMsIHNpemVfY2VsbHM7CiAJaW50IHR1cGxlX3NpemUsIHR1cGxlczsKQEAgLTM5MSw4ICszOTIs OCBAQAogCQlzdGFydCA9IHNjLT5zY19iYW5rc1tiYW5rXS5rdmEgKyBzdGFydDsKIAkJZW5kID0g c3RhcnQgKyBjb3VudCAtIDE7CiAKLQkJZGVidWdmKCJyZWcgYWRkciBiYW5rID0gJWQsIHN0YXJ0 ID0gJWx4LCBlbmQgPSAlbHgsICIKLQkJICAgICJjb3VudCA9ICVseFxuIiwgYmFuaywgc3RhcnQs IGVuZCwgY291bnQpOworCQlkZWJ1Z2YoInJlZyBhZGRyIGJhbmsgPSAlZCwgc3RhcnQgPSAlbGx4 LCBlbmQgPSAlbGx4LCAiCisJCSAgICAiY291bnQgPSAlbGx4XG4iLCBiYW5rLCBzdGFydCwgZW5k LCBjb3VudCk7CiAKIAkJLyogVXNlIGJhbmsgKENTKSBjZWxsIGFzIHJpZC4gKi8KIAkJcmVzb3Vy Y2VfbGlzdF9hZGQoJmRpLT5kaV9yZXMsIFNZU19SRVNfTUVNT1JZLCBiYW5rLCBzdGFydCwKQEAg LTQzNCw3ICs0MzUsNyBAQAogCXN0cnVjdCBsYmNfc29mdGMgKnNjOwogCXN0cnVjdCBsYmNfZGV2 aW5mbyAqZGk7CiAJc3RydWN0IHJtYW4gKnJtOwotCXVfbG9uZyBvZmZzZXQsIHN0YXJ0LCBzaXpl OworCXVpbnQ2NF90IG9mZnNldCwgc3RhcnQsIHNpemU7CiAJZGV2aWNlX3QgY2RldjsKIAlwaGFu ZGxlX3Qgbm9kZSwgY2hpbGQ7CiAJcGNlbGxfdCAqcmFuZ2VzLCAqcmFuZ2VzcHRyOwpAQCAtNjYz LDcgKzY2NCw3IEBACiAKIHN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKgogbGJjX2FsbG9jX3Jlc291 cmNlKGRldmljZV90IGJ1cywgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgKnJpZCwKLSAg ICB1X2xvbmcgc3RhcnQsIHVfbG9uZyBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCisg ICAgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQg ZmxhZ3MpCiB7CiAJc3RydWN0IGxiY19zb2Z0YyAqc2M7CiAJc3RydWN0IGxiY19kZXZpbmZvICpk aTsKSW5kZXg6IHN5cy9wb3dlcnBjL29mdy9vZndfcGNpLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL3Bv d2VycGMvb2Z3L29md19wY2kuYwkocmV2aXNpb24gMjg3MTg5KQorKysgc3lzL3Bvd2VycGMvb2Z3 L29md19wY2kuYwkod29ya2luZyBjb3B5KQpAQCAtNjIsOCArNjIsOCBAQAogc3RhdGljIGludAkJ b2Z3X3BjaV9yZWFkX2l2YXIoZGV2aWNlX3QsIGRldmljZV90LCBpbnQsCiAJCQkgICAgdWludHB0 cl90ICopOwogc3RhdGljIHN0cnVjdAkJcmVzb3VyY2UgKiBvZndfcGNpX2FsbG9jX3Jlc291cmNl KGRldmljZV90IGJ1cywKLQkJCSAgICBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAqcmlk LCB1X2xvbmcgc3RhcnQsCi0JCQkgICAgdV9sb25nIGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBm bGFncyk7CisJCQkgICAgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgKnJpZCwgYnVzX2Fk ZHJfdCBzdGFydCwKKwkJCSAgICBidXNfYWRkcl90IGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBm bGFncyk7CiBzdGF0aWMgaW50CQlvZndfcGNpX3JlbGVhc2VfcmVzb3VyY2UoZGV2aWNlX3QgYnVz LCBkZXZpY2VfdCBjaGlsZCwKICAgICAJCQkgICAgaW50IHR5cGUsIGludCByaWQsIHN0cnVjdCBy ZXNvdXJjZSAqcmVzKTsKIHN0YXRpYyBpbnQJCW9md19wY2lfYWN0aXZhdGVfcmVzb3VyY2UoZGV2 aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwKQEAgLTcyLDggKzcyLDggQEAKICAgICAJCQkgICAg ZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgcmlkLAogICAgIAkJCSAgICBzdHJ1Y3QgcmVz b3VyY2UgKnJlcyk7CiBzdGF0aWMgaW50CQlvZndfcGNpX2FkanVzdF9yZXNvdXJjZShkZXZpY2Vf dCBidXMsIGRldmljZV90IGNoaWxkLAotCQkJICAgIGludCB0eXBlLCBzdHJ1Y3QgcmVzb3VyY2Ug KnJlcywgdV9sb25nIHN0YXJ0LAotCQkJICAgIHVfbG9uZyBlbmQpOworCQkJICAgIGludCB0eXBl LCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgYnVzX2FkZHJfdCBzdGFydCwKKwkJCSAgICBidXNfYWRk cl90IGVuZCk7CiAKIC8qCiAgKiBwY2liIGludGVyZmFjZS4KQEAgLTMwNyw3ICszMDcsNyBAQAog CiBzdGF0aWMgc3RydWN0IHJlc291cmNlICoKIG9md19wY2lfYWxsb2NfcmVzb3VyY2UoZGV2aWNl X3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAqcmlkLAotICAgIHVfbG9uZyBz dGFydCwgdV9sb25nIGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKKyAgICBidXNfYWRk cl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKIHsK IAlzdHJ1Y3QJCQlvZndfcGNpX3NvZnRjICpzYzsKIAlzdHJ1Y3QJCQlyZXNvdXJjZSAqcnY7CkBA IC00NTMsNyArNDUzLDcgQEAKIAogc3RhdGljIGludAogb2Z3X3BjaV9hZGp1c3RfcmVzb3VyY2Uo ZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsCi0gICAgc3RydWN0IHJlc291 cmNlICpyZXMsIHVfbG9uZyBzdGFydCwgdV9sb25nIGVuZCkKKyAgICBzdHJ1Y3QgcmVzb3VyY2Ug KnJlcywgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQpCiB7CiAJc3RydWN0IHJtYW4g KnJtID0gTlVMTDsKIAlzdHJ1Y3Qgb2Z3X3BjaV9zb2Z0YyAqc2MgPSBkZXZpY2VfZ2V0X3NvZnRj KGJ1cyk7CkluZGV4OiBzeXMvcG93ZXJwYy9wb3dlcnBjL25leHVzLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g c3lzL3Bvd2VycGMvcG93ZXJwYy9uZXh1cy5jCShyZXZpc2lvbiAyODcxODkpCisrKyBzeXMvcG93 ZXJwYy9wb3dlcnBjL25leHVzLmMJKHdvcmtpbmcgY29weSkKQEAgLTE4OSwxMyArMTg5LDEzIEBA CiB7CiAKIAlpZiAodHlwZSA9PSBTWVNfUkVTX01FTU9SWSkgewotCQl2bV9vZmZzZXRfdCBzdGFy dDsKKwkJdm1fcGFkZHJfdCBzdGFydDsKIAkJdm9pZCAqcDsKIAotCQlzdGFydCA9ICh2bV9vZmZz ZXRfdCkgcm1hbl9nZXRfc3RhcnQocik7CisJCXN0YXJ0ID0gcm1hbl9nZXRfc3RhcnQocik7CiAJ CWlmIChib290dmVyYm9zZSkKLQkJCXByaW50ZigibmV4dXMgbWFwZGV2OiBzdGFydCAlengsIGxl biAlbGRcbiIsIHN0YXJ0LAotCQkJICAgIHJtYW5fZ2V0X3NpemUocikpOworCQkJcHJpbnRmKCJu ZXh1cyBtYXBkZXY6IHN0YXJ0ICVsbHgsIGxlbiAlbGRcbiIsCisJCQkgICAgKHVpbnQ2NF90KXN0 YXJ0LCBybWFuX2dldF9zaXplKHIpKTsKIAogCQlwID0gcG1hcF9tYXBkZXYoc3RhcnQsICh2bV9z aXplX3QpIHJtYW5fZ2V0X3NpemUocikpOwogCQlpZiAocCA9PSBOVUxMKQpJbmRleDogc3lzL3Bv d2VycGMvcG93ZXJwYy9wbGF0Zm9ybS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9wb3dlcnBjL3Bvd2Vy cGMvcGxhdGZvcm0uYwkocmV2aXNpb24gMjg3MTg5KQorKysgc3lzL3Bvd2VycGMvcG93ZXJwYy9w bGF0Zm9ybS5jCSh3b3JraW5nIGNvcHkpCkBAIC04Niw4ICs4Niw4IEBACiBtZW1yX21lcmdlKHN0 cnVjdCBtZW1fcmVnaW9uICpmcm9tLCBzdHJ1Y3QgbWVtX3JlZ2lvbiAqdG8pCiB7CiAJdm1fb2Zm c2V0X3QgZW5kOwotCWVuZCA9IHVsbWF4KHRvLT5tcl9zdGFydCArIHRvLT5tcl9zaXplLCBmcm9t LT5tcl9zdGFydCArIGZyb20tPm1yX3NpemUpOwotCXRvLT5tcl9zdGFydCA9IHVsbWluKGZyb20t Pm1yX3N0YXJ0LCB0by0+bXJfc3RhcnQpOworCWVuZCA9IHFtYXgodG8tPm1yX3N0YXJ0ICsgdG8t Pm1yX3NpemUsIGZyb20tPm1yX3N0YXJ0ICsgZnJvbS0+bXJfc2l6ZSk7CisJdG8tPm1yX3N0YXJ0 ID0gcW1pbihmcm9tLT5tcl9zdGFydCwgdG8tPm1yX3N0YXJ0KTsKIAl0by0+bXJfc2l6ZSA9IGVu ZCAtIHRvLT5tcl9zdGFydDsKIH0KIApJbmRleDogc3lzL3N5cy9idXMuaAo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBzeXMvc3lzL2J1cy5oCShyZXZpc2lvbiAyODcxODkpCisrKyBzeXMvc3lzL2J1cy5oCSh3b3Jr aW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVmIF9TWVNfQlVTX0hfCiAjZGVmaW5l IF9TWVNfQlVTX0hfCiAKKyNpbmNsdWRlIDxtYWNoaW5lL19idXMuaD4KICNpbmNsdWRlIDxtYWNo aW5lL19saW1pdHMuaD4KICNpbmNsdWRlIDxzeXMvX2J1c19kbWEuaD4KICNpbmNsdWRlIDxzeXMv aW9jY29tLmg+CkBAIC0yOTIsOCArMjkzLDggQEAKIAlpbnQJcmlkOwkJCS8qKjwgQGJyaWVmIHJl c291cmNlIGlkZW50aWZpZXIgKi8KIAlpbnQJZmxhZ3M7CQkJLyoqPCBAYnJpZWYgcmVzb3VyY2Ug ZmxhZ3MgKi8KIAlzdHJ1Y3QJcmVzb3VyY2UgKnJlczsJCS8qKjwgQGJyaWVmIHRoZSByZWFsIHJl c291cmNlIHdoZW4gYWxsb2NhdGVkICovCi0JdV9sb25nCXN0YXJ0OwkJCS8qKjwgQGJyaWVmIHN0 YXJ0IG9mIHJlc291cmNlIHJhbmdlICovCi0JdV9sb25nCWVuZDsJCQkvKio8IEBicmllZiBlbmQg b2YgcmVzb3VyY2UgcmFuZ2UgKi8KKwlidXNfYWRkcl90CXN0YXJ0OwkJLyoqPCBAYnJpZWYgc3Rh cnQgb2YgcmVzb3VyY2UgcmFuZ2UgKi8KKwlidXNfYWRkcl90CWVuZDsJCS8qKjwgQGJyaWVmIGVu ZCBvZiByZXNvdXJjZSByYW5nZSAqLwogCXVfbG9uZwljb3VudDsJCQkvKio8IEBicmllZiBjb3Vu dCB3aXRoaW4gcmFuZ2UgKi8KIH07CiBTVEFJTFFfSEVBRChyZXNvdXJjZV9saXN0LCByZXNvdXJj ZV9saXN0X2VudHJ5KTsKQEAgLTMwNywxMCArMzA4LDEwIEBACiBzdHJ1Y3QgcmVzb3VyY2VfbGlz dF9lbnRyeSAqCiAJcmVzb3VyY2VfbGlzdF9hZGQoc3RydWN0IHJlc291cmNlX2xpc3QgKnJsLAog CQkJICBpbnQgdHlwZSwgaW50IHJpZCwKLQkJCSAgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB1 X2xvbmcgY291bnQpOworCQkJICBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCwgdV9s b25nIGNvdW50KTsKIGludAlyZXNvdXJjZV9saXN0X2FkZF9uZXh0KHN0cnVjdCByZXNvdXJjZV9s aXN0ICpybCwKIAkJCSAgaW50IHR5cGUsCi0JCQkgIHVfbG9uZyBzdGFydCwgdV9sb25nIGVuZCwg dV9sb25nIGNvdW50KTsKKwkJCSAgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQsIHVf bG9uZyBjb3VudCk7CiBpbnQJcmVzb3VyY2VfbGlzdF9idXN5KHN0cnVjdCByZXNvdXJjZV9saXN0 ICpybCwKIAkJCSAgIGludCB0eXBlLCBpbnQgcmlkKTsKIGludAlyZXNvdXJjZV9saXN0X3Jlc2Vy dmVkKHN0cnVjdCByZXNvdXJjZV9saXN0ICpybCwgaW50IHR5cGUsIGludCByaWQpOwpAQCAtMzIz LDcgKzMyNCw3IEBACiAJcmVzb3VyY2VfbGlzdF9hbGxvYyhzdHJ1Y3QgcmVzb3VyY2VfbGlzdCAq cmwsCiAJCQkgICAgZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwKIAkJCSAgICBpbnQgdHlw ZSwgaW50ICpyaWQsCi0JCQkgICAgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLAorCQkJICAgIGJ1 c19hZGRyX3Qgc3RhcnQsIGJ1c19hZGRyX3QgZW5kLAogCQkJICAgIHVfbG9uZyBjb3VudCwgdV9p bnQgZmxhZ3MpOwogaW50CXJlc291cmNlX2xpc3RfcmVsZWFzZShzdHJ1Y3QgcmVzb3VyY2VfbGlz dCAqcmwsCiAJCQkgICAgICBkZXZpY2VfdCBidXMsIGRldmljZV90IGNoaWxkLApAQCAtMzM1LDcg KzMzNiw3IEBACiAJcmVzb3VyY2VfbGlzdF9yZXNlcnZlKHN0cnVjdCByZXNvdXJjZV9saXN0ICpy bCwKIAkJCSAgICAgIGRldmljZV90IGJ1cywgZGV2aWNlX3QgY2hpbGQsCiAJCQkgICAgICBpbnQg dHlwZSwgaW50ICpyaWQsCi0JCQkgICAgICB1X2xvbmcgc3RhcnQsIHVfbG9uZyBlbmQsCisJCQkg ICAgICBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCwKIAkJCSAgICAgIHVfbG9uZyBj b3VudCwgdV9pbnQgZmxhZ3MpOwogaW50CXJlc291cmNlX2xpc3RfdW5yZXNlcnZlKHN0cnVjdCBy ZXNvdXJjZV9saXN0ICpybCwKIAkJCQlkZXZpY2VfdCBidXMsIGRldmljZV90IGNoaWxkLApAQCAt MzYyLDExICszNjMsMTEgQEAKIAlidXNfZ2VuZXJpY19hZGRfY2hpbGQoZGV2aWNlX3QgZGV2LCB1 X2ludCBvcmRlciwgY29uc3QgY2hhciAqbmFtZSwKIAkJCSAgICAgIGludCB1bml0KTsKIGludAli dXNfZ2VuZXJpY19hZGp1c3RfcmVzb3VyY2UoZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwg aW50IHR5cGUsCi0JCQkJICAgIHN0cnVjdCByZXNvdXJjZSAqciwgdV9sb25nIHN0YXJ0LAotCQkJ CSAgICB1X2xvbmcgZW5kKTsKKwkJCQkgICAgc3RydWN0IHJlc291cmNlICpyLCBidXNfYWRkcl90 IHN0YXJ0LAorCQkJCSAgICBidXNfYWRkcl90IGVuZCk7CiBzdHJ1Y3QgcmVzb3VyY2UgKgogCWJ1 c19nZW5lcmljX2FsbG9jX3Jlc291cmNlKGRldmljZV90IGJ1cywgZGV2aWNlX3QgY2hpbGQsIGlu dCB0eXBlLAotCQkJCSAgIGludCAqcmlkLCB1X2xvbmcgc3RhcnQsIHVfbG9uZyBlbmQsCisJCQkJ ICAgaW50ICpyaWQsIGJ1c19hZGRyX3Qgc3RhcnQsIGJ1c19hZGRyX3QgZW5kLAogCQkJCSAgIHVf bG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpOwogaW50CWJ1c19nZW5lcmljX2F0dGFjaChkZXZpY2Vf dCBkZXYpOwogaW50CWJ1c19nZW5lcmljX2JpbmRfaW50cihkZXZpY2VfdCBkZXYsIGRldmljZV90 IGNoaWxkLApAQCAtNDA1LDExICs0MDYsMTEgQEAKIAogc3RydWN0IHJlc291cmNlICoKIAlidXNf Z2VuZXJpY19ybF9hbGxvY19yZXNvdXJjZSAoZGV2aWNlX3QsIGRldmljZV90LCBpbnQsIGludCAq LAotCQkJCSAgICAgICB1X2xvbmcsIHVfbG9uZywgdV9sb25nLCB1X2ludCk7CisJCQkJICAgICAg IGJ1c19hZGRyX3QsIGJ1c19hZGRyX3QsIHVfbG9uZywgdV9pbnQpOwogdm9pZAlidXNfZ2VuZXJp Y19ybF9kZWxldGVfcmVzb3VyY2UgKGRldmljZV90LCBkZXZpY2VfdCwgaW50LCBpbnQpOwotaW50 CWJ1c19nZW5lcmljX3JsX2dldF9yZXNvdXJjZSAoZGV2aWNlX3QsIGRldmljZV90LCBpbnQsIGlu dCwgdV9sb25nICosCitpbnQJYnVzX2dlbmVyaWNfcmxfZ2V0X3Jlc291cmNlIChkZXZpY2VfdCwg ZGV2aWNlX3QsIGludCwgaW50LCBidXNfYWRkcl90ICosCiAJCQkJICAgICB1X2xvbmcgKik7Ci1p bnQJYnVzX2dlbmVyaWNfcmxfc2V0X3Jlc291cmNlIChkZXZpY2VfdCwgZGV2aWNlX3QsIGludCwg aW50LCB1X2xvbmcsCitpbnQJYnVzX2dlbmVyaWNfcmxfc2V0X3Jlc291cmNlIChkZXZpY2VfdCwg ZGV2aWNlX3QsIGludCwgaW50LCBidXNfYWRkcl90LAogCQkJCSAgICAgdV9sb25nKTsKIGludAli dXNfZ2VuZXJpY19ybF9yZWxlYXNlX3Jlc291cmNlIChkZXZpY2VfdCwgZGV2aWNlX3QsIGludCwg aW50LAogCQkJCQkgc3RydWN0IHJlc291cmNlICopOwpAQCAtNDM5LDEwICs0NDAsMTAgQEAKIAkJ CSAgICAgIHN0cnVjdCByZXNvdXJjZSAqKnJlcyk7CiAKIGludAlidXNfYWRqdXN0X3Jlc291cmNl KGRldmljZV90IGNoaWxkLCBpbnQgdHlwZSwgc3RydWN0IHJlc291cmNlICpyLAotCQkJICAgIHVf bG9uZyBzdGFydCwgdV9sb25nIGVuZCk7CisJCQkgICAgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2Fk ZHJfdCBlbmQpOwogc3RydWN0CXJlc291cmNlICpidXNfYWxsb2NfcmVzb3VyY2UoZGV2aWNlX3Qg ZGV2LCBpbnQgdHlwZSwgaW50ICpyaWQsCi0JCQkJICAgICB1X2xvbmcgc3RhcnQsIHVfbG9uZyBl bmQsIHVfbG9uZyBjb3VudCwKLQkJCQkgICAgIHVfaW50IGZsYWdzKTsKKwkJCQkgICAgIGJ1c19h ZGRyX3Qgc3RhcnQsIGJ1c19hZGRyX3QgZW5kLAorCQkJCSAgICAgdV9sb25nIGNvdW50LCB1X2lu dCBmbGFncyk7CiBpbnQJYnVzX2FjdGl2YXRlX3Jlc291cmNlKGRldmljZV90IGRldiwgaW50IHR5 cGUsIGludCByaWQsCiAJCQkgICAgICBzdHJ1Y3QgcmVzb3VyY2UgKnIpOwogaW50CWJ1c19kZWFj dGl2YXRlX3Jlc291cmNlKGRldmljZV90IGRldiwgaW50IHR5cGUsIGludCByaWQsCkBAIC00NjAs MTAgKzQ2MSwxMCBAQAogaW50CWJ1c19kZXNjcmliZV9pbnRyKGRldmljZV90IGRldiwgc3RydWN0 IHJlc291cmNlICppcnEsIHZvaWQgKmNvb2tpZSwKIAkJCSAgY29uc3QgY2hhciAqZm10LCAuLi4p OwogaW50CWJ1c19zZXRfcmVzb3VyY2UoZGV2aWNlX3QgZGV2LCBpbnQgdHlwZSwgaW50IHJpZCwK LQkJCSB1X2xvbmcgc3RhcnQsIHVfbG9uZyBjb3VudCk7CisJCQkgYnVzX2FkZHJfdCBzdGFydCwg dV9sb25nIGNvdW50KTsKIGludAlidXNfZ2V0X3Jlc291cmNlKGRldmljZV90IGRldiwgaW50IHR5 cGUsIGludCByaWQsCi0JCQkgdV9sb25nICpzdGFydHAsIHVfbG9uZyAqY291bnRwKTsKLXVfbG9u ZwlidXNfZ2V0X3Jlc291cmNlX3N0YXJ0KGRldmljZV90IGRldiwgaW50IHR5cGUsIGludCByaWQp OworCQkJIGJ1c19hZGRyX3QgKnN0YXJ0cCwgdV9sb25nICpjb3VudHApOworYnVzX2FkZHJfdAli dXNfZ2V0X3Jlc291cmNlX3N0YXJ0KGRldmljZV90IGRldiwgaW50IHR5cGUsIGludCByaWQpOwog dV9sb25nCWJ1c19nZXRfcmVzb3VyY2VfY291bnQoZGV2aWNlX3QgZGV2LCBpbnQgdHlwZSwgaW50 IHJpZCk7CiB2b2lkCWJ1c19kZWxldGVfcmVzb3VyY2UoZGV2aWNlX3QgZGV2LCBpbnQgdHlwZSwg aW50IHJpZCk7CiBpbnQJYnVzX2NoaWxkX3ByZXNlbnQoZGV2aWNlX3QgY2hpbGQpOwpAQCAtNDc0 LDcgKzQ3NSw4IEBACiBzdGF0aWMgX19pbmxpbmUgc3RydWN0IHJlc291cmNlICoKIGJ1c19hbGxv Y19yZXNvdXJjZV9hbnkoZGV2aWNlX3QgZGV2LCBpbnQgdHlwZSwgaW50ICpyaWQsIHVfaW50IGZs YWdzKQogewotCXJldHVybiAoYnVzX2FsbG9jX3Jlc291cmNlKGRldiwgdHlwZSwgcmlkLCAwdWws IH4wdWwsIDEsIGZsYWdzKSk7CisJcmV0dXJuIChidXNfYWxsb2NfcmVzb3VyY2UoZGV2LCB0eXBl LCByaWQsIChidXNfYWRkcl90KTB1bCwKKwkgICAgfihidXNfYWRkcl90KTB1bCwgMSwgZmxhZ3Mp KTsKIH0KIAogLyoKSW5kZXg6IHN5cy9zeXMvcm1hbi5oCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9zeXMv cm1hbi5oCShyZXZpc2lvbiAyODcxODkpCisrKyBzeXMvc3lzL3JtYW4uaAkod29ya2luZyBjb3B5 KQpAQCAtNTQsNiArNTQsOSBAQAogI2RlZmluZQlSRl9BTElHTk1FTlRfTE9HMih4KQkoKHgpIDw8 IFJGX0FMSUdOTUVOVF9TSElGVCkKICNkZWZpbmUJUkZfQUxJR05NRU5UKHgpCQkoKCh4KSAmIFJG X0FMSUdOTUVOVF9NQVNLKSA+PiBSRl9BTElHTk1FTlRfU0hJRlQpCiAKKyNkZWZpbmUgUk1fTUlO X1NUQVJUCSgoYnVzX2FkZHJfdCkwKQorI2RlZmluZSBSTV9NQVhfRU5ECSh+KGJ1c19hZGRyX3Qp MCkKKwogZW51bQlybWFuX3R5cGUgeyBSTUFOX1VOSU5JVCA9IDAsIFJNQU5fR0FVR0UsIFJNQU5f QVJSQVkgfTsKIAogLyoKQEAgLTcwLDggKzczLDggQEAKIAl1aW50cHRyX3QJcl9kZXZpY2U7CQkv KiBkZXZpY2Ugb3duaW5nIHRoaXMgcmVzb3VyY2UgKi8KIAljaGFyCQlyX2Rldm5hbWVbUk1fVEVY VExFTl07CS8qIGRldmljZSBuYW1lIFhYWCBvYnNvbGV0ZSAqLwogCi0JdV9sb25nCQlyX3N0YXJ0 OwkJLyogb2Zmc2V0IGluIHJlc291cmNlIHNwYWNlICovCi0JdV9sb25nCQlyX3NpemU7CQkJLyog c2l6ZSBpbiByZXNvdXJjZSBzcGFjZSAqLworCWJ1c19hZGRyX3QJcl9zdGFydDsJCS8qIG9mZnNl dCBpbiByZXNvdXJjZSBzcGFjZSAqLworCWJ1c19zaXplX3QJcl9zaXplOwkJCS8qIHNpemUgaW4g cmVzb3VyY2Ugc3BhY2UgKi8KIAl1X2ludAkJcl9mbGFnczsJCS8qIFJGXyogZmxhZ3MgKi8KIH07 CiAKQEAgLTc5LDggKzgyLDggQEAKIAl1aW50cHRyX3QJcm1faGFuZGxlOwkJLyogcm1hbiB1bmlx dWlmaWVyICovCiAJY2hhcgkJcm1fZGVzY3JbUk1fVEVYVExFTl07CS8qIHJtYW4gZGVzY3JpcHRp b24gKi8KIAotCXVfbG9uZwkJcm1fc3RhcnQ7CQkvKiBiYXNlIG9mIG1hbmFnZWQgcmVnaW9uICov Ci0JdV9sb25nCQlybV9zaXplOwkJLyogc2l6ZSBvZiBtYW5hZ2VkIHJlZ2lvbiAqLworCWJ1c19h ZGRyX3QJcm1fc3RhcnQ7CQkvKiBiYXNlIG9mIG1hbmFnZWQgcmVnaW9uICovCisJYnVzX3NpemVf dAlybV9zaXplOwkJLyogc2l6ZSBvZiBtYW5hZ2VkIHJlZ2lvbiAqLwogCWVudW0gcm1hbl90eXBl CXJtX3R5cGU7CQkvKiByZWdpb24gdHlwZSAqLwogfTsKIApAQCAtMTA4LDggKzExMSw4IEBACiAJ c3RydWN0CXJlc291cmNlX2hlYWQgCXJtX2xpc3Q7CiAJc3RydWN0CW10eCAqcm1fbXR4OwkvKiBt dXRleCB1c2VkIHRvIHByb3RlY3Qgcm1fbGlzdCAqLwogCVRBSUxRX0VOVFJZKHJtYW4pCXJtX2xp bms7IC8qIGxpbmsgaW4gbGlzdCBvZiBhbGwgcm1hbnMgKi8KLQl1X2xvbmcJcm1fc3RhcnQ7CS8q IGluZGV4IG9mIGdsb2JhbGx5IGZpcnN0IGVudHJ5ICovCi0JdV9sb25nCXJtX2VuZDsJCS8qIGlu ZGV4IG9mIGdsb2JhbGx5IGxhc3QgZW50cnkgKi8KKwlidXNfYWRkcl90CXJtX3N0YXJ0OwkvKiBp bmRleCBvZiBnbG9iYWxseSBmaXJzdCBlbnRyeSAqLworCWJ1c19hZGRyX3QJcm1fZW5kOwkvKiBp bmRleCBvZiBnbG9iYWxseSBsYXN0IGVudHJ5ICovCiAJZW51bQlybWFuX3R5cGUgcm1fdHlwZTsg Lyogd2hhdCB0eXBlIG9mIHJlc291cmNlIHRoaXMgaXMgKi8KIAljb25zdAljaGFyICpybV9kZXNj cjsJLyogdGV4dCBkZXNjcmlwaW9uIG9mIHRoaXMgcmVzb3VyY2UgKi8KIH07CkBAIC0xMTYsMzkg KzExOSwzOSBAQAogVEFJTFFfSEVBRChybWFuX2hlYWQsIHJtYW4pOwogCiBpbnQJcm1hbl9hY3Rp dmF0ZV9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnIpOwotaW50CXJtYW5fYWRqdXN0X3Jlc291 cmNlKHN0cnVjdCByZXNvdXJjZSAqciwgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kKTsKK2ludAly bWFuX2FkanVzdF9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnIsIGJ1c19hZGRyX3Qgc3RhcnQs IGJ1c19hZGRyX3QgZW5kKTsKIGludAlybWFuX2F3YWl0X3Jlc291cmNlKHN0cnVjdCByZXNvdXJj ZSAqciwgaW50IHByaSwgaW50IHRpbW8pOwotaW50CXJtYW5fZmlyc3RfZnJlZV9yZWdpb24oc3Ry dWN0IHJtYW4gKnJtLCB1X2xvbmcgKnN0YXJ0LCB1X2xvbmcgKmVuZCk7CitpbnQJcm1hbl9maXJz dF9mcmVlX3JlZ2lvbihzdHJ1Y3Qgcm1hbiAqcm0sIGJ1c19hZGRyX3QgKnN0YXJ0LCBidXNfYWRk cl90ICplbmQpOwogYnVzX3NwYWNlX2hhbmRsZV90IHJtYW5fZ2V0X2J1c2hhbmRsZShzdHJ1Y3Qg cmVzb3VyY2UgKik7CiBidXNfc3BhY2VfdGFnX3Qgcm1hbl9nZXRfYnVzdGFnKHN0cnVjdCByZXNv dXJjZSAqKTsKLXVfbG9uZwlybWFuX2dldF9lbmQoc3RydWN0IHJlc291cmNlICopOworYnVzX2Fk ZHJfdAlybWFuX2dldF9lbmQoc3RydWN0IHJlc291cmNlICopOwogc3RydWN0IGRldmljZSAqcm1h bl9nZXRfZGV2aWNlKHN0cnVjdCByZXNvdXJjZSAqKTsKIHVfaW50CXJtYW5fZ2V0X2ZsYWdzKHN0 cnVjdCByZXNvdXJjZSAqKTsKIGludAlybWFuX2dldF9yaWQoc3RydWN0IHJlc291cmNlICopOwot dV9sb25nCXJtYW5fZ2V0X3NpemUoc3RydWN0IHJlc291cmNlICopOwotdV9sb25nCXJtYW5fZ2V0 X3N0YXJ0KHN0cnVjdCByZXNvdXJjZSAqKTsKK2J1c19zaXplX3QJcm1hbl9nZXRfc2l6ZShzdHJ1 Y3QgcmVzb3VyY2UgKik7CitidXNfYWRkcl90CXJtYW5fZ2V0X3N0YXJ0KHN0cnVjdCByZXNvdXJj ZSAqKTsKIHZvaWQgICAqcm1hbl9nZXRfdmlydHVhbChzdHJ1Y3QgcmVzb3VyY2UgKik7CiBpbnQJ cm1hbl9kZWFjdGl2YXRlX3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqcik7CiBpbnQJcm1hbl9m aW5pKHN0cnVjdCBybWFuICpybSk7CiBpbnQJcm1hbl9pbml0KHN0cnVjdCBybWFuICpybSk7CiBp bnQJcm1hbl9pbml0X2Zyb21fcmVzb3VyY2Uoc3RydWN0IHJtYW4gKnJtLCBzdHJ1Y3QgcmVzb3Vy Y2UgKnIpOwotaW50CXJtYW5fbGFzdF9mcmVlX3JlZ2lvbihzdHJ1Y3Qgcm1hbiAqcm0sIHVfbG9u ZyAqc3RhcnQsIHVfbG9uZyAqZW5kKTsKK2ludAlybWFuX2xhc3RfZnJlZV9yZWdpb24oc3RydWN0 IHJtYW4gKnJtLCBidXNfYWRkcl90ICpzdGFydCwgYnVzX2FkZHJfdCAqZW5kKTsKIHVpbnQzMl90 IHJtYW5fbWFrZV9hbGlnbm1lbnRfZmxhZ3ModWludDMyX3Qgc2l6ZSk7Ci1pbnQJcm1hbl9tYW5h Z2VfcmVnaW9uKHN0cnVjdCBybWFuICpybSwgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kKTsKK2lu dAlybWFuX21hbmFnZV9yZWdpb24oc3RydWN0IHJtYW4gKnJtLCBidXNfYWRkcl90IHN0YXJ0LCBi dXNfYWRkcl90IGVuZCk7CiBpbnQJcm1hbl9pc19yZWdpb25fbWFuYWdlcihzdHJ1Y3QgcmVzb3Vy Y2UgKnIsIHN0cnVjdCBybWFuICpybSk7CiBpbnQJcm1hbl9yZWxlYXNlX3Jlc291cmNlKHN0cnVj dCByZXNvdXJjZSAqcik7Ci1zdHJ1Y3QgcmVzb3VyY2UgKnJtYW5fcmVzZXJ2ZV9yZXNvdXJjZShz dHJ1Y3Qgcm1hbiAqcm0sIHVfbG9uZyBzdGFydCwKLQkJCQkJdV9sb25nIGVuZCwgdV9sb25nIGNv dW50LAorc3RydWN0IHJlc291cmNlICpybWFuX3Jlc2VydmVfcmVzb3VyY2Uoc3RydWN0IHJtYW4g KnJtLCBidXNfYWRkcl90IHN0YXJ0LAorCQkJCQlidXNfYWRkcl90IGVuZCwgdV9sb25nIGNvdW50 LAogCQkJCQl1X2ludCBmbGFncywgc3RydWN0IGRldmljZSAqZGV2KTsKLXN0cnVjdCByZXNvdXJj ZSAqcm1hbl9yZXNlcnZlX3Jlc291cmNlX2JvdW5kKHN0cnVjdCBybWFuICpybSwgdV9sb25nIHN0 YXJ0LAotCQkJCQl1X2xvbmcgZW5kLCB1X2xvbmcgY291bnQsIHVfbG9uZyBib3VuZCwKK3N0cnVj dCByZXNvdXJjZSAqcm1hbl9yZXNlcnZlX3Jlc291cmNlX2JvdW5kKHN0cnVjdCBybWFuICpybSwg YnVzX2FkZHJfdCBzdGFydCwKKwkJCQkJYnVzX2FkZHJfdCBlbmQsIHVfbG9uZyBjb3VudCwgYnVz X2FkZHJfdCBib3VuZCwKIAkJCQkJdV9pbnQgZmxhZ3MsIHN0cnVjdCBkZXZpY2UgKmRldik7CiB2 b2lkCXJtYW5fc2V0X2J1c2hhbmRsZShzdHJ1Y3QgcmVzb3VyY2UgKl9yLCBidXNfc3BhY2VfaGFu ZGxlX3QgX2gpOwogdm9pZAlybWFuX3NldF9idXN0YWcoc3RydWN0IHJlc291cmNlICpfciwgYnVz X3NwYWNlX3RhZ190IF90KTsKIHZvaWQJcm1hbl9zZXRfZGV2aWNlKHN0cnVjdCByZXNvdXJjZSAq X3IsIHN0cnVjdCBkZXZpY2UgKl9kZXYpOwotdm9pZAlybWFuX3NldF9lbmQoc3RydWN0IHJlc291 cmNlICpfciwgdV9sb25nIF9lbmQpOwordm9pZAlybWFuX3NldF9lbmQoc3RydWN0IHJlc291cmNl ICpfciwgYnVzX2FkZHJfdCBfZW5kKTsKIHZvaWQJcm1hbl9zZXRfcmlkKHN0cnVjdCByZXNvdXJj ZSAqX3IsIGludCBfcmlkKTsKLXZvaWQJcm1hbl9zZXRfc3RhcnQoc3RydWN0IHJlc291cmNlICpf ciwgdV9sb25nIF9zdGFydCk7Cit2b2lkCXJtYW5fc2V0X3N0YXJ0KHN0cnVjdCByZXNvdXJjZSAq X3IsIGJ1c19hZGRyX3QgX3N0YXJ0KTsKIHZvaWQJcm1hbl9zZXRfdmlydHVhbChzdHJ1Y3QgcmVz b3VyY2UgKl9yLCB2b2lkICpfdik7CiAKIGV4dGVybglzdHJ1Y3Qgcm1hbl9oZWFkIHJtYW5faGVh ZDsK --001a1141f3be08c46f051e777817--