From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934249AbXGSHFL (ORCPT ); Thu, 19 Jul 2007 03:05:11 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1756107AbXGSHEz (ORCPT ); Thu, 19 Jul 2007 03:04:55 -0400 Received: from wa-out-1112.google.com ([209.85.146.180]:50256 "EHLO wa-out-1112.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756118AbXGSHEx (ORCPT ); Thu, 19 Jul 2007 03:04:53 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=KMKAUAWh64YMqunC4NxJUbPALBLghounnjkWCilEhLx5pPxFNzURIqug6EQ2oSFz0pifHRMCcApVF9LptX22Dml46puO6T9+7B8ZUDFKLxyp+fXtSpHl1DAJgr/wzzz7otuLlQbcHclePlTTucQe+c++T7zisn7T+4/BdGFMJyM= Message-ID: <86802c440707190004g563ddd64g4866f5877d6bf292@mail.gmail.com> Date: Thu, 19 Jul 2007 00:04:51 -0700 From: "Yinghai Lu" To: "Andi Kleen" Subject: Re: [PATCH 3/3]x86_64: early_printk for early debug port support Cc: "Vivek Goyal" , "Andrew Morton" , "Eric W. Biederman" , "Greg KH" , "Bjorn Helgaas" , "linux kernel mailing list" In-Reply-To: <200707190010.53702.ak@suse.de> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_108469_14004718.1184828691345" References: <86802c440705202219k5aa758ffk217626424e613ec7@mail.gmail.com> <200707190010.53702.ak@suse.de> Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org ------=_Part_108469_14004718.1184828691345 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline On 7/18/07, Andi Kleen wrote: > On Monday 21 May 2007 07:19:18 Yinghai Lu wrote: > > add early dbgp to early_printk. > > > > kernel command line: > > earlyprintk=dbgp > > or > > earlyprintk=dbgp1 > > Just checking some old patches. Was there ever an update for this one? > What were the testing results? > > -Andi > please check the attachment. the diff to current Linus'd git. after remove pci quirks for usb handoff, it could get boot log till ohci try to reset the port with debug device. --- reset will fail. Maybe Greg could continue debug it. YH ------=_Part_108469_14004718.1184828691345 Content-Type: text/x-patch; name=9xxx.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f4awy4jb Content-Disposition: attachment; filename="9xxx.diff" ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0IGIvRG9jdW1l bnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQKaW5kZXggOWE1NDE0OC4uOTU2ZDhkYyAxMDA2 NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQKKysrIGIvRG9jdW1l bnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQKQEAgLTU1MCwxMSArNTUwLDEyIEBAIGFuZCBp cyBiZXR3ZWVuIDI1NiBhbmQgNDA5NiBjaGFyYWN0ZXJzLiBJdCBpcyBkZWZpbmVkIGluIHRoZSBm aWxlCiAJZWFybHlwcmludGs9CVtJQS0zMixYODYtNjQsU0hdCiAJCQllYXJseXByaW50az12Z2EK IAkJCWVhcmx5cHJpbnRrPXNlcmlhbFssdHR5U25bLGJhdWRyYXRlXV0KKwkJCWVhcmx5cHJpbnRr PWRiZ3AKIAogCQkJQXBwZW5kICIsa2VlcCIgdG8gbm90IGRpc2FibGUgaXQgd2hlbiB0aGUgcmVh bCBjb25zb2xlCiAJCQl0YWtlcyBvdmVyLgogCi0JCQlPbmx5IHZnYSBvciBzZXJpYWwgYXQgYSB0 aW1lLCBub3QgYm90aC4KKwkJCU9ubHkgdmdhIG9yIHNlcmlhbCBvciB1c2IgZGVidWcgcG9ydCBh dCBhIHRpbWUuCiAKIAkJCUN1cnJlbnRseSBvbmx5IHR0eVMwIGFuZCB0dHlTMSBhcmUgc3VwcG9y dGVkLgogCmRpZmYgLS1naXQgYS9hcmNoL3g4Nl82NC9rZXJuZWwvZWFybHlfcHJpbnRrLmMgYi9h cmNoL3g4Nl82NC9rZXJuZWwvZWFybHlfcHJpbnRrLmMKaW5kZXggZmQ5YWZmMy4uMzYyMWQ2OCAx MDA2NDQKLS0tIGEvYXJjaC94ODZfNjQva2VybmVsL2Vhcmx5X3ByaW50ay5jCisrKyBiL2FyY2gv eDg2XzY0L2tlcm5lbC9lYXJseV9wcmludGsuYwpAQCAtMywxMCArMywxOSBAQAogI2luY2x1ZGUg PGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KICNpbmNsdWRlIDxsaW51 eC9zY3JlZW5faW5mby5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi9jaDkuaD4KKyNpbmNsdWRlIDxs aW51eC9wY2lfcmVncy5oPgorI2luY2x1ZGUgPGxpbnV4L3BjaV9pZHMuaD4KKyNpbmNsdWRlIDxs aW51eC9lcnJuby5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNz b3IuaD4KICNpbmNsdWRlIDxhc20vZmNudGwuaD4KICNpbmNsdWRlIDx4ZW4vaHZjLWNvbnNvbGUu aD4KKyNpbmNsdWRlIDxhc20vcGNpLWRpcmVjdC5oPgorI2luY2x1ZGUgPGFzbS9wZ3RhYmxlLmg+ CisjaW5jbHVkZSA8YXNtL2ZpeG1hcC5oPgorI2RlZmluZSBFQVJMWV9QUklOVEsKKyNpbmNsdWRl ICIuLi8uLi8uLi9kcml2ZXJzL3VzYi9ob3N0L2VoY2kuaCIKIAogLyogU2ltcGxlIFZHQSBvdXRw dXQgKi8KIApAQCAtMTU2LDYgKzE2NSw1OTQgQEAgc3RhdGljIHN0cnVjdCBjb25zb2xlIGVhcmx5 X3NlcmlhbF9jb25zb2xlID0gewogCS5pbmRleCA9CS0xLAogfTsKIAorCitzdGF0aWMgc3RydWN0 IGVoY2lfY2FwcyBfX2lvbWVtICplaGNpX2NhcHM7CitzdGF0aWMgc3RydWN0IGVoY2lfcmVncyBf X2lvbWVtICplaGNpX3JlZ3M7CitzdGF0aWMgc3RydWN0IGVoY2lfZGJnX3BvcnQgX19pb21lbSAq ZWhjaV9kZWJ1ZzsKK3N0YXRpYyB1bnNpZ25lZCBkYmdwX2VuZHBvaW50X291dDsKKworI2RlZmlu ZSBVU0JfREVCVUdfREVWTlVNIDEyNworCisjZGVmaW5lIERCR1BfREFUQV9UT0dHTEUJMHg4ODAw CisKK3N0YXRpYyBpbmxpbmUgdTMyIGRiZ3BfcGlkX3VwZGF0ZSh1MzIgeCwgdTMyIHRvaykKK3sK KwlyZXR1cm4gKCgoKHgpIF4gREJHUF9EQVRBX1RPR0dMRSkgJiAweGZmZmYwMCkgfCAoKHRvaykg JiAweGZmKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTMyIGRiZ3BfbGVuX3VwZGF0ZSh1MzIgeCwg dTMyIGxlbikKK3sKKwlyZXR1cm4gKCgoeCkgJiB+MHgwZikgfCAoKGxlbikgJiAweDBmKSk7Cit9 CisKKy8qCisgKiBVU0IgUGFja2V0IElEcyAoUElEcykKKyAqLworCisvKiB0b2tlbiAqLworI2Rl ZmluZSBVU0JfUElEX09VVAkJMHhlMQorI2RlZmluZSBVU0JfUElEX0lOCQkweDY5CisjZGVmaW5l IFVTQl9QSURfU09GCQkweGE1CisjZGVmaW5lIFVTQl9QSURfU0VUVVAJCTB4MmQKKy8qIGhhbmRz aGFrZSAqLworI2RlZmluZSBVU0JfUElEX0FDSwkJMHhkMgorI2RlZmluZSBVU0JfUElEX05BSwkJ MHg1YQorI2RlZmluZSBVU0JfUElEX1NUQUxMCQkweDFlCisjZGVmaW5lIFVTQl9QSURfTllFVAkJ MHg5NgorLyogZGF0YSAqLworI2RlZmluZSBVU0JfUElEX0RBVEEwCQkweGMzCisjZGVmaW5lIFVT Ql9QSURfREFUQTEJCTB4NGIKKyNkZWZpbmUgVVNCX1BJRF9EQVRBMgkJMHg4NworI2RlZmluZSBV U0JfUElEX01EQVRBCQkweDBmCisvKiBTcGVjaWFsICovCisjZGVmaW5lIFVTQl9QSURfUFJFQU1C TEUJMHgzYworI2RlZmluZSBVU0JfUElEX0VSUgkJMHgzYworI2RlZmluZSBVU0JfUElEX1NQTElU CQkweDc4CisjZGVmaW5lIFVTQl9QSURfUElORwkJMHhiNAorI2RlZmluZSBVU0JfUElEX1VOREVG XzAJCTB4ZjAKKworI2RlZmluZSBVU0JfUElEX0RBVEFfVE9HR0xFCTB4ODgKKyNkZWZpbmUgREJH UF9DTEFJTSAoREJHUF9PV05FUiB8IERCR1BfRU5BQkxFRCB8IERCR1BfSU5VU0UpCisKKyNkZWZp bmUgUENJX0NBUF9JRF9FSENJX0RFQlVHCTB4YQorCisjZGVmaW5lIEhVQl9ST09UX1JFU0VUX1RJ TUUJNTAJLyogdGltZXMgYXJlIGluIG1zZWMgKi8KKyNkZWZpbmUgSFVCX1NIT1JUX1JFU0VUX1RJ TUUJMTAKKyNkZWZpbmUgSFVCX0xPTkdfUkVTRVRfVElNRQkyMDAKKyNkZWZpbmUgSFVCX1JFU0VU X1RJTUVPVVQJNTAwCisKKyNkZWZpbmUgREJHUF9NQVhfUEFDS0VUCQk4CisKK3N0YXRpYyBpbnQg ZGJncF93YWl0X3VudGlsX2NvbXBsZXRlKHZvaWQpCit7CisJdW5zaWduZWQgY3RybDsKKwlpbnQg bG9vcCA9IDB4MTAwMDAwOworCisJZG8geworCQljdHJsID0gcmVhZGwoJmVoY2lfZGVidWctPmNv bnRyb2wpOworCQkvKiBTdG9wIHdoZW4gdGhlIHRyYW5zYWN0aW9uIGlzIGZpbmlzaGVkICovCisJ CWlmIChjdHJsICYgREJHUF9ET05FKQorCQkJYnJlYWs7CisJfSB3aGlsZSAoLS1sb29wID4gMCk7 CisKKwlpZiAoIWxvb3ApCisJCXJldHVybiAtMTsKKworCS8qIE5vdyB0aGF0IHdlIGhhdmUgb2Jz ZXJ2ZWQgdGhlIGNvbXBsZXRlZCB0cmFuc2FjdGlvbiwKKwkgKiBjbGVhciB0aGUgZG9uZSBiaXQu CisJICovCisJd3JpdGVsKGN0cmwgfCBEQkdQX0RPTkUsICZlaGNpX2RlYnVnLT5jb250cm9sKTsK KwlyZXR1cm4gKGN0cmwgJiBEQkdQX0VSUk9SKSA/IC1EQkdQX0VSUkNPREUoY3RybCkgOiBEQkdQ X0xFTihjdHJsKTsKK30KKworc3RhdGljIHZvaWQgZGJncF9tZGVsYXkoaW50IG1zKQoreworCWlu dCBpOworCXdoaWxlIChtcy0tKSB7CisJCWZvciAoaSA9IDA7IGkgPCAxMDAwOyBpKyspCisJCQlv dXRiKDB4MSwgMHg4MCk7CisJfQorfQorCitzdGF0aWMgdm9pZCBkYmdwX2JyZWF0aCh2b2lkKQor eworCS8qIFNsZWVwIHRvIGdpdmUgdGhlIGRlYnVnIHBvcnQgYSBjaGFuY2UgdG8gYnJlYXRoZSAq LworfQorCitzdGF0aWMgaW50IGRiZ3Bfd2FpdF91bnRpbF9kb25lKHVuc2lnbmVkIGN0cmwpCit7 CisJdW5zaWduZWQgcGlkcywgbHBpZDsKKwlpbnQgcmV0OworCWludCBsb29wID0gMzsKKworcmV0 cnk6CisJd3JpdGVsKGN0cmwgfCBEQkdQX0dPLCAmZWhjaV9kZWJ1Zy0+Y29udHJvbCk7CisJcmV0 ID0gZGJncF93YWl0X3VudGlsX2NvbXBsZXRlKCk7CisJcGlkcyA9IHJlYWRsKCZlaGNpX2RlYnVn LT5waWRzKTsKKwlscGlkID0gREJHUF9QSURfR0VUKHBpZHMpOworCisJaWYgKHJldCA8IDApCisJ CXJldHVybiByZXQ7CisKKwkvKiBJZiB0aGUgcG9ydCBpcyBnZXR0aW5nIGZ1bGwgb3IgaXQgaGFz IGRyb3BwZWQgZGF0YQorCSAqIHN0YXJ0IHBhY2luZyBvdXJzZWx2ZXMsIG5vdCBuZWNlc3Nhcnkg YnV0IGl0J3MgZnJpZW5kbHkuCisJICovCisJaWYgKChscGlkID09IFVTQl9QSURfTkFLKSB8fCAo bHBpZCA9PSBVU0JfUElEX05ZRVQpKQorCQlkYmdwX2JyZWF0aCgpOworCisJLyogSWYgSSBnZXQg YSBOQUNLIHJlaXNzdWUgdGhlIHRyYW5zbWlzc2lvbiAqLworCWlmIChscGlkID09IFVTQl9QSURf TkFLKSB7CisJCWlmKC0tbG9vcCA+IDApCisJCQlnb3RvIHJldHJ5OworCX0KKworCXJldHVybiBy ZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGRiZ3Bfc2V0X2RhdGEoY29uc3Qgdm9pZCAqYnVmLCBpbnQg c2l6ZSkKK3sKKwljb25zdCB1bnNpZ25lZCBjaGFyICpieXRlcyA9IGJ1ZjsKKwl1bnNpZ25lZCBs bywgaGk7CisJaW50IGk7CisKKwlsbyA9IGhpID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgNCAmJiBp IDwgc2l6ZTsgaSsrKQorCQlsbyB8PSBieXRlc1tpXSA8PCAoOCppKTsKKwlmb3IgKDsgaSA8IDgg JiYgaSA8IHNpemU7IGkrKykKKwkJaGkgfD0gYnl0ZXNbaV0gPDwgKDgqKGkgLSA0KSk7CisJd3Jp dGVsKGxvLCAmZWhjaV9kZWJ1Zy0+ZGF0YTAzKTsKKwl3cml0ZWwoaGksICZlaGNpX2RlYnVnLT5k YXRhNDcpOworfQorCitzdGF0aWMgdm9pZCBkYmdwX2dldF9kYXRhKHZvaWQgKmJ1ZiwgaW50IHNp emUpCit7CisJdW5zaWduZWQgY2hhciAqYnl0ZXMgPSBidWY7CisJdW5zaWduZWQgbG8sIGhpOwor CWludCBpOworCWxvID0gcmVhZGwoJmVoY2lfZGVidWctPmRhdGEwMyk7CisJaGkgPSByZWFkbCgm ZWhjaV9kZWJ1Zy0+ZGF0YTQ3KTsKKwlmb3IgKGkgPSAwOyBpIDwgNCAmJiBpIDwgc2l6ZTsgaSsr KQorCQlieXRlc1tpXSA9IChsbyA+PiAoOCppKSkgJiAweGZmOworCWZvciAoOyBpIDwgOCAmJiBp IDwgc2l6ZTsgaSsrKQorCQlieXRlc1tpXSA9IChoaSA+PiAoOCooaSAtIDQpKSkgJiAweGZmOwor fQorCitzdGF0aWMgaW50IGRiZ3BfYnVsa193cml0ZSh1bnNpZ25lZCBkZXZudW0sIHVuc2lnbmVk IGVuZHBvaW50LAorCQkJIGNvbnN0IGNoYXIgKmJ5dGVzLCBpbnQgc2l6ZSkKK3sKKwl1bnNpZ25l ZCBwaWRzLCBhZGRyLCBjdHJsOworCWludCByZXQ7CisJaWYgKHNpemUgPiBEQkdQX01BWF9QQUNL RVQpCisJCXJldHVybiAtMTsKKworCWFkZHIgPSBEQkdQX0VQQUREUihkZXZudW0sIGVuZHBvaW50 KTsKKworCXBpZHMgPSByZWFkbCgmZWhjaV9kZWJ1Zy0+cGlkcyk7CisJcGlkcyA9IGRiZ3BfcGlk X3VwZGF0ZShwaWRzLCBVU0JfUElEX09VVCk7CisKKwljdHJsID0gcmVhZGwoJmVoY2lfZGVidWct PmNvbnRyb2wpOworCWN0cmwgPSBkYmdwX2xlbl91cGRhdGUoY3RybCwgc2l6ZSk7CisJY3RybCB8 PSBEQkdQX09VVDsKKwljdHJsIHw9IERCR1BfR087CisKKwlkYmdwX3NldF9kYXRhKGJ5dGVzLCBz aXplKTsKKwl3cml0ZWwoYWRkciwgJmVoY2lfZGVidWctPmFkZHJlc3MpOworCXdyaXRlbChwaWRz LCAmZWhjaV9kZWJ1Zy0+cGlkcyk7CisKKwlyZXQgPSBkYmdwX3dhaXRfdW50aWxfZG9uZShjdHJs KTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVybiByZXQ7Cit9CisKK3N0 YXRpYyBpbnQgZGJncF9idWxrX3JlYWQodW5zaWduZWQgZGV2bnVtLCB1bnNpZ25lZCBlbmRwb2lu dCwgdm9pZCAqZGF0YSwgaW50IHNpemUpCit7CisJdW5zaWduZWQgcGlkcywgYWRkciwgY3RybDsK KwlpbnQgcmV0OworCisJaWYgKHNpemUgPiBEQkdQX01BWF9QQUNLRVQpCisJCXJldHVybiAtMTsK KworCWFkZHIgPSBEQkdQX0VQQUREUihkZXZudW0sIGVuZHBvaW50KTsKKworCXBpZHMgPSByZWFk bCgmZWhjaV9kZWJ1Zy0+cGlkcyk7CisJcGlkcyA9IGRiZ3BfcGlkX3VwZGF0ZShwaWRzLCBVU0Jf UElEX0lOKTsKKworCWN0cmwgPSByZWFkbCgmZWhjaV9kZWJ1Zy0+Y29udHJvbCk7CisJY3RybCA9 IGRiZ3BfbGVuX3VwZGF0ZShjdHJsLCBzaXplKTsKKwljdHJsICY9IH5EQkdQX09VVDsKKwljdHJs IHw9IERCR1BfR087CisKKwl3cml0ZWwoYWRkciwgJmVoY2lfZGVidWctPmFkZHJlc3MpOworCXdy aXRlbChwaWRzLCAmZWhjaV9kZWJ1Zy0+cGlkcyk7CisJcmV0ID0gZGJncF93YWl0X3VudGlsX2Rv bmUoY3RybCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisJaWYgKHNpemUgPiByZXQp CisJCXNpemUgPSByZXQ7CisJZGJncF9nZXRfZGF0YShkYXRhLCBzaXplKTsKKwlyZXR1cm4gcmV0 OworfQorCitzdGF0aWMgaW50IGRiZ3BfY29udHJvbF9tc2codW5zaWduZWQgZGV2bnVtLCBpbnQg cmVxdWVzdHR5cGUsIGludCByZXF1ZXN0LAorCWludCB2YWx1ZSwgaW50IGluZGV4LCB2b2lkICpk YXRhLCBpbnQgc2l6ZSkKK3sKKwl1bnNpZ25lZCBwaWRzLCBhZGRyLCBjdHJsOworCXN0cnVjdCB1 c2JfY3RybHJlcXVlc3QgcmVxOworCWludCByZWFkOworCWludCByZXQ7CisKKwlyZWFkID0gKHJl cXVlc3R0eXBlICYgVVNCX0RJUl9JTikgIT0gMDsKKwlpZiAoc2l6ZSA+IChyZWFkID8gREJHUF9N QVhfUEFDS0VUOjApKQorCQlyZXR1cm4gLTE7CisKKwkvKiBDb21wdXRlIHRoZSBjb250cm9sIG1l c3NhZ2UgKi8KKwlyZXEuYlJlcXVlc3RUeXBlID0gcmVxdWVzdHR5cGU7CisJcmVxLmJSZXF1ZXN0 ID0gcmVxdWVzdDsKKwlyZXEud1ZhbHVlID0gdmFsdWU7CisJcmVxLndJbmRleCA9IGluZGV4Owor CXJlcS53TGVuZ3RoID0gc2l6ZTsKKworCXBpZHMgPSBEQkdQX1BJRF9TRVQoVVNCX1BJRF9EQVRB MCwgVVNCX1BJRF9TRVRVUCk7CisJYWRkciA9IERCR1BfRVBBRERSKGRldm51bSwgMCk7CisKKwlj dHJsID0gcmVhZGwoJmVoY2lfZGVidWctPmNvbnRyb2wpOworCWN0cmwgPSBkYmdwX2xlbl91cGRh dGUoY3RybCwgc2l6ZW9mKHJlcSkpOworCWN0cmwgfD0gREJHUF9PVVQ7CisJY3RybCB8PSBEQkdQ X0dPOworCisJLyogU2VuZCB0aGUgc2V0dXAgbWVzc2FnZSAqLworCWRiZ3Bfc2V0X2RhdGEoJnJl cSwgc2l6ZW9mKHJlcSkpOworCXdyaXRlbChhZGRyLCAmZWhjaV9kZWJ1Zy0+YWRkcmVzcyk7CisJ d3JpdGVsKHBpZHMsICZlaGNpX2RlYnVnLT5waWRzKTsKKwlyZXQgPSBkYmdwX3dhaXRfdW50aWxf ZG9uZShjdHJsKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCS8qIFJlYWQgdGhl IHJlc3VsdCAqLworCXJldCA9IGRiZ3BfYnVsa19yZWFkKGRldm51bSwgMCwgZGF0YSwgc2l6ZSk7 CisJcmV0dXJuIHJldDsKK30KKworCisvKiBGaW5kIGEgUENJIGNhcGFiaWxpdHkgKi8KK3N0YXRp YyBfX3UzMiBfX2luaXQgZmluZF9jYXAoaW50IG51bSwgaW50IHNsb3QsIGludCBmdW5jLCBpbnQg Y2FwKQoreworCXU4IHBvczsKKwlpbnQgYnl0ZXM7CisJaWYgKCEocmVhZF9wY2lfY29uZmlnXzE2 KG51bSxzbG90LGZ1bmMsUENJX1NUQVRVUykgJiBQQ0lfU1RBVFVTX0NBUF9MSVNUKSkKKwkJcmV0 dXJuIDA7CisJcG9zID0gcmVhZF9wY2lfY29uZmlnX2J5dGUobnVtLHNsb3QsZnVuYyxQQ0lfQ0FQ QUJJTElUWV9MSVNUKTsKKwlmb3IgKGJ5dGVzID0gMDsgYnl0ZXMgPCA0OCAmJiBwb3MgPj0gMHg0 MDsgYnl0ZXMrKykgeworCQl1OCBpZDsKKwkJcG9zICY9IH4zOworCQlpZCA9IHJlYWRfcGNpX2Nv bmZpZ19ieXRlKG51bSxzbG90LGZ1bmMscG9zK1BDSV9DQVBfTElTVF9JRCk7CisJCWlmIChpZCA9 PSAweGZmKQorCQkJYnJlYWs7CisJCWlmIChpZCA9PSBjYXApCisJCQlyZXR1cm4gcG9zOworCQlw b3MgPSByZWFkX3BjaV9jb25maWdfYnl0ZShudW0sc2xvdCxmdW5jLHBvcytQQ0lfQ0FQX0xJU1Rf TkVYVCk7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgX191MzIgX19pbml0IGZpbmRfZGJn cChpbnQgZWhjaV9udW0sIHVuc2lnbmVkICpyYnVzLCB1bnNpZ25lZCAqcnNsb3QsIHVuc2lnbmVk ICpyZnVuYykKK3sKKwl1bnNpZ25lZCBidXMsIHNsb3QsIGZ1bmM7CisKKwlmb3IgKGJ1cyA9IDA7 IGJ1cyA8IDI1NjsgYnVzKyspIHsKKwkJZm9yIChzbG90ID0gMDsgc2xvdCA8IDMyOyBzbG90Kysp IHsKKwkJCWZvciAoZnVuYyA9IDA7IGZ1bmMgPCA4OyBmdW5jKyspIHsKKwkJCQl1MzIgY2xhc3M7 CisJCQkJdW5zaWduZWQgY2FwOworCQkJCWNsYXNzID0gcmVhZF9wY2lfY29uZmlnKGJ1cywgc2xv dCwgZnVuYywgUENJX0NMQVNTX1JFVklTSU9OKTsKKwkJCQlpZiAoKGNsYXNzID4+IDgpICE9IFBD SV9DTEFTU19TRVJJQUxfVVNCX0VIQ0kpCisJCQkJCWNvbnRpbnVlOworCQkJCWNhcCA9IGZpbmRf Y2FwKGJ1cywgc2xvdCwgZnVuYywgUENJX0NBUF9JRF9FSENJX0RFQlVHKTsKKwkJCQlpZiAoIWNh cCkKKwkJCQkJY29udGludWU7CisJCQkJaWYgKGVoY2lfbnVtLS0gIT0gMCkKKwkJCQkJY29udGlu dWU7CisJCQkJKnJidXMgPSBidXM7CisJCQkJKnJzbG90ID0gc2xvdDsKKwkJCQkqcmZ1bmMgPSBm dW5jOworCQkJCXJldHVybiBjYXA7CisJCQl9CisJCX0KKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgZWhjaV9yZXNldF9wb3J0KGludCBwb3J0KQoreworCXVuc2lnbmVkIHBvcnRzYzsK Kwl1bnNpZ25lZCBkZWxheV90aW1lLCBkZWxheTsKKwlpbnQgbG9vcDsKKworCS8qIFJlc2V0IHRo ZSB1c2IgZGVidWcgcG9ydCAqLworCXBvcnRzYyA9IHJlYWRsKCZlaGNpX3JlZ3MtPnBvcnRfc3Rh dHVzW3BvcnQgLSAxXSk7CisJcG9ydHNjICY9IH5QT1JUX1BFOworCXBvcnRzYyB8PSBQT1JUX1JF U0VUOworCXdyaXRlbChwb3J0c2MsICZlaGNpX3JlZ3MtPnBvcnRfc3RhdHVzW3BvcnQgLSAxXSk7 CisKKwlkZWxheSA9IEhVQl9ST09UX1JFU0VUX1RJTUU7CisJZm9yIChkZWxheV90aW1lID0gMDsg ZGVsYXlfdGltZSA8IEhVQl9SRVNFVF9USU1FT1VUOworCSAgICAgZGVsYXlfdGltZSArPSBkZWxh eSkgeworCQlkYmdwX21kZWxheShkZWxheSk7CisKKwkJcG9ydHNjID0gcmVhZGwoJmVoY2lfcmVn cy0+cG9ydF9zdGF0dXNbcG9ydCAtIDFdKTsKKwkJaWYgKHBvcnRzYyAmIFBPUlRfUkVTRVQpIHsK KwkJCS8qIGZvcmNlIHJlc2V0IHRvIGNvbXBsZXRlICovCisJCQlsb29wID0gMjsKKwkJCXdyaXRl bChwb3J0c2MgJiB+KFBPUlRfUldDX0JJVFMgfCBQT1JUX1JFU0VUKSwKKwkJCQkmZWhjaV9yZWdz LT5wb3J0X3N0YXR1c1twb3J0IC0gMV0pOworCQkJZG8geworCQkJCXBvcnRzYyA9IHJlYWRsKCZl aGNpX3JlZ3MtPnBvcnRfc3RhdHVzW3BvcnQgLSAxXSk7CisJCQl9IHdoaWxlICgocG9ydHNjICYg UE9SVF9SRVNFVCkgJiYgKC0tbG9vcCA+IDApKTsKKwkJfQorCisJCS8qIERldmljZSB3ZW50IGF3 YXk/ICovCisJCWlmICghKHBvcnRzYyAmIFBPUlRfQ09OTkVDVCkpCisJCQlyZXR1cm4gLUVOT1RD T05OOworCisJCS8qIGJvbWIgb3V0IGNvbXBsZXRlbHkgaWYgc29tZXRoaW5nIHdlaXJkIGhhcHBl bmQgKi8KKwkJaWYgKChwb3J0c2MgJiBQT1JUX0NTQykpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwor CQkvKiBJZiB3ZSd2ZSBmaW5pc2hlZCByZXNldHRpbmcsIHRoZW4gYnJlYWsgb3V0IG9mIHRoZSBs b29wICovCisJCWlmICghKHBvcnRzYyAmIFBPUlRfUkVTRVQpICYmIChwb3J0c2MgJiBQT1JUX1BF KSkKKwkJCXJldHVybiAwOworCX0KKwlyZXR1cm4gLUVCVVNZOworfQorCitzdGF0aWMgaW50IGVo Y2lfd2FpdF9mb3JfcG9ydChpbnQgcG9ydCkKK3sKKwl1bnNpZ25lZCBzdGF0dXM7CisJaW50IHJl dCwgcmVwczsKKworCWZvciAocmVwcyA9IDA7IHJlcHMgPCAzOyByZXBzKyspIHsKKwkJZGJncF9t ZGVsYXkoMTAwKTsKKwkJc3RhdHVzID0gcmVhZGwoJmVoY2lfcmVncy0+c3RhdHVzKTsKKwkJaWYg KHN0YXR1cyAmIFNUU19QQ0QpIHsKKwkJCXJldCA9IGVoY2lfcmVzZXRfcG9ydChwb3J0KTsKKwkJ CWlmIChyZXQgPT0gMCkKKwkJCQlyZXR1cm4gMDsKKwkJfQorCX0KKwlyZXR1cm4gLUVOT1RDT05O OworfQorCisKKyNkZWZpbmUgREJHUF9ERUJVRyAwCisjaWYgREJHUF9ERUJVRwordm9pZCBlYXJs eV9wcmludGsoY29uc3QgY2hhciAqZm10LCAuLi4pOworIyBkZWZpbmUgZGJncF9wcmludGsgZWFy bHlfcHJpbnRrCisjZWxzZQorc3RhdGljIGlubGluZSB2b2lkIGRiZ3BfcHJpbnRrKGNvbnN0IGNo YXIgKmZtdCwgLi4uKSB7IH0KKyNlbmRpZgorCitzdGF0aWMgaW50IGVoY2lfc2V0dXAodm9pZCkK K3sKKwl1bnNpZ25lZCBjbWQsIGN0cmwsIHN0YXR1cywgcG9ydHNjLCBoY3NfcGFyYW1zLCBkZWJ1 Z19wb3J0LCBuX3BvcnRzOworCWludCByZXQ7CisJaW50IGxvb3A7CisKKwloY3NfcGFyYW1zID0g cmVhZGwoJmVoY2lfY2Fwcy0+aGNzX3BhcmFtcyk7CisJZGVidWdfcG9ydCA9IEhDU19ERUJVR19Q T1JUKGhjc19wYXJhbXMpOworCW5fcG9ydHMgICAgPSBIQ1NfTl9QT1JUUyhoY3NfcGFyYW1zKTsK KworCWRiZ3BfcHJpbnRrKCJkZWJ1Z19wb3J0OiAlZFxuIiwgZGVidWdfcG9ydCk7CisJZGJncF9w cmludGsoIm5fcG9ydHM6ICAgICVkXG4iLCBuX3BvcnRzKTsKKworCWxvb3AgPSAxMDsKKwkvKiBS ZXNldCB0aGUgRUhDSSBjb250cm9sbGVyICovCisJY21kID0gcmVhZGwoJmVoY2lfcmVncy0+Y29t bWFuZCk7CisJY21kIHw9IENNRF9SRVNFVDsKKwl3cml0ZWwoY21kLCAmZWhjaV9yZWdzLT5jb21t YW5kKTsKKwlkbyB7CisJCWNtZCA9IHJlYWRsKCZlaGNpX3JlZ3MtPmNvbW1hbmQpOworCX0gd2hp bGUgKChjbWQgJiBDTURfUkVTRVQpICYmICgtLWxvb3AgPiAwKSk7CisKKwkvKiBDbGFpbSBvd25l cnNoaXAsIGJ1dCBkbyBub3QgZW5hYmxlIHlldCAqLworCWN0cmwgPSByZWFkbCgmZWhjaV9kZWJ1 Zy0+Y29udHJvbCk7CisJY3RybCB8PSBEQkdQX09XTkVSOworCWN0cmwgJj0gfihEQkdQX0VOQUJM RUQgfCBEQkdQX0lOVVNFKTsKKwl3cml0ZWwoY3RybCwgJmVoY2lfZGVidWctPmNvbnRyb2wpOwor CisJLyogU3RhcnQgdGhlIGVoY2kgcnVubmluZyAqLworCWNtZCA9IHJlYWRsKCZlaGNpX3JlZ3Mt PmNvbW1hbmQpOworCWNtZCAmPSB+KENNRF9MUkVTRVQgfCBDTURfSUFBRCB8IENNRF9QU0UgfCBD TURfQVNFIHwgQ01EX1JFU0VUKTsKKwljbWQgfD0gQ01EX1JVTjsKKwl3cml0ZWwoY21kLCAmZWhj aV9yZWdzLT5jb21tYW5kKTsKKworCS8qIEVuc3VyZSBldmVyeXRoaW5nIGlzIHJvdXRlZCB0byB0 aGUgRUhDSSAqLworCXdyaXRlbChGTEFHX0NGLCAmZWhjaV9yZWdzLT5jb25maWd1cmVkX2ZsYWcp OworCisJLyogV2FpdCB1bnRpbCB0aGUgY29udHJvbGxlciBpcyBubyBsb25nZXIgaGFsdGVkICov CisJbG9vcCA9IDEwOworCWRvIHsKKwkJc3RhdHVzID0gcmVhZGwoJmVoY2lfcmVncy0+c3RhdHVz KTsKKwl9IHdoaWxlICgoc3RhdHVzICYgU1RTX0hBTFQpICYmICgtLWxvb3AgPiAwKSk7CisKKwkv KiBXYWl0IGZvciBhIGRldmljZSB0byBzaG93IHVwIGluIHRoZSBkZWJ1ZyBwb3J0ICovCisJcmV0 ID0gZWhjaV93YWl0X2Zvcl9wb3J0KGRlYnVnX3BvcnQpOworCWlmIChyZXQgPCAwKSB7CisJCWRi Z3BfcHJpbnRrKCJObyBkZXZpY2UgZm91bmQgaW4gZGVidWcgcG9ydFxuIik7CisJCXJldHVybiAt MTsKKwl9CisKKwkvKiBFbmFibGUgdGhlIGRlYnVnIHBvcnQgKi8KKwljdHJsID0gcmVhZGwoJmVo Y2lfZGVidWctPmNvbnRyb2wpOworCWN0cmwgfD0gREJHUF9DTEFJTTsKKwl3cml0ZWwoY3RybCwg JmVoY2lfZGVidWctPmNvbnRyb2wpOworCWN0cmwgPSByZWFkbCgmZWhjaV9kZWJ1Zy0+Y29udHJv bCk7CisJaWYgKChjdHJsICYgREJHUF9DTEFJTSkgIT0gREJHUF9DTEFJTSkgeworCQlkYmdwX3By aW50aygiTm8gZGV2aWNlIGluIGRlYnVnIHBvcnRcbiIpOworCQl3cml0ZWwoY3RybCAmIH5EQkdQ X0NMQUlNLCAmZWhjaV9kZWJ1Zy0+Y29udHJvbCk7CisJCXJldHVybiAtMTsKKworCX0KKworCS8q IENvbXBsZXRlbHkgdHJhbnNmZXIgdGhlIGRlYnVnIGRldmljZSB0byB0aGUgZGVidWcgY29udHJv bGxlciAqLworCXBvcnRzYyA9IHJlYWRsKCZlaGNpX3JlZ3MtPnBvcnRfc3RhdHVzW2RlYnVnX3Bv cnQgLSAxXSk7CisJcG9ydHNjICY9IH5QT1JUX1BFOworCXdyaXRlbChwb3J0c2MsICZlaGNpX3Jl Z3MtPnBvcnRfc3RhdHVzW2RlYnVnX3BvcnQgLSAxXSk7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGludCBfX2luaXQgZWFybHlfZGJncF9pbml0KGNoYXIgKnMpCit7CisJc3RydWN0IHVzYl9k ZWJ1Z19kZXNjcmlwdG9yIGRiZ3BfZGVzYzsKKwl2b2lkIF9faW9tZW0gKmVoY2lfYmFyOworCXVu c2lnbmVkIGN0cmwsIGRldm51bTsKKwl1bnNpZ25lZCBidXMsIHNsb3QsIGZ1bmMsIGNhcDsKKwl1 bnNpZ25lZCBkZWJ1Z19wb3J0LCBiYXIsIG9mZnNldDsKKwl1bnNpZ25lZCBiYXJfdmFsOworCWNo YXIgKmU7CisJaW50IHJldDsKKwl1bnNpZ25lZCBkYmdwX251bTsKKworCWlmICghZWFybHlfcGNp X2FsbG93ZWQoKSkKKwkJcmV0dXJuIC0xOworCisJZGJncF9udW0gPSAwOworCWlmICgqcykgewor CQlkYmdwX251bSA9IHNpbXBsZV9zdHJ0b3VsKHMsICZlLCAxMCk7CisJfQorCWRiZ3BfcHJpbnRr KCJkYmdwX251bTogJWRcbiIsIGRiZ3BfbnVtKTsKKwljYXAgPSBmaW5kX2RiZ3AoZGJncF9udW0s ICZidXMsICZzbG90LCAmZnVuYyk7CisJaWYgKCFjYXApCisJCXJldHVybiAtMTsKKworCWRiZ3Bf cHJpbnRrKCJGb3VuZCBFSENJIGRlYnVnIHBvcnRcbiIpOworCisJZGVidWdfcG9ydCA9IHJlYWRf cGNpX2NvbmZpZyhidXMsIHNsb3QsIGZ1bmMsIGNhcCk7CisJYmFyID0gKGRlYnVnX3BvcnQgPj4g MjkpICYgMHg3OworCWJhciA9IChiYXIgKiA0KSArIDB4YzsKKwlvZmZzZXQgPSAoZGVidWdfcG9y dCA+PiAxNikgJiAweGZmZjsKKwlkYmdwX3ByaW50aygiYmFyOiAlMDJ4IG9mZnNldDogJTAzeFxu IiwgYmFyLCBvZmZzZXQpOworCWlmIChiYXIgIT0gUENJX0JBU0VfQUREUkVTU18wKSB7CisJCWRi Z3BfcHJpbnRrKCJvbmx5IGRlYnVnIHBvcnRzIG9uIGJhciAxIGhhbmRsZWQuXG4iKTsKKwkJcmV0 dXJuIC0xOworCX0KKworCWJhcl92YWwgPSByZWFkX3BjaV9jb25maWcoYnVzLCBzbG90LCBmdW5j LCBQQ0lfQkFTRV9BRERSRVNTXzApOworCWRiZ3BfcHJpbnRrKCJiYXJfdmFsOiAlMDJ4IG9mZnNl dDogJTAzeFxuIiwgYmFyX3ZhbCwgb2Zmc2V0KTsKKwlpZiAoYmFyX3ZhbCAmIH5QQ0lfQkFTRV9B RERSRVNTX01FTV9NQVNLKSB7CisJCWRiZ3BfcHJpbnRrKCJvbmx5IHNpbXBsZSAzMmJpdCBtbWlv IGJhcnMgc3VwcG9ydGVkXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKworCisJLyogRklYTUUgSSBk b24ndCBoYXZlIHRoZSBiYXIgc2l6ZSBzbyBqdXN0IGd1ZXNzIFBBR0VfU0laRSBpcyBtb3JlCisJ ICogdGhhbiBlbm91Z2guICAxSyBpcyB0aGUgYmlnZ2VzdCBJIGhhdmUgc2Vlbi4KKwkgKi8KKwlk YmdwX3ByaW50aygiZGJncCBwcmUtc2V0X2ZpeG1hcF9ub2NhY2hlXG4iKTsKKwlzZXRfZml4bWFw X25vY2FjaGUoRklYX0RCR1BfQkFTRSwgYmFyX3ZhbCAmIFBBR0VfTUFTSyk7CisJZGJncF9wcmlu dGsoImRiZ3AgcG9zdC1zZXRfZml4bWFwX25vY2FjaGVcbiIpOworCWVoY2lfYmFyID0gKHZvaWQg X19pb21lbSAqKV9fZml4X3RvX3ZpcnQoRklYX0RCR1BfQkFTRSk7CisJZWhjaV9iYXIgKz0gYmFy X3ZhbCAmIH5QQUdFX01BU0s7CisJZGJncF9wcmludGsoImVoY2lfYmFyOiAlcFxuIiwgZWhjaV9i YXIpOworCisJZWhjaV9jYXBzICA9IGVoY2lfYmFyOworCWVoY2lfcmVncyAgPSBlaGNpX2JhciAr IEhDX0xFTkdUSChyZWFkbCgmZWhjaV9jYXBzLT5oY19jYXBiYXNlKSk7CisJZWhjaV9kZWJ1ZyA9 IGVoY2lfYmFyICsgb2Zmc2V0OworCisJcmV0ID0gZWhjaV9zZXR1cCgpOworCWlmIChyZXQgPCAw KSB7CisJCWRiZ3BfcHJpbnRrKCJlaGNpX3NldHVwIGZhaWxlZFxuIik7CisJCWVoY2lfZGVidWcg PSAwOworCQlyZXR1cm4gLTE7CisJfQorCWRiZ3BfbWRlbGF5KDEwMCk7CisKKwkvKiBGaW5kIHRo ZSBkZWJ1ZyBkZXZpY2UgYW5kIG1ha2UgaXQgZGV2aWNlIG51bWJlciAxMjcgKi8KKwlmb3IgKGRl dm51bSA9IDA7IGRldm51bSA8PSAxMjc7IGRldm51bSsrKSB7CisJCXJldCA9IGRiZ3BfY29udHJv bF9tc2coZGV2bnVtLAorCQkJVVNCX0RJUl9JTiB8IFVTQl9UWVBFX1NUQU5EQVJEIHwgVVNCX1JF Q0lQX0RFVklDRSwKKwkJCVVTQl9SRVFfR0VUX0RFU0NSSVBUT1IsIChVU0JfRFRfREVCVUcgPDwg OCksIDAsCisJCQkmZGJncF9kZXNjLCBzaXplb2YoZGJncF9kZXNjKSk7CisJCWlmIChyZXQgPiAw KQorCQkJYnJlYWs7CisJfQorCWlmIChkZXZudW0gPiAxMjcpIHsKKwkJZGJncF9wcmludGsoIkNv dWxkIG5vdCBmaW5kIGF0dGFjaGVkIGRlYnVnIGRldmljZVxuIik7CisJCWdvdG8gZXJyOworCX0K KwlpZiAocmV0IDwgMCkgeworCQlkYmdwX3ByaW50aygiQXR0YWNoZWQgZGV2aWNlIGlzIG5vdCBh IGRlYnVnIGRldmljZVxuIik7CisJCWdvdG8gZXJyOworCX0KKwlkYmdwX2VuZHBvaW50X291dCA9 IGRiZ3BfZGVzYy5iRGVidWdPdXRFbmRwb2ludDsKKworCS8qIE1vdmUgdGhlIGRldmljZSB0byAx MjcgaWYgaXQgaXNuJ3QgYWxyZWFkeSB0aGVyZSAqLworCWlmIChkZXZudW0gIT0gVVNCX0RFQlVH X0RFVk5VTSkgeworCQlyZXQgPSBkYmdwX2NvbnRyb2xfbXNnKGRldm51bSwKKwkJCVVTQl9ESVJf T1VUIHwgVVNCX1RZUEVfU1RBTkRBUkQgfCBVU0JfUkVDSVBfREVWSUNFLAorCQkJVVNCX1JFUV9T RVRfQUREUkVTUywgVVNCX0RFQlVHX0RFVk5VTSwgMCwgTlVMTCwgMCk7CisJCWlmIChyZXQgPCAw KSB7CisJCQlkYmdwX3ByaW50aygiQ291bGQgbm90IG1vdmUgYXR0YWNoZWQgZGV2aWNlIHRvICVk XG4iLAorCQkJCVVTQl9ERUJVR19ERVZOVU0pOworCQkJZ290byBlcnI7CisJCX0KKwkJZGV2bnVt ID0gVVNCX0RFQlVHX0RFVk5VTTsKKwl9CisKKwkvKiBFbmFibGUgdGhlIGRlYnVnIGludGVyZmFj ZSAqLworCXJldCA9IGRiZ3BfY29udHJvbF9tc2coVVNCX0RFQlVHX0RFVk5VTSwKKwkJVVNCX0RJ Ul9PVVQgfCBVU0JfVFlQRV9TVEFOREFSRCB8IFVTQl9SRUNJUF9ERVZJQ0UsCisJCVVTQl9SRVFf U0VUX0ZFQVRVUkUsIFVTQl9ERVZJQ0VfREVCVUdfTU9ERSwgMCwgTlVMTCwgMCk7CisJaWYgKHJl dCA8IDApIHsKKwkJZGJncF9wcmludGsoIiBDb3VsZCBub3QgZW5hYmxlIHRoZSBkZWJ1ZyBkZXZp Y2VcbiIpOworCQlnb3RvIGVycjsKKwl9CisKKwkvKiBQZXJmb3JtIGEgc21hbGwgd3JpdGUgdG8g Z2V0IHRoZSBldmVuL29kZCBkYXRhIHN0YXRlIGluIHN5bmMKKwkgKi8KKwlyZXQgPSBkYmdwX2J1 bGtfd3JpdGUoVVNCX0RFQlVHX0RFVk5VTSwgZGJncF9lbmRwb2ludF9vdXQsICIgIiwxKTsKKwlp ZiAocmV0IDwgMCkgeworCQlkYmdwX3ByaW50aygiZGJncF9idWxrX3dyaXRlIGZhaWxlZDogJWRc biIsIHJldCk7CisJCWdvdG8gZXJyOworCX0KKworCisJcmV0dXJuIDA7CitlcnI6CisJLyogVGhp bmdzIGRpZG4ndCB3b3JrIHNvIHJlbW92ZSBteSBjbGFpbSAqLworCWN0cmwgPSByZWFkbCgmZWhj aV9kZWJ1Zy0+Y29udHJvbCk7CisJY3RybCAmPSB+KERCR1BfQ0xBSU0gfCBEQkdQX09VVCk7CisJ d3JpdGVsKGN0cmwsICZlaGNpX2RlYnVnLT5jb250cm9sKTsKKwllaGNpX2RlYnVnID0gMDsKKwor CXJldHVybiAtMTsKK30KKworc3RhdGljIHZvaWQgZWFybHlfZGJncF93cml0ZShzdHJ1Y3QgY29u c29sZSAqY29uLCBjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIG4pCit7CisJaW50IGNodW5rLCBy ZXQ7CisJaWYgKCFlaGNpX2RlYnVnKQorCQlyZXR1cm47CisJd2hpbGUgKG4gPiAwKSB7CisJCWNo dW5rID0gbjsKKwkJaWYgKGNodW5rID4gREJHUF9NQVhfUEFDS0VUKQorCQkJY2h1bmsgPSBEQkdQ X01BWF9QQUNLRVQ7CisJCXJldCA9IGRiZ3BfYnVsa193cml0ZShVU0JfREVCVUdfREVWTlVNLAor CQkJZGJncF9lbmRwb2ludF9vdXQsIHN0ciwgY2h1bmspOworCQlzdHIgKz0gY2h1bms7CisJCW4g LT0gY2h1bms7CisJfQorfQorCitzdGF0aWMgc3RydWN0IGNvbnNvbGUgZWFybHlfZGJncF9jb25z b2xlID0geworCS5uYW1lID0JCSJlYXJseWRiZyIsCisJLndyaXRlID0JZWFybHlfZGJncF93cml0 ZSwKKwkuZmxhZ3MgPQlDT05fUFJJTlRCVUZGRVIsCisJLmluZGV4ID0JLTEsCit9OworCiAvKiBD b25zb2xlIGludGVyZmFjZSB0byBhIGhvc3QgZmlsZSBvbiBBTUQncyBTaW1Ob3chICovCiAKIHN0 YXRpYyBpbnQgc2ltbm93X2ZkOwpAQCAtMjEzLDEwICs4MTAsMTEgQEAgdm9pZCBlYXJseV9wcmlu dGsoY29uc3QgY2hhciAqZm10LCAuLi4pCiAJdmFfZW5kKGFwKTsKIH0KIAotc3RhdGljIGludCBf X2luaXRkYXRhIGtlZXBfZWFybHk7CiAKIHN0YXRpYyBpbnQgX19pbml0IHNldHVwX2Vhcmx5X3By aW50ayhjaGFyICpidWYpCiB7CisJaW50IGtlZXBfZWFybHk7CisKIAlpZiAoIWJ1ZikKIAkJcmV0 dXJuIDA7CiAKQEAgLTIyNCw4ICs4MjIsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBzZXR1cF9lYXJs eV9wcmludGsoY2hhciAqYnVmKQogCQlyZXR1cm4gMDsKIAllYXJseV9jb25zb2xlX2luaXRpYWxp emVkID0gMTsKIAotCWlmIChzdHJzdHIoYnVmLCAia2VlcCIpKQotCQlrZWVwX2Vhcmx5ID0gMTsK KwlrZWVwX2Vhcmx5ID0gKHN0cnN0cihidWYsICJrZWVwIikgIT0gTlVMTCk7CiAKIAlpZiAoIXN0 cm5jbXAoYnVmLCAic2VyaWFsIiwgNikpIHsKIAkJZWFybHlfc2VyaWFsX2luaXQoYnVmICsgNik7 CkBAIC0yMzksMTAgKzgzNiwxNCBAQCBzdGF0aWMgaW50IF9faW5pdCBzZXR1cF9lYXJseV9wcmlu dGsoY2hhciAqYnVmKQogCQltYXhfeXBvcyA9IFNDUkVFTl9JTkZPLm9yaWdfdmlkZW9fbGluZXM7 CiAJCWN1cnJlbnRfeXBvcyA9IFNDUkVFTl9JTkZPLm9yaWdfeTsKIAkJZWFybHlfY29uc29sZSA9 ICZlYXJseV92Z2FfY29uc29sZTsKLSAJfSBlbHNlIGlmICghc3RybmNtcChidWYsICJzaW1ub3ci LCA2KSkgewotIAkJc2ltbm93X2luaXQoYnVmICsgNik7Ci0gCQllYXJseV9jb25zb2xlID0gJnNp bW5vd19jb25zb2xlOwotIAkJa2VlcF9lYXJseSA9IDE7CisJfSBlbHNlIGlmICghc3RybmNtcChi dWYsICJzaW1ub3ciLCA2KSkgeworCQlzaW1ub3dfaW5pdChidWYgKyA2KTsKKwkJZWFybHlfY29u c29sZSA9ICZzaW1ub3dfY29uc29sZTsKKwkJa2VlcF9lYXJseSA9IDE7CisJfSBlbHNlIGlmICgh c3RybmNtcChidWYsICJkYmdwIiwgNCkpIHsKKwkJaWYgKGVhcmx5X2RiZ3BfaW5pdChidWYrNCkg PCAwKQorCQkJcmV0dXJuIDA7CisJCWVhcmx5X2NvbnNvbGUgPSAmZWFybHlfZGJncF9jb25zb2xl OwogI2lmZGVmIENPTkZJR19IVkNfWEVOCiAJfSBlbHNlIGlmICghc3RybmNtcChidWYsICJ4ZW4i LCAzKSkgewogCQllYXJseV9jb25zb2xlID0gJnhlbmJvb3RfY29uc29sZTsKQEAgLTI1Niw0ICs4 NTcsMTcgQEAgc3RhdGljIGludCBfX2luaXQgc2V0dXBfZWFybHlfcHJpbnRrKGNoYXIgKmJ1ZikK IAlyZWdpc3Rlcl9jb25zb2xlKGVhcmx5X2NvbnNvbGUpOwogCXJldHVybiAwOwogfQorCit2b2lk IF9faW5pdCBlbmFibGVfZGVidWdfY29uc29sZShjaGFyICpidWYpCit7CisjaWYgREJHUF9ERUJV RworCWlmKGVhcmx5X2NvbnNvbGVfaW5pdGlhbGl6ZWQgJiYgZWFybHlfY29uc29sZSkgeworCQl1 bnJlZ2lzdGVyX2NvbnNvbGUoZWFybHlfY29uc29sZSk7CisJCWVhcmx5X2NvbnNvbGVfaW5pdGlh bGl6ZWQgPSAwOworCX0KKworCXNldHVwX2Vhcmx5X3ByaW50ayhidWYpOworI2VuZGlmCit9CisK IGVhcmx5X3BhcmFtKCJlYXJseXByaW50ayIsIHNldHVwX2Vhcmx5X3ByaW50ayk7CmRpZmYgLS1n aXQgYS9hcmNoL3g4Nl82NC9rZXJuZWwvaGVhZDY0LmMgYi9hcmNoL3g4Nl82NC9rZXJuZWwvaGVh ZDY0LmMKaW5kZXggNmMzNGJkZC4uYjk3MmY3YyAxMDA2NDQKLS0tIGEvYXJjaC94ODZfNjQva2Vy bmVsL2hlYWQ2NC5jCisrKyBiL2FyY2gveDg2XzY0L2tlcm5lbC9oZWFkNjQuYwpAQCAtNTgsNiAr NTgsOCBAQCBzdGF0aWMgdm9pZCBfX2luaXQgY29weV9ib290ZGF0YShjaGFyICpyZWFsX21vZGVf ZGF0YSkKIAltZW1jcHkoYm9vdF9jb21tYW5kX2xpbmUsIGNvbW1hbmRfbGluZSwgQ09NTUFORF9M SU5FX1NJWkUpOwogfQogCitleHRlcm4gdm9pZCBfX2luaXQgZW5hYmxlX2RlYnVnX2NvbnNvbGUo Y2hhciAqYnVmKTsKKwogdm9pZCBfX2luaXQgeDg2XzY0X3N0YXJ0X2tlcm5lbChjaGFyICogcmVh bF9tb2RlX2RhdGEpCiB7CiAJaW50IGk7CkBAIC03NCwxMCArNzYsMTQgQEAgdm9pZCBfX2luaXQg eDg2XzY0X3N0YXJ0X2tlcm5lbChjaGFyICogcmVhbF9tb2RlX2RhdGEpCiAKIAllYXJseV9wcmlu dGsoIktlcm5lbCBhbGl2ZVxuIik7CiAKLSAJZm9yIChpID0gMDsgaSA8IE5SX0NQVVM7IGkrKykK LSAJCWNwdV9wZGEoaSkgPSAmYm9vdF9jcHVfcGRhW2ldOworCWZvciAoaSA9IDA7IGkgPCBOUl9D UFVTOyBpKyspCisJCWNwdV9wZGEoaSkgPSAmYm9vdF9jcHVfcGRhW2ldOwogCiAJcGRhX2luaXQo MCk7CisKKwllbmFibGVfZGVidWdfY29uc29sZSgidHR5UzAsMTE1MjAwIik7CisJZW5hYmxlX2Rl YnVnX2NvbnNvbGUoImRiZ3Asa2VlcCIpOworCiAJY29weV9ib290ZGF0YShfX3ZhKHJlYWxfbW9k ZV9kYXRhKSk7CiAjaWZkZWYgQ09ORklHX1NNUAogCWNwdV9zZXQoMCwgY3B1X29ubGluZV9tYXAp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9laGNpLWhjZC5jIGIvZHJpdmVycy91c2Iv aG9zdC9laGNpLWhjZC5jCmluZGV4IGM0ZTE1ZWQuLmQ3NzJhNjMgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvdXNiL2hvc3QvZWhjaS1oY2QuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktaGNkLmMK QEAgLTIxMyw4ICsyMTMsMTMgQEAgc3RhdGljIHZvaWQgdGRpX3Jlc2V0IChzdHJ1Y3QgZWhjaV9o Y2QgKmVoY2kpCiBzdGF0aWMgaW50IGVoY2lfcmVzZXQgKHN0cnVjdCBlaGNpX2hjZCAqZWhjaSkK IHsKIAlpbnQJcmV0dmFsOwotCXUzMgljb21tYW5kID0gZWhjaV9yZWFkbChlaGNpLCAmZWhjaS0+ cmVncy0+Y29tbWFuZCk7CisJdTMyCWNvbW1hbmQ7CiAKKwkvKiBkb24ndCByZXNldCwgaWYgZGVi dWcgcG9ydCBpcyB1c2VkICovCisJaWYgKGVoY2ktPmRlYnVnKQorCQlyZXR1cm4gMDsKKworCWNv bW1hbmQgPSBlaGNpX3JlYWRsKGVoY2ksICZlaGNpLT5yZWdzLT5jb21tYW5kKTsKIAljb21tYW5k IHw9IENNRF9SRVNFVDsKIAlkYmdfY21kIChlaGNpLCAicmVzZXQiLCBjb21tYW5kKTsKIAllaGNp X3dyaXRlbChlaGNpLCBjb21tYW5kLCAmZWhjaS0+cmVncy0+Y29tbWFuZCk7CkBAIC0zOTYsMTEg KzQwMSwxNyBAQCBzdGF0aWMgdm9pZCBlaGNpX3BvcnRfcG93ZXIgKHN0cnVjdCBlaGNpX2hjZCAq ZWhjaSwgaW50IGlzX29uKQogCQlyZXR1cm47CiAKIAllaGNpX2RiZyAoZWhjaSwgIi4uLnBvd2Vy JXMgcG9ydHMuLi5cbiIsIGlzX29uID8gInVwIiA6ICJkb3duIik7Ci0JZm9yIChwb3J0ID0gSENT X05fUE9SVFMgKGVoY2ktPmhjc19wYXJhbXMpOyBwb3J0ID4gMDsgKQorCWZvciAocG9ydCA9IEhD U19OX1BPUlRTIChlaGNpLT5oY3NfcGFyYW1zKTsgcG9ydCA+IDA7ICkgeworCQkvKiBkbyBub3Qg dG91Y2ggZGVidWcgcG9ydCBpZiBpdCBpcyB1c2VkICovCisJCWlmIChlaGNpLT5kZWJ1ZyAmJiBw b3J0ID09IEhDU19ERUJVR19QT1JUKGVoY2ktPmhjc19wYXJhbXMpKQorCQkJY29udGludWU7CisK IAkJKHZvaWQpIGVoY2lfaHViX2NvbnRyb2woZWhjaV90b19oY2QoZWhjaSksCiAJCQkJaXNfb24g PyBTZXRQb3J0RmVhdHVyZSA6IENsZWFyUG9ydEZlYXR1cmUsCiAJCQkJVVNCX1BPUlRfRkVBVF9Q T1dFUiwKIAkJCQlwb3J0LS0sIE5VTEwsIDApOworCX0KKwogCS8qIEZsdXNoIHRob3NlIHdyaXRl cyAqLwogCWVoY2lfcmVhZGwoZWhjaSwgJmVoY2ktPnJlZ3MtPmNvbW1hbmQpOwogCW1zbGVlcCgy MCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2VoY2kuaCBiL2RyaXZlcnMvdXNiL2hv c3QvZWhjaS5oCmluZGV4IDJjNjhhMDQuLjk4NDJhMDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNi L2hvc3QvZWhjaS5oCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS5oCkBAIC02Miw2ICs2Miw3 IEBAIHN0cnVjdCBlaGNpX3N0YXRzIHsKIAogI2RlZmluZQlFSENJX01BWF9ST09UX1BPUlRTCTE1 CQkvKiBzZWUgSENTX05fUE9SVFMgKi8KIAorI2lmbmRlZiBFQVJMWV9QUklOVEsKIHN0cnVjdCBl aGNpX2hjZCB7CQkJLyogb25lIHBlciBjb250cm9sbGVyICovCiAJLyogZ2x1ZSB0byBQQ0kgYW5k IEhDRCBmcmFtZXdvcmsgKi8KIAlzdHJ1Y3QgZWhjaV9jYXBzIF9faW9tZW0gKmNhcHM7CkBAIC0x OTIsNiArMTkzLDcgQEAgdGltZXJfYWN0aW9uIChzdHJ1Y3QgZWhjaV9oY2QgKmVoY2ksIGVudW0g ZWhjaV90aW1lcl9hY3Rpb24gYWN0aW9uKQogCQltb2RfdGltZXIgKCZlaGNpLT53YXRjaGRvZywg dCk7CiAJfQogfQorI2VuZGlmIC8qIEVBUkxZX1BSSU5USyAqLwogCiAvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0qLwogCkBAIC0zMzcsNiArMzM5LDggQEAgc3RydWN0IGVoY2lfZGJnX3BvcnQgewogCiAjZGVm aW5lCVFURF9ORVhUKGVoY2ksIGRtYSkJY3B1X3RvX2hjMzIoZWhjaSwgKHUzMilkbWEpCiAKKyNp Zm5kZWYgRUFSTFlfUFJJTlRLCisKIC8qCiAgKiBFSENJIFNwZWNpZmljYXRpb24gMC45NSBTZWN0 aW9uIDMuNQogICogUVREOiBkZXNjcmliZSBkYXRhIHRyYW5zZmVyIGNvbXBvbmVudHMgKGJ1ZmZl ciwgZGlyZWN0aW9uLCAuLi4pCkBAIC0zNzcsNyArMzgxLDcgQEAgc3RydWN0IGVoY2lfcXRkIHsK IAlzdHJ1Y3QgdXJiCQkqdXJiOwkJCS8qIHF0ZCdzIHVyYiAqLwogCXNpemVfdAkJCWxlbmd0aDsJ CQkvKiBsZW5ndGggb2YgYnVmZmVyICovCiB9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkICgzMikp KTsKLQorI2VuZGlmCiAvKiBtYXNrIE5ha0NudCtUIGluIHFoLT5od19hbHRfbmV4dCAqLwogI2Rl ZmluZSBRVERfTUFTSyhlaGNpKQljcHVfdG9faGMzMiAoZWhjaSwgfjB4MWYpCiAKQEAgLTQzNCw2 ICs0MzgsNyBAQCB1bmlvbiBlaGNpX3NoYWRvdyB7CiAgKiBUaGVzZSBhcHBlYXIgaW4gYm90aCB0 aGUgYXN5bmMgYW5kIChmb3IgaW50ZXJydXB0KSBwZXJpb2RpYyBzY2hlZHVsZXMuCiAgKi8KIAor I2lmbmRlZiBFQVJMWV9QUklOVEsKIHN0cnVjdCBlaGNpX3FoIHsKIAkvKiBmaXJzdCBwYXJ0IGRl ZmluZWQgYnkgRUhDSSBzcGVjICovCiAJX19oYzMyCQkJaHdfbmV4dDsJLyogc2VlIEVIQ0kgMy42 LjEgKi8KQEAgLTQ5Nyw2ICs1MDIsNyBAQCBzdHJ1Y3QgZWhjaV9xaCB7CiAJX19sZTMyCQkJd2Fz X2FjdGl2ZTsJLyogYWN0aXZlIGJpdCBiZWZvcmUgImkiIHNldCAqLwogI2VuZGlmCiB9IF9fYXR0 cmlidXRlX18gKChhbGlnbmVkICgzMikpKTsKKyNlbmRpZiAvKiBFQVJMWV9QUklUTksgKi8KIAog LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKi8KIApAQCAtNTEwLDYgKzUxNiw3IEBAIHN0cnVjdCBlaGNpX2lz b19wYWNrZXQgewogCXUzMgkJCWJ1ZjE7CiB9OwogCisjaWZuZGVmIEVBUkxZX1BSSU5USwogLyog dGVtcG9yYXJ5IHNjaGVkdWxlIGRhdGEgZm9yIHBhY2tldHMgZnJvbSBpc28gdXJicyAoYm90aCBz cGVlZHMpCiAgKiBlYWNoIHBhY2tldCBpcyBvbmUgbG9naWNhbCB1c2IgdHJhbnNhY3Rpb24gdG8g dGhlIGRldmljZSAobm90IFRUKSwKICAqIGJlZ2lubmluZyBhdCBzdHJlYW0tPm5leHRfdWZyYW1l CkBAIC02NDUsNiArNjUyLDcgQEAgc3RydWN0IGVoY2lfc2l0ZCB7CiAJdW5zaWduZWQJCWZyYW1l OwogCXVuc2lnbmVkCQlpbmRleDsKIH0gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKDMyKSkpOwor I2VuZGlmCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKQEAgLTY2Niw2ICs2NzQsOCBAQCBzdHJ1 Y3QgZWhjaV9mc3RuIHsKIAl1bmlvbiBlaGNpX3NoYWRvdwlmc3RuX25leHQ7CS8qIHB0ciB0byBw ZXJpb2RpYyBxIGVudHJ5ICovCiB9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkICgzMikpKTsKIAor I2lmbmRlZiBFQVJMWV9QUklOVEsKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogI2lmZGVmIENP TkZJR19VU0JfRUhDSV9ST09UX0hVQl9UVApAQCAtODMyLDQgKzg0Miw2IEBAIHN0YXRpYyBpbmxp bmUgdTMyIGhjMzJfdG9fY3B1cCAoY29uc3Qgc3RydWN0IGVoY2lfaGNkICplaGNpLCBjb25zdCBf X2hjMzIgKngpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKKyNlbmRpZiAvKiBFQVJMWV9QUklO VEsgKi8KKwogI2VuZGlmIC8qIF9fTElOVVhfRUhDSV9IQ0RfSCAqLwpkaWZmIC0tZ2l0IGEvZHJp dmVycy91c2IvaG9zdC9wY2ktcXVpcmtzLmMgYi9kcml2ZXJzL3VzYi9ob3N0L3BjaS1xdWlya3Mu YwppbmRleCBjMjI1MTU5Li4zYjM3OWZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3Bj aS1xdWlya3MuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L3BjaS1xdWlya3MuYwpAQCAtMzU4LDQg KzM1OCw0IEBAIHN0YXRpYyB2b2lkIF9fZGV2aW5pdCBxdWlya191c2JfZWFybHlfaGFuZG9mZihz dHJ1Y3QgcGNpX2RldiAqcGRldikKIAllbHNlIGlmIChwZGV2LT5jbGFzcyA9PSBQQ0lfQ0xBU1Nf U0VSSUFMX1VTQl9FSENJKQogCQlxdWlya191c2JfZGlzYWJsZV9laGNpKHBkZXYpOwogfQotREVD TEFSRV9QQ0lfRklYVVBfRklOQUwoUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgcXVpcmtfdXNiX2Vh cmx5X2hhbmRvZmYpOworLy9ERUNMQVJFX1BDSV9GSVhVUF9GSU5BTChQQ0lfQU5ZX0lELCBQQ0lf QU5ZX0lELCBxdWlya191c2JfZWFybHlfaGFuZG9mZik7Cg== ------=_Part_108469_14004718.1184828691345--