From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752426Ab2LMFNs (ORCPT ); Thu, 13 Dec 2012 00:13:48 -0500 Received: from terminus.zytor.com ([198.137.202.10]:58603 "EHLO mail.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750768Ab2LMFNq (ORCPT ); Thu, 13 Dec 2012 00:13:46 -0500 Message-ID: <50C963B1.3040609@zytor.com> Date: Wed, 12 Dec 2012 21:12:17 -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: Borislav Petkov , Yinghai Lu , "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: <50C763C2.5020603@zytor.com> <20121211170605.GD28827@liondog.tnic> <50C76F9E.4080001@zytor.com> <50C7C859.60405@zytor.com> <50C82ABF.3020907@zytor.com> <20121212133853.GC8760@liondog.tnic> In-Reply-To: <20121212133853.GC8760@liondog.tnic> Content-Type: multipart/mixed; boundary="------------090001060501010405090902" 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. --------------090001060501010405090902 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Here is a version that compiles. It doesn't *boot* yet, because the switchover from dynamic mode to the real pagetables doesn't happen right and so we end up on an uninitialized set of page tables. The new page table setup in tip:x86/mm2 should make that easier to achieve, however... I won't have time to test this out tonight, though. -hpa --------------090001060501010405090902 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 L2tlcm5lbC9oZWFkXzY0LlMKaW5kZXggOTRiZjljYy4uMGUwNDBiMyAxMDA2NDQKLS0tIGEv 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 bnRfY29tcGxldGUKKwlzaHJxCSRQR0RJUl9TSElGVCwgJXJheAogCi0JbGVhcQkobGV2ZWwy X3NwYXJlX3BndCAtIF9fU1RBUlRfS0VSTkVMX21hcCArIF9LRVJOUEdfVEFCTEUpKCVyYnAp LCAlcmR4Ci0JbGVhcQlsZXZlbDNfaWRlbnRfcGd0KCVyaXApLCAlcmJ4Ci0JbW92cQklcmR4 LCAwKCVyYngsICVyYXgsIDgpCisJbGVhcQkoNDA5NiArIF9LRVJOUEdfVEFCTEUpKCVyYngp LCAlcmR4CisJbW92cQklcmR4LCAwKCVyYngsJXJheCw4KQorCW1vdnEJJXJkeCwgOCglcmJ4 LCVyYXgsOCkKKworCWFkZHEJJDQwOTYsICVyZHgKKwltb3ZxCSVyZGksICVyYXgKKwlzaHJx 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 IGEgZnVsbCBwYWdlIG9uIHRoaXMgcGFnZXRhYmxlCkBAIC00MjYsMTEgKzQyMywxNiBAQCBO RVhUX1BBR0UobGV2ZWwyX2tlcm5lbF9wZ3QpCiAJUE1EUygwLCBfX1BBR0VfS0VSTkVMX0xB UkdFX0VYRUMsCiAJCUtFUk5FTF9JTUFHRV9TSVpFL1BNRF9TSVpFKQogCi1ORVhUX1BBR0Uo bGV2ZWwyX3NwYXJlX3BndCkKLQkuZmlsbCAgIDUxMiwgOCwgMAorTkVYVF9QQUdFKGxldmVs Ml9maXhtYXBfcGd0KQorCS5maWxsCTUwNiw4LDAKKwkucXVhZAlsZXZlbDFfZml4bWFwX3Bn dCAtIF9fU1RBUlRfS0VSTkVMX21hcCArIF9QQUdFX1RBQkxFCisJLyogOE1CIHJlc2VydmVk IGZvciB2c3lzY2FsbHMgKyBhIDJNQiBob2xlID0gNCArIDEgZW50cmllcyAqLworCS5maWxs CTUsOCwwCisKK05FWFRfUEFHRShsZXZlbDFfZml4bWFwX3BndCkKKwkuZmlsbAk1MTIsOCww CiAKICN1bmRlZiBQTURTCi0jdW5kZWYgTkVYVF9QQUdFCiAKIAkuZGF0YQogCS5hbGlnbiAx NgpAQCAtNDU2LDYgKzQ1OCw3IEBAIEVOVFJZKG5taV9pZHRfdGFibGUpCiAJLnNraXAgSURU X0VOVFJJRVMgKiAxNgogCiAJX19QQUdFX0FMSUdORURfQlNTCi0JLmFsaWduIFBBR0VfU0la RQotRU5UUlkoZW1wdHlfemVyb19wYWdlKQorTkVYVF9QQUdFKGVtcHR5X3plcm9fcGFnZSkK Kwkuc2tpcCBQQUdFX1NJWkUKK05FWFRfUEFHRShpbml0X2xldmVsNF9wZ3QpCiAJLnNraXAg UEFHRV9TSVpFCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvc2V0dXAuYyBiL2FyY2gv eDg2L2tlcm5lbC9zZXR1cC5jCmluZGV4IGNhNDU2OTYuLmUzODMwNTAgMTAwNjQ0Ci0tLSBh L2FyY2gveDg2L2tlcm5lbC9zZXR1cC5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9zZXR1cC5j CkBAIC05MTEsNyArOTExLDYgQEAgdm9pZCBfX2luaXQgc2V0dXBfYXJjaChjaGFyICoqY21k bGluZV9wKQogCQkJKG1heF9wZm5fbWFwcGVkPDxQQUdFX1NISUZUKSAtIDEpOwogCiAJc2V0 dXBfcmVhbF9tb2RlKCk7Ci0KIAlpbml0X2dicGFnZXMoKTsKIAogCS8qIG1heF9wZm5fbWFw cGVkIGlzIHVwZGF0ZWQgaGVyZSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvcmVhbG1vZGUv aW5pdC5jIGIvYXJjaC94ODYvcmVhbG1vZGUvaW5pdC5jCmluZGV4IGNiY2E1NjUuLjE2NTBi ZjQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L3JlYWxtb2RlL2luaXQuYworKysgYi9hcmNoL3g4 Ni9yZWFsbW9kZS9pbml0LmMKQEAgLTIxLDcgKzIxLDcgQEAgdm9pZCBfX2luaXQgc2V0dXBf cmVhbF9tb2RlKHZvaWQpCiAJc3RydWN0IHRyYW1wb2xpbmVfaGVhZGVyICp0cmFtcG9saW5l X2hlYWRlcjsKIAlzaXplX3Qgc2l6ZSA9IFBBR0VfQUxJR04ocmVhbF9tb2RlX2Jsb2JfZW5k IC0gcmVhbF9tb2RlX2Jsb2IpOwogI2lmZGVmIENPTkZJR19YODZfNjQKLQl1NjQgKnRyYW1w b2xpbmVfcGdkOworCXBnZF90ICp0cmFtcG9saW5lX3BnZDsKIAl1NjQgZWZlcjsKICNlbmRp ZgogCkBAIC03Nyw5ICs3NywxNyBAQCB2b2lkIF9faW5pdCBzZXR1cF9yZWFsX21vZGUodm9p ZCkKIAl0cmFtcG9saW5lX2NyNF9mZWF0dXJlcyA9ICZ0cmFtcG9saW5lX2hlYWRlci0+Y3I0 OwogCSp0cmFtcG9saW5lX2NyNF9mZWF0dXJlcyA9IHJlYWRfY3I0KCk7CiAKLQl0cmFtcG9s aW5lX3BnZCA9ICh1NjQgKikgX192YShyZWFsX21vZGVfaGVhZGVyLT50cmFtcG9saW5lX3Bn ZCk7Ci0JdHJhbXBvbGluZV9wZ2RbMF0gPSBfX3BhKGxldmVsM19pZGVudF9wZ3QpICsgX0tF Uk5QR19UQUJMRTsKLQl0cmFtcG9saW5lX3BnZFs1MTFdID0gX19wYShsZXZlbDNfa2VybmVs X3BndCkgKyBfS0VSTlBHX1RBQkxFOworCXRyYW1wb2xpbmVfcGdkID0gKHBnZF90ICopIF9f dmEocmVhbF9tb2RlX2hlYWRlci0+dHJhbXBvbGluZV9wZ2QpOworCisJLyogU2V0IHVwIHRo ZSBpZGVudGl0eSBtYXAgKi8KKwljbG9uZV9wZ2RfcmFuZ2UodHJhbXBvbGluZV9wZ2QsCisJ CQlpbml0X2xldmVsNF9wZ3QgKyBLRVJORUxfUEdEX0JPVU5EQVJZLAorCQkJTUFYTUVNID4+ IFBHRElSX1NISUZUKTsKKworCS8qIFNldCB1cCB0aGUga2VybmVsIG1hcCAqLworCWNsb25l X3BnZF9yYW5nZSh0cmFtcG9saW5lX3BnZCAgKyBLRVJORUxfUEdEX0JPVU5EQVJZLAorCQkJ aW5pdF9sZXZlbDRfcGd0ICsgS0VSTkVMX1BHRF9CT1VOREFSWSwKKwkJCVBUUlNfUEVSX1BH RCAtIEtFUk5FTF9QR0RfQk9VTkRBUlkpOwogI2VuZGlmCiB9CiAK --------------090001060501010405090902--