Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965069AbWLMHA3 (ORCPT ); Wed, 13 Dec 2006 02:00:29 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S965071AbWLMHA3 (ORCPT ); Wed, 13 Dec 2006 02:00:29 -0500 Received: from nf-out-0910.google.com ([64.233.182.190]:40665 "EHLO nf-out-0910.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965069AbWLMHA2 (ORCPT ); Wed, 13 Dec 2006 02:00:28 -0500 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:references:x-google-sender-auth; b=SppnbuU0vKNvMJPpnibUFU2jo5iZIpJWy+BWPDA7iCNOoVbHgLDRuSN1RDoidniJ+3R5Bj50y/LFIP5h0oE53sd2jA+G8xRgAUzQk6a90HA7qRW+83AXZuPqS1diESwBoPKXjjJ5VRZRXAxcbpP6AKW106k4lJf0Zx1x/zMJLKE= Message-ID: <86802c440612122300k36e84f96x85ef25ebbf27077d@mail.gmail.com> Date: Tue, 12 Dec 2006 23:00:25 -0800 From: "Yinghai Lu" To: "Eric W. Biederman" Subject: Re: [LinuxBIOS] [linux-usb-devel] [RFC][PATCH 0/2] x86_64 Early usb debug port support. Cc: "Greg KH" , "Peter Stuge" , linux-usb-devel@lists.sourceforge.net, "Stefan Reinauer" , linux-kernel@vger.kernel.org, linuxbios@linuxbios.org, "Andi Kleen" , "David Brownell" In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_153404_25983087.1165993225935" References: <5986589C150B2F49A46483AC44C7BCA49072A5@ssvlexmb2.amd.com> <86802c440612080053s13e5318eq7ae83aff4c7eb21c@mail.gmail.com> X-Google-Sender-Auth: bbba1f33c176bc85 Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 30763 Lines: 419 ------=_Part_153404_25983087.1165993225935 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline On 12/8/06, Eric W. Biederman wrote: > > Your or I missed a bug fix/enhancement in there somewhere. > I found the problem. the __set_fixmap need to __va, so the entries will be referred from PAGE_OFFSET. solution will be 1. move enable_dbgp_console from setup_early_printk, and call it from setup_arch after init_memory_mapping. 2. or make __set_fixmap can use __pa or pa()+__START_KERNEL_map in addtion to _va. please check attached updated patch that is your patch plus 1. YH ------=_Part_153404_25983087.1165993225935 Content-Type: text/x-patch; name=usb_debug.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_evne6v2y Content-Disposition: attachment; filename="usb_debug.patch" ZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9rZXJuZWwvaGVhZC5TIGIvYXJjaC9pMzg2L2tlcm5lbC9o ZWFkLlMKaW5kZXggZWRlZjUwOC4uYzhiMWVjOSAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2tlcm5l bC9oZWFkLlMKKysrIGIvYXJjaC9pMzg2L2tlcm5lbC9oZWFkLlMKQEAgLTE0MSw2ICsxNDEsMTIg QEAgcGFnZV9wZGVfb2Zmc2V0ID0gKF9fUEFHRV9PRkZTRVQgPj4gMjApOwogCWpiIDEwYgogCW1v dmwgJWVkaSwoaW5pdF9wZ190YWJsZXNfZW5kIC0gX19QQUdFX09GRlNFVCkKIAorCS8qIERvIGFu IGVhcmx5IGluaXRpYWxpemF0aW9uIG9mIHRoZSBmaXhtYXAgYXJlYSAqLworCW1vdmwgJChzd2Fw cGVyX3BnX2RpciAtIF9fUEFHRV9PRkZTRVQpLCAlZWR4CisJbW92bCAkKHN3YXBwZXJfcGdfcG1k IC0gX19QQUdFX09GRlNFVCksICVlYXgKKwlhZGRsICQweDAwNywgJWVheAkJCS8qIDB4MDA3ID0g UFJFU0VOVCtSVytVU0VSICovCisJbW92bCAlZWF4LCA0MDkyKCVlZHgpCisKICNpZmRlZiBDT05G SUdfU01QCiAJeG9ybCAlZWJ4LCVlYngJCQkJLyogVGhpcyBpcyB0aGUgYm9vdCBDUFUgKEJTUCkg Ki8KIAlqbXAgM2YKQEAgLTUzMSw2ICs1MzcsOCBAQCBFTlRSWShfc3RleHQpCiAuc2VjdGlvbiAi LmJzcy5wYWdlX2FsaWduZWQiLCJ3IgogRU5UUlkoc3dhcHBlcl9wZ19kaXIpCiAJLmZpbGwgMTAy NCw0LDAKK0VOVFJZKHN3YXBwZXJfcGdfcG1kKQorCS5maWxsIDEwMjQsNCwwCQogRU5UUlkoZW1w dHlfemVyb19wYWdlKQogCS5maWxsIDQwOTYsMSwwCiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2XzY0 L2tlcm5lbC9lYXJseV9wcmludGsuYyBiL2FyY2gveDg2XzY0L2tlcm5lbC9lYXJseV9wcmludGsu YwppbmRleCA0N2I2ZDkwLi44YjRjNmY0IDEwMDY0NAotLS0gYS9hcmNoL3g4Nl82NC9rZXJuZWwv ZWFybHlfcHJpbnRrLmMKKysrIGIvYXJjaC94ODZfNjQva2VybmVsL2Vhcmx5X3ByaW50ay5jCkBA IC0zLDkgKzMsMTkgQEAKICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CiAjaW5jbHVkZSA8bGludXgv c3RyaW5nLmg+CiAjaW5jbHVkZSA8bGludXgvc2NyZWVuX2luZm8uaD4KKyNpbmNsdWRlIDxsaW51 eC91c2JfY2g5Lmg+CisjaW5jbHVkZSA8bGludXgvcGNpX3JlZ3MuaD4KKyNpbmNsdWRlIDxsaW51 eC9wY2lfaWRzLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KICNpbmNsdWRlIDxhc20vaW8u aD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CiAjaW5jbHVkZSA8YXNtL2ZjbnRsLmg+Cisj aW5jbHVkZSA8YXNtL3BjaS1kaXJlY3QuaD4KKyNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgorI2lu Y2x1ZGUgPGFzbS9maXhtYXAuaD4KKyNkZWZpbmUgRUFSTFlfUFJJTlRLCisjaW5jbHVkZSAiLi4v Li4vLi4vZHJpdmVycy91c2IvaG9zdC9laGNpLmgiCisKIAogLyogU2ltcGxlIFZHQSBvdXRwdXQg Ki8KIApAQCAtMTU2LDYgKzE2Niw1NjIgQEAgc3RhdGljIHN0cnVjdCBjb25zb2xlIGVhcmx5X3Nl cmlhbF9jb25zb2xlID0gewogCS5pbmRleCA9CS0xLAogfTsKIAorCitzdGF0aWMgc3RydWN0IGVo Y2lfY2FwcyBfX2lvbWVtICplaGNpX2NhcHM7CitzdGF0aWMgc3RydWN0IGVoY2lfcmVncyBfX2lv bWVtICplaGNpX3JlZ3M7CitzdGF0aWMgc3RydWN0IGVoY2lfZGJnX3BvcnQgX19pb21lbSAqZWhj aV9kZWJ1ZzsKK3N0YXRpYyB1bnNpZ25lZCBkYmdwX2VuZHBvaW50X291dDsKKworI2RlZmluZSBV U0JfREVCVUdfREVWTlVNIDEyNworCisjZGVmaW5lIERCR1BfREFUQV9UT0dHTEUJMHg4ODAwCisj ZGVmaW5lIERCR1BfUElEX1VQREFURSh4LCB0b2spIFwKKwkoKCgoeCkgXiBEQkdQX0RBVEFfVE9H R0xFKSAmIDB4ZmZmZjAwKSB8ICgodG9rKSAmIDB4ZmYpKQorCisjZGVmaW5lIERCR1BfTEVOX1VQ REFURSh4LCBsZW4pICgoKHgpICYgfjB4MGYpIHwgKChsZW4pICYgMHgwZikpCisvKgorICogVVNC IFBhY2tldCBJRHMgKFBJRHMpCisgKi8KKworLyogdG9rZW4gKi8KKyNkZWZpbmUgVVNCX1BJRF9P VVQJCTB4ZTEKKyNkZWZpbmUgVVNCX1BJRF9JTgkJMHg2OQorI2RlZmluZSBVU0JfUElEX1NPRgkJ MHhhNQorI2RlZmluZSBVU0JfUElEX1NFVFVQCQkweDJkCisvKiBoYW5kc2hha2UgKi8KKyNkZWZp bmUgVVNCX1BJRF9BQ0sJCTB4ZDIKKyNkZWZpbmUgVVNCX1BJRF9OQUsJCTB4NWEKKyNkZWZpbmUg VVNCX1BJRF9TVEFMTAkJMHgxZQorI2RlZmluZSBVU0JfUElEX05ZRVQJCTB4OTYKKy8qIGRhdGEg Ki8KKyNkZWZpbmUgVVNCX1BJRF9EQVRBMAkJMHhjMworI2RlZmluZSBVU0JfUElEX0RBVEExCQkw eDRiCisjZGVmaW5lIFVTQl9QSURfREFUQTIJCTB4ODcKKyNkZWZpbmUgVVNCX1BJRF9NREFUQQkJ MHgwZgorLyogU3BlY2lhbCAqLworI2RlZmluZSBVU0JfUElEX1BSRUFNQkxFCTB4M2MKKyNkZWZp bmUgVVNCX1BJRF9FUlIJCTB4M2MKKyNkZWZpbmUgVVNCX1BJRF9TUExJVAkJMHg3OAorI2RlZmlu ZSBVU0JfUElEX1BJTkcJCTB4YjQKKyNkZWZpbmUgVVNCX1BJRF9VTkRFRl8wCQkweGYwCisKKyNk ZWZpbmUgVVNCX1BJRF9EQVRBX1RPR0dMRQkweDg4CisjZGVmaW5lIERCR1BfQ0xBSU0gKERCR1Bf T1dORVIgfCBEQkdQX0VOQUJMRUQgfCBEQkdQX0lOVVNFKQorCisjZGVmaW5lIFBDSV9DQVBfSURf RUhDSV9ERUJVRwkweGEKKworI2RlZmluZSBIVUJfUk9PVF9SRVNFVF9USU1FCTUwCS8qIHRpbWVz IGFyZSBpbiBtc2VjICovCisjZGVmaW5lIEhVQl9TSE9SVF9SRVNFVF9USU1FCTEwCisjZGVmaW5l IEhVQl9MT05HX1JFU0VUX1RJTUUJMjAwCisjZGVmaW5lIEhVQl9SRVNFVF9USU1FT1VUCTUwMAor CisjZGVmaW5lIERCR1BfTUFYX1BBQ0tFVAkJOAorCitzdGF0aWMgaW50IGRiZ3Bfd2FpdF91bnRp bF9jb21wbGV0ZSh2b2lkKQoreworCXVuc2lnbmVkIGN0cmw7CisJZm9yICg7OykgeworCQljdHJs ID0gcmVhZGwoJmVoY2lfZGVidWctPmNvbnRyb2wpOworCQkvKiBTdG9wIHdoZW4gdGhlIHRyYW5z YWN0aW9uIGlzIGZpbmlzaGVkICovCisJCWlmIChjdHJsICYgREJHUF9ET05FKQorCQkJYnJlYWs7 CisJfQorCS8qIE5vdyB0aGF0IHdlIGhhdmUgb2JzZXJ2ZWQgdGhlIGNvbXBsZXRlZCB0cmFuc2Fj dGlvbiwKKwkgKiBjbGVhciB0aGUgZG9uZSBiaXQuCisJICovCisJd3JpdGVsKGN0cmwgfCBEQkdQ X0RPTkUsICZlaGNpX2RlYnVnLT5jb250cm9sKTsKKwlyZXR1cm4gKGN0cmwgJiBEQkdQX0VSUk9S KSA/IC1EQkdQX0VSUkNPREUoY3RybCkgOiBEQkdQX0xFTihjdHJsKTsKK30KKworc3RhdGljIHZv aWQgZGJncF9tZGVsYXkoaW50IG1zKQoreworCWludCBpOworCXdoaWxlIChtcy0tKSB7CisJCWZv ciAoaSA9IDA7IGkgPCAxMDAwOyBpKyspCisJCQlvdXRiKDB4MSwgMHg4MCk7CisJfQorfQorCitz dGF0aWMgdm9pZCBkYmdwX2JyZWF0aCh2b2lkKQoreworCS8qIFNsZWVwIHRvIGdpdmUgdGhlIGRl YnVnIHBvcnQgYSBjaGFuY2UgdG8gYnJlYXRoZSAqLworfQorCitzdGF0aWMgaW50IGRiZ3Bfd2Fp dF91bnRpbF9kb25lKHVuc2lnbmVkIGN0cmwpCit7CisJdW5zaWduZWQgcGlkcywgbHBpZDsKKwlp bnQgcmV0OworCityZXRyeToKKwl3cml0ZWwoY3RybCB8IERCR1BfR08sICZlaGNpX2RlYnVnLT5j b250cm9sKTsKKwlyZXQgPSBkYmdwX3dhaXRfdW50aWxfY29tcGxldGUoKTsKKwlwaWRzID0gcmVh ZGwoJmVoY2lfZGVidWctPnBpZHMpOworCWxwaWQgPSBEQkdQX1BJRF9HRVQocGlkcyk7CisKKwlp ZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCS8qIElmIHRoZSBwb3J0IGlzIGdldHRpbmcg ZnVsbCBvciBpdCBoYXMgZHJvcHBlZCBkYXRhCisJICogc3RhcnQgcGFjaW5nIG91cnNlbHZlcywg bm90IG5lY2Vzc2FyeSBidXQgaXQncyBmcmllbmRseS4KKwkgKi8KKwlpZiAoKGxwaWQgPT0gVVNC X1BJRF9OQUspIHx8IChscGlkID09IFVTQl9QSURfTllFVCkpCisJCWRiZ3BfYnJlYXRoKCk7CisJ CisJLyogSWYgSSBnZXQgYSBOQUNLIHJlaXNzdWUgdGhlIHRyYW5zbWlzc2lvbiAqLworCWlmIChs cGlkID09IFVTQl9QSURfTkFLKQorCQlnb3RvIHJldHJ5OworCisJcmV0dXJuIHJldDsKK30KKwor c3RhdGljIHZvaWQgZGJncF9zZXRfZGF0YShjb25zdCB2b2lkICpidWYsIGludCBzaXplKQorewor CWNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ5dGVzID0gYnVmOworCXVuc2lnbmVkIGxvLCBoaTsKKwlp bnQgaTsKKwlsbyA9IGhpID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgNCAmJiBpIDwgc2l6ZTsgaSsr KQorCQlsbyB8PSBieXRlc1tpXSA8PCAoOCppKTsKKwlmb3IgKDsgaSA8IDggJiYgaSA8IHNpemU7 IGkrKykKKwkJaGkgfD0gYnl0ZXNbaV0gPDwgKDgqKGkgLSA0KSk7CisJd3JpdGVsKGxvLCAmZWhj aV9kZWJ1Zy0+ZGF0YTAzKTsKKwl3cml0ZWwoaGksICZlaGNpX2RlYnVnLT5kYXRhNDcpOworfQor CitzdGF0aWMgdm9pZCBkYmdwX2dldF9kYXRhKHZvaWQgKmJ1ZiwgaW50IHNpemUpCit7CisJdW5z aWduZWQgY2hhciAqYnl0ZXMgPSBidWY7CisJdW5zaWduZWQgbG8sIGhpOworCWludCBpOworCWxv ID0gcmVhZGwoJmVoY2lfZGVidWctPmRhdGEwMyk7CisJaGkgPSByZWFkbCgmZWhjaV9kZWJ1Zy0+ ZGF0YTQ3KTsKKwlmb3IgKGkgPSAwOyBpIDwgNCAmJiBpIDwgc2l6ZTsgaSsrKQorCQlieXRlc1tp XSA9IChsbyA+PiAoOCppKSkgJiAweGZmOworCWZvciAoOyBpIDwgOCAmJiBpIDwgc2l6ZTsgaSsr KQorCQlieXRlc1tpXSA9IChoaSA+PiAoOCooaSAtIDQpKSkgJiAweGZmOworfQorCitzdGF0aWMg aW50IGRiZ3BfYnVsa193cml0ZSh1bnNpZ25lZCBkZXZudW0sIHVuc2lnbmVkIGVuZHBvaW50LCBj b25zdCBjaGFyICpieXRlcywgaW50IHNpemUpCit7CisJdW5zaWduZWQgcGlkcywgYWRkciwgY3Ry bDsKKwlpbnQgcmV0OworCWlmIChzaXplID4gREJHUF9NQVhfUEFDS0VUKQorCQlyZXR1cm4gLTE7 CisKKwlhZGRyID0gREJHUF9FUEFERFIoZGV2bnVtLCBlbmRwb2ludCk7CisKKwlwaWRzID0gcmVh ZGwoJmVoY2lfZGVidWctPnBpZHMpOworCXBpZHMgPSBEQkdQX1BJRF9VUERBVEUocGlkcywgVVNC X1BJRF9PVVQpOworCQorCWN0cmwgPSByZWFkbCgmZWhjaV9kZWJ1Zy0+Y29udHJvbCk7CisJY3Ry bCA9IERCR1BfTEVOX1VQREFURShjdHJsLCBzaXplKTsKKwljdHJsIHw9IERCR1BfT1VUOworCWN0 cmwgfD0gREJHUF9HTzsKKworCWRiZ3Bfc2V0X2RhdGEoYnl0ZXMsIHNpemUpOworCXdyaXRlbChh ZGRyLCAmZWhjaV9kZWJ1Zy0+YWRkcmVzcyk7CisJd3JpdGVsKHBpZHMsICZlaGNpX2RlYnVnLT5w aWRzKTsKKworCXJldCA9IGRiZ3Bfd2FpdF91bnRpbF9kb25lKGN0cmwpOworCWlmIChyZXQgPCAw KSB7CisJCXJldHVybiByZXQ7CisJfQorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgZGJn cF9idWxrX3JlYWQodW5zaWduZWQgZGV2bnVtLCB1bnNpZ25lZCBlbmRwb2ludCwgdm9pZCAqZGF0 YSwgaW50IHNpemUpCit7CisJdW5zaWduZWQgcGlkcywgYWRkciwgY3RybDsKKwlpbnQgcmV0Owor CisJaWYgKHNpemUgPiBEQkdQX01BWF9QQUNLRVQpCisJCXJldHVybiAtMTsKKworCWFkZHIgPSBE QkdQX0VQQUREUihkZXZudW0sIGVuZHBvaW50KTsKKworCXBpZHMgPSByZWFkbCgmZWhjaV9kZWJ1 Zy0+cGlkcyk7CisJcGlkcyA9IERCR1BfUElEX1VQREFURShwaWRzLCBVU0JfUElEX0lOKTsKKwkJ CisJY3RybCA9IHJlYWRsKCZlaGNpX2RlYnVnLT5jb250cm9sKTsKKwljdHJsID0gREJHUF9MRU5f VVBEQVRFKGN0cmwsIHNpemUpOworCWN0cmwgJj0gfkRCR1BfT1VUOworCWN0cmwgfD0gREJHUF9H TzsKKwkJCisJd3JpdGVsKGFkZHIsICZlaGNpX2RlYnVnLT5hZGRyZXNzKTsKKwl3cml0ZWwocGlk cywgJmVoY2lfZGVidWctPnBpZHMpOworCXJldCA9IGRiZ3Bfd2FpdF91bnRpbF9kb25lKGN0cmwp OworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCWlmIChzaXplID4gcmV0KQorCQlzaXpl ID0gcmV0OworCWRiZ3BfZ2V0X2RhdGEoZGF0YSwgc2l6ZSk7CisJcmV0dXJuIHJldDsKK30KKwor c3RhdGljIGludCBkYmdwX2NvbnRyb2xfbXNnKHVuc2lnbmVkIGRldm51bSwgaW50IHJlcXVlc3R0 eXBlLCBpbnQgcmVxdWVzdCwgCisJaW50IHZhbHVlLCBpbnQgaW5kZXgsIHZvaWQgKmRhdGEsIGlu dCBzaXplKQoreworCXVuc2lnbmVkIHBpZHMsIGFkZHIsIGN0cmw7CisJc3RydWN0IHVzYl9jdHJs cmVxdWVzdCByZXE7CisJaW50IHJlYWQ7CisJaW50IHJldDsKKworCXJlYWQgPSAocmVxdWVzdHR5 cGUgJiBVU0JfRElSX0lOKSAhPSAwOworCWlmIChzaXplID4gKHJlYWQ/REJHUF9NQVhfUEFDS0VU OjApKQorCQlyZXR1cm4gLTE7CisJCisJLyogQ29tcHV0ZSB0aGUgY29udHJvbCBtZXNzYWdlICov CisJcmVxLmJSZXF1ZXN0VHlwZSA9IHJlcXVlc3R0eXBlOworCXJlcS5iUmVxdWVzdCA9IHJlcXVl c3Q7CisJcmVxLndWYWx1ZSA9IHZhbHVlOworCXJlcS53SW5kZXggPSBpbmRleDsKKwlyZXEud0xl bmd0aCA9IHNpemU7CisKKwlwaWRzID0gREJHUF9QSURfU0VUKFVTQl9QSURfREFUQTAsIFVTQl9Q SURfU0VUVVApOworCWFkZHIgPSBEQkdQX0VQQUREUihkZXZudW0sIDApOworCisJY3RybCA9IHJl YWRsKCZlaGNpX2RlYnVnLT5jb250cm9sKTsKKwljdHJsID0gREJHUF9MRU5fVVBEQVRFKGN0cmws IHNpemVvZihyZXEpKTsKKwljdHJsIHw9IERCR1BfT1VUOworCWN0cmwgfD0gREJHUF9HTzsKKwor CS8qIFNlbmQgdGhlIHNldHVwIG1lc3NhZ2UgKi8KKwlkYmdwX3NldF9kYXRhKCZyZXEsIHNpemVv ZihyZXEpKTsKKwl3cml0ZWwoYWRkciwgJmVoY2lfZGVidWctPmFkZHJlc3MpOworCXdyaXRlbChw aWRzLCAmZWhjaV9kZWJ1Zy0+cGlkcyk7CisJcmV0ID0gZGJncF93YWl0X3VudGlsX2RvbmUoY3Ry bCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKworCS8qIFJlYWQgdGhlIHJlc3Vs dCAqLworCXJldCA9IGRiZ3BfYnVsa19yZWFkKGRldm51bSwgMCwgZGF0YSwgc2l6ZSk7CisJcmV0 dXJuIHJldDsKK30KKworCisvKiBGaW5kIGEgUENJIGNhcGFiaWxpdHkgKi8KK3N0YXRpYyBfX3Uz MiBfX2luaXQgZmluZF9jYXAoaW50IG51bSwgaW50IHNsb3QsIGludCBmdW5jLCBpbnQgY2FwKSAK K3sgCisJdTggcG9zOworCWludCBieXRlczsKKwlpZiAoIShyZWFkX3BjaV9jb25maWdfMTYobnVt LHNsb3QsZnVuYyxQQ0lfU1RBVFVTKSAmIFBDSV9TVEFUVVNfQ0FQX0xJU1QpKQorCQlyZXR1cm4g MDsKKwlwb3MgPSByZWFkX3BjaV9jb25maWdfYnl0ZShudW0sc2xvdCxmdW5jLFBDSV9DQVBBQklM SVRZX0xJU1QpOworCWZvciAoYnl0ZXMgPSAwOyBieXRlcyA8IDQ4ICYmIHBvcyA+PSAweDQwOyBi eXRlcysrKSB7IAorCQl1OCBpZDsKKwkJcG9zICY9IH4zOyAKKwkJaWQgPSByZWFkX3BjaV9jb25m aWdfYnl0ZShudW0sc2xvdCxmdW5jLHBvcytQQ0lfQ0FQX0xJU1RfSUQpOworCQlpZiAoaWQgPT0g MHhmZikKKwkJCWJyZWFrOworCQlpZiAoaWQgPT0gY2FwKSAKKwkJCXJldHVybiBwb3M7IAorCQlw b3MgPSByZWFkX3BjaV9jb25maWdfYnl0ZShudW0sc2xvdCxmdW5jLHBvcytQQ0lfQ0FQX0xJU1Rf TkVYVCk7IAorCX0gCisJcmV0dXJuIDA7Cit9IAorCitzdGF0aWMgX191MzIgX19pbml0IGZpbmRf ZGJncChpbnQgZWhjaV9udW0sIHVuc2lnbmVkICpyYnVzLCB1bnNpZ25lZCAqcnNsb3QsIHVuc2ln bmVkICpyZnVuYykKK3sKKwl1bnNpZ25lZCBidXMsIHNsb3QsIGZ1bmM7CisJCisJZm9yIChidXMg PSAwOyBidXMgPCAyNTY7IGJ1cysrKSB7CisJCWZvciAoc2xvdCA9IDA7IHNsb3QgPCAzMjsgc2xv dCsrKSB7CisJCQlmb3IgKGZ1bmMgPSAwOyBmdW5jIDwgODsgZnVuYysrKSB7CisJCQkJdTMyIGNs YXNzOworCQkJCXVuc2lnbmVkIGNhcDsKKwkJCQljbGFzcyA9IHJlYWRfcGNpX2NvbmZpZyhidXMs IHNsb3QsIGZ1bmMsIFBDSV9DTEFTU19SRVZJU0lPTik7CisJCQkJaWYgKChjbGFzcyA+PiA4KSAh PSBQQ0lfQ0xBU1NfU0VSSUFMX1VTQl9FSENJKQorCQkJCQljb250aW51ZTsKKwkJCQljYXAgPSBm aW5kX2NhcChidXMsIHNsb3QsIGZ1bmMsIFBDSV9DQVBfSURfRUhDSV9ERUJVRyk7CisJCQkJaWYg KCFjYXApCisJCQkJCWNvbnRpbnVlOworCQkJCWlmIChlaGNpX251bS0tICE9IDApCisJCQkJCWNv bnRpbnVlOworCQkJCSpyYnVzID0gYnVzOworCQkJCSpyc2xvdCA9IHNsb3Q7CisJCQkJKnJmdW5j ID0gZnVuYzsKKwkJCQlyZXR1cm4gY2FwOworCQkJfQorCQl9CisJfQorCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IGVoY2lfcmVzZXRfcG9ydChpbnQgcG9ydCkKK3sKKwl1bnNpZ25lZCBwb3J0 c2M7CisJdW5zaWduZWQgZGVsYXlfdGltZSwgZGVsYXk7CisKKwkvKiBSZXNldCB0aGUgdXNiIGRl YnVnIHBvcnQgKi8KKwlwb3J0c2MgPSByZWFkbCgmZWhjaV9yZWdzLT5wb3J0X3N0YXR1c1twb3J0 IC0gMV0pOworCXBvcnRzYyAmPSB+UE9SVF9QRTsKKwlwb3J0c2MgfD0gUE9SVF9SRVNFVDsKKwl3 cml0ZWwocG9ydHNjLCAmZWhjaV9yZWdzLT5wb3J0X3N0YXR1c1twb3J0IC0gMV0pOworCisJZGVs YXkgPSBIVUJfUk9PVF9SRVNFVF9USU1FOworCWZvciAoZGVsYXlfdGltZSA9IDA7IGRlbGF5X3Rp bWUgPCBIVUJfUkVTRVRfVElNRU9VVDsKKwkgICAgIGRlbGF5X3RpbWUgKz0gZGVsYXkpIHsKKwkJ ZGJncF9tZGVsYXkoZGVsYXkpOworCisJCXBvcnRzYyA9IHJlYWRsKCZlaGNpX3JlZ3MtPnBvcnRf c3RhdHVzW3BvcnQgLSAxXSk7CisJCWlmIChwb3J0c2MgJiBQT1JUX1JFU0VUKSB7CisJCQkvKiBm b3JjZSByZXNldCB0byBjb21wbGV0ZSAqLworCQkJd3JpdGVsKHBvcnRzYyAmIH4oUE9SVF9SV0Nf QklUUyB8IFBPUlRfUkVTRVQpLCAKKwkJCQkmZWhjaV9yZWdzLT5wb3J0X3N0YXR1c1twb3J0IC0g MV0pOworCQkJd2hpbGUgKHBvcnRzYyAmIFBPUlRfUkVTRVQpCisJCQkJcG9ydHNjID0gcmVhZGwo JmVoY2lfcmVncy0+cG9ydF9zdGF0dXNbcG9ydCAtIDFdKTsKKwkJfQorCisJCS8qIERldmljZSB3 ZW50IGF3YXk/ICovCisJCWlmICghKHBvcnRzYyAmIFBPUlRfQ09OTkVDVCkpCisJCQlyZXR1cm4g LUVOT1RDT05OOworCisJCS8qIGJvbWIgb3V0IGNvbXBsZXRlbHkgaWYgc29tZXRoaW5nIHdlaXJk IGhhcHBlbmQgKi8KKwkJaWYgKChwb3J0c2MgJiBQT1JUX0NTQykpCisJCQlyZXR1cm4gLUVJTlZB TDsKKworCQkvKiBJZiB3ZSd2ZSBmaW5pc2hlZCByZXNldHRpbmcsIHRoZW4gYnJlYWsgb3V0IG9m IHRoZSBsb29wICovCisJCWlmICghKHBvcnRzYyAmIFBPUlRfUkVTRVQpICYmIChwb3J0c2MgJiBQ T1JUX1BFKSkKKwkJCXJldHVybiAwOworCX0KKwlyZXR1cm4gLUVCVVNZOworfQorCitzdGF0aWMg aW50IGVoY2lfd2FpdF9mb3JfcG9ydChpbnQgcG9ydCkKK3sKKwl1bnNpZ25lZCBzdGF0dXM7CisJ aW50IHJldCwgcmVwczsKKwlmb3IgKHJlcHMgPSAwOyByZXBzID49IDA7IHJlcHMrKykgeworCQlz dGF0dXMgPSByZWFkbCgmZWhjaV9yZWdzLT5zdGF0dXMpOworCQlpZiAoc3RhdHVzICYgU1RTX1BD RCkgeworCQkJcmV0ID0gZWhjaV9yZXNldF9wb3J0KHBvcnQpOworCQkJaWYgKHJldCA9PSAwKQor CQkJCXJldHVybiAwOworCQl9CisJfQorCXJldHVybiAtRU5PVENPTk47Cit9CisKKworI2RlZmlu ZSBEQkdQX0RFQlVHIDEKKyNpZiBEQkdQX0RFQlVHCit2b2lkIGVhcmx5X3ByaW50ayhjb25zdCBj aGFyICpmbXQsIC4uLik7CisjIGRlZmluZSBkYmdwX3ByaW50ayBlYXJseV9wcmludGsKKyNlbHNl CitzdGF0aWMgaW5saW5lIHZvaWQgZGJncF9wcmludGsoY29uc3QgY2hhciAqZm10LCAuLi4pIHsg fQorI2VuZGlmCisKK3N0YXRpYyBpbnQgZWhjaV9zZXR1cCh2b2lkKQoreworCXVuc2lnbmVkIGNt ZCwgY3RybCwgc3RhdHVzLCBwb3J0c2MsIGhjc19wYXJhbXMsIGRlYnVnX3BvcnQsIG5fcG9ydHM7 CisJaW50IHJldDsKKworCWhjc19wYXJhbXMgPSByZWFkbCgmZWhjaV9jYXBzLT5oY3NfcGFyYW1z KTsKKwlkZWJ1Z19wb3J0ID0gSENTX0RFQlVHX1BPUlQoaGNzX3BhcmFtcyk7CisJbl9wb3J0cyAg ICA9IEhDU19OX1BPUlRTKGhjc19wYXJhbXMpOworCisJZGJncF9wcmludGsoImRlYnVnX3BvcnQ6 ICVkXG4iLCBkZWJ1Z19wb3J0KTsKKwlkYmdwX3ByaW50aygibl9wb3J0czogICAgJWRcbiIsIG5f cG9ydHMpOworCisjaWYgMAorCS8qIFJlc2V0IHRoZSBFSENJIGNvbnRyb2xsZXIgKi8KKwljbWQg PSByZWFkbCgmZWhjaV9yZWdzLT5jb21tYW5kKTsKKwljbWQgfD1DTURfUkVTRVQ7CisJd3JpdGVs KGNtZCwgJmVoY2lfcmVncy0+Y29tbWFuZCk7CisJd2hpbGUgKGNtZCAmIENNRF9SRVNFVCkKKwkJ Y21kID0gcmVhZGwoJmVoY2lfcmVncy0+Y29tbWFuZCk7CisjZW5kaWYKKworCS8qIENsYWltIG93 bmVyc2hpcCwgYnV0IGRvIG5vdCBlbmFibGUgeWV0ICovCisJY3RybCA9IHJlYWRsKCZlaGNpX2Rl YnVnLT5jb250cm9sKTsKKwljdHJsIHw9IERCR1BfT1dORVI7CisJY3RybCAmPSB+KERCR1BfRU5B QkxFRCB8IERCR1BfSU5VU0UpOworCXdyaXRlbChjdHJsLCAmZWhjaV9kZWJ1Zy0+Y29udHJvbCk7 CisKKwkvKiBTdGFydCB0aGUgZWhjaSBydW5uaW5nICovCisJY21kID0gcmVhZGwoJmVoY2lfcmVn cy0+Y29tbWFuZCk7CisJY21kICY9IH4oQ01EX0xSRVNFVCB8IENNRF9JQUFEIHwgQ01EX1BTRSB8 IENNRF9BU0UgfCBDTURfUkVTRVQpOworCWNtZCB8PSBDTURfUlVOOworCXdyaXRlbChjbWQsICZl aGNpX3JlZ3MtPmNvbW1hbmQpOworCisJLyogRW5zdXJlIGV2ZXJ5dGhpbmcgaXMgcm91dGVkIHRv IHRoZSBFSENJICovCisJd3JpdGVsKEZMQUdfQ0YsICZlaGNpX3JlZ3MtPmNvbmZpZ3VyZWRfZmxh Zyk7CisKKwkvKiBXYWl0IHVudGlsIHRoZSBjb250cm9sbGVyIGlzIG5vIGxvbmdlciBoYWx0ZWQg Ki8KKwlkbyB7CisJCXN0YXR1cyA9IHJlYWRsKCZlaGNpX3JlZ3MtPnN0YXR1cyk7CisJfSB3aGls ZSAoc3RhdHVzICYgU1RTX0hBTFQpOworCisJLyogV2FpdCBmb3IgYSBkZXZpY2UgdG8gc2hvdyB1 cCBpbiB0aGUgZGVidWcgcG9ydCAqLworCXJldCA9IGVoY2lfd2FpdF9mb3JfcG9ydChkZWJ1Z19w b3J0KTsKKwlpZiAocmV0IDwgMCkgeworCQlkYmdwX3ByaW50aygiTm8gZGV2aWNlIGZvdW5kIGlu IGRlYnVnIHBvcnRcbiIpOworCQlyZXR1cm4gLTE7CisJfQorCisJLyogRW5hYmxlIHRoZSBkZWJ1 ZyBwb3J0ICovCisJY3RybCA9IHJlYWRsKCZlaGNpX2RlYnVnLT5jb250cm9sKTsKKwljdHJsIHw9 IERCR1BfQ0xBSU07CisJd3JpdGVsKGN0cmwsICZlaGNpX2RlYnVnLT5jb250cm9sKTsKKwljdHJs ID0gcmVhZGwoJmVoY2lfZGVidWctPmNvbnRyb2wpOworCWlmICgoY3RybCAmIERCR1BfQ0xBSU0p ICE9IERCR1BfQ0xBSU0pIHsKKwkJZGJncF9wcmludGsoIk5vIGRldmljZSBpbiBkZWJ1ZyBwb3J0 XG4iKTsKKwkJd3JpdGVsKGN0cmwgJiB+REJHUF9DTEFJTSwgJmVoY2lfZGVidWctPmNvbnRyb2wp OworCQlyZXR1cm4gLTE7CisKKwl9CisKKwkvKiBDb21wbGV0ZWx5IHRyYW5zZmVyIHRoZSBkZWJ1 ZyBkZXZpY2UgdG8gdGhlIGRlYnVnIGNvbnRyb2xsZXIgKi8KKwlwb3J0c2MgPSByZWFkbCgmZWhj aV9yZWdzLT5wb3J0X3N0YXR1c1tkZWJ1Z19wb3J0IC0gMV0pOworCXBvcnRzYyAmPSB+UE9SVF9Q RTsKKwl3cml0ZWwocG9ydHNjLCAmZWhjaV9yZWdzLT5wb3J0X3N0YXR1c1tkZWJ1Z19wb3J0IC0g MV0pOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBfX2luaXQgdm9pZCBlYXJseV9kYmdwX2lu aXQodW5zaWduZWQgZGJncF9udW0pCit7CisJc3RydWN0IHVzYl9kZWJ1Z19kZXNjcmlwdG9yIGRi Z3BfZGVzYzsKKwl2b2lkIF9faW9tZW0gKmVoY2lfYmFyOworCXVuc2lnbmVkIGN0cmwsIGRldm51 bTsKKwl1bnNpZ25lZCBidXMsIHNsb3QsIGZ1bmMsIGNhcDsKKwl1bnNpZ25lZCBkZWJ1Z19wb3J0 LCBiYXIsIG9mZnNldDsKKwl1bnNpZ25lZCBiYXJfdmFsOworCWludCByZXQ7CisKKwlpZiAoIWVh cmx5X3BjaV9hbGxvd2VkKCkpCisJCXJldHVybjsKKworCWRiZ3BfcHJpbnRrKCJkYmdwX251bTog JWRcbiIsIGRiZ3BfbnVtKTsKKwljYXAgPSBmaW5kX2RiZ3AoZGJncF9udW0sICZidXMsICZzbG90 LCAmZnVuYyk7CisJaWYgKCFjYXApCisJCXJldHVybjsKKworCWRiZ3BfcHJpbnRrKCJGb3VuZCBF SENJIGRlYnVnIHBvcnRcbiIpOworCisJZGVidWdfcG9ydCA9IHJlYWRfcGNpX2NvbmZpZyhidXMs IHNsb3QsIGZ1bmMsIGNhcCk7CisJYmFyID0gKGRlYnVnX3BvcnQgPj4gMjkpICYgMHg3OworCWJh ciA9IChiYXIgKiA0KSArIDB4YzsKKwlvZmZzZXQgPSAoZGVidWdfcG9ydCA+PiAxNikgJiAweGZm ZjsKKwlkYmdwX3ByaW50aygiYmFyOiAlMDJ4IG9mZnNldDogJTAzeFxuIiwgYmFyLCBvZmZzZXQp OworCWlmIChiYXIgIT0gUENJX0JBU0VfQUREUkVTU18wKSB7CisJCWRiZ3BfcHJpbnRrKCJvbmx5 IGRlYnVnIHBvcnRzIG9uIGJhciAxIGhhbmRsZWQuXG4iKTsKKwkJcmV0dXJuOworCX0KKworCWJh cl92YWwgPSByZWFkX3BjaV9jb25maWcoYnVzLCBzbG90LCBmdW5jLCBQQ0lfQkFTRV9BRERSRVNT XzApOworCWRiZ3BfcHJpbnRrKCJiYXJfdmFsOiAlMDJ4IG9mZnNldDogJTAzeFxuIiwgYmFyX3Zh bCwgb2Zmc2V0KTsKKwlpZiAoYmFyX3ZhbCAmIH5QQ0lfQkFTRV9BRERSRVNTX01FTV9NQVNLKSB7 CisJCWRiZ3BfcHJpbnRrKCJvbmx5IHNpbXBsZSAzMmJpdCBtbWlvIGJhcnMgc3VwcG9ydGVkXG4i KTsKKwkJcmV0dXJuOworCX0KKwkJCisKKwkvKiBGSVhNRSBJIGRvbid0IGhhdmUgdGhlIGJhciBz aXplIHNvIGp1c3QgZ3Vlc3MgUEFHRV9TSVpFIGlzIG1vcmUKKwkgKiB0aGFuIGVub3VnaC4gIDFL IGlzIHRoZSBiaWdnZXN0IEkgaGF2ZSBzZWVuLgorCSAqLworCWRiZ3BfcHJpbnRrKCJkYmdwIHBy ZS1zZXRfZml4bWFwX25vY2FjaGVcbiIpOworCXNldF9maXhtYXBfbm9jYWNoZShGSVhfREJHUF9C QVNFLCBiYXJfdmFsICYgUEFHRV9NQVNLKTsKKwlkYmdwX3ByaW50aygiZGJncCBwb3N0LXNldF9m aXhtYXBfbm9jYWNoZVxuIik7CisJZWhjaV9iYXIgPSAodm9pZCBfX2lvbWVtICopX19maXhfdG9f dmlydChGSVhfREJHUF9CQVNFKTsKKwllaGNpX2JhciArPSBiYXJfdmFsICYgflBBR0VfTUFTSzsK KwlkYmdwX3ByaW50aygiZWhjaV9iYXI6ICVwXG4iLCBlaGNpX2Jhcik7CisKKwllaGNpX2NhcHMg ID0gZWhjaV9iYXI7CisJZWhjaV9yZWdzICA9IGVoY2lfYmFyICsgSENfTEVOR1RIKHJlYWRsKCZl aGNpX2NhcHMtPmhjX2NhcGJhc2UpKTsKKwllaGNpX2RlYnVnID0gZWhjaV9iYXIgKyBvZmZzZXQ7 CisKKwlyZXQgPSBlaGNpX3NldHVwKCk7CisJaWYgKHJldCA8IDApIHsKKwkJZGJncF9wcmludGso ImVoY2lfc2V0dXAgZmFpbGVkXG4iKTsKKwkJZWhjaV9kZWJ1ZyA9IDA7CisJCXJldHVybjsKKwl9 CisKKwkvKiBGaW5kIHRoZSBkZWJ1ZyBkZXZpY2UgYW5kIG1ha2UgaXQgZGV2aWNlIG51bWJlciAx MjcgKi8KKwlmb3IgKGRldm51bSA9IDA7IGRldm51bSA8PSAxMjc7IGRldm51bSsrKSB7CisJCXJl dCA9IGRiZ3BfY29udHJvbF9tc2coZGV2bnVtLAorCQkJVVNCX0RJUl9JTiB8IFVTQl9UWVBFX1NU QU5EQVJEIHwgVVNCX1JFQ0lQX0RFVklDRSwKKwkJCVVTQl9SRVFfR0VUX0RFU0NSSVBUT1IsIChV U0JfRFRfREVCVUcgPDwgOCksIDAsCisJCQkmZGJncF9kZXNjLCBzaXplb2YoZGJncF9kZXNjKSk7 CisJCWlmIChyZXQgPiAwKQorCQkJYnJlYWs7CisJfQorCWlmIChkZXZudW0gPiAxMjcpIHsKKwkJ ZGJncF9wcmludGsoIkNvdWxkIG5vdCBmaW5kIGF0dGFjaGVkIGRlYnVnIGRldmljZVxuIik7CisJ CWdvdG8gZXJyOworCX0KKwlpZiAocmV0IDwgMCkgeworCQlkYmdwX3ByaW50aygiQXR0YWNoZWQg ZGV2aWNlIGlzIG5vdCBhIGRlYnVnIGRldmljZVxuIik7CisJCWdvdG8gZXJyOworCX0KKwlkYmdw X2VuZHBvaW50X291dCA9IGRiZ3BfZGVzYy5iRGVidWdPdXRFbmRwb2ludDsKKworCS8qIE1vdmUg dGhlIGRldmljZSB0byAxMjcgaWYgaXQgaXNuJ3QgYWxyZWFkeSB0aGVyZSAqLworCWlmIChkZXZu dW0gIT0gVVNCX0RFQlVHX0RFVk5VTSkgeworCQlyZXQgPSBkYmdwX2NvbnRyb2xfbXNnKGRldm51 bSwKKwkJCVVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfU1RBTkRBUkQgfCBVU0JfUkVDSVBfREVWSUNF LAorCQkJVVNCX1JFUV9TRVRfQUREUkVTUywgVVNCX0RFQlVHX0RFVk5VTSwgMCwgTlVMTCwgMCk7 CisJCWlmIChyZXQgPCAwKSB7CisJCQlkYmdwX3ByaW50aygiQ291bGQgbm90IG1vdmUgYXR0YWNo ZWQgZGV2aWNlIHRvICVkXG4iLCAKKwkJCQlVU0JfREVCVUdfREVWTlVNKTsKKwkJCWdvdG8gZXJy OworCQl9CisJCWRldm51bSA9IFVTQl9ERUJVR19ERVZOVU07CisJfQorCisJLyogRW5hYmxlIHRo ZSBkZWJ1ZyBpbnRlcmZhY2UgKi8KKwlyZXQgPSBkYmdwX2NvbnRyb2xfbXNnKFVTQl9ERUJVR19E RVZOVU0sCisJCVVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfU1RBTkRBUkQgfCBVU0JfUkVDSVBfREVW SUNFLAorCQlVU0JfUkVRX1NFVF9GRUFUVVJFLCBVU0JfREVWSUNFX0RFQlVHX01PREUsIDAsIE5V TEwsIDApOworCWlmIChyZXQgPCAwKSB7CisJCWRiZ3BfcHJpbnRrKCIgQ291bGQgbm90IGVuYWJs ZSB0aGUgZGVidWcgZGV2aWNlXG4iKTsKKwkJZ290byBlcnI7CisJfQorCisJLyogUGVyZm9ybSBh IHNtYWxsIHdyaXRlIHRvIGdldCB0aGUgZXZlbi9vZGQgZGF0YSBzdGF0ZSBpbiBzeW5jCisJICov CisJcmV0ID0gZGJncF9idWxrX3dyaXRlKFVTQl9ERUJVR19ERVZOVU0sIGRiZ3BfZW5kcG9pbnRf b3V0LCAiICIsMSk7CisJaWYgKHJldCA8IDApIHsKKwkJZGJncF9wcmludGsoImRiZ3BfYnVsa193 cml0ZSBmYWlsZWQ6ICVkXG4iLCByZXQpOworCQlnb3RvIGVycjsKKwl9CisKKworCXJldHVybjsK K2VycjoKKwkvKiBUaGluZ3MgZGlkbid0IHdvcmsgc28gcmVtb3ZlIG15IGNsYWltICovCisJY3Ry bCA9IHJlYWRsKCZlaGNpX2RlYnVnLT5jb250cm9sKTsKKwljdHJsICY9IH4oREJHUF9DTEFJTSB8 IERCR1BfT1VUKTsKKwl3cml0ZWwoY3RybCwgJmVoY2lfZGVidWctPmNvbnRyb2wpOworCWVoY2lf ZGVidWcgPSAwOworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQgZWFybHlfZGJncF93cml0ZShz dHJ1Y3QgY29uc29sZSAqY29uLCBjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIG4pCit7CisJaW50 IGNodW5rLCByZXQ7CisJaWYgKCFlaGNpX2RlYnVnKQorCQlyZXR1cm47CisJd2hpbGUgKG4gPiAw KSB7CisJCWNodW5rID0gbjsKKwkJaWYgKGNodW5rID4gREJHUF9NQVhfUEFDS0VUKQorCQkJY2h1 bmsgPSBEQkdQX01BWF9QQUNLRVQ7CisJCXJldCA9IGRiZ3BfYnVsa193cml0ZShVU0JfREVCVUdf REVWTlVNLCAKKwkJCWRiZ3BfZW5kcG9pbnRfb3V0LCBzdHIsIGNodW5rKTsKKwkJc3RyICs9IGNo dW5rOworCQluIC09IGNodW5rOworCX0KK30KKworc3RhdGljIHN0cnVjdCBjb25zb2xlIGVhcmx5 X2RiZ3BfY29uc29sZSA9IHsKKwkubmFtZSA9CQkiZWFybHlkYmciLAorCS53cml0ZSA9CWVhcmx5 X2RiZ3Bfd3JpdGUsCisJLmZsYWdzID0gCUNPTl9QUklOVEJVRkZFUiwKKwkuaW5kZXggPSAJLTEs Cit9OworCiAvKiBDb25zb2xlIGludGVyZmFjZSB0byBhIGhvc3QgZmlsZSBvbiBBTUQncyBTaW1O b3chICovCiAKIHN0YXRpYyBpbnQgc2ltbm93X2ZkOwpAQCAtMjAwLDYgKzc2Niw3IEBAIHN0YXRp YyBzdHJ1Y3QgY29uc29sZSBzaW1ub3dfY29uc29sZSA9IHsKIC8qIERpcmVjdCBpbnRlcmZhY2Ug Zm9yIGVtZXJnZW5jaWVzICovCiBzdHJ1Y3QgY29uc29sZSAqZWFybHlfY29uc29sZSA9ICZlYXJs eV92Z2FfY29uc29sZTsKIHN0YXRpYyBpbnQgZWFybHlfY29uc29sZV9pbml0aWFsaXplZCA9IDA7 CitzdGF0aWMgaW50IGVhcmx5X2NvbnNvbGVfZGJncF9udW0gPSAtMTsKIAogdm9pZCBlYXJseV9w cmludGsoY29uc3QgY2hhciAqZm10LCAuLi4pCiB7CkBAIC0yNDMsMTIgKzgxMCw0NCBAQCBzdGF0 aWMgaW50IF9faW5pdCBzZXR1cF9lYXJseV9wcmludGsoY2hhciAqYnVmKQogIAkJc2ltbm93X2lu aXQoYnVmICsgNik7CiAgCQllYXJseV9jb25zb2xlID0gJnNpbW5vd19jb25zb2xlOwogIAkJa2Vl cF9lYXJseSA9IDE7CisJfSBlbHNlIGlmICghc3RybmNtcChidWYsICJkYmdwIiwgNCkpIHsKKwkJ Y2hhciAqZTsKKwkJZWFybHlfY29uc29sZV9pbml0aWFsaXplZCA9IDA7CisJCWVhcmx5X2NvbnNv bGVfZGJncF9udW0gPSAwOworCQlpZiAoKihidWYrNCkpIHsKKwkJCWVhcmx5X2NvbnNvbGVfZGJn cF9udW0gPSBzaW1wbGVfc3RydG91bChidWYrNCwgJmUsIDEwKTsKKwkJfQogCX0KLQlyZWdpc3Rl cl9jb25zb2xlKGVhcmx5X2NvbnNvbGUpOworCisJaWYoZWFybHlfY29uc29sZV9pbml0aWFsaXpl ZCkJCisJCXJlZ2lzdGVyX2NvbnNvbGUoZWFybHlfY29uc29sZSk7CisKIAlyZXR1cm4gMDsKIH0K IAogZWFybHlfcGFyYW0oImVhcmx5cHJpbnRrIiwgc2V0dXBfZWFybHlfcHJpbnRrKTsKK3ZvaWQg X19pbml0IGVuYWJsZV9kYmdwX2NvbnNvbGUodm9pZCkKK3sKKwlzdGF0aWMgY29uc3QgY2hhciBk YmdwX3Rlc3Rfc3RyW10gPSAKKwkJIlRoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgdGhl IGxhenkgZG9nIVxuIjsKKwkKKyNpZiBEQkdQX0RFQlVHCisJZWFybHlfY29uc29sZV9kYmdwX251 bSA9IDA7CisjZW5kaWYKKwlpZihlYXJseV9jb25zb2xlX2RiZ3BfbnVtID09IC0xKSByZXR1cm47 CisKKwllYXJseV9kYmdwX2luaXQoZWFybHlfY29uc29sZV9kYmdwX251bSk7CisJZWFybHlfZGJn cF93cml0ZSgmZWFybHlfZGJncF9jb25zb2xlLCAKKwkJZGJncF90ZXN0X3N0ciwgc2l6ZW9mKGRi Z3BfdGVzdF9zdHIpIC0gMSk7CisKKwlpZihlYXJseV9jb25zb2xlX2luaXRpYWxpemVkICYmIGVh cmx5X2NvbnNvbGUpCQorCQl1bnJlZ2lzdGVyX2NvbnNvbGUoZWFybHlfY29uc29sZSk7CisKKwll YXJseV9jb25zb2xlX2luaXRpYWxpemVkID0gMTsKKwllYXJseV9jb25zb2xlID0gJmVhcmx5X2Ri Z3BfY29uc29sZTsKKwlrZWVwX2Vhcmx5ID0gMTsKKwlyZWdpc3Rlcl9jb25zb2xlKGVhcmx5X2Nv bnNvbGUpOworfQogCiB2b2lkIF9faW5pdCBkaXNhYmxlX2Vhcmx5X3ByaW50ayh2b2lkKQogewpk aWZmIC0tZ2l0IGEvYXJjaC94ODZfNjQva2VybmVsL2hlYWQuUyBiL2FyY2gveDg2XzY0L2tlcm5l bC9oZWFkLlMKaW5kZXggMWU2ZjgwOC4uZDdlNzU5YiAxMDA2NDQKLS0tIGEvYXJjaC94ODZfNjQv a2VybmVsL2hlYWQuUworKysgYi9hcmNoL3g4Nl82NC9rZXJuZWwvaGVhZC5TCkBAIC0yNzEsNyAr MjcxLDE2IEBAIE5FWFRfUEFHRShsZXZlbDNfa2VybmVsX3BndCkKIAkuZmlsbAk1MTAsOCwwCiAJ LyogKDJeNDgtKDIqMTAyNCoxMDI0KjEwMjQpLSgoMl4zOSkqNTExKSkvKDJeMzApID0gNTEwICov CiAJLnF1YWQJcGh5c19sZXZlbDJfa2VybmVsX3BndCB8IDB4MDA3Ci0JLmZpbGwJMSw4LDAKKwku cXVhZAlwaHlzX2xldmVsMl9maXhtYXBfcGd0IHwgMHgwMDcKKworTkVYVF9QQUdFKGxldmVsMl9m aXhtYXBfcGd0KQorCS5maWxsCTUwNiw4LDAKKwkucXVhZAlwaHlzX2xldmVsMV9maXhtYXBfcGd0 IHwgMHgwMDcKKwkvKiA4TUIgcmVzZXJ2ZWQgZm9yIHZzeXNjYWxscyArIGEgMk1CIGhvbGUgPSA0 ICsgMSBlbnRyaWVzICovCisJLmZpbGwJNSw4LDAKKworTkVYVF9QQUdFKGxldmVsMV9maXhtYXBf cGd0KQorCS5maWxsCTUxMiw4LDAKIAogTkVYVF9QQUdFKGxldmVsMl9pZGVudF9wZ3QpCiAJLyog NDBNQiBmb3IgYm9vdHVwLiAJKi8KZGlmZiAtLWdpdCBhL2FyY2gveDg2XzY0L2tlcm5lbC9zZXR1 cC5jIGIvYXJjaC94ODZfNjQva2VybmVsL3NldHVwLmMKaW5kZXggYWY0MjVhOC4uZjcwZmQxYyAx MDA2NDQKLS0tIGEvYXJjaC94ODZfNjQva2VybmVsL3NldHVwLmMKKysrIGIvYXJjaC94ODZfNjQv a2VybmVsL3NldHVwLmMKQEAgLTM0MSw2ICszNDEsOCBAQCBzdGF0aWMgdm9pZCBkaXNjb3Zlcl9l YmRhKHZvaWQpCiAJCWViZGFfc2l6ZSA9IDY0KjEwMjQ7CiB9CiAKK2V4dGVybiB2b2lkIF9faW5p dCBlbmFibGVfZGJncF9jb25zb2xlKHZvaWQpOworCiB2b2lkIF9faW5pdCBzZXR1cF9hcmNoKGNo YXIgKipjbWRsaW5lX3ApCiB7CiAJcHJpbnRrKEtFUk5fSU5GTyAiQ29tbWFuZCBsaW5lOiAlc1xu Iiwgc2F2ZWRfY29tbWFuZF9saW5lKTsKQEAgLTM5NCw2ICszOTYsMTEgQEAgdm9pZCBfX2luaXQg c2V0dXBfYXJjaChjaGFyICoqY21kbGluZV9wKQogCiAJaW5pdF9tZW1vcnlfbWFwcGluZygwLCAo ZW5kX3Bmbl9tYXAgPDwgUEFHRV9TSElGVCkpOwogCisJLyogd2UgbmVlZCB0byBjYWxsIF9fc2V0 X2ZpeG1hcCBmb3IgZGJwZyBpbml0LCBhbmQgaXQgbmVlZCBfdmEgCisJICogc28gd2FpdCBkaXJl Y3QgbWFwcGluZyBmcm9tIFBBR0VfT0ZGU0VUIGlzIHNldAorCSAqLworCWVuYWJsZV9kYmdwX2Nv bnNvbGUoKTsKKwogCWRtaV9zY2FuX21hY2hpbmUoKTsKIAogCXphcF9sb3dfbWFwcGluZ3MoMCk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2VoY2kuaCBiL2RyaXZlcnMvdXNiL2hvc3Qv ZWhjaS5oCmluZGV4IDc0ZGJjNmMuLjExZTcyOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hv c3QvZWhjaS5oCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS5oCkBAIC00Niw2ICs0Niw3IEBA IHN0cnVjdCBlaGNpX3N0YXRzIHsKIAogI2RlZmluZQlFSENJX01BWF9ST09UX1BPUlRTCTE1CQkv KiBzZWUgSENTX05fUE9SVFMgKi8KIAorI2lmbmRlZiBFQVJMWV9QUklOVEsKIHN0cnVjdCBlaGNp X2hjZCB7CQkJLyogb25lIHBlciBjb250cm9sbGVyICovCiAJLyogZ2x1ZSB0byBQQ0kgYW5kIEhD RCBmcmFtZXdvcmsgKi8KIAlzdHJ1Y3QgZWhjaV9jYXBzIF9faW9tZW0gKmNhcHM7CkBAIC0xNjEs NiArMTYyLDcgQEAgdGltZXJfYWN0aW9uIChzdHJ1Y3QgZWhjaV9oY2QgKmVoY2ksIGVudW0gZWhj aV90aW1lcl9hY3Rpb24gYWN0aW9uKQogCQltb2RfdGltZXIgKCZlaGNpLT53YXRjaGRvZywgdCk7 CiAJfQogfQorI2VuZGlmIC8qIEVBUkxZX1BSSU5USyAqLwogCiAvKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0q LwogCkBAIC0zMDAsNiArMzAyLDggQEAgc3RydWN0IGVoY2lfZGJnX3BvcnQgewogCiAjZGVmaW5l CVFURF9ORVhUKGRtYSkJY3B1X3RvX2xlMzIoKHUzMilkbWEpCiAKKyNpZm5kZWYgRUFSTFlfUFJJ TlRLCisKIC8qCiAgKiBFSENJIFNwZWNpZmljYXRpb24gMC45NSBTZWN0aW9uIDMuNQogICogUVRE OiBkZXNjcmliZSBkYXRhIHRyYW5zZmVyIGNvbXBvbmVudHMgKGJ1ZmZlciwgZGlyZWN0aW9uLCAu Li4pCkBAIC0zMzUsNyArMzM5LDcgQEAgc3RydWN0IGVoY2lfcXRkIHsKIAlzdHJ1Y3QgdXJiCQkq dXJiOwkJCS8qIHF0ZCdzIHVyYiAqLwogCXNpemVfdAkJCWxlbmd0aDsJCQkvKiBsZW5ndGggb2Yg YnVmZmVyICovCiB9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkICgzMikpKTsKLQorI2VuZGlmCiAv KiBtYXNrIE5ha0NudCtUIGluIHFoLT5od19hbHRfbmV4dCAqLwogI2RlZmluZSBRVERfTUFTSyBf X2NvbnN0YW50X2NwdV90b19sZTMyICh+MHgxZikKIApAQCAtMzg1LDYgKzM4OSw3IEBAIHVuaW9u IGVoY2lfc2hhZG93IHsKICAqIFRoZXNlIGFwcGVhciBpbiBib3RoIHRoZSBhc3luYyBhbmQgKGZv ciBpbnRlcnJ1cHQpIHBlcmlvZGljIHNjaGVkdWxlcy4KICAqLwogCisjaWZuZGVmIEVBUkxZX1BS SU5USwogc3RydWN0IGVoY2lfcWggewogCS8qIGZpcnN0IHBhcnQgZGVmaW5lZCBieSBFSENJIHNw ZWMgKi8KIAlfX2xlMzIJCQlod19uZXh0OwkgLyogc2VlIEVIQ0kgMy42LjEgKi8KQEAgLTQzMyw2 ICs0MzgsNyBAQCBzdHJ1Y3QgZWhjaV9xaCB7CiAjZGVmaW5lIE5PX0ZSQU1FICgodW5zaWduZWQg c2hvcnQpfjApCQkJLyogcGljayBuZXcgc3RhcnQgKi8KIAlzdHJ1Y3QgdXNiX2RldmljZQkqZGV2 OwkJLyogYWNjZXNzIHRvIFRUICovCiB9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkICgzMikpKTsK KyNlbmRpZiAvKiBFQVJMWV9QUklUTksgKi8KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIApAQCAt NDQ2LDYgKzQ1Miw3IEBAIHN0cnVjdCBlaGNpX2lzb19wYWNrZXQgewogCXUzMgkJCWJ1ZjE7CiB9 OwogCisjaWZuZGVmIEVBUkxZX1BSSU5USwogLyogdGVtcG9yYXJ5IHNjaGVkdWxlIGRhdGEgZm9y IHBhY2tldHMgZnJvbSBpc28gdXJicyAoYm90aCBzcGVlZHMpCiAgKiBlYWNoIHBhY2tldCBpcyBv bmUgbG9naWNhbCB1c2IgdHJhbnNhY3Rpb24gdG8gdGhlIGRldmljZSAobm90IFRUKSwKICAqIGJl Z2lubmluZyBhdCBzdHJlYW0tPm5leHRfdWZyYW1lCkBAIC01ODEsNiArNTg4LDcgQEAgc3RydWN0 IGVoY2lfc2l0ZCB7CiAJdW5zaWduZWQJCWZyYW1lOwogCXVuc2lnbmVkCQlpbmRleDsKIH0gX19h dHRyaWJ1dGVfXyAoKGFsaWduZWQgKDMyKSkpOworI2VuZGlmCiAKIC8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSovCiAKQEAgLTYwMiw2ICs2MTAsOCBAQCBzdHJ1Y3QgZWhjaV9mc3RuIHsKIAl1bmlvbiBlaGNp X3NoYWRvdwlmc3RuX25leHQ7CS8qIHB0ciB0byBwZXJpb2RpYyBxIGVudHJ5ICovCiB9IF9fYXR0 cmlidXRlX18gKChhbGlnbmVkICgzMikpKTsKIAorI2lmbmRlZiBFQVJMWV9QUklOVEsKKwogLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKi8KIAogI2lmZGVmIENPTkZJR19VU0JfRUhDSV9ST09UX0hVQl9UVApA QCAtNjYwLDQgKzY3MCw2IEBAIGVoY2lfcG9ydF9zcGVlZChzdHJ1Y3QgZWhjaV9oY2QgKmVoY2ks IHVuc2lnbmVkIGludCBwb3J0c2MpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKKyNlbmRpZiAv KiBFQVJMWV9QUklOVEsgKi8KKwogI2VuZGlmIC8qIF9fTElOVVhfRUhDSV9IQ0RfSCAqLwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9hc20taTM4Ni9maXhtYXAuaCBiL2luY2x1ZGUvYXNtLWkzODYvZml4 bWFwLmgKaW5kZXggMDI0MjhjYi4uZWEwODg4NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20taTM4 Ni9maXhtYXAuaAorKysgYi9pbmNsdWRlL2FzbS1pMzg2L2ZpeG1hcC5oCkBAIC01Niw2ICs1Niw3 IEBAIGV4dGVybiB1bnNpZ25lZCBsb25nIF9fRklYQUREUl9UT1A7CiBlbnVtIGZpeGVkX2FkZHJl c3NlcyB7CiAJRklYX0hPTEUsCiAJRklYX1ZEU08sCisJRklYX0RCR1BfQkFTRSwKICNpZmRlZiBD T05GSUdfWDg2X0xPQ0FMX0FQSUMKIAlGSVhfQVBJQ19CQVNFLAkvKiBsb2NhbCAoQ1BVKSBBUElD KSAtLSByZXF1aXJlZCBmb3IgU01QIG9yIG5vdCAqLwogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNs dWRlL2FzbS14ODZfNjQvZml4bWFwLmggYi9pbmNsdWRlL2FzbS14ODZfNjQvZml4bWFwLmgKaW5k ZXggMWI2MjBkYi4uMWYyOTc4YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20teDg2XzY0L2ZpeG1h cC5oCisrKyBiL2luY2x1ZGUvYXNtLXg4Nl82NC9maXhtYXAuaApAQCAtMzYsNiArMzYsNyBAQCBl bnVtIGZpeGVkX2FkZHJlc3NlcyB7CiAJVlNZU0NBTExfTEFTVF9QQUdFLAogCVZTWVNDQUxMX0ZJ UlNUX1BBR0UgPSBWU1lTQ0FMTF9MQVNUX1BBR0UgKyAoKFZTWVNDQUxMX0VORC1WU1lTQ0FMTF9T VEFSVCkgPj4gUEFHRV9TSElGVCkgLSAxLAogCVZTWVNDQUxMX0hQRVQsCisJRklYX0RCR1BfQkFT RSwKIAlGSVhfSFBFVF9CQVNFLAogCUZJWF9BUElDX0JBU0UsCS8qIGxvY2FsIChDUFUpIEFQSUMp IC0tIHJlcXVpcmVkIGZvciBTTVAgb3Igbm90ICovCiAJRklYX0lPX0FQSUNfQkFTRV8wLAo= ------=_Part_153404_25983087.1165993225935-- - 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/