Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758787AbXENWPI (ORCPT ); Mon, 14 May 2007 18:15:08 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755155AbXENWO5 (ORCPT ); Mon, 14 May 2007 18:14:57 -0400 Received: from nz-out-0506.google.com ([64.233.162.226]:26387 "EHLO nz-out-0506.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754096AbXENWO4 (ORCPT ); Mon, 14 May 2007 18:14:56 -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=oq2Ek4ClcfrNVLheYkBYwKBxK4bA6vej/f3PU6TsndI5NM1AiuCr4XkZy8CA2LlC2qqg8qRp8ksGc8JwSclKAOIF5zqdVTXGERPc254c3VEI9nt9prF1kp1zdor5CLBORWfDiIZxapDfkKAor4T0C9/xx0/G7/IDv2QJsl7j8Ds= Message-ID: <92a12cdb0705141514v4c928041i6030267fd322e87@mail.gmail.com> Date: Mon, 14 May 2007 23:14:55 +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_207763_15288336.1179180895532" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 33670 Lines: 455 ------=_Part_207763_15288336.1179180895532 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline (This is a cleaned-up version following comments - please commit) 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_207763_15288336.1179180895532 Content-Type: text/x-patch; name=aica.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f1phtxkj 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 LTIuNi4yMS9zb3VuZC9zaC9haWNhLmMJMjAwNy0wNS0xNCAyMzoxMTozNS4wMDAwMDAwMDAgKzAx MDAKQEAgLTAsMCArMSw2NzIgQEAKKy8qCisqIFRoaXMgY29kZSBpcyBsaWNlbmNlZCB1bmRlciAK 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 dCAtIHdhaXQgZm9yIEcyLVNIIEZJRk8gdG8gY2xlYXIgKi8KK3N0YXRpYyB2b2lkIHNwdV93cml0 ZV93YWl0KHZvaWQpCit7CisJaW50IHRpbWVfY291bnQ7CisJdGltZV9jb3VudCA9IDA7CisJd2hp bGUgKDEpIHsKKwkJaWYgKCEocmVhZGwoRzJfRklGTykgJiAweDExKSkKKwkJCWJyZWFrOworCQkv KiBUbyBlbnN1cmUgaGFyZHdhcmUgZmFpbHVyZSBkb2Vzbid0IHdlZGdlIGtlcm5lbCAqLworCQl0 aW1lX2NvdW50Kys7CisJCWlmICh0aW1lX2NvdW50ID4gMHgxMDAwMCkKKwkJCWJyZWFrOworCX0K K30KKworLyogc3B1X21lbXNldCAtIHdyaXRlIHRvIG1lbW9yeSBpbiBTUFUgYWRkcmVzcyBzcGFj ZSAqLworc3RhdGljIHZvaWQgc3B1X21lbXNldCh1MzIgdG9pLCB1MzIgd2hhdCwgaW50IGxlbmd0 aCkKK3sKKwlpbnQgaTsKKwlzbmRfYXNzZXJ0KGxlbmd0aCAlIDQgPT0gMCwgcmV0dXJuKTsKKwlz cHVfd3JpdGVfd2FpdCgpOworCWZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworCQl3cml0 ZWwod2hhdCwgdG9pICsgU1BVX01FTU9SWV9CQVNFKTsKKwkJdG9pKys7CisJCWlmIChpICYmICEo aSAlIDgpKQorCQkJc3B1X3dyaXRlX3dhaXQoKTsKKwl9Cit9CisKKy8qIHNwdV9tZW1sb2FkIC0g d3JpdGUgdG8gU1BVIGFkZHJlc3Mgc3BhY2UgKi8KK3N0YXRpYyB2b2lkIHNwdV9tZW1sb2FkKHUz MiB0b2ksIHZvaWQgX19pb21lbSAqIGZyb20sIGludCBsZW5ndGgpCit7CisJdTMyIF9faW9tZW0g KmZyb21sID0gZnJvbTsKKwl1MzIgX19pb21lbSAqdG8gPSAodTMyIF9faW9tZW0gKikgKFNQVV9N RU1PUllfQkFTRSArIHRvaSk7CisJaW50IGksIHZhbDsKKwlsZW5ndGggPSBESVZfUk9VTkRfVVAo bGVuZ3RoLCA0KTsKKwlzcHVfd3JpdGVfd2FpdCgpOworCWZvciAoaSA9IDA7IGkgPCBsZW5ndGg7 IGkrKykgeworCQl2YWwgPSAqZnJvbWw7CisJCXdyaXRlbCh2YWwsIHRvKTsKKwkJZnJvbWwrKzsK KwkJdG8rKzsKKwkJaWYgKGkgJiYgIShpICUgOCkpCisJCQlzcHVfd3JpdGVfd2FpdCgpOworCX0K K30KKworLyogc3B1X2Rpc2FibGUgLSBzZXQgc3B1IHJlZ2lzdGVycyB0byBzdG9wIHNvdW5kIG91 dHB1dCAqLworc3RhdGljIHZvaWQgc3B1X2Rpc2FibGUodm9pZCkKK3sKKwlpbnQgaTsKKwl1MzIg cmVndmFsOworCXNwdV93cml0ZV93YWl0KCk7CisJcmVndmFsID0gcmVhZGwoQVJNX1JFU0VUX1JF R0lTVEVSKTsKKwlyZWd2YWwgfD0gMTsKKwlzcHVfd3JpdGVfd2FpdCgpOworCXdyaXRlbChyZWd2 YWwsIEFSTV9SRVNFVF9SRUdJU1RFUik7CisJZm9yIChpID0gMDsgaSA8IDY0OyBpKyspIHsKKwkJ c3B1X3dyaXRlX3dhaXQoKTsKKwkJcmVndmFsID0gcmVhZGwoU1BVX1JFR0lTVEVSX0JBU0UgKyAo aSAqIDB4ODApKTsKKwkJcmVndmFsID0gKHJlZ3ZhbCAmIH4weDQwMDApIHwgMHg4MDAwOworCQlz cHVfd3JpdGVfd2FpdCgpOworCQl3cml0ZWwocmVndmFsLCBTUFVfUkVHSVNURVJfQkFTRSArIChp ICogMHg4MCkpOworCX0KK30KKworLyogc3B1X2VuYWJsZSAtIHNldCBzcHUgcmVnaXN0ZXJzIHRv IGVuYWJsZSBzb3VuZCBvdXRwdXQgKi8KK3N0YXRpYyB2b2lkIHNwdV9lbmFibGUodm9pZCkKK3sK Kwl1MzIgcmVndmFsID0gcmVhZGwoQVJNX1JFU0VUX1JFR0lTVEVSKTsKKwlyZWd2YWwgJj0gfjE7 CisJc3B1X3dyaXRlX3dhaXQoKTsKKwl3cml0ZWwocmVndmFsLCBBUk1fUkVTRVRfUkVHSVNURVIp OworfQorCisvKiAKKyAqIEhhbHQgdGhlIHNvdW5kIHByb2Nlc3NvciwgY2xlYXIgdGhlIG1lbW9y eSwKKyAqIGxvYWQgc29tZSBkZWZhdWx0IEFSTTcgY29kZSwgYW5kIHRoZW4gcmVzdGFydCBBUk03 CisqLworc3RhdGljIHZvaWQgc3B1X3Jlc2V0KHZvaWQpCit7CisJc3B1X2Rpc2FibGUoKTsKKwlz cHVfbWVtc2V0KDAsIDAsIDB4MjAwMDAwIC8gNCk7CisJLyogUHV0IEFSTTcgaW4gZW5kbGVzcyBs b29wICovCisJY3RybF9vdXRsKDB4ZWEwMDAwMDIsIFNQVV9NRU1PUllfQkFTRSk7CisJc3B1X2Vu YWJsZSgpOworfQorCisvKiBhaWNhX2Nobl9zdGFydCAtIHdyaXRlIHRvIHNwdSB0byBzdGFydCBw bGF5YmFjayAqLworc3RhdGljIHZvaWQgYWljYV9jaG5fc3RhcnQodm9pZCkKK3sKKwlzcHVfd3Jp dGVfd2FpdCgpOworCXdyaXRlbChBSUNBX0NNRF9LSUNLIHwgQUlDQV9DTURfU1RBUlQsICh1MzIg KikgQUlDQV9DT05UUk9MX1BPSU5UKTsKK30KKworLyogYWljYV9jaG5faGFsdCAtIHdyaXRlIHRv IHNwdSB0byBoYWx0IHBsYXliYWNrICovCitzdGF0aWMgdm9pZCBhaWNhX2Nobl9oYWx0KHZvaWQp Cit7CisJc3B1X3dyaXRlX3dhaXQoKTsKKwl3cml0ZWwoQUlDQV9DTURfS0lDSyB8IEFJQ0FfQ01E X1NUT1AsICh1MzIgKikgQUlDQV9DT05UUk9MX1BPSU5UKTsKK30KKworLyogQUxTQSBjb2RlIGJl bG93ICovCitzdGF0aWMgc3RydWN0IHNuZF9wY21faGFyZHdhcmUgc25kX3BjbV9haWNhX3BsYXli YWNrX2h3ID0geworCS5pbmZvID0gKFNORFJWX1BDTV9JTkZPX05PTklOVEVSTEVBVkVEKSwKKwku Zm9ybWF0cyA9CisJICAgIChTTkRSVl9QQ01fRk1UQklUX1M4IHwgU05EUlZfUENNX0ZNVEJJVF9T MTZfTEUgfAorCSAgICAgU05EUlZfUENNX0ZNVEJJVF9JTUFfQURQQ00pLAorCS5yYXRlcyA9IFNO RFJWX1BDTV9SQVRFXzgwMDBfNDgwMDAsCisJLnJhdGVfbWluID0gODAwMCwKKwkucmF0ZV9tYXgg PSA0ODAwMCwKKwkuY2hhbm5lbHNfbWluID0gMSwKKwkuY2hhbm5lbHNfbWF4ID0gMiwKKwkuYnVm ZmVyX2J5dGVzX21heCA9IEFJQ0FfQlVGRkVSX1NJWkUsCisJLnBlcmlvZF9ieXRlc19taW4gPSBB SUNBX1BFUklPRF9TSVpFLAorCS5wZXJpb2RfYnl0ZXNfbWF4ID0gQUlDQV9QRVJJT0RfU0laRSwK KwkucGVyaW9kc19taW4gPSBBSUNBX1BFUklPRF9OVU1CRVIsCisJLnBlcmlvZHNfbWF4ID0gQUlD QV9QRVJJT0RfTlVNQkVSLAorfTsKKworc3RhdGljIGludCBhaWNhX2RtYV90cmFuc2ZlcihpbnQg Y2hhbm5lbHMsIGludCBidWZmZXJfc2l6ZSwKKwkJCSAgICAgc3RydWN0IHNuZF9wY21fc3Vic3Ry ZWFtICpzdWJzdHJlYW0pCit7CisJaW50IHEsIGVyciwgcGVyaW9kX29mZnNldDsKKwlzdHJ1Y3Qg c25kX2NhcmRfYWljYSAqZHJlYW1jYXN0Y2FyZDsKKwlzdHJ1Y3Qgc25kX3BjbV9ydW50aW1lICpy dW50aW1lOworCWVyciA9IDA7CisJZHJlYW1jYXN0Y2FyZCA9IHN1YnN0cmVhbS0+cGNtLT5wcml2 YXRlX2RhdGE7CisJcGVyaW9kX29mZnNldCA9IGRyZWFtY2FzdGNhcmQtPmNsaWNrczsKKwlwZXJp b2Rfb2Zmc2V0ICU9IChBSUNBX1BFUklPRF9OVU1CRVIgLyBjaGFubmVscyk7CisJcnVudGltZSA9 IHN1YnN0cmVhbS0+cnVudGltZTsKKwlmb3IgKHEgPSAwOyBxIDwgY2hhbm5lbHM7IHErKykgewor CQllcnIgPSBkbWFfeGZlcihBSUNBX0RNQV9DSEFOTkVMLAorCQkJICAgICAgICh1bnNpZ25lZCBs b25nKShydW50aW1lLT5kbWFfYXJlYSArCisJCQkJCSAgICAgICAoQUlDQV9CVUZGRVJfU0laRSAq IHEpIC8KKwkJCQkJICAgICAgIGNoYW5uZWxzICsKKwkJCQkJICAgICAgIEFJQ0FfUEVSSU9EX1NJ WkUgKgorCQkJCQkgICAgICAgcGVyaW9kX29mZnNldCksCisJCQkgICAgICAgQUlDQV9DSEFOTkVM MF9PRkZTRVQgKyBxICogQ0hBTk5FTF9PRkZTRVQgKworCQkJICAgICAgIEFJQ0FfUEVSSU9EX1NJ WkUgKiBwZXJpb2Rfb2Zmc2V0LAorCQkJICAgICAgIGJ1ZmZlcl9zaXplIC8gY2hhbm5lbHMsIEFJ Q0FfRE1BX01PREUpOworCQlpZiAodW5saWtlbHkoZXJyIDwgMCkpCisJCQlicmVhazsKKwkJZG1h X3dhaXRfZm9yX2NvbXBsZXRpb24oQUlDQV9ETUFfQ0hBTk5FTCk7CisJfQorCXJldHVybiBlcnI7 Cit9CisKK3N0YXRpYyB2b2lkIHN0YXJ0dXBfYWljYShzdHJ1Y3Qgc25kX2NhcmRfYWljYSAqZHJl YW1jYXN0Y2FyZCkKK3sKKwlzcHVfbWVtbG9hZChBSUNBX0NIQU5ORUwwX0NPTlRST0xfT0ZGU0VU LAorCQkgICAgKHU4ICopIGRyZWFtY2FzdGNhcmQtPmNoYW5uZWwsCisJCSAgICBzaXplb2Yoc3Ry dWN0IGFpY2FfY2hhbm5lbCkpOworCWFpY2FfY2huX3N0YXJ0KCk7Cit9CisKK3N0YXRpYyB2b2lk IHJ1bl9zcHVfZG1hKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3sKKwlpbnQgYnVmZmVyX3Np emU7CisJc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW07CisJc3RydWN0IHNuZF9w Y21fcnVudGltZSAqcnVudGltZTsKKwlzdHJ1Y3Qgc25kX2NhcmRfYWljYSAqZHJlYW1jYXN0Y2Fy ZDsKKwlzdHJ1Y3Qgc3B1X3dvcmtfaG9sZGVyICpob2xkZXIgPSBjb250YWluZXJfb2Yod29yaywg c3RydWN0IHNwdV93b3JrX2hvbGRlciwgc3B1X2RtYV93b3JrKTsKKwlzdWJzdHJlYW0gPSBob2xk ZXItPiBzc3BvaW50ZXI7CisJZHJlYW1jYXN0Y2FyZCA9IHN1YnN0cmVhbS0+cGNtLT5wcml2YXRl X2RhdGE7CisJcnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKKwlpZiAodW5saWtlbHkoZHJl YW1jYXN0Y2FyZC0+ZG1hX2NoZWNrID09IDApKSB7CisJCWJ1ZmZlcl9zaXplID0gZnJhbWVzX3Rv X2J5dGVzKHJ1bnRpbWUsIHJ1bnRpbWUtPmJ1ZmZlcl9zaXplKTsKKwkJaWYgKHJ1bnRpbWUtPmNo YW5uZWxzID4gMSkKKwkJCWRyZWFtY2FzdGNhcmQtPmNoYW5uZWwtPmZsYWdzIHw9IDB4MDE7CisJ CWFpY2FfZG1hX3RyYW5zZmVyKHJ1bnRpbWUtPmNoYW5uZWxzLCBidWZmZXJfc2l6ZSwgc3Vic3Ry ZWFtKTsKKwkJc3RhcnR1cF9haWNhKGRyZWFtY2FzdGNhcmQpOworCQlkcmVhbWNhc3RjYXJkLT5j bGlja3MgPQorCQkgICAgYnVmZmVyX3NpemUgLyAoQUlDQV9QRVJJT0RfU0laRSAqIHJ1bnRpbWUt PmNoYW5uZWxzKTsKKwkJcmV0dXJuOworCX0gZWxzZSB7CisJCWFpY2FfZG1hX3RyYW5zZmVyKHJ1 bnRpbWUtPmNoYW5uZWxzLAorCQkJCSAgQUlDQV9QRVJJT0RfU0laRSAqIHJ1bnRpbWUtPmNoYW5u ZWxzLAorCQkJCSAgc3Vic3RyZWFtKTsKKwkJc25kX3BjbV9wZXJpb2RfZWxhcHNlZChkcmVhbWNh c3RjYXJkLT5zdWJzdHJlYW0pOworCQlkcmVhbWNhc3RjYXJkLT5jbGlja3MrKzsKKwkJaWYgKHVu bGlrZWx5KGRyZWFtY2FzdGNhcmQtPmNsaWNrcyA+PSBBSUNBX1BFUklPRF9OVU1CRVIpKQorCQl7 CisJCQlkcmVhbWNhc3RjYXJkLT5jbGlja3MgJT0gQUlDQV9QRVJJT0RfTlVNQkVSOworCQl9CisJ CW1vZF90aW1lcigmZHJlYW1jYXN0Y2FyZC0+dGltZXIsIGppZmZpZXMgKyAxKTsKKwl9Cit9CisK K3N0YXRpYyB2b2lkIGFpY2FfcGVyaW9kX2VsYXBzZWQodW5zaWduZWQgbG9uZyB0aW1lcl92YXIp Cit7CisJLyp0aW1lciBmdW5jdGlvbiAtIHNvIGNhbm5vdCBzbGVlcCAqLworCWludCBwbGF5X3Bl cmlvZDsKKwlzdHJ1Y3Qgc25kX3BjbV9ydW50aW1lICpydW50aW1lOworCXN0cnVjdCBzbmRfcGNt X3N1YnN0cmVhbSAqc3Vic3RyZWFtOworCXN0cnVjdCBzbmRfY2FyZF9haWNhICpkcmVhbWNhc3Rj YXJkOworCXN1YnN0cmVhbSA9IChzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKil0aW1lcl92YXI7 CisJcnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKKwlkcmVhbWNhc3RjYXJkID0gc3Vic3Ry ZWFtLT5wY20tPnByaXZhdGVfZGF0YTsKKwkvKiBIYXZlIHdlIHBsYXllZCBvdXQgYW4gYWRkaXRp b25hbCBwZXJpb2Q/ICovCisJcGxheV9wZXJpb2QgPQorCSAgICBmcmFtZXNfdG9fYnl0ZXMocnVu dGltZSwKKwkJCSAgICByZWFkbAorCQkJICAgIChBSUNBX0NPTlRST0xfQ0hBTk5FTF9TQU1QTEVf TlVNQkVSKSkgLworCSAgICBBSUNBX1BFUklPRF9TSVpFOworCWlmIChwbGF5X3BlcmlvZCA9PSBk cmVhbWNhc3RjYXJkLT5jdXJyZW50X3BlcmlvZCkgeworCQkvKiByZXNjaGVkdWxlIHRoZSB0aW1l ciAqLworCQltb2RfdGltZXIoJihkcmVhbWNhc3RjYXJkLT50aW1lciksIGppZmZpZXMgKyAxKTsK KwkJcmV0dXJuOworCX0KKwlpZiAocnVudGltZS0+Y2hhbm5lbHMgPiAxKQorCQlkcmVhbWNhc3Rj YXJkLT5jdXJyZW50X3BlcmlvZCA9IHBsYXlfcGVyaW9kOworCWlmICh1bmxpa2VseShkcmVhbWNh c3RjYXJkLT5kbWFfY2hlY2sgPT0gMCkpCisJCWRyZWFtY2FzdGNhcmQtPmRtYV9jaGVjayA9IDE7 CisJCXF1ZXVlX3dvcmsoYWljYV9xdWV1ZSwgJihzcHVfd29ya2luZy5zcHVfZG1hX3dvcmspKTsK K30KKworc3RhdGljIHZvaWQgc3B1X2JlZ2luX2RtYShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0g KnN1YnN0cmVhbSkKK3sKKwkvKiBNdXN0IGJlIGF0b21pYyAqLworCXN0cnVjdCBzbmRfY2FyZF9h aWNhICpkcmVhbWNhc3RjYXJkOworCXN0cnVjdCBzbmRfcGNtX3J1bnRpbWUgKnJ1bnRpbWU7CisJ cnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKKwlkcmVhbWNhc3RjYXJkID0gc3Vic3RyZWFt LT5wY20tPnByaXZhdGVfZGF0YTsKKwkvKiAgVXNlIHF1ZXVlIHRvIGRvIHRoZSBoZWF2eSBsaWZ0 aW5nICovCisJc3B1X3dvcmtpbmcuc3Nwb2ludGVyID0gc3Vic3RyZWFtOworCUlOSVRfV09SSygm KHNwdV93b3JraW5nLnNwdV9kbWFfd29yayksIHJ1bl9zcHVfZG1hKTsKKwlxdWV1ZV93b3JrKGFp Y2FfcXVldWUsICYoc3B1X3dvcmtpbmcuc3B1X2RtYV93b3JrKSk7CisJLyogVGltZXIgbWF5IGFs cmVhZHkgYmUgcnVubmluZyAqLworCWlmICh1bmxpa2VseShkcmVhbWNhc3RjYXJkLT50aW1lci5k YXRhKSkgeworCQltb2RfdGltZXIoJmRyZWFtY2FzdGNhcmQtPnRpbWVyLCBqaWZmaWVzICsgNCk7 CisJCXJldHVybjsKKwl9CisJaW5pdF90aW1lcigmKGRyZWFtY2FzdGNhcmQtPnRpbWVyKSk7CisJ ZHJlYW1jYXN0Y2FyZC0+dGltZXIuZGF0YSA9ICh1bnNpZ25lZCBsb25nKXN1YnN0cmVhbTsKKwlk cmVhbWNhc3RjYXJkLT50aW1lci5mdW5jdGlvbiA9IGFpY2FfcGVyaW9kX2VsYXBzZWQ7CisJZHJl YW1jYXN0Y2FyZC0+dGltZXIuZXhwaXJlcyA9IGppZmZpZXMgKyA0OworCWFkZF90aW1lcigmKGRy ZWFtY2FzdGNhcmQtPnRpbWVyKSk7Cit9CisKK3N0YXRpYyBpbnQgc25kX2FpY2FwY21fcGNtX29w ZW4oc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtCisJCQkJKnN1YnN0cmVhbSkKK3sKKwlzdHJ1Y3Qg c25kX3BjbV9ydW50aW1lICpydW50aW1lOworCXN0cnVjdCBhaWNhX2NoYW5uZWwgKmNoYW5uZWw7 CisJc3RydWN0IHNuZF9jYXJkX2FpY2EgKmRyZWFtY2FzdGNhcmQ7CisJaWYgKCFlbmFibGUpCisJ CXJldHVybiAtRU5PRU5UOworCWRyZWFtY2FzdGNhcmQgPSBzdWJzdHJlYW0tPnBjbS0+cHJpdmF0 ZV9kYXRhOworCWNoYW5uZWwgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgYWljYV9jaGFubmVsKSwg R0ZQX0tFUk5FTCk7CisJaWYgKCFjaGFubmVsKQorCQlyZXR1cm4gLUVOT01FTTsKKwkvKiBzZXQg ZGVmYXVsdHMgZm9yIGNoYW5uZWwgKi8KKwljaGFubmVsLT5zZm10ID0gU01fOEJJVDsKKwljaGFu bmVsLT5jbWQgPSBBSUNBX0NNRF9TVEFSVDsKKwljaGFubmVsLT52b2wgPSBkcmVhbWNhc3RjYXJk LT5tYXN0ZXJfdm9sdW1lOworCWNoYW5uZWwtPnBhbiA9IDB4ODA7CisJY2hhbm5lbC0+cG9zID0g MDsKKwljaGFubmVsLT5mbGFncyA9IDA7CS8qIGRlZmF1bHQgdG8gbW9ubyAqLworCWRyZWFtY2Fz dGNhcmQtPmNoYW5uZWwgPSBjaGFubmVsOworCXJ1bnRpbWUgPSBzdWJzdHJlYW0tPnJ1bnRpbWU7 CisJcnVudGltZS0+aHcgPSBzbmRfcGNtX2FpY2FfcGxheWJhY2tfaHc7CisJc3B1X2VuYWJsZSgp OworCWRyZWFtY2FzdGNhcmQtPmNsaWNrcyA9IDA7CisJZHJlYW1jYXN0Y2FyZC0+Y3VycmVudF9w ZXJpb2QgPSAwOworCWRyZWFtY2FzdGNhcmQtPmRtYV9jaGVjayA9IDA7CisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgc25kX2FpY2FwY21fcGNtX2Nsb3NlKHN0cnVjdCBzbmRfcGNtX3N1YnN0 cmVhbQorCQkJCSAqc3Vic3RyZWFtKQoreworCXN0cnVjdCBzbmRfY2FyZF9haWNhICpkcmVhbWNh c3RjYXJkID0gc3Vic3RyZWFtLT5wY20tPnByaXZhdGVfZGF0YTsKKwlkZWxfdGltZXIoJmRyZWFt Y2FzdGNhcmQtPnRpbWVyKTsKKwlrZnJlZShkcmVhbWNhc3RjYXJkLT5jaGFubmVsKTsKKwlzcHVf ZGlzYWJsZSgpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNuZF9haWNhcGNtX3BjbV9o d19mcmVlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbQorCQkJCSAgICpzdWJzdHJlYW0pCit7CisJ LyogRnJlZSB0aGUgRE1BIGJ1ZmZlciAqLworCXJldHVybiBzbmRfcGNtX2xpYl9mcmVlX3BhZ2Vz KHN1YnN0cmVhbSk7Cit9CisKK3N0YXRpYyBpbnQgc25kX2FpY2FwY21fcGNtX2h3X3BhcmFtcyhz dHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0KKwkJCQkgICAgICpzdWJzdHJlYW0sIHN0cnVjdCBzbmRf cGNtX2h3X3BhcmFtcworCQkJCSAgICAgKmh3X3BhcmFtcykKK3sKKwkvKiBBbGxvY2F0ZSBhIERN QSBidWZmZXIgdXNpbmcgQUxTQSBidWlsdC1pbnMgKi8KKwlyZXR1cm4KKwkgICAgc25kX3BjbV9s aWJfbWFsbG9jX3BhZ2VzKHN1YnN0cmVhbSwgcGFyYW1zX2J1ZmZlcl9ieXRlcyhod19wYXJhbXMp KTsKK30KKworc3RhdGljIGludCBzbmRfYWljYXBjbV9wY21fcHJlcGFyZShzdHJ1Y3Qgc25kX3Bj bV9zdWJzdHJlYW0KKwkJCQkgICAqc3Vic3RyZWFtKQoreworCXN0cnVjdCBzbmRfY2FyZF9haWNh ICpkcmVhbWNhc3RjYXJkID0gc3Vic3RyZWFtLT5wY20tPnByaXZhdGVfZGF0YTsKKwlpZiAoKHN1 YnN0cmVhbS0+cnVudGltZSktPmZvcm1hdCA9PSBTTkRSVl9QQ01fRk9STUFUX1MxNl9MRSkKKwkJ ZHJlYW1jYXN0Y2FyZC0+Y2hhbm5lbC0+c2ZtdCA9IFNNXzE2QklUOworCWRyZWFtY2FzdGNhcmQt PmNoYW5uZWwtPmZyZXEgPSBzdWJzdHJlYW0tPnJ1bnRpbWUtPnJhdGU7CisJZHJlYW1jYXN0Y2Fy ZC0+c3Vic3RyZWFtID0gc3Vic3RyZWFtOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNu ZF9haWNhcGNtX3BjbV90cmlnZ2VyKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbQorCQkJCSAgICpz dWJzdHJlYW0sIGludCBjbWQpCit7CisJc3RydWN0IHNuZF9jYXJkX2FpY2EgKmRyZWFtY2FzdGNh cmQ7CisJc3dpdGNoIChjbWQpIHsKKwljYXNlIFNORFJWX1BDTV9UUklHR0VSX1NUQVJUOgorCQlz cHVfYmVnaW5fZG1hKHN1YnN0cmVhbSk7CisJCWJyZWFrOworCWNhc2UgU05EUlZfUENNX1RSSUdH RVJfU1RPUDoKKwkJZHJlYW1jYXN0Y2FyZCA9IHN1YnN0cmVhbS0+cGNtLT5wcml2YXRlX2RhdGE7 CisJCWlmIChkcmVhbWNhc3RjYXJkLT50aW1lci5kYXRhKQorCQkJZGVsX3RpbWVyKCZkcmVhbWNh c3RjYXJkLT50aW1lcik7CisJCWFpY2FfY2huX2hhbHQoKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoK KwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgdW5zaWduZWQg bG9uZyBzbmRfYWljYXBjbV9wY21fcG9pbnRlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0KKwkJ CQkJICAgICAqc3Vic3RyZWFtKQoreworCXJldHVybiByZWFkbChBSUNBX0NPTlRST0xfQ0hBTk5F TF9TQU1QTEVfTlVNQkVSKTsKK30KKworc3RhdGljIHN0cnVjdCBzbmRfcGNtX29wcyBzbmRfYWlj YXBjbV9wbGF5YmFja19vcHMgPSB7CisJLm9wZW4gPSBzbmRfYWljYXBjbV9wY21fb3BlbiwKKwku Y2xvc2UgPSBzbmRfYWljYXBjbV9wY21fY2xvc2UsCisJLmlvY3RsID0gc25kX3BjbV9saWJfaW9j dGwsCisJLmh3X3BhcmFtcyA9IHNuZF9haWNhcGNtX3BjbV9od19wYXJhbXMsCisJLmh3X2ZyZWUg PSBzbmRfYWljYXBjbV9wY21faHdfZnJlZSwKKwkucHJlcGFyZSA9IHNuZF9haWNhcGNtX3BjbV9w cmVwYXJlLAorCS50cmlnZ2VyID0gc25kX2FpY2FwY21fcGNtX3RyaWdnZXIsCisJLnBvaW50ZXIg PSBzbmRfYWljYXBjbV9wY21fcG9pbnRlciwKK307CisKKy8qIFRPIERPOiBzZXQgdXAgdG8gaGFu ZGxlIG1vcmUgdGhhbiBvbmUgcGNtIGluc3RhbmNlICovCitzdGF0aWMgaW50IF9faW5pdCBzbmRf YWljYXBjbWNoaXAoc3RydWN0IHNuZF9jYXJkX2FpY2EKKwkJCQkgICpkcmVhbWNhc3RjYXJkLCBp bnQgcGNtX2luZGV4KQoreworCXN0cnVjdCBzbmRfcGNtICpwY207CisJaW50IGVycjsKKwkvKiBB SUNBIGhhcyBubyBjYXB0dXJlIGFiaWxpdHkgKi8KKwllcnIgPQorCSAgICBzbmRfcGNtX25ldyhk cmVhbWNhc3RjYXJkLT5jYXJkLCAiQUlDQSBQQ00iLCBwY21faW5kZXgsIDEsIDAsICZwY20pOwor CWlmICh1bmxpa2VseShlcnIgPCAwKSkKKwkJcmV0dXJuIGVycjsKKwlwY20tPnByaXZhdGVfZGF0 YSA9IGRyZWFtY2FzdGNhcmQ7CisJc3RyY3B5KHBjbS0+bmFtZSwgIkFJQ0EgUENNIik7CisJc25k X3BjbV9zZXRfb3BzKHBjbSwgU05EUlZfUENNX1NUUkVBTV9QTEFZQkFDSywKKwkJCSZzbmRfYWlj YXBjbV9wbGF5YmFja19vcHMpOworCS8qIEFsbG9jYXRlIHRoZSBETUEgYnVmZmVycyAqLworCWVy ciA9CisJICAgIHNuZF9wY21fbGliX3ByZWFsbG9jYXRlX3BhZ2VzX2Zvcl9hbGwocGNtLAorCQkJ CQkJICBTTkRSVl9ETUFfVFlQRV9DT05USU5VT1VTLAorCQkJCQkJICBzbmRfZG1hX2NvbnRpbnVv dXNfZGF0YQorCQkJCQkJICAoR0ZQX0tFUk5FTCksCisJCQkJCQkgIEFJQ0FfQlVGRkVSX1NJWkUs CisJCQkJCQkgIEFJQ0FfQlVGRkVSX1NJWkUpOworCXJldHVybiBlcnI7Cit9CisKKy8qIE1peGVy IGNvbnRyb2xzICovCitzdGF0aWMgaW50IGFpY2FfcGNtc3dpdGNoX2luZm8oc3RydWN0IHNuZF9r Y29udHJvbCAqa2NvbnRyb2wsCisJCQkgICAgICAgc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvICp1 aW5mbykKK3sKKwl1aW5mby0+dHlwZSA9IFNORFJWX0NUTF9FTEVNX1RZUEVfQk9PTEVBTjsKKwl1 aW5mby0+Y291bnQgPSAxOworCXVpbmZvLT52YWx1ZS5pbnRlZ2VyLm1pbiA9IDA7CisJdWluZm8t PnZhbHVlLmludGVnZXIubWF4ID0gMTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhaWNh X3BjbXN3aXRjaF9nZXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJCQkgICAgICBz dHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKK3sKKwl1Y29udHJvbC0+dmFsdWUu aW50ZWdlci52YWx1ZVswXSA9IDE7CS8qIFRPIERPOiBGaXggbWUgKi8KKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBhaWNhX3BjbXN3aXRjaF9wdXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2Nv bnRyb2wsCisJCQkgICAgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKK3sK KwlpZiAodWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0gPT0gMSkKKwkJcmV0dXJuIDA7 CS8qIFRPIERPOiBGaXggbWUgKi8KKwllbHNlCisJCWFpY2FfY2huX2hhbHQoKTsKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludCBhaWNhX3BjbXZvbHVtZV9pbmZvKHN0cnVjdCBzbmRfa2NvbnRy b2wgKmtjb250cm9sLAorCQkJICAgICAgIHN0cnVjdCBzbmRfY3RsX2VsZW1faW5mbyAqdWluZm8p Cit7CisJdWluZm8tPnR5cGUgPSBTTkRSVl9DVExfRUxFTV9UWVBFX0lOVEVHRVI7CisJdWluZm8t PmNvdW50ID0gMTsKKwl1aW5mby0+dmFsdWUuaW50ZWdlci5taW4gPSAwOworCXVpbmZvLT52YWx1 ZS5pbnRlZ2VyLm1heCA9IDB4RkY7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYWljYV9w Y212b2x1bWVfZ2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCQkJICAgICAgc3Ry dWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCit7CisJc3RydWN0IHNuZF9jYXJkX2Fp Y2EgKmRyZWFtY2FzdGNhcmQ7CisJZHJlYW1jYXN0Y2FyZCA9IGtjb250cm9sLT5wcml2YXRlX2Rh dGE7CisJaWYgKHVubGlrZWx5KCFkcmVhbWNhc3RjYXJkLT5jaGFubmVsKSkKKwkJcmV0dXJuIC1F VFhUQlNZOwkvKiB3ZSd2ZSBub3QgeWV0IGJlZW4gc2V0IHVwICovCisJdWNvbnRyb2wtPnZhbHVl LmludGVnZXIudmFsdWVbMF0gPSBkcmVhbWNhc3RjYXJkLT5jaGFubmVsLT52b2w7CisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgYWljYV9wY212b2x1bWVfcHV0KHN0cnVjdCBzbmRfa2NvbnRy b2wgKmtjb250cm9sLAorCQkJICAgICAgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRy b2wpCit7CisJc3RydWN0IHNuZF9jYXJkX2FpY2EgKmRyZWFtY2FzdGNhcmQ7CisJZHJlYW1jYXN0 Y2FyZCA9IGtjb250cm9sLT5wcml2YXRlX2RhdGE7CisJaWYgKHVubGlrZWx5KCFkcmVhbWNhc3Rj YXJkLT5jaGFubmVsKSkKKwkJcmV0dXJuIC1FVFhUQlNZOworCWlmICh1bmxpa2VseShkcmVhbWNh c3RjYXJkLT5jaGFubmVsLT52b2wgPT0KKwkJICAgICB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52 YWx1ZVswXSkpCisJCXJldHVybiAwOworCWRyZWFtY2FzdGNhcmQtPmNoYW5uZWwtPnZvbCA9IHVj b250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdOworCWRyZWFtY2FzdGNhcmQtPm1hc3Rlcl92 b2x1bWUgPSB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXTsKKwlzcHVfbWVtbG9hZChB SUNBX0NIQU5ORUwwX0NPTlRST0xfT0ZGU0VULAorCQkgICAgKHU4ICopIGRyZWFtY2FzdGNhcmQt PmNoYW5uZWwsCisJCSAgICBzaXplb2Yoc3RydWN0IGFpY2FfY2hhbm5lbCkpOworCisJcmV0dXJu IDE7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBzbmRfYWljYV9wY21zd2l0 Y2hfY29udHJvbCBfX2RldmluaXRkYXRhID0geworCS5pZmFjZSA9IFNORFJWX0NUTF9FTEVNX0lG QUNFX01JWEVSLAorCS5uYW1lID0gIlBDTSBQbGF5YmFjayBTd2l0Y2giLAorCS5pbmRleCA9IDAs CisJLmluZm8gPSBhaWNhX3BjbXN3aXRjaF9pbmZvLAorCS5nZXQgPSBhaWNhX3BjbXN3aXRjaF9n ZXQsCisJLnB1dCA9IGFpY2FfcGNtc3dpdGNoX3B1dAorfTsKKworc3RhdGljIHN0cnVjdCBzbmRf a2NvbnRyb2xfbmV3IHNuZF9haWNhX3BjbXZvbHVtZV9jb250cm9sIF9fZGV2aW5pdGRhdGEgPSB7 CisJLmlmYWNlID0gU05EUlZfQ1RMX0VMRU1fSUZBQ0VfTUlYRVIsCisJLm5hbWUgPSAiUENNIFBs YXliYWNrIFZvbHVtZSIsCisJLmluZGV4ID0gMCwKKwkuaW5mbyA9IGFpY2FfcGNtdm9sdW1lX2lu Zm8sCisJLmdldCA9IGFpY2FfcGNtdm9sdW1lX2dldCwKKwkucHV0ID0gYWljYV9wY212b2x1bWVf cHV0Cit9OworCitzdGF0aWMgaW50IGxvYWRfYWljYV9maXJtd2FyZSh2b2lkKQoreworCWludCBl cnI7CisJY29uc3Qgc3RydWN0IGZpcm13YXJlICpmd19lbnRyeTsKKwlzcHVfcmVzZXQoKTsKKwll cnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZmd19lbnRyeSwgImFpY2FfZmlybXdhcmUuYmluIiwgJnBk LT5kZXYpOworCWlmICh1bmxpa2VseShlcnIpKQorCQlyZXR1cm4gZXJyOworCS8qIHdyaXRlIGZp cndhcmUgaW50byBtZW1vcnkgKi8KKwlzcHVfZGlzYWJsZSgpOworCXNwdV9tZW1sb2FkKDAsIGZ3 X2VudHJ5LT5kYXRhLCBmd19lbnRyeS0+c2l6ZSk7CisJc3B1X2VuYWJsZSgpOworCXJlbGVhc2Vf ZmlybXdhcmUoZndfZW50cnkpOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgX19kZXZp bml0IGFkZF9haWNhbWl4ZXJfY29udHJvbHMoc3RydWN0IHNuZF9jYXJkX2FpY2EKKwkJCQkJICAg ICpkcmVhbWNhc3RjYXJkKQoreworCWludCBlcnI7CisJZXJyID0gc25kX2N0bF9hZGQKKwkgICAg KGRyZWFtY2FzdGNhcmQtPmNhcmQsCisJICAgICBzbmRfY3RsX25ldzEoJnNuZF9haWNhX3BjbXZv bHVtZV9jb250cm9sLCBkcmVhbWNhc3RjYXJkKSk7CisJaWYgKHVubGlrZWx5KGVyciA8IDApKQor CQlyZXR1cm4gZXJyOworCWVyciA9IHNuZF9jdGxfYWRkCisJICAgIChkcmVhbWNhc3RjYXJkLT5j YXJkLAorCSAgICAgc25kX2N0bF9uZXcxKCZzbmRfYWljYV9wY21zd2l0Y2hfY29udHJvbCwgZHJl YW1jYXN0Y2FyZCkpOworCWlmICh1bmxpa2VseShlcnIgPCAwKSkKKwkJcmV0dXJuIGVycjsKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzbmRfYWljYV9yZW1vdmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqZGV2cHRyKQoreworCXN0cnVjdCBzbmRfY2FyZF9haWNhICpkcmVhbWNhc3RjYXJk OworCWRyZWFtY2FzdGNhcmQgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShkZXZwdHIpOworCWlmICh1 bmxpa2VseSghZHJlYW1jYXN0Y2FyZCkpCisJCXJldHVybiAtRU5PREVWOworCXNuZF9jYXJkX2Zy ZWUoZHJlYW1jYXN0Y2FyZC0+Y2FyZCk7CisJa2ZyZWUoZHJlYW1jYXN0Y2FyZCk7CisJcGxhdGZv cm1fc2V0X2RydmRhdGEoZGV2cHRyLCBOVUxMKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBfX2luaXQgc25kX2FpY2FfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2cHRyKQor eworCWludCBlcnI7CisJc3RydWN0IHNuZF9jYXJkX2FpY2EgKmRyZWFtY2FzdGNhcmQ7CisJZHJl YW1jYXN0Y2FyZCA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBzbmRfY2FyZF9haWNhKSwgR0ZQX0tF Uk5FTCk7CisJaWYgKHVubGlrZWx5KCFkcmVhbWNhc3RjYXJkKSkKKwkJcmV0dXJuIC1FTk9NRU07 CisJZHJlYW1jYXN0Y2FyZC0+Y2FyZCA9CisJICAgIHNuZF9jYXJkX25ldyhpbmRleCwgU05EX0FJ Q0FfRFJJVkVSLCBUSElTX01PRFVMRSwgMCk7CisJaWYgKHVubGlrZWx5KCFkcmVhbWNhc3RjYXJk LT5jYXJkKSkgeworCQlrZnJlZShkcmVhbWNhc3RjYXJkKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJ fQorCXN0cmNweShkcmVhbWNhc3RjYXJkLT5jYXJkLT5kcml2ZXIsICJzbmRfYWljYSIpOworCXN0 cmNweShkcmVhbWNhc3RjYXJkLT5jYXJkLT5zaG9ydG5hbWUsIFNORF9BSUNBX0RSSVZFUik7CisJ c3RyY3B5KGRyZWFtY2FzdGNhcmQtPmNhcmQtPmxvbmduYW1lLAorCSAgICAgICAiWWFtYWhhIEFJ Q0EgU3VwZXIgSW50ZWxsaWdlbnQgU291bmQgUHJvY2Vzc29yIGZvciBTRUdBIERyZWFtY2FzdCIp OworCS8qIExvYWQgdGhlIFBDTSAnY2hpcCcgKi8KKwllcnIgPSBzbmRfYWljYXBjbWNoaXAoZHJl YW1jYXN0Y2FyZCwgMCk7CisJaWYgKHVubGlrZWx5KGVyciA8IDApKQorCQlnb3RvIGZyZWVkcmVh bWNhc3Q7CisJc25kX2NhcmRfc2V0X2RldihkcmVhbWNhc3RjYXJkLT5jYXJkLCAmZGV2cHRyLT5k ZXYpOworCWRyZWFtY2FzdGNhcmQtPnRpbWVyLmRhdGEgPSAwOworCWRyZWFtY2FzdGNhcmQtPmNo YW5uZWwgPSBOVUxMOworCS8qIEFkZCBiYXNpYyBjb250cm9scyAqLworCWVyciA9IGFkZF9haWNh bWl4ZXJfY29udHJvbHMoZHJlYW1jYXN0Y2FyZCk7CisJaWYgKHVubGlrZWx5KGVyciA8IDApKQor CQlnb3RvIGZyZWVkcmVhbWNhc3Q7CisJLyogUmVnaXN0ZXIgdGhlIGNhcmQgd2l0aCBBTFNBIHN1 YnN5c3RlbSAqLworCWVyciA9IHNuZF9jYXJkX3JlZ2lzdGVyKGRyZWFtY2FzdGNhcmQtPmNhcmQp OworCWlmICh1bmxpa2VseShlcnIgPCAwKSkKKwkJZ290byBmcmVlZHJlYW1jYXN0OworCXBsYXRm b3JtX3NldF9kcnZkYXRhKGRldnB0ciwgZHJlYW1jYXN0Y2FyZCk7CisJYWljYV9xdWV1ZSA9IGNy ZWF0ZV93b3JrcXVldWUoQ0FSRF9OQU1FKTsKKwlpZiAodW5saWtlbHkoIWFpY2FfcXVldWUpKQor CQlnb3RvIGZyZWVkcmVhbWNhc3Q7CisJc25kX3ByaW50aworCSAgICAoIkFMU0EgRHJpdmVyIGZv ciBZYW1haGEgQUlDQSBTdXBlciBJbnRlbGxpZ2VudCBTb3VuZCBQcm9jZXNzb3JcbiIpOworCXJl dHVybiAwOworICAgICAgZnJlZWRyZWFtY2FzdDoKKwlzbmRfY2FyZF9mcmVlKGRyZWFtY2FzdGNh cmQtPmNhcmQpOworCWtmcmVlKGRyZWFtY2FzdGNhcmQpOworCXJldHVybiBlcnI7Cit9CisKK3N0 YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHNuZF9haWNhX2RyaXZlciA9IHsKKwkucHJvYmUg PSBzbmRfYWljYV9wcm9iZSwKKwkucmVtb3ZlID0gc25kX2FpY2FfcmVtb3ZlLAorCS5kcml2ZXIg PSB7CisJCSAgIC5uYW1lID0gU05EX0FJQ0FfRFJJVkVSfSwKK307CisKK3N0YXRpYyBpbnQgX19p bml0IGFpY2FfaW5pdCh2b2lkKQoreworCWludCBlcnI7CisJZXJyID0gcGxhdGZvcm1fZHJpdmVy X3JlZ2lzdGVyKCZzbmRfYWljYV9kcml2ZXIpOworCWlmICh1bmxpa2VseShlcnIgPCAwKSkKKwkJ cmV0dXJuIGVycjsKKwlwZCA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9zaW1wbGUoU05EX0FJ Q0FfRFJJVkVSLCAtMSwKKwkJCQkJICAgICBhaWNhX21lbW9yeV9zcGFjZSwgMik7CisJaWYgKHVu bGlrZWx5KElTX0VSUihwZCkpKSB7CisJCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZzbmRf YWljYV9kcml2ZXIpOworCQlyZXR1cm4gUFRSX0VSUihwZCk7CisJfQorCS8qIExvYWQgdGhlIGZp cm13YXJlICovCisJcmV0dXJuIGxvYWRfYWljYV9maXJtd2FyZSgpOworfQorCitzdGF0aWMgdm9p ZCBfX2V4aXQgYWljYV9leGl0KHZvaWQpCit7CisJLyogRGVzdHJveSB0aGUgYWljYSBrZXJuZWwg dGhyZWFkICovCisJZGVzdHJveV93b3JrcXVldWUoYWljYV9xdWV1ZSk7CisJcGxhdGZvcm1fZGV2 aWNlX3VucmVnaXN0ZXIocGQpOworCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZzbmRfYWlj YV9kcml2ZXIpOworCS8qIEtpbGwgYW55IHNvdW5kIHN0aWxsIHBsYXlpbmcgYW5kIHJlc2V0IEFS TTcgdG8gc2FmZSBzdGF0ZSAqLworCXNwdV9yZXNldCgpOworfQorCittb2R1bGVfaW5pdChhaWNh X2luaXQpOworbW9kdWxlX2V4aXQoYWljYV9leGl0KTsKZGlmZiAtTmF1ciAuL2xpbnV4LTIuNi4y MS1vcmlnL3NvdW5kL3NoL2FpY2EuaCAuL2xpbnV4LTIuNi4yMS9zb3VuZC9zaC9haWNhLmgKLS0t IC4vbGludXgtMi42LjIxLW9yaWcvc291bmQvc2gvYWljYS5oCTE5NzAtMDEtMDEgMDE6MDA6MDAu MDAwMDAwMDAwICswMTAwCisrKyAuL2xpbnV4LTIuNi4yMS9zb3VuZC9zaC9haWNhLmgJMjAwNy0w NS0wNyAyMTo0NzozMS4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSw4MCBAQAorLyogYWljYS5o CisgKiBIZWFkZXIgZmlsZSBmb3IgQUxTQSBkcml2ZXIgZm9yCisgKiBTZWdhIERyZWFtY2FzdCBZ YW1haGEgQUlDQSBzb3VuZAorICogQ29weXJpZ2h0IEFkcmlhbiBNY01lbmFtaW4KKyAqIDxhZHJp YW5AbWNtZW4uZGVtb24uY28udWs+CisgKiAyMDA2CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB2ZXJzaW9uIDIgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4K KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91 bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAy MTExLTEzMDcgIFVTQQorICoKKyAqLworCisvKiBTUFUgbWVtb3J5IGFuZCByZWdpc3RlciBjb25z dGFudHMgZXRjICovCisjZGVmaW5lIEcyX0ZJRk8gMHhhMDVmNjg4YworI2RlZmluZSBTUFVfTUVN T1JZX0JBU0UgMHhBMDgwMDAwMAorI2RlZmluZSBBUk1fUkVTRVRfUkVHSVNURVIgMHhBMDcwMkMw MAorI2RlZmluZSBTUFVfUkVHSVNURVJfQkFTRSAweEEwNzAwMDAwCisKKy8qIEFJQ0EgY2hhbm5l bHMgc3R1ZmYgKi8KKyNkZWZpbmUgQUlDQV9DT05UUk9MX1BPSU5UIDB4QTA4MTAwMDAKKyNkZWZp bmUgQUlDQV9DT05UUk9MX0NIQU5ORUxfU0FNUExFX05VTUJFUiAweEEwODEwMDA4CisjZGVmaW5l IEFJQ0FfQ0hBTk5FTDBfQ09OVFJPTF9PRkZTRVQgMHgxMDAwNAorCisvKiBDb21tYW5kIHZhbHVl cyAqLworI2RlZmluZSBBSUNBX0NNRF9LSUNLIDB4ODAwMDAwMDAKKyNkZWZpbmUgQUlDQV9DTURf Tk9ORSAwCisjZGVmaW5lIEFJQ0FfQ01EX1NUQVJUIDEKKyNkZWZpbmUgQUlDQV9DTURfU1RPUCAy CisjZGVmaW5lIEFJQ0FfQ01EX1ZPTCAzCisKKy8qIFNvdW5kIG1vZGVzICovCisjZGVmaW5lIFNN XzhCSVQJCTEKKyNkZWZpbmUgU01fMTZCSVQJMAorI2RlZmluZSBTTV9BRFBDTQkyCisKKy8qIEJ1 ZmZlciBhbmQgcGVyaW9kIHNpemUgKi8KKyNkZWZpbmUgQUlDQV9CVUZGRVJfU0laRSAweDgwMDAK KyNkZWZpbmUgQUlDQV9QRVJJT0RfU0laRSAweDgwMAorI2RlZmluZSBBSUNBX1BFUklPRF9OVU1C RVIgMTYKKworI2RlZmluZSBBSUNBX0NIQU5ORUwwX09GRlNFVCAweDExMDAwCisjZGVmaW5lIEFJ Q0FfQ0hBTk5FTDFfT0ZGU0VUIDB4MjEwMDAKKyNkZWZpbmUgQ0hBTk5FTF9PRkZTRVQgMHgxMDAw MAorCisjZGVmaW5lIEFJQ0FfRE1BX0NIQU5ORUwgMAorI2RlZmluZSBBSUNBX0RNQV9NT0RFIDUK KworI2RlZmluZSBTTkRfQUlDQV9EUklWRVIgIkFJQ0EiCisKK3N0cnVjdCBhaWNhX2NoYW5uZWwg eworCXVpbnQzMl90IGNtZDsJCS8qIENvbW1hbmQgSUQgICAgICAgICAgICovCisJdWludDMyX3Qg cG9zOwkJLyogU2FtcGxlIHBvc2l0aW9uICAgICAgKi8KKwl1aW50MzJfdCBsZW5ndGg7CS8qIFNh bXBsZSBsZW5ndGggICAgICAgICovCisJdWludDMyX3QgZnJlcTsJCS8qIEZyZXF1ZW5jeSAgICAg ICAgICAgICovCisJdWludDMyX3Qgdm9sOwkJLyogVm9sdW1lIDAtMjU1ICAgICAgICAgKi8KKwl1 aW50MzJfdCBwYW47CQkvKiBQYW4gMC0yNTUgICAgICAgICAgICAqLworCXVpbnQzMl90IHNmbXQ7 CQkvKiBTb3VuZCBmb3JtYXQgICAgICAgICAqLworCXVpbnQzMl90IGZsYWdzOwkJLyogQml0IGZs YWdzICAgICAgICAgICAgKi8KK307CisKK3N0cnVjdCBzbmRfY2FyZF9haWNhIHsKKwlzdHJ1Y3Qg c25kX2NhcmQgKmNhcmQ7CisJc3RydWN0IGFpY2FfY2hhbm5lbCAqY2hhbm5lbDsKKwlzdHJ1Y3Qg c25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbTsKKwlpbnQgY2xpY2tzOworCWludCBjdXJyZW50 X3BlcmlvZDsKKwlzdHJ1Y3QgdGltZXJfbGlzdCB0aW1lcjsKKwlpbnQgbWFzdGVyX3ZvbHVtZTsK KwlpbnQgZG1hX2NoZWNrOworfTsKZGlmZiAtTmF1ciAuL2xpbnV4LTIuNi4yMS1vcmlnL3NvdW5k L3NoL0tjb25maWcgLi9saW51eC0yLjYuMjEvc291bmQvc2gvS2NvbmZpZwotLS0gLi9saW51eC0y LjYuMjEtb3JpZy9zb3VuZC9zaC9LY29uZmlnCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAw ICswMTAwCisrKyAuL2xpbnV4LTIuNi4yMS9zb3VuZC9zaC9LY29uZmlnCTIwMDctMDUtMDcgMjE6 Mjg6MzAuMDAwMDAwMDAwICswMTAwCkBAIC0wLDAgKzEsMTQgQEAKKyMgQUxTQSBTSCBkcml2ZXJz CisKK21lbnUgIlNVUEVSSCBkZXZpY2VzIgorCWRlcGVuZHMgb24gU05EIT1uICYmIFNVUEVSSAor Citjb25maWcgU05EX0FJQ0EKKwl0cmlzdGF0ZSAiRHJlYW1jYXN0IFlhbWFoYSBBSUNBIHNvdW5k IgorCWRlcGVuZHMgb24gU0hfRFJFQU1DQVNUICYmIFNORAorCXNlbGVjdCBTTkRfUENNCisJaGVs cAorCSAgQUxTQSBTb3VuZCBkcml2ZXIgZm9yIHRoZSBTRUdBIERyZWFtY2FzdCBjb25zb2xlLgor CitlbmRtZW51CisKZGlmZiAtTmF1ciAuL2xpbnV4LTIuNi4yMS1vcmlnL3NvdW5kL3NoL01ha2Vm aWxlIC4vbGludXgtMi42LjIxL3NvdW5kL3NoL01ha2VmaWxlCi0tLSAuL2xpbnV4LTIuNi4yMS1v cmlnL3NvdW5kL3NoL01ha2VmaWxlCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAw CisrKyAuL2xpbnV4LTIuNi4yMS9zb3VuZC9zaC9NYWtlZmlsZQkyMDA3LTA1LTA3IDIxOjM0OjEw LjAwMDAwMDAwMCArMDEwMApAQCAtMCwwICsxLDggQEAKKyMKKyMgTWFrZWZpbGUgZm9yIEFMU0EK KyMKKworc25kLWFpY2Etb2JqcyA6PSBhaWNhLm8KKworIyBUb3BsZXZlbCBNb2R1bGUgRGVwZW5k ZW5jeQorb2JqLSQoQ09ORklHX1NORF9BSUNBKSArPSBzbmQtYWljYS5vCg== ------=_Part_207763_15288336.1179180895532-- - 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/