From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Id1eU-0002G7-IK for qemu-devel@nongnu.org; Wed, 03 Oct 2007 06:40:26 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Id1eO-00027x-Dv for qemu-devel@nongnu.org; Wed, 03 Oct 2007 06:40:25 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Id1eO-00027U-48 for qemu-devel@nongnu.org; Wed, 03 Oct 2007 06:40:20 -0400 Received: from py-out-1112.google.com ([64.233.166.182]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Id1eN-0008P3-7x for qemu-devel@nongnu.org; Wed, 03 Oct 2007 06:40:19 -0400 Received: by py-out-1112.google.com with SMTP id j37so9675238pyc for ; Wed, 03 Oct 2007 03:38:35 -0700 (PDT) Message-ID: Date: Wed, 3 Oct 2007 19:38:35 +0900 From: "Magnus Damm" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_22170_33522982.1191407915267" Subject: [Qemu-devel] sh4: system emulator - interrupt controller Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_22170_33522982.1191407915267 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi everyone, Attached is a patch that implements a table driver interrupt controller for the sh architecture. The tables that describes the registers and interrupt sources are very similar to the linux kernel code that I rewrote recently. Included are tables for sh775x but it should be fairly easy to add tables for other cpu models in the future if needed. Only registers are hooked up to the cpu for now. No interrupts are delivered to the processor yet, but the association between register bit fields and interrupt sources works well. People that want to play with this can uncomment DEBUG_INTC in sh_intc.c to get printouts when the kernel enables various interrupt sources during boot. I'm going to continue working on this to hook up the processor, timers and serial ports as well. This is at least a good first step to share with the community. Please apply. / magnus ------=_Part_22170_33522982.1191407915267 Content-Type: application/octet-stream; name="qemu-cvs-20071003-sh-intc.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="qemu-cvs-20071003-sh-intc.patch"; filename="qemu-cvs-20071003-sh-intc.patch"; filename="qemu-cvs-20071003-sh-intc.patch"; filename="qemu-cvs-20071003-sh-intc.patch"; filename="qemu-cvs-20071003-sh-intc.patch" X-Attachment-Id: f_f7bp8aki LS0tIDAwMDEvTWFrZWZpbGUudGFyZ2V0CisrKyB3b3JrL01ha2VmaWxlLnRhcmdldAkyMDA3LTEw LTAyIDE5OjUwOjI0LjAwMDAwMDAwMCArMDkwMApAQCAtNDg0LDcgKzQ4NCw3IEBAIENQUEZMQUdT ICs9IC1ESEFTX0FVRElPCiBlbmRpZgogaWZlcSAoJChUQVJHRVRfQkFTRV9BUkNIKSwgc2g0KQog VkxfT0JKUys9IHNoaXgubyByMmQubyBzaDc3NTAubyBzaDc3NTBfcmVnbmFtZXMubyB0YzU4MTI4 Lm8KLVZMX09CSlMrPSBzaF90aW1lci5vIHB0aW1lci5vIHNoX3NlcmlhbC5vCitWTF9PQkpTKz0g c2hfdGltZXIubyBwdGltZXIubyBzaF9zZXJpYWwubyBzaF9pbnRjLm8KIGVuZGlmCiBpZmVxICgk KFRBUkdFVF9CQVNFX0FSQ0gpLCBtNjhrKQogVkxfT0JKUys9IGFuNTIwNi5vIG1jZjUyMDYubyBw dGltZXIubyBtY2ZfdWFydC5vIG1jZl9pbnRjLm8gbWNmNTIwOC5vIG1jZl9mZWMubwotLS0gMDAw MS9ody9zaDc3NTAuYworKysgd29yay9ody9zaDc3NTAuYwkyMDA3LTEwLTAzIDE5OjEzOjM4LjAw MDAwMDAwMCArMDkwMApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBTSDc3NTAgZGV2aWNlCiAgKgor ICogQ29weXJpZ2h0IChjKSAyMDA3IE1hZ251cyBEYW1tCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDUg U2FtdWVsIFRhcmRpZXUKICAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CkBAIC0yNiw2ICsyNyw3 IEBACiAjaW5jbHVkZSAidmwuaCIKICNpbmNsdWRlICJzaDc3NTBfcmVncy5oIgogI2luY2x1ZGUg InNoNzc1MF9yZWduYW1lcy5oIgorI2luY2x1ZGUgInNoX2ludGMuaCIKIAogI2RlZmluZSBOQl9E RVZJQ0VTIDQKIApAQCAtNTMsMTUgKzU1LDEwIEBAIHR5cGVkZWYgc3RydWN0IFNINzc1MFN0YXRl IHsKICAgICBzaDc3NTBfaW9fZGV2aWNlICpkZXZpY2VzW05CX0RFVklDRVNdOwkvKiBFeHRlcm5h bCBwZXJpcGhlcmFscyAqLwogCiAgICAgdWludDE2X3QgaWNyOwotICAgIHVpbnQxNl90IGlwcmE7 Ci0gICAgdWludDE2X3QgaXByYjsKLSAgICB1aW50MTZfdCBpcHJjOwotICAgIHVpbnQxNl90IGlw cmQ7Ci0gICAgdWludDMyX3QgaW50cHJpMDA7Ci0gICAgdWludDMyX3QgaW50bXNrMDA7CiAgICAg LyogQ2FjaGUgKi8KICAgICB1aW50MzJfdCBjY3I7CiAKKyAgICBzdHJ1Y3QgaW50Y19kZXNjIGlu dGM7CiB9IFNINzc1MFN0YXRlOwogCiAKQEAgLTIxOSwxNCArMjE2LDYgQEAgc3RhdGljIHVpbnQz Ml90IHNoNzc1MF9tZW1fcmVhZHcodm9pZCAqbwogCXJldHVybiBwb3J0Yl9saW5lcyhzKTsKICAg ICBjYXNlIDB4MWZkMDAwMDA6CiAgICAgICAgIHJldHVybiBzLT5pY3I7Ci0gICAgY2FzZSAweDFm ZDAwMDA0OgotICAgICAgICByZXR1cm4gcy0+aXByYTsKLSAgICBjYXNlIDB4MWZkMDAwMDg6Ci0g ICAgICAgIHJldHVybiBzLT5pcHJiOwotICAgIGNhc2UgMHgxZmQwMDAwYzoKLSAgICAgICAgcmV0 dXJuIHMtPmlwcmM7Ci0gICAgY2FzZSAweDFmZDAwMDEwOgotICAgICAgICByZXR1cm4gcy0+aXBy ZDsKICAgICBkZWZhdWx0OgogCWVycm9yX2FjY2Vzcygid29yZCByZWFkIiwgYWRkcik7CiAJYXNz ZXJ0KDApOwpAQCAtMjYyLDE0ICsyNTEsNiBAQCBzdGF0aWMgdWludDMyX3Qgc2g3NzUwX21lbV9y ZWFkbCh2b2lkICpvCiAJcmV0dXJuIDB4MDAxMTAwMDA7CS8qIE1pbmltdW0gY2FjaGVzICovCiAg ICAgY2FzZSAweDFmMDAwMDQ0OgkJLyogUHJvY2Vzc29yIHZlcnNpb24gUFJSICovCiAJcmV0dXJu IDB4MDAwMDAxMDA7CS8qIFNINzc1MFIgKi8KLSAgICBjYXNlIDB4MWUwODAwMDA6Ci0gICAgICAg IHJldHVybiBzLT5pbnRwcmkwMDsKLSAgICBjYXNlIDB4MWUwODAwMjA6Ci0gICAgICAgIHJldHVy biAwOwotICAgIGNhc2UgMHgxZTA4MDA0MDoKLSAgICAgICAgcmV0dXJuIHMtPmludG1zazAwOwot ICAgIGNhc2UgMHgxZTA4MDA2MDoKLSAgICAgICAgcmV0dXJuIDA7CiAgICAgZGVmYXVsdDoKIAll cnJvcl9hY2Nlc3MoImxvbmcgcmVhZCIsIGFkZHIpOwogCWFzc2VydCgwKTsKQEAgLTMzMSwxOCAr MzEyLDYgQEAgc3RhdGljIHZvaWQgc2g3NzUwX21lbV93cml0ZXcodm9pZCAqb3BhcQogICAgIGNh c2UgMHgxZmQwMDAwMDoKICAgICAgICAgcy0+aWNyID0gbWVtX3ZhbHVlOwogCXJldHVybjsKLSAg ICBjYXNlIDB4MWZkMDAwMDQ6Ci0gICAgICAgIHMtPmlwcmEgPSBtZW1fdmFsdWU7Ci0JcmV0dXJu OwotICAgIGNhc2UgMHgxZmQwMDAwODoKLSAgICAgICAgcy0+aXByYiA9IG1lbV92YWx1ZTsKLQly ZXR1cm47Ci0gICAgY2FzZSAweDFmZDAwMDBjOgotICAgICAgICBzLT5pcHJjID0gbWVtX3ZhbHVl OwotCXJldHVybjsKLSAgICBjYXNlIDB4MWZkMDAwMTA6Ci0gICAgICAgIHMtPmlwcmQgPSBtZW1f dmFsdWU7Ci0JcmV0dXJuOwogICAgIGRlZmF1bHQ6CiAJZXJyb3JfYWNjZXNzKCJ3b3JkIHdyaXRl IiwgYWRkcik7CiAJYXNzZXJ0KDApOwpAQCAtNDA3LDE2ICszNzYsNiBAQCBzdGF0aWMgdm9pZCBz aDc3NTBfbWVtX3dyaXRlbCh2b2lkICpvcGFxCiAgICAgY2FzZSBTSDc3NTBfQ0NSX0E3OgogCXMt PmNjciA9IG1lbV92YWx1ZTsKIAlyZXR1cm47Ci0gICAgY2FzZSAweDFlMDgwMDAwOgotICAgICAg ICBzLT5pbnRwcmkwMCA9IG1lbV92YWx1ZTsKLQlyZXR1cm47Ci0gICAgY2FzZSAweDFlMDgwMDIw OgotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSAweDFlMDgwMDQwOgotICAgICAgICBzLT5pbnRt c2swMCA9IG1lbV92YWx1ZTsKLQlyZXR1cm47Ci0gICAgY2FzZSAweDFlMDgwMDYwOgotICAgICAg ICByZXR1cm47CiAgICAgZGVmYXVsdDoKIAllcnJvcl9hY2Nlc3MoImxvbmcgd3JpdGUiLCBhZGRy KTsKIAlhc3NlcnQoMCk7CkBAIC00MzUsMTAgKzM5NCwxNDQgQEAgc3RhdGljIENQVVdyaXRlTWVt b3J5RnVuYyAqc2g3NzUwX21lbV93cgogICAgIHNoNzc1MF9tZW1fd3JpdGVsCiB9OwogCisvKiBz aDc3NXggaW50ZXJydXB0IGNvbnRyb2xsZXIgdGFibGVzIGZvciBzaF9pbnRjLmMKKyAqIHN0b2xl biBmcm9tIGxpbnV4L2FyY2gvc2gva2VybmVsL2NwdS9zaDQvc2V0dXAtc2g3NzUwLmMKKyAqLwor CitlbnVtIHsKKwlVTlVTRUQgPSAwLAorCisJLyogaW50ZXJydXB0IHNvdXJjZXMgKi8KKwlJUkww LCBJUkwxLCBJUkwyLCBJUkwzLCAvKiBvbmx5IElSTE0gbW9kZSBzdXBwb3J0ZWQgKi8KKwlIVURJ LCBHUElPSSwKKwlETUFDX0RNVEUwLCBETUFDX0RNVEUxLCBETUFDX0RNVEUyLCBETUFDX0RNVEUz LAorCURNQUNfRE1URTQsIERNQUNfRE1URTUsIERNQUNfRE1URTYsIERNQUNfRE1URTcsCisJRE1B Q19ETUFFLAorCVBDSUMwX1BDSVNFUlIsIFBDSUMxX1BDSUVSUiwgUENJQzFfUENJUFdEV04sIFBD SUMxX1BDSVBXT04sCisJUENJQzFfUENJRE1BMCwgUENJQzFfUENJRE1BMSwgUENJQzFfUENJRE1B MiwgUENJQzFfUENJRE1BMywKKwlUTVUzLCBUTVU0LCBUTVUwLCBUTVUxLCBUTVUyX1RVTkksIFRN VTJfVElDUEksCisJUlRDX0FUSSwgUlRDX1BSSSwgUlRDX0NVSSwKKwlTQ0kxX0VSSSwgU0NJMV9S WEksIFNDSTFfVFhJLCBTQ0kxX1RFSSwKKwlTQ0lGX0VSSSwgU0NJRl9SWEksIFNDSUZfQlJJLCBT Q0lGX1RYSSwKKwlXRFQsCisJUkVGX1JDTUksIFJFRl9ST1ZJLAorCisJLyogaW50ZXJydXB0IGdy b3VwcyAqLworCURNQUMsIFBDSUMxLCBUTVUyLCBSVEMsIFNDSTEsIFNDSUYsIFJFRiwKKworCU5S X1NPVVJDRVMsCit9OworCitzdGF0aWMgc3RydWN0IGludGNfdmVjdCB2ZWN0b3JzW10gPSB7CisJ SU5UQ19WRUNUKEhVREksIDB4NjAwKSwgSU5UQ19WRUNUKEdQSU9JLCAweDYyMCksCisJSU5UQ19W RUNUKFRNVTAsIDB4NDAwKSwgSU5UQ19WRUNUKFRNVTEsIDB4NDIwKSwKKwlJTlRDX1ZFQ1QoVE1V Ml9UVU5JLCAweDQ0MCksIElOVENfVkVDVChUTVUyX1RJQ1BJLCAweDQ2MCksCisJSU5UQ19WRUNU KFJUQ19BVEksIDB4NDgwKSwgSU5UQ19WRUNUKFJUQ19QUkksIDB4NGEwKSwKKwlJTlRDX1ZFQ1Qo UlRDX0NVSSwgMHg0YzApLAorCUlOVENfVkVDVChTQ0kxX0VSSSwgMHg0ZTApLCBJTlRDX1ZFQ1Qo U0NJMV9SWEksIDB4NTAwKSwKKwlJTlRDX1ZFQ1QoU0NJMV9UWEksIDB4NTIwKSwgSU5UQ19WRUNU KFNDSTFfVEVJLCAweDU0MCksCisJSU5UQ19WRUNUKFNDSUZfRVJJLCAweDcwMCksIElOVENfVkVD VChTQ0lGX1JYSSwgMHg3MjApLAorCUlOVENfVkVDVChTQ0lGX0JSSSwgMHg3NDApLCBJTlRDX1ZF Q1QoU0NJRl9UWEksIDB4NzYwKSwKKwlJTlRDX1ZFQ1QoV0RULCAweDU2MCksCisJSU5UQ19WRUNU KFJFRl9SQ01JLCAweDU4MCksIElOVENfVkVDVChSRUZfUk9WSSwgMHg1YTApLAorfTsKKworc3Rh dGljIHN0cnVjdCBpbnRjX2dyb3VwIGdyb3Vwc1tdID0geworCUlOVENfR1JPVVAoVE1VMiwgVE1V Ml9UVU5JLCBUTVUyX1RJQ1BJKSwKKwlJTlRDX0dST1VQKFJUQywgUlRDX0FUSSwgUlRDX1BSSSwg UlRDX0NVSSksCisJSU5UQ19HUk9VUChTQ0kxLCBTQ0kxX0VSSSwgU0NJMV9SWEksIFNDSTFfVFhJ LCBTQ0kxX1RFSSksCisJSU5UQ19HUk9VUChTQ0lGLCBTQ0lGX0VSSSwgU0NJRl9SWEksIFNDSUZf QlJJLCBTQ0lGX1RYSSksCisJSU5UQ19HUk9VUChSRUYsIFJFRl9SQ01JLCBSRUZfUk9WSSksCit9 OworCitzdGF0aWMgc3RydWN0IGludGNfcHJpb19yZWcgcHJpb19yZWdpc3RlcnNbXSA9IHsKKwl7 IDB4ZmZkMDAwMDQsIDAsIDE2LCA0LCAvKiBJUFJBICovIHsgVE1VMCwgVE1VMSwgVE1VMiwgUlRD IH0gfSwKKwl7IDB4ZmZkMDAwMDgsIDAsIDE2LCA0LCAvKiBJUFJCICovIHsgV0RULCBSRUYsIFND STEsIDAgfSB9LAorCXsgMHhmZmQwMDAwYywgMCwgMTYsIDQsIC8qIElQUkMgKi8geyBHUElPSSwg RE1BQywgU0NJRiwgSFVESSB9IH0sCisJeyAweGZmZDAwMDEwLCAwLCAxNiwgNCwgLyogSVBSRCAq LyB7IElSTDAsIElSTDEsIElSTDIsIElSTDMgfSB9LAorCXsgMHhmZTA4MDAwMCwgMCwgMzIsIDQs IC8qIElOVFBSSTAwICovIHsgMCwgMCwgMCwgMCwKKwkJCQkJCSBUTVU0LCBUTVUzLAorCQkJCQkJ IFBDSUMxLCBQQ0lDMF9QQ0lTRVJSIH0gfSwKK307CisKKy8qIFNINzc1MCwgU0g3NzUwUywgU0g3 NzUxIGFuZCBTSDcwOTEgYWxsIGhhdmUgNC1jaGFubmVsIERNQSBjb250cm9sbGVycyAqLworCitz dGF0aWMgc3RydWN0IGludGNfdmVjdCB2ZWN0b3JzX2RtYTRbXSA9IHsKKwlJTlRDX1ZFQ1QoRE1B Q19ETVRFMCwgMHg2NDApLCBJTlRDX1ZFQ1QoRE1BQ19ETVRFMSwgMHg2NjApLAorCUlOVENfVkVD VChETUFDX0RNVEUyLCAweDY4MCksIElOVENfVkVDVChETUFDX0RNVEUzLCAweDZhMCksCisJSU5U Q19WRUNUKERNQUNfRE1BRSwgMHg2YzApLAorfTsKKworc3RhdGljIHN0cnVjdCBpbnRjX2dyb3Vw IGdyb3Vwc19kbWE0W10gPSB7CisJSU5UQ19HUk9VUChETUFDLCBETUFDX0RNVEUwLCBETUFDX0RN VEUxLCBETUFDX0RNVEUyLAorCQkgICBETUFDX0RNVEUzLCBETUFDX0RNQUUpLAorfTsKKworLyog U0g3NzUwUiBhbmQgU0g3NzUxUiBib3RoIGhhdmUgOC1jaGFubmVsIERNQSBjb250cm9sbGVycyAq LworCitzdGF0aWMgc3RydWN0IGludGNfdmVjdCB2ZWN0b3JzX2RtYThbXSA9IHsKKwlJTlRDX1ZF Q1QoRE1BQ19ETVRFMCwgMHg2NDApLCBJTlRDX1ZFQ1QoRE1BQ19ETVRFMSwgMHg2NjApLAorCUlO VENfVkVDVChETUFDX0RNVEUyLCAweDY4MCksIElOVENfVkVDVChETUFDX0RNVEUzLCAweDZhMCks CisJSU5UQ19WRUNUKERNQUNfRE1URTQsIDB4NzgwKSwgSU5UQ19WRUNUKERNQUNfRE1URTUsIDB4 N2EwKSwKKwlJTlRDX1ZFQ1QoRE1BQ19ETVRFNiwgMHg3YzApLCBJTlRDX1ZFQ1QoRE1BQ19ETVRF NywgMHg3ZTApLAorCUlOVENfVkVDVChETUFDX0RNQUUsIDB4NmMwKSwKK307CisKK3N0YXRpYyBz dHJ1Y3QgaW50Y19ncm91cCBncm91cHNfZG1hOFtdID0geworCUlOVENfR1JPVVAoRE1BQywgRE1B Q19ETVRFMCwgRE1BQ19ETVRFMSwgRE1BQ19ETVRFMiwKKwkJICAgRE1BQ19ETVRFMywgRE1BQ19E TVRFNCwgRE1BQ19ETVRFNSwKKwkJICAgRE1BQ19ETVRFNiwgRE1BQ19ETVRFNywgRE1BQ19ETUFF KSwKK307CisKKy8qIFNINzc1MFIsIFNINzc1MSBhbmQgU0g3NzUxUiBhbGwgaGF2ZSB0d28gZXh0 cmEgdGltZXIgY2hhbm5lbHMgKi8KKworc3RhdGljIHN0cnVjdCBpbnRjX3ZlY3QgdmVjdG9yc190 bXUzNFtdID0geworCUlOVENfVkVDVChUTVUzLCAweGIwMCksIElOVENfVkVDVChUTVU0LCAweGI4 MCksCit9OworCitzdGF0aWMgc3RydWN0IGludGNfbWFza19yZWcgbWFza19yZWdpc3RlcnNbXSA9 IHsKKwl7IDB4ZmUwODAwNDAsIDB4ZmUwODAwNjAsIDMyLCAvKiBJTlRNU0swMCAvIElOVE1TS0NM UjAwICovCisJICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs IDAsCisJICAgIDAsIDAsIDAsIDAsIDAsIDAsIFRNVTQsIFRNVTMsCisJICAgIFBDSUMxX1BDSUVS UiwgUENJQzFfUENJUFdEV04sIFBDSUMxX1BDSVBXT04sCisJICAgIFBDSUMxX1BDSURNQTAsIFBD SUMxX1BDSURNQTEsIFBDSUMxX1BDSURNQTIsCisJICAgIFBDSUMxX1BDSURNQTMsIFBDSUMwX1BD SVNFUlIgfSB9LAorfTsKKworLyogU0g3NzUwUywgU0g3NzUwUiwgU0g3NzUxIGFuZCBTSDc3NTFS IGFsbCBoYXZlIElSTE0gcHJpb3JpdHkgcmVnaXN0ZXJzICovCisKK3N0YXRpYyBzdHJ1Y3QgaW50 Y192ZWN0IHZlY3RvcnNfaXJsbVtdID0geworCUlOVENfVkVDVChJUkwwLCAweDI0MCksIElOVENf VkVDVChJUkwxLCAweDJhMCksCisJSU5UQ19WRUNUKElSTDIsIDB4MzAwKSwgSU5UQ19WRUNUKElS TDMsIDB4MzYwKSwKK307CisKKy8qIFNINzc1MSBhbmQgU0g3NzUxUiBib3RoIGhhdmUgUENJICov CisKK3N0YXRpYyBzdHJ1Y3QgaW50Y192ZWN0IHZlY3RvcnNfcGNpW10gPSB7CisJSU5UQ19WRUNU KFBDSUMwX1BDSVNFUlIsIDB4YTAwKSwgSU5UQ19WRUNUKFBDSUMxX1BDSUVSUiwgMHhhZTApLAor CUlOVENfVkVDVChQQ0lDMV9QQ0lQV0RXTiwgMHhhYzApLCBJTlRDX1ZFQ1QoUENJQzFfUENJUFdP TiwgMHhhYTApLAorCUlOVENfVkVDVChQQ0lDMV9QQ0lETUEwLCAweGE4MCksIElOVENfVkVDVChQ Q0lDMV9QQ0lETUExLCAweGE2MCksCisJSU5UQ19WRUNUKFBDSUMxX1BDSURNQTIsIDB4YTQwKSwg SU5UQ19WRUNUKFBDSUMxX1BDSURNQTMsIDB4YTIwKSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgaW50 Y19ncm91cCBncm91cHNfcGNpW10gPSB7CisJSU5UQ19HUk9VUChQQ0lDMSwgUENJQzFfUENJRVJS LCBQQ0lDMV9QQ0lQV0RXTiwgUENJQzFfUENJUFdPTiwKKwkJICAgUENJQzFfUENJRE1BMCwgUENJ QzFfUENJRE1BMSwgUENJQzFfUENJRE1BMiwgUENJQzFfUENJRE1BMyksCit9OworCisjZGVmaW5l IFNIX0NQVV9TSDc3NTAgICgxIDw8IDApCisjZGVmaW5lIFNIX0NQVV9TSDc3NTBTICgxIDw8IDEp CisjZGVmaW5lIFNIX0NQVV9TSDc3NTBSICgxIDw8IDIpCisjZGVmaW5lIFNIX0NQVV9TSDc3NTEg ICgxIDw8IDMpCisjZGVmaW5lIFNIX0NQVV9TSDc3NTFSICgxIDw8IDQpCisjZGVmaW5lIFNIX0NQ VV9TSDc3NTBfQUxMIChTSF9DUFVfU0g3NzUwIHwgU0hfQ1BVX1NINzc1MFMgfCBTSF9DUFVfU0g3 NzUwUikKKyNkZWZpbmUgU0hfQ1BVX1NINzc1MV9BTEwgKFNIX0NQVV9TSDc3NTEgfCBTSF9DUFVf U0g3NzUxUikKKwogU0g3NzUwU3RhdGUgKnNoNzc1MF9pbml0KENQVVNINFN0YXRlICogY3B1KQog ewogICAgIFNINzc1MFN0YXRlICpzOwogICAgIGludCBzaDc3NTBfaW9fbWVtb3J5OworICAgIGlu dCBjcHVfbW9kZWwgPSBTSF9DUFVfU0g3NzUxUjsgLyogZm9yIG5vdyAqLwogCiAgICAgcyA9IHFl bXVfbWFsbG9jeihzaXplb2YoU0g3NzUwU3RhdGUpKTsKICAgICBzLT5jcHUgPSBjcHU7CkBAIC00 NDgsNiArNTQxLDE0IEBAIFNINzc1MFN0YXRlICpzaDc3NTBfaW5pdChDUFVTSDRTdGF0ZSAqIGMK IAkJCQkJICAgICAgc2g3NzUwX21lbV93cml0ZSwgcyk7CiAgICAgY3B1X3JlZ2lzdGVyX3BoeXNp Y2FsX21lbW9yeSgweDFjMDAwMDAwLCAweDA0MDAwMDAwLCBzaDc3NTBfaW9fbWVtb3J5KTsKIAor ICAgIHNoX2ludGNfaW5pdCgmcy0+aW50YywgTlJfU09VUkNFUywKKwkJIF9JTlRDX0FSUkFZKG1h c2tfcmVnaXN0ZXJzKSwKKwkJIF9JTlRDX0FSUkFZKHByaW9fcmVnaXN0ZXJzKSk7CisKKyAgICBz aF9pbnRjX3JlZ2lzdGVyX3NvdXJjZXMoJnMtPmludGMsIAorCQkJICAgICBfSU5UQ19BUlJBWSh2 ZWN0b3JzKSwKKwkJCSAgICAgX0lOVENfQVJSQVkoZ3JvdXBzKSk7CisKICAgICBzaF9zZXJpYWxf aW5pdCgweDFmZTAwMDAwLCAwLCBzLT5wZXJpcGhfZnJlcSwgc2VyaWFsX2hkc1swXSk7CiAgICAg c2hfc2VyaWFsX2luaXQoMHgxZmU4MDAwMCwgU0hfU0VSSUFMX0ZFQVRfU0NJRiwKIAkJICAgcy0+ cGVyaXBoX2ZyZXEsIHNlcmlhbF9oZHNbMV0pOwpAQCAtNDU1LDYgKzU1NiwzOCBAQCBTSDc3NTBT dGF0ZSAqc2g3NzUwX2luaXQoQ1BVU0g0U3RhdGUgKiBjCiAgICAgdG11MDEyX2luaXQoMHgxZmQ4 MDAwMCwKIAkJVE1VMDEyX0ZFQVRfVE9DUiB8IFRNVTAxMl9GRUFUXzNDSEFOIHwgVE1VMDEyX0ZF QVRfRVhUQ0xLLAogCQlzLT5wZXJpcGhfZnJlcSk7Ci0gICAgdG11MDEyX2luaXQoMHgxZTEwMDAw MCwgMCwgcy0+cGVyaXBoX2ZyZXEpOworCisKKyAgICBpZiAoY3B1X21vZGVsICYgKFNIX0NQVV9T SDc3NTAgfCBTSF9DUFVfU0g3NzUwUyB8IFNIX0NQVV9TSDc3NTEpKSB7CisgICAgICAgIHNoX2lu dGNfcmVnaXN0ZXJfc291cmNlcygmcy0+aW50YywgCisJCQkJIF9JTlRDX0FSUkFZKHZlY3RvcnNf ZG1hNCksCisJCQkJIF9JTlRDX0FSUkFZKGdyb3Vwc19kbWE0KSk7CisgICAgfQorCisgICAgaWYg KGNwdV9tb2RlbCAmIChTSF9DUFVfU0g3NzUwUiB8IFNIX0NQVV9TSDc3NTFSKSkgeworICAgICAg ICBzaF9pbnRjX3JlZ2lzdGVyX3NvdXJjZXMoJnMtPmludGMsIAorCQkJCSBfSU5UQ19BUlJBWSh2 ZWN0b3JzX2RtYTgpLAorCQkJCSBfSU5UQ19BUlJBWShncm91cHNfZG1hOCkpOworICAgIH0KKwor ICAgIGlmIChjcHVfbW9kZWwgJiAoU0hfQ1BVX1NINzc1MFIgfCBTSF9DUFVfU0g3NzUxIHwgU0hf Q1BVX1NINzc1MVIpKSB7CisgICAgICAgIHNoX2ludGNfcmVnaXN0ZXJfc291cmNlcygmcy0+aW50 YywgCisJCQkJIF9JTlRDX0FSUkFZKHZlY3RvcnNfdG11MzQpLAorCQkJCSBfSU5UQ19BUlJBWShO VUxMKSk7CisgICAgICAgIHRtdTAxMl9pbml0KDB4MWUxMDAwMDAsIDAsIHMtPnBlcmlwaF9mcmVx KTsKKyAgICB9CisKKyAgICBpZiAoY3B1X21vZGVsICYgKFNIX0NQVV9TSDc3NTFfQUxMKSkgewor ICAgICAgICBzaF9pbnRjX3JlZ2lzdGVyX3NvdXJjZXMoJnMtPmludGMsIAorCQkJCSBfSU5UQ19B UlJBWSh2ZWN0b3JzX3BjaSksCisJCQkJIF9JTlRDX0FSUkFZKGdyb3Vwc19wY2kpKTsKKyAgICB9 CisKKyAgICBpZiAoY3B1X21vZGVsICYgKFNIX0NQVV9TSDc3NTBTIHwgU0hfQ1BVX1NINzc1MFIg fCBTSF9DUFVfU0g3NzUxX0FMTCkpIHsKKyAgICAgICAgc2hfaW50Y19yZWdpc3Rlcl9zb3VyY2Vz KCZzLT5pbnRjLCAKKwkJCQkgX0lOVENfQVJSQVkodmVjdG9yc19pcmxtKSwKKwkJCQkgX0lOVENf QVJSQVkoTlVMTCkpOworICAgIH0KKwogICAgIHJldHVybiBzOwogfQotLS0gMDAwMS9ody9zaDc3 NTBfcmVnbmFtZXMuYworKysgd29yay9ody9zaDc3NTBfcmVnbmFtZXMuYwkyMDA3LTEwLTAzIDE5 OjE1OjM5LjAwMDAwMDAwMCArMDkwMApAQCAtNzYsOSArNzYsNiBAQCBzdGF0aWMgcmVnbmFtZV90 IHJlZ25hbWVzW10gPSB7CiAJUkVHTkFNRShTSDc3NTBfUERUUkJfQTcpCiAJUkVHTkFNRShTSDc3 NTBfR1BJT0lDX0E3KQogCVJFR05BTUUoU0g3NzUwX0lDUl9BNykKLQlSRUdOQU1FKFNINzc1MF9J UFJBX0E3KQotCVJFR05BTUUoU0g3NzUwX0lQUkJfQTcpCi0JUkVHTkFNRShTSDc3NTBfSVBSQ19B NykKIAlSRUdOQU1FKFNINzc1MF9CQ1IzX0E3KQogCVJFR05BTUUoU0g3NzUwX0JDUjRfQTcpCiAJ UkVHTkFNRShTSDc3NTBfUFJFQ0hBUkdFMF9BNykKLS0tIDAwMDEvaHcvc2g3NzUwX3JlZ3MuaAor Kysgd29yay9ody9zaDc3NTBfcmVncy5oCTIwMDctMTAtMDMgMTk6MTQ6NTcuMDAwMDAwMDAwICsw OTAwCkBAIC0xMjQxLDQ4ICsxMjQxLDYgQEAKICNkZWZpbmUgU0g3NzUwX0lDUl9JUkxNX1JBVyAg IDB4MDA4MAkvKiAgIElSTFwgcGlucyB1c2VkIGFzIGEgZm91ciBpbmRlcGVuZGVudAogCQkJCQkg ICBpbnRlcnJ1cHQgcmVxdWVzdHMgKi8KIAotLyogSW50ZXJydXB0IFByaW9yaXR5IFJlZ2lzdGVy IEEgLSBJUFJBIChoYWxmKSAqLwotI2RlZmluZSBTSDc3NTBfSVBSQV9SRUdPRlMgICAgMHhEMDAw MDQJLyogb2Zmc2V0ICovCi0jZGVmaW5lIFNINzc1MF9JUFJBICAgICAgICAgICBTSDc3NTBfUDRf UkVHMzIoU0g3NzUwX0lQUkFfUkVHT0ZTKQotI2RlZmluZSBTSDc3NTBfSVBSQV9BNyAgICAgICAg U0g3NzUwX0E3X1JFRzMyKFNINzc1MF9JUFJBX1JFR09GUykKLQotI2RlZmluZSBTSDc3NTBfSVBS QV9UTVUwICAgICAgMHhGMDAwCS8qIFRNVTAgaW50ZXJydXB0IHByaW9yaXR5ICovCi0jZGVmaW5l IFNINzc1MF9JUFJBX1RNVTBfUyAgICAxMgotI2RlZmluZSBTSDc3NTBfSVBSQV9UTVUxICAgICAg MHgwRjAwCS8qIFRNVTEgaW50ZXJydXB0IHByaW9yaXR5ICovCi0jZGVmaW5lIFNINzc1MF9JUFJB X1RNVTFfUyAgICA4Ci0jZGVmaW5lIFNINzc1MF9JUFJBX1RNVTIgICAgICAweDAwRjAJLyogVE1V MiBpbnRlcnJ1cHQgcHJpb3JpdHkgKi8KLSNkZWZpbmUgU0g3NzUwX0lQUkFfVE1VMl9TICAgIDQK LSNkZWZpbmUgU0g3NzUwX0lQUkFfUlRDICAgICAgIDB4MDAwRgkvKiBSVEMgaW50ZXJydXB0IHBy aW9yaXR5ICovCi0jZGVmaW5lIFNINzc1MF9JUFJBX1JUQ19TICAgICAwCi0KLS8qIEludGVycnVw dCBQcmlvcml0eSBSZWdpc3RlciBCIC0gSVBSQiAoaGFsZikgKi8KLSNkZWZpbmUgU0g3NzUwX0lQ UkJfUkVHT0ZTICAgIDB4RDAwMDA4CS8qIG9mZnNldCAqLwotI2RlZmluZSBTSDc3NTBfSVBSQiAg ICAgICAgICAgU0g3NzUwX1A0X1JFRzMyKFNINzc1MF9JUFJCX1JFR09GUykKLSNkZWZpbmUgU0g3 NzUwX0lQUkJfQTcgICAgICAgIFNINzc1MF9BN19SRUczMihTSDc3NTBfSVBSQl9SRUdPRlMpCi0K LSNkZWZpbmUgU0g3NzUwX0lQUkJfV0RUICAgICAgIDB4RjAwMAkvKiBXRFQgaW50ZXJydXB0IHBy aW9yaXR5ICovCi0jZGVmaW5lIFNINzc1MF9JUFJCX1dEVF9TICAgICAxMgotI2RlZmluZSBTSDc3 NTBfSVBSQl9SRUYgICAgICAgMHgwRjAwCS8qIE1lbW9yeSBSZWZyZXNoIHVuaXQgaW50ZXJydXB0 Ci0JCQkJCSAgIHByaW9yaXR5ICovCi0jZGVmaW5lIFNINzc1MF9JUFJCX1JFRl9TICAgICA4Ci0j ZGVmaW5lIFNINzc1MF9JUFJCX1NDSTEgICAgICAweDAwRjAJLyogU0NJMSBpbnRlcnJ1cHQgcHJp b3JpdHkgKi8KLSNkZWZpbmUgU0g3NzUwX0lQUkJfU0NJMV9TICAgIDQKLQotLyogSW50ZXJydXB0 IFByaW9yaXR5IFJlZ2lzdGVyIPMgLSBJUFLzIChoYWxmKSAqLwotI2RlZmluZSBTSDc3NTBfSVBS Q19SRUdPRlMgICAgMHhEMDAwMDQJLyogb2Zmc2V0ICovCi0jZGVmaW5lIFNINzc1MF9JUFJDICAg ICAgICAgICBTSDc3NTBfUDRfUkVHMzIoU0g3NzUwX0lQUkNfUkVHT0ZTKQotI2RlZmluZSBTSDc3 NTBfSVBSQ19BNyAgICAgICAgU0g3NzUwX0E3X1JFRzMyKFNINzc1MF9JUFJDX1JFR09GUykKLQot I2RlZmluZSBTSDc3NTBfSVBSQ19HUElPICAgICAgMHhGMDAwCS8qIEdQSU8gaW50ZXJydXB0IHBy aW9yaXR5ICovCi0jZGVmaW5lIFNINzc1MF9JUFJDX0dQSU9fUyAgICAxMgotI2RlZmluZSBTSDc3 NTBfSVBSQ19ETUFDICAgICAgMHgwRjAwCS8qIERNQUMgaW50ZXJydXB0IHByaW9yaXR5ICovCi0j ZGVmaW5lIFNINzc1MF9JUFJDX0RNQUNfUyAgICA4Ci0jZGVmaW5lIFNINzc1MF9JUFJDX1NDSUYg ICAgICAweDAwRjAJLyogU0NJRiBpbnRlcnJ1cHQgcHJpb3JpdHkgKi8KLSNkZWZpbmUgU0g3NzUw X0lQUkNfU0NJRl9TICAgIDQKLSNkZWZpbmUgU0g3NzUwX0lQUkNfSFVESSAgICAgIDB4MDAwRgkv KiBILVVESSBpbnRlcnJ1cHQgcHJpb3JpdHkgKi8KLSNkZWZpbmUgU0g3NzUwX0lQUkNfSFVESV9T ICAgIDAKLQotCiAvKgogICogVXNlciBCcmVhayBDb250cm9sbGVyIHJlZ2lzdGVycwogICovCi0t LSAvZGV2L251bGwKKysrIHdvcmsvaHcvc2hfaW50Yy5jCTIwMDctMTAtMDMgMTk6MDI6MDcuMDAw MDAwMDAwICswOTAwCkBAIC0wLDAgKzEsMzgzIEBACisvKgorICogU3VwZXJIIGludGVycnVwdCBj b250cm9sbGVyIG1vZHVsZQorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNyBNYWdudXMgRGFtbQor ICogQmFzZWQgb24gc2hfdGltZXIuYyBhbmQgYXJtX3RpbWVyLmMgYnkgUGF1bCBCcm9vaworICog Q29weXJpZ2h0IChjKSAyMDA1LTIwMDYgQ29kZVNvdXJjZXJ5LgorICoKKyAqIFRoaXMgY29kZSBp cyBsaWNlbmNlZCB1bmRlciB0aGUgR1BMLgorICovCisKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNp bmNsdWRlICJzaF9pbnRjLmgiCisjaW5jbHVkZSAidmwuaCIKKworLy8jZGVmaW5lIERFQlVHX0lO VEMKKworI2RlZmluZSBJTlRDX0E3KHgpICgoeCkgJiAweDFmZmZmZmZmKQorI2RlZmluZSBJTlRD X0FSUkFZKHgpIChzaXplb2YoeCkgLyBzaXplb2YoeFswXSkpCisKKyNkZWZpbmUgSU5UQ19NT0RF X05PTkUgICAgICAgMAorI2RlZmluZSBJTlRDX01PREVfRFVBTF9TRVQgICAxCisjZGVmaW5lIElO VENfTU9ERV9EVUFMX0NMUiAgIDIKKyNkZWZpbmUgSU5UQ19NT0RFX0VOQUJMRV9SRUcgMworI2Rl ZmluZSBJTlRDX01PREVfTUFTS19SRUcgICA0CisjZGVmaW5lIElOVENfTU9ERV9JU19QUklPICAg IDgKKworc3RhdGljIHVuc2lnbmVkIGludCBzaF9pbnRjX21vZGUodW5zaWduZWQgbG9uZyBhZGRy ZXNzLAorCQkJCSB1bnNpZ25lZCBsb25nIHNldF9yZWcsIHVuc2lnbmVkIGxvbmcgY2xyX3JlZykK K3sKKyAgICBpZiAoKGFkZHJlc3MgIT0gSU5UQ19BNyhzZXRfcmVnKSkgJiYKKwkoYWRkcmVzcyAh PSBJTlRDX0E3KGNscl9yZWcpKSkKKyAgICAgICAgcmV0dXJuIElOVENfTU9ERV9OT05FOworCisg ICAgaWYgKHNldF9yZWcgJiYgY2xyX3JlZykgeworICAgICAgICBpZiAoYWRkcmVzcyA9PSBJTlRD X0E3KHNldF9yZWcpKQorICAgICAgICAgICAgcmV0dXJuIElOVENfTU9ERV9EVUFMX1NFVDsKKwll bHNlCisgICAgICAgICAgICByZXR1cm4gSU5UQ19NT0RFX0RVQUxfQ0xSOworICAgIH0KKworICAg IGlmIChzZXRfcmVnKQorICAgICAgICByZXR1cm4gSU5UQ19NT0RFX0VOQUJMRV9SRUc7CisgICAg ZWxzZQorICAgICAgICByZXR1cm4gSU5UQ19NT0RFX01BU0tfUkVHOworfQorCitzdGF0aWMgdm9p ZCBzaF9pbnRjX2xvY2F0ZShzdHJ1Y3QgaW50Y19kZXNjICpkZXNjLAorCQkJICAgdW5zaWduZWQg bG9uZyBhZGRyZXNzLAorCQkJICAgdW5zaWduZWQgbG9uZyAqKmRhdGFwLAorCQkJICAgaW50Y19l bnVtICoqZW51bXMsCisJCQkgICB1bnNpZ25lZCBpbnQgKmZpcnN0LAorCQkJICAgdW5zaWduZWQg aW50ICp3aWR0aCwKKwkJCSAgIHVuc2lnbmVkIGludCAqbW9kZXApCit7CisgICAgdW5zaWduZWQg aW50IGksIG1vZGU7CisKKyAgICAvKiB0aGlzIGlzIHNsb3cgYnV0IHdvcmtzIGZvciBub3cgKi8K KworICAgIGlmIChkZXNjLT5tYXNrX3JlZ3MpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGRl c2MtPm5yX21hc2tfcmVnczsgaSsrKSB7CisJICAgIHN0cnVjdCBpbnRjX21hc2tfcmVnICptciA9 IGRlc2MtPm1hc2tfcmVncyArIGk7CisKKwkgICAgbW9kZSA9IHNoX2ludGNfbW9kZShhZGRyZXNz LCBtci0+c2V0X3JlZywgbXItPmNscl9yZWcpOworCSAgICBpZiAobW9kZSA9PSBJTlRDX01PREVf Tk9ORSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworCSAgICAqbW9kZXAgPSBtb2RlOwor CSAgICAqZGF0YXAgPSAmbXItPnZhbHVlOworCSAgICAqZW51bXMgPSBtci0+ZW51bV9pZHM7CisJ ICAgICpmaXJzdCA9IG1yLT5yZWdfd2lkdGggLSAxOworCSAgICAqd2lkdGggPSAxOworCSAgICBy ZXR1cm47CisJfQorICAgIH0KKworICAgIGlmIChkZXNjLT5wcmlvX3JlZ3MpIHsKKyAgICAgICAg Zm9yIChpID0gMDsgaSA8IGRlc2MtPm5yX3ByaW9fcmVnczsgaSsrKSB7CisJICAgIHN0cnVjdCBp bnRjX3ByaW9fcmVnICpwciA9IGRlc2MtPnByaW9fcmVncyArIGk7CisKKwkgICAgbW9kZSA9IHNo X2ludGNfbW9kZShhZGRyZXNzLCBwci0+c2V0X3JlZywgcHItPmNscl9yZWcpOworCSAgICBpZiAo bW9kZSA9PSBJTlRDX01PREVfTk9ORSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworCSAg ICAqbW9kZXAgPSBtb2RlIHwgSU5UQ19NT0RFX0lTX1BSSU87CisJICAgICpkYXRhcCA9ICZwci0+ dmFsdWU7CisJICAgICplbnVtcyA9IHByLT5lbnVtX2lkczsKKwkgICAgKmZpcnN0ID0gKHByLT5y ZWdfd2lkdGggLyBwci0+ZmllbGRfd2lkdGgpIC0gMTsKKwkgICAgKndpZHRoID0gcHItPmZpZWxk X3dpZHRoOworCSAgICByZXR1cm47CisJfQorICAgIH0KKworICAgIGFzc2VydCgwKTsKK30KKwor c3RhdGljIHZvaWQgc2hfaW50Y190b2dnbGUoc3RydWN0IGludGNfZGVzYyAqZGVzYywgaW50Y19l bnVtIGlkLAorCQkJICAgaW50IGVuYWJsZSwgaW50IGlzX2dyb3VwKQoreworICAgIHN0cnVjdCBp bnRjX3NvdXJjZSAqc291cmNlID0gZGVzYy0+c291cmNlcyArIGlkOworICAgIGludCBvbGQgPSBz b3VyY2UtPmVuYWJsZV9jb3VudDsKKworICAgIGlmICghaWQpCisJcmV0dXJuOworCisgICAgaWYg KCFzb3VyY2UtPm5leHRfZW51bV9pZCAmJiAoIXNvdXJjZS0+ZW5hYmxlX21heCB8fCAhc291cmNl LT52ZWN0KSkgeworI2lmZGVmIERFQlVHX0lOVEMKKyAgICAgICAgcHJpbnRmKCJzaF9pbnRjOiBy ZXNlcnZlZCBpbnRlcnJ1cHQgc291cmNlICVkIG1vZGlmaWVkXG4iLCBpZCk7CisjZW5kaWYKKwly ZXR1cm47CisgICAgfQorCisgICAgaWYgKHNvdXJjZS0+dmVjdCkgeworICAgICAgICBpZiAoZW5h YmxlKQorICAgICAgICAgICAgc291cmNlLT5lbmFibGVfY291bnQrKzsKKwllbHNlIAorICAgICAg ICAgICAgc291cmNlLT5lbmFibGVfY291bnQtLTsKKworICAgICAgICBpZiAoc291cmNlLT5lbmFi bGVfY291bnQgPT0gc291cmNlLT5lbmFibGVfbWF4KSB7CisjaWZkZWYgREVCVUdfSU5UQworICAg ICAgICAgICAgcHJpbnRmKCJzaF9pbnRjOiBlbmFibGluZyBpbnRlcnJ1cHQgc291cmNlICVkIC0+ IDB4JTA0eFxuIiwKKwkJICAgaWQsIHNvdXJjZS0+dmVjdCk7CisjZW5kaWYKKwl9CisKKyAgICAg ICAgaWYgKG9sZCA9PSBzb3VyY2UtPmVuYWJsZV9tYXgpIHsKKyNpZmRlZiBERUJVR19JTlRDCisg ICAgICAgICAgICBwcmludGYoInNoX2ludGM6IGRpc2FibGluZyBpbnRlcnJ1cHQgc291cmNlICVk IC0+IDB4JTA0eFxuIiwKKwkJICAgaWQsIHNvdXJjZS0+dmVjdCk7CisjZW5kaWYKKwl9CisgICAg fQorI2lmZGVmIERFQlVHX0lOVEMKKyAgICBlbHNlIHsKKyAgICAgICAgcHJpbnRmKCJzZXR0aW5n IGludGVycnVwdCBncm91cCAlZCB0byAlZFxuIiwgaWQsICEhZW5hYmxlKTsKKyAgICB9CisjZW5k aWYKKworICAgIGlmICgoaXNfZ3JvdXAgfHwgIXNvdXJjZS0+dmVjdCkgJiYgc291cmNlLT5uZXh0 X2VudW1faWQpIHsKKyAgICAgICAgc2hfaW50Y190b2dnbGUoZGVzYywgc291cmNlLT5uZXh0X2Vu dW1faWQsIGVuYWJsZSwgMSk7CisgICAgfQorCisjaWZkZWYgREVCVUdfSU5UQworICAgIGlmICgh c291cmNlLT52ZWN0KSB7CisgICAgICAgIHByaW50Zigic2V0dGluZyBpbnRlcnJ1cHQgZ3JvdXAg JWQgdG8gJWQgLSBkb25lXG4iLCBpZCwgISFlbmFibGUpOworICAgIH0KKyNlbmRpZgorfQorCitz dGF0aWMgdWludDMyX3Qgc2hfaW50Y19yZWFkKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRk cl90IG9mZnNldCkKK3sKKyAgICBzdHJ1Y3QgaW50Y19kZXNjICpkZXNjID0gb3BhcXVlOworICAg IGludGNfZW51bSAqZW51bV9pZHMgPSBOVUxMOworICAgIHVuc2lnbmVkIGludCBmaXJzdCA9IDA7 CisgICAgdW5zaWduZWQgaW50IHdpZHRoID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgbW9kZSA9IDA7 CisgICAgdW5zaWduZWQgbG9uZyAqdmFsdWVwOworCisjaWZkZWYgREVCVUdfSU5UQworICAgIHBy aW50Zigic2hfaW50Y19yZWFkIDB4JWx4XG4iLCAodW5zaWduZWQgbG9uZykgb2Zmc2V0KTsKKyNl bmRpZgorCisgICAgc2hfaW50Y19sb2NhdGUoZGVzYywgKHVuc2lnbmVkIGxvbmcpb2Zmc2V0LCAm dmFsdWVwLCAKKwkJICAgJmVudW1faWRzLCAmZmlyc3QsICZ3aWR0aCwgJm1vZGUpOworICAgIHJl dHVybiAqdmFsdWVwOworfQorCitzdGF0aWMgdm9pZCBzaF9pbnRjX3dyaXRlKHZvaWQgKm9wYXF1 ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IG9mZnNldCwKKwkJCSAgdWludDMyX3QgdmFsdWUpCit7Cisg ICAgc3RydWN0IGludGNfZGVzYyAqZGVzYyA9IG9wYXF1ZTsKKyAgICBpbnRjX2VudW0gKmVudW1f aWRzID0gTlVMTDsKKyAgICB1bnNpZ25lZCBpbnQgZmlyc3QgPSAwOworICAgIHVuc2lnbmVkIGlu dCB3aWR0aCA9IDA7CisgICAgdW5zaWduZWQgaW50IG1vZGUgPSAwOworICAgIHVuc2lnbmVkIGlu dCBrOworICAgIHVuc2lnbmVkIGxvbmcgKnZhbHVlcDsKKyAgICB1bnNpZ25lZCBsb25nIG1hc2s7 CisKKyNpZmRlZiBERUJVR19JTlRDCisgICAgcHJpbnRmKCJzaF9pbnRjX3dyaXRlIDB4JWx4IDB4 JTA4eFxuIiwgKHVuc2lnbmVkIGxvbmcpIG9mZnNldCwgdmFsdWUpOworI2VuZGlmCisKKyAgICBz aF9pbnRjX2xvY2F0ZShkZXNjLCAodW5zaWduZWQgbG9uZylvZmZzZXQsICZ2YWx1ZXAsIAorCQkg ICAmZW51bV9pZHMsICZmaXJzdCwgJndpZHRoLCAmbW9kZSk7CisKKyAgICBzd2l0Y2ggKG1vZGUp IHsKKyAgICBjYXNlIElOVENfTU9ERV9FTkFCTEVfUkVHIHwgSU5UQ19NT0RFX0lTX1BSSU86IGJy ZWFrOworICAgIGNhc2UgSU5UQ19NT0RFX0RVQUxfU0VUOiB2YWx1ZSB8PSAqdmFsdWVwOyBicmVh azsKKyAgICBjYXNlIElOVENfTU9ERV9EVUFMX0NMUjogdmFsdWUgPSAqdmFsdWVwICYgfnZhbHVl OyBicmVhazsKKyAgICBkZWZhdWx0OiBhc3NlcnQoMCk7CisgICAgfQorCisgICAgZm9yIChrID0g MDsgayA8PSBmaXJzdDsgaysrKSB7CisgICAgICAgIG1hc2sgPSAoKDEgPDwgd2lkdGgpIC0gMSkg PDwgKChmaXJzdCAtIGspICogd2lkdGgpOworCisJaWYgKCgqdmFsdWVwICYgbWFzaykgPT0gKHZh bHVlICYgbWFzaykpCisgICAgICAgICAgICBjb250aW51ZTsKKyNpZiAwCisJcHJpbnRmKCJrID0g JWQsIGZpcnN0ID0gJWQsIGVudW0gPSAlZCwgbWFzayA9IDB4JTA4eFxuIiwgCisJICAgICAgIGss IGZpcnN0LCBlbnVtX2lkc1trXSwgKHVuc2lnbmVkIGludCltYXNrKTsKKyNlbmRpZgorICAgICAg ICBzaF9pbnRjX3RvZ2dsZShkZXNjLCBlbnVtX2lkc1trXSwgdmFsdWUgJiBtYXNrLCAwKTsKKyAg ICB9CisKKyAgICAqdmFsdWVwID0gdmFsdWU7CisKKyNpZmRlZiBERUJVR19JTlRDCisgICAgcHJp bnRmKCJzaF9pbnRjX3dyaXRlIDB4JWx4IC0+IDB4JTA4eFxuIiwgKHVuc2lnbmVkIGxvbmcpIG9m ZnNldCwgdmFsdWUpOworI2VuZGlmCit9CisKK3N0YXRpYyBDUFVSZWFkTWVtb3J5RnVuYyAqc2hf aW50Y19yZWFkZm5bXSA9IHsKKyAgICBzaF9pbnRjX3JlYWQsCisgICAgc2hfaW50Y19yZWFkLAor ICAgIHNoX2ludGNfcmVhZAorfTsKKworc3RhdGljIENQVVdyaXRlTWVtb3J5RnVuYyAqc2hfaW50 Y193cml0ZWZuW10gPSB7CisgICAgc2hfaW50Y193cml0ZSwKKyAgICBzaF9pbnRjX3dyaXRlLAor ICAgIHNoX2ludGNfd3JpdGUKK307CisKK3N0cnVjdCBpbnRjX3NvdXJjZSAqc2hfaW50Y19zb3Vy Y2Uoc3RydWN0IGludGNfZGVzYyAqZGVzYywgaW50Y19lbnVtIGlkKQoreworICAgIGlmIChpZCkK KyAgICAgICAgcmV0dXJuIGRlc2MtPnNvdXJjZXMgKyBpZDsKKworICAgIHJldHVybiBOVUxMOwor fQorCitzdGF0aWMgdm9pZCBzaF9pbnRjX3JlZ2lzdGVyKHN0cnVjdCBpbnRjX2Rlc2MgKmRlc2Ms IAorCQkJICAgICB1bnNpZ25lZCBsb25nIGFkZHJlc3MpCit7CisgICAgaWYgKGFkZHJlc3MpCisg ICAgICAgIGNwdV9yZWdpc3Rlcl9waHlzaWNhbF9tZW1vcnkoSU5UQ19BNyhhZGRyZXNzKSwgNCwg ZGVzYy0+aW9tZW10eXBlKTsKK30KKworc3RhdGljIHZvaWQgc2hfaW50Y19yZWdpc3Rlcl9zb3Vy Y2Uoc3RydWN0IGludGNfZGVzYyAqZGVzYywKKwkJCQkgICAgaW50Y19lbnVtIHNvdXJjZSwKKwkJ CQkgICAgc3RydWN0IGludGNfZ3JvdXAgKmdyb3VwcywKKwkJCQkgICAgaW50IG5yX2dyb3VwcykK K3sKKyAgICB1bnNpZ25lZCBpbnQgaSwgazsKKyAgICBzdHJ1Y3QgaW50Y19zb3VyY2UgKnM7CisK KyAgICBpZiAoZGVzYy0+bWFza19yZWdzKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBkZXNj LT5ucl9tYXNrX3JlZ3M7IGkrKykgeworCSAgICBzdHJ1Y3QgaW50Y19tYXNrX3JlZyAqbXIgPSBk ZXNjLT5tYXNrX3JlZ3MgKyBpOworCisJICAgIGZvciAoayA9IDA7IGsgPCBJTlRDX0FSUkFZKG1y LT5lbnVtX2lkcyk7IGsrKykgeworICAgICAgICAgICAgICAgIGlmIChtci0+ZW51bV9pZHNba10g IT0gc291cmNlKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworCQlzID0gc2hfaW50 Y19zb3VyY2UoZGVzYywgbXItPmVudW1faWRzW2tdKTsKKwkJaWYgKHMpCisgICAgICAgICAgICAg ICAgICAgIHMtPmVuYWJsZV9tYXgrKzsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgICBpZiAoZGVz Yy0+cHJpb19yZWdzKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBkZXNjLT5ucl9wcmlvX3Jl Z3M7IGkrKykgeworCSAgICBzdHJ1Y3QgaW50Y19wcmlvX3JlZyAqcHIgPSBkZXNjLT5wcmlvX3Jl Z3MgKyBpOworCisJICAgIGZvciAoayA9IDA7IGsgPCBJTlRDX0FSUkFZKHByLT5lbnVtX2lkcyk7 IGsrKykgeworICAgICAgICAgICAgICAgIGlmIChwci0+ZW51bV9pZHNba10gIT0gc291cmNlKQor ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworCQlzID0gc2hfaW50Y19zb3VyY2UoZGVz YywgcHItPmVudW1faWRzW2tdKTsKKwkJaWYgKHMpCisgICAgICAgICAgICAgICAgICAgIHMtPmVu YWJsZV9tYXgrKzsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgICBpZiAoZ3JvdXBzKSB7CisgICAg ICAgIGZvciAoaSA9IDA7IGkgPCBucl9ncm91cHM7IGkrKykgeworCSAgICBzdHJ1Y3QgaW50Y19n cm91cCAqZ3IgPSBncm91cHMgKyBpOworCisJICAgIGZvciAoayA9IDA7IGsgPCBJTlRDX0FSUkFZ KGdyLT5lbnVtX2lkcyk7IGsrKykgeworICAgICAgICAgICAgICAgIGlmIChnci0+ZW51bV9pZHNb a10gIT0gc291cmNlKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworCQlzID0gc2hf aW50Y19zb3VyY2UoZGVzYywgZ3ItPmVudW1faWRzW2tdKTsKKwkJaWYgKHMpCisgICAgICAgICAg ICAgICAgICAgIHMtPmVuYWJsZV9tYXgrKzsKKwkgICAgfQorCX0KKyAgICB9CisKK30KKwordm9p ZCBzaF9pbnRjX3JlZ2lzdGVyX3NvdXJjZXMoc3RydWN0IGludGNfZGVzYyAqZGVzYywKKwkJCSAg ICAgIHN0cnVjdCBpbnRjX3ZlY3QgKnZlY3RvcnMsCisJCQkgICAgICBpbnQgbnJfdmVjdG9ycywK KwkJCSAgICAgIHN0cnVjdCBpbnRjX2dyb3VwICpncm91cHMsCisJCQkgICAgICBpbnQgbnJfZ3Jv dXBzKQoreworICAgIHVuc2lnbmVkIGludCBpLCBrOworICAgIHN0cnVjdCBpbnRjX3NvdXJjZSAq czsKKworICAgIGZvciAoaSA9IDA7IGkgPCBucl92ZWN0b3JzOyBpKyspIHsKKwlzdHJ1Y3QgaW50 Y192ZWN0ICp2ZWN0ID0gdmVjdG9ycyArIGk7CisKKwlzaF9pbnRjX3JlZ2lzdGVyX3NvdXJjZShk ZXNjLCB2ZWN0LT5lbnVtX2lkLCBncm91cHMsIG5yX2dyb3Vwcyk7CisJcyA9IHNoX2ludGNfc291 cmNlKGRlc2MsIHZlY3QtPmVudW1faWQpOworCWlmIChzKQorCSAgICBzLT52ZWN0ID0gdmVjdC0+ dmVjdDsKKworI2lmZGVmIERFQlVHX0lOVEMKKwlwcmludGYoInNoX2ludGM6IHJlZ2lzdGVyZWQg c291cmNlICVkIC0+IDB4JTA0eCAoJWQvJWQpXG4iLAorCSAgICAgICB2ZWN0LT5lbnVtX2lkLCBz LT52ZWN0LCBzLT5lbmFibGVfY291bnQsIHMtPmVuYWJsZV9tYXgpOworI2VuZGlmCisgICAgfQor CisgICAgaWYgKGdyb3VwcykgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnJfZ3JvdXBzOyBp KyspIHsKKwkgICAgc3RydWN0IGludGNfZ3JvdXAgKmdyID0gZ3JvdXBzICsgaTsKKworCSAgICBz ID0gc2hfaW50Y19zb3VyY2UoZGVzYywgZ3ItPmVudW1faWQpOworCSAgICBzLT5uZXh0X2VudW1f aWQgPSBnci0+ZW51bV9pZHNbMF07CisKKwkgICAgZm9yIChrID0gMTsgayA8IElOVENfQVJSQVko Z3ItPmVudW1faWRzKTsgaysrKSB7CisgICAgICAgICAgICAgICAgaWYgKCFnci0+ZW51bV9pZHNb a10pCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisJCXMgPSBzaF9pbnRjX3NvdXJj ZShkZXNjLCBnci0+ZW51bV9pZHNbayAtIDFdKTsKKwkJcy0+bmV4dF9lbnVtX2lkID0gZ3ItPmVu dW1faWRzW2tdOworCSAgICB9CisKKyNpZmRlZiBERUJVR19JTlRDCisJICAgIHByaW50Zigic2hf aW50YzogcmVnaXN0ZXJlZCBncm91cCAlZCAoJWQvJWQpXG4iLAorCQkgICBnci0+ZW51bV9pZCwg cy0+ZW5hYmxlX2NvdW50LCBzLT5lbmFibGVfbWF4KTsKKyNlbmRpZgorCX0KKyAgICB9Cit9CisK K2ludCBzaF9pbnRjX2luaXQoc3RydWN0IGludGNfZGVzYyAqZGVzYywKKwkJIGludCBucl9zb3Vy Y2VzLAorCQkgc3RydWN0IGludGNfbWFza19yZWcgKm1hc2tfcmVncywKKwkJIGludCBucl9tYXNr X3JlZ3MsCisJCSBzdHJ1Y3QgaW50Y19wcmlvX3JlZyAqcHJpb19yZWdzLAorCQkgaW50IG5yX3By aW9fcmVncykKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGRlc2MtPm5yX3NvdXJjZXMg PSBucl9zb3VyY2VzOworICAgIGRlc2MtPm1hc2tfcmVncyA9IG1hc2tfcmVnczsKKyAgICBkZXNj LT5ucl9tYXNrX3JlZ3MgPSBucl9tYXNrX3JlZ3M7CisgICAgZGVzYy0+cHJpb19yZWdzID0gcHJp b19yZWdzOworICAgIGRlc2MtPm5yX3ByaW9fcmVncyA9IG5yX3ByaW9fcmVnczsKKworICAgIGkg PSBzaXplb2Yoc3RydWN0IGludGNfc291cmNlKSAqIG5yX3NvdXJjZXM7CisgICAgZGVzYy0+c291 cmNlcyA9IG1hbGxvYyhpKTsKKyAgICBpZiAoIWRlc2MtPnNvdXJjZXMpCisgICAgICAgIHJldHVy biAtMTsKKworICAgIG1lbXNldChkZXNjLT5zb3VyY2VzLCAwLCBpKTsKKyAKKyAgICBkZXNjLT5p b21lbXR5cGUgPSBjcHVfcmVnaXN0ZXJfaW9fbWVtb3J5KDAsIHNoX2ludGNfcmVhZGZuLAorCQkJ CQkgICAgIHNoX2ludGNfd3JpdGVmbiwgZGVzYyk7CisgICAgaWYgKGRlc2MtPm1hc2tfcmVncykg eworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZGVzYy0+bnJfbWFza19yZWdzOyBpKyspIHsKKwkg ICAgc3RydWN0IGludGNfbWFza19yZWcgKm1yID0gZGVzYy0+bWFza19yZWdzICsgaTsKKworCSAg ICBzaF9pbnRjX3JlZ2lzdGVyKGRlc2MsIG1yLT5zZXRfcmVnKTsKKwkgICAgc2hfaW50Y19yZWdp c3RlcihkZXNjLCBtci0+Y2xyX3JlZyk7CisJfQorICAgIH0KKworICAgIGlmIChkZXNjLT5wcmlv X3JlZ3MpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGRlc2MtPm5yX3ByaW9fcmVnczsgaSsr KSB7CisJICAgIHN0cnVjdCBpbnRjX3ByaW9fcmVnICpwciA9IGRlc2MtPnByaW9fcmVncyArIGk7 CisKKwkgICAgc2hfaW50Y19yZWdpc3RlcihkZXNjLCBwci0+c2V0X3JlZyk7CisJICAgIHNoX2lu dGNfcmVnaXN0ZXIoZGVzYywgcHItPmNscl9yZWcpOworCX0KKyAgICB9CisKKyAgICByZXR1cm4g MDsKK30KLS0tIC9kZXYvbnVsbAorKysgd29yay9ody9zaF9pbnRjLmgJMjAwNy0xMC0wMyAxOTow MjowMC4wMDAwMDAwMDAgKzA5MDAKQEAgLTAsMCArMSw2OSBAQAorI2lmbmRlZiBfX1NIX0lOVENf SF9fCisjZGVmaW5lIF9fU0hfSU5UQ19IX18KKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIGludGNf ZW51bTsKKworc3RydWN0IGludGNfdmVjdCB7CisgICAgaW50Y19lbnVtIGVudW1faWQ7CisgICAg dW5zaWduZWQgc2hvcnQgdmVjdDsKK307CisKKyNkZWZpbmUgSU5UQ19WRUNUKGVudW1faWQsIHZl Y3QpIHsgZW51bV9pZCwgdmVjdCB9CisKK3N0cnVjdCBpbnRjX2dyb3VwIHsKKyAgICBpbnRjX2Vu dW0gZW51bV9pZDsKKyAgICBpbnRjX2VudW0gZW51bV9pZHNbMzJdOworfTsKKworI2RlZmluZSBJ TlRDX0dST1VQKGVudW1faWQsIGlkcy4uLikgeyBlbnVtX2lkLCB7IGlkcyB9IH0KKworc3RydWN0 IGludGNfbWFza19yZWcgeworICAgIHVuc2lnbmVkIGxvbmcgc2V0X3JlZywgY2xyX3JlZywgcmVn X3dpZHRoOworICAgIGludGNfZW51bSBlbnVtX2lkc1szMl07CisgICAgdW5zaWduZWQgbG9uZyB2 YWx1ZTsKK307CisKK3N0cnVjdCBpbnRjX3ByaW9fcmVnIHsKKyAgICB1bnNpZ25lZCBsb25nIHNl dF9yZWcsIGNscl9yZWcsIHJlZ193aWR0aCwgZmllbGRfd2lkdGg7CisgICAgaW50Y19lbnVtIGVu dW1faWRzWzE2XTsKKyAgICB1bnNpZ25lZCBsb25nIHZhbHVlOworfTsKKworI2RlZmluZSBfSU5U Q19BUlJBWShhKSBhLCBzaXplb2YoYSkvc2l6ZW9mKCphKQorCitzdHJ1Y3QgaW50Y19zb3VyY2Ug eworICAgIHVuc2lnbmVkIHNob3J0IHZlY3Q7CisgICAgaW50Y19lbnVtIG5leHRfZW51bV9pZDsK KworICAgIGludCBhc3NlcnRlZDsKKyAgICBpbnQgZW5hYmxlX2NvdW50OworICAgIGludCBlbmFi bGVfbWF4OworfTsKKworc3RydWN0IGludGNfZGVzYyB7CisgICAgc3RydWN0IGludGNfc291cmNl ICpzb3VyY2VzOworICAgIGludCBucl9zb3VyY2VzOworICAgIHN0cnVjdCBpbnRjX21hc2tfcmVn ICptYXNrX3JlZ3M7CisgICAgaW50IG5yX21hc2tfcmVnczsKKyAgICBzdHJ1Y3QgaW50Y19wcmlv X3JlZyAqcHJpb19yZWdzOworICAgIGludCBucl9wcmlvX3JlZ3M7CisKKyAgICBpbnQgaW9tZW10 eXBlOworfTsKKworc3RydWN0IGludGNfc291cmNlICpzaF9pbnRjX3NvdXJjZShzdHJ1Y3QgaW50 Y19kZXNjICpkZXNjLCBpbnRjX2VudW0gaWQpOworCit2b2lkIHNoX2ludGNfcmVnaXN0ZXJfc291 cmNlcyhzdHJ1Y3QgaW50Y19kZXNjICpkZXNjLAorCQkJICAgICAgc3RydWN0IGludGNfdmVjdCAq dmVjdG9ycywKKwkJCSAgICAgIGludCBucl92ZWN0b3JzLAorCQkJICAgICAgc3RydWN0IGludGNf Z3JvdXAgKmdyb3VwcywKKwkJCSAgICAgIGludCBucl9ncm91cHMpOworCitpbnQgc2hfaW50Y19p bml0KHN0cnVjdCBpbnRjX2Rlc2MgKmRlc2MsCisJCSBpbnQgbnJfc291cmNlcywKKwkJIHN0cnVj dCBpbnRjX21hc2tfcmVnICptYXNrX3JlZ3MsCisJCSBpbnQgbnJfbWFza19yZWdzLAorCQkgc3Ry dWN0IGludGNfcHJpb19yZWcgKnByaW9fcmVncywKKwkJIGludCBucl9wcmlvX3JlZ3MpOworCisj ZW5kaWYgLyogX19TSF9JTlRDX0hfXyAqLwo= ------=_Part_22170_33522982.1191407915267--