From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759603AbXEUFTs (ORCPT ); Mon, 21 May 2007 01:19:48 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1759064AbXEUFTW (ORCPT ); Mon, 21 May 2007 01:19:22 -0400 Received: from nz-out-0506.google.com ([64.233.162.226]:24825 "EHLO nz-out-0506.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758925AbXEUFTU (ORCPT ); Mon, 21 May 2007 01:19:20 -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=XRFtJMfya8PFXBzEkPHlI83NnsURxaIyFqGTGWJvNwUaRVth/lRux+rHVmxUI++i5pfyTXkzUEQBVJ4sB/YQcqgNEzVFXg2HpLJRcUmXwh/UCZ4f7ixigXujDPbPf2CHi/1jJNQJV6pPeJbvqQ79GpiD4OaiKcswXwSEAoqd8JI= Message-ID: <86802c440705202219k5aa758ffk217626424e613ec7@mail.gmail.com> Date: Sun, 20 May 2007 22:19:18 -0700 From: "Yinghai Lu" To: "Andi Kleen" , "Andrew Morton" , "Eric W. Biederman" , "Greg KH" , "Bjorn Helgaas" , "Vivek Goyal" Subject: [PATCH 3/3]x86_64: early_printk for early debug port support Cc: "linux kernel mailing list" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_88088_539396.1179724758952" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org ------=_Part_88088_539396.1179724758952 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline add early dbgp to early_printk. kernel command line: earlyprintk=dbgp or earlyprintk=dbgp1 Signed-off-by: "Eric W. Biederman" Signed-off-by: Yinghai Lu ------=_Part_88088_539396.1179724758952 Content-Type: text/x-patch; name=usbdebug_05202007.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f1yhqo3h Content-Disposition: attachment; filename="usbdebug_05202007.diff" ZGlmZiAtLWdpdCBhL2FyY2gveDg2XzY0L2tlcm5lbC9lYXJseV9wcmludGsuYyBiL2FyY2gveDg2 XzY0L2tlcm5lbC9lYXJseV9wcmludGsuYwppbmRleCA1NmVhYTI1Li5mOTBhNWZmIDEwMDY0NAot LS0gYS9hcmNoL3g4Nl82NC9rZXJuZWwvZWFybHlfcHJpbnRrLmMKKysrIGIvYXJjaC94ODZfNjQv a2VybmVsL2Vhcmx5X3ByaW50ay5jCkBAIC0zLDkgKzMsMTkgQEAKICNpbmNsdWRlIDxsaW51eC9p bml0Lmg+CiAjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CiAjaW5jbHVkZSA8bGludXgvc2NyZWVu X2luZm8uaD4KKyNpbmNsdWRlIDxsaW51eC91c2IvY2g5Lmg+CisjaW5jbHVkZSA8bGludXgvcGNp X3JlZ3MuaD4KKyNpbmNsdWRlIDxsaW51eC9wY2lfaWRzLmg+CisjaW5jbHVkZSA8bGludXgvZXJy bm8uaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CiAj aW5jbHVkZSA8YXNtL2ZjbnRsLmg+CisjaW5jbHVkZSA8YXNtL3BjaS1kaXJlY3QuaD4KKyNpbmNs dWRlIDxhc20vcGd0YWJsZS5oPgorI2luY2x1ZGUgPGFzbS9maXhtYXAuaD4KKyNkZWZpbmUgRUFS TFlfUFJJTlRLCisjaW5jbHVkZSAiLi4vLi4vLi4vZHJpdmVycy91c2IvaG9zdC9laGNpLmgiCisK IAogLyogU2ltcGxlIFZHQSBvdXRwdXQgKi8KIApAQCAtMTU1LDYgKzE2NSw1ODIgQEAgc3RhdGlj IHN0cnVjdCBjb25zb2xlIGVhcmx5X3NlcmlhbF9jb25zb2xlID0gewogCS5pbmRleCA9CS0xLAog fTsKIAorCitzdGF0aWMgc3RydWN0IGVoY2lfY2FwcyBfX2lvbWVtICplaGNpX2NhcHM7CitzdGF0 aWMgc3RydWN0IGVoY2lfcmVncyBfX2lvbWVtICplaGNpX3JlZ3M7CitzdGF0aWMgc3RydWN0IGVo Y2lfZGJnX3BvcnQgX19pb21lbSAqZWhjaV9kZWJ1ZzsKK3N0YXRpYyB1bnNpZ25lZCBkYmdwX2Vu ZHBvaW50X291dDsKKworI2RlZmluZSBVU0JfREVCVUdfREVWTlVNIDEyNworCisjZGVmaW5lIERC R1BfREFUQV9UT0dHTEUJMHg4ODAwCisjZGVmaW5lIERCR1BfUElEX1VQREFURSh4LCB0b2spIFwK KwkoKCgoeCkgXiBEQkdQX0RBVEFfVE9HR0xFKSAmIDB4ZmZmZjAwKSB8ICgodG9rKSAmIDB4ZmYp KQorCisjZGVmaW5lIERCR1BfTEVOX1VQREFURSh4LCBsZW4pICgoKHgpICYgfjB4MGYpIHwgKChs ZW4pICYgMHgwZikpCisvKgorICogVVNCIFBhY2tldCBJRHMgKFBJRHMpCisgKi8KKworLyogdG9r ZW4gKi8KKyNkZWZpbmUgVVNCX1BJRF9PVVQJCTB4ZTEKKyNkZWZpbmUgVVNCX1BJRF9JTgkJMHg2 OQorI2RlZmluZSBVU0JfUElEX1NPRgkJMHhhNQorI2RlZmluZSBVU0JfUElEX1NFVFVQCQkweDJk CisvKiBoYW5kc2hha2UgKi8KKyNkZWZpbmUgVVNCX1BJRF9BQ0sJCTB4ZDIKKyNkZWZpbmUgVVNC X1BJRF9OQUsJCTB4NWEKKyNkZWZpbmUgVVNCX1BJRF9TVEFMTAkJMHgxZQorI2RlZmluZSBVU0Jf UElEX05ZRVQJCTB4OTYKKy8qIGRhdGEgKi8KKyNkZWZpbmUgVVNCX1BJRF9EQVRBMAkJMHhjMwor I2RlZmluZSBVU0JfUElEX0RBVEExCQkweDRiCisjZGVmaW5lIFVTQl9QSURfREFUQTIJCTB4ODcK KyNkZWZpbmUgVVNCX1BJRF9NREFUQQkJMHgwZgorLyogU3BlY2lhbCAqLworI2RlZmluZSBVU0Jf UElEX1BSRUFNQkxFCTB4M2MKKyNkZWZpbmUgVVNCX1BJRF9FUlIJCTB4M2MKKyNkZWZpbmUgVVNC X1BJRF9TUExJVAkJMHg3OAorI2RlZmluZSBVU0JfUElEX1BJTkcJCTB4YjQKKyNkZWZpbmUgVVNC X1BJRF9VTkRFRl8wCQkweGYwCisKKyNkZWZpbmUgVVNCX1BJRF9EQVRBX1RPR0dMRQkweDg4Cisj ZGVmaW5lIERCR1BfQ0xBSU0gKERCR1BfT1dORVIgfCBEQkdQX0VOQUJMRUQgfCBEQkdQX0lOVVNF KQorCisjZGVmaW5lIFBDSV9DQVBfSURfRUhDSV9ERUJVRwkweGEKKworI2RlZmluZSBIVUJfUk9P VF9SRVNFVF9USU1FCTUwCS8qIHRpbWVzIGFyZSBpbiBtc2VjICovCisjZGVmaW5lIEhVQl9TSE9S VF9SRVNFVF9USU1FCTEwCisjZGVmaW5lIEhVQl9MT05HX1JFU0VUX1RJTUUJMjAwCisjZGVmaW5l IEhVQl9SRVNFVF9USU1FT1VUCTUwMAorCisjZGVmaW5lIERCR1BfTUFYX1BBQ0tFVAkJOAorCitz dGF0aWMgaW50IGRiZ3Bfd2FpdF91bnRpbF9jb21wbGV0ZSh2b2lkKQoreworCXVuc2lnbmVkIGN0 cmw7CisJaW50IGxvb3AgPSAweDEwMDAwMDsKKwlkbyB7CisJCWN0cmwgPSByZWFkbCgmZWhjaV9k ZWJ1Zy0+Y29udHJvbCk7CisJCS8qIFN0b3Agd2hlbiB0aGUgdHJhbnNhY3Rpb24gaXMgZmluaXNo ZWQgKi8KKwkJaWYgKGN0cmwgJiBEQkdQX0RPTkUpCisJCQlicmVhazsKKwl9IHdoaWxlICgtLWxv b3AgPiAwKTsKKwkKKwlpZiAoIWxvb3ApIHJldHVybiAtMTsKKworCS8qIE5vdyB0aGF0IHdlIGhh dmUgb2JzZXJ2ZWQgdGhlIGNvbXBsZXRlZCB0cmFuc2FjdGlvbiwKKwkgKiBjbGVhciB0aGUgZG9u ZSBiaXQuCisJICovCisJd3JpdGVsKGN0cmwgfCBEQkdQX0RPTkUsICZlaGNpX2RlYnVnLT5jb250 cm9sKTsKKwlyZXR1cm4gKGN0cmwgJiBEQkdQX0VSUk9SKSA/IC1EQkdQX0VSUkNPREUoY3RybCkg OiBEQkdQX0xFTihjdHJsKTsKK30KKworc3RhdGljIHZvaWQgZGJncF9tZGVsYXkoaW50IG1zKQor eworCWludCBpOworCXdoaWxlIChtcy0tKSB7CisJCWZvciAoaSA9IDA7IGkgPCAxMDAwOyBpKysp CisJCQlvdXRiKDB4MSwgMHg4MCk7CisJfQorfQorCitzdGF0aWMgdm9pZCBkYmdwX2JyZWF0aCh2 b2lkKQoreworCS8qIFNsZWVwIHRvIGdpdmUgdGhlIGRlYnVnIHBvcnQgYSBjaGFuY2UgdG8gYnJl YXRoZSAqLworfQorCitzdGF0aWMgaW50IGRiZ3Bfd2FpdF91bnRpbF9kb25lKHVuc2lnbmVkIGN0 cmwpCit7CisJdW5zaWduZWQgcGlkcywgbHBpZDsKKwlpbnQgcmV0OworCisJaW50IGxvb3AgPSAz OworcmV0cnk6CisJd3JpdGVsKGN0cmwgfCBEQkdQX0dPLCAmZWhjaV9kZWJ1Zy0+Y29udHJvbCk7 CisJcmV0ID0gZGJncF93YWl0X3VudGlsX2NvbXBsZXRlKCk7CisJcGlkcyA9IHJlYWRsKCZlaGNp X2RlYnVnLT5waWRzKTsKKwlscGlkID0gREJHUF9QSURfR0VUKHBpZHMpOworCisJaWYgKHJldCA8 IDApCisJCXJldHVybiByZXQ7CisKKwkvKiBJZiB0aGUgcG9ydCBpcyBnZXR0aW5nIGZ1bGwgb3Ig aXQgaGFzIGRyb3BwZWQgZGF0YQorCSAqIHN0YXJ0IHBhY2luZyBvdXJzZWx2ZXMsIG5vdCBuZWNl c3NhcnkgYnV0IGl0J3MgZnJpZW5kbHkuCisJICovCisJaWYgKChscGlkID09IFVTQl9QSURfTkFL KSB8fCAobHBpZCA9PSBVU0JfUElEX05ZRVQpKQorCQlkYmdwX2JyZWF0aCgpOworCQorCS8qIElm IEkgZ2V0IGEgTkFDSyByZWlzc3VlIHRoZSB0cmFuc21pc3Npb24gKi8KKwlpZiAobHBpZCA9PSBV U0JfUElEX05BSykgeworCQlpZigtLWxvb3AgPiAwKSBnb3RvIHJldHJ5OworCX0KKworCXJldHVy biByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGRiZ3Bfc2V0X2RhdGEoY29uc3Qgdm9pZCAqYnVmLCBp bnQgc2l6ZSkKK3sKKwljb25zdCB1bnNpZ25lZCBjaGFyICpieXRlcyA9IGJ1ZjsKKwl1bnNpZ25l ZCBsbywgaGk7CisJaW50IGk7CisJbG8gPSBoaSA9IDA7CisJZm9yIChpID0gMDsgaSA8IDQgJiYg aSA8IHNpemU7IGkrKykKKwkJbG8gfD0gYnl0ZXNbaV0gPDwgKDgqaSk7CisJZm9yICg7IGkgPCA4 ICYmIGkgPCBzaXplOyBpKyspCisJCWhpIHw9IGJ5dGVzW2ldIDw8ICg4KihpIC0gNCkpOworCXdy aXRlbChsbywgJmVoY2lfZGVidWctPmRhdGEwMyk7CisJd3JpdGVsKGhpLCAmZWhjaV9kZWJ1Zy0+ ZGF0YTQ3KTsKK30KKworc3RhdGljIHZvaWQgZGJncF9nZXRfZGF0YSh2b2lkICpidWYsIGludCBz aXplKQoreworCXVuc2lnbmVkIGNoYXIgKmJ5dGVzID0gYnVmOworCXVuc2lnbmVkIGxvLCBoaTsK KwlpbnQgaTsKKwlsbyA9IHJlYWRsKCZlaGNpX2RlYnVnLT5kYXRhMDMpOworCWhpID0gcmVhZGwo JmVoY2lfZGVidWctPmRhdGE0Nyk7CisJZm9yIChpID0gMDsgaSA8IDQgJiYgaSA8IHNpemU7IGkr KykKKwkJYnl0ZXNbaV0gPSAobG8gPj4gKDgqaSkpICYgMHhmZjsKKwlmb3IgKDsgaSA8IDggJiYg aSA8IHNpemU7IGkrKykKKwkJYnl0ZXNbaV0gPSAoaGkgPj4gKDgqKGkgLSA0KSkpICYgMHhmZjsK K30KKworc3RhdGljIGludCBkYmdwX2J1bGtfd3JpdGUodW5zaWduZWQgZGV2bnVtLCB1bnNpZ25l ZCBlbmRwb2ludCwgY29uc3QgY2hhciAqYnl0ZXMsIGludCBzaXplKQoreworCXVuc2lnbmVkIHBp ZHMsIGFkZHIsIGN0cmw7CisJaW50IHJldDsKKwlpZiAoc2l6ZSA+IERCR1BfTUFYX1BBQ0tFVCkK KwkJcmV0dXJuIC0xOworCisJYWRkciA9IERCR1BfRVBBRERSKGRldm51bSwgZW5kcG9pbnQpOwor CisJcGlkcyA9IHJlYWRsKCZlaGNpX2RlYnVnLT5waWRzKTsKKwlwaWRzID0gREJHUF9QSURfVVBE QVRFKHBpZHMsIFVTQl9QSURfT1VUKTsKKwkKKwljdHJsID0gcmVhZGwoJmVoY2lfZGVidWctPmNv bnRyb2wpOworCWN0cmwgPSBEQkdQX0xFTl9VUERBVEUoY3RybCwgc2l6ZSk7CisJY3RybCB8PSBE QkdQX09VVDsKKwljdHJsIHw9IERCR1BfR087CisKKwlkYmdwX3NldF9kYXRhKGJ5dGVzLCBzaXpl KTsKKwl3cml0ZWwoYWRkciwgJmVoY2lfZGVidWctPmFkZHJlc3MpOworCXdyaXRlbChwaWRzLCAm ZWhjaV9kZWJ1Zy0+cGlkcyk7CisKKwlyZXQgPSBkYmdwX3dhaXRfdW50aWxfZG9uZShjdHJsKTsK KwlpZiAocmV0IDwgMCkgeworCQlyZXR1cm4gcmV0OworCX0KKwlyZXR1cm4gcmV0OworfQorCitz dGF0aWMgaW50IGRiZ3BfYnVsa19yZWFkKHVuc2lnbmVkIGRldm51bSwgdW5zaWduZWQgZW5kcG9p bnQsIHZvaWQgKmRhdGEsIGludCBzaXplKQoreworCXVuc2lnbmVkIHBpZHMsIGFkZHIsIGN0cmw7 CisJaW50IHJldDsKKworCWlmIChzaXplID4gREJHUF9NQVhfUEFDS0VUKQorCQlyZXR1cm4gLTE7 CisKKwlhZGRyID0gREJHUF9FUEFERFIoZGV2bnVtLCBlbmRwb2ludCk7CisKKwlwaWRzID0gcmVh ZGwoJmVoY2lfZGVidWctPnBpZHMpOworCXBpZHMgPSBEQkdQX1BJRF9VUERBVEUocGlkcywgVVNC X1BJRF9JTik7CisJCQorCWN0cmwgPSByZWFkbCgmZWhjaV9kZWJ1Zy0+Y29udHJvbCk7CisJY3Ry bCA9IERCR1BfTEVOX1VQREFURShjdHJsLCBzaXplKTsKKwljdHJsICY9IH5EQkdQX09VVDsKKwlj dHJsIHw9IERCR1BfR087CisJCQorCXdyaXRlbChhZGRyLCAmZWhjaV9kZWJ1Zy0+YWRkcmVzcyk7 CisJd3JpdGVsKHBpZHMsICZlaGNpX2RlYnVnLT5waWRzKTsKKwlyZXQgPSBkYmdwX3dhaXRfdW50 aWxfZG9uZShjdHJsKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKwlpZiAoc2l6ZSA+ IHJldCkKKwkJc2l6ZSA9IHJldDsKKwlkYmdwX2dldF9kYXRhKGRhdGEsIHNpemUpOworCXJldHVy biByZXQ7Cit9CisKK3N0YXRpYyBpbnQgZGJncF9jb250cm9sX21zZyh1bnNpZ25lZCBkZXZudW0s IGludCByZXF1ZXN0dHlwZSwgaW50IHJlcXVlc3QsIAorCWludCB2YWx1ZSwgaW50IGluZGV4LCB2 b2lkICpkYXRhLCBpbnQgc2l6ZSkKK3sKKwl1bnNpZ25lZCBwaWRzLCBhZGRyLCBjdHJsOworCXN0 cnVjdCB1c2JfY3RybHJlcXVlc3QgcmVxOworCWludCByZWFkOworCWludCByZXQ7CisKKwlyZWFk ID0gKHJlcXVlc3R0eXBlICYgVVNCX0RJUl9JTikgIT0gMDsKKwlpZiAoc2l6ZSA+IChyZWFkP0RC R1BfTUFYX1BBQ0tFVDowKSkKKwkJcmV0dXJuIC0xOworCQorCS8qIENvbXB1dGUgdGhlIGNvbnRy b2wgbWVzc2FnZSAqLworCXJlcS5iUmVxdWVzdFR5cGUgPSByZXF1ZXN0dHlwZTsKKwlyZXEuYlJl cXVlc3QgPSByZXF1ZXN0OworCXJlcS53VmFsdWUgPSB2YWx1ZTsKKwlyZXEud0luZGV4ID0gaW5k ZXg7CisJcmVxLndMZW5ndGggPSBzaXplOworCisJcGlkcyA9IERCR1BfUElEX1NFVChVU0JfUElE X0RBVEEwLCBVU0JfUElEX1NFVFVQKTsKKwlhZGRyID0gREJHUF9FUEFERFIoZGV2bnVtLCAwKTsK KworCWN0cmwgPSByZWFkbCgmZWhjaV9kZWJ1Zy0+Y29udHJvbCk7CisJY3RybCA9IERCR1BfTEVO X1VQREFURShjdHJsLCBzaXplb2YocmVxKSk7CisJY3RybCB8PSBEQkdQX09VVDsKKwljdHJsIHw9 IERCR1BfR087CisKKwkvKiBTZW5kIHRoZSBzZXR1cCBtZXNzYWdlICovCisJZGJncF9zZXRfZGF0 YSgmcmVxLCBzaXplb2YocmVxKSk7CisJd3JpdGVsKGFkZHIsICZlaGNpX2RlYnVnLT5hZGRyZXNz KTsKKwl3cml0ZWwocGlkcywgJmVoY2lfZGVidWctPnBpZHMpOworCXJldCA9IGRiZ3Bfd2FpdF91 bnRpbF9kb25lKGN0cmwpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisKKwkvKiBS ZWFkIHRoZSByZXN1bHQgKi8KKwlyZXQgPSBkYmdwX2J1bGtfcmVhZChkZXZudW0sIDAsIGRhdGEs IHNpemUpOworCXJldHVybiByZXQ7Cit9CisKKworLyogRmluZCBhIFBDSSBjYXBhYmlsaXR5ICov CitzdGF0aWMgX191MzIgX19pbml0IGZpbmRfY2FwKGludCBudW0sIGludCBzbG90LCBpbnQgZnVu YywgaW50IGNhcCkgCit7IAorCXU4IHBvczsKKwlpbnQgYnl0ZXM7CisJaWYgKCEocmVhZF9wY2lf Y29uZmlnXzE2KG51bSxzbG90LGZ1bmMsUENJX1NUQVRVUykgJiBQQ0lfU1RBVFVTX0NBUF9MSVNU KSkKKwkJcmV0dXJuIDA7CisJcG9zID0gcmVhZF9wY2lfY29uZmlnX2J5dGUobnVtLHNsb3QsZnVu YyxQQ0lfQ0FQQUJJTElUWV9MSVNUKTsKKwlmb3IgKGJ5dGVzID0gMDsgYnl0ZXMgPCA0OCAmJiBw b3MgPj0gMHg0MDsgYnl0ZXMrKykgeyAKKwkJdTggaWQ7CisJCXBvcyAmPSB+MzsgCisJCWlkID0g cmVhZF9wY2lfY29uZmlnX2J5dGUobnVtLHNsb3QsZnVuYyxwb3MrUENJX0NBUF9MSVNUX0lEKTsK KwkJaWYgKGlkID09IDB4ZmYpCisJCQlicmVhazsKKwkJaWYgKGlkID09IGNhcCkgCisJCQlyZXR1 cm4gcG9zOyAKKwkJcG9zID0gcmVhZF9wY2lfY29uZmlnX2J5dGUobnVtLHNsb3QsZnVuYyxwb3Mr UENJX0NBUF9MSVNUX05FWFQpOyAKKwl9IAorCXJldHVybiAwOworfSAKKworc3RhdGljIF9fdTMy IF9faW5pdCBmaW5kX2RiZ3AoaW50IGVoY2lfbnVtLCB1bnNpZ25lZCAqcmJ1cywgdW5zaWduZWQg KnJzbG90LCB1bnNpZ25lZCAqcmZ1bmMpCit7CisJdW5zaWduZWQgYnVzLCBzbG90LCBmdW5jOwor CQorCWZvciAoYnVzID0gMDsgYnVzIDwgMjU2OyBidXMrKykgeworCQlmb3IgKHNsb3QgPSAwOyBz bG90IDwgMzI7IHNsb3QrKykgeworCQkJZm9yIChmdW5jID0gMDsgZnVuYyA8IDg7IGZ1bmMrKykg eworCQkJCXUzMiBjbGFzczsKKwkJCQl1bnNpZ25lZCBjYXA7CisJCQkJY2xhc3MgPSByZWFkX3Bj aV9jb25maWcoYnVzLCBzbG90LCBmdW5jLCBQQ0lfQ0xBU1NfUkVWSVNJT04pOworCQkJCWlmICgo Y2xhc3MgPj4gOCkgIT0gUENJX0NMQVNTX1NFUklBTF9VU0JfRUhDSSkKKwkJCQkJY29udGludWU7 CisJCQkJY2FwID0gZmluZF9jYXAoYnVzLCBzbG90LCBmdW5jLCBQQ0lfQ0FQX0lEX0VIQ0lfREVC VUcpOworCQkJCWlmICghY2FwKQorCQkJCQljb250aW51ZTsKKwkJCQlpZiAoZWhjaV9udW0tLSAh PSAwKQorCQkJCQljb250aW51ZTsKKwkJCQkqcmJ1cyA9IGJ1czsKKwkJCQkqcnNsb3QgPSBzbG90 OworCQkJCSpyZnVuYyA9IGZ1bmM7CisJCQkJcmV0dXJuIGNhcDsKKwkJCX0KKwkJfQorCX0KKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBlaGNpX3Jlc2V0X3BvcnQoaW50IHBvcnQpCit7CisJ dW5zaWduZWQgcG9ydHNjOworCXVuc2lnbmVkIGRlbGF5X3RpbWUsIGRlbGF5OworCWludCBsb29w OworCisJLyogUmVzZXQgdGhlIHVzYiBkZWJ1ZyBwb3J0ICovCisJcG9ydHNjID0gcmVhZGwoJmVo Y2lfcmVncy0+cG9ydF9zdGF0dXNbcG9ydCAtIDFdKTsKKwlwb3J0c2MgJj0gflBPUlRfUEU7CisJ cG9ydHNjIHw9IFBPUlRfUkVTRVQ7CisJd3JpdGVsKHBvcnRzYywgJmVoY2lfcmVncy0+cG9ydF9z dGF0dXNbcG9ydCAtIDFdKTsKKworCWRlbGF5ID0gSFVCX1JPT1RfUkVTRVRfVElNRTsKKwlmb3Ig KGRlbGF5X3RpbWUgPSAwOyBkZWxheV90aW1lIDwgSFVCX1JFU0VUX1RJTUVPVVQ7CisJICAgICBk ZWxheV90aW1lICs9IGRlbGF5KSB7CisJCWRiZ3BfbWRlbGF5KGRlbGF5KTsKKworCQlwb3J0c2Mg PSByZWFkbCgmZWhjaV9yZWdzLT5wb3J0X3N0YXR1c1twb3J0IC0gMV0pOworCQlpZiAocG9ydHNj ICYgUE9SVF9SRVNFVCkgeworCQkJLyogZm9yY2UgcmVzZXQgdG8gY29tcGxldGUgKi8KKwkJCWxv b3AgPSAyOworCQkJd3JpdGVsKHBvcnRzYyAmIH4oUE9SVF9SV0NfQklUUyB8IFBPUlRfUkVTRVQp LCAKKwkJCQkmZWhjaV9yZWdzLT5wb3J0X3N0YXR1c1twb3J0IC0gMV0pOworCQkJZG8geworCQkJ CXBvcnRzYyA9IHJlYWRsKCZlaGNpX3JlZ3MtPnBvcnRfc3RhdHVzW3BvcnQgLSAxXSk7CisJCQl9 IHdoaWxlICgocG9ydHNjICYgUE9SVF9SRVNFVCkgJiYgKC0tbG9vcCA+IDApKTsKKwkJfQorCisJ CS8qIERldmljZSB3ZW50IGF3YXk/ICovCisJCWlmICghKHBvcnRzYyAmIFBPUlRfQ09OTkVDVCkp CisJCQlyZXR1cm4gLUVOT1RDT05OOworCisJCS8qIGJvbWIgb3V0IGNvbXBsZXRlbHkgaWYgc29t ZXRoaW5nIHdlaXJkIGhhcHBlbmQgKi8KKwkJaWYgKChwb3J0c2MgJiBQT1JUX0NTQykpCisJCQly ZXR1cm4gLUVJTlZBTDsKKworCQkvKiBJZiB3ZSd2ZSBmaW5pc2hlZCByZXNldHRpbmcsIHRoZW4g YnJlYWsgb3V0IG9mIHRoZSBsb29wICovCisJCWlmICghKHBvcnRzYyAmIFBPUlRfUkVTRVQpICYm IChwb3J0c2MgJiBQT1JUX1BFKSkKKwkJCXJldHVybiAwOworCX0KKwlyZXR1cm4gLUVCVVNZOwor fQorCitzdGF0aWMgaW50IGVoY2lfd2FpdF9mb3JfcG9ydChpbnQgcG9ydCkKK3sKKwl1bnNpZ25l ZCBzdGF0dXM7CisJaW50IHJldCwgcmVwczsKKwlmb3IgKHJlcHMgPSAwOyByZXBzIDwgMzsgcmVw cysrKSB7CisJCWRiZ3BfbWRlbGF5KDEwMCk7CisJCXN0YXR1cyA9IHJlYWRsKCZlaGNpX3JlZ3Mt PnN0YXR1cyk7CisJCWlmIChzdGF0dXMgJiBTVFNfUENEKSB7CisJCQlyZXQgPSBlaGNpX3Jlc2V0 X3BvcnQocG9ydCk7CisJCQlpZiAocmV0ID09IDApCisJCQkJcmV0dXJuIDA7CisJCX0KKwl9CisJ cmV0dXJuIC1FTk9UQ09OTjsKK30KKworCisjZGVmaW5lIERCR1BfREVCVUcgMAorI2lmIERCR1Bf REVCVUcKK3ZvaWQgZWFybHlfcHJpbnRrKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKKyMgZGVmaW5l IGRiZ3BfcHJpbnRrIGVhcmx5X3ByaW50aworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZCBkYmdw X3ByaW50ayhjb25zdCBjaGFyICpmbXQsIC4uLikgeyB9CisjZW5kaWYKKworc3RhdGljIGludCBl aGNpX3NldHVwKHZvaWQpCit7CisJdW5zaWduZWQgY21kLCBjdHJsLCBzdGF0dXMsIHBvcnRzYywg aGNzX3BhcmFtcywgZGVidWdfcG9ydCwgbl9wb3J0czsKKwlpbnQgcmV0OworCWludCBsb29wOwor CisJaGNzX3BhcmFtcyA9IHJlYWRsKCZlaGNpX2NhcHMtPmhjc19wYXJhbXMpOworCWRlYnVnX3Bv cnQgPSBIQ1NfREVCVUdfUE9SVChoY3NfcGFyYW1zKTsKKwluX3BvcnRzICAgID0gSENTX05fUE9S VFMoaGNzX3BhcmFtcyk7CisKKwlkYmdwX3ByaW50aygiZGVidWdfcG9ydDogJWRcbiIsIGRlYnVn X3BvcnQpOworCWRiZ3BfcHJpbnRrKCJuX3BvcnRzOiAgICAlZFxuIiwgbl9wb3J0cyk7CisKKwls b29wID0gMTA7CisJLyogUmVzZXQgdGhlIEVIQ0kgY29udHJvbGxlciAqLworCWNtZCA9IHJlYWRs KCZlaGNpX3JlZ3MtPmNvbW1hbmQpOworCWNtZCB8PSBDTURfUkVTRVQ7CisJd3JpdGVsKGNtZCwg JmVoY2lfcmVncy0+Y29tbWFuZCk7CisJZG8geworCQljbWQgPSByZWFkbCgmZWhjaV9yZWdzLT5j b21tYW5kKTsKKwl9IHdoaWxlICgoY21kICYgQ01EX1JFU0VUKSAmJiAoLS1sb29wID4gMCkpOwor CisJLyogQ2xhaW0gb3duZXJzaGlwLCBidXQgZG8gbm90IGVuYWJsZSB5ZXQgKi8KKwljdHJsID0g cmVhZGwoJmVoY2lfZGVidWctPmNvbnRyb2wpOworCWN0cmwgfD0gREJHUF9PV05FUjsKKwljdHJs ICY9IH4oREJHUF9FTkFCTEVEIHwgREJHUF9JTlVTRSk7CisJd3JpdGVsKGN0cmwsICZlaGNpX2Rl YnVnLT5jb250cm9sKTsKKworCS8qIFN0YXJ0IHRoZSBlaGNpIHJ1bm5pbmcgKi8KKwljbWQgPSBy ZWFkbCgmZWhjaV9yZWdzLT5jb21tYW5kKTsKKwljbWQgJj0gfihDTURfTFJFU0VUIHwgQ01EX0lB QUQgfCBDTURfUFNFIHwgQ01EX0FTRSB8IENNRF9SRVNFVCk7CisJY21kIHw9IENNRF9SVU47CisJ d3JpdGVsKGNtZCwgJmVoY2lfcmVncy0+Y29tbWFuZCk7CisKKwkvKiBFbnN1cmUgZXZlcnl0aGlu ZyBpcyByb3V0ZWQgdG8gdGhlIEVIQ0kgKi8KKwl3cml0ZWwoRkxBR19DRiwgJmVoY2lfcmVncy0+ Y29uZmlndXJlZF9mbGFnKTsKKworCS8qIFdhaXQgdW50aWwgdGhlIGNvbnRyb2xsZXIgaXMgbm8g bG9uZ2VyIGhhbHRlZCAqLworCWxvb3AgPSAxMDsKKwlkbyB7CisJCXN0YXR1cyA9IHJlYWRsKCZl aGNpX3JlZ3MtPnN0YXR1cyk7CisJfSB3aGlsZSAoKHN0YXR1cyAmIFNUU19IQUxUKSAmJiAoLS1s b29wID4gMCkpOworCisJLyogV2FpdCBmb3IgYSBkZXZpY2UgdG8gc2hvdyB1cCBpbiB0aGUgZGVi dWcgcG9ydCAqLworCXJldCA9IGVoY2lfd2FpdF9mb3JfcG9ydChkZWJ1Z19wb3J0KTsKKwlpZiAo cmV0IDwgMCkgeworCQlkYmdwX3ByaW50aygiTm8gZGV2aWNlIGZvdW5kIGluIGRlYnVnIHBvcnRc biIpOworCQlyZXR1cm4gLTE7CisJfQorCisJLyogRW5hYmxlIHRoZSBkZWJ1ZyBwb3J0ICovCisJ Y3RybCA9IHJlYWRsKCZlaGNpX2RlYnVnLT5jb250cm9sKTsKKwljdHJsIHw9IERCR1BfQ0xBSU07 CisJd3JpdGVsKGN0cmwsICZlaGNpX2RlYnVnLT5jb250cm9sKTsKKwljdHJsID0gcmVhZGwoJmVo Y2lfZGVidWctPmNvbnRyb2wpOworCWlmICgoY3RybCAmIERCR1BfQ0xBSU0pICE9IERCR1BfQ0xB SU0pIHsKKwkJZGJncF9wcmludGsoIk5vIGRldmljZSBpbiBkZWJ1ZyBwb3J0XG4iKTsKKwkJd3Jp dGVsKGN0cmwgJiB+REJHUF9DTEFJTSwgJmVoY2lfZGVidWctPmNvbnRyb2wpOworCQlyZXR1cm4g LTE7CisKKwl9CisKKwkvKiBDb21wbGV0ZWx5IHRyYW5zZmVyIHRoZSBkZWJ1ZyBkZXZpY2UgdG8g dGhlIGRlYnVnIGNvbnRyb2xsZXIgKi8KKwlwb3J0c2MgPSByZWFkbCgmZWhjaV9yZWdzLT5wb3J0 X3N0YXR1c1tkZWJ1Z19wb3J0IC0gMV0pOworCXBvcnRzYyAmPSB+UE9SVF9QRTsKKwl3cml0ZWwo cG9ydHNjLCAmZWhjaV9yZWdzLT5wb3J0X3N0YXR1c1tkZWJ1Z19wb3J0IC0gMV0pOworCisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgX19pbml0IGVhcmx5X2RiZ3BfaW5pdChjaGFyICpzKQor eworCXN0cnVjdCB1c2JfZGVidWdfZGVzY3JpcHRvciBkYmdwX2Rlc2M7CisJdm9pZCBfX2lvbWVt ICplaGNpX2JhcjsKKwl1bnNpZ25lZCBjdHJsLCBkZXZudW07CisJdW5zaWduZWQgYnVzLCBzbG90 LCBmdW5jLCBjYXA7CisJdW5zaWduZWQgZGVidWdfcG9ydCwgYmFyLCBvZmZzZXQ7CisJdW5zaWdu ZWQgYmFyX3ZhbDsKKwljaGFyICplOworCWludCByZXQ7CisJdW5zaWduZWQgZGJncF9udW07CisK KwlpZiAoIWVhcmx5X3BjaV9hbGxvd2VkKCkpCisJCXJldHVybiAtMTsKKworCWRiZ3BfbnVtID0g MDsKKwlpZiAoKnMpIHsKKwkJZGJncF9udW0gPSBzaW1wbGVfc3RydG91bChzLCAmZSwgMTApOwor CX0KKwlkYmdwX3ByaW50aygiZGJncF9udW06ICVkXG4iLCBkYmdwX251bSk7CisJY2FwID0gZmlu ZF9kYmdwKGRiZ3BfbnVtLCAmYnVzLCAmc2xvdCwgJmZ1bmMpOworCWlmICghY2FwKQorCQlyZXR1 cm4gLTE7CisKKwlkYmdwX3ByaW50aygiRm91bmQgRUhDSSBkZWJ1ZyBwb3J0XG4iKTsKKworCWRl YnVnX3BvcnQgPSByZWFkX3BjaV9jb25maWcoYnVzLCBzbG90LCBmdW5jLCBjYXApOworCWJhciA9 IChkZWJ1Z19wb3J0ID4+IDI5KSAmIDB4NzsKKwliYXIgPSAoYmFyICogNCkgKyAweGM7CisJb2Zm c2V0ID0gKGRlYnVnX3BvcnQgPj4gMTYpICYgMHhmZmY7CisJZGJncF9wcmludGsoImJhcjogJTAy eCBvZmZzZXQ6ICUwM3hcbiIsIGJhciwgb2Zmc2V0KTsKKwlpZiAoYmFyICE9IFBDSV9CQVNFX0FE RFJFU1NfMCkgeworCQlkYmdwX3ByaW50aygib25seSBkZWJ1ZyBwb3J0cyBvbiBiYXIgMSBoYW5k bGVkLlxuIik7CisJCXJldHVybiAtMTsKKwl9CisKKwliYXJfdmFsID0gcmVhZF9wY2lfY29uZmln KGJ1cywgc2xvdCwgZnVuYywgUENJX0JBU0VfQUREUkVTU18wKTsKKwlkYmdwX3ByaW50aygiYmFy X3ZhbDogJTAyeCBvZmZzZXQ6ICUwM3hcbiIsIGJhcl92YWwsIG9mZnNldCk7CisJaWYgKGJhcl92 YWwgJiB+UENJX0JBU0VfQUREUkVTU19NRU1fTUFTSykgeworCQlkYmdwX3ByaW50aygib25seSBz aW1wbGUgMzJiaXQgbW1pbyBiYXJzIHN1cHBvcnRlZFxuIik7CisJCXJldHVybiAtMTsKKwl9CisJ CQorCisJLyogRklYTUUgSSBkb24ndCBoYXZlIHRoZSBiYXIgc2l6ZSBzbyBqdXN0IGd1ZXNzIFBB R0VfU0laRSBpcyBtb3JlCisJICogdGhhbiBlbm91Z2guICAxSyBpcyB0aGUgYmlnZ2VzdCBJIGhh dmUgc2Vlbi4KKwkgKi8KKwlkYmdwX3ByaW50aygiZGJncCBwcmUtc2V0X2ZpeG1hcF9ub2NhY2hl XG4iKTsKKwlzZXRfZml4bWFwX25vY2FjaGUoRklYX0RCR1BfQkFTRSwgYmFyX3ZhbCAmIFBBR0Vf TUFTSyk7CisJZGJncF9wcmludGsoImRiZ3AgcG9zdC1zZXRfZml4bWFwX25vY2FjaGVcbiIpOwor CWVoY2lfYmFyID0gKHZvaWQgX19pb21lbSAqKV9fZml4X3RvX3ZpcnQoRklYX0RCR1BfQkFTRSk7 CisJZWhjaV9iYXIgKz0gYmFyX3ZhbCAmIH5QQUdFX01BU0s7CisJZGJncF9wcmludGsoImVoY2lf YmFyOiAlcFxuIiwgZWhjaV9iYXIpOworCisJZWhjaV9jYXBzICA9IGVoY2lfYmFyOworCWVoY2lf cmVncyAgPSBlaGNpX2JhciArIEhDX0xFTkdUSChyZWFkbCgmZWhjaV9jYXBzLT5oY19jYXBiYXNl KSk7CisJZWhjaV9kZWJ1ZyA9IGVoY2lfYmFyICsgb2Zmc2V0OworCisJcmV0ID0gZWhjaV9zZXR1 cCgpOworCWlmIChyZXQgPCAwKSB7CisJCWRiZ3BfcHJpbnRrKCJlaGNpX3NldHVwIGZhaWxlZFxu Iik7CisJCWVoY2lfZGVidWcgPSAwOworCQlyZXR1cm4gLTE7CisJfQorCWRiZ3BfbWRlbGF5KDEw MCk7CisKKwkvKiBGaW5kIHRoZSBkZWJ1ZyBkZXZpY2UgYW5kIG1ha2UgaXQgZGV2aWNlIG51bWJl ciAxMjcgKi8KKwlmb3IgKGRldm51bSA9IDA7IGRldm51bSA8PSAxMjc7IGRldm51bSsrKSB7CisJ CXJldCA9IGRiZ3BfY29udHJvbF9tc2coZGV2bnVtLAorCQkJVVNCX0RJUl9JTiB8IFVTQl9UWVBF X1NUQU5EQVJEIHwgVVNCX1JFQ0lQX0RFVklDRSwKKwkJCVVTQl9SRVFfR0VUX0RFU0NSSVBUT1Is IChVU0JfRFRfREVCVUcgPDwgOCksIDAsCisJCQkmZGJncF9kZXNjLCBzaXplb2YoZGJncF9kZXNj KSk7CisJCWlmIChyZXQgPiAwKQorCQkJYnJlYWs7CisJfQorCWlmIChkZXZudW0gPiAxMjcpIHsK KwkJZGJncF9wcmludGsoIkNvdWxkIG5vdCBmaW5kIGF0dGFjaGVkIGRlYnVnIGRldmljZVxuIik7 CisJCWdvdG8gZXJyOworCX0KKwlpZiAocmV0IDwgMCkgeworCQlkYmdwX3ByaW50aygiQXR0YWNo ZWQgZGV2aWNlIGlzIG5vdCBhIGRlYnVnIGRldmljZVxuIik7CisJCWdvdG8gZXJyOworCX0KKwlk YmdwX2VuZHBvaW50X291dCA9IGRiZ3BfZGVzYy5iRGVidWdPdXRFbmRwb2ludDsKKworCS8qIE1v dmUgdGhlIGRldmljZSB0byAxMjcgaWYgaXQgaXNuJ3QgYWxyZWFkeSB0aGVyZSAqLworCWlmIChk ZXZudW0gIT0gVVNCX0RFQlVHX0RFVk5VTSkgeworCQlyZXQgPSBkYmdwX2NvbnRyb2xfbXNnKGRl dm51bSwKKwkJCVVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfU1RBTkRBUkQgfCBVU0JfUkVDSVBfREVW SUNFLAorCQkJVVNCX1JFUV9TRVRfQUREUkVTUywgVVNCX0RFQlVHX0RFVk5VTSwgMCwgTlVMTCwg MCk7CisJCWlmIChyZXQgPCAwKSB7CisJCQlkYmdwX3ByaW50aygiQ291bGQgbm90IG1vdmUgYXR0 YWNoZWQgZGV2aWNlIHRvICVkXG4iLCAKKwkJCQlVU0JfREVCVUdfREVWTlVNKTsKKwkJCWdvdG8g ZXJyOworCQl9CisJCWRldm51bSA9IFVTQl9ERUJVR19ERVZOVU07CisJfQorCisJLyogRW5hYmxl IHRoZSBkZWJ1ZyBpbnRlcmZhY2UgKi8KKwlyZXQgPSBkYmdwX2NvbnRyb2xfbXNnKFVTQl9ERUJV R19ERVZOVU0sCisJCVVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfU1RBTkRBUkQgfCBVU0JfUkVDSVBf REVWSUNFLAorCQlVU0JfUkVRX1NFVF9GRUFUVVJFLCBVU0JfREVWSUNFX0RFQlVHX01PREUsIDAs IE5VTEwsIDApOworCWlmIChyZXQgPCAwKSB7CisJCWRiZ3BfcHJpbnRrKCIgQ291bGQgbm90IGVu YWJsZSB0aGUgZGVidWcgZGV2aWNlXG4iKTsKKwkJZ290byBlcnI7CisJfQorCisJLyogUGVyZm9y bSBhIHNtYWxsIHdyaXRlIHRvIGdldCB0aGUgZXZlbi9vZGQgZGF0YSBzdGF0ZSBpbiBzeW5jCisJ ICovCisJcmV0ID0gZGJncF9idWxrX3dyaXRlKFVTQl9ERUJVR19ERVZOVU0sIGRiZ3BfZW5kcG9p bnRfb3V0LCAiICIsMSk7CisJaWYgKHJldCA8IDApIHsKKwkJZGJncF9wcmludGsoImRiZ3BfYnVs a193cml0ZSBmYWlsZWQ6ICVkXG4iLCByZXQpOworCQlnb3RvIGVycjsKKwl9CisKKworCXJldHVy biAwOworZXJyOgorCS8qIFRoaW5ncyBkaWRuJ3Qgd29yayBzbyByZW1vdmUgbXkgY2xhaW0gKi8K KwljdHJsID0gcmVhZGwoJmVoY2lfZGVidWctPmNvbnRyb2wpOworCWN0cmwgJj0gfihEQkdQX0NM QUlNIHwgREJHUF9PVVQpOworCXdyaXRlbChjdHJsLCAmZWhjaV9kZWJ1Zy0+Y29udHJvbCk7CisJ ZWhjaV9kZWJ1ZyA9IDA7CisKKwlyZXR1cm4gLTE7Cit9CisKK3N0YXRpYyB2b2lkIGVhcmx5X2Ri Z3Bfd3JpdGUoc3RydWN0IGNvbnNvbGUgKmNvbiwgY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBu KQoreworCWludCBjaHVuaywgcmV0OworCWlmICghZWhjaV9kZWJ1ZykKKwkJcmV0dXJuOworCXdo aWxlIChuID4gMCkgeworCQljaHVuayA9IG47CisJCWlmIChjaHVuayA+IERCR1BfTUFYX1BBQ0tF VCkKKwkJCWNodW5rID0gREJHUF9NQVhfUEFDS0VUOworCQlyZXQgPSBkYmdwX2J1bGtfd3JpdGUo VVNCX0RFQlVHX0RFVk5VTSwgCisJCQlkYmdwX2VuZHBvaW50X291dCwgc3RyLCBjaHVuayk7CisJ CXN0ciArPSBjaHVuazsKKwkJbiAtPSBjaHVuazsKKwl9Cit9CisKK3N0YXRpYyBzdHJ1Y3QgY29u c29sZSBlYXJseV9kYmdwX2NvbnNvbGUgPSB7CisJLm5hbWUgPQkJImVhcmx5ZGJnIiwKKwkud3Jp dGUgPQllYXJseV9kYmdwX3dyaXRlLAorCS5mbGFncyA9IAlDT05fUFJJTlRCVUZGRVIsCisJLmlu ZGV4ID0gCS0xLAorfTsKKwogLyogQ29uc29sZSBpbnRlcmZhY2UgdG8gYSBob3N0IGZpbGUgb24g QU1EJ3MgU2ltTm93ISAqLwogCiBzdGF0aWMgaW50IHNpbW5vd19mZDsKQEAgLTI0Miw2ICs4Mjgs MTAgQEAgc3RhdGljIGludCBfX2luaXQgc2V0dXBfZWFybHlfcHJpbnRrKGNoYXIgKmJ1ZikKICAJ CXNpbW5vd19pbml0KGJ1ZiArIDYpOwogIAkJZWFybHlfY29uc29sZSA9ICZzaW1ub3dfY29uc29s ZTsKICAJCWtlZXBfZWFybHkgPSAxOworIAl9IGVsc2UgaWYgKCFzdHJuY21wKGJ1ZiwgImRiZ3Ai LCA0KSkgeworIAkJaWYgKGVhcmx5X2RiZ3BfaW5pdChidWYrNCkgPCAwKSAKKwkJCXJldHVybiAw OworIAkJZWFybHlfY29uc29sZSA9ICZlYXJseV9kYmdwX2NvbnNvbGU7CiAJfQogCiAJaWYgKGtl ZXBfZWFybHkpCkBAIC0yNTEsNCArODQxLDE3IEBAIHN0YXRpYyBpbnQgX19pbml0IHNldHVwX2Vh cmx5X3ByaW50ayhjaGFyICpidWYpCiAJcmVnaXN0ZXJfY29uc29sZShlYXJseV9jb25zb2xlKTsK IAlyZXR1cm4gMDsKIH0KKwordm9pZCBfX2luaXQgZW5hYmxlX2RlYnVnX2NvbnNvbGUoY2hhciAq YnVmKQoreworI2lmIERCR1BfREVCVUcKKwlpZihlYXJseV9jb25zb2xlX2luaXRpYWxpemVkICYm IGVhcmx5X2NvbnNvbGUpIHsKKwkJdW5yZWdpc3Rlcl9jb25zb2xlKGVhcmx5X2NvbnNvbGUpOwor CQllYXJseV9jb25zb2xlX2luaXRpYWxpemVkID0gMDsKKwl9CisJc2V0dXBfZWFybHlfcHJpbnRr KGJ1Zik7CisJa2VlcF9lYXJseSA9IDE7CisjZW5kaWYKK30KKyAKIGVhcmx5X3BhcmFtKCJlYXJs eXByaW50ayIsIHNldHVwX2Vhcmx5X3ByaW50ayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9o b3N0L2VoY2kuaCBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS5oCmluZGV4IDQ2ZmE1N2EuLmExNDI2 MGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS5oCisrKyBiL2RyaXZlcnMvdXNi L2hvc3QvZWhjaS5oCkBAIC00Niw2ICs0Niw3IEBAIHN0cnVjdCBlaGNpX3N0YXRzIHsKIAogI2Rl ZmluZQlFSENJX01BWF9ST09UX1BPUlRTCTE1CQkvKiBzZWUgSENTX05fUE9SVFMgKi8KIAorI2lm bmRlZiBFQVJMWV9QUklOVEsKIHN0cnVjdCBlaGNpX2hjZCB7CQkJLyogb25lIHBlciBjb250cm9s bGVyICovCiAJLyogZ2x1ZSB0byBQQ0kgYW5kIEhDRCBmcmFtZXdvcmsgKi8KIAlzdHJ1Y3QgZWhj aV9jYXBzIF9faW9tZW0gKmNhcHM7CkBAIC0xNjYsNiArMTY3LDcgQEAgdGltZXJfYWN0aW9uIChz dHJ1Y3QgZWhjaV9oY2QgKmVoY2ksIGVudW0gZWhjaV90aW1lcl9hY3Rpb24gYWN0aW9uKQogCQlt b2RfdGltZXIgKCZlaGNpLT53YXRjaGRvZywgdCk7CiAJfQogfQorI2VuZGlmIC8qIEVBUkxZX1BS SU5USyAqLwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCkBAIC0zMDUsNiArMzA3LDggQEAgc3Ry dWN0IGVoY2lfZGJnX3BvcnQgewogCiAjZGVmaW5lCVFURF9ORVhUKGRtYSkJY3B1X3RvX2xlMzIo KHUzMilkbWEpCiAKKyNpZm5kZWYgRUFSTFlfUFJJTlRLCisKIC8qCiAgKiBFSENJIFNwZWNpZmlj YXRpb24gMC45NSBTZWN0aW9uIDMuNQogICogUVREOiBkZXNjcmliZSBkYXRhIHRyYW5zZmVyIGNv bXBvbmVudHMgKGJ1ZmZlciwgZGlyZWN0aW9uLCAuLi4pCkBAIC0zNDAsNyArMzQ0LDcgQEAgc3Ry dWN0IGVoY2lfcXRkIHsKIAlzdHJ1Y3QgdXJiCQkqdXJiOwkJCS8qIHF0ZCdzIHVyYiAqLwogCXNp emVfdAkJCWxlbmd0aDsJCQkvKiBsZW5ndGggb2YgYnVmZmVyICovCiB9IF9fYXR0cmlidXRlX18g KChhbGlnbmVkICgzMikpKTsKLQorI2VuZGlmCiAvKiBtYXNrIE5ha0NudCtUIGluIHFoLT5od19h bHRfbmV4dCAqLwogI2RlZmluZSBRVERfTUFTSyBfX2NvbnN0YW50X2NwdV90b19sZTMyICh+MHgx ZikKIApAQCAtMzkwLDYgKzM5NCw3IEBAIHVuaW9uIGVoY2lfc2hhZG93IHsKICAqIFRoZXNlIGFw cGVhciBpbiBib3RoIHRoZSBhc3luYyBhbmQgKGZvciBpbnRlcnJ1cHQpIHBlcmlvZGljIHNjaGVk dWxlcy4KICAqLwogCisjaWZuZGVmIEVBUkxZX1BSSU5USwogc3RydWN0IGVoY2lfcWggewogCS8q IGZpcnN0IHBhcnQgZGVmaW5lZCBieSBFSENJIHNwZWMgKi8KIAlfX2xlMzIJCQlod19uZXh0Owkg Lyogc2VlIEVIQ0kgMy42LjEgKi8KQEAgLTQzOCw2ICs0NDMsNyBAQCBzdHJ1Y3QgZWhjaV9xaCB7 CiAjZGVmaW5lIE5PX0ZSQU1FICgodW5zaWduZWQgc2hvcnQpfjApCQkJLyogcGljayBuZXcgc3Rh cnQgKi8KIAlzdHJ1Y3QgdXNiX2RldmljZQkqZGV2OwkJLyogYWNjZXNzIHRvIFRUICovCiB9IF9f YXR0cmlidXRlX18gKChhbGlnbmVkICgzMikpKTsKKyNlbmRpZiAvKiBFQVJMWV9QUklUTksgKi8K IAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIApAQCAtNDUxLDYgKzQ1Nyw3IEBAIHN0cnVjdCBlaGNp X2lzb19wYWNrZXQgewogCXUzMgkJCWJ1ZjE7CiB9OwogCisjaWZuZGVmIEVBUkxZX1BSSU5USwog LyogdGVtcG9yYXJ5IHNjaGVkdWxlIGRhdGEgZm9yIHBhY2tldHMgZnJvbSBpc28gdXJicyAoYm90 aCBzcGVlZHMpCiAgKiBlYWNoIHBhY2tldCBpcyBvbmUgbG9naWNhbCB1c2IgdHJhbnNhY3Rpb24g dG8gdGhlIGRldmljZSAobm90IFRUKSwKICAqIGJlZ2lubmluZyBhdCBzdHJlYW0tPm5leHRfdWZy YW1lCkBAIC01ODYsNiArNTkzLDcgQEAgc3RydWN0IGVoY2lfc2l0ZCB7CiAJdW5zaWduZWQJCWZy YW1lOwogCXVuc2lnbmVkCQlpbmRleDsKIH0gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKDMyKSkp OworI2VuZGlmCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKQEAgLTYwNyw2ICs2MTUsOCBAQCBz dHJ1Y3QgZWhjaV9mc3RuIHsKIAl1bmlvbiBlaGNpX3NoYWRvdwlmc3RuX25leHQ7CS8qIHB0ciB0 byBwZXJpb2RpYyBxIGVudHJ5ICovCiB9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkICgzMikpKTsK IAorI2lmbmRlZiBFQVJMWV9QUklOVEsKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogI2lmZGVm IENPTkZJR19VU0JfRUhDSV9ST09UX0hVQl9UVApAQCAtNzA0LDQgKzcxNCw2IEBAIHN0YXRpYyBp bmxpbmUgdm9pZCBlaGNpX3dyaXRlbCAoY29uc3Qgc3RydWN0IGVoY2lfaGNkICplaGNpLAogCiAv Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0qLwogCisjZW5kaWYgLyogRUFSTFlfUFJJTlRLICovCisKICNlbmRp ZiAvKiBfX0xJTlVYX0VIQ0lfSENEX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWkzODYv Zml4bWFwLmggYi9pbmNsdWRlL2FzbS1pMzg2L2ZpeG1hcC5oCmluZGV4IDgwZWEwNTIuLmM2NDQ5 MjIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWkzODYvZml4bWFwLmgKKysrIGIvaW5jbHVkZS9h c20taTM4Ni9maXhtYXAuaApAQCAtNTQsNiArNTQsNyBAQCBleHRlcm4gdW5zaWduZWQgbG9uZyBf X0ZJWEFERFJfVE9QOwogZW51bSBmaXhlZF9hZGRyZXNzZXMgewogCUZJWF9IT0xFLAogCUZJWF9W RFNPLAorCUZJWF9EQkdQX0JBU0UsCiAjaWZkZWYgQ09ORklHX1g4Nl9MT0NBTF9BUElDCiAJRklY X0FQSUNfQkFTRSwJLyogbG9jYWwgKENQVSkgQVBJQykgLS0gcmVxdWlyZWQgZm9yIFNNUCBvciBu b3QgKi8KICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20teDg2XzY0L2ZpeG1hcC5oIGIv aW5jbHVkZS9hc20teDg2XzY0L2ZpeG1hcC5oCmluZGV4IGU5MGUxNjcuLjk4MjkwYzMgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvYXNtLXg4Nl82NC9maXhtYXAuaAorKysgYi9pbmNsdWRlL2FzbS14ODZf NjQvZml4bWFwLmgKQEAgLTM1LDYgKzM1LDcgQEAgZW51bSBmaXhlZF9hZGRyZXNzZXMgewogCVZT WVNDQUxMX0xBU1RfUEFHRSwKIAlWU1lTQ0FMTF9GSVJTVF9QQUdFID0gVlNZU0NBTExfTEFTVF9Q QUdFICsgKChWU1lTQ0FMTF9FTkQtVlNZU0NBTExfU1RBUlQpID4+IFBBR0VfU0hJRlQpIC0gMSwK IAlWU1lTQ0FMTF9IUEVULAorCUZJWF9EQkdQX0JBU0UsCiAJRklYX0hQRVRfQkFTRSwKIAlGSVhf QVBJQ19CQVNFLAkvKiBsb2NhbCAoQ1BVKSBBUElDKSAtLSByZXF1aXJlZCBmb3IgU01QIG9yIG5v dCAqLwogCUZJWF9JT19BUElDX0JBU0VfMCwKQEAgLTg0LDcgKzg1LDcgQEAgc3RhdGljIF9fYWx3 YXlzX2lubGluZSB1bnNpZ25lZCBsb25nIGZpeF90b192aXJ0KGNvbnN0IHVuc2lnbmVkIGludCBp ZHgpCiAJaWYgKGlkeCA+PSBfX2VuZF9vZl9maXhlZF9hZGRyZXNzZXMpCiAJCV9fdGhpc19maXht YXBfZG9lc19ub3RfZXhpc3QoKTsKIAotICAgICAgICByZXR1cm4gX19maXhfdG9fdmlydChpZHgp OworCXJldHVybiBfX2ZpeF90b192aXJ0KGlkeCk7CiB9CiAKICNlbmRpZgo= ------=_Part_88088_539396.1179724758952--