Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759613AbXENUcR (ORCPT ); Mon, 14 May 2007 16:32:17 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1756721AbXENUcF (ORCPT ); Mon, 14 May 2007 16:32:05 -0400 Received: from nz-out-0506.google.com ([64.233.162.239]:31625 "EHLO nz-out-0506.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757083AbXENUcB (ORCPT ); Mon, 14 May 2007 16:32:01 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:cc:mime-version:content-type; b=MsBh/nhYHSRfkYigsOgbqnqBepdGcKnhHOvNEb3xUlyCY2ARna+sVxSEsxM8xOHpKq4AnwREBCcL8a1cZxrllTtFWqBYAVYtxE52dTksbQp8pX1l34dym+U1C2g3f5r5ZyaFFAljvDup+tZkjjCAAj/4Zcku1iKmQeqO1rCPPG0= Message-ID: <92a12cdb0705141331w54b80209n4f929e8d4331013@mail.gmail.com> Date: Mon, 14 May 2007 21:32:00 +0100 From: "Adrian McMenamin" To: alsa-devel@alsa-project.org Subject: [PATCH] ALSA sound driver for SEGA Dreamcast AICA (pcm) Cc: linux-kernel@vger.kernel.org, linuxsh-dev@lists.sourceforge.net MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_206287_28881703.1179174720041" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 33731 Lines: 453 ------=_Part_206287_28881703.1179174720041 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline ALSA support for the SEGA Dreamcast Yamaha AICA sound device (pcm) This patch adds ALSA sound support for pcm playback on two channels on the SEGA Dreamcast built-in sound device (the Yamaha AICA) Add driver for the AICA sound device built into the SEGA Dreamcast Hook it all up with the build system. Signed-off-by: Adrian McMenamin ------=_Part_206287_28881703.1179174720041 Content-Type: text/x-patch; name=aica.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f1pe5q4r Content-Disposition: attachment; filename="aica.diff" ZGlmZiAtTmF1ciAuL2xpbnV4LTIuNi4yMS1vcmlnL3NvdW5kL0tjb25maWcgLi9saW51eC0yLjYu MjEvc291bmQvS2NvbmZpZwotLS0gLi9saW51eC0yLjYuMjEtb3JpZy9zb3VuZC9LY29uZmlnCTIw MDctMDQtMjYgMDQ6MDg6MzIuMDAwMDAwMDAwICswMTAwCisrKyAuL2xpbnV4LTIuNi4yMS9zb3Vu ZC9LY29uZmlnCTIwMDctMDUtMDcgMjE6MjA6NTQuMDAwMDAwMDAwICswMTAwCkBAIC02NCw2ICs2 NCw4IEBACiAKIHNvdXJjZSAic291bmQvbWlwcy9LY29uZmlnIgogCitzb3VyY2UgInNvdW5kL3No L0tjb25maWciCisKICMgdGhlIGZvbGxvd2luZyB3aWxsIGRlcGVuZCBvbiB0aGUgb3JkZXIgb2Yg Y29uZmlnLgogIyBoZXJlIGFzc3VtaW5nIFVTQiBpcyBkZWZpbmVkIGJlZm9yZSBBTFNBCiBzb3Vy Y2UgInNvdW5kL3VzYi9LY29uZmlnIgpkaWZmIC1OYXVyIC4vbGludXgtMi42LjIxLW9yaWcvc291 bmQvTWFrZWZpbGUgLi9saW51eC0yLjYuMjEvc291bmQvTWFrZWZpbGUKLS0tIC4vbGludXgtMi42 LjIxLW9yaWcvc291bmQvTWFrZWZpbGUJMjAwNy0wNC0yNiAwNDowODozMi4wMDAwMDAwMDAgKzAx MDAKKysrIC4vbGludXgtMi42LjIxL3NvdW5kL01ha2VmaWxlCTIwMDctMDUtMDcgMjE6Mzc6MDUu MDAwMDAwMDAwICswMTAwCkBAIC01LDcgKzUsNyBAQAogb2JqLSQoQ09ORklHX1NPVU5EX1BSSU1F KSArPSBzb3VuZF9maXJtd2FyZS5vCiBvYmotJChDT05GSUdfU09VTkRfUFJJTUUpICs9IG9zcy8K IG9iai0kKENPTkZJR19ETUFTT1VORCkgKz0gb3NzLwotb2JqLSQoQ09ORklHX1NORCkgKz0gY29y ZS8gaTJjLyBkcml2ZXJzLyBpc2EvIHBjaS8gcHBjLyBhcm0vIHN5bnRoLyB1c2IvIHNwYXJjLyBw YXJpc2MvIHBjbWNpYS8gbWlwcy8gc29jLworb2JqLSQoQ09ORklHX1NORCkgKz0gY29yZS8gaTJj LyBkcml2ZXJzLyBpc2EvIHBjaS8gcHBjLyBhcm0vIHNoLyBzeW50aC8gdXNiLyBzcGFyYy8gcGFy aXNjLyBwY21jaWEvIG1pcHMvIHNvYy8KIG9iai0kKENPTkZJR19TTkRfQU9BKSArPSBhb2EvCiAK ICMgVGhpcyBvbmUgbXVzdCBiZSBjb21waWxhYmxlIGV2ZW4gaWYgc291bmQgaXMgY29uZmlndXJl ZCBvdXQKZGlmZiAtTmF1ciAuL2xpbnV4LTIuNi4yMS1vcmlnL3NvdW5kL3NoL2FpY2EuYyAuL2xp bnV4LTIuNi4yMS9zb3VuZC9zaC9haWNhLmMKLS0tIC4vbGludXgtMi42LjIxLW9yaWcvc291bmQv c2gvYWljYS5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKyAuL2xpbnV4 LTIuNi4yMS9zb3VuZC9zaC9haWNhLmMJMjAwNy0wNS0xNCAyMTozMDozNS4wMDAwMDAwMDAgKzAx MDAKQEAgLTAsMCArMSw2NzcgQEAKKy8qCisqIFRoaXMgY29kZSBpcyBsaWNlbmNlZCB1bmRlciAK KyogdGhlIEdlbmVyYWwgUHVibGljIExpY2VuY2UKKyogdmVyc2lvbiAyCisqCisqIENvcHlyaWdo dCBBZHJpYW4gTWNNZW5hbWluIDIwMDUsIDIwMDYsIDIwMDcKKyogPGFkcmlhbkBtY21lbi5kZW1v bi5jby51az4KKyogUmVxdWlyZXMgZmlybXdhcmUgKEJTRCBsaWNlbmNlZCkgYXZhaWxhYmxlIGZy b206CisqIGh0dHA6Ly9saW51eGRjLmN2cy5zb3VyY2Vmb3JnZS5uZXQvbGludXhkYy9saW51eC1z aC1kYy9zb3VuZC9vc3MvYWljYS9maXJtd2FyZS8KKyogb3IgdGhlIG1haW50YWluZXIKKyoKKyog VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKyogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHZlcnNpb24gMiBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisqIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24uCisqCisqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisqIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisqCisqIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisqIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl CisqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24s IE1BICAwMjExMS0xMzA3ICBVU0EKKyoKKyovCisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Cisj aW5jbHVkZSA8bGludXgvamlmZmllcy5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNs dWRlIDxsaW51eC90aW1lLmg+CisjaW5jbHVkZSA8bGludXgvd2FpdC5oPgorI2luY2x1ZGUgPGxp bnV4L21vZHVsZXBhcmFtLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cisj aW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorI2lu Y2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CisjaW5j bHVkZSA8c291bmQvZHJpdmVyLmg+CisjaW5jbHVkZSA8c291bmQvY29yZS5oPgorI2luY2x1ZGUg PHNvdW5kL2NvbnRyb2wuaD4KKyNpbmNsdWRlIDxzb3VuZC9wY20uaD4KKyNpbmNsdWRlIDxzb3Vu ZC9pbml0dmFsLmg+CisjaW5jbHVkZSA8c291bmQvaW5mby5oPgorI2luY2x1ZGUgPGFzbS9pby5o PgorI2luY2x1ZGUgPGFzbS9kbWEuaD4KKyNpbmNsdWRlIDxhc20vZHJlYW1jYXN0L3N5c2FzaWMu aD4KKyNpbmNsdWRlICJhaWNhLmgiCisKK01PRFVMRV9BVVRIT1IoIkFkcmlhbiBNY01lbmFtaW4g PGFkcmlhbkBtY21lbi5kZW1vbi5jby51az4iKTsKK01PRFVMRV9ERVNDUklQVElPTigiRHJlYW1j YXN0IEFJQ0Egc291bmQgKHBjbSkgZHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitN T0RVTEVfU1VQUE9SVEVEX0RFVklDRSgie3tZYW1haGEvU0VHQSwgQUlDQX19Iik7CisKKy8qIG1v ZHVsZSBwYXJhbWV0ZXJzICovCisjZGVmaW5lIENBUkRfTkFNRSAiQUlDQSIKK3N0YXRpYyBpbnQg aW5kZXggPSAtMTsKK3N0YXRpYyBjaGFyICppZDsKK3N0YXRpYyBpbnQgZW5hYmxlID0gMTsKK21v ZHVsZV9wYXJhbShpbmRleCwgaW50LCAwNDQ0KTsKK01PRFVMRV9QQVJNX0RFU0MoaW5kZXgsICJJ bmRleCB2YWx1ZSBmb3IgIiBDQVJEX05BTUUgIiBzb3VuZGNhcmQuIik7Cittb2R1bGVfcGFyYW0o aWQsIGNoYXJwLCAwNDQ0KTsKK01PRFVMRV9QQVJNX0RFU0MoaWQsICJJRCBzdHJpbmcgZm9yICIg Q0FSRF9OQU1FICIgc291bmRjYXJkLiIpOworbW9kdWxlX3BhcmFtKGVuYWJsZSwgYm9vbCwgMDY0 NCk7CitNT0RVTEVfUEFSTV9ERVNDKGVuYWJsZSwgIkVuYWJsZSAiIENBUkRfTkFNRSAiIHNvdW5k Y2FyZC4iKTsKKworLyogVXNlIHdvcmtxdWV1ZSAqLworCitzdGF0aWMgc3RydWN0IHNwdV93b3Jr X2hvbGRlciB7CisJc3RydWN0IHdvcmtfc3RydWN0IHNwdV9kbWFfd29yazsKKwl2b2lkICpzc3Bv aW50ZXI7Cit9IHNwdV93b3JraW5nOworCitzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3Qg KmFpY2FfcXVldWU7CisKKy8qIFNpbXBsZSBwbGF0Zm9ybSBkZXZpY2UgKi8KK3N0YXRpYyBzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZDsKK3N0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgYWljYV9tZW1v cnlfc3BhY2VbMl0gPSB7CisJeworCSAubmFtZSA9ICJBSUNBIEFSTSBDT05UUk9MIiwKKwkgLnN0 YXJ0ID0gQVJNX1JFU0VUX1JFR0lTVEVSLAorCSAuZmxhZ3MgPSBJT1JFU09VUkNFX01FTSwKKwkg LmVuZCA9IEFSTV9SRVNFVF9SRUdJU1RFUiArIDMsCisJIH0sCisJeworCSAubmFtZSA9ICJBSUNB IFNvdW5kIFJBTSIsCisJIC5zdGFydCA9IFNQVV9NRU1PUllfQkFTRSwKKwkgLmZsYWdzID0gSU9S RVNPVVJDRV9NRU0sCisJIC5lbmQgPSBTUFVfTUVNT1JZX0JBU0UgKyAweDIwMDAwMCAtIDEsCisJ IH0sCit9OworCisvKiBTUFUgc3BlY2lmaWMgZnVuY3Rpb25zICovCisvKiBzcHVfd3JpdGVfd2Fp dCAtIHdhaXQgZm9yIEcyLVNIIEZJRk8gdG8gY2xlYXIgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBz cHVfd3JpdGVfd2FpdCh2b2lkKQoreworCWludCB0aW1lX2NvdW50OworCXRpbWVfY291bnQgPSAw OworCXdoaWxlICgxKSB7CisJCWlmICghKHJlYWRsKEcyX0ZJRk8pICYgMHgxMSkpCisJCQlicmVh azsKKwkJLyogVG8gZW5zdXJlIGhhcmR3YXJlIGZhaWx1cmUgZG9lc24ndCB3ZWRnZSBrZXJuZWwg Ki8KKwkJdGltZV9jb3VudCsrOworCQlpZiAodGltZV9jb3VudCA+IDB4MTAwMDApCisJCQlicmVh azsKKwl9Cit9CisKKy8qIHNwdV9tZW1zZXQgLSB3cml0ZSB0byBtZW1vcnkgaW4gU1BVIGFkZHJl c3Mgc3BhY2UgKi8KK3N0YXRpYyB2b2lkIHNwdV9tZW1zZXQodWludDMyX3QgdG9pLCB1aW50MzJf dCB3aGF0LCBpbnQgbGVuZ3RoKQoreworCWludCBpOworCXNuZF9hc3NlcnQobGVuZ3RoICUgNCA9 PSAwLCByZXR1cm4pOworCXNwdV93cml0ZV93YWl0KCk7CisJZm9yIChpID0gMDsgaSA8IGxlbmd0 aDsgaSsrKSB7CisJCXdyaXRlbCh3aGF0LCB0b2kgKyBTUFVfTUVNT1JZX0JBU0UpOworCQl0b2kr KzsKKwkJaWYgKGkgJiYgIShpICUgOCkpCisJCQlzcHVfd3JpdGVfd2FpdCgpOworCX0KK30KKwor Lyogc3B1X21lbWxvYWQgLSB3cml0ZSB0byBTUFUgYWRkcmVzcyBzcGFjZSAqLworc3RhdGljIHZv aWQgc3B1X21lbWxvYWQodWludDMyX3QgdG9pLCB2b2lkIF9faW9tZW0gKiBmcm9tLCBpbnQgbGVu Z3RoKQoreworCXVpbnQzMl90IF9faW9tZW0gKmZyb21sID0gZnJvbTsKKwl1aW50MzJfdCBfX2lv bWVtICp0byA9ICh1aW50MzJfdCBfX2lvbWVtICopIChTUFVfTUVNT1JZX0JBU0UgKyB0b2kpOwor CWludCBpLCB2YWw7CisJaWYgKGxlbmd0aCAlIDQpCisJCWxlbmd0aCA9IChsZW5ndGggLyA0KSAr IDE7CisJZWxzZQorCQlsZW5ndGggPSBsZW5ndGggLyA0OworCXNwdV93cml0ZV93YWl0KCk7CisJ Zm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisJCXZhbCA9ICpmcm9tbDsKKwkJd3JpdGVs KHZhbCwgdG8pOworCQlmcm9tbCsrOworCQl0bysrOworCQlpZiAoaSAmJiAhKGkgJSA4KSkKKwkJ CXNwdV93cml0ZV93YWl0KCk7CisJfQorfQorCisvKiBzcHVfZGlzYWJsZSAtIHNldCBzcHUgcmVn aXN0ZXJzIHRvIHN0b3Agc291bmQgb3V0cHV0ICovCitzdGF0aWMgdm9pZCBzcHVfZGlzYWJsZSh2 b2lkKQoreworCWludCBpOworCXVpbnQzMl90IHJlZ3ZhbDsKKwlzcHVfd3JpdGVfd2FpdCgpOwor CXJlZ3ZhbCA9IHJlYWRsKEFSTV9SRVNFVF9SRUdJU1RFUik7CisJcmVndmFsIHw9IDE7CisJc3B1 X3dyaXRlX3dhaXQoKTsKKwl3cml0ZWwocmVndmFsLCBBUk1fUkVTRVRfUkVHSVNURVIpOworCWZv ciAoaSA9IDA7IGkgPCA2NDsgaSsrKSB7CisJCXNwdV93cml0ZV93YWl0KCk7CisJCXJlZ3ZhbCA9 IHJlYWRsKFNQVV9SRUdJU1RFUl9CQVNFICsgKGkgKiAweDgwKSk7CisJCXJlZ3ZhbCA9IChyZWd2 YWwgJiB+MHg0MDAwKSB8IDB4ODAwMDsKKwkJc3B1X3dyaXRlX3dhaXQoKTsKKwkJd3JpdGVsKHJl Z3ZhbCwgU1BVX1JFR0lTVEVSX0JBU0UgKyAoaSAqIDB4ODApKTsKKwl9Cit9CisKKy8qIHNwdV9l bmFibGUgLSBzZXQgc3B1IHJlZ2lzdGVycyB0byBlbmFibGUgc291bmQgb3V0cHV0ICovCitzdGF0 aWMgdm9pZCBzcHVfZW5hYmxlKHZvaWQpCit7CisJdWludDMyX3QgcmVndmFsID0gcmVhZGwoQVJN X1JFU0VUX1JFR0lTVEVSKTsKKwlyZWd2YWwgJj0gfjE7CisJc3B1X3dyaXRlX3dhaXQoKTsKKwl3 cml0ZWwocmVndmFsLCBBUk1fUkVTRVRfUkVHSVNURVIpOworfQorCisvKiAKKyAqIEhhbHQgdGhl IHNvdW5kIHByb2Nlc3NvciwgY2xlYXIgdGhlIG1lbW9yeSwKKyAqIGxvYWQgc29tZSBkZWZhdWx0 IEFSTTcgY29kZSwgYW5kIHRoZW4gcmVzdGFydCBBUk03CisqLworc3RhdGljIHZvaWQgc3B1X3Jl c2V0KHZvaWQpCit7CisJc3B1X2Rpc2FibGUoKTsKKwlzcHVfbWVtc2V0KDAsIDAsIDB4MjAwMDAw IC8gNCk7CisJLyogUHV0IEFSTTcgaW4gZW5kbGVzcyBsb29wICovCisJY3RybF9vdXRsKDB4ZWEw MDAwMDIsIFNQVV9NRU1PUllfQkFTRSk7CisJc3B1X2VuYWJsZSgpOworfQorCisvKiBhaWNhX2No bl9zdGFydCAtIHdyaXRlIHRvIHNwdSB0byBzdGFydCBwbGF5YmFjayAqLworc3RhdGljIHZvaWQg YWljYV9jaG5fc3RhcnQodm9pZCkKK3sKKwlzcHVfd3JpdGVfd2FpdCgpOworCXdyaXRlbChBSUNB X0NNRF9LSUNLIHwgQUlDQV9DTURfU1RBUlQsICh1aW50MzJfdCAqKSBBSUNBX0NPTlRST0xfUE9J TlQpOworfQorCisvKiBhaWNhX2Nobl9oYWx0IC0gd3JpdGUgdG8gc3B1IHRvIGhhbHQgcGxheWJh Y2sgKi8KK3N0YXRpYyB2b2lkIGFpY2FfY2huX2hhbHQodm9pZCkKK3sKKwlzcHVfd3JpdGVfd2Fp dCgpOworCXdyaXRlbChBSUNBX0NNRF9LSUNLIHwgQUlDQV9DTURfU1RPUCwgKHVpbnQzMl90ICop IEFJQ0FfQ09OVFJPTF9QT0lOVCk7Cit9CisKKy8qIEFMU0EgY29kZSBiZWxvdyAqLworc3RhdGlj IHN0cnVjdCBzbmRfcGNtX2hhcmR3YXJlIHNuZF9wY21fYWljYV9wbGF5YmFja19odyA9IHsKKwku aW5mbyA9IChTTkRSVl9QQ01fSU5GT19OT05JTlRFUkxFQVZFRCksCisJLmZvcm1hdHMgPQorCSAg ICAoU05EUlZfUENNX0ZNVEJJVF9TOCB8IFNORFJWX1BDTV9GTVRCSVRfUzE2X0xFIHwKKwkgICAg IFNORFJWX1BDTV9GTVRCSVRfSU1BX0FEUENNKSwKKwkucmF0ZXMgPSBTTkRSVl9QQ01fUkFURV84 MDAwXzQ4MDAwLAorCS5yYXRlX21pbiA9IDgwMDAsCisJLnJhdGVfbWF4ID0gNDgwMDAsCisJLmNo YW5uZWxzX21pbiA9IDEsCisJLmNoYW5uZWxzX21heCA9IDIsCisJLmJ1ZmZlcl9ieXRlc19tYXgg PSBBSUNBX0JVRkZFUl9TSVpFLAorCS5wZXJpb2RfYnl0ZXNfbWluID0gQUlDQV9QRVJJT0RfU0la RSwKKwkucGVyaW9kX2J5dGVzX21heCA9IEFJQ0FfUEVSSU9EX1NJWkUsCisJLnBlcmlvZHNfbWlu ID0gQUlDQV9QRVJJT0RfTlVNQkVSLAorCS5wZXJpb2RzX21heCA9IEFJQ0FfUEVSSU9EX05VTUJF UiwKK307CisKK3N0YXRpYyBpbnQgYWljYV9kbWFfdHJhbnNmZXIoaW50IGNoYW5uZWxzLCBpbnQg YnVmZmVyX3NpemUsCisJCQkgICAgIHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFt KQoreworCWludCBxLCBlcnIsIHBlcmlvZF9vZmZzZXQ7CisJc3RydWN0IHNuZF9jYXJkX2FpY2Eg KmRyZWFtY2FzdGNhcmQ7CisJc3RydWN0IHNuZF9wY21fcnVudGltZSAqcnVudGltZTsKKwllcnIg PSAwOworCWRyZWFtY2FzdGNhcmQgPSBzdWJzdHJlYW0tPnBjbS0+cHJpdmF0ZV9kYXRhOworCXBl cmlvZF9vZmZzZXQgPSBkcmVhbWNhc3RjYXJkLT5jbGlja3M7CisJcGVyaW9kX29mZnNldCAlPSAo QUlDQV9QRVJJT0RfTlVNQkVSIC8gY2hhbm5lbHMpOworCXJ1bnRpbWUgPSBzdWJzdHJlYW0tPnJ1 bnRpbWU7CisJZm9yIChxID0gMDsgcSA8IGNoYW5uZWxzOyBxKyspIHsKKwkJZXJyID0gZG1hX3hm ZXIoQUlDQV9ETUFfQ0hBTk5FTCwKKwkJCSAgICAgICAodW5zaWduZWQgbG9uZykocnVudGltZS0+ ZG1hX2FyZWEgKworCQkJCQkgICAgICAgKEFJQ0FfQlVGRkVSX1NJWkUgKiBxKSAvCisJCQkJCSAg ICAgICBjaGFubmVscyArCisJCQkJCSAgICAgICBBSUNBX1BFUklPRF9TSVpFICoKKwkJCQkJICAg ICAgIHBlcmlvZF9vZmZzZXQpLAorCQkJICAgICAgIEFJQ0FfQ0hBTk5FTDBfT0ZGU0VUICsgcSAq IENIQU5ORUxfT0ZGU0VUICsKKwkJCSAgICAgICBBSUNBX1BFUklPRF9TSVpFICogcGVyaW9kX29m ZnNldCwKKwkJCSAgICAgICBidWZmZXJfc2l6ZSAvIGNoYW5uZWxzLCBBSUNBX0RNQV9NT0RFKTsK KwkJaWYgKHVubGlrZWx5KGVyciA8IDApKQorCQkJYnJlYWs7CisJCWRtYV93YWl0X2Zvcl9jb21w bGV0aW9uKEFJQ0FfRE1BX0NIQU5ORUwpOworCX0KKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMg dm9pZCBzdGFydHVwX2FpY2Eoc3RydWN0IHNuZF9jYXJkX2FpY2EgKmRyZWFtY2FzdGNhcmQpCit7 CisJc3B1X21lbWxvYWQoQUlDQV9DSEFOTkVMMF9DT05UUk9MX09GRlNFVCwKKwkJICAgICh1aW50 OF90ICopIGRyZWFtY2FzdGNhcmQtPmNoYW5uZWwsCisJCSAgICBzaXplb2Yoc3RydWN0IGFpY2Ff Y2hhbm5lbCkpOworCWFpY2FfY2huX3N0YXJ0KCk7Cit9CisKK3N0YXRpYyB2b2lkIHJ1bl9zcHVf ZG1hKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3sKKwlpbnQgYnVmZmVyX3NpemU7CisJc3Ry dWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW07CisJc3RydWN0IHNuZF9wY21fcnVudGlt ZSAqcnVudGltZTsKKwlzdHJ1Y3Qgc25kX2NhcmRfYWljYSAqZHJlYW1jYXN0Y2FyZDsKKwlzdHJ1 Y3Qgc3B1X3dvcmtfaG9sZGVyICpob2xkZXIgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHNw dV93b3JrX2hvbGRlciwgc3B1X2RtYV93b3JrKTsKKwlzdWJzdHJlYW0gPSBob2xkZXItPiBzc3Bv aW50ZXI7CisJZHJlYW1jYXN0Y2FyZCA9IHN1YnN0cmVhbS0+cGNtLT5wcml2YXRlX2RhdGE7CisJ cnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKKwlpZiAodW5saWtlbHkoZHJlYW1jYXN0Y2Fy ZC0+ZG1hX2NoZWNrID09IDApKSB7CisJCWJ1ZmZlcl9zaXplID0gZnJhbWVzX3RvX2J5dGVzKHJ1 bnRpbWUsIHJ1bnRpbWUtPmJ1ZmZlcl9zaXplKTsKKwkJaWYgKHJ1bnRpbWUtPmNoYW5uZWxzID4g MSkKKwkJCWRyZWFtY2FzdGNhcmQtPmNoYW5uZWwtPmZsYWdzIHw9IDB4MDE7CisJCWFpY2FfZG1h X3RyYW5zZmVyKHJ1bnRpbWUtPmNoYW5uZWxzLCBidWZmZXJfc2l6ZSwgc3Vic3RyZWFtKTsKKwkJ c3RhcnR1cF9haWNhKGRyZWFtY2FzdGNhcmQpOworCQlkcmVhbWNhc3RjYXJkLT5jbGlja3MgPQor CQkgICAgYnVmZmVyX3NpemUgLyAoQUlDQV9QRVJJT0RfU0laRSAqIHJ1bnRpbWUtPmNoYW5uZWxz KTsKKwkJcmV0dXJuOworCX0gZWxzZSB7CisJCWFpY2FfZG1hX3RyYW5zZmVyKHJ1bnRpbWUtPmNo YW5uZWxzLAorCQkJCSAgQUlDQV9QRVJJT0RfU0laRSAqIHJ1bnRpbWUtPmNoYW5uZWxzLAorCQkJ CSAgc3Vic3RyZWFtKTsKKwkJc25kX3BjbV9wZXJpb2RfZWxhcHNlZChkcmVhbWNhc3RjYXJkLT5z dWJzdHJlYW0pOworCQlkcmVhbWNhc3RjYXJkLT5jbGlja3MrKzsKKwkJZHJlYW1jYXN0Y2FyZC0+ Y2xpY2tzICU9IEFJQ0FfUEVSSU9EX05VTUJFUjsKKwkJbW9kX3RpbWVyKCZkcmVhbWNhc3RjYXJk LT50aW1lciwgamlmZmllcyArIDEpOworCX0KK30KKworc3RhdGljIHZvaWQgYWljYV9wZXJpb2Rf ZWxhcHNlZCh1bnNpZ25lZCBsb25nIHRpbWVyX3ZhcikKK3sKKwkvKnRpbWVyIGZ1Y3Rpb24gLSBz byBjYW5ub3Qgc2xlZXAgKi8KKwlpbnQgcGxheV9wZXJpb2Q7CisJc3RydWN0IHNuZF9wY21fcnVu dGltZSAqcnVudGltZTsKKwlzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbTsKKwlz dHJ1Y3Qgc25kX2NhcmRfYWljYSAqZHJlYW1jYXN0Y2FyZDsKKwlzdWJzdHJlYW0gPSAoc3RydWN0 IHNuZF9wY21fc3Vic3RyZWFtICopdGltZXJfdmFyOworCXJ1bnRpbWUgPSBzdWJzdHJlYW0tPnJ1 bnRpbWU7CisJZHJlYW1jYXN0Y2FyZCA9IHN1YnN0cmVhbS0+cGNtLT5wcml2YXRlX2RhdGE7CisJ LyogSGF2ZSB3ZSBwbGF5ZWQgb3V0IGFuIGFkZGl0aW9uYWwgcGVyaW9kPyAqLworCXBsYXlfcGVy aW9kID0KKwkgICAgZnJhbWVzX3RvX2J5dGVzKHJ1bnRpbWUsCisJCQkgICAgcmVhZGwKKwkJCSAg ICAoQUlDQV9DT05UUk9MX0NIQU5ORUxfU0FNUExFX05VTUJFUikpIC8KKwkgICAgQUlDQV9QRVJJ T0RfU0laRTsKKwlpZiAocGxheV9wZXJpb2QgPT0gZHJlYW1jYXN0Y2FyZC0+Y3VycmVudF9wZXJp b2QpIHsKKwkJLyogcmVzY2hlZHVsZSB0aGUgdGltZXIgKi8KKwkJbW9kX3RpbWVyKCYoZHJlYW1j YXN0Y2FyZC0+dGltZXIpLCBqaWZmaWVzICsgMSk7CisJCXJldHVybjsKKwl9CisJaWYgKHJ1bnRp bWUtPmNoYW5uZWxzID4gMSkKKwkJZHJlYW1jYXN0Y2FyZC0+Y3VycmVudF9wZXJpb2QgPSBwbGF5 X3BlcmlvZDsKKwlpZiAodW5saWtlbHkoZHJlYW1jYXN0Y2FyZC0+ZG1hX2NoZWNrID09IDApKQor CQlkcmVhbWNhc3RjYXJkLT5kbWFfY2hlY2sgPSAxOworCQlxdWV1ZV93b3JrKGFpY2FfcXVldWUs ICYoc3B1X3dvcmtpbmcuc3B1X2RtYV93b3JrKSk7Cit9CisKK3N0YXRpYyB2b2lkIHNwdV9iZWdp bl9kbWEoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCit7CisJLyogTXVzdCBi ZSBhdG9taWMgKi8KKwlzdHJ1Y3Qgc25kX2NhcmRfYWljYSAqZHJlYW1jYXN0Y2FyZDsKKwlzdHJ1 Y3Qgc25kX3BjbV9ydW50aW1lICpydW50aW1lOworCXJ1bnRpbWUgPSBzdWJzdHJlYW0tPnJ1bnRp bWU7CisJZHJlYW1jYXN0Y2FyZCA9IHN1YnN0cmVhbS0+cGNtLT5wcml2YXRlX2RhdGE7CisJLyog IFVzZSBxdWV1ZSB0byBkbyB0aGUgaGVhdnkgbGlmdGluZyAqLworCXNwdV93b3JraW5nLnNzcG9p bnRlciA9IHN1YnN0cmVhbTsKKwlJTklUX1dPUksoJihzcHVfd29ya2luZy5zcHVfZG1hX3dvcmsp LCBydW5fc3B1X2RtYSk7CisJcXVldWVfd29yayhhaWNhX3F1ZXVlLCAmKHNwdV93b3JraW5nLnNw dV9kbWFfd29yaykpOworCS8qIFRpbWVyIG1heSBhbHJlYWR5IGJlIHJ1bm5pbmcgKi8KKwlpZiAo dW5saWtlbHkoZHJlYW1jYXN0Y2FyZC0+dGltZXIuZGF0YSkpIHsKKwkJbW9kX3RpbWVyKCZkcmVh bWNhc3RjYXJkLT50aW1lciwgamlmZmllcyArIDQpOworCQlyZXR1cm47CisJfQorCWluaXRfdGlt ZXIoJihkcmVhbWNhc3RjYXJkLT50aW1lcikpOworCWRyZWFtY2FzdGNhcmQtPnRpbWVyLmRhdGEg PSAodW5zaWduZWQgbG9uZylzdWJzdHJlYW07CisJZHJlYW1jYXN0Y2FyZC0+dGltZXIuZnVuY3Rp b24gPSBhaWNhX3BlcmlvZF9lbGFwc2VkOworCWRyZWFtY2FzdGNhcmQtPnRpbWVyLmV4cGlyZXMg PSBqaWZmaWVzICsgNDsKKwlhZGRfdGltZXIoJihkcmVhbWNhc3RjYXJkLT50aW1lcikpOworfQor CitzdGF0aWMgaW50IHNuZF9haWNhcGNtX3BjbV9vcGVuKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVh bQorCQkJCSpzdWJzdHJlYW0pCit7CisJc3RydWN0IHNuZF9wY21fcnVudGltZSAqcnVudGltZTsK KwlzdHJ1Y3QgYWljYV9jaGFubmVsICpjaGFubmVsOworCXN0cnVjdCBzbmRfY2FyZF9haWNhICpk cmVhbWNhc3RjYXJkOworCWlmICghZW5hYmxlKQorCQlyZXR1cm4gLUVOT0VOVDsKKwlkcmVhbWNh c3RjYXJkID0gc3Vic3RyZWFtLT5wY20tPnByaXZhdGVfZGF0YTsKKwljaGFubmVsID0ga21hbGxv YyhzaXplb2Yoc3RydWN0IGFpY2FfY2hhbm5lbCksIEdGUF9LRVJORUwpOworCWlmICghY2hhbm5l bCkKKwkJcmV0dXJuIC1FTk9NRU07CisJLyogc2V0IGRlZmF1bHRzIGZvciBjaGFubmVsICovCisJ Y2hhbm5lbC0+c2ZtdCA9IFNNXzhCSVQ7CisJY2hhbm5lbC0+Y21kID0gQUlDQV9DTURfU1RBUlQ7 CisJY2hhbm5lbC0+dm9sID0gZHJlYW1jYXN0Y2FyZC0+bWFzdGVyX3ZvbHVtZTsKKwljaGFubmVs LT5wYW4gPSAweDgwOworCWNoYW5uZWwtPnBvcyA9IDA7CisJY2hhbm5lbC0+ZmxhZ3MgPSAwOwkv KiBkZWZhdWx0IHRvIG1vbm8gKi8KKwlkcmVhbWNhc3RjYXJkLT5jaGFubmVsID0gY2hhbm5lbDsK KwlydW50aW1lID0gc3Vic3RyZWFtLT5ydW50aW1lOworCXJ1bnRpbWUtPmh3ID0gc25kX3BjbV9h aWNhX3BsYXliYWNrX2h3OworCXNwdV9lbmFibGUoKTsKKwlkcmVhbWNhc3RjYXJkLT5jbGlja3Mg PSAwOworCWRyZWFtY2FzdGNhcmQtPmN1cnJlbnRfcGVyaW9kID0gMDsKKwlkcmVhbWNhc3RjYXJk LT5kbWFfY2hlY2sgPSAwOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNuZF9haWNhcGNt X3BjbV9jbG9zZShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0KKwkJCQkgKnN1YnN0cmVhbSkKK3sK KwlzdHJ1Y3Qgc25kX2NhcmRfYWljYSAqZHJlYW1jYXN0Y2FyZCA9IHN1YnN0cmVhbS0+cGNtLT5w cml2YXRlX2RhdGE7CisJZGVsX3RpbWVyKCZkcmVhbWNhc3RjYXJkLT50aW1lcik7CisJa2ZyZWUo ZHJlYW1jYXN0Y2FyZC0+Y2hhbm5lbCk7CisJc3B1X2Rpc2FibGUoKTsKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBzbmRfYWljYXBjbV9wY21faHdfZnJlZShzdHJ1Y3Qgc25kX3BjbV9zdWJz dHJlYW0KKwkJCQkgICAqc3Vic3RyZWFtKQoreworCS8qIEZyZWUgdGhlIERNQSBidWZmZXIgKi8K KwlyZXR1cm4gc25kX3BjbV9saWJfZnJlZV9wYWdlcyhzdWJzdHJlYW0pOworfQorCitzdGF0aWMg aW50IHNuZF9haWNhcGNtX3BjbV9od19wYXJhbXMoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtCisJ CQkJICAgICAqc3Vic3RyZWFtLCBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMKKwkJCQkgICAgICpo d19wYXJhbXMpCit7CisJLyogQWxsb2NhdGUgYSBETUEgYnVmZmVyIHVzaW5nIEFMU0EgYnVpbHQt aW5zICovCisJcmV0dXJuCisJICAgIHNuZF9wY21fbGliX21hbGxvY19wYWdlcyhzdWJzdHJlYW0s IHBhcmFtc19idWZmZXJfYnl0ZXMoaHdfcGFyYW1zKSk7Cit9CisKK3N0YXRpYyBpbnQgc25kX2Fp Y2FwY21fcGNtX3ByZXBhcmUoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtCisJCQkJICAgKnN1YnN0 cmVhbSkKK3sKKwlzdHJ1Y3Qgc25kX2NhcmRfYWljYSAqZHJlYW1jYXN0Y2FyZCA9IHN1YnN0cmVh bS0+cGNtLT5wcml2YXRlX2RhdGE7CisJaWYgKChzdWJzdHJlYW0tPnJ1bnRpbWUpLT5mb3JtYXQg PT0gU05EUlZfUENNX0ZPUk1BVF9TMTZfTEUpCisJCWRyZWFtY2FzdGNhcmQtPmNoYW5uZWwtPnNm bXQgPSBTTV8xNkJJVDsKKwlkcmVhbWNhc3RjYXJkLT5jaGFubmVsLT5mcmVxID0gc3Vic3RyZWFt LT5ydW50aW1lLT5yYXRlOworCWRyZWFtY2FzdGNhcmQtPnN1YnN0cmVhbSA9IHN1YnN0cmVhbTsK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzbmRfYWljYXBjbV9wY21fdHJpZ2dlcihzdHJ1 Y3Qgc25kX3BjbV9zdWJzdHJlYW0KKwkJCQkgICAqc3Vic3RyZWFtLCBpbnQgY21kKQoreworCXN0 cnVjdCBzbmRfY2FyZF9haWNhICpkcmVhbWNhc3RjYXJkOworCXN3aXRjaCAoY21kKSB7CisJY2Fz ZSBTTkRSVl9QQ01fVFJJR0dFUl9TVEFSVDoKKwkJc3B1X2JlZ2luX2RtYShzdWJzdHJlYW0pOwor CQlicmVhazsKKwljYXNlIFNORFJWX1BDTV9UUklHR0VSX1NUT1A6CisJCWRyZWFtY2FzdGNhcmQg PSBzdWJzdHJlYW0tPnBjbS0+cHJpdmF0ZV9kYXRhOworCQlpZiAoZHJlYW1jYXN0Y2FyZC0+dGlt ZXIuZGF0YSkKKwkJCWRlbF90aW1lcigmZHJlYW1jYXN0Y2FyZC0+dGltZXIpOworCQlhaWNhX2No bl9oYWx0KCk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KKwly ZXR1cm4gMDsKK30KKworc3RhdGljIHVuc2lnbmVkIGxvbmcgc25kX2FpY2FwY21fcGNtX3BvaW50 ZXIoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtCisJCQkJCSAgICAgKnN1YnN0cmVhbSkKK3sKKwly ZXR1cm4gcmVhZGwoQUlDQV9DT05UUk9MX0NIQU5ORUxfU0FNUExFX05VTUJFUik7Cit9CisKK3N0 YXRpYyBzdHJ1Y3Qgc25kX3BjbV9vcHMgc25kX2FpY2FwY21fcGxheWJhY2tfb3BzID0geworCS5v cGVuID0gc25kX2FpY2FwY21fcGNtX29wZW4sCisJLmNsb3NlID0gc25kX2FpY2FwY21fcGNtX2Ns b3NlLAorCS5pb2N0bCA9IHNuZF9wY21fbGliX2lvY3RsLAorCS5od19wYXJhbXMgPSBzbmRfYWlj YXBjbV9wY21faHdfcGFyYW1zLAorCS5od19mcmVlID0gc25kX2FpY2FwY21fcGNtX2h3X2ZyZWUs CisJLnByZXBhcmUgPSBzbmRfYWljYXBjbV9wY21fcHJlcGFyZSwKKwkudHJpZ2dlciA9IHNuZF9h aWNhcGNtX3BjbV90cmlnZ2VyLAorCS5wb2ludGVyID0gc25kX2FpY2FwY21fcGNtX3BvaW50ZXIs Cit9OworCisvKiBUTyBETzogc2V0IHVwIHRvIGhhbmRsZSBtb3JlIHRoYW4gb25lIHBjbSBpbnN0 YW5jZSAqLworc3RhdGljIGludCBfX2luaXQgc25kX2FpY2FwY21jaGlwKHN0cnVjdCBzbmRfY2Fy ZF9haWNhCisJCQkJICAqZHJlYW1jYXN0Y2FyZCwgaW50IHBjbV9pbmRleCkKK3sKKwlzdHJ1Y3Qg c25kX3BjbSAqcGNtOworCWludCBlcnI7CisJLyogQUlDQSBoYXMgbm8gY2FwdHVyZSBhYmlsaXR5 ICovCisJZXJyID0KKwkgICAgc25kX3BjbV9uZXcoZHJlYW1jYXN0Y2FyZC0+Y2FyZCwgIkFJQ0Eg UENNIiwgcGNtX2luZGV4LCAxLCAwLCAmcGNtKTsKKwlpZiAodW5saWtlbHkoZXJyIDwgMCkpCisJ CXJldHVybiBlcnI7CisJcGNtLT5wcml2YXRlX2RhdGEgPSBkcmVhbWNhc3RjYXJkOworCXN0cmNw eShwY20tPm5hbWUsICJBSUNBIFBDTSIpOworCXNuZF9wY21fc2V0X29wcyhwY20sIFNORFJWX1BD TV9TVFJFQU1fUExBWUJBQ0ssCisJCQkmc25kX2FpY2FwY21fcGxheWJhY2tfb3BzKTsKKwkvKiBB bGxvY2F0ZSB0aGUgRE1BIGJ1ZmZlcnMgKi8KKwllcnIgPQorCSAgICBzbmRfcGNtX2xpYl9wcmVh bGxvY2F0ZV9wYWdlc19mb3JfYWxsKHBjbSwKKwkJCQkJCSAgU05EUlZfRE1BX1RZUEVfQ09OVElO VU9VUywKKwkJCQkJCSAgc25kX2RtYV9jb250aW51b3VzX2RhdGEKKwkJCQkJCSAgKEdGUF9LRVJO RUwpLAorCQkJCQkJICBBSUNBX0JVRkZFUl9TSVpFLAorCQkJCQkJICBBSUNBX0JVRkZFUl9TSVpF KTsKKwlyZXR1cm4gZXJyOworfQorCisvKiBNaXhlciBjb250cm9scyAqLworc3RhdGljIGludCBh aWNhX3BjbXN3aXRjaF9pbmZvKHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCQkJICAg ICAgIHN0cnVjdCBzbmRfY3RsX2VsZW1faW5mbyAqdWluZm8pCit7CisJdWluZm8tPnR5cGUgPSBT TkRSVl9DVExfRUxFTV9UWVBFX0JPT0xFQU47CisJdWluZm8tPmNvdW50ID0gMTsKKwl1aW5mby0+ dmFsdWUuaW50ZWdlci5taW4gPSAwOworCXVpbmZvLT52YWx1ZS5pbnRlZ2VyLm1heCA9IDE7CisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYWljYV9wY21zd2l0Y2hfZ2V0KHN0cnVjdCBzbmRf a2NvbnRyb2wgKmtjb250cm9sLAorCQkJICAgICAgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAq dWNvbnRyb2wpCit7CisJdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0gPSAxOwkvKiBU TyBETzogRml4IG1lICovCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYWljYV9wY21zd2l0 Y2hfcHV0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCQkJICAgICAgc3RydWN0IHNu ZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCit7CisJaWYgKHVjb250cm9sLT52YWx1ZS5pbnRl Z2VyLnZhbHVlWzBdID09IDEpCisJCXJldHVybiAwOwkvKiBUTyBETzogRml4IG1lICovCisJZWxz ZQorCQlhaWNhX2Nobl9oYWx0KCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYWljYV9w Y212b2x1bWVfaW5mbyhzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJCSAgICAgICBz dHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8gKnVpbmZvKQoreworCXVpbmZvLT50eXBlID0gU05EUlZf Q1RMX0VMRU1fVFlQRV9JTlRFR0VSOworCXVpbmZvLT5jb3VudCA9IDE7CisJdWluZm8tPnZhbHVl LmludGVnZXIubWluID0gMDsKKwl1aW5mby0+dmFsdWUuaW50ZWdlci5tYXggPSAweEZGOworCXJl dHVybiAwOworfQorCitzdGF0aWMgaW50IGFpY2FfcGNtdm9sdW1lX2dldChzdHJ1Y3Qgc25kX2tj b250cm9sICprY29udHJvbCwKKwkJCSAgICAgIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVj b250cm9sKQoreworCXN0cnVjdCBzbmRfY2FyZF9haWNhICpkcmVhbWNhc3RjYXJkOworCWRyZWFt Y2FzdGNhcmQgPSBrY29udHJvbC0+cHJpdmF0ZV9kYXRhOworCWlmICh1bmxpa2VseSghZHJlYW1j YXN0Y2FyZC0+Y2hhbm5lbCkpCisJCXJldHVybiAtRVRYVEJTWTsJLyogd2UndmUgbm90IHlldCBi ZWVuIHNldCB1cCAqLworCXVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdID0gZHJlYW1j YXN0Y2FyZC0+Y2hhbm5lbC0+dm9sOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGFpY2Ff cGNtdm9sdW1lX3B1dChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJCSAgICAgIHN0 cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQoreworCXN0cnVjdCBzbmRfY2FyZF9h aWNhICpkcmVhbWNhc3RjYXJkOworCWRyZWFtY2FzdGNhcmQgPSBrY29udHJvbC0+cHJpdmF0ZV9k YXRhOworCWlmICh1bmxpa2VseSghZHJlYW1jYXN0Y2FyZC0+Y2hhbm5lbCkpCisJCXJldHVybiAt RVRYVEJTWTsKKwlpZiAodW5saWtlbHkoZHJlYW1jYXN0Y2FyZC0+Y2hhbm5lbC0+dm9sID09CisJ CSAgICAgdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0pKQorCQlyZXR1cm4gMDsKKwlk cmVhbWNhc3RjYXJkLT5jaGFubmVsLT52b2wgPSB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1 ZVswXTsKKwlkcmVhbWNhc3RjYXJkLT5tYXN0ZXJfdm9sdW1lID0gdWNvbnRyb2wtPnZhbHVlLmlu dGVnZXIudmFsdWVbMF07CisJc3B1X21lbWxvYWQoQUlDQV9DSEFOTkVMMF9DT05UUk9MX09GRlNF VCwKKwkJICAgICh1aW50OF90ICopIGRyZWFtY2FzdGNhcmQtPmNoYW5uZWwsCisJCSAgICBzaXpl b2Yoc3RydWN0IGFpY2FfY2hhbm5lbCkpOworCisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBzdHJ1 Y3Qgc25kX2tjb250cm9sX25ldyBzbmRfYWljYV9wY21zd2l0Y2hfY29udHJvbCBfX2RldmluaXRk YXRhID0geworCS5pZmFjZSA9IFNORFJWX0NUTF9FTEVNX0lGQUNFX01JWEVSLAorCS5uYW1lID0g IlBDTSBQbGF5YmFjayBTd2l0Y2giLAorCS5pbmRleCA9IDAsCisJLmluZm8gPSBhaWNhX3BjbXN3 aXRjaF9pbmZvLAorCS5nZXQgPSBhaWNhX3BjbXN3aXRjaF9nZXQsCisJLnB1dCA9IGFpY2FfcGNt c3dpdGNoX3B1dAorfTsKKworc3RhdGljIHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IHNuZF9haWNh X3BjbXZvbHVtZV9jb250cm9sIF9fZGV2aW5pdGRhdGEgPSB7CisJLmlmYWNlID0gU05EUlZfQ1RM X0VMRU1fSUZBQ0VfTUlYRVIsCisJLm5hbWUgPSAiUENNIFBsYXliYWNrIFZvbHVtZSIsCisJLmlu ZGV4ID0gMCwKKwkuaW5mbyA9IGFpY2FfcGNtdm9sdW1lX2luZm8sCisJLmdldCA9IGFpY2FfcGNt dm9sdW1lX2dldCwKKwkucHV0ID0gYWljYV9wY212b2x1bWVfcHV0Cit9OworCitzdGF0aWMgaW50 IGxvYWRfYWljYV9maXJtd2FyZSh2b2lkKQoreworCWludCBlcnI7CisJY29uc3Qgc3RydWN0IGZp cm13YXJlICpmd19lbnRyeTsKKwllcnIgPSAwOworCXNwdV9yZXNldCgpOworCWVyciA9IHJlcXVl c3RfZmlybXdhcmUoJmZ3X2VudHJ5LCAiYWljYV9maXJtd2FyZS5iaW4iLCAmcGQtPmRldik7CisJ aWYgKHVubGlrZWx5KGVycikpCisJCXJldHVybiBlcnI7CisJLyogd3JpdGUgZmlyd2FyZSBpbnRv IG1lbW9yeSAqLworCXNwdV9kaXNhYmxlKCk7CisJc3B1X21lbWxvYWQoMCwgZndfZW50cnktPmRh dGEsIGZ3X2VudHJ5LT5zaXplKTsKKwlzcHVfZW5hYmxlKCk7CisJcmVsZWFzZV9maXJtd2FyZShm d19lbnRyeSk7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCBfX2RldmluaXQgYWRkX2Fp Y2FtaXhlcl9jb250cm9scyhzdHJ1Y3Qgc25kX2NhcmRfYWljYQorCQkJCQkgICAgKmRyZWFtY2Fz dGNhcmQpCit7CisJaW50IGVycjsKKwllcnIgPSBzbmRfY3RsX2FkZAorCSAgICAoZHJlYW1jYXN0 Y2FyZC0+Y2FyZCwKKwkgICAgIHNuZF9jdGxfbmV3MSgmc25kX2FpY2FfcGNtdm9sdW1lX2NvbnRy b2wsIGRyZWFtY2FzdGNhcmQpKTsKKwlpZiAodW5saWtlbHkoZXJyIDwgMCkpCisJCXJldHVybiBl cnI7CisJZXJyID0gc25kX2N0bF9hZGQKKwkgICAgKGRyZWFtY2FzdGNhcmQtPmNhcmQsCisJICAg ICBzbmRfY3RsX25ldzEoJnNuZF9haWNhX3BjbXN3aXRjaF9jb250cm9sLCBkcmVhbWNhc3RjYXJk KSk7CisJaWYgKHVubGlrZWx5KGVyciA8IDApKQorCQlyZXR1cm4gZXJyOworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50IHNuZF9haWNhX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpk ZXZwdHIpCit7CisJc3RydWN0IHNuZF9jYXJkX2FpY2EgKmRyZWFtY2FzdGNhcmQ7CisJZHJlYW1j YXN0Y2FyZCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKGRldnB0cik7CisJaWYgKHVubGlrZWx5KCFk cmVhbWNhc3RjYXJkKSkKKwkJcmV0dXJuIC1FTk9ERVY7CisJc25kX2NhcmRfZnJlZShkcmVhbWNh c3RjYXJkLT5jYXJkKTsKKwlrZnJlZShkcmVhbWNhc3RjYXJkKTsKKwlwbGF0Zm9ybV9zZXRfZHJ2 ZGF0YShkZXZwdHIsIE5VTEwpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IF9faW5pdCBz bmRfYWljYV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZwdHIpCit7CisJaW50IGVy cjsKKwlzdHJ1Y3Qgc25kX2NhcmRfYWljYSAqZHJlYW1jYXN0Y2FyZDsKKwlkcmVhbWNhc3RjYXJk ID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IHNuZF9jYXJkX2FpY2EpLCBHRlBfS0VSTkVMKTsKKwlp ZiAodW5saWtlbHkoIWRyZWFtY2FzdGNhcmQpKQorCQlyZXR1cm4gLUVOT01FTTsKKwlkcmVhbWNh c3RjYXJkLT5jYXJkID0KKwkgICAgc25kX2NhcmRfbmV3KGluZGV4LCBTTkRfQUlDQV9EUklWRVIs IFRISVNfTU9EVUxFLCAwKTsKKwlpZiAodW5saWtlbHkoIWRyZWFtY2FzdGNhcmQtPmNhcmQpKSB7 CisJCWtmcmVlKGRyZWFtY2FzdGNhcmQpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisJc3RyY3B5 KGRyZWFtY2FzdGNhcmQtPmNhcmQtPmRyaXZlciwgInNuZF9haWNhIik7CisJc3RyY3B5KGRyZWFt Y2FzdGNhcmQtPmNhcmQtPnNob3J0bmFtZSwgU05EX0FJQ0FfRFJJVkVSKTsKKwlzdHJjcHkoZHJl YW1jYXN0Y2FyZC0+Y2FyZC0+bG9uZ25hbWUsCisJICAgICAgICJZYW1haGEgQUlDQSBTdXBlciBJ bnRlbGxpZ2VudCBTb3VuZCBQcm9jZXNzb3IgZm9yIFNFR0EgRHJlYW1jYXN0Iik7CisJLyogTG9h ZCB0aGUgUENNICdjaGlwJyAqLworCWVyciA9IHNuZF9haWNhcGNtY2hpcChkcmVhbWNhc3RjYXJk LCAwKTsKKwlpZiAodW5saWtlbHkoZXJyIDwgMCkpCisJCWdvdG8gZnJlZWRyZWFtY2FzdDsKKwlz bmRfY2FyZF9zZXRfZGV2KGRyZWFtY2FzdGNhcmQtPmNhcmQsICZkZXZwdHItPmRldik7CisJZHJl YW1jYXN0Y2FyZC0+dGltZXIuZGF0YSA9IDA7CisJZHJlYW1jYXN0Y2FyZC0+Y2hhbm5lbCA9IE5V TEw7CisJLyogQWRkIGJhc2ljIGNvbnRyb2xzICovCisJZXJyID0gYWRkX2FpY2FtaXhlcl9jb250 cm9scyhkcmVhbWNhc3RjYXJkKTsKKwlpZiAodW5saWtlbHkoZXJyIDwgMCkpCisJCWdvdG8gZnJl ZWRyZWFtY2FzdDsKKwkvKiBSZWdpc3RlciB0aGUgY2FyZCB3aXRoIEFMU0Egc3Vic3lzdGVtICov CisJZXJyID0gc25kX2NhcmRfcmVnaXN0ZXIoZHJlYW1jYXN0Y2FyZC0+Y2FyZCk7CisJaWYgKHVu bGlrZWx5KGVyciA8IDApKQorCQlnb3RvIGZyZWVkcmVhbWNhc3Q7CisJcGxhdGZvcm1fc2V0X2Ry dmRhdGEoZGV2cHRyLCBkcmVhbWNhc3RjYXJkKTsKKwlhaWNhX3F1ZXVlID0gY3JlYXRlX3dvcmtx dWV1ZSgiYWljYSIpOworCWlmICh1bmxpa2VseSghYWljYV9xdWV1ZSkpCisJCWdvdG8gZnJlZWRy ZWFtY2FzdDsKKwlzbmRfcHJpbnRrCisJICAgICgiQUxTQSBEcml2ZXIgZm9yIFlhbWFoYSBBSUNB IFN1cGVyIEludGVsbGlnZW50IFNvdW5kIFByb2Nlc3NvclxuIik7CisJcmV0dXJuIDA7CisgICAg ICBmcmVlZHJlYW1jYXN0OgorCXNuZF9jYXJkX2ZyZWUoZHJlYW1jYXN0Y2FyZC0+Y2FyZCk7CisJ a2ZyZWUoZHJlYW1jYXN0Y2FyZCk7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIHN0cnVjdCBw bGF0Zm9ybV9kcml2ZXIgc25kX2FpY2FfZHJpdmVyID0geworCS5wcm9iZSA9IHNuZF9haWNhX3By b2JlLAorCS5yZW1vdmUgPSBzbmRfYWljYV9yZW1vdmUsCisJLmRyaXZlciA9IHsKKwkJICAgLm5h bWUgPSBTTkRfQUlDQV9EUklWRVJ9LAorfTsKKworc3RhdGljIGludCBfX2luaXQgYWljYV9pbml0 KHZvaWQpCit7CisJaW50IGVycjsKKwllcnIgPSBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJnNu ZF9haWNhX2RyaXZlcik7CisJaWYgKHVubGlrZWx5KGVyciA8IDApKQorCQlyZXR1cm4gZXJyOwor CXBkID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyX3NpbXBsZShTTkRfQUlDQV9EUklWRVIsIC0x LAorCQkJCQkgICAgIGFpY2FfbWVtb3J5X3NwYWNlLCAyKTsKKwlpZiAodW5saWtlbHkoSVNfRVJS KHBkKSkpIHsKKwkJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJnNuZF9haWNhX2RyaXZlcik7 CisJCXJldHVybiBQVFJfRVJSKHBkKTsKKwl9CisJLyogTG9hZCB0aGUgZmlybXdhcmUgKi8KKwll cnIgPSBsb2FkX2FpY2FfZmlybXdhcmUoKTsKKwlpZiAodW5saWtlbHkoZXJyIDwgMCkpCisJCXJl dHVybiBlcnI7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgX19leGl0IGFpY2FfZXhp dCh2b2lkKQoreworCS8qIERlc3Ryb3kgdGhlIGFpY2Ega2VybmVsIHRocmVhZCAqLworCWRlc3Ry b3lfd29ya3F1ZXVlKGFpY2FfcXVldWUpOworCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKHBk KTsKKwlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3Rlcigmc25kX2FpY2FfZHJpdmVyKTsKKwkvKiBL aWxsIGFueSBzb3VuZCBzdGlsbCBwbGF5aW5nIGFuZCByZXNldCBBUk03IHRvIHNhZmUgc3RhdGUg Ki8KKwlzcHVfcmVzZXQoKTsKK30KKworbW9kdWxlX2luaXQoYWljYV9pbml0KTsKK21vZHVsZV9l eGl0KGFpY2FfZXhpdCk7CmRpZmYgLU5hdXIgLi9saW51eC0yLjYuMjEtb3JpZy9zb3VuZC9zaC9h aWNhLmggLi9saW51eC0yLjYuMjEvc291bmQvc2gvYWljYS5oCi0tLSAuL2xpbnV4LTIuNi4yMS1v cmlnL3NvdW5kL3NoL2FpY2EuaAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAor KysgLi9saW51eC0yLjYuMjEvc291bmQvc2gvYWljYS5oCTIwMDctMDUtMDcgMjE6NDc6MzEuMDAw MDAwMDAwICswMTAwCkBAIC0wLDAgKzEsODAgQEAKKy8qIGFpY2EuaAorICogSGVhZGVyIGZpbGUg Zm9yIEFMU0EgZHJpdmVyIGZvcgorICogU2VnYSBEcmVhbWNhc3QgWWFtYWhhIEFJQ0Egc291bmQK KyAqIENvcHlyaWdodCBBZHJpYW4gTWNNZW5hbWluCisgKiA8YWRyaWFuQG1jbWVuLmRlbW9uLmNv LnVrPgorICogMjAwNgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMg b2YgdmVyc2lvbiAyIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5 IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAq CisgKi8KKworLyogU1BVIG1lbW9yeSBhbmQgcmVnaXN0ZXIgY29uc3RhbnRzIGV0YyAqLworI2Rl ZmluZSBHMl9GSUZPIDB4YTA1ZjY4OGMKKyNkZWZpbmUgU1BVX01FTU9SWV9CQVNFIDB4QTA4MDAw MDAKKyNkZWZpbmUgQVJNX1JFU0VUX1JFR0lTVEVSIDB4QTA3MDJDMDAKKyNkZWZpbmUgU1BVX1JF R0lTVEVSX0JBU0UgMHhBMDcwMDAwMAorCisvKiBBSUNBIGNoYW5uZWxzIHN0dWZmICovCisjZGVm aW5lIEFJQ0FfQ09OVFJPTF9QT0lOVCAweEEwODEwMDAwCisjZGVmaW5lIEFJQ0FfQ09OVFJPTF9D SEFOTkVMX1NBTVBMRV9OVU1CRVIgMHhBMDgxMDAwOAorI2RlZmluZSBBSUNBX0NIQU5ORUwwX0NP TlRST0xfT0ZGU0VUIDB4MTAwMDQKKworLyogQ29tbWFuZCB2YWx1ZXMgKi8KKyNkZWZpbmUgQUlD QV9DTURfS0lDSyAweDgwMDAwMDAwCisjZGVmaW5lIEFJQ0FfQ01EX05PTkUgMAorI2RlZmluZSBB SUNBX0NNRF9TVEFSVCAxCisjZGVmaW5lIEFJQ0FfQ01EX1NUT1AgMgorI2RlZmluZSBBSUNBX0NN RF9WT0wgMworCisvKiBTb3VuZCBtb2RlcyAqLworI2RlZmluZSBTTV84QklUCQkxCisjZGVmaW5l IFNNXzE2QklUCTAKKyNkZWZpbmUgU01fQURQQ00JMgorCisvKiBCdWZmZXIgYW5kIHBlcmlvZCBz aXplICovCisjZGVmaW5lIEFJQ0FfQlVGRkVSX1NJWkUgMHg4MDAwCisjZGVmaW5lIEFJQ0FfUEVS SU9EX1NJWkUgMHg4MDAKKyNkZWZpbmUgQUlDQV9QRVJJT0RfTlVNQkVSIDE2CisKKyNkZWZpbmUg QUlDQV9DSEFOTkVMMF9PRkZTRVQgMHgxMTAwMAorI2RlZmluZSBBSUNBX0NIQU5ORUwxX09GRlNF VCAweDIxMDAwCisjZGVmaW5lIENIQU5ORUxfT0ZGU0VUIDB4MTAwMDAKKworI2RlZmluZSBBSUNB X0RNQV9DSEFOTkVMIDAKKyNkZWZpbmUgQUlDQV9ETUFfTU9ERSA1CisKKyNkZWZpbmUgU05EX0FJ Q0FfRFJJVkVSICJBSUNBIgorCitzdHJ1Y3QgYWljYV9jaGFubmVsIHsKKwl1aW50MzJfdCBjbWQ7 CQkvKiBDb21tYW5kIElEICAgICAgICAgICAqLworCXVpbnQzMl90IHBvczsJCS8qIFNhbXBsZSBw b3NpdGlvbiAgICAgICovCisJdWludDMyX3QgbGVuZ3RoOwkvKiBTYW1wbGUgbGVuZ3RoICAgICAg ICAqLworCXVpbnQzMl90IGZyZXE7CQkvKiBGcmVxdWVuY3kgICAgICAgICAgICAqLworCXVpbnQz Ml90IHZvbDsJCS8qIFZvbHVtZSAwLTI1NSAgICAgICAgICovCisJdWludDMyX3QgcGFuOwkJLyog UGFuIDAtMjU1ICAgICAgICAgICAgKi8KKwl1aW50MzJfdCBzZm10OwkJLyogU291bmQgZm9ybWF0 ICAgICAgICAgKi8KKwl1aW50MzJfdCBmbGFnczsJCS8qIEJpdCBmbGFncyAgICAgICAgICAgICov Cit9OworCitzdHJ1Y3Qgc25kX2NhcmRfYWljYSB7CisJc3RydWN0IHNuZF9jYXJkICpjYXJkOwor CXN0cnVjdCBhaWNhX2NoYW5uZWwgKmNoYW5uZWw7CisJc3RydWN0IHNuZF9wY21fc3Vic3RyZWFt ICpzdWJzdHJlYW07CisJaW50IGNsaWNrczsKKwlpbnQgY3VycmVudF9wZXJpb2Q7CisJc3RydWN0 IHRpbWVyX2xpc3QgdGltZXI7CisJaW50IG1hc3Rlcl92b2x1bWU7CisJaW50IGRtYV9jaGVjazsK K307CmRpZmYgLU5hdXIgLi9saW51eC0yLjYuMjEtb3JpZy9zb3VuZC9zaC9LY29uZmlnIC4vbGlu dXgtMi42LjIxL3NvdW5kL3NoL0tjb25maWcKLS0tIC4vbGludXgtMi42LjIxLW9yaWcvc291bmQv c2gvS2NvbmZpZwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysgLi9saW51 eC0yLjYuMjEvc291bmQvc2gvS2NvbmZpZwkyMDA3LTA1LTA3IDIxOjI4OjMwLjAwMDAwMDAwMCAr MDEwMApAQCAtMCwwICsxLDE0IEBACisjIEFMU0EgU0ggZHJpdmVycworCittZW51ICJTVVBFUkgg ZGV2aWNlcyIKKwlkZXBlbmRzIG9uIFNORCE9biAmJiBTVVBFUkgKKworY29uZmlnIFNORF9BSUNB CisJdHJpc3RhdGUgIkRyZWFtY2FzdCBZYW1haGEgQUlDQSBzb3VuZCIKKwlkZXBlbmRzIG9uIFNI X0RSRUFNQ0FTVCAmJiBTTkQKKwlzZWxlY3QgU05EX1BDTQorCWhlbHAKKwkgIEFMU0EgU291bmQg ZHJpdmVyIGZvciB0aGUgU0VHQSBEcmVhbWNhc3QgY29uc29sZS4KKworZW5kbWVudQorCmRpZmYg LU5hdXIgLi9saW51eC0yLjYuMjEtb3JpZy9zb3VuZC9zaC9NYWtlZmlsZSAuL2xpbnV4LTIuNi4y MS9zb3VuZC9zaC9NYWtlZmlsZQotLS0gLi9saW51eC0yLjYuMjEtb3JpZy9zb3VuZC9zaC9NYWtl ZmlsZQkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysgLi9saW51eC0yLjYu MjEvc291bmQvc2gvTWFrZWZpbGUJMjAwNy0wNS0wNyAyMTozNDoxMC4wMDAwMDAwMDAgKzAxMDAK QEAgLTAsMCArMSw4IEBACisjCisjIE1ha2VmaWxlIGZvciBBTFNBCisjCisKK3NuZC1haWNhLW9i anMgOj0gYWljYS5vCisKKyMgVG9wbGV2ZWwgTW9kdWxlIERlcGVuZGVuY3kKK29iai0kKENPTkZJ R19TTkRfQUlDQSkgKz0gc25kLWFpY2Eubwo= ------=_Part_206287_28881703.1179174720041-- - 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/