From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751457Ab2LLG6g (ORCPT ); Wed, 12 Dec 2012 01:58:36 -0500 Received: from terminus.zytor.com ([198.137.202.10]:42041 "EHLO mail.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750841Ab2LLG6e (ORCPT ); Wed, 12 Dec 2012 01:58:34 -0500 Message-ID: <50C82ABF.3020907@zytor.com> Date: Tue, 11 Dec 2012 22:57:03 -0800 From: "H. Peter Anvin" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0 MIME-Version: 1.0 To: Yinghai Lu CC: Borislav Petkov , "Yu, Fenghua" , "mingo@kernel.org" , "linux-kernel@vger.kernel.org" , "tglx@linutronix.de" , "hpa@linux.intel.com" , "linux-tip-commits@vger.kernel.org" , Konrad Rzeszutek Wilk , Stefano Stabellini Subject: Re: [tip:x86/microcode] x86/microcode_intel_early.c: Early update ucode on Intel's CPU References: <3E5A0FA7E9CA944F9D5414FEC6C71220470F154E@ORSMSX105.amr.corp.intel.com> <50C6AB63.9070008@zytor.com> <50C6D3DF.3030209@zytor.com> <20121211145716.GB8873@liondog.tnic> <50C763C2.5020603@zytor.com> <20121211170605.GD28827@liondog.tnic> <50C76F9E.4080001@zytor.com> <50C7C859.60405@zytor.com> In-Reply-To: Content-Type: multipart/mixed; boundary="------------010501020701050301010103" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is a multi-part message in MIME format. --------------010501020701050301010103 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 12/11/2012 04:27 PM, Yinghai Lu wrote: > On Tue, Dec 11, 2012 at 3:57 PM, H. Peter Anvin wrote: >> Well, we could invoke it on the bootloader page tables, but as you say >> it may not be a good idea... depending on how much memory we may be >> talking about. One solution -- which I have to admit is starting to >> sound really good -- is to set up a #PF handler which cycles through a >> set of page tables and creates a "virtual identity map"... it does have >> the advantage of making the entire physical address space available >> without any additional funnies. > > so that #PF handler will work before > arch/x86/kernel/setup.c::setup_arch/early_trap_init > > early_strap_intit will install another handler there for #PF > > for 64bit, moving early_ioremap_init ahead is very simple, like attach patch > > but for 32 bit looks like it is not that easy. > Here is an incomplete patch for illustration purposes only what I mean with an early-mapping #PF handler. This creates a set of transient page tables on demand which allows us to access memory as if it was all mapped, but using only O(1) storage. The replacement policy is trivial: if we run out, we start over from scratch. The "identity page tables" used during the transition to high virtual addresses are kind of magic; there is a bunch of extra aliases created, but the way it is done guarantees that the range we actually cares about is mapped correctly. The aliases don't matter and get scrubbed shortly thereafter anyway. This should, obviously, be used on native only -- in particular Xen should instead rely on the initial page tables provided by the domain builder, which should map all physical memory. Once the proper memory-map-aware page tables are built, we should turn this off by swapping to the newly built real init_level4_pgt instead. -hpa -- H. Peter Anvin, Intel Open Source Technology Center I work for Intel. I don't speak on their behalf. --------------010501020701050301010103 Content-Type: text/plain; charset=UTF-8; name="diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="diff" ZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfNjRfdHlwZXMuaCBi L2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfNjRfdHlwZXMuaAppbmRleCA3NjZlYTE2 Li4yZDg4MzQ0IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlXzY0 X3R5cGVzLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZV82NF90eXBlcy5o CkBAIC0xLDYgKzEsOCBAQAogI2lmbmRlZiBfQVNNX1g4Nl9QR1RBQkxFXzY0X0RFRlNfSAog I2RlZmluZSBfQVNNX1g4Nl9QR1RBQkxFXzY0X0RFRlNfSAogCisjaW5jbHVkZSA8YXNtL3Nw YXJzZW1lbS5oPgorCiAjaWZuZGVmIF9fQVNTRU1CTFlfXwogI2luY2x1ZGUgPGxpbnV4L3R5 cGVzLmg+CiAKQEAgLTYwLDQgKzYyLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgeyBwdGV2YWxfdCBw dGU7IH0gcHRlX3Q7CiAjZGVmaW5lIE1PRFVMRVNfRU5EICAgICAgX0FDKDB4ZmZmZmZmZmZm ZjAwMDAwMCwgVUwpCiAjZGVmaW5lIE1PRFVMRVNfTEVOICAgKE1PRFVMRVNfRU5EIC0gTU9E VUxFU19WQUREUikKIAorI2RlZmluZSBFQVJMWV9EWU5BTUlDX1BBR0VfVEFCTEVTCTY0CisK ICNlbmRpZiAvKiBfQVNNX1g4Nl9QR1RBQkxFXzY0X0RFRlNfSCAqLwpkaWZmIC0tZ2l0IGEv YXJjaC94ODYva2VybmVsL2hlYWQ2NC5jIGIvYXJjaC94ODYva2VybmVsL2hlYWQ2NC5jCmlu ZGV4IDAzN2RmNTcuLjk0NDNjNzcgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9oZWFk NjQuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvaGVhZDY0LmMKQEAgLTI2LDExICsyNiw3MyBA QAogI2luY2x1ZGUgPGFzbS9lODIwLmg+CiAjaW5jbHVkZSA8YXNtL2Jpb3NfZWJkYS5oPgog Ci1zdGF0aWMgdm9pZCBfX2luaXQgemFwX2lkZW50aXR5X21hcHBpbmdzKHZvaWQpCisvKgor ICogTWFuYWdlIHBhZ2UgdGFibGVzIHZlcnkgZWFybHkgb24uCisgKi8KK2V4dGVybiBwZ2Rf dCBlYXJseV9sZXZlbDRfcGd0W1BUUlNfUEVSX1BHRF07CitleHRlcm4gcG1kX3QgZWFybHlf ZHluYW1pY19wZ3RzW0VBUkxZX0RZTkFNSUNfUEFHRV9UQUJMRVNdW1BUUlNfUEVSX1BNRF07 CitzdGF0aWMgdW5zaWduZWQgaW50IF9faW5pdGRhdGEgbmV4dF9lYXJseV9wZ3QgPSAyLCBl YXJseV9wZ3RfcmVzZXRzID0gMDsKKworLyogV2lwZSBhbGwgZWFybHkgcGFnZSB0YWJsZXMg ZXhjZXB0IGZvciB0aGUga2VybmVsIHN5bWJvbCBtYXAgKi8KK3N0YXRpYyB2b2lkIF9faW5p dCByZXNldF9lYXJseV9wYWdlX3RhYmxlcyh2b2lkKQogewotCXBnZF90ICpwZ2QgPSBwZ2Rf b2Zmc2V0X2soMFVMKTsKLQlwZ2RfY2xlYXIocGdkKTsKLQlfX2ZsdXNoX3RsYl9hbGwoKTsK Kwl1bnNpZ25lZCBsb25nIGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgUFRSU19QRVJfUEdELTE7 IGkrKykKKwkJZWFybHlfbGV2ZWw0X3BndFtpXS5wZ2QgPSAwOworCisJbmV4dF9lYXJseV9w Z3QgPSAwOworCWVhcmx5X3BndF9yZXNldHMrKzsKKworCV9fbmF0aXZlX2ZsdXNoX3RsYigp OworfQorCisvKiBDcmVhdGUgYSBuZXcgUE1EIGVudHJ5ICovCitpbnQgX19pbml0IGVhcmx5 X21ha2VfcGd0YWJsZSh1bnNpZ25lZCBsb25nIGFkZHJlc3MpCit7CisJdW5zaWduZWQgbG9u ZyBwaHlzYWRkciA9IGFkZHJlc3MgLSBfX1BBR0VfT0ZGU0VUOworCXVuc2lnbmVkIGxvbmcg aTsKKwlwZ2R2YWxfdCBwZ2QsICpwZ2RfcDsKKwlwdWR2YWxfdCAqcHVkX3A7CisJcG1kdmFs X3QgcG1kLCAqcG1kX3A7CisKKwlpZiAocGh5c2FkZHIgPj0gTUFYTUVNKQorCQlyZXR1cm4g LTE7CS8qIEludmFsaWQgYWRkcmVzcyAtIHB1a2UgKi8KKworCWkgPSAoYWRkcmVzcyA+PiBQ R0RJUl9TSElGVCkgJiAoUFRSU19QRVJfUEdEIC0gMSk7CisJcGdkX3AgPSAmZWFybHlfbGV2 ZWw0X3BndFtpXS5wZ2Q7CisJcGdkID0gKnBnZF9wOworCisJLyoKKwkgKiBUaGUgdXNlIG9m IF9fU1RBUlRfS0VSTkVMX21hcCByYXRoZXIgdGhhbiBfX1BBR0VfT0ZGU0VUIGhlcmUgaXMK KwkgKiBjcml0aWNhbCAtLSBfX1BBR0VfT0ZGU0VUIHdvdWxkIHBvaW50IHVzIGJhY2sgaW50 byB0aGUgZHluYW1pYworCSAqIHJhbmdlIGFuZCB3ZSBtaWdodCBlbmQgdXAgbG9vcGluZyBm b3JldmVyLi4uCisJICovCisJaWYgKHBnZCAmJiBuZXh0X2Vhcmx5X3BndCA8IEVBUkxZX0RZ TkFNSUNfUEFHRV9UQUJMRVMpIHsKKwkJcHVkX3AgPSAocHVkdmFsX3QgKikoKHBnZCAmIFBU RV9QRk5fTUFTSykgKyBfX1NUQVJUX0tFUk5FTF9tYXApOworCX0gZWxzZSB7CisJCWlmIChu ZXh0X2Vhcmx5X3BndCA+PSBFQVJMWV9EWU5BTUlDX1BBR0VfVEFCTEVTLTEpCisJCQlyZXNl dF9lYXJseV9wYWdlX3RhYmxlcygpOworCisJCXB1ZF9wID0gKHB1ZHZhbF90ICopZWFybHlf ZHluYW1pY19wZ3RzW25leHRfZWFybHlfcGd0KytdOworCQlmb3IgKGkgPSAwOyBpIDwgUFRS U19QRVJfUFVEOyBpKyspCisJCQlwdWRfcFtpXSA9IDA7CisKKwkJKnBnZF9wID0gKHBnZHZh bF90KXB1ZF9wIC0gX19TVEFSVF9LRVJORUxfbWFwICsgX0tFUk5QR19UQUJMRTsKKwl9CisJ aSA9IChhZGRyZXNzID4+IFBVRF9TSElGVCkgJiAoUFRSU19QRVJfUFVEIC0gMSk7CisJcHVk X3AgKz0gaTsKKworCXBtZF9wID0gKHBtZHZhbF90ICopZWFybHlfZHluYW1pY19wZ3RzW25l eHRfZWFybHlfcGd0KytdOworCXBtZCA9IChwaHlzYWRkciAmIFBVRF9NQVNLKSArIChfX1BB R0VfS0VSTkVMX0xBUkdFICYgfl9QQUdFX0dMT0JBTCk7CisJZm9yIChpID0gMDsgaSA8IFBU UlNfUEVSX1BNRDsgaSsrKSB7CisJCXBtZF9wW2ldID0gcG1kOworCQlwbWQgKz0gUE1EX1NJ WkU7CisJfQorCisJKnB1ZF9wID0gKHB1ZHZhbF90KXBtZF9wIC0gX19TVEFSVF9LRVJORUxf bWFwICsgX0tFUk5QR19UQUJMRTsKKworCXJldHVybiAwOwogfQogCiAvKiBEb24ndCBhZGQg YSBwcmludGsgaW4gdGhlcmUuIHByaW50ayByZWxpZXMgb24gdGhlIFBEQSB3aGljaCBpcyBu b3QgaW5pdGlhbGl6ZWQgCkBAIC03MCwxMiArMTMyLDEzIEBAIHZvaWQgX19pbml0IHg4Nl82 NF9zdGFydF9rZXJuZWwoY2hhciAqIHJlYWxfbW9kZV9kYXRhKQogCQkJCShfX1NUQVJUX0tF Uk5FTCAmIFBHRElSX01BU0spKSk7CiAJQlVJTERfQlVHX09OKF9fZml4X3RvX3ZpcnQoX19l bmRfb2ZfZml4ZWRfYWRkcmVzc2VzKSA8PSBNT0RVTEVTX0VORCk7CiAKKwkvKiBLaWxsIG9m ZiB0aGUgaWRlbnRpdHktbWFwIHRyYW1wb2xpbmUgKi8KKwlyZXNldF9lYXJseV9wYWdlX3Rh YmxlcygpOworCiAJLyogY2xlYXIgYnNzIGJlZm9yZSBzZXRfaW50cl9nYXRlIHdpdGggZWFy bHlfaWR0X2hhbmRsZXIgKi8KIAljbGVhcl9ic3MoKTsKIAotCS8qIE1ha2UgTlVMTCBwb2lu dGVycyBzZWdmYXVsdCAqLwotCXphcF9pZGVudGl0eV9tYXBwaW5ncygpOwotCisJLyogWFhY IC0gdGhpcyBpcyB3cm9uZy4uLiB3ZSBuZWVkIHRvIGJ1aWxkIHBhZ2UgdGFibGVzIGZyb20g c2NyYXRjaCAqLwogCW1heF9wZm5fbWFwcGVkID0gS0VSTkVMX0lNQUdFX1NJWkUgPj4gUEFH RV9TSElGVDsKIAogCWZvciAoaSA9IDA7IGkgPCBOVU1fRVhDRVBUSU9OX1ZFQ1RPUlM7IGkr KykgewpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2hlYWRfNjQuUyBiL2FyY2gveDg2 L2tlcm5lbC9oZWFkXzY0LlMKaW5kZXggOTRiZjljYy4uZTEzZmY5MSAxMDA2NDQKLS0tIGEv YXJjaC94ODYva2VybmVsL2hlYWRfNjQuUworKysgYi9hcmNoL3g4Ni9rZXJuZWwvaGVhZF82 NC5TCkBAIC00NywxNCArNDcsMTMgQEAgTDNfU1RBUlRfS0VSTkVMID0gcHVkX2luZGV4KF9f U1RBUlRfS0VSTkVMX21hcCkKIAkuY29kZTY0CiAJLmdsb2JsIHN0YXJ0dXBfNjQKIHN0YXJ0 dXBfNjQ6Ci0KIAkvKgogCSAqIEF0IHRoaXMgcG9pbnQgdGhlIENQVSBydW5zIGluIDY0Yml0 IG1vZGUgQ1MuTCA9IDEgQ1MuRCA9IDEsCiAJICogYW5kIHNvbWVvbmUgaGFzIGxvYWRlZCBh biBpZGVudGl0eSBtYXBwZWQgcGFnZSB0YWJsZQogCSAqIGZvciB1cy4gIFRoZXNlIGlkZW50 aXR5IG1hcHBlZCBwYWdlIHRhYmxlcyBtYXAgYWxsIG9mIHRoZQogCSAqIGtlcm5lbCBwYWdl cyBhbmQgcG9zc2libHkgYWxsIG9mIG1lbW9yeS4KIAkgKgotCSAqICVlc2kgaG9sZHMgYSBw aHlzaWNhbCBwb2ludGVyIHRvIHJlYWxfbW9kZV9kYXRhLgorCSAqICVyc2kgaG9sZHMgYSBw aHlzaWNhbCBwb2ludGVyIHRvIHJlYWxfbW9kZV9kYXRhLgogCSAqCiAJICogV2UgY29tZSBo ZXJlIGVpdGhlciBkaXJlY3RseSBmcm9tIGEgNjRiaXQgYm9vdGxvYWRlciwgb3IgZnJvbQog CSAqIGFyY2gveDg2XzY0L2Jvb3QvY29tcHJlc3NlZC9oZWFkLlMuCkBAIC02Niw3ICs2NSw4 IEBAIHN0YXJ0dXBfNjQ6CiAJICogdGFibGVzIGFuZCB0aGVuIHJlbG9hZCB0aGVtLgogCSAq LwogCi0JLyogQ29tcHV0ZSB0aGUgZGVsdGEgYmV0d2VlbiB0aGUgYWRkcmVzcyBJIGFtIGNv bXBpbGVkIHRvIHJ1biBhdCBhbmQgdGhlCisJLyoKKwkgKiBDb21wdXRlIHRoZSBkZWx0YSBi ZXR3ZWVuIHRoZSBhZGRyZXNzIEkgYW0gY29tcGlsZWQgdG8gcnVuIGF0IGFuZCB0aGUKIAkg KiBhZGRyZXNzIEkgYW0gYWN0dWFsbHkgcnVubmluZyBhdC4KIAkgKi8KIAlsZWFxCV90ZXh0 KCVyaXApLCAlcmJwCkBAIC03OCw1MyArNzgsNjYgQEAgc3RhcnR1cF82NDoKIAl0ZXN0bAkl ZWF4LCAlZWF4CiAJam56CWJhZF9hZGRyZXNzCiAKLQkvKiBJcyB0aGUgYWRkcmVzcyB0b28g bGFyZ2U/ICovCi0JbGVhcQlfdGV4dCglcmlwKSwgJXJkeAotCW1vdnEJJFBHRElSX1NJWkUs ICVyYXgKLQljbXBxCSVyYXgsICVyZHgKLQlqYWUJYmFkX2FkZHJlc3MKLQotCS8qIEZpeHVw IHRoZSBwaHlzaWNhbCBhZGRyZXNzZXMgaW4gdGhlIHBhZ2UgdGFibGUKKwkvKgorCSAqIElz IHRoZSBhZGRyZXNzIHRvbyBsYXJnZT8KIAkgKi8KLQlhZGRxCSVyYnAsIGluaXRfbGV2ZWw0 X3BndCArIDAoJXJpcCkKLQlhZGRxCSVyYnAsIGluaXRfbGV2ZWw0X3BndCArIChMNF9QQUdF X09GRlNFVCo4KSglcmlwKQotCWFkZHEJJXJicCwgaW5pdF9sZXZlbDRfcGd0ICsgKEw0X1NU QVJUX0tFUk5FTCo4KSglcmlwKQorCWxlYXEJX3RleHQoJXJpcCksICVyYXgKKwlzaHJxCSRN QVhfUEhZU01FTV9CSVRTLCAlcmF4CisJam56CWJhZF9hZGRyZXNzCiAKLQlhZGRxCSVyYnAs IGxldmVsM19pZGVudF9wZ3QgKyAwKCVyaXApCisJLyoKKwkgKiBGaXh1cCB0aGUgcGh5c2lj YWwgYWRkcmVzc2VzIGluIHRoZSBwYWdlIHRhYmxlCisJICovCisJYWRkcQklcmJwLCBlYXJs eV9sZXZlbDRfcGd0ICsgKEw0X1NUQVJUX0tFUk5FTCo4KSglcmlwKQogCiAJYWRkcQklcmJw LCBsZXZlbDNfa2VybmVsX3BndCArICg1MTAqOCkoJXJpcCkKIAlhZGRxCSVyYnAsIGxldmVs M19rZXJuZWxfcGd0ICsgKDUxMSo4KSglcmlwKQogCiAJYWRkcQklcmJwLCBsZXZlbDJfZml4 bWFwX3BndCArICg1MDYqOCkoJXJpcCkKIAotCS8qIEFkZCBhbiBJZGVudGl0eSBtYXBwaW5n IGlmIEkgYW0gYWJvdmUgMUcgKi8KKwkvKgorCSAqIFNldCB1cCB0aGUgaWRlbnRpdHkgbWFw cGluZyBmb3IgdGhlIHN3aXRjaG92ZXIuICBUaGVzZQorCSAqIGVudHJpZXMgc2hvdWxkICpO T1QqIGhhdmUgdGhlIGdsb2JhbCBiaXQgc2V0ISAgVGhpcyBhbHNvCisJICogY3JlYXRlcyBh IGJ1bmNoIG9mIG5vbnNlbnNlIGVudHJpZXMgYnV0IHRoYXQgaXMgZmluZSAtLQorCSAqIGl0 IGF2b2lkcyBwcm9ibGVtcyBhcm91bmQgd3JhcGFyb3VuZC4KKwkgKi8KIAlsZWFxCV90ZXh0 KCVyaXApLCAlcmRpCi0JYW5kcQkkUE1EX1BBR0VfTUFTSywgJXJkaQorCWxlYXEJZWFybHlf bGV2ZWw0X3BndCglcmlwKSwgJXJieAogCiAJbW92cQklcmRpLCAlcmF4Ci0Jc2hycQkkUFVE X1NISUZULCAlcmF4Ci0JYW5kcQkkKFBUUlNfUEVSX1BVRCAtIDEpLCAlcmF4Ci0JanoJaWRl bnRfY29tcGxldGUKKwlzaHJxCSRQR0RJUl9TSElGVCwgJXJheAorCisJbGVhcQkoNDA5NiAr IF9LRVJOUEdfVEFCTEUpKCVyYngpLCAlcmR4CisJbW92cQklcmR4LCAwKCVyYngsJXJheCw4 KQorCW1vdnEJJXJkeCwgOCglcmJ4LCVyYXgsOCkKIAotCWxlYXEJKGxldmVsMl9zcGFyZV9w Z3QgLSBfX1NUQVJUX0tFUk5FTF9tYXAgKyBfS0VSTlBHX1RBQkxFKSglcmJwKSwgJXJkeAot CWxlYXEJbGV2ZWwzX2lkZW50X3BndCglcmlwKSwgJXJieAotCW1vdnEJJXJkeCwgMCglcmJ4 LCAlcmF4LCA4KQorCWFkZHEJJDQwOTYsICVyZHgKKwltb3ZxCSVyZGksICVyYXgKKwlzaHJx CSRQVURfU0hJRlQsICVyYXgKKwlhbmRsCSQoUFRSU19QRVJfUFVELTEpLCAlZWF4CisJbW92 cQklcmR4LCAoNDA5NiswKSglcmJ4LCVyYXgsOCkKKwltb3ZxCSVyZHgsICg0MDk2KzgpKCVy YngsJXJheCw4KQogCisJYWRkcQkkODE5MiwgJXJieAogCW1vdnEJJXJkaSwgJXJheAotCXNo cnEJJFBNRF9TSElGVCwgJXJheAotCWFuZHEJJChQVFJTX1BFUl9QTUQgLSAxKSwgJXJheAot CWxlYXEJX19QQUdFX0tFUk5FTF9JREVOVF9MQVJHRV9FWEVDKCVyZGkpLCAlcmR4Ci0JbGVh cQlsZXZlbDJfc3BhcmVfcGd0KCVyaXApLCAlcmJ4Ci0JbW92cQklcmR4LCAwKCVyYngsICVy YXgsIDgpCi1pZGVudF9jb21wbGV0ZToKKwlzaHJxCSRQTURfU0hJRlQsICVyZGkKKwlhZGRx CSQoX19QQUdFX0tFUk5FTF9MQVJHRV9FWEVDICYgfl9QQUdFX0dMT0JBTCksICVyYXgKKwlt b3ZsCSRQVFJTX1BFUl9QTUQsICVlY3gKIAorMToKKwlhbmRxCSQoUFRSU19QRVJfUE1EIC0g MSksICVyZGkKKwltb3ZxCSVyYXgsICglcmJ4LCVyZGksOCkKKwlpbmNxCSVyZGkKKwlhZGRx CSRQTURfU0laRSwgJXJheAorCWRlY2wJJWVjeAorCWpuegkxYgorCQogCS8qCiAJICogRml4 dXAgdGhlIGtlcm5lbCB0ZXh0K2RhdGEgdmlydHVhbCBhZGRyZXNzZXMuIE5vdGUgdGhhdAog CSAqIHdlIG1pZ2h0IHdyaXRlIGludmFsaWQgcG1kcywgd2hlbiB0aGUga2VybmVsIGlzIHJl bG9jYXRlZAogCSAqIGNsZWFudXBfaGlnaG1hcCgpIGZpeGVzIHRoaXMgdXAgYWxvbmcgd2l0 aCB0aGUgbWFwcGluZ3MKIAkgKiBiZXlvbmQgX2VuZC4KIAkgKi8KLQogCWxlYXEJbGV2ZWwy X2tlcm5lbF9wZ3QoJXJpcCksICVyZGkKIAlsZWFxCTQwOTYoJXJkaSksICVyOAogCS8qIFNl ZSBpZiBpdCBpcyBhIHZhbGlkIHBhZ2UgdGFibGUgZW50cnkgKi8KQEAgLTE0OSw3ICsxNjIs NyBAQCBFTlRSWShzZWNvbmRhcnlfc3RhcnR1cF82NCkKIAkgKiBBdCB0aGlzIHBvaW50IHRo ZSBDUFUgcnVucyBpbiA2NGJpdCBtb2RlIENTLkwgPSAxIENTLkQgPSAxLAogCSAqIGFuZCBz b21lb25lIGhhcyBsb2FkZWQgYSBtYXBwZWQgcGFnZSB0YWJsZS4KIAkgKgotCSAqICVlc2kg aG9sZHMgYSBwaHlzaWNhbCBwb2ludGVyIHRvIHJlYWxfbW9kZV9kYXRhLgorCSAqICVyc2kg aG9sZHMgYSBwaHlzaWNhbCBwb2ludGVyIHRvIHJlYWxfbW9kZV9kYXRhLgogCSAqCiAJICog V2UgY29tZSBoZXJlIGVpdGhlciBmcm9tIHN0YXJ0dXBfNjQgKHVzaW5nIHBoeXNpY2FsIGFk ZHJlc3NlcykKIAkgKiBvciBmcm9tIHRyYW1wb2xpbmUuUyAodXNpbmcgdmlydHVhbCBhZGRy ZXNzZXMpLgpAQCAtMTk2LDcgKzIwOSw3IEBAIEVOVFJZKHNlY29uZGFyeV9zdGFydHVwXzY0 KQogCW1vdnEJJXJheCwgJWNyMAogCiAJLyogU2V0dXAgYSBib290IHRpbWUgc3RhY2sgKi8K LQltb3ZxIHN0YWNrX3N0YXJ0KCVyaXApLCVyc3AKKwltb3ZxIHN0YWNrX3N0YXJ0KCVyaXAp LCAlcnNwCiAKIAkvKiB6ZXJvIEVGTEFHUyBhZnRlciBzZXR0aW5nIHJzcCAqLwogCXB1c2hx ICQwCkBAIC0yMzYsMzEgKzI0OSwzMSBAQCBFTlRSWShzZWNvbmRhcnlfc3RhcnR1cF82NCkK IAltb3ZsCWluaXRpYWxfZ3MrNCglcmlwKSwlZWR4CiAJd3Jtc3IJCiAKLQkvKiBlc2kgaXMg cG9pbnRlciB0byByZWFsIG1vZGUgc3RydWN0dXJlIHdpdGggaW50ZXJlc3RpbmcgaW5mby4K KwkvKiByc2kgaXMgcG9pbnRlciB0byByZWFsIG1vZGUgc3RydWN0dXJlIHdpdGggaW50ZXJl c3RpbmcgaW5mby4KIAkgICBwYXNzIGl0IHRvIEMgKi8KLQltb3ZsCSVlc2ksICVlZGkKKwlt b3ZxCSVyc2ksICVyZGkKIAkKIAkvKiBGaW5hbGx5IGp1bXAgdG8gcnVuIEMgY29kZSBhbmQg dG8gYmUgb24gcmVhbCBrZXJuZWwgYWRkcmVzcwogCSAqIFNpbmNlIHdlIGFyZSBydW5uaW5n IG9uIGlkZW50aXR5LW1hcHBlZCBzcGFjZSB3ZSBoYXZlIHRvIGp1bXAKIAkgKiB0byB0aGUg ZnVsbCA2NGJpdCBhZGRyZXNzLCB0aGlzIGlzIG9ubHkgcG9zc2libGUgYXMgaW5kaXJlY3QK IAkgKiBqdW1wLiAgSW4gYWRkaXRpb24gd2UgbmVlZCB0byBlbnN1cmUgJWNzIGlzIHNldCBz byB3ZSBtYWtlIHRoaXMKLQkgKiBhIGZhciByZXR1cm4uCisJICogYSBmYXIganVtcC4KIAkg Ki8KLQltb3ZxCWluaXRpYWxfY29kZSglcmlwKSwlcmF4CiAJcHVzaHEJJDAJCSMgZmFrZSBy ZXR1cm4gYWRkcmVzcyB0byBzdG9wIHVud2luZGVyCi0JcHVzaHEJJF9fS0VSTkVMX0NTCSMg c2V0IGNvcnJlY3QgY3MKLQlwdXNocQklcmF4CQkjIHRhcmdldCBhZGRyZXNzIGluIG5lZ2F0 aXZlIHNwYWNlCi0JbHJldHEKKwkvKiBnYXMgMi4yMiBpcyBidWdneSBhbmQgbWlzLWFzc2Vt YmxlcyBsam1wcSAqLworCXJleDY0IGxqbXAgKmluaXRpYWxfY29kZSglcmlwKQogCiAJLyog U01QIGJvb3R1cCBjaGFuZ2VzIHRoZXNlIHR3byAqLwogCV9fUkVGREFUQQotCS5hbGlnbgk4 Ci0JRU5UUlkoaW5pdGlhbF9jb2RlKQorCS5iYWxpZ24JOAorCUdMT0JBTChpbml0aWFsX2Nv ZGUpCiAJLnF1YWQJeDg2XzY0X3N0YXJ0X2tlcm5lbAotCUVOVFJZKGluaXRpYWxfZ3MpCisJ LndvcmQJX19LRVJORUxfQ1MKKwkuYmFsaWduCTgKKwlHTE9CQUwoaW5pdGlhbF9ncykKIAku cXVhZAlJTklUX1BFUl9DUFVfVkFSKGlycV9zdGFja191bmlvbikKIAotCUVOVFJZKHN0YWNr X3N0YXJ0KQorCUdMT0JBTChzdGFja19zdGFydCkKIAkucXVhZCAgaW5pdF90aHJlYWRfdW5p b24rVEhSRUFEX1NJWkUtOAogCS53b3JkICAwCiAJX19GSU5JVERBVEEKQEAgLTI2OCw3ICsy ODEsNyBAQCBFTlRSWShzZWNvbmRhcnlfc3RhcnR1cF82NCkKIGJhZF9hZGRyZXNzOgogCWpt cCBiYWRfYWRkcmVzcwogCi0JLnNlY3Rpb24gIi5pbml0LnRleHQiLCJheCIKKwlfX0lOSVQK IAkuZ2xvYmwgZWFybHlfaWR0X2hhbmRsZXJzCiBlYXJseV9pZHRfaGFuZGxlcnM6CiAJIyAx MDQoJXJzcCkgJXJmbGFncwpAQCAtMzA1LDE0ICszMTgsMjIgQEAgRU5UUlkoZWFybHlfaWR0 X2hhbmRsZXIpCiAJcHVzaHEgJXIxMQkJIyAgMCglcnNwKQogCiAJY21wbCAkX19LRVJORUxf Q1MsOTYoJXJzcCkKLQlqbmUgMTBmCisJam5lIDExZgogCisJY21wbCAkMTQsNzIoJXJzcCkJ IyBQYWdlIGZhdWx0PworCWpueiAxMGYKKwlHRVRfQ1IyX0lOVE8oJXJkaSkJIyBjYW4gY2xv YmJlciBhbnkgdm9sYXRpbGUgcmVnaXN0ZXIgaWYgcHYKKwljYWxsIGVhcmx5X21ha2VfcGd0 YWJsZQorCWFuZGwgJWVheCwlZWF4CisJanogMjBmCQkJIyBBbGwgZ29vZAorCisxMDoKIAls ZWFxIDg4KCVyc3ApLCVyZGkJIyBQb2ludGVyIHRvICVyaXAKIAljYWxsIGVhcmx5X2ZpeHVw X2V4Y2VwdGlvbgogCWFuZGwgJWVheCwlZWF4CiAJam56IDIwZgkJCSMgRm91bmQgYW4gZXhj ZXB0aW9uIGVudHJ5CiAKLTEwOgorMTE6CiAjaWZkZWYgQ09ORklHX0VBUkxZX1BSSU5USwog CUdFVF9DUjJfSU5UTyglcjkpCSMgY2FuIGNsb2JiZXIgYW55IHZvbGF0aWxlIHJlZ2lzdGVy IGlmIHB2CiAJbW92bCA4MCglcnNwKSwlcjhkCSMgZXJyb3IgY29kZQpAQCAtMzM0LDcgKzM1 NSw3IEBAIEVOVFJZKGVhcmx5X2lkdF9oYW5kbGVyKQogMToJaGx0CiAJam1wIDFiCiAKLTIw OgkjIEV4Y2VwdGlvbiB0YWJsZSBlbnRyeSBmb3VuZAorMjA6CSMgRXhjZXB0aW9uIHRhYmxl IGVudHJ5IGZvdW5kIG9yIHBhZ2UgdGFibGUgZ2VuZXJhdGVkCiAJcG9wcSAlcjExCiAJcG9w cSAlcjEwCiAJcG9wcSAlcjkKQEAgLTM0OCw2ICszNjksOCBAQCBFTlRSWShlYXJseV9pZHRf aGFuZGxlcikKIAlkZWNsIGVhcmx5X3JlY3Vyc2lvbl9mbGFnKCVyaXApCiAJSU5URVJSVVBU X1JFVFVSTgogCisJX19JTklUREFUQQorCQogCS5iYWxpZ24gNAogZWFybHlfcmVjdXJzaW9u X2ZsYWc6CiAJLmxvbmcgMApAQCAtMzU4LDExICszODEsMTAgQEAgZWFybHlfaWR0X21zZzoK IGVhcmx5X2lkdF9yaXBtc2c6CiAJLmFzY2l6ICJSSVAgJXNcbiIKICNlbmRpZiAvKiBDT05G SUdfRUFSTFlfUFJJTlRLICovCi0JLnByZXZpb3VzCiAKICNkZWZpbmUgTkVYVF9QQUdFKG5h bWUpIFwKIAkuYmFsaWduCVBBR0VfU0laRTsgXAotRU5UUlkobmFtZSkKK0dMT0JBTChuYW1l KQogCiAvKiBBdXRvbWF0ZSB0aGUgY3JlYXRpb24gb2YgMSB0byAxIG1hcHBpbmcgcG1kIGVu dHJpZXMgKi8KICNkZWZpbmUgUE1EUyhTVEFSVCwgUEVSTSwgQ09VTlQpCQkJXApAQCAtMzcy LDQ2ICszOTQsMjEgQEAgRU5UUlkobmFtZSkKIAlpID0gaSArIDEgOwkJCQkJXAogCS5lbmRy CiAKLQkuZGF0YQotCS8qCi0JICogVGhpcyBkZWZhdWx0IHNldHRpbmcgZ2VuZXJhdGVzIGFu IGlkZW50IG1hcHBpbmcgYXQgYWRkcmVzcyAweDEwMDAwMAotCSAqIGFuZCBhIG1hcHBpbmcg Zm9yIHRoZSBrZXJuZWwgdGhhdCBwcmVjaXNlbHkgbWFwcyB2aXJ0dWFsIGFkZHJlc3MKLQkg KiAweGZmZmZmZmZmODAwMDAwMDAgdG8gcGh5c2ljYWwgYWRkcmVzcyAweDAwMDAwMC4gKGFs d2F5cyB1c2luZwotCSAqIDJNYnl0ZSBsYXJnZSBwYWdlcyBwcm92aWRlZCBieSBQQUUgbW9k ZSkKLQkgKi8KLU5FWFRfUEFHRShpbml0X2xldmVsNF9wZ3QpCi0JLnF1YWQJbGV2ZWwzX2lk ZW50X3BndCAtIF9fU1RBUlRfS0VSTkVMX21hcCArIF9LRVJOUEdfVEFCTEUKLQkub3JnCWlu aXRfbGV2ZWw0X3BndCArIEw0X1BBR0VfT0ZGU0VUKjgsIDAKLQkucXVhZAlsZXZlbDNfaWRl bnRfcGd0IC0gX19TVEFSVF9LRVJORUxfbWFwICsgX0tFUk5QR19UQUJMRQotCS5vcmcJaW5p dF9sZXZlbDRfcGd0ICsgTDRfU1RBUlRfS0VSTkVMKjgsIDAKLQkvKiAoMl40OC0oMioxMDI0 KjEwMjQqMTAyNCkpLygyXjM5KSA9IDUxMSAqLworCV9fSU5JVERBVEEKK05FWFRfUEFHRShl YXJseV9sZXZlbDRfcGd0KQorCS5maWxsCTUxMSw4LDAKIAkucXVhZAlsZXZlbDNfa2VybmVs X3BndCAtIF9fU1RBUlRfS0VSTkVMX21hcCArIF9QQUdFX1RBQkxFCiAKLU5FWFRfUEFHRShs ZXZlbDNfaWRlbnRfcGd0KQotCS5xdWFkCWxldmVsMl9pZGVudF9wZ3QgLSBfX1NUQVJUX0tF Uk5FTF9tYXAgKyBfS0VSTlBHX1RBQkxFCi0JLmZpbGwJNTExLDgsMAorTkVYVF9QQUdFKGVh cmx5X2R5bmFtaWNfcGd0cykKKwkuZmlsbAk1MTIqRUFSTFlfRFlOQU1JQ19QQUdFX1RBQkxF Uyw4LDAKIAorCS5kYXRhCiBORVhUX1BBR0UobGV2ZWwzX2tlcm5lbF9wZ3QpCiAJLmZpbGwJ TDNfU1RBUlRfS0VSTkVMLDgsMAogCS8qICgyXjQ4LSgyKjEwMjQqMTAyNCoxMDI0KS0oKDJe MzkpKjUxMSkpLygyXjMwKSA9IDUxMCAqLwogCS5xdWFkCWxldmVsMl9rZXJuZWxfcGd0IC0g X19TVEFSVF9LRVJORUxfbWFwICsgX0tFUk5QR19UQUJMRQogCS5xdWFkCWxldmVsMl9maXht YXBfcGd0IC0gX19TVEFSVF9LRVJORUxfbWFwICsgX1BBR0VfVEFCTEUKIAotTkVYVF9QQUdF KGxldmVsMl9maXhtYXBfcGd0KQotCS5maWxsCTUwNiw4LDAKLQkucXVhZAlsZXZlbDFfZml4 bWFwX3BndCAtIF9fU1RBUlRfS0VSTkVMX21hcCArIF9QQUdFX1RBQkxFCi0JLyogOE1CIHJl c2VydmVkIGZvciB2c3lzY2FsbHMgKyBhIDJNQiBob2xlID0gNCArIDEgZW50cmllcyAqLwot CS5maWxsCTUsOCwwCi0KLU5FWFRfUEFHRShsZXZlbDFfZml4bWFwX3BndCkKLQkuZmlsbAk1 MTIsOCwwCi0KLU5FWFRfUEFHRShsZXZlbDJfaWRlbnRfcGd0KQotCS8qIFNpbmNlIEkgZWFz aWx5IGNhbiwgbWFwIHRoZSBmaXJzdCAxRy4KLQkgKiBEb24ndCBzZXQgTlggYmVjYXVzZSBj b2RlIHJ1bnMgZnJvbSB0aGVzZSBwYWdlcy4KLQkgKi8KLQlQTURTKDAsIF9fUEFHRV9LRVJO RUxfSURFTlRfTEFSR0VfRVhFQywgUFRSU19QRVJfUE1EKQotCiBORVhUX1BBR0UobGV2ZWwy X2tlcm5lbF9wZ3QpCiAJLyoKIAkgKiA1MTIgTUIga2VybmVsIG1hcHBpbmcuIFdlIHNwZW5k IGEgZnVsbCBwYWdlIG9uIHRoaXMgcGFnZXRhYmxlCkBAIC00MjYsMTEgKzQyMywxMyBAQCBO RVhUX1BBR0UobGV2ZWwyX2tlcm5lbF9wZ3QpCiAJUE1EUygwLCBfX1BBR0VfS0VSTkVMX0xB UkdFX0VYRUMsCiAJCUtFUk5FTF9JTUFHRV9TSVpFL1BNRF9TSVpFKQogCi1ORVhUX1BBR0Uo bGV2ZWwyX3NwYXJlX3BndCkKLQkuZmlsbCAgIDUxMiwgOCwgMAorTkVYVF9QQUdFKGxldmVs Ml9maXhtYXBfcGd0KQorCS5maWxsCTUwNiw4LDAKKwkucXVhZAlsZXZlbDFfZml4bWFwX3Bn dCAtIF9fU1RBUlRfS0VSTkVMX21hcCArIF9QQUdFX1RBQkxFCisJLyogOE1CIHJlc2VydmVk IGZvciB2c3lzY2FsbHMgKyBhIDJNQiBob2xlID0gNCArIDEgZW50cmllcyAqLworCS5maWxs CTUsOCwwCiAKICN1bmRlZiBQTURTCi0jdW5kZWYgTkVYVF9QQUdFCiAKIAkuZGF0YQogCS5h bGlnbiAxNgpAQCAtNDU2LDYgKzQ1NSw3IEBAIEVOVFJZKG5taV9pZHRfdGFibGUpCiAJLnNr aXAgSURUX0VOVFJJRVMgKiAxNgogCiAJX19QQUdFX0FMSUdORURfQlNTCi0JLmFsaWduIFBB R0VfU0laRQotRU5UUlkoZW1wdHlfemVyb19wYWdlKQorTkVYVF9QQUdFKGVtcHR5X3plcm9f cGFnZSkKKwkuc2tpcCBQQUdFX1NJWkUKK05FWFRfUEFHRShpbml0X2xldmVsNF9wZ3QpCiAJ LnNraXAgUEFHRV9TSVpFCg== --------------010501020701050301010103--