From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Remy Bohmer" Subject: Re: [PATCH]: Atmel Serial Console interrupt handler splitup Date: Thu, 13 Dec 2007 21:32:51 +0100 Message-ID: <3efb10970712131232j5f747420g4aa8b5bd956e3dd3@mail.gmail.com> References: <3efb10970712070724i6fa66666t2b8422329759ce24@mail.gmail.com> <3efb10970712121429l7b41d57md4f826f6aaf4b71@mail.gmail.com> <3efb10970712130840r7a2c5f72jca641d1cac545464@mail.gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_12543_26657929.1197577972400" Cc: "Steven Rostedt" , "Andrew Victor" , RT , "Ingo Molnar" , "Thomas Gleixner" To: "Andrew Victor" Return-path: Received: from py-out-1112.google.com ([64.233.166.182]:12448 "EHLO py-out-1112.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752593AbXLMUcy (ORCPT ); Thu, 13 Dec 2007 15:32:54 -0500 Received: by py-out-1112.google.com with SMTP id u77so420493pyb.16 for ; Thu, 13 Dec 2007 12:32:53 -0800 (PST) In-Reply-To: Sender: linux-rt-users-owner@vger.kernel.org List-ID: ------=_Part_12543_26657929.1197577972400 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello Andrew, > > * atmel_serial_cleanup_no_at91.patch > I don't know what coding rules you're following... :) Funny... I intended to follow these rules: Documentation/CodingStyle I know I should not do it, but I cannot resist pointing you these rules (for the fun, and because you ask me to... :-))) ---------------------------------- Chapter 6: Functions Functions should be short and sweet, and do just one thing. They should fit on one or two screenfuls of text (the ISO/ANSI screen size is 80x24, as we all know), and do one thing and do that well. ---------------------------------- For now it is not absolutely necessary, but the routine become quite long when the DMA patch comes in. AND: ---------------------------------- Chapter 15: The inline disease A reasonable rule of thumb is to not put inline at functions that have more than 3 lines of code in them. + Often people argue that adding inline to functions that are static and used only once is always a win since there is no space tradeoff. While this is technically correct, ***gcc is capable of inlining these automatically without help***, and the maintenance issue of removing the inline when a second user appears outweighs the potential value of the hint that tells gcc to do something it would have done anyway. ---------------------------------- > The code you've moved out of the interrupt handler should probably now > be marked as inline. Because I know it is common practice in the kernel, I attached 3 new patches to inline these :-)) To begin with, I made the cleanup patch separate, because otherwise it would make the split-up quite unclear to follow, and scripts/checkpatch.pl generated a huge list of violations on this file. BTW: I am currently generating a re-diff for the DMA patch so that it can be applied on top of this set to make this patch queue easier to handle. Regards, Remy ------=_Part_12543_26657929.1197577972400 Content-Type: text/x-patch; name=atmel_serial_cleanup_no_at91.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fa5q4g5h Content-Disposition: attachment; filename=atmel_serial_cleanup_no_at91.patch VGhpcyBwYXRjaCBjbGVhbnMgdXAgdGhlIGF0bWVsX3NlcmlhbCBkcml2ZXIgdG8gY29uZm9ybSB0 aGUgY29kaW5nIHJ1bGVzLgpJdCBjb250YWlucyBubyBmdW5jdGlvbmFsIGNoYW5nZS4KClNpZ25l ZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotLS0KIGRyaXZlcnMvc2Vy aWFsL2F0bWVsX3NlcmlhbC5jIHwgIDM1MSArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxOTkgaW5zZXJ0aW9ucygrKSwgMTUyIGRlbGV0 aW9ucygtKQoKSW5kZXg6IGxpbnV4LTIuNi4yMy4xLXJ0NS9kcml2ZXJzL3NlcmlhbC9hdG1lbF9z ZXJpYWwuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYuMjMuMS1ydDUub3JpZy9kcml2ZXJzL3Nl cmlhbC9hdG1lbF9zZXJpYWwuYwkyMDA3LTEwLTA5IDIyOjMxOjM4LjAwMDAwMDAwMCArMDIwMAor KysgbGludXgtMi42LjIzLjEtcnQ1L2RyaXZlcnMvc2VyaWFsL2F0bWVsX3NlcmlhbC5jCTIwMDct MTItMTMgMjA6NTk6MTYuMDAwMDAwMDAwICswMTAwCkBAIC03NCw0NyArNzQsNTEgQEAKIAogI2Rl ZmluZSBBVE1FTF9JU1JfUEFTU19MSU1JVAkyNTYKIAotI2RlZmluZSBVQVJUX1BVVF9DUihwb3J0 LHYpCV9fcmF3X3dyaXRlbCh2LCAocG9ydCktPm1lbWJhc2UgKyBBVE1FTF9VU19DUikKLSNkZWZp bmUgVUFSVF9HRVRfTVIocG9ydCkJX19yYXdfcmVhZGwoKHBvcnQpLT5tZW1iYXNlICsgQVRNRUxf VVNfTVIpCi0jZGVmaW5lIFVBUlRfUFVUX01SKHBvcnQsdikJX19yYXdfd3JpdGVsKHYsIChwb3J0 KS0+bWVtYmFzZSArIEFUTUVMX1VTX01SKQotI2RlZmluZSBVQVJUX1BVVF9JRVIocG9ydCx2KQlf X3Jhd193cml0ZWwodiwgKHBvcnQpLT5tZW1iYXNlICsgQVRNRUxfVVNfSUVSKQotI2RlZmluZSBV QVJUX1BVVF9JRFIocG9ydCx2KQlfX3Jhd193cml0ZWwodiwgKHBvcnQpLT5tZW1iYXNlICsgQVRN RUxfVVNfSURSKQotI2RlZmluZSBVQVJUX0dFVF9JTVIocG9ydCkJX19yYXdfcmVhZGwoKHBvcnQp LT5tZW1iYXNlICsgQVRNRUxfVVNfSU1SKQotI2RlZmluZSBVQVJUX0dFVF9DU1IocG9ydCkJX19y YXdfcmVhZGwoKHBvcnQpLT5tZW1iYXNlICsgQVRNRUxfVVNfQ1NSKQotI2RlZmluZSBVQVJUX0dF VF9DSEFSKHBvcnQpCV9fcmF3X3JlYWRsKChwb3J0KS0+bWVtYmFzZSArIEFUTUVMX1VTX1JIUikK LSNkZWZpbmUgVUFSVF9QVVRfQ0hBUihwb3J0LHYpCV9fcmF3X3dyaXRlbCh2LCAocG9ydCktPm1l bWJhc2UgKyBBVE1FTF9VU19USFIpCi0jZGVmaW5lIFVBUlRfR0VUX0JSR1IocG9ydCkJX19yYXdf cmVhZGwoKHBvcnQpLT5tZW1iYXNlICsgQVRNRUxfVVNfQlJHUikKLSNkZWZpbmUgVUFSVF9QVVRf QlJHUihwb3J0LHYpCV9fcmF3X3dyaXRlbCh2LCAocG9ydCktPm1lbWJhc2UgKyBBVE1FTF9VU19C UkdSKQotI2RlZmluZSBVQVJUX1BVVF9SVE9SKHBvcnQsdikJX19yYXdfd3JpdGVsKHYsIChwb3J0 KS0+bWVtYmFzZSArIEFUTUVMX1VTX1JUT1IpCisjZGVmaW5lIGxyZWFkKHBvcnQpCQlfX3Jhd19y ZWFkbChwb3J0KQorI2RlZmluZSBsd3JpdGUodiwgcG9ydCkJCV9fcmF3X3dyaXRlbCh2LCBwb3J0 KQogCi0vLyAjZGVmaW5lIFVBUlRfR0VUX0NSKHBvcnQpCV9fcmF3X3JlYWRsKChwb3J0KS0+bWVt YmFzZSArIEFUTUVMX1VTX0NSKQkJLy8gaXMgd3JpdGUtb25seQorI2RlZmluZSBVQVJUX1BVVF9D Uihwb3J0LCB2KQlsd3JpdGUodiwgKHBvcnQpLT5tZW1iYXNlICsgQVRNRUxfVVNfQ1IpCisjZGVm aW5lIFVBUlRfUFVUX01SKHBvcnQsIHYpCWx3cml0ZSh2LCAocG9ydCktPm1lbWJhc2UgKyBBVE1F TF9VU19NUikKKyNkZWZpbmUgVUFSVF9QVVRfSUVSKHBvcnQsIHYpCWx3cml0ZSh2LCAocG9ydCkt Pm1lbWJhc2UgKyBBVE1FTF9VU19JRVIpCisjZGVmaW5lIFVBUlRfUFVUX0lEUihwb3J0LCB2KQls d3JpdGUodiwgKHBvcnQpLT5tZW1iYXNlICsgQVRNRUxfVVNfSURSKQorI2RlZmluZSBVQVJUX1BV VF9DSEFSKHBvcnQsIHYpCWx3cml0ZSh2LCAocG9ydCktPm1lbWJhc2UgKyBBVE1FTF9VU19USFIp CisjZGVmaW5lIFVBUlRfUFVUX0JSR1IocG9ydCwgdikJbHdyaXRlKHYsIChwb3J0KS0+bWVtYmFz ZSArIEFUTUVMX1VTX0JSR1IpCisjZGVmaW5lIFVBUlRfUFVUX1JUT1IocG9ydCwgdikJbHdyaXRl KHYsIChwb3J0KS0+bWVtYmFzZSArIEFUTUVMX1VTX1JUT1IpCisKKyNkZWZpbmUgVUFSVF9HRVRf TVIocG9ydCkJbHJlYWQoKHBvcnQpLT5tZW1iYXNlICsgQVRNRUxfVVNfTVIpCisjZGVmaW5lIFVB UlRfR0VUX0lNUihwb3J0KQlscmVhZCgocG9ydCktPm1lbWJhc2UgKyBBVE1FTF9VU19JTVIpCisj ZGVmaW5lIFVBUlRfR0VUX0NTUihwb3J0KQlscmVhZCgocG9ydCktPm1lbWJhc2UgKyBBVE1FTF9V U19DU1IpCisjZGVmaW5lIFVBUlRfR0VUX0NIQVIocG9ydCkJbHJlYWQoKHBvcnQpLT5tZW1iYXNl ICsgQVRNRUxfVVNfUkhSKQorI2RlZmluZSBVQVJUX0dFVF9CUkdSKHBvcnQpCWxyZWFkKChwb3J0 KS0+bWVtYmFzZSArIEFUTUVMX1VTX0JSR1IpCisKKy8qIGlzIHdyaXRlLW9ubHkgKi8KKy8qICNk ZWZpbmUgVUFSVF9HRVRfQ1IocG9ydCkgICAgbHJlYWQoKHBvcnQpLT5tZW1iYXNlICsgQVRNRUxf VVNfQ1IpICovCiAKICAvKiBQREMgcmVnaXN0ZXJzICovCi0jZGVmaW5lIFVBUlRfUFVUX1BUQ1Io cG9ydCx2KQlfX3Jhd193cml0ZWwodiwgKHBvcnQpLT5tZW1iYXNlICsgQVRNRUxfUERDX1BUQ1Ip Ci0jZGVmaW5lIFVBUlRfR0VUX1BUU1IocG9ydCkJX19yYXdfcmVhZGwoKHBvcnQpLT5tZW1iYXNl ICsgQVRNRUxfUERDX1BUU1IpCisjZGVmaW5lIFVBUlRfUFVUX1BUQ1IocG9ydCwgdikJbHdyaXRl KHYsIChwb3J0KS0+bWVtYmFzZSArIEFUTUVMX1BEQ19QVENSKQorI2RlZmluZSBVQVJUX1BVVF9S UFIocG9ydCwgdikJbHdyaXRlKHYsIChwb3J0KS0+bWVtYmFzZSArIEFUTUVMX1BEQ19SUFIpCisj ZGVmaW5lIFVBUlRfUFVUX1JDUihwb3J0LCB2KQlsd3JpdGUodiwgKHBvcnQpLT5tZW1iYXNlICsg QVRNRUxfUERDX1JDUikKKyNkZWZpbmUgVUFSVF9QVVRfUk5QUihwb3J0LCB2KQlsd3JpdGUodiwg KHBvcnQpLT5tZW1iYXNlICsgQVRNRUxfUERDX1JOUFIpCisjZGVmaW5lIFVBUlRfUFVUX1JOQ1Io cG9ydCwgdikJbHdyaXRlKHYsIChwb3J0KS0+bWVtYmFzZSArIEFUTUVMX1BEQ19STkNSKQorI2Rl ZmluZSBVQVJUX1BVVF9UUFIocG9ydCwgdikJbHdyaXRlKHYsIChwb3J0KS0+bWVtYmFzZSArIEFU TUVMX1BEQ19UUFIpCisjZGVmaW5lIFVBUlRfUFVUX1RDUihwb3J0LCB2KQlsd3JpdGUodiwgKHBv cnQpLT5tZW1iYXNlICsgQVRNRUxfUERDX1RDUikKKy8qI2RlZmluZSBVQVJUX1BVVF9UTlBSKHBv cnQsIHYpIGx3cml0ZSh2LCAocG9ydCktPm1lbWJhc2UgKyBBVE1FTF9QRENfVE5QUikgKi8KKy8q I2RlZmluZSBVQVJUX1BVVF9UTkNSKHBvcnQsIHYpIGx3cml0ZSh2LCAocG9ydCktPm1lbWJhc2Ug KyBBVE1FTF9QRENfVE5DUikgKi8KIAotI2RlZmluZSBVQVJUX1BVVF9SUFIocG9ydCx2KQlfX3Jh d193cml0ZWwodiwgKHBvcnQpLT5tZW1iYXNlICsgQVRNRUxfUERDX1JQUikKLSNkZWZpbmUgVUFS VF9HRVRfUlBSKHBvcnQpCV9fcmF3X3JlYWRsKChwb3J0KS0+bWVtYmFzZSArIEFUTUVMX1BEQ19S UFIpCi0jZGVmaW5lIFVBUlRfUFVUX1JDUihwb3J0LHYpCV9fcmF3X3dyaXRlbCh2LCAocG9ydCkt Pm1lbWJhc2UgKyBBVE1FTF9QRENfUkNSKQotI2RlZmluZSBVQVJUX1BVVF9STlBSKHBvcnQsdikJ X19yYXdfd3JpdGVsKHYsIChwb3J0KS0+bWVtYmFzZSArIEFUTUVMX1BEQ19STlBSKQotI2RlZmlu ZSBVQVJUX1BVVF9STkNSKHBvcnQsdikJX19yYXdfd3JpdGVsKHYsIChwb3J0KS0+bWVtYmFzZSAr IEFUTUVMX1BEQ19STkNSKQotCi0jZGVmaW5lIFVBUlRfUFVUX1RQUihwb3J0LHYpCV9fcmF3X3dy aXRlbCh2LCAocG9ydCktPm1lbWJhc2UgKyBBVE1FTF9QRENfVFBSKQotI2RlZmluZSBVQVJUX1BV VF9UQ1IocG9ydCx2KQlfX3Jhd193cml0ZWwodiwgKHBvcnQpLT5tZW1iYXNlICsgQVRNRUxfUERD X1RDUikKLS8vI2RlZmluZSBVQVJUX1BVVF9UTlBSKHBvcnQsdikJX19yYXdfd3JpdGVsKHYsIChw b3J0KS0+bWVtYmFzZSArIEFUTUVMX1BEQ19UTlBSKQotLy8jZGVmaW5lIFVBUlRfUFVUX1ROQ1Io cG9ydCx2KQlfX3Jhd193cml0ZWwodiwgKHBvcnQpLT5tZW1iYXNlICsgQVRNRUxfUERDX1ROQ1Ip CisjZGVmaW5lIFVBUlRfR0VUX1BUU1IocG9ydCkJbHJlYWQoKHBvcnQpLT5tZW1iYXNlICsgQVRN RUxfUERDX1BUU1IpCisjZGVmaW5lIFVBUlRfR0VUX1JQUihwb3J0KQlscmVhZCgocG9ydCktPm1l bWJhc2UgKyBBVE1FTF9QRENfUlBSKQogCi1zdGF0aWMgaW50ICgqYXRtZWxfb3Blbl9ob29rKShz dHJ1Y3QgdWFydF9wb3J0ICopOwotc3RhdGljIHZvaWQgKCphdG1lbF9jbG9zZV9ob29rKShzdHJ1 Y3QgdWFydF9wb3J0ICopOworc3RhdGljIGludCAoKmF0bWVsX29wZW5faG9vaykgKHN0cnVjdCB1 YXJ0X3BvcnQgKik7CitzdGF0aWMgdm9pZCAoKmF0bWVsX2Nsb3NlX2hvb2spIChzdHJ1Y3QgdWFy dF9wb3J0ICopOwogCiAvKgogICogV2Ugd3JhcCBvdXIgcG9ydCBzdHJ1Y3R1cmUgYXJvdW5kIHRo ZSBnZW5lcmljIHVhcnRfcG9ydC4KICAqLwogc3RydWN0IGF0bWVsX3VhcnRfcG9ydCB7Ci0Jc3Ry dWN0IHVhcnRfcG9ydAl1YXJ0OwkJLyogdWFydCAqLwotCXN0cnVjdCBjbGsJCSpjbGs7CQkvKiB1 YXJ0IGNsb2NrICovCi0JdW5zaWduZWQgc2hvcnQJCXN1c3BlbmRlZDsJLyogaXMgcG9ydCBzdXNw ZW5kZWQ/ICovCi0JaW50CQkJYnJlYWtfYWN0aXZlOwkvKiBicmVhayBiZWluZyByZWNlaXZlZCAq LworCXN0cnVjdCB1YXJ0X3BvcnQgCXVhcnQ7CQkvKiB1YXJ0ICovCisJc3RydWN0IGNsayAJIAkq Y2xrOwkJLyogdWFydCBjbG9jayAqLworCXVuc2lnbmVkIHNob3J0IAkJc3VzcGVuZGVkOwkvKiBp cyBwb3J0IHN1c3BlbmRlZD8gKi8KKwlpbnQgCQkJYnJlYWtfYWN0aXZlOwkvKiBicmVhayBiZWlu ZyByZWNlaXZlZCAqLwogfTsKIAogc3RhdGljIHN0cnVjdCBhdG1lbF91YXJ0X3BvcnQgYXRtZWxf cG9ydHNbQVRNRUxfTUFYX1VBUlRdOwpAQCAtMTQyLDggKzE0Niw4IEBAIHN0YXRpYyB2b2lkIGF0 bWVsX3NldF9tY3RybChzdHJ1Y3QgdWFydF8KICNpZmRlZiBDT05GSUdfQVJDSF9BVDkxUk05MjAw CiAJaWYgKGNwdV9pc19hdDkxcm05MjAwKCkpIHsKIAkJLyoKLQkJICogQVQ5MVJNOTIwMCBFcnJh dGEgIzM5OiBSVFMwIGlzIG5vdCBpbnRlcm5hbGx5IGNvbm5lY3RlZCB0byBQQTIxLgotCQkgKiAg V2UgbmVlZCB0byBkcml2ZSB0aGUgcGluIG1hbnVhbGx5LgorCQkgKiBBVDkxUk05MjAwIEVycmF0 YSAjMzk6IFJUUzAgaXMgbm90IGludGVybmFsbHkgY29ubmVjdGVkCisJCSAqIHRvIFBBMjEuIFdl IG5lZWQgdG8gZHJpdmUgdGhlIHBpbiBtYW51YWxseS4KIAkJICovCiAJCWlmIChwb3J0LT5tYXBi YXNlID09IEFUOTFSTTkyMDBfQkFTRV9VUzApIHsKIAkJCWlmIChtY3RybCAmIFRJT0NNX1JUUykK QEAgLTIwNCw4ICsyMDgsNiBAQCBzdGF0aWMgdV9pbnQgYXRtZWxfZ2V0X21jdHJsKHN0cnVjdCB1 YXJ0CiAgKi8KIHN0YXRpYyB2b2lkIGF0bWVsX3N0b3BfdHgoc3RydWN0IHVhcnRfcG9ydCAqcG9y dCkKIHsKLQlzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICphdG1lbF9wb3J0ID0gKHN0cnVjdCBhdG1l bF91YXJ0X3BvcnQgKikgcG9ydDsKLQogCVVBUlRfUFVUX0lEUihwb3J0LCBBVE1FTF9VU19UWFJE WSk7CiB9CiAKQEAgLTIxNCw4ICsyMTYsNiBAQCBzdGF0aWMgdm9pZCBhdG1lbF9zdG9wX3R4KHN0 cnVjdCB1YXJ0X3BvCiAgKi8KIHN0YXRpYyB2b2lkIGF0bWVsX3N0YXJ0X3R4KHN0cnVjdCB1YXJ0 X3BvcnQgKnBvcnQpCiB7Ci0Jc3RydWN0IGF0bWVsX3VhcnRfcG9ydCAqYXRtZWxfcG9ydCA9IChz dHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICopIHBvcnQ7Ci0KIAlVQVJUX1BVVF9JRVIocG9ydCwgQVRN RUxfVVNfVFhSRFkpOwogfQogCkBAIC0yMjQsOCArMjI0LDYgQEAgc3RhdGljIHZvaWQgYXRtZWxf c3RhcnRfdHgoc3RydWN0IHVhcnRfcAogICovCiBzdGF0aWMgdm9pZCBhdG1lbF9zdG9wX3J4KHN0 cnVjdCB1YXJ0X3BvcnQgKnBvcnQpCiB7Ci0Jc3RydWN0IGF0bWVsX3VhcnRfcG9ydCAqYXRtZWxf cG9ydCA9IChzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICopIHBvcnQ7Ci0KIAlVQVJUX1BVVF9JRFIo cG9ydCwgQVRNRUxfVVNfUlhSRFkpOwogfQogCkBAIC0yMzQsNyArMjMyLDkgQEAgc3RhdGljIHZv aWQgYXRtZWxfc3RvcF9yeChzdHJ1Y3QgdWFydF9wbwogICovCiBzdGF0aWMgdm9pZCBhdG1lbF9l bmFibGVfbXMoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKIHsKLQlVQVJUX1BVVF9JRVIocG9ydCwg QVRNRUxfVVNfUklJQyB8IEFUTUVMX1VTX0RTUklDIHwgQVRNRUxfVVNfRENESUMgfCBBVE1FTF9V U19DVFNJQyk7CisJVUFSVF9QVVRfSUVSKHBvcnQsCisJCSAgICAgQVRNRUxfVVNfUklJQyB8IEFU TUVMX1VTX0RTUklDIHwgQVRNRUxfVVNfRENESUMgfAorCQkgICAgIEFUTUVMX1VTX0NUU0lDKTsK IH0KIAogLyoKQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgdm9pZCBhdG1lbF9icmVha19jdGwo c3RydWN0IHVhcnRfCiAgKi8KIHN0YXRpYyB2b2lkIGF0bWVsX3J4X2NoYXJzKHN0cnVjdCB1YXJ0 X3BvcnQgKnBvcnQpCiB7Ci0Jc3RydWN0IGF0bWVsX3VhcnRfcG9ydCAqYXRtZWxfcG9ydCA9IChz dHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICopIHBvcnQ7CisJc3RydWN0IGF0bWVsX3VhcnRfcG9ydCAq YXRtZWxfcG9ydCA9IChzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICopcG9ydDsKIAlzdHJ1Y3QgdHR5 X3N0cnVjdCAqdHR5ID0gcG9ydC0+aW5mby0+dHR5OwogCXVuc2lnbmVkIGludCBzdGF0dXMsIGNo LCBmbGc7CiAKQEAgLTI3MiwxMCArMjcyLDEyIEBAIHN0YXRpYyB2b2lkIGF0bWVsX3J4X2NoYXJz KHN0cnVjdCB1YXJ0X3AKIAkJaWYgKHVubGlrZWx5KHN0YXR1cyAmIChBVE1FTF9VU19QQVJFIHwg QVRNRUxfVVNfRlJBTUUKIAkJCQkgICAgICAgfCBBVE1FTF9VU19PVlJFIHwgQVRNRUxfVVNfUlhC UkspCiAJCQkgICAgIHx8IGF0bWVsX3BvcnQtPmJyZWFrX2FjdGl2ZSkpIHsKLQkJCVVBUlRfUFVU X0NSKHBvcnQsIEFUTUVMX1VTX1JTVFNUQSk7CS8qIGNsZWFyIGVycm9yICovCisJCQkvKiBjbGVh ciBlcnJvciAqLworCQkJVUFSVF9QVVRfQ1IocG9ydCwgQVRNRUxfVVNfUlNUU1RBKTsKIAkJCWlm IChzdGF0dXMgJiBBVE1FTF9VU19SWEJSSwogCQkJICAgICYmICFhdG1lbF9wb3J0LT5icmVha19h Y3RpdmUpIHsKLQkJCQlzdGF0dXMgJj0gfihBVE1FTF9VU19QQVJFIHwgQVRNRUxfVVNfRlJBTUUp OwkvKiBpZ25vcmUgc2lkZS1lZmZlY3QgKi8KKwkJCQkvKiBpZ25vcmUgc2lkZS1lZmZlY3QgKi8K KwkJCQlzdGF0dXMgJj0gfihBVE1FTF9VU19QQVJFIHwgQVRNRUxfVVNfRlJBTUUpOwogCQkJCXBv cnQtPmljb3VudC5icmsrKzsKIAkJCQlhdG1lbF9wb3J0LT5icmVha19hY3RpdmUgPSAxOwogCQkJ CVVBUlRfUFVUX0lFUihwb3J0LCBBVE1FTF9VU19SWEJSSyk7CkBAIC0zMTUsNyArMzE3LDcgQEAg c3RhdGljIHZvaWQgYXRtZWxfcnhfY2hhcnMoc3RydWN0IHVhcnRfcAogCiAJCXVhcnRfaW5zZXJ0 X2NoYXIocG9ydCwgc3RhdHVzLCBBVE1FTF9VU19PVlJFLCBjaCwgZmxnKTsKIAotCWlnbm9yZV9j aGFyOgoraWdub3JlX2NoYXI6CiAJCXN0YXR1cyA9IFVBUlRfR0VUX0NTUihwb3J0KTsKIAl9CiAK QEAgLTM1Niw0NCArMzU4LDc1IEBAIHN0YXRpYyB2b2lkIGF0bWVsX3R4X2NoYXJzKHN0cnVjdCB1 YXJ0X3AKIH0KIAogLyoKKyAqIHJlY2VpdmUgaW50ZXJydXB0IGhhbmRsZXIuCisgKi8KK3N0YXRp YyBpbmxpbmUgdm9pZAorYXRtZWxfaGFuZGxlX3JlY2VpdmUoc3RydWN0IHVhcnRfcG9ydCAqcG9y dCwgdW5zaWduZWQgaW50IHBlbmRpbmcpCit7CisJc3RydWN0IGF0bWVsX3VhcnRfcG9ydCAqYXRt ZWxfcG9ydCA9IChzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICopcG9ydDsKKworCS8qIEludGVycnVw dCByZWNlaXZlICovCisJaWYgKHBlbmRpbmcgJiBBVE1FTF9VU19SWFJEWSkKKwkJYXRtZWxfcnhf Y2hhcnMocG9ydCk7CisJZWxzZSBpZiAocGVuZGluZyAmIEFUTUVMX1VTX1JYQlJLKSB7CisJCS8q CisJCQkqIEVuZCBvZiBicmVhayBkZXRlY3RlZC4gSWYgaXQgY2FtZSBhbG9uZworCQkJKiB3aXRo IGEgY2hhcmFjdGVyLCBhdG1lbF9yeF9jaGFycyB3aWxsCisJCQkqIGhhbmRsZSBpdC4KKwkJCSov CisJCVVBUlRfUFVUX0NSKHBvcnQsIEFUTUVMX1VTX1JTVFNUQSk7CisJCVVBUlRfUFVUX0lEUihw b3J0LCBBVE1FTF9VU19SWEJSSyk7CisJCWF0bWVsX3BvcnQtPmJyZWFrX2FjdGl2ZSA9IDA7CisJ fQorfQorCisvKgorICogdHJhbnNtaXQgaW50ZXJydXB0IGhhbmRsZXIuCisgKi8KK3N0YXRpYyBp bmxpbmUgdm9pZAorYXRtZWxfaGFuZGxlX3RyYW5zbWl0KHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQs IHVuc2lnbmVkIGludCBwZW5kaW5nKQoreworCS8qIEludGVycnVwdCB0cmFuc21pdCAqLworCWlm IChwZW5kaW5nICYgQVRNRUxfVVNfVFhSRFkpCisJCWF0bWVsX3R4X2NoYXJzKHBvcnQpOworfQor CisvKgorICogc3RhdHVzIGZsYWdzIGludGVycnVwdCBoYW5kbGVyLgorICovCitzdGF0aWMgaW5s aW5lIHZvaWQKK2F0bWVsX2hhbmRsZV9zdGF0dXMoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCwgdW5z aWduZWQgaW50IHBlbmRpbmcsCisJCSAgICB1bnNpZ25lZCBpbnQgc3RhdHVzKQoreworCS8qIFRP RE86IEFsbCByZWFkcyB0byBDU1Igd2lsbCBjbGVhciB0aGVzZSBpbnRlcnJ1cHRzISAqLworCWlm IChwZW5kaW5nICYgQVRNRUxfVVNfUklJQykKKwkJcG9ydC0+aWNvdW50LnJuZysrOworCWlmIChw ZW5kaW5nICYgQVRNRUxfVVNfRFNSSUMpCisJCXBvcnQtPmljb3VudC5kc3IrKzsKKwlpZiAocGVu ZGluZyAmIEFUTUVMX1VTX0RDRElDKQorCQl1YXJ0X2hhbmRsZV9kY2RfY2hhbmdlKHBvcnQsICEo c3RhdHVzICYgQVRNRUxfVVNfRENEKSk7CisJaWYgKHBlbmRpbmcgJiBBVE1FTF9VU19DVFNJQykK KwkJdWFydF9oYW5kbGVfY3RzX2NoYW5nZShwb3J0LCAhKHN0YXR1cyAmIEFUTUVMX1VTX0NUUykp OworCWlmIChwZW5kaW5nICYKKwkJKEFUTUVMX1VTX1JJSUMgfCBBVE1FTF9VU19EU1JJQyB8IEFU TUVMX1VTX0RDRElDIHwKKwkJQVRNRUxfVVNfQ1RTSUMpKQorCQl3YWtlX3VwX2ludGVycnVwdGli bGUoJnBvcnQtPmluZm8tPmRlbHRhX21zcl93YWl0KTsKK30KKworLyoKICAqIEludGVycnVwdCBo YW5kbGVyCiAgKi8KIHN0YXRpYyBpcnFyZXR1cm5fdCBhdG1lbF9pbnRlcnJ1cHQoaW50IGlycSwg dm9pZCAqZGV2X2lkKQogewogCXN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQgPSBkZXZfaWQ7Ci0Jc3Ry dWN0IGF0bWVsX3VhcnRfcG9ydCAqYXRtZWxfcG9ydCA9IChzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0 ICopIHBvcnQ7CiAJdW5zaWduZWQgaW50IHN0YXR1cywgcGVuZGluZywgcGFzc19jb3VudGVyID0g MDsKIAogCXN0YXR1cyA9IFVBUlRfR0VUX0NTUihwb3J0KTsKIAlwZW5kaW5nID0gc3RhdHVzICYg VUFSVF9HRVRfSU1SKHBvcnQpOwogCXdoaWxlIChwZW5kaW5nKSB7Ci0JCS8qIEludGVycnVwdCBy ZWNlaXZlICovCi0JCWlmIChwZW5kaW5nICYgQVRNRUxfVVNfUlhSRFkpCi0JCQlhdG1lbF9yeF9j aGFycyhwb3J0KTsKLQkJZWxzZSBpZiAocGVuZGluZyAmIEFUTUVMX1VTX1JYQlJLKSB7Ci0JCQkv KgotCQkJICogRW5kIG9mIGJyZWFrIGRldGVjdGVkLiBJZiBpdCBjYW1lIGFsb25nCi0JCQkgKiB3 aXRoIGEgY2hhcmFjdGVyLCBhdG1lbF9yeF9jaGFycyB3aWxsCi0JCQkgKiBoYW5kbGUgaXQuCi0J CQkgKi8KLQkJCVVBUlRfUFVUX0NSKHBvcnQsIEFUTUVMX1VTX1JTVFNUQSk7Ci0JCQlVQVJUX1BV VF9JRFIocG9ydCwgQVRNRUxfVVNfUlhCUkspOwotCQkJYXRtZWxfcG9ydC0+YnJlYWtfYWN0aXZl ID0gMDsKLQkJfQotCi0JCS8vIFRPRE86IEFsbCByZWFkcyB0byBDU1Igd2lsbCBjbGVhciB0aGVz ZSBpbnRlcnJ1cHRzIQotCQlpZiAocGVuZGluZyAmIEFUTUVMX1VTX1JJSUMpIHBvcnQtPmljb3Vu dC5ybmcrKzsKLQkJaWYgKHBlbmRpbmcgJiBBVE1FTF9VU19EU1JJQykgcG9ydC0+aWNvdW50LmRz cisrOwotCQlpZiAocGVuZGluZyAmIEFUTUVMX1VTX0RDRElDKQotCQkJdWFydF9oYW5kbGVfZGNk X2NoYW5nZShwb3J0LCAhKHN0YXR1cyAmIEFUTUVMX1VTX0RDRCkpOwotCQlpZiAocGVuZGluZyAm IEFUTUVMX1VTX0NUU0lDKQotCQkJdWFydF9oYW5kbGVfY3RzX2NoYW5nZShwb3J0LCAhKHN0YXR1 cyAmIEFUTUVMX1VTX0NUUykpOwotCQlpZiAocGVuZGluZyAmIChBVE1FTF9VU19SSUlDIHwgQVRN RUxfVVNfRFNSSUMgfCBBVE1FTF9VU19EQ0RJQyB8IEFUTUVMX1VTX0NUU0lDKSkKLQkJCXdha2Vf dXBfaW50ZXJydXB0aWJsZSgmcG9ydC0+aW5mby0+ZGVsdGFfbXNyX3dhaXQpOwotCi0JCS8qIElu dGVycnVwdCB0cmFuc21pdCAqLwotCQlpZiAocGVuZGluZyAmIEFUTUVMX1VTX1RYUkRZKQotCQkJ YXRtZWxfdHhfY2hhcnMocG9ydCk7CisJCWF0bWVsX2hhbmRsZV9yZWNlaXZlKHBvcnQsIHBlbmRp bmcpOworCQlhdG1lbF9oYW5kbGVfc3RhdHVzKHBvcnQsIHBlbmRpbmcsIHN0YXR1cyk7CisJCWF0 bWVsX2hhbmRsZV90cmFuc21pdChwb3J0LCBwZW5kaW5nKTsKIAogCQlpZiAocGFzc19jb3VudGVy KysgPiBBVE1FTF9JU1JfUEFTU19MSU1JVCkKIAkJCWJyZWFrOwpAQCAtNDA5LDcgKzQ0Miw2IEBA IHN0YXRpYyBpcnFyZXR1cm5fdCBhdG1lbF9pbnRlcnJ1cHQoaW50IGkKICAqLwogc3RhdGljIGlu dCBhdG1lbF9zdGFydHVwKHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQpCiB7Ci0Jc3RydWN0IGF0bWVs X3VhcnRfcG9ydCAqYXRtZWxfcG9ydCA9IChzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICopIHBvcnQ7 CiAJaW50IHJldHZhbDsKIAogCS8qCkBAIC00MjIsNyArNDU0LDkgQEAgc3RhdGljIGludCBhdG1l bF9zdGFydHVwKHN0cnVjdCB1YXJ0X3BvcgogCS8qCiAJICogQWxsb2NhdGUgdGhlIElSUQogCSAq LwotCXJldHZhbCA9IHJlcXVlc3RfaXJxKHBvcnQtPmlycSwgYXRtZWxfaW50ZXJydXB0LCBJUlFG X1NIQVJFRCwgImF0bWVsX3NlcmlhbCIsIHBvcnQpOworCXJldHZhbCA9CisJICAgIHJlcXVlc3Rf aXJxKHBvcnQtPmlycSwgYXRtZWxfaW50ZXJydXB0LCBJUlFGX1NIQVJFRCwKKwkJCSJhdG1lbF9z ZXJpYWwiLCBwb3J0KTsKIAlpZiAocmV0dmFsKSB7CiAJCXByaW50aygiYXRtZWxfc2VyaWFsOiBh dG1lbF9zdGFydHVwIC0gQ2FuJ3QgZ2V0IGlycVxuIik7CiAJCXJldHVybiByZXR2YWw7CkBAIC00 NDQsOSArNDc4LDExIEBAIHN0YXRpYyBpbnQgYXRtZWxfc3RhcnR1cChzdHJ1Y3QgdWFydF9wb3IK IAkgKiBGaW5hbGx5LCBlbmFibGUgdGhlIHNlcmlhbCBwb3J0CiAJICovCiAJVUFSVF9QVVRfQ1Io cG9ydCwgQVRNRUxfVVNfUlNUU1RBIHwgQVRNRUxfVVNfUlNUUlgpOwotCVVBUlRfUFVUX0NSKHBv cnQsIEFUTUVMX1VTX1RYRU4gfCBBVE1FTF9VU19SWEVOKTsJCS8qIGVuYWJsZSB4bWl0ICYgcmN2 ciAqLworCS8qIGVuYWJsZSB4bWl0ICYgcmN2ciAqLworCVVBUlRfUFVUX0NSKHBvcnQsIEFUTUVM X1VTX1RYRU4gfCBBVE1FTF9VU19SWEVOKTsKIAotCVVBUlRfUFVUX0lFUihwb3J0LCBBVE1FTF9V U19SWFJEWSk7CQkvKiBlbmFibGUgcmVjZWl2ZSBvbmx5ICovCisJLyogZW5hYmxlIHJlY2VpdmUg b25seSAqLworCVVBUlRfUFVUX0lFUihwb3J0LCBBVE1FTF9VU19SWFJEWSk7CiAKIAlyZXR1cm4g MDsKIH0KQEAgLTQ1Niw4ICs0OTIsNiBAQCBzdGF0aWMgaW50IGF0bWVsX3N0YXJ0dXAoc3RydWN0 IHVhcnRfcG9yCiAgKi8KIHN0YXRpYyB2b2lkIGF0bWVsX3NodXRkb3duKHN0cnVjdCB1YXJ0X3Bv cnQgKnBvcnQpCiB7Ci0Jc3RydWN0IGF0bWVsX3VhcnRfcG9ydCAqYXRtZWxfcG9ydCA9IChzdHJ1 Y3QgYXRtZWxfdWFydF9wb3J0ICopIHBvcnQ7Ci0KIAkvKgogCSAqIERpc2FibGUgYWxsIGludGVy cnVwdHMsIHBvcnQgYW5kIGJyZWFrIGNvbmRpdGlvbi4KIAkgKi8KQEAgLTQ4MCw0NSArNTE0LDQ5 IEBAIHN0YXRpYyB2b2lkIGF0bWVsX3NodXRkb3duKHN0cnVjdCB1YXJ0X3AKIC8qCiAgKiBQb3dl ciAvIENsb2NrIG1hbmFnZW1lbnQuCiAgKi8KLXN0YXRpYyB2b2lkIGF0bWVsX3NlcmlhbF9wbShz dHJ1Y3QgdWFydF9wb3J0ICpwb3J0LCB1bnNpZ25lZCBpbnQgc3RhdGUsIHVuc2lnbmVkIGludCBv bGRzdGF0ZSkKK3N0YXRpYyB2b2lkIGF0bWVsX3NlcmlhbF9wbShzdHJ1Y3QgdWFydF9wb3J0ICpw b3J0LCB1bnNpZ25lZCBpbnQgc3RhdGUsCisJCQkgICAgdW5zaWduZWQgaW50IG9sZHN0YXRlKQog ewotCXN0cnVjdCBhdG1lbF91YXJ0X3BvcnQgKmF0bWVsX3BvcnQgPSAoc3RydWN0IGF0bWVsX3Vh cnRfcG9ydCAqKSBwb3J0OworCXN0cnVjdCBhdG1lbF91YXJ0X3BvcnQgKmF0bWVsX3BvcnQgPSAo c3RydWN0IGF0bWVsX3VhcnRfcG9ydCAqKXBvcnQ7CiAKIAlzd2l0Y2ggKHN0YXRlKSB7Ci0JCWNh c2UgMDoKLQkJCS8qCi0JCQkgKiBFbmFibGUgdGhlIHBlcmlwaGVyYWwgY2xvY2sgZm9yIHRoaXMg c2VyaWFsIHBvcnQuCi0JCQkgKiBUaGlzIGlzIGNhbGxlZCBvbiB1YXJ0X29wZW4oKSBvciBhIHJl c3VtZSBldmVudC4KLQkJCSAqLwotCQkJY2xrX2VuYWJsZShhdG1lbF9wb3J0LT5jbGspOwotCQkJ YnJlYWs7Ci0JCWNhc2UgMzoKLQkJCS8qCi0JCQkgKiBEaXNhYmxlIHRoZSBwZXJpcGhlcmFsIGNs b2NrIGZvciB0aGlzIHNlcmlhbCBwb3J0LgotCQkJICogVGhpcyBpcyBjYWxsZWQgb24gdWFydF9j bG9zZSgpIG9yIGEgc3VzcGVuZCBldmVudC4KLQkJCSAqLwotCQkJY2xrX2Rpc2FibGUoYXRtZWxf cG9ydC0+Y2xrKTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJcHJpbnRrKEtFUk5fRVJSICJh dG1lbF9zZXJpYWw6IHVua25vd24gcG0gJWRcbiIsIHN0YXRlKTsKKwljYXNlIDA6CisJCS8qCisJ CSAqIEVuYWJsZSB0aGUgcGVyaXBoZXJhbCBjbG9jayBmb3IgdGhpcyBzZXJpYWwgcG9ydC4KKwkJ ICogVGhpcyBpcyBjYWxsZWQgb24gdWFydF9vcGVuKCkgb3IgYSByZXN1bWUgZXZlbnQuCisJCSAq LworCQljbGtfZW5hYmxlKGF0bWVsX3BvcnQtPmNsayk7CisJCWJyZWFrOworCWNhc2UgMzoKKwkJ LyoKKwkJICogRGlzYWJsZSB0aGUgcGVyaXBoZXJhbCBjbG9jayBmb3IgdGhpcyBzZXJpYWwgcG9y dC4KKwkJICogVGhpcyBpcyBjYWxsZWQgb24gdWFydF9jbG9zZSgpIG9yIGEgc3VzcGVuZCBldmVu dC4KKwkJICovCisJCWNsa19kaXNhYmxlKGF0bWVsX3BvcnQtPmNsayk7CisJCWJyZWFrOworCWRl ZmF1bHQ6CisJCXByaW50ayhLRVJOX0VSUiAiYXRtZWxfc2VyaWFsOiB1bmtub3duIHBtICVkXG4i LCBzdGF0ZSk7CiAJfQogfQogCiAvKgogICogQ2hhbmdlIHRoZSBwb3J0IHBhcmFtZXRlcnMKICAq Lwotc3RhdGljIHZvaWQgYXRtZWxfc2V0X3Rlcm1pb3Moc3RydWN0IHVhcnRfcG9ydCAqcG9ydCwg c3RydWN0IGt0ZXJtaW9zICogdGVybWlvcywgc3RydWN0IGt0ZXJtaW9zICogb2xkKQorc3RhdGlj IHZvaWQgYXRtZWxfc2V0X3Rlcm1pb3Moc3RydWN0IHVhcnRfcG9ydCAqcG9ydCwgc3RydWN0IGt0 ZXJtaW9zICp0ZXJtaW9zLAorCQkJICAgICAgc3RydWN0IGt0ZXJtaW9zICpvbGQpCiB7CiAJdW5z aWduZWQgbG9uZyBmbGFnczsKIAl1bnNpZ25lZCBpbnQgbW9kZSwgaW1yLCBxdW90LCBiYXVkOwog CiAJLyogR2V0IGN1cnJlbnQgbW9kZSByZWdpc3RlciAqLwotCW1vZGUgPSBVQVJUX0dFVF9NUihw b3J0KSAmIH4oQVRNRUxfVVNfVVNDTEtTIHwgQVRNRUxfVVNfQ0hSTCB8IEFUTUVMX1VTX05CU1RP UCB8IEFUTUVMX1VTX1BBUik7CisJbW9kZSA9CisJICAgIFVBUlRfR0VUX01SKHBvcnQpICYgfihB VE1FTF9VU19VU0NMS1MgfCBBVE1FTF9VU19DSFJMIHwKKwkJCQkgIEFUTUVMX1VTX05CU1RPUCB8 IEFUTUVMX1VTX1BBUik7CiAKLQliYXVkID0gdWFydF9nZXRfYmF1ZF9yYXRlKHBvcnQsIHRlcm1p b3MsIG9sZCwgMCwgcG9ydC0+dWFydGNsay8xNik7CisJYmF1ZCA9IHVhcnRfZ2V0X2JhdWRfcmF0 ZShwb3J0LCB0ZXJtaW9zLCBvbGQsIDAsIHBvcnQtPnVhcnRjbGsgLyAxNik7CiAJcXVvdCA9IHVh cnRfZ2V0X2Rpdmlzb3IocG9ydCwgYmF1ZCk7CiAKLQlpZiAocXVvdCA+IDY1NTM1KSB7CQkvKiBC UkdSIGlzIDE2LWJpdCwgc28gc3dpdGNoIHRvIHNsb3dlciBjbG9jayAqLworCWlmIChxdW90ID4g NjU1MzUpIHsJLyogQlJHUiBpcyAxNi1iaXQsIHNvIHN3aXRjaCB0byBzbG93ZXIgY2xvY2sgKi8K IAkJcXVvdCAvPSA4OwogCQltb2RlIHw9IEFUTUVMX1VTX1VTQ0xLU19NQ0tfRElWODsKIAl9CkBA IC01NDUsMTggKzU4MywxNyBAQCBzdGF0aWMgdm9pZCBhdG1lbF9zZXRfdGVybWlvcyhzdHJ1Y3Qg dWFyCiAKIAkvKiBwYXJpdHkgKi8KIAlpZiAodGVybWlvcy0+Y19jZmxhZyAmIFBBUkVOQikgewot CQlpZiAodGVybWlvcy0+Y19jZmxhZyAmIENNU1BBUikgewkJCS8qIE1hcmsgb3IgU3BhY2UgcGFy aXR5ICovCisJCS8qIE1hcmsgb3IgU3BhY2UgcGFyaXR5ICovCisJCWlmICh0ZXJtaW9zLT5jX2Nm bGFnICYgQ01TUEFSKSB7CiAJCQlpZiAodGVybWlvcy0+Y19jZmxhZyAmIFBBUk9ERCkKIAkJCQlt b2RlIHw9IEFUTUVMX1VTX1BBUl9NQVJLOwogCQkJZWxzZQogCQkJCW1vZGUgfD0gQVRNRUxfVVNf UEFSX1NQQUNFOwotCQl9Ci0JCWVsc2UgaWYgKHRlcm1pb3MtPmNfY2ZsYWcgJiBQQVJPREQpCisJ CX0gZWxzZSBpZiAodGVybWlvcy0+Y19jZmxhZyAmIFBBUk9ERCkKIAkJCW1vZGUgfD0gQVRNRUxf VVNfUEFSX09ERDsKIAkJZWxzZQogCQkJbW9kZSB8PSBBVE1FTF9VU19QQVJfRVZFTjsKLQl9Ci0J ZWxzZQorCX0gZWxzZQogCQltb2RlIHw9IEFUTUVMX1VTX1BBUl9OT05FOwogCiAJc3Bpbl9sb2Nr X2lycXNhdmUoJnBvcnQtPmxvY2ssIGZsYWdzKTsKQEAgLTU4MiwxNiArNjE5LDE2IEBAIHN0YXRp YyB2b2lkIGF0bWVsX3NldF90ZXJtaW9zKHN0cnVjdCB1YXIKIAkJaWYgKHRlcm1pb3MtPmNfaWZs YWcgJiBJR05QQVIpCiAJCQlwb3J0LT5pZ25vcmVfc3RhdHVzX21hc2sgfD0gQVRNRUxfVVNfT1ZS RTsKIAl9Ci0KLQkvLyBUT0RPOiBJZ25vcmUgYWxsIGNoYXJhY3RlcnMgaWYgQ1JFQUQgaXMgc2V0 LgorCS8qIFRPRE86IElnbm9yZSBhbGwgY2hhcmFjdGVycyBpZiBDUkVBRCBpcyBzZXQuKi8KIAog CS8qIHVwZGF0ZSB0aGUgcGVyLXBvcnQgdGltZW91dCAqLwogCXVhcnRfdXBkYXRlX3RpbWVvdXQo cG9ydCwgdGVybWlvcy0+Y19jZmxhZywgYmF1ZCk7CiAKIAkvKiBkaXNhYmxlIGludGVycnVwdHMg YW5kIGRyYWluIHRyYW5zbWl0dGVyICovCi0JaW1yID0gVUFSVF9HRVRfSU1SKHBvcnQpOwkvKiBn ZXQgaW50ZXJydXB0IG1hc2sgKi8KLQlVQVJUX1BVVF9JRFIocG9ydCwgLTEpOwkJLyogZGlzYWJs ZSBhbGwgaW50ZXJydXB0cyAqLwotCXdoaWxlICghKFVBUlRfR0VUX0NTUihwb3J0KSAmIEFUTUVM X1VTX1RYRU1QVFkpKSB7IGJhcnJpZXIoKTsgfQorCWltciA9IFVBUlRfR0VUX0lNUihwb3J0KTsg LyogZ2V0IGludGVycnVwdCBtYXNrICovCisJVUFSVF9QVVRfSURSKHBvcnQsIC0xKTsJICAvKiBk aXNhYmxlIGFsbCBpbnRlcnJ1cHRzICovCisJd2hpbGUgKCEoVUFSVF9HRVRfQ1NSKHBvcnQpICYg QVRNRUxfVVNfVFhFTVBUWSkpCisJCWJhcnJpZXIoKTsKIAogCS8qIGRpc2FibGUgcmVjZWl2ZXIg YW5kIHRyYW5zbWl0dGVyICovCiAJVUFSVF9QVVRfQ1IocG9ydCwgQVRNRUxfVVNfVFhESVMgfCBB VE1FTF9VU19SWERJUyk7CkBAIC03MTcsNyArNzU0LDggQEAgc3RhdGljIHN0cnVjdCB1YXJ0X29w cyBhdG1lbF9wb3BzID0gewogLyoKICAqIENvbmZpZ3VyZSB0aGUgcG9ydCBmcm9tIHRoZSBwbGF0 Zm9ybSBkZXZpY2UgcmVzb3VyY2UgaW5mby4KICAqLwotc3RhdGljIHZvaWQgX19kZXZpbml0IGF0 bWVsX2luaXRfcG9ydChzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICphdG1lbF9wb3J0LCBzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQorc3RhdGljIHZvaWQgX19kZXZpbml0IGF0bWVsX2luaXRf cG9ydChzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICphdG1lbF9wb3J0LAorCQkJCSAgICAgIHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0IHVhcnRfcG9ydCAqcG9ydCA9ICZh dG1lbF9wb3J0LT51YXJ0OwogCXN0cnVjdCBhdG1lbF91YXJ0X2RhdGEgKmRhdGEgPSBwZGV2LT5k ZXYucGxhdGZvcm1fZGF0YTsKQEAgLTc0MCw3ICs3NzgsOCBAQCBzdGF0aWMgdm9pZCBfX2Rldmlu aXQgYXRtZWxfaW5pdF9wb3J0KHN0CiAJCXBvcnQtPm1lbWJhc2UJPSBOVUxMOwogCX0KIAotCWlm ICghYXRtZWxfcG9ydC0+Y2xrKSB7CQkvKiBmb3IgY29uc29sZSwgdGhlIGNsb2NrIGNvdWxkIGFs cmVhZHkgYmUgY29uZmlndXJlZCAqLworCS8qIGZvciBjb25zb2xlLCB0aGUgY2xvY2sgY291bGQg YWxyZWFkeSBiZSBjb25maWd1cmVkICovCisJaWYgKCFhdG1lbF9wb3J0LT5jbGspIHsKIAkJYXRt ZWxfcG9ydC0+Y2xrID0gY2xrX2dldCgmcGRldi0+ZGV2LCAidXNhcnQiKTsKIAkJY2xrX2VuYWJs ZShhdG1lbF9wb3J0LT5jbGspOwogCQlwb3J0LT51YXJ0Y2xrID0gY2xrX2dldF9yYXRlKGF0bWVs X3BvcnQtPmNsayk7CkBAIC03NjQsNyArODAzLDYgQEAgdm9pZCBfX2luaXQgYXRtZWxfcmVnaXN0 ZXJfdWFydF9mbnMoc3RydQogCWF0bWVsX3BvcHMuc2V0X3dha2UJPSBmbnMtPnNldF93YWtlOwog fQogCi0KICNpZmRlZiBDT05GSUdfU0VSSUFMX0FUTUVMX0NPTlNPTEUKIHN0YXRpYyB2b2lkIGF0 bWVsX2NvbnNvbGVfcHV0Y2hhcihzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0LCBpbnQgY2gpCiB7CkBA IC03ODIsNyArODIwLDcgQEAgc3RhdGljIHZvaWQgYXRtZWxfY29uc29sZV93cml0ZShzdHJ1Y3Qg YwogCXVuc2lnbmVkIGludCBzdGF0dXMsIGltcjsKIAogCS8qCi0JICoJRmlyc3QsIHNhdmUgSU1S IGFuZCB0aGVuIGRpc2FibGUgaW50ZXJydXB0cworCSAqICAgICAgRmlyc3QsIHNhdmUgSU1SIGFu ZCB0aGVuIGRpc2FibGUgaW50ZXJydXB0cwogCSAqLwogCWltciA9IFVBUlRfR0VUX0lNUihwb3J0 KTsJLyogZ2V0IGludGVycnVwdCBtYXNrICovCiAJVUFSVF9QVVRfSURSKHBvcnQsIEFUTUVMX1VT X1JYUkRZIHwgQVRNRUxfVVNfVFhSRFkpOwpAQCAtNzkwLDMwICs4MjgsMzIgQEAgc3RhdGljIHZv aWQgYXRtZWxfY29uc29sZV93cml0ZShzdHJ1Y3QgYwogCXVhcnRfY29uc29sZV93cml0ZShwb3J0 LCBzLCBjb3VudCwgYXRtZWxfY29uc29sZV9wdXRjaGFyKTsKIAogCS8qCi0JICoJRmluYWxseSwg d2FpdCBmb3IgdHJhbnNtaXR0ZXIgdG8gYmVjb21lIGVtcHR5Ci0JICoJYW5kIHJlc3RvcmUgSU1S CisJICogICAgICBGaW5hbGx5LCB3YWl0IGZvciB0cmFuc21pdHRlciB0byBiZWNvbWUgZW1wdHkK KwkgKiAgICAgIGFuZCByZXN0b3JlIElNUgogCSAqLwogCWRvIHsKIAkJc3RhdHVzID0gVUFSVF9H RVRfQ1NSKHBvcnQpOwogCX0gd2hpbGUgKCEoc3RhdHVzICYgQVRNRUxfVVNfVFhSRFkpKTsKLQlV QVJUX1BVVF9JRVIocG9ydCwgaW1yKTsJLyogc2V0IGludGVycnVwdHMgYmFjayB0aGUgd2F5IHRo ZXkgd2VyZSAqLworCS8qIHNldCBpbnRlcnJ1cHRzIGJhY2sgdGhlIHdheSB0aGV5IHdlcmUgKi8K KwlVQVJUX1BVVF9JRVIocG9ydCwgaW1yKTsKIH0KIAogLyoKLSAqIElmIHRoZSBwb3J0IHdhcyBh bHJlYWR5IGluaXRpYWxpc2VkIChlZywgYnkgYSBib290IGxvYWRlciksIHRyeSB0byBkZXRlcm1p bmUKLSAqIHRoZSBjdXJyZW50IHNldHVwLgorICogSWYgdGhlIHBvcnQgd2FzIGFscmVhZHkgaW5p dGlhbGlzZWQgKGVnLCBieSBhIGJvb3QgbG9hZGVyKSwKKyAqIHRyeSB0byBkZXRlcm1pbmUgdGhl IGN1cnJlbnQgc2V0dXAuCiAgKi8KLXN0YXRpYyB2b2lkIF9faW5pdCBhdG1lbF9jb25zb2xlX2dl dF9vcHRpb25zKHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQsIGludCAqYmF1ZCwgaW50ICpwYXJpdHks IGludCAqYml0cykKK3N0YXRpYyB2b2lkIF9faW5pdCBhdG1lbF9jb25zb2xlX2dldF9vcHRpb25z KHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQsIGludCAqYmF1ZCwKKwkJCQkJICAgICBpbnQgKnBhcml0 eSwgaW50ICpiaXRzKQogewogCXVuc2lnbmVkIGludCBtciwgcXVvdDsKIAotLy8gVE9ETzogQ1Ig aXMgYSB3cml0ZS1vbmx5IHJlZ2lzdGVyCi0vLwl1bnNpZ25lZCBpbnQgY3I7CisvKiBUT0RPOiBD UiBpcyBhIHdyaXRlLW9ubHkgcmVnaXN0ZXIKKy8vICAgICAgdW5zaWduZWQgaW50IGNyOwogLy8K LS8vCWNyID0gVUFSVF9HRVRfQ1IocG9ydCkgJiAoQVRNRUxfVVNfUlhFTiB8IEFUTUVMX1VTX1RY RU4pOwotLy8JaWYgKGNyID09IChBVE1FTF9VU19SWEVOIHwgQVRNRUxfVVNfVFhFTikpIHsKLS8v CQkvKiBvaywgdGhlIHBvcnQgd2FzIGVuYWJsZWQgKi8KLS8vCX0KKy8vICAgICAgY3IgPSBVQVJU X0dFVF9DUihwb3J0KSAmIChBVE1FTF9VU19SWEVOIHwgQVRNRUxfVVNfVFhFTik7CisvLyAgICAg IGlmIChjciA9PSAoQVRNRUxfVVNfUlhFTiB8IEFUTUVMX1VTX1RYRU4pKSB7CisvLyAgICAgICAg ICAgICAgLyAqIG9rLCB0aGUgcG9ydCB3YXMgZW5hYmxlZCAqIC8KKy8vICAgICAgfSovCiAKIAlt ciA9IFVBUlRfR0VUX01SKHBvcnQpICYgQVRNRUxfVVNfQ0hSTDsKIAlpZiAobXIgPT0gQVRNRUxf VVNfQ0hSTF84KQpAQCAtODQ1LDEwICs4ODUsMTAgQEAgc3RhdGljIGludCBfX2luaXQgYXRtZWxf Y29uc29sZV9zZXR1cChzdAogCWludCBwYXJpdHkgPSAnbic7CiAJaW50IGZsb3cgPSAnbic7CiAK LQlpZiAocG9ydC0+bWVtYmFzZSA9PSAwKQkJLyogUG9ydCBub3QgaW5pdGlhbGl6ZWQgeWV0IC0g ZGVsYXkgc2V0dXAgKi8KKwlpZiAocG9ydC0+bWVtYmFzZSA9PSAwKQkvKiBQb3J0IG5vdCBpbml0 aWFsaXplZCB5ZXQgLSBkZWxheSBzZXR1cCAqLwogCQlyZXR1cm4gLUVOT0RFVjsKIAotCVVBUlRf UFVUX0lEUihwb3J0LCAtMSk7CQkJCS8qIGRpc2FibGUgaW50ZXJydXB0cyAqLworCVVBUlRfUFVU X0lEUihwb3J0LCAtMSk7CS8qIGRpc2FibGUgaW50ZXJydXB0cyAqLwogCVVBUlRfUFVUX0NSKHBv cnQsIEFUTUVMX1VTX1JTVFNUQSB8IEFUTUVMX1VTX1JTVFJYKTsKIAlVQVJUX1BVVF9DUihwb3J0 LCBBVE1FTF9VU19UWEVOIHwgQVRNRUxfVVNfUlhFTik7CiAKQEAgLTg2MywxMyArOTAzLDEzIEBA IHN0YXRpYyBpbnQgX19pbml0IGF0bWVsX2NvbnNvbGVfc2V0dXAoc3QKIHN0YXRpYyBzdHJ1Y3Qg dWFydF9kcml2ZXIgYXRtZWxfdWFydDsKIAogc3RhdGljIHN0cnVjdCBjb25zb2xlIGF0bWVsX2Nv bnNvbGUgPSB7Ci0JLm5hbWUJCT0gQVRNRUxfREVWSUNFTkFNRSwKLQkud3JpdGUJCT0gYXRtZWxf Y29uc29sZV93cml0ZSwKLQkuZGV2aWNlCQk9IHVhcnRfY29uc29sZV9kZXZpY2UsCi0JLnNldHVw CQk9IGF0bWVsX2NvbnNvbGVfc2V0dXAsCi0JLmZsYWdzCQk9IENPTl9QUklOVEJVRkZFUiwKLQku aW5kZXgJCT0gLTEsCi0JLmRhdGEJCT0gJmF0bWVsX3VhcnQsCisJLm5hbWUJPSBBVE1FTF9ERVZJ Q0VOQU1FLAorCS53cml0ZQk9IGF0bWVsX2NvbnNvbGVfd3JpdGUsCisJLmRldmljZQk9IHVhcnRf Y29uc29sZV9kZXZpY2UsCisJLnNldHVwCT0gYXRtZWxfY29uc29sZV9zZXR1cCwKKwkuZmxhZ3MJ PSBDT05fUFJJTlRCVUZGRVIsCisJLmluZGV4CT0gLTEsCisJLmRhdGEJPSAmYXRtZWxfdWFydCwK IH07CiAKICNkZWZpbmUgQVRNRUxfQ09OU09MRV9ERVZJQ0UJJmF0bWVsX2NvbnNvbGUKQEAgLTg4 MCwxMyArOTIwLDE3IEBAIHN0YXRpYyBzdHJ1Y3QgY29uc29sZSBhdG1lbF9jb25zb2xlID0gewog c3RhdGljIGludCBfX2luaXQgYXRtZWxfY29uc29sZV9pbml0KHZvaWQpCiB7CiAJaWYgKGF0bWVs X2RlZmF1bHRfY29uc29sZV9kZXZpY2UpIHsKLQkJYWRkX3ByZWZlcnJlZF9jb25zb2xlKEFUTUVM X0RFVklDRU5BTUUsIGF0bWVsX2RlZmF1bHRfY29uc29sZV9kZXZpY2UtPmlkLCBOVUxMKTsKLQkJ YXRtZWxfaW5pdF9wb3J0KCYoYXRtZWxfcG9ydHNbYXRtZWxfZGVmYXVsdF9jb25zb2xlX2Rldmlj ZS0+aWRdKSwgYXRtZWxfZGVmYXVsdF9jb25zb2xlX2RldmljZSk7CisJCWFkZF9wcmVmZXJyZWRf Y29uc29sZShBVE1FTF9ERVZJQ0VOQU1FLAorCQkJCSAgICAgIGF0bWVsX2RlZmF1bHRfY29uc29s ZV9kZXZpY2UtPmlkLCBOVUxMKTsKKwkJYXRtZWxfaW5pdF9wb3J0KAorCQkJICAgICAgJihhdG1l bF9wb3J0c1thdG1lbF9kZWZhdWx0X2NvbnNvbGVfZGV2aWNlLT5pZF0pLAorCQkJICAgICAgYXRt ZWxfZGVmYXVsdF9jb25zb2xlX2RldmljZSk7CiAJCXJlZ2lzdGVyX2NvbnNvbGUoJmF0bWVsX2Nv bnNvbGUpOwogCX0KIAogCXJldHVybiAwOwogfQorCiBjb25zb2xlX2luaXRjYWxsKGF0bWVsX2Nv bnNvbGVfaW5pdCk7CiAKIC8qCkBAIC04OTQsMTEgKzkzOCwxMyBAQCBjb25zb2xlX2luaXRjYWxs KGF0bWVsX2NvbnNvbGVfaW5pdCk7CiAgKi8KIHN0YXRpYyBpbnQgX19pbml0IGF0bWVsX2xhdGVf Y29uc29sZV9pbml0KHZvaWQpCiB7Ci0JaWYgKGF0bWVsX2RlZmF1bHRfY29uc29sZV9kZXZpY2Ug JiYgIShhdG1lbF9jb25zb2xlLmZsYWdzICYgQ09OX0VOQUJMRUQpKQorCWlmIChhdG1lbF9kZWZh dWx0X2NvbnNvbGVfZGV2aWNlCisJICAgICYmICEoYXRtZWxfY29uc29sZS5mbGFncyAmIENPTl9F TkFCTEVEKSkKIAkJcmVnaXN0ZXJfY29uc29sZSgmYXRtZWxfY29uc29sZSk7CiAKIAlyZXR1cm4g MDsKIH0KKwogY29yZV9pbml0Y2FsbChhdG1lbF9sYXRlX2NvbnNvbGVfaW5pdCk7CiAKICNlbHNl CkBAIC05MDYsMjIgKzk1MiwyNCBAQCBjb3JlX2luaXRjYWxsKGF0bWVsX2xhdGVfY29uc29sZV9p bml0KTsKICNlbmRpZgogCiBzdGF0aWMgc3RydWN0IHVhcnRfZHJpdmVyIGF0bWVsX3VhcnQgPSB7 Ci0JLm93bmVyCQkJPSBUSElTX01PRFVMRSwKLQkuZHJpdmVyX25hbWUJCT0gImF0bWVsX3Nlcmlh bCIsCi0JLmRldl9uYW1lCQk9IEFUTUVMX0RFVklDRU5BTUUsCi0JLm1ham9yCQkJPSBTRVJJQUxf QVRNRUxfTUFKT1IsCi0JLm1pbm9yCQkJPSBNSU5PUl9TVEFSVCwKLQkubnIJCQk9IEFUTUVMX01B WF9VQVJULAotCS5jb25zCQkJPSBBVE1FTF9DT05TT0xFX0RFVklDRSwKKwkub3duZXIJCT0gVEhJ U19NT0RVTEUsCisJLmRyaXZlcl9uYW1lCT0gImF0bWVsX3NlcmlhbCIsCisJLmRldl9uYW1lCT0g QVRNRUxfREVWSUNFTkFNRSwKKwkubWFqb3IJCT0gU0VSSUFMX0FUTUVMX01BSk9SLAorCS5taW5v cgkJPSBNSU5PUl9TVEFSVCwKKwkubnIJCT0gQVRNRUxfTUFYX1VBUlQsCisJLmNvbnMJCT0gQVRN RUxfQ09OU09MRV9ERVZJQ0UsCiB9OwogCiAjaWZkZWYgQ09ORklHX1BNCi1zdGF0aWMgaW50IGF0 bWVsX3NlcmlhbF9zdXNwZW5kKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHBtX21lc3Nh Z2VfdCBzdGF0ZSkKK3N0YXRpYyBpbnQgYXRtZWxfc2VyaWFsX3N1c3BlbmQoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldiwKKwkJCQlwbV9tZXNzYWdlX3Qgc3RhdGUpCiB7CiAJc3RydWN0IHVh cnRfcG9ydCAqcG9ydCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwotCXN0cnVjdCBhdG1l bF91YXJ0X3BvcnQgKmF0bWVsX3BvcnQgPSAoc3RydWN0IGF0bWVsX3VhcnRfcG9ydCAqKSBwb3J0 OworCXN0cnVjdCBhdG1lbF91YXJ0X3BvcnQgKmF0bWVsX3BvcnQgPSAoc3RydWN0IGF0bWVsX3Vh cnRfcG9ydCAqKXBvcnQ7CiAKLQlpZiAoZGV2aWNlX21heV93YWtldXAoJnBkZXYtPmRldikgJiYg IWF0OTFfc3VzcGVuZF9lbnRlcmluZ19zbG93X2Nsb2NrKCkpCisJaWYgKGRldmljZV9tYXlfd2Fr ZXVwKCZwZGV2LT5kZXYpCisJICAgICYmICFhdDkxX3N1c3BlbmRfZW50ZXJpbmdfc2xvd19jbG9j aygpKQogCQllbmFibGVfaXJxX3dha2UocG9ydC0+aXJxKTsKIAllbHNlIHsKIAkJdWFydF9zdXNw ZW5kX3BvcnQoJmF0bWVsX3VhcnQsIHBvcnQpOwpAQCAtOTM0LDEzICs5ODIsMTIgQEAgc3RhdGlj IGludCBhdG1lbF9zZXJpYWxfc3VzcGVuZChzdHJ1Y3QgcAogc3RhdGljIGludCBhdG1lbF9zZXJp YWxfcmVzdW1lKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0IHVhcnRf cG9ydCAqcG9ydCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwotCXN0cnVjdCBhdG1lbF91 YXJ0X3BvcnQgKmF0bWVsX3BvcnQgPSAoc3RydWN0IGF0bWVsX3VhcnRfcG9ydCAqKSBwb3J0Owor CXN0cnVjdCBhdG1lbF91YXJ0X3BvcnQgKmF0bWVsX3BvcnQgPSAoc3RydWN0IGF0bWVsX3VhcnRf cG9ydCAqKXBvcnQ7CiAKIAlpZiAoYXRtZWxfcG9ydC0+c3VzcGVuZGVkKSB7CiAJCXVhcnRfcmVz dW1lX3BvcnQoJmF0bWVsX3VhcnQsIHBvcnQpOwogCQlhdG1lbF9wb3J0LT5zdXNwZW5kZWQgPSAw OwotCX0KLQllbHNlCisJfSBlbHNlCiAJCWRpc2FibGVfaXJxX3dha2UocG9ydC0+aXJxKTsKIAog CXJldHVybiAwOwpAQCAtOTcwLDcgKzEwMTcsNyBAQCBzdGF0aWMgaW50IF9fZGV2aW5pdCBhdG1l bF9zZXJpYWxfcHJvYmUoCiBzdGF0aWMgaW50IF9fZGV2ZXhpdCBhdG1lbF9zZXJpYWxfcmVtb3Zl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0IHVhcnRfcG9ydCAqcG9y dCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwotCXN0cnVjdCBhdG1lbF91YXJ0X3BvcnQg KmF0bWVsX3BvcnQgPSAoc3RydWN0IGF0bWVsX3VhcnRfcG9ydCAqKSBwb3J0OworCXN0cnVjdCBh dG1lbF91YXJ0X3BvcnQgKmF0bWVsX3BvcnQgPSAoc3RydWN0IGF0bWVsX3VhcnRfcG9ydCAqKXBv cnQ7CiAJaW50IHJldCA9IDA7CiAKIAljbGtfZGlzYWJsZShhdG1lbF9wb3J0LT5jbGspOwo= ------=_Part_12543_26657929.1197577972400 Content-Type: text/x-patch; name=atmel_serial_irq_splitup_no_at91.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fa5q4lqe Content-Disposition: attachment; filename=atmel_serial_irq_splitup_no_at91.patch VGhpcyBwYXRjaCBzcGxpdHMgdXAgdGhlIGludGVycnVwdCBoYW5kbGVyIG9mIHRoZSBzZXJpYWwg cG9ydAppbnRvIGEgaW50ZXJydXB0IHRvcC1oYWxmIGFuZCBzb21lIHRhc2tsZXRzLgoKVGhlIGdv YWwgaXMgdG8gZ2V0IHRoZSBpbnRlcnJ1cHQgdG9wLWhhbGYgYXMgc2hvcnQgYXMgcG9zc2libGUg dG8KbWluaW1pemUgbGF0ZW5jaWVzIG9uIGludGVycnVwdHMuIEJ1dCB0aGUgb2xkIGNvZGUgYWxz byBkb2VzIHNvbWUKY2FsbHMgaW4gdGhlIGludGVycnVwdCBoYW5kbGVyIHRoYXQgYXJlIG5vdCBh bGxvd2VkIG9uIHByZWVtcHQtUlQKaW4gSVJRRl9OT0RFTEFZIGNvbnRleHQuIFRoaXMgaGFuZGxl ciBpcyBleGVjdXRlZCBpbiB0aGlzIGNvbnRleHQKYmVjYXVzZSBvZiB0aGUgaW50ZXJydXB0IHNo YXJpbmcgd2l0aCB0aGUgdGltZXIgaW50ZXJydXB0LgpUaGUgdGltZXIgaW50ZXJydXB0IG9uIFBy ZWVtcHQtUlQgcnVucyBpbiBJUlFGX05PREVMQVkgY29udGV4dC4KCjIgdGFza2xldHMgYXJlIHVz ZWQ6Ciogb25lIGZvciBoYW5kbGluZyB0aGUgZXJyb3Igc3RhdHVzZXMKKiBvbmUgZm9yIHB1c2hp bmcgdGhlIGluY29taW5nIGNoYXJhY3RlcnMgaW50byB0aGUgdHR5LWxheWVyLgoKVGhlIFRyYW5z bWl0IHBhdGggd2FzIElSUUZfTk9ERUxBWSBzYWZlIGJ5IGl0c2VsZiwgYW5kIGlzIG5vdCBhZGFw dGVkLgpUaGUgcmVhZCBwYXRoIGZvciBETUEoUERDKSBpcyBhbHNvIG5vdCBhZGFwdGVkLCBiZWNh dXNlIHRoYXQgY29kZQpkb2VzIG5vdCBydW4gaW4gSVJRRl9OT0RFTEFZIGNvbnRleHQgZHVlIHRv IGlycS1zaGFyaW5nLiBUaGUgREJHVSAKd2hpY2ggaXMgc2hhcmVkIHdpdGggdGhlIHRpbWVyLWly cSBkb2VzIG5vdCB3b3JrIHdpdGggRE1BLCBzbyAKdGhlcmVmb3IgdGhpcyBpcyBubyBwcm9ibGVt LgoKUmVhZGluZyB0aGUgY29tcGxldGUgcmVjZWl2ZSBxdWV1ZSBpcyBzdGlsbCBkb25lIGluIHRo ZSB0b3AtaGFsZgpiZWNhdXNlIHdlIG5ldmVyIHdhbnQgdG8gbWlzcyBhbnkgaW5jb21pbmcgY2hh cmFjdGVyLgoKVGhpcyBwYXRjaCBkZW1hbmRzIHRoZSBmb2xsb3dpbmcgcGF0Y2hlcyB0byBiZSBp bnN0YWxsZWQgZmlyc3Q6CiogYXRtZWxfc2VyaWFsX2NsZWFudXAucGF0Y2gKClNpZ25lZC1vZmYt Ynk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotLS0KIGRyaXZlcnMvc2VyaWFsL2F0 bWVsX3NlcmlhbC5jIHwgIDE1MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMzMgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0p CgpJbmRleDogbGludXgtMi42LjIzL2RyaXZlcnMvc2VyaWFsL2F0bWVsX3NlcmlhbC5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGxpbnV4LTIuNi4yMy5vcmlnL2RyaXZlcnMvc2VyaWFsL2F0bWVsX3NlcmlhbC5j CTIwMDctMTItMTMgMTc6MzA6NDguMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuMjMvZHJp dmVycy9zZXJpYWwvYXRtZWxfc2VyaWFsLmMJMjAwNy0xMi0xMyAxNzozMjoxMi4wMDAwMDAwMDAg KzAxMDAKQEAgLTExMSw2ICsxMTEsMjIgQEAKIHN0YXRpYyBpbnQgKCphdG1lbF9vcGVuX2hvb2sp IChzdHJ1Y3QgdWFydF9wb3J0ICopOwogc3RhdGljIHZvaWQgKCphdG1lbF9jbG9zZV9ob29rKSAo c3RydWN0IHVhcnRfcG9ydCAqKTsKIAorc3RydWN0IGF0bWVsX3VhcnRfY2hhciB7CisJdW5zaWdu ZWQgaW50IHN0YXR1czsKKwl1bnNpZ25lZCBpbnQgb3ZlcnJ1bjsKKwl1bnNpZ25lZCBpbnQgY2g7 CisJdW5zaWduZWQgaW50IGZsZzsKK307CisKKyNkZWZpbmUgQVRNRUxfU0VSSUFMX1JJTkdTSVpF IDEwMjQKKworc3RydWN0IGF0bWVsX3VhcnRfcmluZyB7CisJdW5zaWduZWQgaW50ICAgICAgICAg IGhlYWQ7CisJdW5zaWduZWQgaW50ICAgICAgICAgIHRhaWw7CisJdW5zaWduZWQgaW50ICAgICAg ICAgIGNvdW50OworCXN0cnVjdCBhdG1lbF91YXJ0X2NoYXIgZGF0YVtBVE1FTF9TRVJJQUxfUklO R1NJWkVdOworfTsKKwogLyoKICAqIFdlIHdyYXAgb3VyIHBvcnQgc3RydWN0dXJlIGFyb3VuZCB0 aGUgZ2VuZXJpYyB1YXJ0X3BvcnQuCiAgKi8KQEAgLTExOSw2ICsxMzUsMTMgQEAgc3RydWN0IGF0 bWVsX3VhcnRfcG9ydCB7CiAJc3RydWN0IGNsayAJIAkqY2xrOwkJLyogdWFydCBjbG9jayAqLwog CXVuc2lnbmVkIHNob3J0IAkJc3VzcGVuZGVkOwkvKiBpcyBwb3J0IHN1c3BlbmRlZD8gKi8KIAlp bnQgCQkJYnJlYWtfYWN0aXZlOwkvKiBicmVhayBiZWluZyByZWNlaXZlZCAqLworCisJc3RydWN0 IHRhc2tsZXRfc3RydWN0ICAgcnhfdGFzazsKKwlzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgICBzdGF0 dXNfdGFzazsKKwl1bnNpZ25lZCBpbnQgCQlpcnFfcGVuZGluZzsKKwl1bnNpZ25lZCBpbnQgCQlp cnFfc3RhdHVzOworCisJc3RydWN0IGF0bWVsX3VhcnRfcmluZyAgcnhfcmluZzsKIH07CiAKIHN0 YXRpYyBzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0IGF0bWVsX3BvcnRzW0FUTUVMX01BWF9VQVJUXTsK QEAgLTI0OSwxMiArMjcyLDQxIEBAIHN0YXRpYyB2b2lkIGF0bWVsX2JyZWFrX2N0bChzdHJ1Y3Qg dWFydF8KIH0KIAogLyoKKyAqIFN0b3JlcyB0aGUgaW5jb21pbmcgY2hhcmFjdGVyIGluIHRoZSBy aW5nIGJ1ZmZlcgorICovCitzdGF0aWMgdm9pZAorYXRtZWxfYnVmZmVyX3J4X2NoYXIoc3RydWN0 IHVhcnRfcG9ydCAqcG9ydCwgdW5zaWduZWQgaW50IHN0YXR1cywKKwkJICAgICB1bnNpZ25lZCBp bnQgb3ZlcnJ1biwgICB1bnNpZ25lZCBpbnQgY2gsCisJCSAgICAgdW5zaWduZWQgaW50IGZsZykK K3sKKwlzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICphdG1lbF9wb3J0ID0gKHN0cnVjdCBhdG1lbF91 YXJ0X3BvcnQgKilwb3J0OworCXN0cnVjdCBhdG1lbF91YXJ0X3JpbmcgKnJpbmcgPSAmYXRtZWxf cG9ydC0+cnhfcmluZzsKKwlzdHJ1Y3QgYXRtZWxfdWFydF9jaGFyICpjOworCisJc3Bpbl9sb2Nr KCZwb3J0LT5sb2NrKTsKKworCWlmIChyaW5nLT5jb3VudCA9PSBBVE1FTF9TRVJJQUxfUklOR1NJ WkUpCisJCWdvdG8gb3V0OyAvKiBCdWZmZXIgb3ZlcmZsb3csIGlnbm9yZSBjaGFyICovCisKKwlj ID0gJnJpbmctPmRhdGFbcmluZy0+aGVhZF07CisJYy0+c3RhdHVzICA9IHN0YXR1czsKKwljLT5v dmVycnVuID0gb3ZlcnJ1bjsKKwljLT5jaCAgICAgID0gY2g7CisJYy0+ZmxnICAgICA9IGZsZzsK KworCXJpbmctPmhlYWQrKzsKKwlyaW5nLT5oZWFkICU9IEFUTUVMX1NFUklBTF9SSU5HU0laRTsK KwlyaW5nLT5jb3VudCsrOworb3V0OgorCXNwaW5fdW5sb2NrKCZwb3J0LT5sb2NrKTsKK30KKwor LyoKICAqIENoYXJhY3RlcnMgcmVjZWl2ZWQgKGNhbGxlZCBmcm9tIGludGVycnVwdCBoYW5kbGVy KQogICovCiBzdGF0aWMgdm9pZCBhdG1lbF9yeF9jaGFycyhzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0 KQogewogCXN0cnVjdCBhdG1lbF91YXJ0X3BvcnQgKmF0bWVsX3BvcnQgPSAoc3RydWN0IGF0bWVs X3VhcnRfcG9ydCAqKXBvcnQ7Ci0Jc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSA9IHBvcnQtPmluZm8t PnR0eTsKIAl1bnNpZ25lZCBpbnQgc3RhdHVzLCBjaCwgZmxnOwogCiAJc3RhdHVzID0gVUFSVF9H RVRfQ1NSKHBvcnQpOwpAQCAtMzE1LDEzICszNjcsMTMgQEAgc3RhdGljIHZvaWQgYXRtZWxfcnhf Y2hhcnMoc3RydWN0IHVhcnRfcAogCQlpZiAodWFydF9oYW5kbGVfc3lzcnFfY2hhcihwb3J0LCBj aCkpCiAJCQlnb3RvIGlnbm9yZV9jaGFyOwogCi0JCXVhcnRfaW5zZXJ0X2NoYXIocG9ydCwgc3Rh dHVzLCBBVE1FTF9VU19PVlJFLCBjaCwgZmxnKTsKKwkJYXRtZWxfYnVmZmVyX3J4X2NoYXIocG9y dCwgc3RhdHVzLCBBVE1FTF9VU19PVlJFLCBjaCwgZmxnKTsKIAogaWdub3JlX2NoYXI6CiAJCXN0 YXR1cyA9IFVBUlRfR0VUX0NTUihwb3J0KTsKIAl9CiAKLQl0dHlfZmxpcF9idWZmZXJfcHVzaCh0 dHkpOworCXRhc2tsZXRfc2NoZWR1bGUoJmF0bWVsX3BvcnQtPnJ4X3Rhc2spOwogfQogCiAvKgpA QCAtMzgwLDcgKzQzMiw3IEBAIHN0YXRpYyB2b2lkIGF0bWVsX2hhbmRsZV9yZWNlaXZlKHN0cnVj dCAKIH0KIAogLyoKLSAqIHRyYW5zbWl0IGludGVycnVwdCBoYW5kbGVyLgorICogdHJhbnNtaXQg aW50ZXJydXB0IGhhbmRsZXIuIChUcmFuc21pdCBpcyBJUlFGX05PREVMQVkgc2FmZSkKICAqLwog c3RhdGljIHZvaWQgYXRtZWxfaGFuZGxlX3RyYW5zbWl0KHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQs IHVuc2lnbmVkIGludCBwZW5kaW5nKQogewpAQCAtMzk1LDE5ICs0NDcsMTYgQEAgc3RhdGljIHZv aWQgYXRtZWxfaGFuZGxlX3RyYW5zbWl0KHN0cnVjdAogc3RhdGljIHZvaWQgYXRtZWxfaGFuZGxl X3N0YXR1cyhzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0LCB1bnNpZ25lZCBpbnQgcGVuZGluZywKIAkJ CQl1bnNpZ25lZCBpbnQgc3RhdHVzKQogewotCS8qIFRPRE86IEFsbCByZWFkcyB0byBDU1Igd2ls bCBjbGVhciB0aGVzZSBpbnRlcnJ1cHRzISAqLwotCWlmIChwZW5kaW5nICYgQVRNRUxfVVNfUklJ QykKLQkJcG9ydC0+aWNvdW50LnJuZysrOwotCWlmIChwZW5kaW5nICYgQVRNRUxfVVNfRFNSSUMp Ci0JCXBvcnQtPmljb3VudC5kc3IrKzsKLQlpZiAocGVuZGluZyAmIEFUTUVMX1VTX0RDRElDKQot CQl1YXJ0X2hhbmRsZV9kY2RfY2hhbmdlKHBvcnQsICEoc3RhdHVzICYgQVRNRUxfVVNfRENEKSk7 Ci0JaWYgKHBlbmRpbmcgJiBBVE1FTF9VU19DVFNJQykKLQkJdWFydF9oYW5kbGVfY3RzX2NoYW5n ZShwb3J0LCAhKHN0YXR1cyAmIEFUTUVMX1VTX0NUUykpOwotCWlmIChwZW5kaW5nICYKLQkJKEFU TUVMX1VTX1JJSUMgfCBBVE1FTF9VU19EU1JJQyB8IEFUTUVMX1VTX0RDRElDIHwKLQkJQVRNRUxf VVNfQ1RTSUMpKQotCQl3YWtlX3VwX2ludGVycnVwdGlibGUoJnBvcnQtPmluZm8tPmRlbHRhX21z cl93YWl0KTsKKwlzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICphdG1lbF9wb3J0ID0gKHN0cnVjdCBh dG1lbF91YXJ0X3BvcnQgKilwb3J0OworCisJc3Bpbl9sb2NrKCZwb3J0LT5sb2NrKTsKKworCWF0 bWVsX3BvcnQtPmlycV9wZW5kaW5nID0gcGVuZGluZzsKKwlhdG1lbF9wb3J0LT5pcnFfc3RhdHVz ICA9IHN0YXR1czsKKworCXNwaW5fdW5sb2NrKCZwb3J0LT5sb2NrKTsKKworCXRhc2tsZXRfc2No ZWR1bGUoJmF0bWVsX3BvcnQtPnN0YXR1c190YXNrKTsKIH0KIAogLyoKQEAgLTQzNSw2ICs0ODQs NjYgQEAgc3RhdGljIGlycXJldHVybl90IGF0bWVsX2ludGVycnVwdChpbnQgaQogfQogCiAvKgor ICogdGFza2xldCBoYW5kbGluZyB0dHkgc3R1ZmYgb3V0c2lkZSB0aGUgaW50ZXJydXB0IGhhbmRs ZXIuCisgKi8KK3N0YXRpYyB2b2lkIGF0bWVsX3J4X2hhbmRsZXJfdGFzayh1bnNpZ25lZCBsb25n IGRhdGEpCit7CisJc3RydWN0IHVhcnRfcG9ydCAqcG9ydCA9IChzdHJ1Y3QgdWFydF9wb3J0ICop ZGF0YTsKKwlzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICphdG1lbF9wb3J0ID0gKHN0cnVjdCBhdG1l bF91YXJ0X3BvcnQgKilwb3J0OworCXN0cnVjdCBhdG1lbF91YXJ0X3JpbmcgKnJpbmcgPSAmYXRt ZWxfcG9ydC0+cnhfcmluZzsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2NrX2ly cXNhdmUoJnBvcnQtPmxvY2ssIGZsYWdzKTsKKworCXdoaWxlIChyaW5nLT5jb3VudCkgeworCQlz dHJ1Y3QgYXRtZWxfdWFydF9jaGFyIGMgPSByaW5nLT5kYXRhW3JpbmctPnRhaWxdOworCisJCXJp bmctPnRhaWwrKzsKKwkJcmluZy0+dGFpbCAlPSBBVE1FTF9TRVJJQUxfUklOR1NJWkU7CisJCXJp bmctPmNvdW50LS07CisKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcG9ydC0+bG9jaywgZmxh Z3MpOworCisJCXVhcnRfaW5zZXJ0X2NoYXIocG9ydCwgYy5zdGF0dXMsIGMub3ZlcnJ1biwgYy5j aCwgYy5mbGcpOworCisJCXNwaW5fbG9ja19pcnFzYXZlKCZwb3J0LT5sb2NrLCBmbGFncyk7CisJ fQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcG9ydC0+bG9jaywgZmxhZ3MpOworCisJdHR5 X2ZsaXBfYnVmZmVyX3B1c2gocG9ydC0+aW5mby0+dHR5KTsKK30KKworc3RhdGljIHZvaWQgYXRt ZWxfc3RhdHVzX2hhbmRsZXJfdGFzayh1bnNpZ25lZCBsb25nIGRhdGEpCit7CisJc3RydWN0IHVh cnRfcG9ydCAqcG9ydCA9IChzdHJ1Y3QgdWFydF9wb3J0ICopZGF0YTsKKwlzdHJ1Y3QgYXRtZWxf dWFydF9wb3J0ICphdG1lbF9wb3J0ID0gKHN0cnVjdCBhdG1lbF91YXJ0X3BvcnQgKilwb3J0Owor CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJdW5zaWduZWQgaW50IHBlbmRpbmcsIHN0YXR1czsKKwor CXNwaW5fbG9ja19pcnFzYXZlKCZwb3J0LT5sb2NrLCBmbGFncyk7CisKKwlwZW5kaW5nID0gYXRt ZWxfcG9ydC0+aXJxX3BlbmRpbmc7CisJc3RhdHVzID0gYXRtZWxfcG9ydC0+aXJxX3N0YXR1czsK KworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBvcnQtPmxvY2ssIGZsYWdzKTsKKworCS8qIFRP RE86IEFsbCByZWFkcyB0byBDU1Igd2lsbCBjbGVhciB0aGVzZSBpbnRlcnJ1cHRzISAqLworCWlm IChwZW5kaW5nICYgQVRNRUxfVVNfUklJQykKKwkJcG9ydC0+aWNvdW50LnJuZysrOworCWlmIChw ZW5kaW5nICYgQVRNRUxfVVNfRFNSSUMpCisJCXBvcnQtPmljb3VudC5kc3IrKzsKKwlpZiAocGVu ZGluZyAmIEFUTUVMX1VTX0RDRElDKQorCQl1YXJ0X2hhbmRsZV9kY2RfY2hhbmdlKHBvcnQsICEo c3RhdHVzICYgQVRNRUxfVVNfRENEKSk7CisJaWYgKHBlbmRpbmcgJiBBVE1FTF9VU19DVFNJQykK KwkJdWFydF9oYW5kbGVfY3RzX2NoYW5nZShwb3J0LCAhKHN0YXR1cyAmIEFUTUVMX1VTX0NUUykp OworCWlmIChwZW5kaW5nICYKKwkJKEFUTUVMX1VTX1JJSUMgfCBBVE1FTF9VU19EU1JJQyB8IEFU TUVMX1VTX0RDRElDIHwKKwkJQVRNRUxfVVNfQ1RTSUMpKQorCQl3YWtlX3VwX2ludGVycnVwdGli bGUoJnBvcnQtPmluZm8tPmRlbHRhX21zcl93YWl0KTsKK30KKworLyoKICAqIFBlcmZvcm0gaW5p dGlhbGl6YXRpb24gYW5kIGVuYWJsZSBwb3J0IGZvciByZWNlcHRpb24KICAqLwogc3RhdGljIGlu dCBhdG1lbF9zdGFydHVwKHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQpCkBAIC03NjcsNiArODc2LDEz IEBAIHN0YXRpYyB2b2lkIF9fZGV2aW5pdCBhdG1lbF9pbml0X3BvcnQoc3QKIAlwb3J0LT5tYXBi YXNlCT0gcGRldi0+cmVzb3VyY2VbMF0uc3RhcnQ7CiAJcG9ydC0+aXJxCT0gcGRldi0+cmVzb3Vy Y2VbMV0uc3RhcnQ7CiAKKwl0YXNrbGV0X2luaXQoJmF0bWVsX3BvcnQtPnJ4X3Rhc2ssIGF0bWVs X3J4X2hhbmRsZXJfdGFzaywKKwkJCSh1bnNpZ25lZCBsb25nKXBvcnQpOworCXRhc2tsZXRfaW5p dCgmYXRtZWxfcG9ydC0+c3RhdHVzX3Rhc2ssIGF0bWVsX3N0YXR1c19oYW5kbGVyX3Rhc2ssCisJ CQkodW5zaWduZWQgbG9uZylwb3J0KTsKKworCW1lbXNldCgmYXRtZWxfcG9ydC0+cnhfcmluZywg MCwgc2l6ZW9mKGF0bWVsX3BvcnQtPnJ4X3JpbmcpKTsKKwogCWlmIChkYXRhLT5yZWdzKQogCQkv KiBBbHJlYWR5IG1hcHBlZCBieSBzZXR1cCBjb2RlICovCiAJCXBvcnQtPm1lbWJhc2UgPSBkYXRh LT5yZWdzOwo= ------=_Part_12543_26657929.1197577972400 Content-Type: text/x-patch; name=atmel_serial_irqf_nodelay.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fa5q4q21 Content-Disposition: attachment; filename=atmel_serial_irqf_nodelay.patch T24gUFJFRU1QVC1SVCB3ZSBtYXkgbm90IGJsb2NrIG9uIGEgbm9ybWFsIHNwaW5sb2NrIGluIElS US9JUlFGX05PREVMQVktY29udGV4dC4KVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGJ5IG1ha2luZyB0 aGUgbG9jayBhIHJhd19zcGlubG9ja190IGZvciB0aGUKQXRtZWwgc2VyaWFsIGNvbnNvbGUuCgpU aGlzIHBhdGNoIGRlbWFuZHMgdGhlIGZvbGxvd2luZyBwYXRjaGVzIHRvIGJlIGluc3RhbGxlZCBm aXJzdDoKKiBhdG1lbF9zZXJpYWxfY2xlYW51cC5wYXRjaAoqIGF0bWVsX3NlcmlhbF9pcnFfc3Bs aXR1cC5wYXRjaAoKU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+ Ci0tLQogaW5jbHVkZS9saW51eC9zZXJpYWxfY29yZS5oIHwgICAgNyArKysrKystCiAxIGZpbGUg Y2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpJbmRleDogbGludXgtMi42 LjIzL2luY2x1ZGUvbGludXgvc2VyaWFsX2NvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYu MjMub3JpZy9pbmNsdWRlL2xpbnV4L3NlcmlhbF9jb3JlLmgJMjAwNy0xMi0xMyAxMzozMToyNy4w MDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi4yMy9pbmNsdWRlL2xpbnV4L3NlcmlhbF9jb3Jl LmgJMjAwNy0xMi0xMyAxNjozMjoyMi4wMDAwMDAwMDAgKzAxMDAKQEAgLTIyNiw3ICsyMjYsMTIg QEAgc3RydWN0IHVhcnRfaWNvdW50IHsKIHR5cGVkZWYgdW5zaWduZWQgaW50IF9fYml0d2lzZV9f IHVwZl90OwogCiBzdHJ1Y3QgdWFydF9wb3J0IHsKLQlzcGlubG9ja190CQlsb2NrOwkJCS8qIHBv cnQgbG9jayAqLworCisjaWZkZWYgQ09ORklHX1NFUklBTF9BVE1FTAorCXJhd19zcGlubG9ja190 IAkJbG9jazsJCQkvKiBwb3J0IGxvY2sgKi8KKyNlbHNlCisJc3BpbmxvY2tfdCAJCWxvY2s7CQkJ LyogcG9ydCBsb2NrICovCisjZW5kaWYKIAl1bnNpZ25lZCBpbnQJCWlvYmFzZTsJCQkvKiBpbi9v dXRbYndsXSAqLwogCXVuc2lnbmVkIGNoYXIgX19pb21lbQkqbWVtYmFzZTsJCS8qIHJlYWQvd3Jp dGVbYndsXSAqLwogCXVuc2lnbmVkIGludAkJaXJxOwkJCS8qIGlycSBudW1iZXIgKi8K ------=_Part_12543_26657929.1197577972400--