From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Remy Bohmer" Subject: Re: [PATCH]: Atmel Serial Console interrupt handler splitup Date: Fri, 14 Dec 2007 12:46:09 +0100 Message-ID: <3efb10970712140346l1845d563k900d72d8788ac6f5@mail.gmail.com> References: <3efb10970712070724i6fa66666t2b8422329759ce24@mail.gmail.com> <3efb10970712121429l7b41d57md4f826f6aaf4b71@mail.gmail.com> <3efb10970712130840r7a2c5f72jca641d1cac545464@mail.gmail.com> <3efb10970712131232j5f747420g4aa8b5bd956e3dd3@mail.gmail.com> <3efb10970712131235t47a9ceb5y7d9a7d5023d07bf6@mail.gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_378_31411552.1197632769576" Cc: "Steven Rostedt" , RT , "ARM Linux Mailing List" To: "Andrew Victor" Return-path: Received: from py-out-1112.google.com ([64.233.166.178]:15116 "EHLO py-out-1112.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751459AbXLNLqR (ORCPT ); Fri, 14 Dec 2007 06:46:17 -0500 Received: by py-out-1112.google.com with SMTP id u77so1043022pyb.16 for ; Fri, 14 Dec 2007 03:46:11 -0800 (PST) In-Reply-To: <3efb10970712131235t47a9ceb5y7d9a7d5023d07bf6@mail.gmail.com> Sender: linux-rt-users-owner@vger.kernel.org List-ID: ------=_Part_378_31411552.1197632769576 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello Andrew, So, to come to a conclusion about this complex patch series, I attached all the latest versions to this mail. The latest patches from yesterday including inline are also included to make the set complete. So, this is the order in which the patches should be installed: 1) atmel_serial_cleanup.patch 2) atmel_serial_irq_splitup.patch 3) NEW: optional: add-atmel-serial-dma.patch, this merged the DMA code (from Chip Coldwell) in your 2.6.23 patch back on top of this series. Because the AT32 bug is not been fixed for a very long time, I do not expect it to be fixed soon, so I think a reordering is better to make preempt-RT work on AT91. 4) For RT only: atmel_serial_irqf_nodelay.patch can be applied anywhere after 1 and 2 Steven, for the RT-patch, patches 1,2 and 4 are the _only_ patches needed to make RT work stable on AT91 (based on 2.6.23.9-rt13), where I think that 1 and 2 should go to mainline during time. I tested this and it works properly, so we can, at least create a working/bootable preempt-RT system on AT91. Notice that without the other patches from Andrew the clock granularity is bound to 10ms. (Partly solved in 2.6.24-rc* by mainlining of the clocksource/events patches form David Brownell) If any of you have any comments, or suggestions, please let me know. Kind Regards, Remy Bohmer ------=_Part_378_31411552.1197632769576 Content-Type: text/x-patch; name=atmel_serial_cleanup.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fa6mqm0b Content-Disposition: attachment; filename=atmel_serial_cleanup.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_378_31411552.1197632769576 Content-Type: text/x-patch; name=atmel_serial_irq_splitup.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fa6mqn1u Content-Disposition: attachment; filename=atmel_serial_irq_splitup.patch VGhpcyBwYXRjaCBzcGxpdHMgdXAgdGhlIGludGVycnVwdCBoYW5kbGVyIG9mIHRoZSBzZXJpYWwg cG9ydAppbnRvIGEgaW50ZXJydXB0IHRvcC1oYWxmIGFuZCBzb21lIHRhc2tsZXRzLgoKVGhlIGdv YWwgaXMgdG8gZ2V0IHRoZSBpbnRlcnJ1cHQgdG9wLWhhbGYgYXMgc2hvcnQgYXMgcG9zc2libGUg dG8KbWluaW1pemUgbGF0ZW5jaWVzIG9uIGludGVycnVwdHMuIEJ1dCB0aGUgb2xkIGNvZGUgYWxz byBkb2VzIHNvbWUKY2FsbHMgaW4gdGhlIGludGVycnVwdCBoYW5kbGVyIHRoYXQgYXJlIG5vdCBh bGxvd2VkIG9uIHByZWVtcHQtUlQKaW4gSVJRRl9OT0RFTEFZIGNvbnRleHQuIFRoaXMgaGFuZGxl ciBpcyBleGVjdXRlZCBpbiB0aGlzIGNvbnRleHQKYmVjYXVzZSBvZiB0aGUgaW50ZXJydXB0IHNo YXJpbmcgd2l0aCB0aGUgdGltZXIgaW50ZXJydXB0LgpUaGUgdGltZXIgaW50ZXJydXB0IG9uIFBy ZWVtcHQtUlQgcnVucyBpbiBJUlFGX05PREVMQVkgY29udGV4dC4KCjIgdGFza2xldHMgYXJlIHVz ZWQ6Ciogb25lIGZvciBoYW5kbGluZyB0aGUgZXJyb3Igc3RhdHVzZXMKKiBvbmUgZm9yIHB1c2hp bmcgdGhlIGluY29taW5nIGNoYXJhY3RlcnMgaW50byB0aGUgdHR5LWxheWVyLgoKVGhlIFRyYW5z bWl0IHBhdGggd2FzIElSUUZfTk9ERUxBWSBzYWZlIGJ5IGl0c2VsZiwgYW5kIGlzIG5vdCBhZGFw dGVkLgpUaGUgcmVhZCBwYXRoIGZvciBETUEoUERDKSBpcyBhbHNvIG5vdCBhZGFwdGVkLCBiZWNh dXNlIHRoYXQgY29kZQpkb2VzIG5vdCBydW4gaW4gSVJRRl9OT0RFTEFZIGNvbnRleHQgZHVlIHRv IGlycS1zaGFyaW5nLiBUaGUgREJHVSAKd2hpY2ggaXMgc2hhcmVkIHdpdGggdGhlIHRpbWVyLWly cSBkb2VzIG5vdCB3b3JrIHdpdGggRE1BLCBzbyAKdGhlcmVmb3IgdGhpcyBpcyBubyBwcm9ibGVt LgoKUmVhZGluZyB0aGUgY29tcGxldGUgcmVjZWl2ZSBxdWV1ZSBpcyBzdGlsbCBkb25lIGluIHRo ZSB0b3AtaGFsZgpiZWNhdXNlIHdlIG5ldmVyIHdhbnQgdG8gbWlzcyBhbnkgaW5jb21pbmcgY2hh cmFjdGVyLgoKVGhpcyBwYXRjaCBkZW1hbmRzIHRoZSBmb2xsb3dpbmcgcGF0Y2hlcyB0byBiZSBp bnN0YWxsZWQgZmlyc3Q6CiogYXRtZWxfc2VyaWFsX2NsZWFudXAucGF0Y2gKClNpZ25lZC1vZmYt Ynk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotLS0KIGRyaXZlcnMvc2VyaWFsL2F0 bWVsX3NlcmlhbC5jIHwgIDE1MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMzMgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0p CgpJbmRleDogbGludXgtMi42LjIzLjEtcnQ1L2RyaXZlcnMvc2VyaWFsL2F0bWVsX3NlcmlhbC5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi4yMy4xLXJ0NS5vcmlnL2RyaXZlcnMvc2VyaWFsL2F0 bWVsX3NlcmlhbC5jCTIwMDctMTItMTMgMjE6MzM6MDguMDAwMDAwMDAwICswMTAwCisrKyBsaW51 eC0yLjYuMjMuMS1ydDUvZHJpdmVycy9zZXJpYWwvYXRtZWxfc2VyaWFsLmMJMjAwNy0xMi0xMyAy MTozMzoxMC4wMDAwMDAwMDAgKzAxMDAKQEAgLTExMSw2ICsxMTEsMjIgQEAKIHN0YXRpYyBpbnQg KCphdG1lbF9vcGVuX2hvb2spIChzdHJ1Y3QgdWFydF9wb3J0ICopOwogc3RhdGljIHZvaWQgKCph dG1lbF9jbG9zZV9ob29rKSAoc3RydWN0IHVhcnRfcG9ydCAqKTsKIAorc3RydWN0IGF0bWVsX3Vh cnRfY2hhciB7CisJdW5zaWduZWQgaW50IHN0YXR1czsKKwl1bnNpZ25lZCBpbnQgb3ZlcnJ1bjsK Kwl1bnNpZ25lZCBpbnQgY2g7CisJdW5zaWduZWQgaW50IGZsZzsKK307CisKKyNkZWZpbmUgQVRN RUxfU0VSSUFMX1JJTkdTSVpFIDEwMjQKKworc3RydWN0IGF0bWVsX3VhcnRfcmluZyB7CisJdW5z aWduZWQgaW50ICAgICAgICAgIGhlYWQ7CisJdW5zaWduZWQgaW50ICAgICAgICAgIHRhaWw7CisJ dW5zaWduZWQgaW50ICAgICAgICAgIGNvdW50OworCXN0cnVjdCBhdG1lbF91YXJ0X2NoYXIgZGF0 YVtBVE1FTF9TRVJJQUxfUklOR1NJWkVdOworfTsKKwogLyoKICAqIFdlIHdyYXAgb3VyIHBvcnQg c3RydWN0dXJlIGFyb3VuZCB0aGUgZ2VuZXJpYyB1YXJ0X3BvcnQuCiAgKi8KQEAgLTExOSw2ICsx MzUsMTMgQEAgc3RydWN0IGF0bWVsX3VhcnRfcG9ydCB7CiAJc3RydWN0IGNsayAJIAkqY2xrOwkJ LyogdWFydCBjbG9jayAqLwogCXVuc2lnbmVkIHNob3J0IAkJc3VzcGVuZGVkOwkvKiBpcyBwb3J0 IHN1c3BlbmRlZD8gKi8KIAlpbnQgCQkJYnJlYWtfYWN0aXZlOwkvKiBicmVhayBiZWluZyByZWNl aXZlZCAqLworCisJc3RydWN0IHRhc2tsZXRfc3RydWN0ICAgcnhfdGFzazsKKwlzdHJ1Y3QgdGFz a2xldF9zdHJ1Y3QgICBzdGF0dXNfdGFzazsKKwl1bnNpZ25lZCBpbnQgCQlpcnFfcGVuZGluZzsK Kwl1bnNpZ25lZCBpbnQgCQlpcnFfc3RhdHVzOworCisJc3RydWN0IGF0bWVsX3VhcnRfcmluZyAg cnhfcmluZzsKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0IGF0bWVsX3BvcnRz W0FUTUVMX01BWF9VQVJUXTsKQEAgLTI0OSwxMiArMjcyLDQxIEBAIHN0YXRpYyB2b2lkIGF0bWVs X2JyZWFrX2N0bChzdHJ1Y3QgdWFydF8KIH0KIAogLyoKKyAqIFN0b3JlcyB0aGUgaW5jb21pbmcg Y2hhcmFjdGVyIGluIHRoZSByaW5nIGJ1ZmZlcgorICovCitzdGF0aWMgdm9pZAorYXRtZWxfYnVm ZmVyX3J4X2NoYXIoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCwgdW5zaWduZWQgaW50IHN0YXR1cywK KwkJICAgICB1bnNpZ25lZCBpbnQgb3ZlcnJ1biwgICB1bnNpZ25lZCBpbnQgY2gsCisJCSAgICAg dW5zaWduZWQgaW50IGZsZykKK3sKKwlzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICphdG1lbF9wb3J0 ID0gKHN0cnVjdCBhdG1lbF91YXJ0X3BvcnQgKilwb3J0OworCXN0cnVjdCBhdG1lbF91YXJ0X3Jp bmcgKnJpbmcgPSAmYXRtZWxfcG9ydC0+cnhfcmluZzsKKwlzdHJ1Y3QgYXRtZWxfdWFydF9jaGFy ICpjOworCisJc3Bpbl9sb2NrKCZwb3J0LT5sb2NrKTsKKworCWlmIChyaW5nLT5jb3VudCA9PSBB VE1FTF9TRVJJQUxfUklOR1NJWkUpCisJCWdvdG8gb3V0OyAvKiBCdWZmZXIgb3ZlcmZsb3csIGln bm9yZSBjaGFyICovCisKKwljID0gJnJpbmctPmRhdGFbcmluZy0+aGVhZF07CisJYy0+c3RhdHVz ICA9IHN0YXR1czsKKwljLT5vdmVycnVuID0gb3ZlcnJ1bjsKKwljLT5jaCAgICAgID0gY2g7CisJ Yy0+ZmxnICAgICA9IGZsZzsKKworCXJpbmctPmhlYWQrKzsKKwlyaW5nLT5oZWFkICU9IEFUTUVM X1NFUklBTF9SSU5HU0laRTsKKwlyaW5nLT5jb3VudCsrOworb3V0OgorCXNwaW5fdW5sb2NrKCZw b3J0LT5sb2NrKTsKK30KKworLyoKICAqIENoYXJhY3RlcnMgcmVjZWl2ZWQgKGNhbGxlZCBmcm9t IGludGVycnVwdCBoYW5kbGVyKQogICovCiBzdGF0aWMgdm9pZCBhdG1lbF9yeF9jaGFycyhzdHJ1 Y3QgdWFydF9wb3J0ICpwb3J0KQogewogCXN0cnVjdCBhdG1lbF91YXJ0X3BvcnQgKmF0bWVsX3Bv cnQgPSAoc3RydWN0IGF0bWVsX3VhcnRfcG9ydCAqKXBvcnQ7Ci0Jc3RydWN0IHR0eV9zdHJ1Y3Qg KnR0eSA9IHBvcnQtPmluZm8tPnR0eTsKIAl1bnNpZ25lZCBpbnQgc3RhdHVzLCBjaCwgZmxnOwog CiAJc3RhdHVzID0gVUFSVF9HRVRfQ1NSKHBvcnQpOwpAQCAtMzE1LDEzICszNjcsMTMgQEAgc3Rh dGljIHZvaWQgYXRtZWxfcnhfY2hhcnMoc3RydWN0IHVhcnRfcAogCQlpZiAodWFydF9oYW5kbGVf c3lzcnFfY2hhcihwb3J0LCBjaCkpCiAJCQlnb3RvIGlnbm9yZV9jaGFyOwogCi0JCXVhcnRfaW5z ZXJ0X2NoYXIocG9ydCwgc3RhdHVzLCBBVE1FTF9VU19PVlJFLCBjaCwgZmxnKTsKKwkJYXRtZWxf YnVmZmVyX3J4X2NoYXIocG9ydCwgc3RhdHVzLCBBVE1FTF9VU19PVlJFLCBjaCwgZmxnKTsKIAog aWdub3JlX2NoYXI6CiAJCXN0YXR1cyA9IFVBUlRfR0VUX0NTUihwb3J0KTsKIAl9CiAKLQl0dHlf ZmxpcF9idWZmZXJfcHVzaCh0dHkpOworCXRhc2tsZXRfc2NoZWR1bGUoJmF0bWVsX3BvcnQtPnJ4 X3Rhc2spOwogfQogCiAvKgpAQCAtMzgxLDcgKzQzMyw3IEBAIGF0bWVsX2hhbmRsZV9yZWNlaXZl KHN0cnVjdCB1YXJ0X3BvcnQgKnAKIH0KIAogLyoKLSAqIHRyYW5zbWl0IGludGVycnVwdCBoYW5k bGVyLgorICogdHJhbnNtaXQgaW50ZXJydXB0IGhhbmRsZXIuIChUcmFuc21pdCBpcyBJUlFGX05P REVMQVkgc2FmZSkKICAqLwogc3RhdGljIGlubGluZSB2b2lkCiBhdG1lbF9oYW5kbGVfdHJhbnNt aXQoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCwgdW5zaWduZWQgaW50IHBlbmRpbmcpCkBAIC0zOTgs MTkgKzQ1MCwxNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQKIGF0bWVsX2hhbmRsZV9zdGF0dXMoc3Ry dWN0IHVhcnRfcG9ydCAqcG9ydCwgdW5zaWduZWQgaW50IHBlbmRpbmcsCiAJCSAgICB1bnNpZ25l ZCBpbnQgc3RhdHVzKQogewotCS8qIFRPRE86IEFsbCByZWFkcyB0byBDU1Igd2lsbCBjbGVhciB0 aGVzZSBpbnRlcnJ1cHRzISAqLwotCWlmIChwZW5kaW5nICYgQVRNRUxfVVNfUklJQykKLQkJcG9y dC0+aWNvdW50LnJuZysrOwotCWlmIChwZW5kaW5nICYgQVRNRUxfVVNfRFNSSUMpCi0JCXBvcnQt Pmljb3VudC5kc3IrKzsKLQlpZiAocGVuZGluZyAmIEFUTUVMX1VTX0RDRElDKQotCQl1YXJ0X2hh bmRsZV9kY2RfY2hhbmdlKHBvcnQsICEoc3RhdHVzICYgQVRNRUxfVVNfRENEKSk7Ci0JaWYgKHBl bmRpbmcgJiBBVE1FTF9VU19DVFNJQykKLQkJdWFydF9oYW5kbGVfY3RzX2NoYW5nZShwb3J0LCAh KHN0YXR1cyAmIEFUTUVMX1VTX0NUUykpOwotCWlmIChwZW5kaW5nICYKLQkJKEFUTUVMX1VTX1JJ SUMgfCBBVE1FTF9VU19EU1JJQyB8IEFUTUVMX1VTX0RDRElDIHwKLQkJQVRNRUxfVVNfQ1RTSUMp KQotCQl3YWtlX3VwX2ludGVycnVwdGlibGUoJnBvcnQtPmluZm8tPmRlbHRhX21zcl93YWl0KTsK KwlzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICphdG1lbF9wb3J0ID0gKHN0cnVjdCBhdG1lbF91YXJ0 X3BvcnQgKilwb3J0OworCisJc3Bpbl9sb2NrKCZwb3J0LT5sb2NrKTsKKworCWF0bWVsX3BvcnQt PmlycV9wZW5kaW5nID0gcGVuZGluZzsKKwlhdG1lbF9wb3J0LT5pcnFfc3RhdHVzICA9IHN0YXR1 czsKKworCXNwaW5fdW5sb2NrKCZwb3J0LT5sb2NrKTsKKworCXRhc2tsZXRfc2NoZWR1bGUoJmF0 bWVsX3BvcnQtPnN0YXR1c190YXNrKTsKIH0KIAogLyoKQEAgLTQzOCw2ICs0ODcsNjYgQEAgc3Rh dGljIGlycXJldHVybl90IGF0bWVsX2ludGVycnVwdChpbnQgaQogfQogCiAvKgorICogdGFza2xl dCBoYW5kbGluZyB0dHkgc3R1ZmYgb3V0c2lkZSB0aGUgaW50ZXJydXB0IGhhbmRsZXIuCisgKi8K K3N0YXRpYyB2b2lkIGF0bWVsX3J4X2hhbmRsZXJfdGFzayh1bnNpZ25lZCBsb25nIGRhdGEpCit7 CisJc3RydWN0IHVhcnRfcG9ydCAqcG9ydCA9IChzdHJ1Y3QgdWFydF9wb3J0ICopZGF0YTsKKwlz dHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICphdG1lbF9wb3J0ID0gKHN0cnVjdCBhdG1lbF91YXJ0X3Bv cnQgKilwb3J0OworCXN0cnVjdCBhdG1lbF91YXJ0X3JpbmcgKnJpbmcgPSAmYXRtZWxfcG9ydC0+ cnhfcmluZzsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnBv cnQtPmxvY2ssIGZsYWdzKTsKKworCXdoaWxlIChyaW5nLT5jb3VudCkgeworCQlzdHJ1Y3QgYXRt ZWxfdWFydF9jaGFyIGMgPSByaW5nLT5kYXRhW3JpbmctPnRhaWxdOworCisJCXJpbmctPnRhaWwr KzsKKwkJcmluZy0+dGFpbCAlPSBBVE1FTF9TRVJJQUxfUklOR1NJWkU7CisJCXJpbmctPmNvdW50 LS07CisKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcG9ydC0+bG9jaywgZmxhZ3MpOworCisJ CXVhcnRfaW5zZXJ0X2NoYXIocG9ydCwgYy5zdGF0dXMsIGMub3ZlcnJ1biwgYy5jaCwgYy5mbGcp OworCisJCXNwaW5fbG9ja19pcnFzYXZlKCZwb3J0LT5sb2NrLCBmbGFncyk7CisJfQorCisJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmcG9ydC0+bG9jaywgZmxhZ3MpOworCisJdHR5X2ZsaXBfYnVm ZmVyX3B1c2gocG9ydC0+aW5mby0+dHR5KTsKK30KKworc3RhdGljIHZvaWQgYXRtZWxfc3RhdHVz X2hhbmRsZXJfdGFzayh1bnNpZ25lZCBsb25nIGRhdGEpCit7CisJc3RydWN0IHVhcnRfcG9ydCAq cG9ydCA9IChzdHJ1Y3QgdWFydF9wb3J0ICopZGF0YTsKKwlzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0 ICphdG1lbF9wb3J0ID0gKHN0cnVjdCBhdG1lbF91YXJ0X3BvcnQgKilwb3J0OworCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CisJdW5zaWduZWQgaW50IHBlbmRpbmcsIHN0YXR1czsKKworCXNwaW5fbG9j a19pcnFzYXZlKCZwb3J0LT5sb2NrLCBmbGFncyk7CisKKwlwZW5kaW5nID0gYXRtZWxfcG9ydC0+ aXJxX3BlbmRpbmc7CisJc3RhdHVzID0gYXRtZWxfcG9ydC0+aXJxX3N0YXR1czsKKworCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnBvcnQtPmxvY2ssIGZsYWdzKTsKKworCS8qIFRPRE86IEFsbCBy ZWFkcyB0byBDU1Igd2lsbCBjbGVhciB0aGVzZSBpbnRlcnJ1cHRzISAqLworCWlmIChwZW5kaW5n ICYgQVRNRUxfVVNfUklJQykKKwkJcG9ydC0+aWNvdW50LnJuZysrOworCWlmIChwZW5kaW5nICYg QVRNRUxfVVNfRFNSSUMpCisJCXBvcnQtPmljb3VudC5kc3IrKzsKKwlpZiAocGVuZGluZyAmIEFU TUVMX1VTX0RDRElDKQorCQl1YXJ0X2hhbmRsZV9kY2RfY2hhbmdlKHBvcnQsICEoc3RhdHVzICYg QVRNRUxfVVNfRENEKSk7CisJaWYgKHBlbmRpbmcgJiBBVE1FTF9VU19DVFNJQykKKwkJdWFydF9o YW5kbGVfY3RzX2NoYW5nZShwb3J0LCAhKHN0YXR1cyAmIEFUTUVMX1VTX0NUUykpOworCWlmIChw ZW5kaW5nICYKKwkJKEFUTUVMX1VTX1JJSUMgfCBBVE1FTF9VU19EU1JJQyB8IEFUTUVMX1VTX0RD RElDIHwKKwkJQVRNRUxfVVNfQ1RTSUMpKQorCQl3YWtlX3VwX2ludGVycnVwdGlibGUoJnBvcnQt PmluZm8tPmRlbHRhX21zcl93YWl0KTsKK30KKworLyoKICAqIFBlcmZvcm0gaW5pdGlhbGl6YXRp b24gYW5kIGVuYWJsZSBwb3J0IGZvciByZWNlcHRpb24KICAqLwogc3RhdGljIGludCBhdG1lbF9z dGFydHVwKHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQpCkBAIC03NzAsNiArODc5LDEzIEBAIHN0YXRp YyB2b2lkIF9fZGV2aW5pdCBhdG1lbF9pbml0X3BvcnQoc3QKIAlwb3J0LT5tYXBiYXNlCT0gcGRl di0+cmVzb3VyY2VbMF0uc3RhcnQ7CiAJcG9ydC0+aXJxCT0gcGRldi0+cmVzb3VyY2VbMV0uc3Rh cnQ7CiAKKwl0YXNrbGV0X2luaXQoJmF0bWVsX3BvcnQtPnJ4X3Rhc2ssIGF0bWVsX3J4X2hhbmRs ZXJfdGFzaywKKwkJCSh1bnNpZ25lZCBsb25nKXBvcnQpOworCXRhc2tsZXRfaW5pdCgmYXRtZWxf cG9ydC0+c3RhdHVzX3Rhc2ssIGF0bWVsX3N0YXR1c19oYW5kbGVyX3Rhc2ssCisJCQkodW5zaWdu ZWQgbG9uZylwb3J0KTsKKworCW1lbXNldCgmYXRtZWxfcG9ydC0+cnhfcmluZywgMCwgc2l6ZW9m KGF0bWVsX3BvcnQtPnJ4X3JpbmcpKTsKKwogCWlmIChkYXRhLT5yZWdzKQogCQkvKiBBbHJlYWR5 IG1hcHBlZCBieSBzZXR1cCBjb2RlICovCiAJCXBvcnQtPm1lbWJhc2UgPSBkYXRhLT5yZWdzOwo= ------=_Part_378_31411552.1197632769576 Content-Type: text/x-patch; name=add-atmel-serial-dma.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fa6mqnky Content-Disposition: attachment; filename=add-atmel-serial-dma.patch VGhpcyBwYXRjaCBhZGRzIHRoZSBETUEtcGF0Y2ggYnVpbGQgYnkgQ2hpcCBDb2xkd2VsbCBmb3Ig dGhlIEFUOTEvQVQzMgpzZXJpYWwgVVNBUlRTIHRvIHRoZSBwYXRjaCBzdGFjaywgYnV0IHRoZSBv cmRlciBvZiB0aGUgcGF0Y2hlcwpoYXMgYmVlbiBjaGFuZ2VkLgoKQmVjYXVzZSB0aGUgRE1BLXBh dGNoIGRvZXMgbm90IHNlZW0gdG8gd29yayBvbiBBVDMyIGFuZCBoYXMgbm90IApiZWVuIGZpeGVk IHNpbmNlIG1vbnRocyBhbmQgc2V2ZXJhbCBrZXJuZWwgcmVsZWFzZXMsIHRoaXMgRE1BIApwYXRj aCBpcyBob2xkaW5nIHRoaW5ncyB1cC4gQ3VycmVudGx5IHRoZSBEQkdVIGFuZCB0aGUgVVNBUlQg ZG9lcwpub3Qgd29yayBvbiBQcmVlbXB0LVJULCBhbmQgbmVlZHMgYSBzcGxpdHVwIG9mIHRoZSBp bnRlcnJ1cHQgaGFuZGxlci4KVGhlIGJpZ2dlc3QgcGFydCBvZiB0aGUgaW50ZXJydXB0IGhhbmRs ZXIgc3BsaXR1cCBwYXRjaCBpcyBub3QgcmVsYXRlZAp0byBSVCwgYW5kIGNhbiB0aGVyZWZvciBi ZSBpbnRlZ3JhdGVkIGluIG1haW5saW5lIHNlcGVyYXRlbHkuCldoZW4gdGhhdCBpcyBkb25lLCB0 aGUgUlQtcGF0Y2ggY2FuIGJlIGZpeGVkLiBEdWUgdG8gdGhlIGJ1ZyBpbiB0aGUgCkRNQS1wYXRj aCB0aGlzIGludGVncmF0aW9uIGdldHMgdG9vIGNvbXBsaWNhdGVkLCBhbmQgYSByZW9yZGVyIG9m CnBhdGNoZXMgaXMgcmVxdWlyZWQuCgpQcmV2aW91c2x5IHRoaXMgb3JkZXIgd2FzIHZhbGlkOgoq IGh0dHA6Ly9tYXhpbS5vcmcuemEvQVQ5MVJNOTIwMC8yLjYvMi42LjIzLWF0OTEucGF0Y2guZ3oK KiBTZXJpYWwtcG9ydCBpbnRlcnJ1cHQgaGFuZGxlciBzcGxpdHVwIHBhdGNoZXMKCldpdGggdGhp cyBwYXRjaCwgdGhlIG9yZGVyIG5lZWRzIHRvIGJlOgoqIFNlcmlhbC1wb3J0IHNwbGl0dXAgcGF0 Y2hlcy4KKiBUaGlzIHBhdGNoIGZvciBhZGRpbmcgRE1BLXN1cHBvcnQuCgpUaGUgb2xkZXIgRE1B LXBhdGNoIGhhcyB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhdGNoIGF0OgpodHRwOi8vbWF4aW0u b3JnLnphL0FUOTFSTTkyMDAvMi42LzIuNi4yMy1hdDkxLnBhdGNoLmd6CgpTaWduZWQtb2ZmLWJ5 OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCi0tLQogZHJpdmVycy9zZXJpYWwvYXRt ZWxfc2VyaWFsLmMgfCAgMzI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLQogMSBmaWxlIGNoYW5nZWQsIDMxOSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoK SW5kZXg6IGxpbnV4LTIuNi4yMy9kcml2ZXJzL3NlcmlhbC9hdG1lbF9zZXJpYWwuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBsaW51eC0yLjYuMjMub3JpZy9kcml2ZXJzL3NlcmlhbC9hdG1lbF9zZXJpYWwuYwky MDA3LTEyLTE0IDEyOjAwOjIwLjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi42LjIzL2RyaXZl cnMvc2VyaWFsL2F0bWVsX3NlcmlhbC5jCTIwMDctMTItMTQgMTI6MDA6MjMuMDAwMDAwMDAwICsw MTAwCkBAIC03LDYgKzcsOCBAQAogICogIEJhc2VkIG9uIGRyaXZlcnMvY2hhci9zZXJpYWxfc2Ex MTAwLmMsIGJ5IERlZXAgQmx1ZSBTb2x1dGlvbnMgTHRkLgogICogIEJhc2VkIG9uIGRyaXZlcnMv Y2hhci9zZXJpYWwuYywgYnkgTGludXMgVG9ydmFsZHMsIFRoZW9kb3JlIFRzJ28uCiAgKgorICog IERNQSBzdXBwb3J0IGFkZGVkIGJ5IENoaXAgQ29sZHdlbGwuCisgKgogICogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK ICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgpAQCAtMzMsNiArMzUsNyBAQAogI2luY2x1ZGUg PGxpbnV4L3N5c3JxLmg+CiAjaW5jbHVkZSA8bGludXgvdHR5X2ZsaXAuaD4KICNpbmNsdWRlIDxs aW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgog I2luY2x1ZGUgPGxpbnV4L2F0bWVsX3BkYy5oPgogCiAjaW5jbHVkZSA8YXNtL2lvLmg+CkBAIC00 Nyw2ICs1MCwxMSBAQAogCiAjaW5jbHVkZSAiYXRtZWxfc2VyaWFsLmgiCiAKKyNkZWZpbmUgU1VQ UE9SVF9QREMKKyNkZWZpbmUgUERDX0JVRkZFUl9TSVpFCQkoTDFfQ0FDSEVfQllURVMgPDwgMykK KyN3YXJuaW5nICJSZXZpc2l0IgorI2RlZmluZSBQRENfUlhfVElNRU9VVAkJKDMgKiAxMCkJCS8q IDMgYnl0ZXMgKi8KKwogI2lmIGRlZmluZWQoQ09ORklHX1NFUklBTF9BVE1FTF9DT05TT0xFKSAm JiBkZWZpbmVkKENPTkZJR19NQUdJQ19TWVNSUSkKICNkZWZpbmUgU1VQUE9SVF9TWVNSUQogI2Vu ZGlmCkBAIC0xMTEsNiArMTE5LDEzIEBACiBzdGF0aWMgaW50ICgqYXRtZWxfb3Blbl9ob29rKSAo c3RydWN0IHVhcnRfcG9ydCAqKTsKIHN0YXRpYyB2b2lkICgqYXRtZWxfY2xvc2VfaG9vaykgKHN0 cnVjdCB1YXJ0X3BvcnQgKik7CiAKK3N0cnVjdCBhdG1lbF9kbWFfYnVmZmVyIHsKKwl1bnNpZ25l ZCBjaGFyCSpidWY7CisJZG1hX2FkZHJfdAlkbWFfYWRkcjsKKwlzaXplX3QJCWRtYV9zaXplOwor CXVuc2lnbmVkIGludAlvZnM7Cit9OworCiBzdHJ1Y3QgYXRtZWxfdWFydF9jaGFyIHsKIAl1bnNp Z25lZCBpbnQgc3RhdHVzOwogCXVuc2lnbmVkIGludCBvdmVycnVuOwpAQCAtMTM2LDYgKzE1MSwx MyBAQCBzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0IHsKIAl1bnNpZ25lZCBzaG9ydCAJCXN1c3BlbmRl ZDsJLyogaXMgcG9ydCBzdXNwZW5kZWQ/ICovCiAJaW50IAkJCWJyZWFrX2FjdGl2ZTsJLyogYnJl YWsgYmVpbmcgcmVjZWl2ZWQgKi8KIAorCXNob3J0CQkJdXNlX2RtYV9yeDsJLyogZW5hYmxlIFBE QyByZWNlaXZlciAqLworCXNob3J0CQkJcGRjX3J4X2lkeDsJLyogY3VycmVudCBQREMgUlggYnVm ZmVyICovCisJc3RydWN0IGF0bWVsX2RtYV9idWZmZXIJcGRjX3J4WzJdOwkvKiBQREMgcmVjZWll ciAqLworCisJc2hvcnQJCQl1c2VfZG1hX3R4OwkvKiBlbmFibGUgUERDIHRyYW5zbWl0dGVyICov CisJc3RydWN0IGF0bWVsX2RtYV9idWZmZXIJcGRjX3R4OwkJLyogUERDIHRyYW5zbWl0dGVyICov CisKIAlzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgICByeF90YXNrOwogCXN0cnVjdCB0YXNrbGV0X3N0 cnVjdCAgIHN0YXR1c190YXNrOwogCXVuc2lnbmVkIGludCAJCWlycV9wZW5kaW5nOwpAQCAtMTQ2 LDYgKzE2OCw5IEBAIHN0cnVjdCBhdG1lbF91YXJ0X3BvcnQgewogCiBzdGF0aWMgc3RydWN0IGF0 bWVsX3VhcnRfcG9ydCBhdG1lbF9wb3J0c1tBVE1FTF9NQVhfVUFSVF07CiAKKyNkZWZpbmUgUERD X1JYX0JVRihwb3J0KQkmKHBvcnQpLT5wZGNfcnhbKHBvcnQpLT5wZGNfcnhfaWR4XQorI2RlZmlu ZSBQRENfUlhfU1dJVENIKHBvcnQpCShwb3J0KS0+cGRjX3J4X2lkeCA9ICEocG9ydCktPnBkY19y eF9pZHgKKwogI2lmZGVmIFNVUFBPUlRfU1lTUlEKIHN0YXRpYyBzdHJ1Y3QgY29uc29sZSBhdG1l bF9jb25zb2xlOwogI2VuZGlmCkBAIC0yMzEsNyArMjU2LDE0IEBAIHN0YXRpYyB1X2ludCBhdG1l bF9nZXRfbWN0cmwoc3RydWN0IHVhcnQKICAqLwogc3RhdGljIHZvaWQgYXRtZWxfc3RvcF90eChz dHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQogewotCVVBUlRfUFVUX0lEUihwb3J0LCBBVE1FTF9VU19U WFJEWSk7CisJc3RydWN0IGF0bWVsX3VhcnRfcG9ydCAqYXRtZWxfcG9ydCA9IChzdHJ1Y3QgYXRt ZWxfdWFydF9wb3J0ICopIHBvcnQ7CisKKwlpZiAoYXRtZWxfcG9ydC0+dXNlX2RtYV90eCkgewor CQkvKiBkaXNhYmxlIFBEQyB0cmFuc21pdCAqLworCQlVQVJUX1BVVF9QVENSKHBvcnQsIEFUTUVM X1BEQ19UWFRESVMpOworCQlVQVJUX1BVVF9JRFIocG9ydCwgQVRNRUxfVVNfRU5EVFggfCBBVE1F TF9VU19UWEJVRkUpOworCX0gZWxzZQorCQlVQVJUX1BVVF9JRFIocG9ydCwgQVRNRUxfVVNfVFhS RFkpOwogfQogCiAvKgpAQCAtMjM5LDcgKzI3MSwxOSBAQCBzdGF0aWMgdm9pZCBhdG1lbF9zdG9w X3R4KHN0cnVjdCB1YXJ0X3BvCiAgKi8KIHN0YXRpYyB2b2lkIGF0bWVsX3N0YXJ0X3R4KHN0cnVj dCB1YXJ0X3BvcnQgKnBvcnQpCiB7Ci0JVUFSVF9QVVRfSUVSKHBvcnQsIEFUTUVMX1VTX1RYUkRZ KTsKKwlzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICphdG1lbF9wb3J0ID0gKHN0cnVjdCBhdG1lbF91 YXJ0X3BvcnQgKikgcG9ydDsKKworCWlmIChhdG1lbF9wb3J0LT51c2VfZG1hX3R4KSB7CisJCWlm IChVQVJUX0dFVF9QVFNSKHBvcnQpICYgQVRNRUxfUERDX1RYVEVOKQorCQkJLyogVGhlIHRyYW5z bWl0dGVyIGlzIGFscmVhZHkgcnVubmluZy4gIFllcywgd2UKKwkJCSAgIHJlYWxseSBuZWVkIHRo aXMuKi8KKwkJCXJldHVybjsKKworCQlVQVJUX1BVVF9JRVIocG9ydCwgQVRNRUxfVVNfRU5EVFgg fCBBVE1FTF9VU19UWEJVRkUpOworCQkvKiByZS1lbmFibGUgUERDIHRyYW5zbWl0ICovCisJCVVB UlRfUFVUX1BUQ1IocG9ydCwgQVRNRUxfUERDX1RYVEVOKTsKKwl9IGVsc2UKKwkJVUFSVF9QVVRf SUVSKHBvcnQsIEFUTUVMX1VTX1RYUkRZKTsKIH0KIAogLyoKQEAgLTI0Nyw3ICsyOTEsMTQgQEAg c3RhdGljIHZvaWQgYXRtZWxfc3RhcnRfdHgoc3RydWN0IHVhcnRfcAogICovCiBzdGF0aWMgdm9p ZCBhdG1lbF9zdG9wX3J4KHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQpCiB7Ci0JVUFSVF9QVVRfSURS KHBvcnQsIEFUTUVMX1VTX1JYUkRZKTsKKwlzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICphdG1lbF9w b3J0ID0gKHN0cnVjdCBhdG1lbF91YXJ0X3BvcnQgKikgcG9ydDsKKworCWlmIChhdG1lbF9wb3J0 LT51c2VfZG1hX3J4KSB7CisJCS8qIGRpc2FibGUgUERDIHJlY2VpdmUgKi8KKwkJVUFSVF9QVVRf UFRDUihwb3J0LCBBVE1FTF9QRENfUlhURElTKTsKKwkJVUFSVF9QVVRfSURSKHBvcnQsIEFUTUVM X1VTX0VORFJYIHwgQVRNRUxfVVNfVElNRU9VVCk7CisJfSBlbHNlCisJCVVBUlRfUFVUX0lEUihw b3J0LCBBVE1FTF9VU19SWFJEWSk7CiB9CiAKIC8qCkBAIC0zMDIsNiArMzUzLDE0OCBAQCBvdXQ6 CiB9CiAKIC8qCisgKiBSZWNlaXZlIGRhdGEgdmlhIHRoZSBQREMuICBBIGJ1ZmZlciBoYXMgYmVl biBmdWxsZWQuCisgKi8KK3N0YXRpYyB2b2lkIGF0bWVsX3BkY19lbmRyeChzdHJ1Y3QgdWFydF9w b3J0ICpwb3J0KQoreworCXN0cnVjdCBhdG1lbF91YXJ0X3BvcnQgKmF0bWVsX3BvcnQgPSAoc3Ry dWN0IGF0bWVsX3VhcnRfcG9ydCAqKSBwb3J0OworCXN0cnVjdCB0dHlfc3RydWN0ICp0dHkgPSBw b3J0LT5pbmZvLT50dHk7CisJc3RydWN0IGF0bWVsX2RtYV9idWZmZXIgKnBkYyA9IFBEQ19SWF9C VUYoYXRtZWxfcG9ydCk7CisJdW5zaWduZWQgaW50IGNvdW50OworCisJY291bnQgPSBwZGMtPmRt YV9zaXplIC0gcGRjLT5vZnM7CisJaWYgKGxpa2VseShjb3VudCA+IDApKSB7CisJCWRtYV9zeW5j X3NpbmdsZV9mb3JfY3B1KHBvcnQtPmRldiwKKwkJCQkJcGRjLT5kbWFfYWRkciwKKwkJCQkJcGRj LT5kbWFfc2l6ZSwKKwkJCQkJRE1BX0ZST01fREVWSUNFKTsKKwkJdHR5X2luc2VydF9mbGlwX3N0 cmluZyh0dHksIHBkYy0+YnVmICsgcGRjLT5vZnMsIGNvdW50KTsKKwkJdHR5X2ZsaXBfYnVmZmVy X3B1c2godHR5KTsKKworCQlwb3J0LT5pY291bnQucnggKz0gY291bnQ7CisJfQorCisJLyogU2V0 IHRoaXMgYnVmZmVyIGFzIHRoZSBuZXh0IHJlY2VpdmUgYnVmZmVyICovCisJcGRjLT5vZnMgPSAw OworCVVBUlRfUFVUX1JOUFIocG9ydCwgcGRjLT5kbWFfYWRkcik7CisJVUFSVF9QVVRfUk5DUihw b3J0LCBwZGMtPmRtYV9zaXplKTsKKworCS8qIFN3aXRjaCB0byBuZXh0IGJ1ZmZlciAqLworCVBE Q19SWF9TV0lUQ0goYXRtZWxfcG9ydCk7CQkvKiBuZXh0IFBEQyBidWZmZXIgKi8KK30KKworLyoK KyAqIFJlY2VpdmUgZGF0YSB2aWEgdGhlIFBEQy4gIEF0IGxlYXN0IG9uZSBieXRlIHdhcyByZWNl aXZlZCwgYnV0IHRoZQorICogYnVmZmVyIHdhcyBub3QgZnVsbCB3aGVuIHRoZSBpbnRlci1jaGFy YWN0ZXIgdGltZW91dCBleHBpcmVkLgorICovCitzdGF0aWMgdm9pZCBhdG1lbF9wZGNfdGltZW91 dChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQoreworCXN0cnVjdCBhdG1lbF91YXJ0X3BvcnQgKmF0 bWVsX3BvcnQgPSAoc3RydWN0IGF0bWVsX3VhcnRfcG9ydCAqKSBwb3J0OworCXN0cnVjdCB0dHlf c3RydWN0ICp0dHkgPSBwb3J0LT5pbmZvLT50dHk7CisJc3RydWN0IGF0bWVsX2RtYV9idWZmZXIg KnBkYyA9IFBEQ19SWF9CVUYoYXRtZWxfcG9ydCk7CisJLyogdW5zaWduZWQgKi8gaW50IG9mcywg Y291bnQ7CisKKwlvZnMgPSBVQVJUX0dFVF9SUFIocG9ydCkgLSBwZGMtPmRtYV9hZGRyOyAvKiBj dXJyZW50IERNQSBhZHJlc3MgKi8KKwljb3VudCA9IG9mcyAtIHBkYy0+b2ZzOworCisJaWYgKGxp a2VseShjb3VudCA+IDApKSB7CisJCWRtYV9zeW5jX3NpbmdsZV9mb3JfY3B1KHBvcnQtPmRldiwK KwkJCQkJcGRjLT5kbWFfYWRkciwKKwkJCQkJcGRjLT5kbWFfc2l6ZSwKKwkJCQkJRE1BX0ZST01f REVWSUNFKTsKKwkJdHR5X2luc2VydF9mbGlwX3N0cmluZyh0dHksIHBkYy0+YnVmICsgcGRjLT5v ZnMsIGNvdW50KTsKKwkJdHR5X2ZsaXBfYnVmZmVyX3B1c2godHR5KTsKKworCQlwZGMtPm9mcyA9 IG9mczsKKwkJcG9ydC0+aWNvdW50LnJ4ICs9IGNvdW50OworCX0KKworCS8qIHJlc2V0IHRoZSBV QVJUIHRpbWVvdXQgKi8KKwlVQVJUX1BVVF9DUihwb3J0LCBBVE1FTF9VU19TVFRUTyk7Cit9CisK Ky8qCisgKiBEZWFsIHdpdGggcGFyaXR5LCBmcmFtaW5nIGFuZCBvdmVycnVuIGVycm9ycy4KKyAq Lworc3RhdGljIHZvaWQgYXRtZWxfcGRjX3J4ZXJyKHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQsIHVu c2lnbmVkIGludCBzdGF0dXMpCit7CisJLyogY2xlYXIgZXJyb3IgKi8KKwlVQVJUX1BVVF9DUihw b3J0LCBBVE1FTF9VU19SU1RTVEEpOworCisJaWYgKHN0YXR1cyAmIEFUTUVMX1VTX1JYQlJLKSB7 CisJCS8qIGlnbm9yZSBzaWRlLWVmZmVjdCAqLworCQlzdGF0dXMgJj0gfihBVE1FTF9VU19QQVJF IHwgQVRNRUxfVVNfRlJBTUUpOworCQlwb3J0LT5pY291bnQuYnJrKys7CisJfQorCWlmIChzdGF0 dXMgJiBBVE1FTF9VU19QQVJFKQorCQlwb3J0LT5pY291bnQucGFyaXR5Kys7CisJaWYgKHN0YXR1 cyAmIEFUTUVMX1VTX0ZSQU1FKQorCQlwb3J0LT5pY291bnQuZnJhbWUrKzsKKwlpZiAoc3RhdHVz ICYgQVRNRUxfVVNfT1ZSRSkKKwkJcG9ydC0+aWNvdW50Lm92ZXJydW4rKzsKK30KKworLyoKKyAq IEEgdHJhbnNtaXNzaW9uIHZpYSB0aGUgUERDIGlzIGNvbXBsZXRlLgorICovCitzdGF0aWMgdm9p ZCBhdG1lbF9wZGNfZW5kdHgoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKK3sKKwlzdHJ1Y3QgYXRt ZWxfdWFydF9wb3J0ICphdG1lbF9wb3J0ID0gKHN0cnVjdCBhdG1lbF91YXJ0X3BvcnQgKikgcG9y dDsKKwlzdHJ1Y3QgY2lyY19idWYgKnhtaXQgPSAmcG9ydC0+aW5mby0+eG1pdDsKKwlzdHJ1Y3Qg YXRtZWxfZG1hX2J1ZmZlciAqcGRjID0gJmF0bWVsX3BvcnQtPnBkY190eDsKKworCXhtaXQtPnRh aWwgKz0gcGRjLT5vZnM7CisJaWYgKHhtaXQtPnRhaWwgPj0gU0VSSUFMX1hNSVRfU0laRSkKKwkJ eG1pdC0+dGFpbCAtPSBTRVJJQUxfWE1JVF9TSVpFOworCisJcG9ydC0+aWNvdW50LnR4ICs9IHBk Yy0+b2ZzOworCXBkYy0+b2ZzID0gMDsKKworCWlmICh1YXJ0X2NpcmNfY2hhcnNfcGVuZGluZyh4 bWl0KSA8IFdBS0VVUF9DSEFSUykKKwkJdWFydF93cml0ZV93YWtldXAocG9ydCk7Cit9CisKKy8q CisgKiBUaGUgUERDIHRyYW5zbWl0dGVyIGlzIGlkbGUsIHNvIGVpdGhlciBzdGFydCB0aGUgbmV4 dCB0cmFuc2ZlciBvcgorICogZGlzYWJsZSB0aGUgdHJhbnNtaXR0ZXIuCisgKi8KK3N0YXRpYyB2 b2lkIGF0bWVsX3BkY190eGJ1ZmUoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKK3sKKwlzdHJ1Y3Qg YXRtZWxfdWFydF9wb3J0ICphdG1lbF9wb3J0ID0gKHN0cnVjdCBhdG1lbF91YXJ0X3BvcnQgKikg cG9ydDsKKwlzdHJ1Y3QgY2lyY19idWYgKnhtaXQgPSAmcG9ydC0+aW5mby0+eG1pdDsKKwlzdHJ1 Y3QgYXRtZWxfZG1hX2J1ZmZlciAqcGRjID0gJmF0bWVsX3BvcnQtPnBkY190eDsKKwlpbnQgY291 bnQ7CisKKwlpZiAoIXVhcnRfY2lyY19lbXB0eSh4bWl0KSkgeworCQkvKiBtb3JlIHRvIHRyYW5z bWl0IC0gc2V0dXAgbmV4dCB0cmFuc2ZlciAqLworCisJCS8qIGRpc2FibGUgUERDIHRyYW5zbWl0 ICovCisJCVVBUlRfUFVUX1BUQ1IocG9ydCwgQVRNRUxfUERDX1RYVERJUyk7CisJCWRtYV9zeW5j X3NpbmdsZV9mb3JfZGV2aWNlKHBvcnQtPmRldiwKKwkJCQkJICAgcGRjLT5kbWFfYWRkciwKKwkJ CQkJICAgcGRjLT5kbWFfc2l6ZSwKKwkJCQkJICAgRE1BX1RPX0RFVklDRSk7CisKKwkJaWYgKHht aXQtPnRhaWwgPCB4bWl0LT5oZWFkKQorCQkJY291bnQgPSB4bWl0LT5oZWFkIC0geG1pdC0+dGFp bDsKKwkJZWxzZQorCQkJY291bnQgPSBTRVJJQUxfWE1JVF9TSVpFIC0geG1pdC0+dGFpbDsKKwkJ cGRjLT5vZnMgPSBjb3VudDsKKworCQlVQVJUX1BVVF9UUFIocG9ydCwgcGRjLT5kbWFfYWRkciAr IHhtaXQtPnRhaWwpOworCQlVQVJUX1BVVF9UQ1IocG9ydCwgY291bnQpOworCQkvKiByZS1lbmFi bGUgUERDIHRyYW5zbWl0ICovCisJCVVBUlRfUFVUX1BUQ1IocG9ydCwgQVRNRUxfUERDX1RYVEVO KTsKKwl9IGVsc2UgeworCQkvKiBub3RoaW5nIGxlZnQgdG8gdHJhbnNtaXQgLSBkaXNhYmxlIHRo ZSB0cmFuc21pdHRlciAqLworCisJCS8qIGRpc2FibGUgUERDIHRyYW5zbWl0ICovCisJCVVBUlRf UFVUX1BUQ1IocG9ydCwgQVRNRUxfUERDX1RYVERJUyk7CisJCVVBUlRfUFVUX0lEUihwb3J0LCBB VE1FTF9VU19FTkRUWCB8IEFUTUVMX1VTX1RYQlVGRSk7CisJfQorfQorCisvKgogICogQ2hhcmFj dGVycyByZWNlaXZlZCAoY2FsbGVkIGZyb20gaW50ZXJydXB0IGhhbmRsZXIpCiAgKi8KIHN0YXRp YyB2b2lkIGF0bWVsX3J4X2NoYXJzKHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQpCkBAIC00MTcsNiAr NjEwLDE2IEBAIGF0bWVsX2hhbmRsZV9yZWNlaXZlKHN0cnVjdCB1YXJ0X3BvcnQgKnAKIHsKIAlz dHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICphdG1lbF9wb3J0ID0gKHN0cnVjdCBhdG1lbF91YXJ0X3Bv cnQgKilwb3J0OwogCisJLyogUERDIHJlY2VpdmUgKi8KKwlpZiAocGVuZGluZyAmIEFUTUVMX1VT X0VORFJYKQorCQlhdG1lbF9wZGNfZW5kcngocG9ydCk7CisJaWYgKHBlbmRpbmcgJiBBVE1FTF9V U19USU1FT1VUKQorCQlhdG1lbF9wZGNfdGltZW91dChwb3J0KTsKKwlpZiAoYXRtZWxfcG9ydC0+ dXNlX2RtYV9yeCAmJgorCSAgICAocGVuZGluZyAmIChBVE1FTF9VU19SWEJSSyB8IEFUTUVMX1VT X09WUkUgfAorCQkJQVRNRUxfVVNfRlJBTUUgfCBBVE1FTF9VU19QQVJFKSkpCisJCWF0bWVsX3Bk Y19yeGVycihwb3J0LCBwZW5kaW5nKTsKKwogCS8qIEludGVycnVwdCByZWNlaXZlICovCiAJaWYg KHBlbmRpbmcgJiBBVE1FTF9VU19SWFJEWSkKIAkJYXRtZWxfcnhfY2hhcnMocG9ydCk7CkBAIC00 MzgsNiArNjQxLDEyIEBAIGF0bWVsX2hhbmRsZV9yZWNlaXZlKHN0cnVjdCB1YXJ0X3BvcnQgKnAK IHN0YXRpYyBpbmxpbmUgdm9pZAogYXRtZWxfaGFuZGxlX3RyYW5zbWl0KHN0cnVjdCB1YXJ0X3Bv cnQgKnBvcnQsIHVuc2lnbmVkIGludCBwZW5kaW5nKQogeworCS8qIFBEQyB0cmFuc21pdCAqLwor CWlmIChwZW5kaW5nICYgQVRNRUxfVVNfRU5EVFgpCisJCWF0bWVsX3BkY19lbmR0eChwb3J0KTsK KwlpZiAocGVuZGluZyAmIEFUTUVMX1VTX1RYQlVGRSkKKwkJYXRtZWxfcGRjX3R4YnVmZShwb3J0 KTsKKwogCS8qIEludGVycnVwdCB0cmFuc21pdCAqLwogCWlmIChwZW5kaW5nICYgQVRNRUxfVVNf VFhSRFkpCiAJCWF0bWVsX3R4X2NoYXJzKHBvcnQpOwpAQCAtNTUxLDYgKzc2MCw3IEBAIHN0YXRp YyB2b2lkIGF0bWVsX3N0YXR1c19oYW5kbGVyX3Rhc2sodW4KICAqLwogc3RhdGljIGludCBhdG1l bF9zdGFydHVwKHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQpCiB7CisJc3RydWN0IGF0bWVsX3VhcnRf cG9ydCAqYXRtZWxfcG9ydCA9IChzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICopcG9ydDsKIAlpbnQg cmV0dmFsOwogCiAJLyoKQEAgLTU3Miw2ICs3ODIsNTYgQEAgc3RhdGljIGludCBhdG1lbF9zdGFy dHVwKHN0cnVjdCB1YXJ0X3BvcgogCX0KIAogCS8qCisJICogSW5pdGlhbGl6ZSBETUEgKGlmIG5l Y2Vzc2FyeSkKKwkgKi8KKwlpZiAoYXRtZWxfcG9ydC0+dXNlX2RtYV9yeCkgeworCQlpbnQgaTsK KworCQlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7CisJCQlzdHJ1Y3QgYXRtZWxfZG1hX2J1ZmZl ciAqcGRjID0gJmF0bWVsX3BvcnQtPnBkY19yeFtpXTsKKworCQkJcGRjLT5idWYgPSBrbWFsbG9j KFBEQ19CVUZGRVJfU0laRSwgR0ZQX0tFUk5FTCk7CisJCQlpZiAocGRjLT5idWYgPT0gTlVMTCkg eworCQkJCWlmIChpICE9IDApIHsKKwkJCQkJZG1hX3VubWFwX3NpbmdsZShwb3J0LT5kZXYsCisJ CQkJCQlhdG1lbF9wb3J0LT5wZGNfcnhbMF0uZG1hX2FkZHIsCisJCQkJCQlQRENfQlVGRkVSX1NJ WkUsCisJCQkJCQlETUFfRlJPTV9ERVZJQ0UpOworCQkJCQlrZnJlZShhdG1lbF9wb3J0LT5wZGNf cnhbMF0uYnVmKTsKKwkJCQl9CisJCQkJZnJlZV9pcnEocG9ydC0+aXJxLCBwb3J0KTsKKwkJCQly ZXR1cm4gLUVOT01FTTsKKwkJCX0KKwkJCXBkYy0+ZG1hX2FkZHIgPSBkbWFfbWFwX3NpbmdsZShw b3J0LT5kZXYsCisJCQkJCQkgICAgICAgcGRjLT5idWYsCisJCQkJCQkgICAgICAgUERDX0JVRkZF Ul9TSVpFLAorCQkJCQkJICAgICAgIERNQV9GUk9NX0RFVklDRSk7CisJCQlwZGMtPmRtYV9zaXpl ID0gUERDX0JVRkZFUl9TSVpFOworCQkJcGRjLT5vZnMgPSAwOworCQl9CisKKwkJYXRtZWxfcG9y dC0+cGRjX3J4X2lkeCA9IDA7CisKKwkJVUFSVF9QVVRfUlBSKHBvcnQsIGF0bWVsX3BvcnQtPnBk Y19yeFswXS5kbWFfYWRkcik7CisJCVVBUlRfUFVUX1JDUihwb3J0LCBQRENfQlVGRkVSX1NJWkUp OworCisJCVVBUlRfUFVUX1JOUFIocG9ydCwgYXRtZWxfcG9ydC0+cGRjX3J4WzFdLmRtYV9hZGRy KTsKKwkJVUFSVF9QVVRfUk5DUihwb3J0LCBQRENfQlVGRkVSX1NJWkUpOworCX0KKwlpZiAoYXRt ZWxfcG9ydC0+dXNlX2RtYV90eCkgeworCQlzdHJ1Y3QgYXRtZWxfZG1hX2J1ZmZlciAqcGRjID0g JmF0bWVsX3BvcnQtPnBkY190eDsKKwkJc3RydWN0IGNpcmNfYnVmICp4bWl0ID0gJnBvcnQtPmlu Zm8tPnhtaXQ7CisKKwkJcGRjLT5idWYgPSB4bWl0LT5idWY7CisJCXBkYy0+ZG1hX2FkZHIgPSBk bWFfbWFwX3NpbmdsZShwb3J0LT5kZXYsCisJCQkJCSAgICAgICBwZGMtPmJ1ZiwKKwkJCQkJICAg ICAgIFNFUklBTF9YTUlUX1NJWkUsCisJCQkJCSAgICAgICBETUFfVE9fREVWSUNFKTsKKwkJcGRj LT5kbWFfc2l6ZSA9IFNFUklBTF9YTUlUX1NJWkU7CisJCXBkYy0+b2ZzID0gMDsKKwl9CisKKwkv KgogCSAqIElmIHRoZXJlIGlzIGEgc3BlY2lmaWMgIm9wZW4iIGZ1bmN0aW9uICh0byByZWdpc3Rl cgogCSAqIGNvbnRyb2wgbGluZSBpbnRlcnJ1cHRzKQogCSAqLwpAQCAtNTkwLDggKzg1MCwxOCBA QCBzdGF0aWMgaW50IGF0bWVsX3N0YXJ0dXAoc3RydWN0IHVhcnRfcG9yCiAJLyogZW5hYmxlIHht aXQgJiByY3ZyICovCiAJVUFSVF9QVVRfQ1IocG9ydCwgQVRNRUxfVVNfVFhFTiB8IEFUTUVMX1VT X1JYRU4pOwogCi0JLyogZW5hYmxlIHJlY2VpdmUgb25seSAqLwotCVVBUlRfUFVUX0lFUihwb3J0 LCBBVE1FTF9VU19SWFJEWSk7CisJaWYgKGF0bWVsX3BvcnQtPnVzZV9kbWFfcngpIHsKKwkJLyog c2V0IFVBUlQgdGltZW91dCAqLworCQlVQVJUX1BVVF9SVE9SKHBvcnQsIFBEQ19SWF9USU1FT1VU KTsKKwkJVUFSVF9QVVRfQ1IocG9ydCwgQVRNRUxfVVNfU1RUVE8pOworCisJCVVBUlRfUFVUX0lF Uihwb3J0LCBBVE1FTF9VU19FTkRSWCB8IEFUTUVMX1VTX1RJTUVPVVQpOworCQkvKiBlbmFibGUg UERDIGNvbnRyb2xsZXIgKi8KKwkJVUFSVF9QVVRfUFRDUihwb3J0LCBBVE1FTF9QRENfUlhURU4p OworCX0gZWxzZSB7CisJCS8qIGVuYWJsZSByZWNlaXZlIG9ubHkgKi8KKwkJVUFSVF9QVVRfSUVS KHBvcnQsIEFUTUVMX1VTX1JYUkRZKTsKKwl9CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTYwMSw2ICs4 NzEsMzggQEAgc3RhdGljIGludCBhdG1lbF9zdGFydHVwKHN0cnVjdCB1YXJ0X3BvcgogICovCiBz dGF0aWMgdm9pZCBhdG1lbF9zaHV0ZG93bihzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQogeworCXN0 cnVjdCBhdG1lbF91YXJ0X3BvcnQgKmF0bWVsX3BvcnQgPSAoc3RydWN0IGF0bWVsX3VhcnRfcG9y dCAqKXBvcnQ7CisJLyoKKwkgKiBFbnN1cmUgZXZlcnl0aGluZyBpcyBzdG9wcGVkLgorCSAqLwor CWF0bWVsX3N0b3BfcngocG9ydCk7CisJYXRtZWxfc3RvcF90eChwb3J0KTsKKworCS8qCisJICog U2h1dC1kb3duIHRoZSBETUEuCisJICovCisJaWYgKGF0bWVsX3BvcnQtPnVzZV9kbWFfcngpIHsK KwkJaW50IGk7CisKKwkJZm9yIChpID0gMDsgaSA8IDI7IGkrKykgeworCQkJc3RydWN0IGF0bWVs X2RtYV9idWZmZXIgKnBkYyA9ICZhdG1lbF9wb3J0LT5wZGNfcnhbaV07CisKKwkJCWRtYV91bm1h cF9zaW5nbGUocG9ydC0+ZGV2LAorCQkJCQkgcGRjLT5kbWFfYWRkciwKKwkJCQkJIHBkYy0+ZG1h X3NpemUsCisJCQkJCSBETUFfRlJPTV9ERVZJQ0UpOworCQkJa2ZyZWUocGRjLT5idWYpOworCQl9 CisJfQorCWlmIChhdG1lbF9wb3J0LT51c2VfZG1hX3R4KSB7CisJCXN0cnVjdCBhdG1lbF9kbWFf YnVmZmVyICpwZGMgPSAmYXRtZWxfcG9ydC0+cGRjX3R4OworCisJCWRtYV91bm1hcF9zaW5nbGUo cG9ydC0+ZGV2LAorCQkJCSBwZGMtPmRtYV9hZGRyLAorCQkJCSBwZGMtPmRtYV9zaXplLAorCQkJ CSBETUFfVE9fREVWSUNFKTsKKwl9CisKIAkvKgogCSAqIERpc2FibGUgYWxsIGludGVycnVwdHMs IHBvcnQgYW5kIGJyZWFrIGNvbmRpdGlvbi4KIAkgKi8KQEAgLTY1NCw2ICs5NTYsNyBAQCBzdGF0 aWMgdm9pZCBhdG1lbF9zZXJpYWxfcG0oc3RydWN0IHVhcnRfCiBzdGF0aWMgdm9pZCBhdG1lbF9z ZXRfdGVybWlvcyhzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0LCBzdHJ1Y3Qga3Rlcm1pb3MgKnRlcm1p b3MsCiAJCQkgICAgICBzdHJ1Y3Qga3Rlcm1pb3MgKm9sZCkKIHsKKwlzdHJ1Y3QgYXRtZWxfdWFy dF9wb3J0ICphdG1lbF9wb3J0ID0gKHN0cnVjdCBhdG1lbF91YXJ0X3BvcnQgKikgcG9ydDsKIAl1 bnNpZ25lZCBsb25nIGZsYWdzOwogCXVuc2lnbmVkIGludCBtb2RlLCBpbXIsIHF1b3QsIGJhdWQ7 CiAKQEAgLTcxMyw2ICsxMDE2LDkgQEAgc3RhdGljIHZvaWQgYXRtZWxfc2V0X3Rlcm1pb3Moc3Ry dWN0IHVhcgogCWlmICh0ZXJtaW9zLT5jX2lmbGFnICYgKEJSS0lOVCB8IFBBUk1SSykpCiAJCXBv cnQtPnJlYWRfc3RhdHVzX21hc2sgfD0gQVRNRUxfVVNfUlhCUks7CiAKKwlpZiAoYXRtZWxfcG9y dC0+dXNlX2RtYV9yeCkJLyogbmVlZCB0byBlbmFibGUgZXJyb3IgaW50ZXJydXB0cyAqLworCQlV QVJUX1BVVF9JRVIocG9ydCwgcG9ydC0+cmVhZF9zdGF0dXNfbWFzayk7CisKIAkvKgogCSAqIENo YXJhY3RlcnMgdG8gaWdub3JlCiAJICovCkBAIC05MDAsNiArMTIwNiwxMyBAQCBzdGF0aWMgdm9p ZCBfX2RldmluaXQgYXRtZWxfaW5pdF9wb3J0KHN0CiAJCWNsa19lbmFibGUoYXRtZWxfcG9ydC0+ Y2xrKTsKIAkJcG9ydC0+dWFydGNsayA9IGNsa19nZXRfcmF0ZShhdG1lbF9wb3J0LT5jbGspOwog CX0KKworI2lmZGVmIFNVUFBPUlRfUERDCisJYXRtZWxfcG9ydC0+dXNlX2RtYV9yeCA9IGRhdGEt PnVzZV9kbWFfcng7CisJYXRtZWxfcG9ydC0+dXNlX2RtYV90eCA9IGRhdGEtPnVzZV9kbWFfdHg7 CisJaWYgKGF0bWVsX3BvcnQtPnVzZV9kbWFfdHgpCisJCXBvcnQtPmZpZm9zaXplID0gUERDX0JV RkZFUl9TSVpFOworI2VuZGlmCiB9CiAKIC8qCkBAIC0xMDg1LDcgKzEzOTgsNyBAQCBzdGF0aWMg aW50IGF0bWVsX3NlcmlhbF9zdXNwZW5kKHN0cnVjdCBwCiAJc3RydWN0IGF0bWVsX3VhcnRfcG9y dCAqYXRtZWxfcG9ydCA9IChzdHJ1Y3QgYXRtZWxfdWFydF9wb3J0ICopcG9ydDsKIAogCWlmIChk ZXZpY2VfbWF5X3dha2V1cCgmcGRldi0+ZGV2KQotCSAgICAmJiAhYXQ5MV9zdXNwZW5kX2VudGVy aW5nX3Nsb3dfY2xvY2soKSkKKwkJJiYgIWNsa19tdXN0X2Rpc2FibGUoYXRtZWxfcG9ydC0+Y2xr KSkKIAkJZW5hYmxlX2lycV93YWtlKHBvcnQtPmlycSk7CiAJZWxzZSB7CiAJCXVhcnRfc3VzcGVu ZF9wb3J0KCZhdG1lbF91YXJ0LCBwb3J0KTsK ------=_Part_378_31411552.1197632769576 Content-Type: text/x-patch; name=atmel_serial_irqf_nodelay.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fa6mqo10 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_378_31411552.1197632769576--