Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754021AbZJUPij (ORCPT ); Wed, 21 Oct 2009 11:38:39 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753901AbZJUPij (ORCPT ); Wed, 21 Oct 2009 11:38:39 -0400 Received: from mail-iw0-f178.google.com ([209.85.223.178]:58559 "EHLO mail-iw0-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753793AbZJUPii (ORCPT ); Wed, 21 Oct 2009 11:38:38 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=TuxMYqbShBJKKI7D+Wr+TLfamQEnZ/F1NwFwZDP4eK8Dez5hQtMBAQZ3dNKCtiiqEk Q8lvwBmxSL0/VVq+KCnh4mpNPC9V5FLDtK9YriQkdCMzIr44pcgOLcUBjsqBMzeF9jVy Uic9CtvOG2tmrRwbWzvl5q+tYb9wlJKpCTR2c= MIME-Version: 1.0 In-Reply-To: References: Date: Wed, 21 Oct 2009 21:08:41 +0530 Message-ID: Subject: [PATCH] DRTL kernel 2.6.32-rc3 : SCHED_EDF, DI RT-Mutex, Deadline Based Interrupt Handlers From: Soumya K S To: linux-kernel@vger.kernel.org Cc: tglx@linutronix.de, mingo@redhat.com Content-Type: multipart/mixed; boundary=000e0cd56c32f828d3047673c5b5 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 32597 Lines: 449 --000e0cd56c32f828d3047673c5b5 Content-Type: text/plain; charset=ISO-8859-1 Hello All, We would like to present a patch on Deployment specific Real-Time Linux, topic discussed in LinuxCon 2009 The developed framework allows user to specify the real-time strategies for a specific real-time scenario. User specifies configurations like scheduling policy, Deadline-miss Fault-tolerance limit, interrupt priorities, etc. Real-time applications use onetime gateway to notify kernel that they require real-time response. All applications use existing POSIX APIs. DRTL scheduler is time-aware and uses EDF as the scheduling policy. The patch consists of Time aware scheduler having SCHED_EDF as the scheduling policy, Deadline based scheduling for Interrupt handlers, Deadline Inheritance support for RT-Mutexes. The patch is for the kernel version 2.6.32-rc3. It has been tested on OMAP3530, ATMEL AT91SAM9261 and X86 platforms. We look forward for support and feedback about DRTL and the patch for its feasibility, scalability and performance. Many Thanks, Soumya KS Shubhro Sinha --000e0cd56c32f828d3047673c5b5 Content-Type: application/octet-stream; name=README Content-Disposition: attachment; filename=README Content-Transfer-Encoding: base64 X-Attachment-Id: f_g128df0c0 UGF0Y2ggZm9yIERlcGxveW1lbnQgU3BlY2lmaWMgUmVhbC1UaW1lIExpbnV4IFN1cHBvcnQKU291 bXlhIEtTIGFuZCBTaHViaHJvIFNpbmhhIDxzc2tzLm10QGdtYWlsLmNvbT4K --000e0cd56c32f828d3047673c5b5 Content-Type: application/octet-stream; name=drtl_patch_2010_1 Content-Disposition: attachment; filename=drtl_patch_2010_1 Content-Transfer-Encoding: base64 X-Attachment-Id: f_g128rssl2 ZGlmZiAtTmF1ciBsaW51eC0yLjYuMzItcmMzL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3NpZ25hbC5o IGxpbnV4LTIuNi4zMi1yYzMtZHJ0bC9hcmNoL2FybS9pbmNsdWRlL2FzbS9zaWduYWwuaAotLS0g bGludXgtMi42LjMyLXJjMy9hcmNoL2FybS9pbmNsdWRlL2FzbS9zaWduYWwuaAkyMDA5LTEwLTA1 IDA1OjQyOjMwLjAwMDAwMDAwMCArMDUzMAorKysgbGludXgtMi42LjMyLXJjMy1kcnRsL2FyY2gv YXJtL2luY2x1ZGUvYXNtL3NpZ25hbC5oCTIwMDktMTAtMjAgMTA6NDA6MTYuMDAwMDAwMDAwICsw NTMwCkBAIC03MCw2ICs3MCw3IEBACiAjZGVmaW5lIFNJR1JUTUlOCTMyCiAjZGVmaW5lIFNJR1JU TUFYCV9OU0lHCiAKKyNkZWZpbmUgU0lHTUlTU0RFQUQJU0lHUlRNSU4gKyA0CiAjZGVmaW5lIFNJ R1NXSQkJMzIKIAogLyoKZGlmZiAtTmF1ciBsaW51eC0yLjYuMzItcmMzL2luY2x1ZGUvbGludXgv aW50ZXJydXB0LmggbGludXgtMi42LjMyLXJjMy1kcnRsL2luY2x1ZGUvbGludXgvaW50ZXJydXB0 LmgKLS0tIGxpbnV4LTIuNi4zMi1yYzMvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaAkyMDA5LTEw LTA1IDA1OjQyOjMwLjAwMDAwMDAwMCArMDUzMAorKysgbGludXgtMi42LjMyLXJjMy1kcnRsL2lu Y2x1ZGUvbGludXgvaW50ZXJydXB0LmgJMjAwOS0xMC0yMCAxMTo1NTo0NS4wMDAwMDAwMDAgKzA1 MzAKQEAgLTEwNyw2ICsxMDcsMTIgQEAKIH07CiAKIGV4dGVybiBpcnFyZXR1cm5fdCBub19hY3Rp b24oaW50IGNwbCwgdm9pZCAqZGV2X2lkKTsKKyNpZmRlZiBDT05GSUdfU0NIRURfRURGCitleHRl cm4gaW50IF9fbXVzdF9jaGVjaworcmVxdWVzdF9pcnFfZWRmKHVuc2lnbmVkIGludCBpcnEsIGly cV9oYW5kbGVyX3QgaGFuZGxlcixpcnFfaGFuZGxlcl90IHRocmVhZF9mbiwgdW5zaWduZWQgbG9u ZyBmbGFncywKKwkJY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqZGV2LCBzdHJ1Y3QgdGltZXNwZWMg KnRzKTsKKyNlbmRpZgorCiAKICNpZmRlZiBDT05GSUdfR0VORVJJQ19IQVJESVJRUwogZXh0ZXJu IGludCBfX211c3RfY2hlY2sKZGlmZiAtTmF1ciBsaW51eC0yLjYuMzItcmMzL2luY2x1ZGUvbGlu dXgvaXJxLmggbGludXgtMi42LjMyLXJjMy1kcnRsL2luY2x1ZGUvbGludXgvaXJxLmgKLS0tIGxp bnV4LTIuNi4zMi1yYzMvaW5jbHVkZS9saW51eC9pcnEuaAkyMDA5LTEwLTA1IDA1OjQyOjMwLjAw MDAwMDAwMCArMDUzMAorKysgbGludXgtMi42LjMyLXJjMy1kcnRsL2luY2x1ZGUvbGludXgvaXJx LmgJMjAwOS0xMC0yMCAxMTo1MToyNy4wMDAwMDAwMDAgKzA1MzAKQEAgLTIzLDYgKzIzLDcgQEAK ICNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgogI2luY2x1ZGUgPGxpbnV4L3RvcG9sb2d5Lmg+CiAj aW5jbHVkZSA8bGludXgvd2FpdC5oPgorI2luY2x1ZGUgPGxpbnV4L2t0aW1lLmg+CiAKICNpbmNs dWRlIDxhc20vaXJxLmg+CiAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgpAQCAtMjA2LDYgKzIwNyw4 IEBACiAJc3RydWN0IHByb2NfZGlyX2VudHJ5CSpkaXI7CiAjZW5kaWYKIAljb25zdCBjaGFyCQkq bmFtZTsKKwlrdGltZV90CQkJZGVhZGxpbmU7CisJdW5zaWduZWQJCWVkZl9mbGFnOwogfSBfX19f Y2FjaGVsaW5lX2ludGVybm9kZWFsaWduZWRfaW5fc21wOwogCiBleHRlcm4gdm9pZCBhcmNoX2lu aXRfY29weV9jaGlwX2RhdGEoc3RydWN0IGlycV9kZXNjICpvbGRfZGVzYywKZGlmZiAtTmF1ciBs aW51eC0yLjYuMzItcmMzL2luY2x1ZGUvbGludXgvcGxpc3QuaCBsaW51eC0yLjYuMzItcmMzLWRy dGwvaW5jbHVkZS9saW51eC9wbGlzdC5oCi0tLSBsaW51eC0yLjYuMzItcmMzL2luY2x1ZGUvbGlu dXgvcGxpc3QuaAkyMDA5LTEwLTA1IDA1OjQyOjMwLjAwMDAwMDAwMCArMDUzMAorKysgbGludXgt Mi42LjMyLXJjMy1kcnRsL2luY2x1ZGUvbGludXgvcGxpc3QuaAkyMDA5LTEwLTIwIDExOjAwOjMx LjAwMDAwMDAwMCArMDUzMApAQCAtODcsNiArODcsOCBAQAogCiBzdHJ1Y3QgcGxpc3Rfbm9kZSB7 CiAJaW50CQkJcHJpbzsKKwlsb25nIGxvbmcgaW50CQlkZWFkbGluZTsKKwlpbnQJCQlwb2xpY3k7 CiAJc3RydWN0IHBsaXN0X2hlYWQJcGxpc3Q7CiB9OwogCkBAIC0xNDIsOSArMTQ0LDExIEBACiAg KiBAbm9kZToJJnN0cnVjdCBwbGlzdF9ub2RlIHBvaW50ZXIKICAqIEBwcmlvOglpbml0aWFsIG5v ZGUgcHJpb3JpdHkKICAqLwotc3RhdGljIGlubGluZSB2b2lkIHBsaXN0X25vZGVfaW5pdChzdHJ1 Y3QgcGxpc3Rfbm9kZSAqbm9kZSwgaW50IHByaW8pCitzdGF0aWMgaW5saW5lIHZvaWQgcGxpc3Rf bm9kZV9pbml0KHN0cnVjdCBwbGlzdF9ub2RlICpub2RlLCBpbnQgcHJpbywgbG9uZyBsb25nIGlu dCBkZWFkbGluZSwgaW50IHBvbGljeSkKIHsKIAlub2RlLT5wcmlvID0gcHJpbzsKKwlub2RlLT5k ZWFkbGluZSA9IGRlYWRsaW5lOworCW5vZGUtPnBvbGljeSA9IHBvbGljeTsKIAlwbGlzdF9oZWFk X2luaXQoJm5vZGUtPnBsaXN0LCBOVUxMKTsKIH0KIApkaWZmIC1OYXVyIGxpbnV4LTIuNi4zMi1y YzMvaW5jbHVkZS9saW51eC9zY2hlZC5oIGxpbnV4LTIuNi4zMi1yYzMtZHJ0bC9pbmNsdWRlL2xp bnV4L3NjaGVkLmgKLS0tIGxpbnV4LTIuNi4zMi1yYzMvaW5jbHVkZS9saW51eC9zY2hlZC5oCTIw MDktMTAtMDUgMDU6NDI6MzAuMDAwMDAwMDAwICswNTMwCisrKyBsaW51eC0yLjYuMzItcmMzLWRy dGwvaW5jbHVkZS9saW51eC9zY2hlZC5oCTIwMDktMTAtMjAgMTE6MDM6NTEuMDAwMDAwMDAwICsw NTMwCkBAIC0zNiw2ICszNiw3IEBACiAjZGVmaW5lIFNDSEVEX0ZJRk8JCTEKICNkZWZpbmUgU0NI RURfUlIJCTIKICNkZWZpbmUgU0NIRURfQkFUQ0gJCTMKKyNkZWZpbmUgU0NIRURfRURGCQkxMjMK IC8qIFNDSEVEX0lTTzogcmVzZXJ2ZWQgYnV0IG5vdCBpbXBsZW1lbnRlZCB5ZXQgKi8KICNkZWZp bmUgU0NIRURfSURMRQkJNQogLyogQ2FuIGJlIE9SZWQgaW4gdG8gbWFrZSBzdXJlIHRoZSBwcm9j ZXNzIGlzIHJldmVydGVkIGJhY2sgdG8gU0NIRURfTk9STUFMIG9uIGZvcmsgKi8KQEAgLTQzLDkg KzQ0LDYgQEAKIAogI2lmZGVmIF9fS0VSTkVMX18KIAotc3RydWN0IHNjaGVkX3BhcmFtIHsKLQlp bnQgc2NoZWRfcHJpb3JpdHk7Ci19OwogCiAjaW5jbHVkZSA8YXNtL3BhcmFtLmg+CS8qIGZvciBI WiAqLwogCkBAIC0xMDIsNiArMTAwLDExIEBACiBzdHJ1Y3QgYnRzX2NvbnRleHQ7CiBzdHJ1Y3Qg cGVyZl9ldmVudF9jb250ZXh0OwogCitzdHJ1Y3Qgc2NoZWRfcGFyYW0geworCWludCBzY2hlZF9w cmlvcml0eTsKKwlzdHJ1Y3QgdGltZXNwZWMgZGVhZGxpbmU7Cit9OworCiAvKgogICogTGlzdCBv ZiBmbGFncyB3ZSB3YW50IHRvIHNoYXJlIGZvciBrZXJuZWwgdGhyZWFkcywKICAqIGlmIG9ubHkg YmVjYXVzZSB0aGV5IGFyZSBub3QgdXNlZCBieSB0aGVtIGFueXdheS4KQEAgLTE5NSw2ICsxOTgs NyBAQAogI2RlZmluZSBUQVNLX0RFQUQJCTY0CiAjZGVmaW5lIFRBU0tfV0FLRUtJTEwJCTEyOAog I2RlZmluZSBUQVNLX1dBS0lORwkJMjU2CisjZGVmaW5lIEVYSVRfTUlTU19ERUFETElORQk1MTIJ CiAKIC8qIENvbnZlbmllbmNlIG1hY3JvcyBmb3IgdGhlIHNha2Ugb2Ygc2V0X3Rhc2tfc3RhdGUg Ki8KICNkZWZpbmUgVEFTS19LSUxMQUJMRQkJKFRBU0tfV0FLRUtJTEwgfCBUQVNLX1VOSU5URVJS VVBUSUJMRSkKQEAgLTEyMDEsNiArMTIwNSw5IEBACiAJaW50IG5yX2NwdXNfYWxsb3dlZDsKIAog CXN0cnVjdCBzY2hlZF9ydF9lbnRpdHkgKmJhY2s7CisjaWZkZWYgQ09ORklHX1NDSEVEX0VERgor CXN0cnVjdCByYl9ub2RlIGVkZl9ub2RlOworI2VuZGlmCiAjaWZkZWYgQ09ORklHX1JUX0dST1VQ X1NDSEVECiAJc3RydWN0IHNjaGVkX3J0X2VudGl0eQkqcGFyZW50OwogCS8qIHJxIG9uIHdoaWNo IHRoaXMgZW50aXR5IGlzICh0byBiZSkgcXVldWVkOiAqLwpAQCAtMTIzMiw2ICsxMjM5LDExIEBA CiAJY29uc3Qgc3RydWN0IHNjaGVkX2NsYXNzICpzY2hlZF9jbGFzczsKIAlzdHJ1Y3Qgc2NoZWRf ZW50aXR5IHNlOwogCXN0cnVjdCBzY2hlZF9ydF9lbnRpdHkgcnQ7CisjaWZkZWYgQ09ORklHX1ND SEVEX0VERgorCWt0aW1lX3QgZWRmX2RlYWRsaW5lOworCWt0aW1lX3QgcnRfZGVhZGxpbmU7CisJ c3RydWN0IHRpbWVzcGVjIG9yaWdfZGVhZGxpbmU7CisjZW5kaWYKIAogI2lmZGVmIENPTkZJR19Q UkVFTVBUX05PVElGSUVSUwogCS8qIGxpc3Qgb2Ygc3RydWN0IHByZWVtcHRfbm90aWZpZXI6ICov CkBAIC0xNzMzLDYgKzE3NDUsNyBAQAogI2RlZmluZSBQRl9FWElUSU5HCTB4MDAwMDAwMDQJLyog Z2V0dGluZyBzaHV0IGRvd24gKi8KICNkZWZpbmUgUEZfRVhJVFBJRE9ORQkweDAwMDAwMDA4CS8q IHBpIGV4aXQgZG9uZSBvbiBzaHV0IGRvd24gKi8KICNkZWZpbmUgUEZfVkNQVQkJMHgwMDAwMDAx MAkvKiBJJ20gYSB2aXJ0dWFsIENQVSAqLworI2RlZmluZQlQRl9IQVJESVJRCTB4MDAwMDAwMjAJ LyogaGFyZGlycSBjb250ZXh0ICovCiAjZGVmaW5lIFBGX0ZPUktOT0VYRUMJMHgwMDAwMDA0MAkv KiBmb3JrZWQgYnV0IGRpZG4ndCBleGVjICovCiAjZGVmaW5lIFBGX01DRV9QUk9DRVNTICAweDAw MDAwMDgwICAgICAgLyogcHJvY2VzcyBwb2xpY3kgb24gbWNlIGVycm9ycyAqLwogI2RlZmluZSBQ Rl9TVVBFUlBSSVYJMHgwMDAwMDEwMAkvKiB1c2VkIHN1cGVyLXVzZXIgcHJpdmlsZWdlcyAqLwpA QCAtMTkzMiw3ICsxOTQ1LDcgQEAKIAogI2lmZGVmIENPTkZJR19SVF9NVVRFWEVTCiBleHRlcm4g aW50IHJ0X211dGV4X2dldHByaW8oc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKLWV4dGVybiB2b2lk IHJ0X211dGV4X3NldHByaW8oc3RydWN0IHRhc2tfc3RydWN0ICpwLCBpbnQgcHJpbyk7CitleHRl cm4gdm9pZCBydF9tdXRleF9zZXRwcmlvKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgaW50IHByaW8s IGt0aW1lX3QgKmRlYWRsaW5lKTsKIGV4dGVybiB2b2lkIHJ0X211dGV4X2FkanVzdF9waShzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnApOwogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgaW50IHJ0X211dGV4X2dl dHByaW8oc3RydWN0IHRhc2tfc3RydWN0ICpwKQpkaWZmIC1OYXVyIGxpbnV4LTIuNi4zMi1yYzMv aW5pdC9LY29uZmlnIGxpbnV4LTIuNi4zMi1yYzMtZHJ0bC9pbml0L0tjb25maWcKLS0tIGxpbnV4 LTIuNi4zMi1yYzMvaW5pdC9LY29uZmlnCTIwMDktMTAtMDUgMDU6NDI6MzAuMDAwMDAwMDAwICsw NTMwCisrKyBsaW51eC0yLjYuMzItcmMzLWRydGwvaW5pdC9LY29uZmlnCTIwMDktMTAtMjAgMTA6 NDA6MTYuMDAwMDAwMDAwICswNTMwCkBAIC00MjUsNiArNDI1LDEyIEBACiAjCiBjb25maWcgSEFW RV9VTlNUQUJMRV9TQ0hFRF9DTE9DSwogCWJvb2wKKwkKK2NvbmZpZyBTQ0hFRF9FREYKKwlib29s ICJFREYgU2NoZWR1bGVyIFN1cHBvcnQiCisJZGVmYXVsdCBuCisJZGVwZW5kcyBvbiAhR1JPVVBf U0NIRUQKKwlkZXBlbmRzIG9uICFTTVAKIAogY29uZmlnIEdST1VQX1NDSEVECiAJYm9vbCAiR3Jv dXAgQ1BVIHNjaGVkdWxlciIKZGlmZiAtTmF1ciBsaW51eC0yLjYuMzItcmMzL2luaXQvbWFpbi5j IGxpbnV4LTIuNi4zMi1yYzMtZHJ0bC9pbml0L21haW4uYwotLS0gbGludXgtMi42LjMyLXJjMy9p bml0L21haW4uYwkyMDA5LTEwLTA1IDA1OjQyOjMwLjAwMDAwMDAwMCArMDUzMAorKysgbGludXgt Mi42LjMyLXJjMy1kcnRsL2luaXQvbWFpbi5jCTIwMDktMTAtMjAgMTA6NDA6MTYuMDAwMDAwMDAw ICswNTMwCkBAIC0xMDEsNiArMTAxLDEwIEBACiBlbnVtIHN5c3RlbV9zdGF0ZXMgc3lzdGVtX3N0 YXRlIF9fcmVhZF9tb3N0bHk7CiBFWFBPUlRfU1lNQk9MKHN5c3RlbV9zdGF0ZSk7CiAKKyNpZmRl ZiBDT05GSUdfU0NIRURfRURGCit2b2lkIGt0aHJlYWRfZGVhZG1pc3Modm9pZCk7CisjZW5kaWYK KwogLyoKICAqIEJvb3QgY29tbWFuZC1saW5lIGFyZ3VtZW50cwogICovCkBAIC00MjgsNiArNDMy LDkgQEAKIAludW1hX2RlZmF1bHRfcG9saWN5KCk7CiAJcGlkID0ga2VybmVsX3RocmVhZChrdGhy ZWFkZCwgTlVMTCwgQ0xPTkVfRlMgfCBDTE9ORV9GSUxFUyk7CiAJa3RocmVhZGRfdGFzayA9IGZp bmRfdGFza19ieV9waWRfbnMocGlkLCAmaW5pdF9waWRfbnMpOworI2lmZGVmIENPTkZJR19TQ0hF RF9FREYKKwlrZXJuZWxfdGhyZWFkKGt0aHJlYWRfZGVhZG1pc3MsIE5VTEwsIENMT05FX0ZTIHwg Q0xPTkVfRklMRVMpOworI2VuZGlmCiAJdW5sb2NrX2tlcm5lbCgpOwogCiAJLyoKZGlmZiAtTmF1 ciBsaW51eC0yLjYuMzItcmMzL2tlcm5lbC9mdXRleC5jIGxpbnV4LTIuNi4zMi1yYzMtZHJ0bC9r ZXJuZWwvZnV0ZXguYwotLS0gbGludXgtMi42LjMyLXJjMy9rZXJuZWwvZnV0ZXguYwkyMDA5LTEw LTA1IDA1OjQyOjMwLjAwMDAwMDAwMCArMDUzMAorKysgbGludXgtMi42LjMyLXJjMy1kcnRsL2tl cm5lbC9mdXRleC5jCTIwMDktMTAtMjAgMTE6MTI6MTguMDAwMDAwMDAwICswNTMwCkBAIC0xMzg0 LDcgKzEzODQsNyBAQAogCSAqLwogCXByaW8gPSBtaW4oY3VycmVudC0+bm9ybWFsX3ByaW8sIE1B WF9SVF9QUklPKTsKIAotCXBsaXN0X25vZGVfaW5pdCgmcS0+bGlzdCwgcHJpbyk7CisJcGxpc3Rf bm9kZV9pbml0KCZxLT5saXN0LCBwcmlvLCAwLCAwKTsKICNpZmRlZiBDT05GSUdfREVCVUdfUElf TElTVAogCXEtPmxpc3QucGxpc3QubG9jayA9ICZoYi0+bG9jazsKICNlbmRpZgpkaWZmIC1OYXVy IGxpbnV4LTIuNi4zMi1yYzMva2VybmVsL2lycS9tYW5hZ2UuYyBsaW51eC0yLjYuMzItcmMzLWRy dGwva2VybmVsL2lycS9tYW5hZ2UuYwotLS0gbGludXgtMi42LjMyLXJjMy9rZXJuZWwvaXJxL21h bmFnZS5jCTIwMDktMTAtMDUgMDU6NDI6MzAuMDAwMDAwMDAwICswNTMwCisrKyBsaW51eC0yLjYu MzItcmMzLWRydGwva2VybmVsL2lycS9tYW5hZ2UuYwkyMDA5LTEwLTIwIDEwOjQxOjA2LjAwMDAw MDAwMCArMDUzMApAQCAtNTM2LDcgKzUzNiwxNiBAQAogCXN0cnVjdCBpcnFfZGVzYyAqZGVzYyA9 IGlycV90b19kZXNjKGFjdGlvbi0+aXJxKTsKIAlpbnQgd2FrZSwgb25lc2hvdCA9IGRlc2MtPnN0 YXR1cyAmIElSUV9PTkVTSE9UOwogCi0Jc2NoZWRfc2V0c2NoZWR1bGVyKGN1cnJlbnQsIFNDSEVE X0ZJRk8sICZwYXJhbSk7CisJY3VycmVudC0+ZmxhZ3MgfD0gUEZfSEFSRElSUTsKKwlpZiAoZGVz Yy0+ZWRmX2ZsYWcpCisJeworCQlwYXJhbS5kZWFkbGluZS50dl9zZWMgPSBkZXNjLT5kZWFkbGlu ZS50di5zZWM7CisgICAgICAgICAgICAgICBwYXJhbS5kZWFkbGluZS50dl9uc2VjID0gZGVzYy0+ ZGVhZGxpbmUudHYubnNlYzsKKyAgICAgICAgICAgICAgIHNjaGVkX3NldHNjaGVkdWxlcihjdXJy ZW50LCBTQ0hFRF9FREYsICZwYXJhbSk7CisJfQorCWVsc2UgCisJCXNjaGVkX3NldHNjaGVkdWxl cihjdXJyZW50LCBTQ0hFRF9GSUZPLCAmcGFyYW0pOworCiAJY3VycmVudC0+aXJxYWN0aW9uID0g YWN0aW9uOwogCiAJd2hpbGUgKCFpcnFfd2FpdF9mb3JfaW50ZXJydXB0KGFjdGlvbikpIHsKQEAg LTEwODgsMyArMTA5NywxOCBAQAogCXJldHVybiByZXR2YWw7CiB9CiBFWFBPUlRfU1lNQk9MKHJl cXVlc3RfdGhyZWFkZWRfaXJxKTsKKworI2lmZGVmIENPTkZJR19TQ0hFRF9FREYKK2ludCByZXF1 ZXN0X2lycV9lZGYgKHVuc2lnbmVkIGludCBpcnEsIGlycV9oYW5kbGVyX3QgaGFuZGxlciwgaXJx X2hhbmRsZXJfdCB0aHJlYWRfZm4sCisgICAgICAgICAgICAgICAgCXVuc2lnbmVkIGxvbmcgaXJx ZmxhZ3MsIGNvbnN0IGNoYXIgKmRldm5hbWUsIHZvaWQgKmRldl9pZCwgc3RydWN0IHRpbWVzcGVj ICpkZWFkbGluZSkKK3sKKyAgICAgICAgc3RydWN0IGlycV9kZXNjICpkZXNjOworICAgICAgICBk ZXNjID0gaXJxX3RvX2Rlc2MoaXJxKTsKKyAgICAgICAgZGVzYy0+ZGVhZGxpbmUudHYuc2VjID0g ZGVhZGxpbmUtPnR2X3NlYzsKKyAgICAgICAgZGVzYy0+ZGVhZGxpbmUudHYubnNlYyA9IGRlYWRs aW5lLT50dl9uc2VjOworICAgICAgICBkZXNjLT5lZGZfZmxhZyA9IDE7CisgICAgICAgIHJldHVy biByZXF1ZXN0X3RocmVhZGVkX2lycSAoaXJxLCBoYW5kbGVyLHRocmVhZF9mbiwgaXJxZmxhZ3Ms IGRldm5hbWUsIGRldl9pZCk7Cit9CitFWFBPUlRfU1lNQk9MKHJlcXVlc3RfaXJxX2VkZik7Cisj ZW5kaWYKKwpkaWZmIC1OYXVyIGxpbnV4LTIuNi4zMi1yYzMva2VybmVsL2t0aHJlYWQuYyBsaW51 eC0yLjYuMzItcmMzLWRydGwva2VybmVsL2t0aHJlYWQuYwotLS0gbGludXgtMi42LjMyLXJjMy9r ZXJuZWwva3RocmVhZC5jCTIwMDktMTAtMDUgMDU6NDI6MzAuMDAwMDAwMDAwICswNTMwCisrKyBs aW51eC0yLjYuMzItcmMzLWRydGwva2VybmVsL2t0aHJlYWQuYwkyMDA5LTEwLTIwIDExOjU0OjEy LjAwMDAwMDAwMCArMDUzMApAQCAtMzMsNiArMzMsMTQgQEAKIAlzdHJ1Y3QgbGlzdF9oZWFkIGxp c3Q7CiB9OwogCisjaWZkZWYgQ09ORklHX1NDSEVEX0VERgorc3RydWN0IGt0aHJlYWRfZGVhZG1p c3NfaW5mbyB7CisJc3RydWN0IGNvbXBsZXRpb24gZGVhZG1pc3M7CisJc3RydWN0IHRhc2tfc3Ry dWN0ICprOworfSBrdGhyZWFkX2RlYWRfaW5mbzsKK0VYUE9SVF9TWU1CT0wgKGt0aHJlYWRfZGVh ZF9pbmZvKTsKKyNlbmRpZgorCiBzdHJ1Y3Qga3RocmVhZCB7CiAJaW50IHNob3VsZF9zdG9wOwog CXN0cnVjdCBjb21wbGV0aW9uIGV4aXRlZDsKQEAgLTI0NywzICsyNTUsMzAgQEAKIAogCXJldHVy biAwOwogfQorCisjaWZkZWYgQ09ORklHX1NDSEVEX0VERgordm9pZCBkZWFkX21pc3NfZGVmYXVs dCAodm9pZCkKK3sKKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayA9IGN1cnJlbnQ7CisJc2V0X3Rh c2tfY29tbShjdXJyZW50LCAiRGVhZG1pc3MgRGVmYXVsdCIpOworCS8qIFRyeSB0byBzdG9wIHRo ZSBydW5hd2F5IHRocmVhZCAqLworCWt0aHJlYWRfc3RvcCAoa3RocmVhZF9kZWFkX2luZm8uayk7 Cit9CisKK3ZvaWQga3RocmVhZF9kZWFkbWlzcyAodm9pZCkKK3sKKwlzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRzayA9IGN1cnJlbnQ7CisKKyAgICAgICAgc2V0X3Rhc2tfY29tbSh0c2ssICJEZWFkbWlz cyBUaHJlYWQiKTsKKyAgICAgICAgaWdub3JlX3NpZ25hbHModHNrKTsKKyAgICAgICAgY3VycmVu dC0+ZmxhZ3MgfD0gUEZfTk9GUkVFWkUgfCBQRl9GUkVFWkVSX05PU0lHOworCisgICAgICAgIHdo aWxlICgxKQorICAgICAgICB7CisgICAgICAgICAgICAgICAgaW5pdF9jb21wbGV0aW9uKCZrdGhy ZWFkX2RlYWRfaW5mby5kZWFkbWlzcyk7CisgICAgICAgICAgICAgICAgd2FpdF9mb3JfY29tcGxl dGlvbiAoJmt0aHJlYWRfZGVhZF9pbmZvLmRlYWRtaXNzKTsKKwkJa3RocmVhZF9ydW4oZGVhZF9t aXNzX2RlZmF1bHQsTlVMTCwiRGVhZG1pc3MgRGVmYXVsdCIpOworCisgICAgICAgIH0KK30JCisj ZW5kaWYKZGlmZiAtTmF1ciBsaW51eC0yLjYuMzItcmMzL2tlcm5lbC9ydG11dGV4LmMgbGludXgt Mi42LjMyLXJjMy1kcnRsL2tlcm5lbC9ydG11dGV4LmMKLS0tIGxpbnV4LTIuNi4zMi1yYzMva2Vy bmVsL3J0bXV0ZXguYwkyMDA5LTEwLTA1IDA1OjQyOjMwLjAwMDAwMDAwMCArMDUzMAorKysgbGlu dXgtMi42LjMyLXJjMy1kcnRsL2tlcm5lbC9ydG11dGV4LmMJMjAwOS0xMC0yMCAxMToxMzoyNC4w MDAwMDAwMDAgKzA1MzAKQEAgLTExMiw2ICsxMTIsMTkgQEAKIAkJICAgdGFzay0+bm9ybWFsX3By aW8pOwogfQogCisjaWZkZWYgQ09ORklHX1NDSEVEX0VERgora3RpbWVfdCBydF9tdXRleF9nZXRk ZWFkbGluZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCit7CisKKyAgICAgICAgaWYgKGxpa2Vs eSghdGFza19oYXNfcGlfd2FpdGVycyh0YXNrKSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g dGFzay0+cnRfZGVhZGxpbmU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGt0aW1lX3N1Yigoa3Rp bWVfdCl0YXNrX3RvcF9waV93YWl0ZXIodGFzayktPnBpX2xpc3RfZW50cnkuZGVhZGxpbmUsdGFz ay0+cnRfZGVhZGxpbmUpLnR2NjQgPCAwICkKKyAgICAgICAgICAgICAgICByZXR1cm4gKGt0aW1l X3QpdGFza190b3BfcGlfd2FpdGVyKHRhc2spLT5waV9saXN0X2VudHJ5LmRlYWRsaW5lOworICAg ICAgICBlbHNlIHJldHVybiB0YXNrLT5ydF9kZWFkbGluZTsKK30KKyNlbmRpZgorCiAvKgogICog QWRqdXN0IHRoZSBwcmlvcml0eSBvZiBhIHRhc2ssIGFmdGVyIGl0cyBwaV93YWl0ZXJzIGdvdCBt b2RpZmllZC4KICAqCkBAIC0xMjIsNyArMTM1LDIwIEBACiAJaW50IHByaW8gPSBydF9tdXRleF9n ZXRwcmlvKHRhc2spOwogCiAJaWYgKHRhc2stPnByaW8gIT0gcHJpbykKLQkJcnRfbXV0ZXhfc2V0 cHJpbyh0YXNrLCBwcmlvKTsKKwkJcnRfbXV0ZXhfc2V0cHJpbyh0YXNrLCBwcmlvLCBOVUxMKTsK KworI2lmZGVmIENPTkZJR19TQ0hFRF9FREYKKwllbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAo KHRhc2tfdG9wX3BpX3dhaXRlcih0YXNrKS0+cGlfbGlzdF9lbnRyeS5wb2xpY3kgPT0gU0NIRURf RURGICYmIHRhc2stPnBvbGljeSA9PSBTQ0hFRF9FREYpCisJCQl8fCAoIXRhc2tfaGFzX3BpX3dh aXRlcnModGFzaykpICYmIHRhc2stPnBvbGljeSA9PSBTQ0hFRF9FREYpIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgIGt0aW1lX3QgZGVhZGxpbmUgPSBydF9tdXRleF9nZXRkZWFkbGluZSh0YXNr KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgha3RpbWVfZXF1YWwgKGRlYWRsaW5lLCB0 YXNrLT5lZGZfZGVhZGxpbmUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydF9t dXRleF9zZXRwcmlvKHRhc2sscHJpbywmZGVhZGxpbmUpOworICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCisKIH0KIAog LyoKQEAgLTQyNCw4ICs0NTAsMTQgQEAKIAlfX3J0X211dGV4X2FkanVzdF9wcmlvKHRhc2spOwog CXdhaXRlci0+dGFzayA9IHRhc2s7CiAJd2FpdGVyLT5sb2NrID0gbG9jazsKLQlwbGlzdF9ub2Rl X2luaXQoJndhaXRlci0+bGlzdF9lbnRyeSwgdGFzay0+cHJpbyk7Ci0JcGxpc3Rfbm9kZV9pbml0 KCZ3YWl0ZXItPnBpX2xpc3RfZW50cnksIHRhc2stPnByaW8pOworI2lmZGVmIENPTkZJR19TQ0hF RF9FREYKKwlwbGlzdF9ub2RlX2luaXQoJndhaXRlci0+bGlzdF9lbnRyeSwgY3VycmVudC0+cHJp byxjdXJyZW50LT5lZGZfZGVhZGxpbmUudHY2NCxjdXJyZW50LT5wb2xpY3kpOworICAgICAgICBw bGlzdF9ub2RlX2luaXQoJndhaXRlci0+cGlfbGlzdF9lbnRyeSwgY3VycmVudC0+cHJpbyxjdXJy ZW50LT5lZGZfZGVhZGxpbmUudHY2NCxjdXJyZW50LT5wb2xpY3kpOworI2Vsc2UKKwlwbGlzdF9u b2RlX2luaXQoJndhaXRlci0+bGlzdF9lbnRyeSwgdGFzay0+cHJpbywgMCwwKTsKKwlwbGlzdF9u b2RlX2luaXQoJndhaXRlci0+cGlfbGlzdF9lbnRyeSwgdGFzay0+cHJpbywwLDApOworI2VuZGlm CisKIAogCS8qIEdldCB0aGUgdG9wIHByaW9yaXR5IHdhaXRlciBvbiB0aGUgbG9jayAqLwogCWlm IChydF9tdXRleF9oYXNfd2FpdGVycyhsb2NrKSkKZGlmZiAtTmF1ciBsaW51eC0yLjYuMzItcmMz L2tlcm5lbC9zY2hlZC5jIGxpbnV4LTIuNi4zMi1yYzMtZHJ0bC9rZXJuZWwvc2NoZWQuYwotLS0g bGludXgtMi42LjMyLXJjMy9rZXJuZWwvc2NoZWQuYwkyMDA5LTEwLTA1IDA1OjQyOjMwLjAwMDAw MDAwMCArMDUzMAorKysgbGludXgtMi42LjMyLXJjMy1kcnRsL2tlcm5lbC9zY2hlZC5jCTIwMDkt MTAtMjAgMTE6MTA6MzMuMDAwMDAwMDAwICswNTMwCkBAIC0xMjEsNyArMTIxLDcgQEAKIAogc3Rh dGljIGlubGluZSBpbnQgcnRfcG9saWN5KGludCBwb2xpY3kpCiB7Ci0JaWYgKHVubGlrZWx5KHBv bGljeSA9PSBTQ0hFRF9GSUZPIHx8IHBvbGljeSA9PSBTQ0hFRF9SUikpCisJaWYgKHVubGlrZWx5 KHBvbGljeSA9PSBTQ0hFRF9GSUZPIHx8IHBvbGljeSA9PSBTQ0hFRF9SUiB8fCBwb2xpY3kgPT0g U0NIRURfRURGKSkKIAkJcmV0dXJuIDE7CiAJcmV0dXJuIDA7CiB9CkBAIC00NTEsNiArNDUxLDkg QEAKIHN0cnVjdCBydF9ycSB7CiAJc3RydWN0IHJ0X3ByaW9fYXJyYXkgYWN0aXZlOwogCXVuc2ln bmVkIGxvbmcgcnRfbnJfcnVubmluZzsKKyNpZmRlZiBDT05GSUdfU0NIRURfRURGCisJdW5zaWdu ZWQgbG9uZyBlZGZfcnVubmluZzsKKyNlbmRpZgogI2lmIGRlZmluZWQgQ09ORklHX1NNUCB8fCBk ZWZpbmVkIENPTkZJR19SVF9HUk9VUF9TQ0hFRAogCXN0cnVjdCB7CiAJCWludCBjdXJyOyAvKiBo aWdoZXN0IHF1ZXVlZCBydCB0YXNrIHByaW8gKi8KQEAgLTQ3OSw2ICs0ODIsMTEgQEAKIAlzdHJ1 Y3QgdGFza19ncm91cCAqdGc7CiAJc3RydWN0IHNjaGVkX3J0X2VudGl0eSAqcnRfc2U7CiAjZW5k aWYKKyNpZmRlZiBDT05GSUdfU0NIRURfRURGCisJc3RydWN0IHJiX3Jvb3QJCWVkZl9yb290Owor CXN0cnVjdCBzY2hlZF9ydF9lbnRpdHkJKmVkZl9uZXh0OworCisjZW5kaWYKIH07CiAKICNpZmRl ZiBDT05GSUdfU01QCkBAIC0xODE2LDYgKzE4MjQsOSBAQAogI2luY2x1ZGUgInNjaGVkX3N0YXRz LmgiCiAjaW5jbHVkZSAic2NoZWRfaWRsZXRhc2suYyIKICNpbmNsdWRlICJzY2hlZF9mYWlyLmMi CisjaWZkZWYgQ09ORklHX1NDSEVEX0VERgorI2luY2x1ZGUgInNjaGVkX2VkZi5jIgorI2VuZGlm CiAjaW5jbHVkZSAic2NoZWRfcnQuYyIKICNpZmRlZiBDT05GSUdfU0NIRURfREVCVUcKICMgaW5j bHVkZSAic2NoZWRfZGVidWcuYyIKQEAgLTI1NjAsOCArMjU3MSwxMiBAQAogCS8qIFdhbnQgdG8g c3RhcnQgd2l0aCBrZXJuZWwgcHJlZW1wdGlvbiBkaXNhYmxlZC4gKi8KIAl0YXNrX3RocmVhZF9p bmZvKHApLT5wcmVlbXB0X2NvdW50ID0gMTsKICNlbmRpZgotCXBsaXN0X25vZGVfaW5pdCgmcC0+ cHVzaGFibGVfdGFza3MsIE1BWF9QUklPKTsKIAorI2lmZGVmIENPTkZJR19TQ0hFRF9FREYKKwlw bGlzdF9ub2RlX2luaXQoJnAtPnB1c2hhYmxlX3Rhc2tzLCBNQVhfUFJJTywgcC0+ZWRmX2RlYWRs aW5lLnR2NjQsIHAtPnBvbGljeSk7CisjZWxzZQorCXBsaXN0X25vZGVfaW5pdCgmcC0+cHVzaGFi bGVfdGFza3MsIE1BWF9QUklPLCAwLCAwKTsKKyNlbmRpZgogCXB1dF9jcHUoKTsKIH0KIApAQCAt NTk0Miw3ICs1OTU3LDcgQEAKICAqCiAgKiBVc2VkIGJ5IHRoZSBydF9tdXRleCBjb2RlIHRvIGlt cGxlbWVudCBwcmlvcml0eSBpbmhlcml0YW5jZSBsb2dpYy4KICAqLwotdm9pZCBydF9tdXRleF9z ZXRwcmlvKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgaW50IHByaW8pCit2b2lkIHJ0X211dGV4X3Nl dHByaW8oc3RydWN0IHRhc2tfc3RydWN0ICpwLCBpbnQgcHJpbywga3RpbWVfdCAqZGVhZGxpbmUp CiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlpbnQgb2xkcHJpbywgb25fcnEsIHJ1bm5pbmc7 CkBAIC01OTY2LDcgKzU5ODEsMTMgQEAKIAkJcC0+c2NoZWRfY2xhc3MgPSAmcnRfc2NoZWRfY2xh c3M7CiAJZWxzZQogCQlwLT5zY2hlZF9jbGFzcyA9ICZmYWlyX3NjaGVkX2NsYXNzOwotCisJCisj aWZkZWYgQ09ORklHX1NDSEVEX0VERgorCWlmIChwLT5wb2xpY3kgPT0gU0NIRURfRURGICYmIGRl YWRsaW5lICE9IE5VTEwpCisJeworCQlwLT5lZGZfZGVhZGxpbmUgPSAqZGVhZGxpbmU7CisJfQor I2VuZGlmCiAJcC0+cHJpbyA9IHByaW87CiAKIAlpZiAocnVubmluZykKQEAgLTYxNTAsNiArNjE3 MSw3IEBACiAJCWJyZWFrOwogCWNhc2UgU0NIRURfRklGTzoKIAljYXNlIFNDSEVEX1JSOgorCWNh c2UgU0NIRURfRURGOgogCQlwLT5zY2hlZF9jbGFzcyA9ICZydF9zY2hlZF9jbGFzczsKIAkJYnJl YWs7CiAJfQpAQCAtNjE5Nyw3ICs2MjE5LDcgQEAKIAkJcmVzZXRfb25fZm9yayA9ICEhKHBvbGlj eSAmIFNDSEVEX1JFU0VUX09OX0ZPUkspOwogCQlwb2xpY3kgJj0gflNDSEVEX1JFU0VUX09OX0ZP Uks7CiAKLQkJaWYgKHBvbGljeSAhPSBTQ0hFRF9GSUZPICYmIHBvbGljeSAhPSBTQ0hFRF9SUiAm JgorCQlpZiAocG9saWN5ICE9IFNDSEVEX0ZJRk8gJiYgcG9saWN5ICE9IFNDSEVEX1JSICYmIHBv bGljeSAhPSBTQ0hFRF9FREYgJiYKIAkJCQlwb2xpY3kgIT0gU0NIRURfTk9STUFMICYmIHBvbGlj eSAhPSBTQ0hFRF9CQVRDSCAmJgogCQkJCXBvbGljeSAhPSBTQ0hFRF9JRExFKQogCQkJcmV0dXJu IC1FSU5WQUw7CkBAIC02MzQ0LDcgKzYzNjYsNyBAQAogewogCXJldHVybiBfX3NjaGVkX3NldHNj aGVkdWxlcihwLCBwb2xpY3ksIHBhcmFtLCBmYWxzZSk7CiB9Ci0KK0VYUE9SVF9TWU1CT0woc2No ZWRfc2V0c2NoZWR1bGVyX25vY2hlY2spOwogc3RhdGljIGludAogZG9fc2NoZWRfc2V0c2NoZWR1 bGVyKHBpZF90IHBpZCwgaW50IHBvbGljeSwgc3RydWN0IHNjaGVkX3BhcmFtIF9fdXNlciAqcGFy YW0pCiB7CkBAIC02MzYxLDcgKzYzODMsMTcgQEAKIAlyZXR2YWwgPSAtRVNSQ0g7CiAJcCA9IGZp bmRfcHJvY2Vzc19ieV9waWQocGlkKTsKIAlpZiAocCAhPSBOVUxMKQorCXsJCisjaWZkZWYgQ09O RklHX1NDSEVEX0VERgorCQlpZiAocG9saWN5ID09IFNDSEVEX0VERikKKwkJeworCQkJcC0+ZWRm X2RlYWRsaW5lID0ga3RpbWVfYWRkKGt0aW1lX2dldCgpLHRpbWVzcGVjX3RvX2t0aW1lIChscGFy YW0uZGVhZGxpbmUpKTsKKwkJCXAtPm9yaWdfZGVhZGxpbmUgPSBscGFyYW0uZGVhZGxpbmU7CisJ CQlwLT5ydF9kZWFkbGluZSA9IHAtPmVkZl9kZWFkbGluZTsgCisJCX0KKyNlbmRpZgogCQlyZXR2 YWwgPSBzY2hlZF9zZXRzY2hlZHVsZXIocCwgcG9saWN5LCAmbHBhcmFtKTsKKwl9CiAJcmN1X3Jl YWRfdW5sb2NrKCk7CiAKIAlyZXR1cm4gcmV0dmFsOwpAQCAtNjc2Nyw2ICs2Nzk5LDcgQEAKIAlz d2l0Y2ggKHBvbGljeSkgewogCWNhc2UgU0NIRURfRklGTzoKIAljYXNlIFNDSEVEX1JSOgorCWNh c2UgU0NIRURfRURGOgogCQlyZXQgPSBNQVhfVVNFUl9SVF9QUklPLTE7CiAJCWJyZWFrOwogCWNh c2UgU0NIRURfTk9STUFMOgpAQCAtNjc5Miw2ICs2ODI1LDcgQEAKIAlzd2l0Y2ggKHBvbGljeSkg ewogCWNhc2UgU0NIRURfRklGTzoKIAljYXNlIFNDSEVEX1JSOgorCWNhc2UgU0NIRURfRURGOgog CQlyZXQgPSAxOwogCQlicmVhazsKIAljYXNlIFNDSEVEX05PUk1BTDoKQEAgLTkyMjYsNyArOTI2 MCwxMSBAQAogewogCXN0cnVjdCBydF9wcmlvX2FycmF5ICphcnJheTsKIAlpbnQgaTsKLQorI2lm ZGVmIENPTkZJR19TQ0hFRF9FREYKKwlydF9ycS0+ZWRmX3Jvb3QucmJfbm9kZSA9IE5VTEw7CisJ cnRfcnEtPmVkZl9ydW5uaW5nID0gMDsKKwlydF9ycS0+ZWRmX25leHQgPSBOVUxMOworI2VuZGlm CiAJYXJyYXkgPSAmcnRfcnEtPmFjdGl2ZTsKIAlmb3IgKGkgPSAwOyBpIDwgTUFYX1JUX1BSSU87 IGkrKykgewogCQlJTklUX0xJU1RfSEVBRChhcnJheS0+cXVldWUgKyBpKTsKZGlmZiAtTmF1ciBs aW51eC0yLjYuMzItcmMzL2tlcm5lbC9zY2hlZF9lZGYuYyBsaW51eC0yLjYuMzItcmMzLWRydGwv a2VybmVsL3NjaGVkX2VkZi5jCi0tLSBsaW51eC0yLjYuMzItcmMzL2tlcm5lbC9zY2hlZF9lZGYu YwkxOTcwLTAxLTAxIDA1OjMwOjAwLjAwMDAwMDAwMCArMDUzMAorKysgbGludXgtMi42LjMyLXJj My1kcnRsL2tlcm5lbC9zY2hlZF9lZGYuYwkyMDA5LTEwLTIwIDExOjI1OjI0LjAwMDAwMDAwMCAr MDUzMApAQCAtMCwwICsxLDExNiBAQAorI2RlZmluZSBjaGVja19iaXQobm9kZTEsIG5vZGUyKSAo KG5vZGUxLT5yYl9wYXJlbnRfY29sb3IgXiBub2RlMi0+cmJfcGFyZW50X2NvbG9yKSYyKQorc3Rh dGljIGlubGluZSB2b2lkIGluY19ydF90YXNrcyhzdHJ1Y3Qgc2NoZWRfcnRfZW50aXR5ICpydF9z ZSwgc3RydWN0IHJ0X3JxICpydF9ycSk7CitzdGF0aWMgaW5saW5lIHZvaWQgZGVjX3J0X3Rhc2tz KHN0cnVjdCBzY2hlZF9ydF9lbnRpdHkgKnJ0X3NlLCBzdHJ1Y3QgcnRfcnEgKnJ0X3JxKTsKK3N0 YXRpYyBpbnQgaGFzX2VxdWFsID0gMDsKK3N0YXRpYyBzdHJ1Y3Qgc2NoZWRfcnRfZW50aXR5ICps ZWZ0bW9zdCA9IE5VTEw7CitzdGF0aWMgaW5saW5lIHN0cnVjdCB0YXNrX3N0cnVjdCAqcnRfdGFz a19vZihzdHJ1Y3Qgc2NoZWRfcnRfZW50aXR5ICpydF9zZSk7CitzdGF0aWMgaW5saW5lIHN0cnVj dCBydF9ycSAqcnRfcnFfb2Zfc2Uoc3RydWN0IHNjaGVkX3J0X2VudGl0eSAqcnRfc2UpOworc3Rh dGljIGlubGluZSBrdGltZV90IGVkZl9zZV9kZWFkbGluZSAoc3RydWN0IHNjaGVkX3J0X2VudGl0 eSAqcnRfc2UpCit7CisJcmV0dXJuIChydF90YXNrX29mKHJ0X3NlKSktPmVkZl9kZWFkbGluZTsK K30KK3ZvaWQgZW5xdWV1ZV90YXNrX2VkZihzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnApIAoreworCisJc3RydWN0IHJ0X3JxICpydF9ycSA9ICZycS0+cnQ7CisJc3RydWN0IHJi X25vZGUgKipsaW5rID0gJnJ0X3JxLT5lZGZfcm9vdC5yYl9ub2RlLCAqcGFyZW50PU5VTEw7CisJ c3RydWN0IHNjaGVkX3J0X2VudGl0eSAqZW50cnk7CisJaW50IGxlZnRtb3N0X2ZsYWc9IDEsIGVx dWFsID0gMDsKKwlzNjQgZGlmZjsKKwl1OCBsYXN0X2JpdCA9IDA7CisJLyoKKwkqIEZpbmQgdGhl IHJpZ2h0IHBsYWNlIGluIHRoZSByYnRyZWU6CisgICAgICAgICovCisJaGFzX2VxdWFsID0gMDsK KwlpZiAocC0+ZmxhZ3MgJiBQRl9IQVJESVJRKQorCQlwLT5lZGZfZGVhZGxpbmUgPSBrdGltZV9h ZGQoa3RpbWVfZ2V0KCksdGltZXNwZWNfdG9fa3RpbWUgKHAtPm9yaWdfZGVhZGxpbmUpKTsKKyAg ICAgICAgd2hpbGUgKCpsaW5rKSB7CisgICAgICAgICAgICAgICAgcGFyZW50ID0gKmxpbms7Cisg ICAgICAgICAgICAgICAgZW50cnkgPSByYl9lbnRyeShwYXJlbnQsIHN0cnVjdCBzY2hlZF9ydF9l bnRpdHksIGVkZl9ub2RlKTsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAq IFdlIGRvbnQgY2FyZSBhYm91dCBjb2xsaXNpb25zLiBOb2RlcyB3aXRoCisgICAgICAgICAgICAg ICAgICogdGhlIHNhbWUga2V5IHN0YXkgdG9nZXRoZXIuCisgICAgICAgICAgICAgICAgICovCisK KwkJZGlmZiA9IGt0aW1lX3N1YihwLT5lZGZfZGVhZGxpbmUsZWRmX3NlX2RlYWRsaW5lKGVudHJ5 KSkudHY2NDsKKwkJaWYgKGRpZmYgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5r ID0gJnBhcmVudC0+cmJfbGVmdDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRpZmYgPT0g MCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGluayA9ICZwYXJlbnQtPnJiX2xlZnQ7CisJ CQlsYXN0X2JpdCA9IChwYXJlbnQtPnJiX3BhcmVudF9jb2xvciAmIDB4MDIpOworCQkJZXF1YWwg PSAxOworCQl9CisJCWVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbGluayA9ICZwYXJl bnQtPnJiX3JpZ2h0OworCQkJbGVmdG1vc3RfZmxhZyA9IDA7CisgICAgICAgICAgICAgICAgfQor ICAgICAgICB9CisJcmJfbGlua19ub2RlICgmcC0+cnQuZWRmX25vZGUscGFyZW50LGxpbmspOwor CXJiX2luc2VydF9jb2xvcigmcC0+cnQuZWRmX25vZGUsJnJ0X3JxLT5lZGZfcm9vdCk7CisJaWYg KCFlcXVhbCkKKwkJbGFzdF9iaXQgPSAocGFyZW50PT1OVUxMKT8weDI6fihwYXJlbnQtPnJiX3Bh cmVudF9jb2xvciAmIDB4MDIpOworCXAtPnJ0LmVkZl9ub2RlLnJiX3BhcmVudF9jb2xvciB8PSAo bGFzdF9iaXQgJiAweDAyKTsKKwlpZiAobGVmdG1vc3RfZmxhZykKKwl7CisJCWxlZnRtb3N0ID0g cnRfcnEtPmVkZl9uZXh0ID0gJnAtPnJ0OworCQlpZiAoZXF1YWwpIHsKKwkJCWhhc19lcXVhbCA9 IDE7CisJCX0KKwl9CisJKHJ0X3JxX29mX3NlKCZwLT5ydCkpLT5lZGZfcnVubmluZysrOworCWlu Y19ydF90YXNrcygmcC0+cnQscnRfcnFfb2Zfc2UoJnAtPnJ0KSk7Cit9CisKK3ZvaWQgZGVxdWV1 ZV90YXNrX2VkZihzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIAoreworCXN0 cnVjdCByYl9ub2RlICpuZXh0X25vZGU7CisJc3RydWN0IHJiX25vZGUgKnByZXZfbm9kZTsKKwlz dHJ1Y3QgcmJfbm9kZSAqYXNzaWduX25vZGU7CisJaWYgKHJxLT5ydC5lZGZfcnVubmluZyA+IDIp CisJeworCQluZXh0X25vZGUgPSByYl9uZXh0KCZsZWZ0bW9zdC0+ZWRmX25vZGUpOworCQlpZiAo JnAtPnJ0LmVkZl9ub2RlID09IG5leHRfbm9kZSkKKwkJCW5leHRfbm9kZSA9IHJiX25leHQobmV4 dF9ub2RlKTsKKwkJZWxzZSBpZiAoJnAtPnJ0ID09IGxlZnRtb3N0KQorCQl7CisJCQlsZWZ0bW9z dCA9IHJiX2VudHJ5IChuZXh0X25vZGUsIHN0cnVjdCBzY2hlZF9ydF9lbnRpdHksIGVkZl9ub2Rl KTsKKwkJCW5leHRfbm9kZSA9IHJiX25leHQoJmxlZnRtb3N0LT5lZGZfbm9kZSk7CisJCX0KKwkJ aWYgKCZwLT5ydCA9PSBycS0+cnQuZWRmX25leHQpCisJCXsKKwkJCXJxLT5ydC5lZGZfbmV4dCA9 IHJiX2VudHJ5KHJiX25leHQoJihycS0+cnQuZWRmX25leHQtPmVkZl9ub2RlKSksIHN0cnVjdCBz Y2hlZF9ydF9lbnRpdHksIGVkZl9ub2RlKTsKKwkJCWlmIChoYXNfZXF1YWwgJiYgKHJxLT5ydC5l ZGZfbmV4dCA9PSBOVUxMIHx8IGNoZWNrX2JpdCgoJihwLT5ydC5lZGZfbm9kZSkpLCgmKHJxLT5y dC5lZGZfbmV4dC0+ZWRmX25vZGUpKSkpKQorCQkJCXJxLT5ydC5lZGZfbmV4dCA9IGxlZnRtb3N0 OworCQl9CisJCWhhc19lcXVhbCA9ICFjaGVja19iaXQoKCZsZWZ0bW9zdC0+ZWRmX25vZGUpLCBu ZXh0X25vZGUpOworCX0KKwllbHNlCisJeworCisJCW5leHRfbm9kZSA9IHJiX25leHQgKCZwLT5y dC5lZGZfbm9kZSk7CisJCXByZXZfbm9kZSA9IHJiX3ByZXYgKCZwLT5ydC5lZGZfbm9kZSk7CisJ CWFzc2lnbl9ub2RlID0gKG5leHRfbm9kZSA9PSBOVUxMKSA/IHByZXZfbm9kZSA6IG5leHRfbm9k ZTsKKwkJaWYgKGFzc2lnbl9ub2RlICE9IE5VTEwpCisJCQlsZWZ0bW9zdCA9IHJxLT5ydC5lZGZf bmV4dCA9IHJiX2VudHJ5KGFzc2lnbl9ub2RlLCBzdHJ1Y3Qgc2NoZWRfcnRfZW50aXR5LCBlZGZf bm9kZSk7CisJCWVsc2UgCisJCQlsZWZ0bW9zdCA9IHJxLT5ydC5lZGZfbmV4dCA9IE5VTEw7CisJ CWhhc19lcXVhbCA9IDA7CisJfQorCShydF9ycV9vZl9zZSgmcC0+cnQpKS0+ZWRmX3J1bm5pbmct LTsKKwlkZWNfcnRfdGFza3MoJnAtPnJ0LCBydF9ycV9vZl9zZSgmcC0+cnQpKTsKKwlyYl9lcmFz ZSgmcC0+cnQuZWRmX25vZGUsICZycS0+cnQuZWRmX3Jvb3QpOworfQorCitzdHJ1Y3Qgc2NoZWRf cnRfZW50aXR5ICpwaWNrX25leHRfdGFza19lZGYoc3RydWN0IHJxICpycSkKK3sKKwlzdHJ1Y3Qg c2NoZWRfcnRfZW50aXR5ICpyZXR2YWw7CisJc3RydWN0IHJiX25vZGUgKm5leHRfbm9kZTsKKwly ZXR2YWwgPSBycS0+cnQuZWRmX25leHQ7CisJaWYgKGhhc19lcXVhbCkgCisJeworCQluZXh0X25v ZGUgPSByYl9uZXh0KCZyZXR2YWwtPmVkZl9ub2RlKTsKKwkJcnEtPnJ0LmVkZl9uZXh0ID0gKG5l eHRfbm9kZSA9PSBOVUxMIHx8IGNoZWNrX2JpdCgoJnJxLT5ydC5lZGZfbmV4dC0+ZWRmX25vZGUp LCBuZXh0X25vZGUpKSA/IGxlZnRtb3N0IDoKKwkJCXJiX2VudHJ5KG5leHRfbm9kZSwgc3RydWN0 IHNjaGVkX3J0X2VudGl0eSwgZWRmX25vZGUpOworCX0KKwlyZXR1cm4gcmV0dmFsOworfQpkaWZm IC1OYXVyIGxpbnV4LTIuNi4zMi1yYzMva2VybmVsL3NjaGVkX3J0LmMgbGludXgtMi42LjMyLXJj My1kcnRsL2tlcm5lbC9zY2hlZF9ydC5jCi0tLSBsaW51eC0yLjYuMzItcmMzL2tlcm5lbC9zY2hl ZF9ydC5jCTIwMDktMTAtMDUgMDU6NDI6MzAuMDAwMDAwMDAwICswNTMwCisrKyBsaW51eC0yLjYu MzItcmMzLWRydGwva2VybmVsL3NjaGVkX3J0LmMJMjAwOS0xMC0yMCAxMDo0MDoxNi4wMDAwMDAw MDAgKzA1MzAKQEAgLTMsNiArMywxNCBAQAogICogcG9saWNpZXMpCiAgKi8KIAorI2lmZGVmIENP TkZJR19TQ0hFRF9FREYKK3N0cnVjdCBrdGhyZWFkX2RlYWRtaXNzX2luZm8geworCXN0cnVjdCBj b21wbGV0aW9uIGRlYWRtaXNzOworCXN0cnVjdCB0YXNrX3N0cnVjdCAqazsKK307CitleHRlcm4g c3RydWN0IGt0aHJlYWRfZGVhZG1pc3NfaW5mbyBrdGhyZWFkX2RlYWRfaW5mbzsKKyNlbmRpZgor CiAjaWZkZWYgQ09ORklHX1JUX0dST1VQX1NDSEVECiAKICNkZWZpbmUgcnRfZW50aXR5X2lzX3Rh c2socnRfc2UpICghKHJ0X3NlKS0+bXlfcSkKQEAgLTYwNyw2ICs2MTUsNyBAQAogCWlmICh1bmxp a2VseSgoczY0KWRlbHRhX2V4ZWMgPCAwKSkKIAkJZGVsdGFfZXhlYyA9IDA7CiAKKwogCXNjaGVk c3RhdF9zZXQoY3Vyci0+c2UuZXhlY19tYXgsIG1heChjdXJyLT5zZS5leGVjX21heCwgZGVsdGFf ZXhlYykpOwogCiAJY3Vyci0+c2Uuc3VtX2V4ZWNfcnVudGltZSArPSBkZWx0YV9leGVjOwpAQCAt NjE0LDcgKzYyMyw2IEBACiAKIAljdXJyLT5zZS5leGVjX3N0YXJ0ID0gcnEtPmNsb2NrOwogCWNw dWFjY3RfY2hhcmdlKGN1cnIsIGRlbHRhX2V4ZWMpOwotCiAJc2NoZWRfcnRfYXZnX3VwZGF0ZShy cSwgZGVsdGFfZXhlYyk7CiAKIAlpZiAoIXJ0X2JhbmR3aWR0aF9lbmFibGVkKCkpCkBAIC04ODUs NiArODkzLDExIEBACiAJaWYgKHdha2V1cCkKIAkJcnRfc2UtPnRpbWVvdXQgPSAwOwogCisjaWZk ZWYgQ09ORklHX1NDSEVEX0VERgorCWlmIChwLT5wb2xpY3kgPT0gU0NIRURfRURGKSAKKwkJZW5x dWV1ZV90YXNrX2VkZihycSxwKTsKKwllbHNlIAorI2VuZGlmCiAJZW5xdWV1ZV9ydF9lbnRpdHko cnRfc2UpOwogCiAJaWYgKCF0YXNrX2N1cnJlbnQocnEsIHApICYmIHAtPnJ0Lm5yX2NwdXNfYWxs b3dlZCA+IDEpCkBAIC04OTYsNyArOTA5LDEyIEBACiAJc3RydWN0IHNjaGVkX3J0X2VudGl0eSAq cnRfc2UgPSAmcC0+cnQ7CiAKIAl1cGRhdGVfY3Vycl9ydChycSk7Ci0JZGVxdWV1ZV9ydF9lbnRp dHkocnRfc2UpOworI2lmZGVmIENPTkZJR19TQ0hFRF9FREYKKwlpZiAocC0+cG9saWN5ID09IFND SEVEX0VERikKKwkJZGVxdWV1ZV90YXNrX2VkZihycSxwKTsKKwllbHNlIAorI2VuZGlmCisJCWRl cXVldWVfcnRfZW50aXR5KHJ0X3NlKTsKIAogCWRlcXVldWVfcHVzaGFibGVfdGFzayhycSwgcCk7 CiB9CkBAIC05MjQsNiArOTQyLDExIEBACiAJc3RydWN0IHNjaGVkX3J0X2VudGl0eSAqcnRfc2Ug PSAmcC0+cnQ7CiAJc3RydWN0IHJ0X3JxICpydF9ycTsKIAorI2lmbmRlZiBDT05GSUdfU0NIRURf RURGCisJaWYgKHAtPnBvbGljeSA9PSBTQ0hFRF9FREYpCisJCXJldHVybjsKKyNlbmRpZgorCiAJ Zm9yX2VhY2hfc2NoZWRfcnRfZW50aXR5KHJ0X3NlKSB7CiAJCXJ0X3JxID0gcnRfcnFfb2Zfc2Uo cnRfc2UpOwogCQlyZXF1ZXVlX3J0X2VudGl0eShydF9ycSwgcnRfc2UsIGhlYWQpOwpAQCAtMTAz NiwxMCArMTA1OSwyMiBAQAogCWludCBpZHg7CiAKIAlpZHggPSBzY2hlZF9maW5kX2ZpcnN0X2Jp dChhcnJheS0+Yml0bWFwKTsKKyNpZmRlZiBDT05GSUdfU0NIRURfRURGCisJQlVHX09OKCFydF9y cS0+ZWRmX25leHQgJiYgaWR4ID49IE1BWF9SVF9QUklPKTsKKyNlbHNlIAogCUJVR19PTihpZHgg Pj0gTUFYX1JUX1BSSU8pOworI2VuZGlmCiAKLQlxdWV1ZSA9IGFycmF5LT5xdWV1ZSArIGlkeDsK LQluZXh0ID0gbGlzdF9lbnRyeShxdWV1ZS0+bmV4dCwgc3RydWN0IHNjaGVkX3J0X2VudGl0eSwg cnVuX2xpc3QpOworI2lmZGVmIENPTkZJR19TQ0hFRF9FREYKKwlpZiAoIXJ0X3JxLT5lZGZfbmV4 dCB8fCBydF9zZV9wcmlvKHJ0X3JxLT5lZGZfbmV4dCkgPiBpZHgpIHsKKyNlbmRpZgorCQlxdWV1 ZSA9IGFycmF5LT5xdWV1ZSArIGlkeDsKKwkJbmV4dCA9IGxpc3RfZW50cnkocXVldWUtPm5leHQs IHN0cnVjdCBzY2hlZF9ydF9lbnRpdHksIHJ1bl9saXN0KTsKKworI2lmZGVmIENPTkZJR19TQ0hF RF9FREYKKwl9CisJZWxzZSBuZXh0ID0gcGlja19uZXh0X3Rhc2tfZWRmKHJxKTsKKyNlbmRpZgog CiAJcmV0dXJuIG5leHQ7CiB9CkBAIC0xMDg5LDExICsxMTI0LDMwIEBACiAJcmV0dXJuIHA7CiB9 CiAKKwogc3RhdGljIHZvaWQgcHV0X3ByZXZfdGFza19ydChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnApCiB7CiAJdXBkYXRlX2N1cnJfcnQocnEpOwogCXAtPnNlLmV4ZWNfc3Rh cnQgPSAwOwotCisjaWZkZWYgQ09ORklHX1NDSEVEX0VERgorCS8qIERlYWRsaW5lIG1pc3MgaGFu ZGxlciBmb3IgcnVuIGF3YXkgdGFza3MgKi8KKwlpZiAocC0+cG9saWN5ID09IFNDSEVEX0VERiAm JiAhcC0+ZmxhZ3MmUEZfSEFSRElSUSkgIHsKKyAgICAgICAgICAgIGlmIChrdGltZV9zdWIocC0+ ZWRmX2RlYWRsaW5lLGt0aW1lX2dldCgpKS50djY0IDw9IDApIHsKKwkJaWYgKHAtPmZsYWdzJlBG X0tUSFJFQUQpIHsKKwkJCWRlcXVldWVfdGFza19lZGYgKHJxLHApOworCQkJa3RocmVhZF9kZWFk X2luZm8uayA9IHA7CisJCQljb21wbGV0ZSAoJmt0aHJlYWRfZGVhZF9pbmZvLmRlYWRtaXNzKTsK KwkJCXNldF90YXNrX3N0YXRlKHAsIFRBU0tfSU5URVJSVVBUSUJMRSk7CisJCX0gCisJCWVsc2Ug eworCQkJc2lnYWRkc2V0KCZwLT5wZW5kaW5nLnNpZ25hbCxTSUdNSVNTREVBRCk7CisJCQlzZXRf dHNrX3RocmVhZF9mbGFnKHAsIFRJRl9TSUdQRU5ESU5HKTsKKwkJCXAtPmV4aXRfY29kZSA9IEVY SVRfTUlTU19ERUFETElORTsKKwkJfQorCSAgICB9CisgICAgCX0KKyNlbmRpZgorCQogCS8qCiAJ ICogVGhlIHByZXZpb3VzIHRhc2sgbmVlZHMgdG8gYmUgbWFkZSBlbGlnaWJsZSBmb3IgcHVzaGlu ZwogCSAqIGlmIGl0IGlzIHN0aWxsIGFjdGl2ZQo= --000e0cd56c32f828d3047673c5b5-- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/