Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757539AbXFZMfw (ORCPT ); Tue, 26 Jun 2007 08:35:52 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755573AbXFZMfp (ORCPT ); Tue, 26 Jun 2007 08:35:45 -0400 Received: from nz-out-0506.google.com ([64.233.162.227]:4055 "EHLO nz-out-0506.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755513AbXFZMfn (ORCPT ); Tue, 26 Jun 2007 08:35:43 -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=H2otQAIM6J0D/rmXtecC/atrg8bpHzRE2RC189KCvXS24lav+GbYLR2mqfMTPk3gteN0++d7D3TwbZnNQ+RgceEGqhAYjFos3KJ9r/GY1GhTW1LvukPFt+4qsrvvdksMSUWKrby02WW3JnTrLfJ1jsMPh0Q1xHdrqF1RE7AwHAE= Message-ID: <5d5443650706260535haf0f9feq5e320059ee36c6cd@mail.gmail.com> Date: Tue, 26 Jun 2007 18:05:41 +0530 From: "Trilok Soni" To: linux-fbdev-devel@lists.sourceforge.net, adaplas@gmail.com, akpm@linux-foundation.org Subject: [PATCH 03/17] OMAP: Add TI OMAP1 internal LCD controller Cc: "Tony Lindgren" , imre.deak@solidboot.com, juha.yrjola@solidboot.com, linux-kernel@vger.kernel.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_17304_18928740.1182861341763" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 32592 Lines: 436 ------=_Part_17304_18928740.1182861341763 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline -- --Trilok Soni ------=_Part_17304_18928740.1182861341763 Content-Type: text/x-patch; name=0003-OMAP-Add-TI-OMAP1-internal-LCD-controller.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f3ed2ubu Content-Disposition: attachment; filename="0003-OMAP-Add-TI-OMAP1-internal-LCD-controller.patch" RnJvbSA3ZTJkYzk0ZDNiMGM5OTg2OGJhYThhNDAxNmUzN2QwM2Y3OWE5ZjFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbXJlIERlYWsgPGltcmUuZGVha0Bzb2xpZGJvb3QuY29tPgpE YXRlOiBUdWUsIDI2IEp1biAyMDA3IDE3OjAyOjM1ICswNTMwClN1YmplY3Q6IFtQQVRDSCAwMy8x N10gT01BUDogQWRkIFRJIE9NQVAxIGludGVybmFsIExDRCBjb250cm9sbGVyCgotIEFkZCBUZXhh cyBJbnN0cnVtZW50cyBPTUFQMSBwcm9jZXNzb3Igc2VyaWVzCihPTUFQMTUxMC8xNjEwLzE3MTAu LikgaW50ZXJuYWwgTENEIGNvbnRyb2xsZXIgaW50ZXJmYWNlLgoKU2lnbmVkLW9mZi1ieTogVHJp bG9rIFNvbmkgPHNvbmkudHJpbG9rQGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL3ZpZGVvL29tYXAv TWFrZWZpbGUgfCAgICAyICsKIGRyaXZlcnMvdmlkZW8vb21hcC9sY2RjLmMgICB8ICA4OTMgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy92aWRlby9v bWFwL2xjZGMuaCAgIHwgICAgNyArCiAzIGZpbGVzIGNoYW5nZWQsIDkwMiBpbnNlcnRpb25zKCsp LCAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlkZW8vb21hcC9s Y2RjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpZGVvL29tYXAvbGNkYy5oCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy92aWRlby9vbWFwL01ha2VmaWxlIGIvZHJpdmVycy92aWRlby9vbWFw L01ha2VmaWxlCmluZGV4IDVhYTcxNzUuLjJmMzUzODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlk ZW8vb21hcC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL3ZpZGVvL29tYXAvTWFrZWZpbGUKQEAgLTYs NSArNiw3IEBAIG9iai0kKENPTkZJR19GQl9PTUFQKSArPSBvbWFwZmIubwogCiBvYmpzLXl5IDo9 IG9tYXBmYl9tYWluLm8KIAorb2Jqcy15JChDT05GSUdfQVJDSF9PTUFQMSkgKz0gbGNkYy5vCisK IG9tYXBmYi1vYmpzIDo9ICQob2Jqcy15eSkKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9v bWFwL2xjZGMuYyBiL2RyaXZlcnMvdmlkZW8vb21hcC9sY2RjLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uOTA4NTE4OAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvdmlk ZW8vb21hcC9sY2RjLmMKQEAgLTAsMCArMSw4OTMgQEAKKy8qCisgKiBPTUFQMSBpbnRlcm5hbCBM Q0QgY29udHJvbGxlcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNCBOb2tpYSBDb3Jwb3JhdGlv bgorICogQXV0aG9yOiBJbXJlIERlYWsgPGltcmUuZGVha0Bub2tpYS5jb20+CisgKgorICogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorICogb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisgKiBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO VQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFsb25nCisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorICogNTkgVGVtcGxlIFBsYWNlIC0gU3Vp dGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3LCBVU0EuCisgKi8KKyNpbmNsdWRlIDxsaW51 eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9p bnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgorI2luY2x1ZGUgPGxpbnV4 L2Vyci5oPgorI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvZmIuaD4KKyNp bmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgorI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4K KyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKworI2luY2x1ZGUgPGFzbS9hcmNoL2RtYS5oPgorI2lu Y2x1ZGUgPGFzbS9hcmNoL29tYXBmYi5oPgorCisjaW5jbHVkZSA8YXNtL21hY2gtdHlwZXMuaD4K KworI2RlZmluZSBNT0RVTEVfTkFNRQkJCSJsY2RjIgorCisjZGVmaW5lIE9NQVBfTENEQ19CQVNF CQkJMHhmZmZlYzAwMAorI2RlZmluZSBPTUFQX0xDRENfU0laRQkJCTI1NgorI2RlZmluZSBPTUFQ X0xDRENfSVJRCQkJSU5UX0xDRF9DVFJMCisKKyNkZWZpbmUgT01BUF9MQ0RDX0NPTlRST0wJCShP TUFQX0xDRENfQkFTRSArIDB4MDApCisjZGVmaW5lIE9NQVBfTENEQ19USU1JTkcwCQkoT01BUF9M Q0RDX0JBU0UgKyAweDA0KQorI2RlZmluZSBPTUFQX0xDRENfVElNSU5HMQkJKE9NQVBfTENEQ19C QVNFICsgMHgwOCkKKyNkZWZpbmUgT01BUF9MQ0RDX1RJTUlORzIJCShPTUFQX0xDRENfQkFTRSAr IDB4MGMpCisjZGVmaW5lIE9NQVBfTENEQ19TVEFUVVMJCShPTUFQX0xDRENfQkFTRSArIDB4MTAp CisjZGVmaW5lIE9NQVBfTENEQ19TVUJQQU5FTAkJKE9NQVBfTENEQ19CQVNFICsgMHgxNCkKKyNk ZWZpbmUgT01BUF9MQ0RDX0xJTkVfSU5UCQkoT01BUF9MQ0RDX0JBU0UgKyAweDE4KQorI2RlZmlu ZSBPTUFQX0xDRENfRElTUExBWV9TVEFUVVMJKE9NQVBfTENEQ19CQVNFICsgMHgxYykKKworI2Rl ZmluZSBPTUFQX0xDRENfU1RBVF9ET05FCQkoMSA8PCAwKQorI2RlZmluZSBPTUFQX0xDRENfU1RB VF9WU1lOQwkJKDEgPDwgMSkKKyNkZWZpbmUgT01BUF9MQ0RDX1NUQVRfU1lOQ19MT1NUCSgxIDw8 IDIpCisjZGVmaW5lIE9NQVBfTENEQ19TVEFUX0FCQwkJKDEgPDwgMykKKyNkZWZpbmUgT01BUF9M Q0RDX1NUQVRfTElORV9JTlQJCSgxIDw8IDQpCisjZGVmaW5lIE9NQVBfTENEQ19TVEFUX0ZVRgkJ KDEgPDwgNSkKKyNkZWZpbmUgT01BUF9MQ0RDX1NUQVRfTE9BREVEX1BBTEVUVEUJKDEgPDwgNikK KworI2RlZmluZSBPTUFQX0xDRENfQ1RSTF9MQ0RfRU4JCSgxIDw8IDApCisjZGVmaW5lIE9NQVBf TENEQ19DVFJMX0xDRF9URlQJCSgxIDw8IDcpCisjZGVmaW5lIE9NQVBfTENEQ19DVFJMX0xJTkVf SVJRX0NMUl9TRUwJKDEgPDwgMTApCisKKyNkZWZpbmUgT01BUF9MQ0RDX0lSUV9WU1lOQwkJKDEg PDwgMikKKyNkZWZpbmUgT01BUF9MQ0RDX0lSUV9ET05FCQkoMSA8PCAzKQorI2RlZmluZSBPTUFQ X0xDRENfSVJRX0xPQURFRF9QQUxFVFRFCSgxIDw8IDQpCisjZGVmaW5lIE9NQVBfTENEQ19JUlFf TElORV9OSVJRCQkoMSA8PCA1KQorI2RlZmluZSBPTUFQX0xDRENfSVJRX0xJTkUJCSgxIDw8IDYp CisjZGVmaW5lIE9NQVBfTENEQ19JUlFfTUFTSwkJKCgoMSA8PCA1KSAtIDEpIDw8IDIpCisKKyNk ZWZpbmUgTUFYX1BBTEVUVEVfU0laRQkJUEFHRV9TSVpFCisKK2VudW0gbGNkY19sb2FkX21vZGUg eworCU9NQVBfTENEQ19MT0FEX1BBTEVUVEUsCisJT01BUF9MQ0RDX0xPQURfRlJBTUUsCisJT01B UF9MQ0RDX0xPQURfUEFMRVRURV9BTkRfRlJBTUUKK307CisKK3N0YXRpYyBzdHJ1Y3Qgb21hcF9s Y2RfY29udHJvbGxlciB7CisJZW51bSBvbWFwZmJfdXBkYXRlX21vZGUJdXBkYXRlX21vZGU7CisJ aW50CQkJZXh0X21vZGU7CisKKwl1bnNpZ25lZCBsb25nCQlmcmFtZV9vZmZzZXQ7CisJaW50CQkJ c2NyZWVuX3dpZHRoOworCWludAkJCXhyZXM7CisJaW50CQkJeXJlczsKKworCWVudW0gb21hcGZi X2NvbG9yX2Zvcm1hdAljb2xvcl9tb2RlOworCWludAkJCWJwcDsKKwl2b2lkCQkJKnBhbGV0dGVf dmlydDsKKwlkbWFfYWRkcl90CQlwYWxldHRlX3BoeXM7CisJaW50CQkJcGFsZXR0ZV9jb2RlOwor CWludAkJCXBhbGV0dGVfc2l6ZTsKKworCXVuc2lnbmVkIGludAkJaXJxX21hc2s7CisJc3RydWN0 IGNvbXBsZXRpb24JbGFzdF9mcmFtZV9jb21wbGV0ZTsKKwlzdHJ1Y3QgY29tcGxldGlvbglwYWxl dHRlX2xvYWRfY29tcGxldGU7CisJc3RydWN0IGNsawkJKmxjZF9jazsKKwlzdHJ1Y3Qgb21hcGZi X2RldmljZQkqZmJkZXY7CisKKwl2b2lkCQkJKCpkbWFfY2FsbGJhY2spKHZvaWQgKmRhdGEpOwor CXZvaWQJCQkqZG1hX2NhbGxiYWNrX2RhdGE7CisKKwlpbnQJCQlmYm1lbV9hbGxvY2F0ZWQ7CisJ ZG1hX2FkZHJfdAkJdnJhbV9waHlzOworCXZvaWQJCQkqdnJhbV92aXJ0OworCXVuc2lnbmVkIGxv bmcJCXZyYW1fc2l6ZTsKK30gbGNkYzsKKworc3RhdGljIHZvaWQgaW5saW5lIGVuYWJsZV9pcnFz KGludCBtYXNrKQoreworCWxjZGMuaXJxX21hc2sgfD0gbWFzazsKK30KKworc3RhdGljIHZvaWQg aW5saW5lIGRpc2FibGVfaXJxcyhpbnQgbWFzaykKK3sKKwlsY2RjLmlycV9tYXNrICY9IH5tYXNr OworfQorCitzdGF0aWMgdm9pZCBzZXRfbG9hZF9tb2RlKGVudW0gbGNkY19sb2FkX21vZGUgbW9k ZSkKK3sKKwl1MzIgbDsKKworCWwgPSBvbWFwX3JlYWRsKE9NQVBfTENEQ19DT05UUk9MKTsKKwls ICY9IH4oMyA8PCAyMCk7CisJc3dpdGNoIChtb2RlKSB7CisJY2FzZSBPTUFQX0xDRENfTE9BRF9Q QUxFVFRFOgorCQlsIHw9IDEgPDwgMjA7CisJCWJyZWFrOworCWNhc2UgT01BUF9MQ0RDX0xPQURf RlJBTUU6CisJCWwgfD0gMiA8PCAyMDsKKwkJYnJlYWs7CisJY2FzZSBPTUFQX0xDRENfTE9BRF9Q QUxFVFRFX0FORF9GUkFNRToKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJQlVHKCk7CisJfQorCW9t YXBfd3JpdGVsKGwsIE9NQVBfTENEQ19DT05UUk9MKTsKK30KKworc3RhdGljIHZvaWQgZW5hYmxl X2NvbnRyb2xsZXIodm9pZCkKK3sKKwl1MzIgbDsKKworCWwgPSBvbWFwX3JlYWRsKE9NQVBfTENE Q19DT05UUk9MKTsKKwlsIHw9IE9NQVBfTENEQ19DVFJMX0xDRF9FTjsKKwlsICY9IH5PTUFQX0xD RENfSVJRX01BU0s7CisJbCB8PSBsY2RjLmlycV9tYXNrIHwgT01BUF9MQ0RDX0lSUV9ET05FOwkv KiBlbmFibGVkIElSUXMgKi8KKwlvbWFwX3dyaXRlbChsLCBPTUFQX0xDRENfQ09OVFJPTCk7Cit9 CisKK3N0YXRpYyB2b2lkIGRpc2FibGVfY29udHJvbGxlcl9hc3luYyh2b2lkKQoreworCXUzMiBs OworCXUzMiBtYXNrOworCisJbCA9IG9tYXBfcmVhZGwoT01BUF9MQ0RDX0NPTlRST0wpOworCW1h c2sgPSBPTUFQX0xDRENfQ1RSTF9MQ0RfRU4gfCBPTUFQX0xDRENfSVJRX01BU0s7CisJLyoKKwkg KiBQcmVzZXJ2ZSB0aGUgRE9ORSBtYXNrLCBzaW5jZSB3ZSBzdGlsbCB3YW50IHRvIGdldCB0aGUK KwkgKiBmaW5hbCBET05FIGlycS4gSXQgd2lsbCBiZSBkaXNhYmxlZCBpbiB0aGUgSVJRIGhhbmRs ZXIuCisJICovCisJbWFzayAmPSB+T01BUF9MQ0RDX0lSUV9ET05FOworCWwgJj0gfm1hc2s7CisJ b21hcF93cml0ZWwobCwgT01BUF9MQ0RDX0NPTlRST0wpOworfQorCitzdGF0aWMgdm9pZCBkaXNh YmxlX2NvbnRyb2xsZXIodm9pZCkKK3sKKwlpbml0X2NvbXBsZXRpb24oJmxjZGMubGFzdF9mcmFt ZV9jb21wbGV0ZSk7CisJZGlzYWJsZV9jb250cm9sbGVyX2FzeW5jKCk7CisJaWYgKCF3YWl0X2Zv cl9jb21wbGV0aW9uX3RpbWVvdXQoJmxjZGMubGFzdF9mcmFtZV9jb21wbGV0ZSwKKwkJCQltc2Vj c190b19qaWZmaWVzKDUwMCkpKQorCQlkZXZfZXJyKGxjZGMuZmJkZXYtPmRldiwgInRpbWVvdXQg d2FpdGluZyBmb3IgRlJBTUUgRE9ORVxuIik7Cit9CisKK3N0YXRpYyB2b2lkIHJlc2V0X2NvbnRy b2xsZXIodTMyIHN0YXR1cykKK3sKKwlzdGF0aWMgdW5zaWduZWQgbG9uZyByZXNldF9jb3VudDsK KwlzdGF0aWMgdW5zaWduZWQgbG9uZyBsYXN0X2ppZmZpZXM7CisKKwlkaXNhYmxlX2NvbnRyb2xs ZXJfYXN5bmMoKTsKKwlyZXNldF9jb3VudCsrOworCWlmIChyZXNldF9jb3VudCA9PSAxIHx8IHRp bWVfYWZ0ZXIoamlmZmllcywgbGFzdF9qaWZmaWVzICsgSFopKSB7CisJCWRldl9lcnIobGNkYy5m YmRldi0+ZGV2LAorCQkJICAicmVzZXR0aW5nIChzdGF0dXMgJSMwMTB4LHJlc2V0IGNvdW50ICVs dSlcbiIsCisJCQkgIHN0YXR1cywgcmVzZXRfY291bnQpOworCQlsYXN0X2ppZmZpZXMgPSBqaWZm aWVzOworCX0KKwlpZiAocmVzZXRfY291bnQgPCAxMDApIHsKKwkJZW5hYmxlX2NvbnRyb2xsZXIo KTsKKwl9IGVsc2UgeworCQlyZXNldF9jb3VudCA9IDA7CisJCWRldl9lcnIobGNkYy5mYmRldi0+ ZGV2LAorCQkJInRvbyBtYW55IHJlc2V0IGF0dGVtcHRzLCBnaXZpbmcgdXAuXG4iKTsKKwl9Cit9 CisKKy8qCisgKiBDb25maWd1cmUgdGhlIExDRCBETUEgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50 IG1vZGUgc3BlY2lmaWVkIGJ5IHBhcmFtZXRlcnMKKyAqIGluIGxjZGMuZmJkZXYgYW5kIGZiZGV2 LT52YXIuCisgKi8KK3N0YXRpYyB2b2lkIHNldHVwX2xjZF9kbWEodm9pZCkKK3sKKwlzdGF0aWMg Y29uc3QgaW50IGRtYV9lbGVtX3R5cGVbXSA9IHsKKwkJMCwKKwkJT01BUF9ETUFfREFUQV9UWVBF X1M4LAorCQlPTUFQX0RNQV9EQVRBX1RZUEVfUzE2LAorCQkwLAorCQlPTUFQX0RNQV9EQVRBX1RZ UEVfUzMyLAorCX07CisJc3RydWN0IG9tYXBmYl9wbGFuZV9zdHJ1Y3QgKnBsYW5lID0gbGNkYy5m YmRldi0+ZmJfaW5mb1swXS0+cGFyOworCXN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyID0g JmxjZGMuZmJkZXYtPmZiX2luZm9bMF0tPnZhcjsKKwl1bnNpZ25lZCBsb25nCXNyYzsKKwlpbnQJ CWVzaXplLCB4ZWxlbSwgeWVsZW07CisKKwlzcmMgPSBsY2RjLnZyYW1fcGh5cyArIGxjZGMuZnJh bWVfb2Zmc2V0OworCisJc3dpdGNoICh2YXItPnJvdGF0ZSkgeworCWNhc2UgMDoKKwkJaWYgKHBs YW5lLT5pbmZvLm1pcnJvciB8fCAoc3JjICYgMykgfHwKKwkJICAgIGxjZGMuY29sb3JfbW9kZSA9 PSBPTUFQRkJfQ09MT1JfWVVWNDIwIHx8CisJCSAgICAobGNkYy54cmVzICYgMSkpCisJCQllc2l6 ZSA9IDI7CisJCWVsc2UKKwkJCWVzaXplID0gNDsKKwkJeGVsZW0gPSBsY2RjLnhyZXMgKiBsY2Rj LmJwcCAvIDggLyBlc2l6ZTsKKwkJeWVsZW0gPSBsY2RjLnlyZXM7CisJCWJyZWFrOworCWNhc2Ug OTA6CisJY2FzZSAxODA6CisJY2FzZSAyNzA6CisJCWlmIChjcHVfaXNfb21hcDE1eHgoKSkgewor CQkJQlVHKCk7CisJCX0KKwkJZXNpemUgPSAyOworCQl4ZWxlbSA9IGxjZGMueXJlcyAqIGxjZGMu YnBwIC8gMTY7CisJCXllbGVtID0gbGNkYy54cmVzOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlC VUcoKTsKKwkJcmV0dXJuOworCX0KKyNpZmRlZiBWRVJCT1NFCisJZGV2X2RiZyhsY2RjLmZiZGV2 LT5kZXYsCisJCSAic2V0dXBfZG1hOiBzcmMgJSMwMTBseCBlc2l6ZSAlZCB4ZWxlbSAlZCB5ZWxl bSAlZFxuIiwKKwkJIHNyYywgZXNpemUsIHhlbGVtLCB5ZWxlbSk7CisjZW5kaWYKKwlvbWFwX3Nl dF9sY2RfZG1hX2IxKHNyYywgeGVsZW0sIHllbGVtLCBkbWFfZWxlbV90eXBlW2VzaXplXSk7CisJ aWYgKCFjcHVfaXNfb21hcDE1eHgoKSkgeworCQlpbnQgYnBwID0gbGNkYy5icHA7CisKKwkJLyoK KwkJICogWVVWIHN1cHBvcnQgaXMgb25seSBmb3IgZXh0ZXJuYWwgbW9kZSB3aGVuIHdlIGhhdmUg dGhlCisJCSAqIFlVViB3aW5kb3cgZW1iZWRkZWQgaW4gYSAxNmJwcCBmcmFtZSBidWZmZXIuCisJ CSAqLworCQlpZiAobGNkYy5jb2xvcl9tb2RlID09IE9NQVBGQl9DT0xPUl9ZVVY0MjApCisJCQli cHAgPSAxNjsKKwkJLyogU2V0IHZpcnR1YWwgeHJlcyBlbGVtIHNpemUgKi8KKwkJb21hcF9zZXRf bGNkX2RtYV9iMV92eHJlcygKKwkJCWxjZGMuc2NyZWVuX3dpZHRoICogYnBwIC8gOCAvIGVzaXpl KTsKKwkJLyogU2V0dXAgdHJhbnNmb3JtYXRpb25zICovCisJCW9tYXBfc2V0X2xjZF9kbWFfYjFf cm90YXRpb24odmFyLT5yb3RhdGUpOworCQlvbWFwX3NldF9sY2RfZG1hX2IxX21pcnJvcihwbGFu ZS0+aW5mby5taXJyb3IpOworCX0KKwlvbWFwX3NldHVwX2xjZF9kbWEoKTsKK30KKworc3RhdGlj IGlycXJldHVybl90IGxjZGNfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2lkKQorewor CXUzMiBzdGF0dXM7CisKKwlzdGF0dXMgPSBvbWFwX3JlYWRsKE9NQVBfTENEQ19TVEFUVVMpOwor CisJaWYgKHN0YXR1cyAmIChPTUFQX0xDRENfU1RBVF9GVUYgfCBPTUFQX0xDRENfU1RBVF9TWU5D X0xPU1QpKQorCQlyZXNldF9jb250cm9sbGVyKHN0YXR1cyk7CisJZWxzZSB7CisJCWlmIChzdGF0 dXMgJiBPTUFQX0xDRENfU1RBVF9ET05FKSB7CisJCQl1MzIgbDsKKworCQkJLyoKKwkJCSAqIERp c2FibGUgSVJRX0RPTkUuIFRoZSBzdGF0dXMgYml0IHdpbGwgYmUgY2xlYXJlZAorCQkJICogb25s eSB3aGVuIHRoZSBjb250cm9sbGVyIGlzIHJlZW5hYmxlZCBhbmQgd2UgZG9uJ3QKKwkJCSAqIHdh bnQgdG8gZ2V0IG1vcmUgaW50ZXJydXB0cy4KKwkJCSAqLworCQkJbCA9IG9tYXBfcmVhZGwoT01B UF9MQ0RDX0NPTlRST0wpOworCQkJbCAmPSB+T01BUF9MQ0RDX0lSUV9ET05FOworCQkJb21hcF93 cml0ZWwobCwgT01BUF9MQ0RDX0NPTlRST0wpOworCQkJY29tcGxldGUoJmxjZGMubGFzdF9mcmFt ZV9jb21wbGV0ZSk7CisJCX0KKwkJaWYgKHN0YXR1cyAmIE9NQVBfTENEQ19TVEFUX0xPQURFRF9Q QUxFVFRFKSB7CisJCQlkaXNhYmxlX2NvbnRyb2xsZXJfYXN5bmMoKTsKKwkJCWNvbXBsZXRlKCZs Y2RjLnBhbGV0dGVfbG9hZF9jb21wbGV0ZSk7CisJCX0KKwl9CisKKwkvKgorCSAqIENsZWFyIHRo ZXNlIGludGVycnVwdCBzdGF0dXMgYml0cy4KKwkgKiBTeW5jX2xvc3QsIEZVRiBiaXRzIHdlcmUg Y2xlYXJlZCBieSBkaXNhYmxpbmcgdGhlIExDRCBjb250cm9sbGVyCisJICogTE9BREVEX1BBTEVU VEUgY2FuIGJlIGNsZWFyZWQgdGhpcyB3YXkgb25seSBpbiBwYWxldHRlIG9ubHkKKwkgKiBsb2Fk IG1vZGUuIEluIG90aGVyIGxvYWQgbW9kZXMgaXQncyBjbGVhcmVkIGJ5IGRpc2FibGluZyB0aGUK KwkgKiBjb250cm9sbGVyLgorCSAqLworCXN0YXR1cyAmPSB+KE9NQVBfTENEQ19TVEFUX1ZTWU5D IHwKKwkJICAgIE9NQVBfTENEQ19TVEFUX0xPQURFRF9QQUxFVFRFIHwKKwkJICAgIE9NQVBfTENE Q19TVEFUX0FCQyB8CisJCSAgICBPTUFQX0xDRENfU1RBVF9MSU5FX0lOVCk7CisJb21hcF93cml0 ZWwoc3RhdHVzLCBPTUFQX0xDRENfU1RBVFVTKTsKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisK Ky8qCisgKiBDaGFuZ2UgdG8gYSBuZXcgdmlkZW8gbW9kZS4gV2UgZGVmZXIgdGhpcyB0byBhIGxh dGVyIHRpbWUgdG8gYXZvaWQgYW55CisgKiBmbGlja2VyIGFuZCBub3QgdG8gbWVzcyB1cCB0aGUg Y3VycmVudCBMQ0QgRE1BIGNvbnRleHQuIEZvciB0aGlzIHdlIGRpc2FibGUKKyAqIHRoZSBMQ0Qg Y29udHJvbGVyLCB3aGljaCB3aWxsIGdlbmVyYXRlIGEgRE9ORSBpcnEgYWZ0ZXIgdGhlIGxhc3Qg ZnJhbWUgaGFzCisgKiBiZWVuIHRyYW5zZmVycmVkLiBUaGVuIGl0J2xsIGJlIHNhZmUgdG8gcmVj b25maWd1cmUgYm90aCB0aGUgTENEIGNvbnRyb2xsZXIKKyAqIGFzIHdlbGwgYXMgdGhlIExDRCBE TUEuCisgKi8KK3N0YXRpYyBpbnQgb21hcF9sY2RjX3NldHVwX3BsYW5lKGludCBwbGFuZSwgaW50 IGNoYW5uZWxfb3V0LAorCQkJCSB1bnNpZ25lZCBsb25nIG9mZnNldCwgaW50IHNjcmVlbl93aWR0 aCwKKwkJCQkgaW50IHBvc194LCBpbnQgcG9zX3ksIGludCB3aWR0aCwgaW50IGhlaWdodCwKKwkJ CQkgaW50IGNvbG9yX21vZGUpCit7CisJc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIgPSAm bGNkYy5mYmRldi0+ZmJfaW5mb1swXS0+dmFyOworCXN0cnVjdCBsY2RfcGFuZWwgKnBhbmVsID0g bGNkYy5mYmRldi0+cGFuZWw7CisJaW50IHJvdF94LCByb3RfeTsKKworCWlmICh2YXItPnJvdGF0 ZSA9PSAwKSB7CisJCXJvdF94ID0gcGFuZWwtPnhfcmVzOworCQlyb3RfeSA9IHBhbmVsLT55X3Jl czsKKwl9IGVsc2UgeworCQlyb3RfeCA9IHBhbmVsLT55X3JlczsKKwkJcm90X3kgPSBwYW5lbC0+ eF9yZXM7CisJfQorCWlmIChwbGFuZSAhPSAwIHx8IGNoYW5uZWxfb3V0ICE9IDAgfHwgcG9zX3gg IT0gMCB8fCBwb3NfeSAhPSAwIHx8CisJICAgIHdpZHRoID4gcm90X3ggfHwgaGVpZ2h0ID4gcm90 X3kpIHsKKyNpZmRlZiBWRVJCT1NFCisJCWRldl9kYmcobGNkYy5mYmRldi0+ZGV2LAorCQkJImlu dmFsaWQgcGxhbmUgcGFyYW1zIHBsYW5lICVkIHBvc194ICVkIHBvc195ICVkICIKKwkJCSJ3ICVk IGggJWRcbiIsIHBsYW5lLCBwb3NfeCwgcG9zX3ksIHdpZHRoLCBoZWlnaHQpOworI2VuZGlmCisJ CXJldHVybiAtRUlOVkFMOworCX0KKworCWxjZGMuZnJhbWVfb2Zmc2V0ID0gb2Zmc2V0OworCWxj ZGMueHJlcyA9IHdpZHRoOworCWxjZGMueXJlcyA9IGhlaWdodDsKKwlsY2RjLnNjcmVlbl93aWR0 aCA9IHNjcmVlbl93aWR0aDsKKwlsY2RjLmNvbG9yX21vZGUgPSBjb2xvcl9tb2RlOworCisJc3dp dGNoIChjb2xvcl9tb2RlKSB7CisJY2FzZSBPTUFQRkJfQ09MT1JfQ0xVVF84QlBQOgorCQlsY2Rj LmJwcCA9IDg7CisJCWxjZGMucGFsZXR0ZV9jb2RlID0gMHgzMDAwOworCQlsY2RjLnBhbGV0dGVf c2l6ZSA9IDUxMjsKKwkJYnJlYWs7CisJY2FzZSBPTUFQRkJfQ09MT1JfUkdCNTY1OgorCQlsY2Rj LmJwcCA9IDE2OworCQlsY2RjLnBhbGV0dGVfY29kZSA9IDB4NDAwMDsKKwkJbGNkYy5wYWxldHRl X3NpemUgPSAzMjsKKwkJYnJlYWs7CisJY2FzZSBPTUFQRkJfQ09MT1JfUkdCNDQ0OgorCQlsY2Rj LmJwcCA9IDE2OworCQlsY2RjLnBhbGV0dGVfY29kZSA9IDB4NDAwMDsKKwkJbGNkYy5wYWxldHRl X3NpemUgPSAzMjsKKwkJYnJlYWs7CisJY2FzZSBPTUFQRkJfQ09MT1JfWVVWNDIwOgorCQlpZiAo bGNkYy5leHRfbW9kZSkgeworCQkJbGNkYy5icHAgPSAxMjsKKwkJCWJyZWFrOworCQl9CisJCS8q IGZhbGx0aHJvdWdoICovCisJY2FzZSBPTUFQRkJfQ09MT1JfWVVWNDIyOgorCQlpZiAobGNkYy5l eHRfbW9kZSkgeworCQkJbGNkYy5icHAgPSAxNjsKKwkJCWJyZWFrOworCQl9CisJCS8qIGZhbGx0 aHJvdWdoICovCisJZGVmYXVsdDoKKwkJLyogRklYTUU6IG90aGVyIEJQUHMuCisJCSAqIGJwcDE6 IGNvZGUgIDAsICAgICBzaXplIDI1NgorCQkgKiBicHAyOiBjb2RlICAweDEwMDAgc2l6ZSAyNTYK KwkJICogYnBwNDogY29kZSAgMHgyMDAwIHNpemUgMjU2CisJCSAqIGJwcDEyOiBjb2RlIDB4NDAw MCBzaXplIDMyCisJCSAqLworCQlkZXZfZGJnKGxjZGMuZmJkZXYtPmRldiwgImludmFsaWQgY29s b3IgbW9kZSAlZFxuIiwgY29sb3JfbW9kZSk7CisJCUJVRygpOworCQlyZXR1cm4gLTE7CisJfQor CisJaWYgKGxjZGMuZXh0X21vZGUpIHsKKwkJc2V0dXBfbGNkX2RtYSgpOworCQlyZXR1cm4gMDsK Kwl9CisKKwlpZiAobGNkYy51cGRhdGVfbW9kZSA9PSBPTUFQRkJfQVVUT19VUERBVEUpIHsKKwkJ ZGlzYWJsZV9jb250cm9sbGVyKCk7CisJCW9tYXBfc3RvcF9sY2RfZG1hKCk7CisJCXNldHVwX2xj ZF9kbWEoKTsKKwkJZW5hYmxlX2NvbnRyb2xsZXIoKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludCBvbWFwX2xjZGNfZW5hYmxlX3BsYW5lKGludCBwbGFuZSwgaW50IGVuYWJsZSkK K3sKKwlkZXZfZGJnKGxjZGMuZmJkZXYtPmRldiwKKwkJInBsYW5lICVkIGVuYWJsZSAlZCB1cGRh dGVfbW9kZSAlZCBleHRfbW9kZSAlZFxuIiwKKwkJcGxhbmUsIGVuYWJsZSwgbGNkYy51cGRhdGVf bW9kZSwgbGNkYy5leHRfbW9kZSk7CisJaWYgKHBsYW5lICE9IE9NQVBGQl9QTEFORV9HRlgpCisJ CXJldHVybiAtRUlOVkFMOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDb25maWd1cmUgdGhl IExDRCBETUEgZm9yIGEgcGFsZXR0ZSBsb2FkIG9wZXJhdGlvbiBhbmQgZG8gdGhlIHBhbGV0dGUK KyAqIGRvd25sb2FkaW5nIHN5bmNocm9ub3VzbHkuIFdlIGRvbid0IHVzZSB0aGUgZnJhbWUrcGFs ZXR0ZSBsb2FkIG1vZGUgb2YKKyAqIHRoZSBjb250cm9sbGVyLCBzaW5jZSB0aGUgcGFsZXR0ZSBj YW4gYWx3YXlzIGJlIGRvd25sb2FkZWQgc2VwZXJhdGVseS4KKyAqLworc3RhdGljIHZvaWQgbG9h ZF9wYWxldHRlKHZvaWQpCit7CisJdTE2CSpwYWxldHRlOworCisJcGFsZXR0ZSA9ICh1MTYgKils Y2RjLnBhbGV0dGVfdmlydDsKKworCSoodTE2ICopcGFsZXR0ZSAmPSAweDBmZmY7CisJKih1MTYg KilwYWxldHRlIHw9IGxjZGMucGFsZXR0ZV9jb2RlOworCisJb21hcF9zZXRfbGNkX2RtYV9iMShs Y2RjLnBhbGV0dGVfcGh5cywKKwkJbGNkYy5wYWxldHRlX3NpemUgLyA0ICsgMSwgMSwgT01BUF9E TUFfREFUQV9UWVBFX1MzMik7CisKKwlvbWFwX3NldF9sY2RfZG1hX3NpbmdsZV90cmFuc2Zlcigx KTsKKwlvbWFwX3NldHVwX2xjZF9kbWEoKTsKKworCWluaXRfY29tcGxldGlvbigmbGNkYy5wYWxl dHRlX2xvYWRfY29tcGxldGUpOworCWVuYWJsZV9pcnFzKE9NQVBfTENEQ19JUlFfTE9BREVEX1BB TEVUVEUpOworCXNldF9sb2FkX21vZGUoT01BUF9MQ0RDX0xPQURfUEFMRVRURSk7CisJZW5hYmxl X2NvbnRyb2xsZXIoKTsKKwlpZiAoIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmbGNkYy5w YWxldHRlX2xvYWRfY29tcGxldGUsCisJCQkJbXNlY3NfdG9famlmZmllcyg1MDApKSkKKwkJZGV2 X2VycihsY2RjLmZiZGV2LT5kZXYsICJ0aW1lb3V0IHdhaXRpbmcgZm9yIEZSQU1FIERPTkVcbiIp OworCS8qIFRoZSBjb250cm9sbGVyIGdldHMgZGlzYWJsZWQgaW4gdGhlIGlycSBoYW5kbGVyICov CisJZGlzYWJsZV9pcnFzKE9NQVBfTENEQ19JUlFfTE9BREVEX1BBTEVUVEUpOworCW9tYXBfc3Rv cF9sY2RfZG1hKCk7CisKKwlvbWFwX3NldF9sY2RfZG1hX3NpbmdsZV90cmFuc2ZlcihsY2RjLmV4 dF9tb2RlKTsKK30KKworLyogVXNlZCBvbmx5IGluIGludGVybmFsIGNvbnRyb2xsZXIgbW9kZSAq Lworc3RhdGljIGludCBvbWFwX2xjZGNfc2V0Y29scmVnKHVfaW50IHJlZ25vLCB1MTYgcmVkLCB1 MTYgZ3JlZW4sIHUxNiBibHVlLAorCQkJICAgICAgIHUxNiB0cmFuc3AsIGludCB1cGRhdGVfaHdf cGFsKQoreworCXUxNiAqcGFsZXR0ZTsKKworCWlmIChsY2RjLmNvbG9yX21vZGUgIT0gT01BUEZC X0NPTE9SX0NMVVRfOEJQUCB8fCByZWdubyA+IDI1NSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlw YWxldHRlID0gKHUxNiAqKWxjZGMucGFsZXR0ZV92aXJ0OworCisJcGFsZXR0ZVtyZWdub10gJj0g fjB4MGZmZjsKKwlwYWxldHRlW3JlZ25vXSB8PSAoKHJlZCA+PiAxMikgPDwgOCkgfCAoKGdyZWVu ID4+IDEyKSA8PCA0ICkgfAorCQkJICAgKGJsdWUgPj4gMTIpOworCisJaWYgKHVwZGF0ZV9od19w YWwpIHsKKwkJZGlzYWJsZV9jb250cm9sbGVyKCk7CisJCW9tYXBfc3RvcF9sY2RfZG1hKCk7CisJ CWxvYWRfcGFsZXR0ZSgpOworCQlzZXR1cF9sY2RfZG1hKCk7CisJCXNldF9sb2FkX21vZGUoT01B UF9MQ0RDX0xPQURfRlJBTUUpOworCQllbmFibGVfY29udHJvbGxlcigpOworCX0KKworCXJldHVy biAwOworfQorCitzdGF0aWMgdm9pZCBjYWxjX2NrX2RpdihpbnQgaXNfdGZ0LCBpbnQgcGNrLCBp bnQgKnBja19kaXYpCit7CisJdW5zaWduZWQgbG9uZyBsY2s7CisKKwlwY2sgPSBtYXgoMSwgcGNr KTsKKwlsY2sgPSBjbGtfZ2V0X3JhdGUobGNkYy5sY2RfY2spOworCSpwY2tfZGl2ID0gKGxjayAr IHBjayAtIDEpIC8gcGNrOworCWlmIChpc190ZnQpCisJCSpwY2tfZGl2ID0gbWF4KDIsICpwY2tf ZGl2KTsKKwllbHNlCisJCSpwY2tfZGl2ID0gbWF4KDMsICpwY2tfZGl2KTsKKwlpZiAoKnBja19k aXYgPiAyNTUpIHsKKwkJLyogRklYTUU6IHRyeSB0byBhZGp1c3QgbG9naWMgY2xvY2sgZGl2aWRl ciBhcyB3ZWxsICovCisJCSpwY2tfZGl2ID0gMjU1OworCQlkZXZfd2FybihsY2RjLmZiZGV2LT5k ZXYsICJwaXhjbG9jayAlZCBrSHogdG9vIGxvdy5cbiIsCisJCQkgcGNrIC8gMTAwMCk7CisJfQor fQorCitzdGF0aWMgdm9pZCBpbmxpbmUgc2V0dXBfcmVncyh2b2lkKQoreworCXUzMiBsOworCXN0 cnVjdCBsY2RfcGFuZWwgKnBhbmVsID0gbGNkYy5mYmRldi0+cGFuZWw7CisJaW50IGlzX3RmdCA9 IHBhbmVsLT5jb25maWcgJiBPTUFQX0xDRENfUEFORUxfVEZUOworCXVuc2lnbmVkIGxvbmcgbGNr OworCWludCBwY2Q7CisKKwlsID0gb21hcF9yZWFkbChPTUFQX0xDRENfQ09OVFJPTCk7CisJbCAm PSB+T01BUF9MQ0RDX0NUUkxfTENEX1RGVDsKKwlsIHw9IGlzX3RmdCA/IE9NQVBfTENEQ19DVFJM X0xDRF9URlQgOiAwOworI2lmZGVmIENPTkZJR19NQUNIX09NQVBfUEFMTVRFCisvKiBGSVhNRTpp ZiAobWFjaGluZV9pc19vbWFwX3BhbG10ZSgpKSB7ICovCisJCS8qIFBhbG1URSB1c2VzIGFsdGVy bmF0ZSBURlQgc2V0dGluZyBpbiA4QlBQIG1vZGUgKi8KKwkJbCB8PSAoaXNfdGZ0ICYmIHBhbmVs LT5icHAgPT0gOCkgPyAweDgxMDAwMCA6IDA7CisvKgl9ICovCisjZW5kaWYKKwlvbWFwX3dyaXRl bChsLCBPTUFQX0xDRENfQ09OVFJPTCk7CisKKwlsID0gb21hcF9yZWFkbChPTUFQX0xDRENfVElN SU5HMik7CisJbCAmPSB+KCgoMSA8PCA2KSAtIDEpIDw8IDIwKTsKKwlsIHw9IChwYW5lbC0+Y29u ZmlnICYgT01BUF9MQ0RDX1NJR05BTF9NQVNLKSA8PCAyMDsKKwlvbWFwX3dyaXRlbChsLCBPTUFQ X0xDRENfVElNSU5HMik7CisKKwlsID0gcGFuZWwtPnhfcmVzIC0gMTsKKwlsIHw9IChwYW5lbC0+ aHN3IC0gMSkgPDwgMTA7CisJbCB8PSAocGFuZWwtPmhmcCAtIDEpIDw8IDE2OworCWwgfD0gKHBh bmVsLT5oYnAgLSAxKSA8PCAyNDsKKwlvbWFwX3dyaXRlbChsLCBPTUFQX0xDRENfVElNSU5HMCk7 CisKKwlsID0gcGFuZWwtPnlfcmVzIC0gMTsKKwlsIHw9IChwYW5lbC0+dnN3IC0gMSkgPDwgMTA7 CisJbCB8PSBwYW5lbC0+dmZwIDw8IDE2OworCWwgfD0gcGFuZWwtPnZicCA8PCAyNDsKKwlvbWFw X3dyaXRlbChsLCBPTUFQX0xDRENfVElNSU5HMSk7CisKKwlsID0gb21hcF9yZWFkbChPTUFQX0xD RENfVElNSU5HMik7CisJbCAmPSB+MHhmZjsKKworCWxjayA9IGNsa19nZXRfcmF0ZShsY2RjLmxj ZF9jayk7CisKKwlpZiAoIXBhbmVsLT5wY2QpCisJCWNhbGNfY2tfZGl2KGlzX3RmdCwgcGFuZWwt PnBpeGVsX2Nsb2NrICogMTAwMCwgJnBjZCk7CisJZWxzZSB7CisJCWRldl93YXJuKGxjZGMuZmJk ZXYtPmRldiwKKwkJICAgICJQaXhlbCBjbG9jayBkaXZpZGVyIHZhbHVlIGlzIG9ic29sZXRlLlxu IgorCQkgICAgIlRyeSB0byBzZXQgcGl4ZWxfY2xvY2sgdG8gJWx1IGFuZCBwY2QgdG8gMCAiCisJ CSAgICAiaW4gZHJpdmVycy92aWRlby9vbWFwL2xjZF8lcy5jIGFuZCBzdWJtaXQgYSBwYXRjaC5c biIsCisJCQlsY2sgLyBwYW5lbC0+cGNkIC8gMTAwMCwgcGFuZWwtPm5hbWUpOworCisJCXBjZCA9 IHBhbmVsLT5wY2Q7CisJfQorCWwgfD0gcGNkICYgMHhmZjsKKwlsIHw9IHBhbmVsLT5hY2IgPDwg ODsKKwlvbWFwX3dyaXRlbChsLCBPTUFQX0xDRENfVElNSU5HMik7CisKKwkvKiB1cGRhdGUgcGFu ZWwgaW5mbyB3aXRoIHRoZSBleGFjdCBjbG9jayAqLworCXBhbmVsLT5waXhlbF9jbG9jayA9IGxj ayAvIHBjZCAvIDEwMDA7Cit9CisKKy8qCisgKiBDb25maWd1cmUgdGhlIExDRCBjb250cm9sbGVy LCBkb3dubG9hZCB0aGUgY29sb3IgcGFsZXR0ZSBhbmQgc3RhcnQgYSBsb29wZWQKKyAqIERNQSB0 cmFuc2ZlciBvZiB0aGUgZnJhbWUgaW1hZ2UgZGF0YS4gQ2FsbGVkIG9ubHkgaW4gaW50ZXJuYWwK KyAqIGNvbnRyb2xsZXIgbW9kZS4KKyAqLworc3RhdGljIGludCBvbWFwX2xjZGNfc2V0X3VwZGF0 ZV9tb2RlKGVudW0gb21hcGZiX3VwZGF0ZV9tb2RlIG1vZGUpCit7CisJaW50IHIgPSAwOworCisJ aWYgKG1vZGUgIT0gbGNkYy51cGRhdGVfbW9kZSkgeworCQlzd2l0Y2ggKG1vZGUpIHsKKwkJY2Fz ZSBPTUFQRkJfQVVUT19VUERBVEU6CisJCQlzZXR1cF9yZWdzKCk7CisJCQlsb2FkX3BhbGV0dGUo KTsKKworCQkJLyogU2V0dXAgYW5kIHN0YXJ0IExDRCBETUEgKi8KKwkJCXNldHVwX2xjZF9kbWEo KTsKKworCQkJc2V0X2xvYWRfbW9kZShPTUFQX0xDRENfTE9BRF9GUkFNRSk7CisJCQllbmFibGVf aXJxcyhPTUFQX0xDRENfSVJRX0RPTkUpOworCQkJLyogVGhpcyB3aWxsIHN0YXJ0IHRoZSBhY3R1 YWwgRE1BIHRyYW5zZmVyICovCisJCQllbmFibGVfY29udHJvbGxlcigpOworCQkJbGNkYy51cGRh dGVfbW9kZSA9IG1vZGU7CisJCQlicmVhazsKKwkJY2FzZSBPTUFQRkJfVVBEQVRFX0RJU0FCTEVE OgorCQkJZGlzYWJsZV9jb250cm9sbGVyKCk7CisJCQlvbWFwX3N0b3BfbGNkX2RtYSgpOworCQkJ bGNkYy51cGRhdGVfbW9kZSA9IG1vZGU7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXIgPSAt RUlOVkFMOworCQl9CisJfQorCisJcmV0dXJuIHI7Cit9CisKK3N0YXRpYyBlbnVtIG9tYXBmYl91 cGRhdGVfbW9kZSBvbWFwX2xjZGNfZ2V0X3VwZGF0ZV9tb2RlKHZvaWQpCit7CisJcmV0dXJuIGxj ZGMudXBkYXRlX21vZGU7Cit9CisKKy8qIFBNIGNvZGUgY2FsbGVkIG9ubHkgaW4gaW50ZXJuYWwg Y29udHJvbGxlciBtb2RlICovCitzdGF0aWMgdm9pZCBvbWFwX2xjZGNfc3VzcGVuZCh2b2lkKQor eworCWlmIChsY2RjLnVwZGF0ZV9tb2RlID09IE9NQVBGQl9BVVRPX1VQREFURSkgeworCQlkaXNh YmxlX2NvbnRyb2xsZXIoKTsKKwkJb21hcF9zdG9wX2xjZF9kbWEoKTsKKwl9Cit9CisKK3N0YXRp YyB2b2lkIG9tYXBfbGNkY19yZXN1bWUodm9pZCkKK3sKKwlpZiAobGNkYy51cGRhdGVfbW9kZSA9 PSBPTUFQRkJfQVVUT19VUERBVEUpIHsKKwkJc2V0dXBfcmVncygpOworCQlsb2FkX3BhbGV0dGUo KTsKKwkJc2V0dXBfbGNkX2RtYSgpOworCQlzZXRfbG9hZF9tb2RlKE9NQVBfTENEQ19MT0FEX0ZS QU1FKTsKKwkJZW5hYmxlX2lycXMoT01BUF9MQ0RDX0lSUV9ET05FKTsKKwkJZW5hYmxlX2NvbnRy b2xsZXIoKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIG9tYXBfbGNkY19nZXRfY2FwcyhpbnQgcGxh bmUsIHN0cnVjdCBvbWFwZmJfY2FwcyAqY2FwcykKK3sKKwlyZXR1cm47Cit9CisKK2ludCBvbWFw X2xjZGNfc2V0X2RtYV9jYWxsYmFjayh2b2lkICgqY2FsbGJhY2spKHZvaWQgKmRhdGEpLCB2b2lk ICpkYXRhKQoreworCUJVR19PTihjYWxsYmFjayA9PSBOVUxMKTsKKworCWlmIChsY2RjLmRtYV9j YWxsYmFjaykKKwkJcmV0dXJuIC1FQlVTWTsKKwllbHNlIHsKKwkJbGNkYy5kbWFfY2FsbGJhY2sg PSBjYWxsYmFjazsKKwkJbGNkYy5kbWFfY2FsbGJhY2tfZGF0YSA9IGRhdGE7CisJfQorCXJldHVy biAwOworfQorRVhQT1JUX1NZTUJPTChvbWFwX2xjZGNfc2V0X2RtYV9jYWxsYmFjayk7CisKK3Zv aWQgb21hcF9sY2RjX2ZyZWVfZG1hX2NhbGxiYWNrKHZvaWQpCit7CisJbGNkYy5kbWFfY2FsbGJh Y2sgPSBOVUxMOworfQorRVhQT1JUX1NZTUJPTChvbWFwX2xjZGNfZnJlZV9kbWFfY2FsbGJhY2sp OworCitzdGF0aWMgdm9pZCBsY2RjX2RtYV9oYW5kbGVyKHUxNiBzdGF0dXMsIHZvaWQgKmRhdGEp Cit7CisJaWYgKGxjZGMuZG1hX2NhbGxiYWNrKQorCQlsY2RjLmRtYV9jYWxsYmFjayhsY2RjLmRt YV9jYWxsYmFja19kYXRhKTsKK30KKworc3RhdGljIGludCBtbWFwX2tlcm4odm9pZCkKK3sKKwlz dHJ1Y3Qgdm1fc3RydWN0CSprdm1hOworCXN0cnVjdCB2bV9hcmVhX3N0cnVjdAl2bWE7CisJcGdw cm90X3QJCXBncHJvdDsKKwl1bnNpZ25lZCBsb25nCQl2YWRkcjsKKworCWt2bWEgPSBnZXRfdm1f YXJlYShsY2RjLnZyYW1fc2l6ZSwgVk1fSU9SRU1BUCk7CisJaWYgKGt2bWEgPT0gTlVMTCkgewor CQlkZXZfZXJyKGxjZGMuZmJkZXYtPmRldiwgImNhbid0IGdldCBrZXJuZWwgdm0gYXJlYVxuIik7 CisJCXJldHVybiAtRU5PTUVNOworCX0KKwl2bWEudm1fbW0gPSAmaW5pdF9tbTsKKworCXZhZGRy ID0gKHVuc2lnbmVkIGxvbmcpa3ZtYS0+YWRkcjsKKwl2bWEudm1fc3RhcnQgPSB2YWRkcjsKKwl2 bWEudm1fZW5kID0gdmFkZHIgKyBsY2RjLnZyYW1fc2l6ZTsKKworCXBncHJvdCA9IHBncHJvdF93 cml0ZWNvbWJpbmUocGdwcm90X2tlcm5lbCk7CisJaWYgKGlvX3JlbWFwX3Bmbl9yYW5nZSgmdm1h LCB2YWRkciwKKwkJCSAgIGxjZGMudnJhbV9waHlzID4+IFBBR0VfU0hJRlQsCisJCQkgICBsY2Rj LnZyYW1fc2l6ZSwgcGdwcm90KSA8IDApIHsKKwkJZGV2X2VycihsY2RjLmZiZGV2LT5kZXYsICJr ZXJuZWwgbW1hcCBmb3IgRkIgbWVtb3J5IGZhaWxlZFxuIik7CisJCXJldHVybiAtRUFHQUlOOwor CX0KKworCWxjZGMudnJhbV92aXJ0ID0gKHZvaWQgKil2YWRkcjsKKworCXJldHVybiAwOworfQor CitzdGF0aWMgdm9pZCB1bm1hcF9rZXJuKHZvaWQpCit7CisJdnVubWFwKGxjZGMudnJhbV92aXJ0 KTsKK30KKworc3RhdGljIGludCBhbGxvY19wYWxldHRlX3JhbSh2b2lkKQoreworCWxjZGMucGFs ZXR0ZV92aXJ0ID0gZG1hX2FsbG9jX3dyaXRlY29tYmluZShsY2RjLmZiZGV2LT5kZXYsCisJCU1B WF9QQUxFVFRFX1NJWkUsICZsY2RjLnBhbGV0dGVfcGh5cywgR0ZQX0tFUk5FTCk7CisJaWYgKGxj ZGMucGFsZXR0ZV92aXJ0ID09IE5VTEwpIHsKKwkJZGV2X2VycihsY2RjLmZiZGV2LT5kZXYsICJm YWlsZWQgdG8gYWxsb2MgcGFsZXR0ZSBtZW1vcnlcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9 CisJbWVtc2V0KGxjZGMucGFsZXR0ZV92aXJ0LCAwLCBNQVhfUEFMRVRURV9TSVpFKTsKKworCXJl dHVybiAwOworfQorCitzdGF0aWMgdm9pZCBmcmVlX3BhbGV0dGVfcmFtKHZvaWQpCit7CisJZG1h X2ZyZWVfd3JpdGVjb21iaW5lKGxjZGMuZmJkZXYtPmRldiwgTUFYX1BBTEVUVEVfU0laRSwKKwkJ CWxjZGMucGFsZXR0ZV92aXJ0LCBsY2RjLnBhbGV0dGVfcGh5cyk7Cit9CisKK3N0YXRpYyBpbnQg YWxsb2NfZmJtZW0oc3RydWN0IG9tYXBmYl9tZW1fcmVnaW9uICpyZWdpb24pCit7CisJaW50IGJw cDsKKwlpbnQgZnJhbWVfc2l6ZTsKKwlzdHJ1Y3QgbGNkX3BhbmVsICpwYW5lbCA9IGxjZGMuZmJk ZXYtPnBhbmVsOworCisJYnBwID0gcGFuZWwtPmJwcDsKKwlpZiAoYnBwID09IDEyKQorCQlicHAg PSAxNjsKKwlmcmFtZV9zaXplID0gUEFHRV9BTElHTihwYW5lbC0+eF9yZXMgKiBicHAgLyA4ICog cGFuZWwtPnlfcmVzKTsKKwlpZiAocmVnaW9uLT5zaXplID4gZnJhbWVfc2l6ZSkKKwkJZnJhbWVf c2l6ZSA9IHJlZ2lvbi0+c2l6ZTsKKwlsY2RjLnZyYW1fc2l6ZSA9IGZyYW1lX3NpemU7CisJbGNk Yy52cmFtX3ZpcnQgPSBkbWFfYWxsb2Nfd3JpdGVjb21iaW5lKGxjZGMuZmJkZXYtPmRldiwKKwkJ CWxjZGMudnJhbV9zaXplLCAmbGNkYy52cmFtX3BoeXMsIEdGUF9LRVJORUwpOworCWlmIChsY2Rj LnZyYW1fdmlydCA9PSBOVUxMKSB7CisJCWRldl9lcnIobGNkYy5mYmRldi0+ZGV2LCAidW5hYmxl IHRvIGFsbG9jYXRlIEZCIERNQSBtZW1vcnlcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisJ cmVnaW9uLT5zaXplID0gZnJhbWVfc2l6ZTsKKwlyZWdpb24tPnBhZGRyID0gbGNkYy52cmFtX3Bo eXM7CisJcmVnaW9uLT52YWRkciA9IGxjZGMudnJhbV92aXJ0OworCXJlZ2lvbi0+YWxsb2MgPSAx OworCisJbWVtc2V0KGxjZGMudnJhbV92aXJ0LCAwLCBsY2RjLnZyYW1fc2l6ZSk7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIHZvaWQgZnJlZV9mYm1lbSh2b2lkKQoreworCWRtYV9mcmVlX3dy aXRlY29tYmluZShsY2RjLmZiZGV2LT5kZXYsIGxjZGMudnJhbV9zaXplLAorCQkJICAgICAgbGNk Yy52cmFtX3ZpcnQsIGxjZGMudnJhbV9waHlzKTsKK30KKworc3RhdGljIGludCBzZXR1cF9mYm1l bShzdHJ1Y3Qgb21hcGZiX21lbV9kZXNjICpyZXFfbWQpCit7CisJaW50IHI7CisKKwlpZiAoIXJl cV9tZC0+cmVnaW9uX2NudCkgeworCQlkZXZfZXJyKGxjZGMuZmJkZXYtPmRldiwgIm5vIG1lbW9y eSByZWdpb25zIGRlZmluZWRcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlpZiAocmVx X21kLT5yZWdpb25fY250ID4gMSkgeworCQlkZXZfZXJyKGxjZGMuZmJkZXYtPmRldiwgIm9ubHkg b25lIHBsYW5lIGlzIHN1cHBvcnRlZFxuIik7CisJCXJlcV9tZC0+cmVnaW9uX2NudCA9IDE7CisJ fQorCisJaWYgKHJlcV9tZC0+cmVnaW9uWzBdLnBhZGRyID09IDApIHsKKwkJbGNkYy5mYm1lbV9h bGxvY2F0ZWQgPSAxOworCQlpZiAoKHIgPSBhbGxvY19mYm1lbSgmcmVxX21kLT5yZWdpb25bMF0p KSA8IDApCisJCQlyZXR1cm4gcjsKKwkJcmV0dXJuIDA7CisJfQorCisJbGNkYy52cmFtX3BoeXMg PSByZXFfbWQtPnJlZ2lvblswXS5wYWRkcjsKKwlsY2RjLnZyYW1fc2l6ZSA9IHJlcV9tZC0+cmVn aW9uWzBdLnNpemU7CisKKwlpZiAoKHIgPSBtbWFwX2tlcm4oKSkgPCAwKQorCQlyZXR1cm4gcjsK KworCWRldl9kYmcobGNkYy5mYmRldi0+ZGV2LCAidnJhbSBhdCAlMDh4IHNpemUgJTA4bHggbWFw cGVkIHRvIDB4JXBcbiIsCisJCSBsY2RjLnZyYW1fcGh5cywgbGNkYy52cmFtX3NpemUsIGxjZGMu dnJhbV92aXJ0KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBjbGVhbnVwX2ZibWVt KHZvaWQpCit7CisJaWYgKGxjZGMuZmJtZW1fYWxsb2NhdGVkKQorCQlmcmVlX2ZibWVtKCk7CisJ ZWxzZQorCQl1bm1hcF9rZXJuKCk7Cit9CisKK3N0YXRpYyBpbnQgb21hcF9sY2RjX2luaXQoc3Ry dWN0IG9tYXBmYl9kZXZpY2UgKmZiZGV2LCBpbnQgZXh0X21vZGUsCisJCQkgIHN0cnVjdCBvbWFw ZmJfbWVtX2Rlc2MgKnJlcV92cmFtKQoreworCWludCByOworCXUzMiBsOworCWludCByYXRlOwor CXN0cnVjdCBjbGsgKnRjX2NrOworCisJbGNkYy5pcnFfbWFzayA9IDA7CisKKwlsY2RjLmZiZGV2 ID0gZmJkZXY7CisJbGNkYy5leHRfbW9kZSA9IGV4dF9tb2RlOworCisJbCA9IDA7CisJb21hcF93 cml0ZWwobCwgT01BUF9MQ0RDX0NPTlRST0wpOworCisJLyogRklYTUU6CisJICogQWNjb3JkaW5n IHRvIGVycmF0YSBzb21lIHBsYXRmb3JtcyBoYXZlIGEgY2xvY2sgcmF0ZSBsaW1pdGlhdGlvbgor CSAqLworCWxjZGMubGNkX2NrID0gY2xrX2dldChOVUxMLCAibGNkX2NrIik7CisJaWYgKElTX0VS UihsY2RjLmxjZF9jaykpIHsKKwkJZGV2X2VycihmYmRldi0+ZGV2LCAidW5hYmxlIHRvIGFjY2Vz cyBMQ0QgY2xvY2tcbiIpOworCQlyID0gUFRSX0VSUihsY2RjLmxjZF9jayk7CisJCWdvdG8gZmFp bDA7CisJfQorCisJdGNfY2sgPSBjbGtfZ2V0KE5VTEwsICJ0Y19jayIpOworCWlmIChJU19FUlIo dGNfY2spKSB7CisJCWRldl9lcnIoZmJkZXYtPmRldiwgInVuYWJsZSB0byBhY2Nlc3MgVEMgY2xv Y2tcbiIpOworCQlyID0gUFRSX0VSUih0Y19jayk7CisJCWdvdG8gZmFpbDE7CisJfQorCisJcmF0 ZSA9IGNsa19nZXRfcmF0ZSh0Y19jayk7CisJY2xrX3B1dCh0Y19jayk7CisKKwlpZiAobWFjaGlu ZV9pc19hbXNfZGVsdGEoKSkKKwkJcmF0ZSAvPSA0OworCWlmIChtYWNoaW5lX2lzX29tYXBfaDMo KSkKKwkJcmF0ZSAvPSAzOworCXIgPSBjbGtfc2V0X3JhdGUobGNkYy5sY2RfY2ssIHJhdGUpOwor CWlmIChyKSB7CisJCWRldl9lcnIoZmJkZXYtPmRldiwgImZhaWxlZCB0byBhZGp1c3QgTENEIHJh dGVcbiIpOworCQlnb3RvIGZhaWwxOworCX0KKwljbGtfZW5hYmxlKGxjZGMubGNkX2NrKTsKKwor CXIgPSByZXF1ZXN0X2lycShPTUFQX0xDRENfSVJRLCBsY2RjX2lycV9oYW5kbGVyLCAwLCBNT0RV TEVfTkFNRSwgZmJkZXYpOworCWlmIChyKSB7CisJCWRldl9lcnIoZmJkZXYtPmRldiwgInVuYWJs ZSB0byBnZXQgSVJRXG4iKTsKKwkJZ290byBmYWlsMjsKKwl9CisKKwlyID0gb21hcF9yZXF1ZXN0 X2xjZF9kbWEobGNkY19kbWFfaGFuZGxlciwgTlVMTCk7CisJaWYgKHIpIHsKKwkJZGV2X2Vycihm YmRldi0+ZGV2LCAidW5hYmxlIHRvIGdldCBMQ0QgRE1BXG4iKTsKKwkJZ290byBmYWlsMzsKKwl9 CisKKwlvbWFwX3NldF9sY2RfZG1hX3NpbmdsZV90cmFuc2ZlcihleHRfbW9kZSk7CisJb21hcF9z ZXRfbGNkX2RtYV9leHRfY29udHJvbGxlcihleHRfbW9kZSk7CisKKwlpZiAoIWV4dF9tb2RlKQor CQlpZiAoKHIgPSBhbGxvY19wYWxldHRlX3JhbSgpKSA8IDApCisJCQlnb3RvIGZhaWw0OworCisJ aWYgKChyID0gc2V0dXBfZmJtZW0ocmVxX3ZyYW0pKSA8IDApCisJCWdvdG8gZmFpbDU7CisKKwlw cl9pbmZvKCJvbWFwZmI6IExDREMgaW5pdGlhbGl6ZWRcbiIpOworCisJcmV0dXJuIDA7CitmYWls NToKKwlpZiAoIWV4dF9tb2RlKQorCQlmcmVlX3BhbGV0dGVfcmFtKCk7CitmYWlsNDoKKwlvbWFw X2ZyZWVfbGNkX2RtYSgpOworZmFpbDM6CisJZnJlZV9pcnEoT01BUF9MQ0RDX0lSUSwgbGNkYy5m YmRldik7CitmYWlsMjoKKwljbGtfZGlzYWJsZShsY2RjLmxjZF9jayk7CitmYWlsMToKKwljbGtf cHV0KGxjZGMubGNkX2NrKTsKK2ZhaWwwOgorCXJldHVybiByOworfQorCitzdGF0aWMgdm9pZCBv bWFwX2xjZGNfY2xlYW51cCh2b2lkKQoreworCWlmICghbGNkYy5leHRfbW9kZSkKKwkJZnJlZV9w YWxldHRlX3JhbSgpOworCWNsZWFudXBfZmJtZW0oKTsKKwlvbWFwX2ZyZWVfbGNkX2RtYSgpOwor CWZyZWVfaXJxKE9NQVBfTENEQ19JUlEsIGxjZGMuZmJkZXYpOworCWNsa19kaXNhYmxlKGxjZGMu bGNkX2NrKTsKKwljbGtfcHV0KGxjZGMubGNkX2NrKTsKK30KKworY29uc3Qgc3RydWN0IGxjZF9j dHJsIG9tYXAxX2ludF9jdHJsID0geworCS5uYW1lCQkJPSAiaW50ZXJuYWwiLAorCS5pbml0CQkJ PSBvbWFwX2xjZGNfaW5pdCwKKwkuY2xlYW51cAkJPSBvbWFwX2xjZGNfY2xlYW51cCwKKwkuZ2V0 X2NhcHMJCT0gb21hcF9sY2RjX2dldF9jYXBzLAorCS5zZXRfdXBkYXRlX21vZGUJPSBvbWFwX2xj ZGNfc2V0X3VwZGF0ZV9tb2RlLAorCS5nZXRfdXBkYXRlX21vZGUJPSBvbWFwX2xjZGNfZ2V0X3Vw ZGF0ZV9tb2RlLAorCS51cGRhdGVfd2luZG93CQk9IE5VTEwsCisJLnN1c3BlbmQJCT0gb21hcF9s Y2RjX3N1c3BlbmQsCisJLnJlc3VtZQkJCT0gb21hcF9sY2RjX3Jlc3VtZSwKKwkuc2V0dXBfcGxh bmUJCT0gb21hcF9sY2RjX3NldHVwX3BsYW5lLAorCS5lbmFibGVfcGxhbmUJCT0gb21hcF9sY2Rj X2VuYWJsZV9wbGFuZSwKKwkuc2V0Y29scmVnCQk9IG9tYXBfbGNkY19zZXRjb2xyZWcsCit9Owpk aWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9vbWFwL2xjZGMuaCBiL2RyaXZlcnMvdmlkZW8vb21h cC9sY2RjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRiNzMxZQotLS0g L2Rldi9udWxsCisrKyBiL2RyaXZlcnMvdmlkZW8vb21hcC9sY2RjLmgKQEAgLTAsMCArMSw3IEBA CisjaWZuZGVmIExDRENfSAorI2RlZmluZSBMQ0RDX0gKKworaW50IG9tYXBfbGNkY19zZXRfZG1h X2NhbGxiYWNrKHZvaWQgKCpjYWxsYmFjaykodm9pZCAqZGF0YSksIHZvaWQgKmRhdGEpOwordm9p ZCBvbWFwX2xjZGNfZnJlZV9kbWFfY2FsbGJhY2sodm9pZCk7CisKKyNlbmRpZgotLSAKMS41LjAK Cg== ------=_Part_17304_18928740.1182861341763-- - 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/