From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from [222.73.24.84] (helo=song.cn.fujitsu.com) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1SHmis-0001jQ-BR for kexec@lists.infradead.org; Wed, 11 Apr 2012 01:51:51 +0000 Message-ID: <4F84E365.10201@cn.fujitsu.com> Date: Wed, 11 Apr 2012 09:50:29 +0800 From: zhangyanfei MIME-Version: 1.0 Subject: [PATCH 2/4] KVM: VMX: Add functions to fill VMCSINFO References: <4F84E0DF.8040206@cn.fujitsu.com> In-Reply-To: <4F84E0DF.8040206@cn.fujitsu.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: kexec-bounces@lists.infradead.org Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: avi@redhat.com, mtosatti@redhat.com Cc: dzickus@redhat.com, luto@mit.edu, kvm@vger.kernel.org, joerg.roedel@amd.com, gregkh@suse.de, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, paul.gortmaker@windriver.com, ludwig.nussel@suse.de, ebiederm@xmission.com VGhpcyBwYXRjaCBpcyB0byBpbXBsZW1lbnQgdGhlIGZlYXR1cmUgdGhhdCBhdCBpbml0aWFsaXph dGlvbiBvZgprdm1faW50ZWwgbW9kdWxlLCBmaWxscyBWTUNTSU5GTyB3aXRoIGEgVk1DUyByZXZp c2lvbiBpZGVudGlmaWVyLAphbmQgZW5jb2RlZCBvZmZzZXRzIG9mIFZNQ1MgZmllbGRzLiBUaGUg cmVhc29uIHdoeSB3ZSBwdXQgdGhlClZNQ1NJTkZPIHByb2Nlc3NpbmcgYXQgdGhlIGluaXRpYWxp emF0aW9uIG9mIGt2bV9pbnRlbCBtb2R1bGUKaXMgdGhhdCBpdCdzIGRhbmdlcm91cyB0byByb2Ig Vk1YIHJlc291cmNlcyB3aGlsZSBrdm0gbW9kdWxlIGlzCmxvYWRlZC4KCk5vdGUsIG9mZnNldHMg b2YgZmllbGRzIGJlbG93IHdpbGwgbm90IGJlIGZpbGxlZCBpbnRvIFZNQ1NJTkZPOgoxLiBmaWVs ZHMgZGVmaW5lZCBpbiBJbnRlbCBzcGVjaWZpY2F0aW9uIChJbnRlbMKuIDY0IGFuZAogICBJQS0z MiBBcmNoaXRlY3R1cmVzIFNvZnR3YXJlIERldmVsb3BlcuKAmXMgTWFudWFsLCBWb2x1bWUKICAg M0MpIGJ1dCBub3QgZGVmaW5lZCBpbiAqdm1jc19maWVsZCouCjIuIGZpZWxkcyBkb24ndCBleGlz dCBiZWNhdXNlIHRoZWlyIGNvcnJlc3BvbmRpbmcgY29udHJvbCBiaXRzCiAgIGFyZSBub3Qgc2V0 LgoKU2lnbmVkLW9mZi1ieTogemhhbmd5YW5mZWkgPHpoYW5neWFuZmVpQGNuLmZ1aml0c3UuY29t PgotLS0KIGFyY2gveDg2L2t2bS92bXguYyB8ICAzNTAgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlcyBjaGFuZ2VkLCAzNTAgaW5zZXJ0 aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14LmMg Yi9hcmNoL3g4Ni9rdm0vdm14LmMKaW5kZXggYWQ4NWFkZi4uZTk4ZmFmYSAxMDA2NDQKLS0tIGEv YXJjaC94ODYva3ZtL3ZteC5jCisrKyBiL2FyY2gveDg2L2t2bS92bXguYwpAQCAtNDEsNiArNDEs NyBAQAogI2luY2x1ZGUgPGFzbS9pMzg3Lmg+CiAjaW5jbHVkZSA8YXNtL3hjci5oPgogI2luY2x1 ZGUgPGFzbS9wZXJmX2V2ZW50Lmg+CisjaW5jbHVkZSA8YXNtL3ZtY3NpbmZvLmg+CiAKICNpbmNs dWRlICJ0cmFjZS5oIgogCkBAIC0yNTk5LDYgKzI2MDAsMzUzIEBAIHN0YXRpYyBfX2luaXQgaW50 IGFsbG9jX2t2bV9hcmVhKHZvaWQpCiAJcmV0dXJuIDA7CiB9CiAKKy8qCisgKiBGb3IgY2FjdWxh dGluZyBvZmZzZXRzIG9mIGZpZWxkcyBpbiBWTUNTIGRhdGEsIHdlIGluZGV4IGV2ZXJ5IDE2LWJp dAorICogZmllbGQgYnkgdGhpcyBraW5kIG9mIGZvcm1hdDoKKyAqICAgICAgICAgfCAtLS0tLS0t LS0gMTYgYml0cyAtLS0tLS0tLS0tIHwKKyAqICAgICAgICAgKy0tLS0tLS0tLS0tLS0rLSstLS0t LS0tLS0tLS0rLSsKKyAqICAgICAgICAgfCBoaWdoIDcgYml0cyB8MXwgbG93IDcgYml0cyB8MHwK KyAqICAgICAgICAgKy0tLS0tLS0tLS0tLS0rLSstLS0tLS0tLS0tLS0rLSsKKyAqIEluIGhpZ2gg Ynl0ZSwgdGhlIGxvd2VzdCBiaXQgbXVzdCBiZSAxOyBJbiBsb3cgYnl0ZSwgdGhlIGxvd2VzdCBi aXQKKyAqIG11c3QgYmUgMC4gVGhlIHR3byBiaXRzIGFyZSBzZXQgbGlrZSB0aGlzIGluIGNhc2Ug aW5kZXhlcyBpbiBWTUNTCisgKiBkYXRhIGFyZSByZWFkIGFzIGJpZyBlbmRpYW4gbW9kZS4KKyAq IFRoZSByZW1haW5pbmcgMTQgYml0cyBvZiB0aGUgaW5kZXggaW5kaWNhdGUgdGhlIHJlYWwgb2Zm c2V0IG9mIHRoZQorICogZmllbGQuIEJlY2F1c2UgdGhlIHNpemUgb2YgYSBWTUNTIHJlZ2lvbiBp cyBhdCBtb3N0IDQgS0J5dGVzLCBzbworICogMTQgYml0cyBhcmUgZW5vdWdoIHRvIGluZGV4IHRo ZSB3aG9sZSBWTUNTIHJlZ2lvbi4KKyAqCisgKiBFTkNPRElOR19PRkZTRVQ6IGVuY29kZSB0aGUg b2Zmc2V0IGludG8gdGhlIGluZGV4IG9mIHRoaXMga2luZC4KKyAqLworI2RlZmluZSBPRkZTRVRf SElHSF9TSElGVCAoNykKKyNkZWZpbmUgT0ZGU0VUX0xPV19NQVNLICAgKCgxIDw8IE9GRlNFVF9I SUdIX1NISUZUKSAtIDEpIC8qIDB4N2YgKi8KKyNkZWZpbmUgT0ZGU0VUX0hJR0hfTUFTSyAgKE9G RlNFVF9MT1dfTUFTSyA8PCBPRkZTRVRfSElHSF9TSElGVCkgLyogMHgzZjgwICovCisjZGVmaW5l IEVOQ09ESU5HX09GRlNFVChvZmZzZXQpIFwKKwkoKCgob2Zmc2V0KSAmIE9GRlNFVF9MT1dfTUFT SykgPDwgMSkgKyBcCisJKCgoKG9mZnNldCkgJiBPRkZTRVRfSElHSF9NQVNLKSA8PCAyKSB8IDB4 MTAwKSkKKworLyoKKyAqIFdlIHNlcGFyYXRlIHRoZXNlIGZpdmUgY29udHJvbCBmaWVsZHMgZnJv bSBvdGhlciBmaWVsZHMKKyAqIGJlY2F1c2Ugc29tZSBmaWVsZHMgb25seSBleGlzdCBvbiBwcm9j ZXNzb3JzIHRoYXQgc3VwcG9ydAorICogdGhlIDEtc2V0dGluZyBvZiBjb250cm9sIGJpdHMgaW4g dGhlIGZpdmUgY29udHJvbCBmaWVsZHMuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRf Y29udHJvbF9maWVsZCh2b2lkKQoreworI2RlZmluZSBDT05UUk9MX0ZJRUxEX09GRlNFVChmaWVs ZCkgXAorCVZNQ1NJTkZPX0ZJRUxEMzIoZmllbGQsIHZtY3NfcmVhZDMyKGZpZWxkKSkKKworCUNP TlRST0xfRklFTERfT0ZGU0VUKFBJTl9CQVNFRF9WTV9FWEVDX0NPTlRST0wpOworCUNPTlRST0xf RklFTERfT0ZGU0VUKENQVV9CQVNFRF9WTV9FWEVDX0NPTlRST0wpOworCWlmIChjcHVfaGFzX3Nl Y29uZGFyeV9leGVjX2N0cmxzKCkpIHsKKwkJQ09OVFJPTF9GSUVMRF9PRkZTRVQoU0VDT05EQVJZ X1ZNX0VYRUNfQ09OVFJPTCk7CisJfQorCUNPTlRST0xfRklFTERfT0ZGU0VUKFZNX0VYSVRfQ09O VFJPTFMpOworCUNPTlRST0xfRklFTERfT0ZGU0VUKFZNX0VOVFJZX0NPTlRST0xTKTsKK30KKwor c3RhdGljIGlubGluZSB2b2lkIGFwcGVuZF9maWVsZDE2KHZvaWQpCit7CisjZGVmaW5lIEZJRUxE X09GRlNFVDE2KGZpZWxkKSBcCisJVk1DU0lORk9fRklFTEQxNihmaWVsZCwgdm1jc19yZWFkMTYo ZmllbGQpKTsKKworCUZJRUxEX09GRlNFVDE2KEdVRVNUX0VTX1NFTEVDVE9SKTsKKwlGSUVMRF9P RkZTRVQxNihHVUVTVF9DU19TRUxFQ1RPUik7CisJRklFTERfT0ZGU0VUMTYoR1VFU1RfU1NfU0VM RUNUT1IpOworCUZJRUxEX09GRlNFVDE2KEdVRVNUX0RTX1NFTEVDVE9SKTsKKwlGSUVMRF9PRkZT RVQxNihHVUVTVF9GU19TRUxFQ1RPUik7CisJRklFTERfT0ZGU0VUMTYoR1VFU1RfR1NfU0VMRUNU T1IpOworCUZJRUxEX09GRlNFVDE2KEdVRVNUX0xEVFJfU0VMRUNUT1IpOworCUZJRUxEX09GRlNF VDE2KEdVRVNUX1RSX1NFTEVDVE9SKTsKKwlGSUVMRF9PRkZTRVQxNihIT1NUX0VTX1NFTEVDVE9S KTsKKwlGSUVMRF9PRkZTRVQxNihIT1NUX0NTX1NFTEVDVE9SKTsKKwlGSUVMRF9PRkZTRVQxNihI T1NUX1NTX1NFTEVDVE9SKTsKKwlGSUVMRF9PRkZTRVQxNihIT1NUX0RTX1NFTEVDVE9SKTsKKwlG SUVMRF9PRkZTRVQxNihIT1NUX0ZTX1NFTEVDVE9SKTsKKwlGSUVMRF9PRkZTRVQxNihIT1NUX0dT X1NFTEVDVE9SKTsKKwlGSUVMRF9PRkZTRVQxNihIT1NUX1RSX1NFTEVDVE9SKTsKK30KKworc3Rh dGljIGlubGluZSB2b2lkIGFwcGVuZF9maWVsZDY0KHZvaWQpCit7CisjZGVmaW5lIEZJRUxEX09G RlNFVDY0KGZpZWxkKSBcCisJVk1DU0lORk9fRklFTEQ2NChmaWVsZCwgdm1jc19yZWFkNjQoZmll bGQpKTsKKworCUZJRUxEX09GRlNFVDY0KElPX0JJVE1BUF9BKTsKKwlGSUVMRF9PRkZTRVQ2NChJ T19CSVRNQVBfQV9ISUdIKTsKKwlGSUVMRF9PRkZTRVQ2NChJT19CSVRNQVBfQik7CisJRklFTERf T0ZGU0VUNjQoSU9fQklUTUFQX0JfSElHSCk7CisJRklFTERfT0ZGU0VUNjQoVk1fRVhJVF9NU1Jf U1RPUkVfQUREUik7CisJRklFTERfT0ZGU0VUNjQoVk1fRVhJVF9NU1JfU1RPUkVfQUREUl9ISUdI KTsKKwlGSUVMRF9PRkZTRVQ2NChWTV9FWElUX01TUl9MT0FEX0FERFIpOworCUZJRUxEX09GRlNF VDY0KFZNX0VYSVRfTVNSX0xPQURfQUREUl9ISUdIKTsKKwlGSUVMRF9PRkZTRVQ2NChWTV9FTlRS WV9NU1JfTE9BRF9BRERSKTsKKwlGSUVMRF9PRkZTRVQ2NChWTV9FTlRSWV9NU1JfTE9BRF9BRERS X0hJR0gpOworCUZJRUxEX09GRlNFVDY0KFRTQ19PRkZTRVQpOworCUZJRUxEX09GRlNFVDY0KFRT Q19PRkZTRVRfSElHSCk7CisJRklFTERfT0ZGU0VUNjQoVk1DU19MSU5LX1BPSU5URVIpOworCUZJ RUxEX09GRlNFVDY0KFZNQ1NfTElOS19QT0lOVEVSX0hJR0gpOworCUZJRUxEX09GRlNFVDY0KEdV RVNUX0lBMzJfREVCVUdDVEwpOworCUZJRUxEX09GRlNFVDY0KEdVRVNUX0lBMzJfREVCVUdDVExf SElHSCk7CisKKwlpZiAoY3B1X2hhc192bXhfbXNyX2JpdG1hcCgpKSB7CisJCUZJRUxEX09GRlNF VDY0KE1TUl9CSVRNQVApOworCQlGSUVMRF9PRkZTRVQ2NChNU1JfQklUTUFQX0hJR0gpOworCX0K KworCWlmIChjcHVfaGFzX3ZteF90cHJfc2hhZG93KCkpIHsKKwkJRklFTERfT0ZGU0VUNjQoVklS VFVBTF9BUElDX1BBR0VfQUREUik7CisJCUZJRUxEX09GRlNFVDY0KFZJUlRVQUxfQVBJQ19QQUdF X0FERFJfSElHSCk7CisJfQorCisJaWYgKGNwdV9oYXNfc2Vjb25kYXJ5X2V4ZWNfY3RybHMoKSkg eworCQlpZiAodm1jc19jb25maWcuY3B1X2Jhc2VkXzJuZF9leGVjX2N0cmwgJgorCQkgICAgU0VD T05EQVJZX0VYRUNfVklSVFVBTElaRV9BUElDX0FDQ0VTU0VTKSB7CisJCQlGSUVMRF9PRkZTRVQ2 NChBUElDX0FDQ0VTU19BRERSKTsKKwkJCUZJRUxEX09GRlNFVDY0KEFQSUNfQUNDRVNTX0FERFJf SElHSCk7CisJCX0KKwkJaWYgKGNwdV9oYXNfdm14X2VwdCgpKSB7CisJCQlGSUVMRF9PRkZTRVQ2 NChFUFRfUE9JTlRFUik7CisJCQlGSUVMRF9PRkZTRVQ2NChFUFRfUE9JTlRFUl9ISUdIKTsKKwkJ CUZJRUxEX09GRlNFVDY0KEdVRVNUX1BIWVNJQ0FMX0FERFJFU1MpOworCQkJRklFTERfT0ZGU0VU NjQoR1VFU1RfUEhZU0lDQUxfQUREUkVTU19ISUdIKTsKKwkJCUZJRUxEX09GRlNFVDY0KEdVRVNU X1BEUFRSMCk7CisJCQlGSUVMRF9PRkZTRVQ2NChHVUVTVF9QRFBUUjBfSElHSCk7CisJCQlGSUVM RF9PRkZTRVQ2NChHVUVTVF9QRFBUUjEpOworCQkJRklFTERfT0ZGU0VUNjQoR1VFU1RfUERQVFIx X0hJR0gpOworCQkJRklFTERfT0ZGU0VUNjQoR1VFU1RfUERQVFIyKTsKKwkJCUZJRUxEX09GRlNF VDY0KEdVRVNUX1BEUFRSMl9ISUdIKTsKKwkJCUZJRUxEX09GRlNFVDY0KEdVRVNUX1BEUFRSMyk7 CisJCQlGSUVMRF9PRkZTRVQ2NChHVUVTVF9QRFBUUjNfSElHSCk7CisJCX0KKwl9CisKKwlpZiAo dm1jc19jb25maWcudm1leGl0X2N0cmwgJiBWTV9FWElUX1NBVkVfSUEzMl9QQVQgfHwgXAorCSAg ICB2bWNzX2NvbmZpZy52bWVudHJ5X2N0cmwgJiBWTV9FTlRSWV9MT0FEX0lBMzJfUEFUKSB7CisJ CUZJRUxEX09GRlNFVDY0KEdVRVNUX0lBMzJfUEFUKTsKKwkJRklFTERfT0ZGU0VUNjQoR1VFU1Rf SUEzMl9QQVRfSElHSCk7CisJfQorCisJaWYgKHZtY3NfY29uZmlnLnZtZXhpdF9jdHJsICYgVk1f RVhJVF9TQVZFX0lBMzJfRUZFUiB8fCBcCisJICAgIHZtY3NfY29uZmlnLnZtZW50cnlfY3RybCAm IFZNX0VOVFJZX0xPQURfSUEzMl9FRkVSKSB7CisJCUZJRUxEX09GRlNFVDY0KEdVRVNUX0lBMzJf RUZFUik7CisJCUZJRUxEX09GRlNFVDY0KEdVRVNUX0lBMzJfRUZFUl9ISUdIKTsKKwl9CisKKwlp ZiAodm1jc19jb25maWcudm1lbnRyeV9jdHJsICYgVk1fRU5UUllfTE9BRF9JQTMyX1BFUkZfR0xP QkFMX0NUUkwpIHsKKwkJRklFTERfT0ZGU0VUNjQoR1VFU1RfSUEzMl9QRVJGX0dMT0JBTF9DVFJM KTsKKwkJRklFTERfT0ZGU0VUNjQoR1VFU1RfSUEzMl9QRVJGX0dMT0JBTF9DVFJMX0hJR0gpOwor CX0KKworCWlmICh2bWNzX2NvbmZpZy52bWV4aXRfY3RybCAmIFZNX0VYSVRfTE9BRF9JQTMyX1BB VCkgeworCQlGSUVMRF9PRkZTRVQ2NChIT1NUX0lBMzJfUEFUKTsKKwkJRklFTERfT0ZGU0VUNjQo SE9TVF9JQTMyX1BBVF9ISUdIKTsKKwl9CisKKwlpZiAodm1jc19jb25maWcudm1leGl0X2N0cmwg JiBWTV9FWElUX0xPQURfSUEzMl9FRkVSKSB7CisJCUZJRUxEX09GRlNFVDY0KEhPU1RfSUEzMl9F RkVSKTsKKwkJRklFTERfT0ZGU0VUNjQoSE9TVF9JQTMyX0VGRVJfSElHSCk7CisJfQorCisJaWYg KHZtY3NfY29uZmlnLnZtZXhpdF9jdHJsICYgVk1fRVhJVF9MT0FEX0lBMzJfUEVSRl9HTE9CQUxf Q1RSTCkgeworCQlGSUVMRF9PRkZTRVQ2NChIT1NUX0lBMzJfUEVSRl9HTE9CQUxfQ1RSTCk7CisJ CUZJRUxEX09GRlNFVDY0KEhPU1RfSUEzMl9QRVJGX0dMT0JBTF9DVFJMX0hJR0gpOworCX0KK30K Kworc3RhdGljIGlubGluZSB2b2lkIGFwcGVuZF9maWVsZDMyKHZvaWQpCit7CisjZGVmaW5lIEZJ RUxEX09GRlNFVDMyKGZpZWxkKSBcCisJVk1DU0lORk9fRklFTEQzMihmaWVsZCwgdm1jc19yZWFk MzIoZmllbGQpKTsKKworCUZJRUxEX09GRlNFVDMyKEVYQ0VQVElPTl9CSVRNQVApOworCUZJRUxE X09GRlNFVDMyKFBBR0VfRkFVTFRfRVJST1JfQ09ERV9NQVNLKTsKKwlGSUVMRF9PRkZTRVQzMihQ QUdFX0ZBVUxUX0VSUk9SX0NPREVfTUFUQ0gpOworCUZJRUxEX09GRlNFVDMyKENSM19UQVJHRVRf Q09VTlQpOworCUZJRUxEX09GRlNFVDMyKFZNX0VYSVRfTVNSX1NUT1JFX0NPVU5UKTsKKwlGSUVM RF9PRkZTRVQzMihWTV9FWElUX01TUl9MT0FEX0NPVU5UKTsKKwlGSUVMRF9PRkZTRVQzMihWTV9F TlRSWV9NU1JfTE9BRF9DT1VOVCk7CisJRklFTERfT0ZGU0VUMzIoVk1fRU5UUllfSU5UUl9JTkZP X0ZJRUxEKTsKKwlGSUVMRF9PRkZTRVQzMihWTV9FTlRSWV9FWENFUFRJT05fRVJST1JfQ09ERSk7 CisJRklFTERfT0ZGU0VUMzIoVk1fRU5UUllfSU5TVFJVQ1RJT05fTEVOKTsKKwlGSUVMRF9PRkZT RVQzMihWTV9JTlNUUlVDVElPTl9FUlJPUik7CisJRklFTERfT0ZGU0VUMzIoVk1fRVhJVF9SRUFT T04pOworCUZJRUxEX09GRlNFVDMyKFZNX0VYSVRfSU5UUl9JTkZPKTsKKwlGSUVMRF9PRkZTRVQz MihWTV9FWElUX0lOVFJfRVJST1JfQ09ERSk7CisJRklFTERfT0ZGU0VUMzIoSURUX1ZFQ1RPUklO R19JTkZPX0ZJRUxEKTsKKwlGSUVMRF9PRkZTRVQzMihJRFRfVkVDVE9SSU5HX0VSUk9SX0NPREUp OworCUZJRUxEX09GRlNFVDMyKFZNX0VYSVRfSU5TVFJVQ1RJT05fTEVOKTsKKwlGSUVMRF9PRkZT RVQzMihWTVhfSU5TVFJVQ1RJT05fSU5GTyk7CisJRklFTERfT0ZGU0VUMzIoR1VFU1RfRVNfTElN SVQpOworCUZJRUxEX09GRlNFVDMyKEdVRVNUX0NTX0xJTUlUKTsKKwlGSUVMRF9PRkZTRVQzMihH VUVTVF9TU19MSU1JVCk7CisJRklFTERfT0ZGU0VUMzIoR1VFU1RfRFNfTElNSVQpOworCUZJRUxE X09GRlNFVDMyKEdVRVNUX0ZTX0xJTUlUKTsKKwlGSUVMRF9PRkZTRVQzMihHVUVTVF9HU19MSU1J VCk7CisJRklFTERfT0ZGU0VUMzIoR1VFU1RfTERUUl9MSU1JVCk7CisJRklFTERfT0ZGU0VUMzIo R1VFU1RfVFJfTElNSVQpOworCUZJRUxEX09GRlNFVDMyKEdVRVNUX0dEVFJfTElNSVQpOworCUZJ RUxEX09GRlNFVDMyKEdVRVNUX0lEVFJfTElNSVQpOworCUZJRUxEX09GRlNFVDMyKEdVRVNUX0VT X0FSX0JZVEVTKTsKKwlGSUVMRF9PRkZTRVQzMihHVUVTVF9DU19BUl9CWVRFUyk7CisJRklFTERf T0ZGU0VUMzIoR1VFU1RfU1NfQVJfQllURVMpOworCUZJRUxEX09GRlNFVDMyKEdVRVNUX0RTX0FS X0JZVEVTKTsKKwlGSUVMRF9PRkZTRVQzMihHVUVTVF9GU19BUl9CWVRFUyk7CisJRklFTERfT0ZG U0VUMzIoR1VFU1RfR1NfQVJfQllURVMpOworCUZJRUxEX09GRlNFVDMyKEdVRVNUX0xEVFJfQVJf QllURVMpOworCUZJRUxEX09GRlNFVDMyKEdVRVNUX1RSX0FSX0JZVEVTKTsKKwlGSUVMRF9PRkZT RVQzMihHVUVTVF9JTlRFUlJVUFRJQklMSVRZX0lORk8pOworCUZJRUxEX09GRlNFVDMyKEdVRVNU X0FDVElWSVRZX1NUQVRFKTsKKwlGSUVMRF9PRkZTRVQzMihHVUVTVF9TWVNFTlRFUl9DUyk7CisJ RklFTERfT0ZGU0VUMzIoSE9TVF9JQTMyX1NZU0VOVEVSX0NTKTsKKworCWlmIChjcHVfaGFzX3Zt eF90cHJfc2hhZG93KCkpIHsKKwkJRklFTERfT0ZGU0VUMzIoVFBSX1RIUkVTSE9MRCk7CisJfQor CWlmIChjcHVfaGFzX3NlY29uZGFyeV9leGVjX2N0cmxzKCkpIHsKKwkJaWYgKGNwdV9oYXNfdm14 X3BsZSgpKSB7CisJCQlGSUVMRF9PRkZTRVQzMihQTEVfR0FQKTsKKwkJCUZJRUxEX09GRlNFVDMy KFBMRV9XSU5ET1cpOworCQl9CisJfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kX2Zp ZWxkKHZvaWQpCit7CisjZGVmaW5lIEZJRUxEX09GRlNFVChmaWVsZCkgXAorCVZNQ1NJTkZPX0ZJ RUxEKGZpZWxkLCB2bWNzX3JlYWRsKGZpZWxkKSk7CisKKwlGSUVMRF9PRkZTRVQoQ1IwX0dVRVNU X0hPU1RfTUFTSyk7CisJRklFTERfT0ZGU0VUKENSNF9HVUVTVF9IT1NUX01BU0spOworCUZJRUxE X09GRlNFVChDUjBfUkVBRF9TSEFET1cpOworCUZJRUxEX09GRlNFVChDUjRfUkVBRF9TSEFET1cp OworCUZJRUxEX09GRlNFVChDUjNfVEFSR0VUX1ZBTFVFMCk7CisJRklFTERfT0ZGU0VUKENSM19U QVJHRVRfVkFMVUUxKTsKKwlGSUVMRF9PRkZTRVQoQ1IzX1RBUkdFVF9WQUxVRTIpOworCUZJRUxE X09GRlNFVChDUjNfVEFSR0VUX1ZBTFVFMyk7CisJRklFTERfT0ZGU0VUKEVYSVRfUVVBTElGSUNB VElPTik7CisJRklFTERfT0ZGU0VUKEdVRVNUX0xJTkVBUl9BRERSRVNTKTsKKwlGSUVMRF9PRkZT RVQoR1VFU1RfQ1IwKTsKKwlGSUVMRF9PRkZTRVQoR1VFU1RfQ1IzKTsKKwlGSUVMRF9PRkZTRVQo R1VFU1RfQ1I0KTsKKwlGSUVMRF9PRkZTRVQoR1VFU1RfRVNfQkFTRSk7CisJRklFTERfT0ZGU0VU KEdVRVNUX0NTX0JBU0UpOworCUZJRUxEX09GRlNFVChHVUVTVF9TU19CQVNFKTsKKwlGSUVMRF9P RkZTRVQoR1VFU1RfRFNfQkFTRSk7CisJRklFTERfT0ZGU0VUKEdVRVNUX0ZTX0JBU0UpOworCUZJ RUxEX09GRlNFVChHVUVTVF9HU19CQVNFKTsKKwlGSUVMRF9PRkZTRVQoR1VFU1RfTERUUl9CQVNF KTsKKwlGSUVMRF9PRkZTRVQoR1VFU1RfVFJfQkFTRSk7CisJRklFTERfT0ZGU0VUKEdVRVNUX0dE VFJfQkFTRSk7CisJRklFTERfT0ZGU0VUKEdVRVNUX0lEVFJfQkFTRSk7CisJRklFTERfT0ZGU0VU KEdVRVNUX0RSNyk7CisJRklFTERfT0ZGU0VUKEdVRVNUX1JTUCk7CisJRklFTERfT0ZGU0VUKEdV RVNUX1JJUCk7CisJRklFTERfT0ZGU0VUKEdVRVNUX1JGTEFHUyk7CisJRklFTERfT0ZGU0VUKEdV RVNUX1BFTkRJTkdfREJHX0VYQ0VQVElPTlMpOworCUZJRUxEX09GRlNFVChHVUVTVF9TWVNFTlRF Ul9FU1ApOworCUZJRUxEX09GRlNFVChHVUVTVF9TWVNFTlRFUl9FSVApOworCUZJRUxEX09GRlNF VChIT1NUX0NSMCk7CisJRklFTERfT0ZGU0VUKEhPU1RfQ1IzKTsKKwlGSUVMRF9PRkZTRVQoSE9T VF9DUjQpOworCUZJRUxEX09GRlNFVChIT1NUX0ZTX0JBU0UpOworCUZJRUxEX09GRlNFVChIT1NU X0dTX0JBU0UpOworCUZJRUxEX09GRlNFVChIT1NUX1RSX0JBU0UpOworCUZJRUxEX09GRlNFVChI T1NUX0dEVFJfQkFTRSk7CisJRklFTERfT0ZGU0VUKEhPU1RfSURUUl9CQVNFKTsKKwlGSUVMRF9P RkZTRVQoSE9TVF9JQTMyX1NZU0VOVEVSX0VTUCk7CisJRklFTERfT0ZGU0VUKEhPU1RfSUEzMl9T WVNFTlRFUl9FSVApOworCUZJRUxEX09GRlNFVChIT1NUX1JTUCk7CisJRklFTERfT0ZGU0VUKEhP U1RfUklQKTsKK30KKworLyoKKyAqIGFsbG9jX3ZtY3NpbmZvIHdpbGwgYmUgY2FsbGVkIGF0IHRo ZSBpbml0aWFsaXphdGlvbiBvZgorICoga3ZtX2ludGVsIG1vZHVsZSB0byBmaWxsIFZNQ1NJTkZP LiBUaGUgVk1DU0lORk8gY29udGFpbnMKKyAqIGEgVk1DUyByZXZpc2lvbiBpZGVudGlmaWVyIGFu ZCBlbmNvZGVkIG9mZnNldHMgb2YgZmllbGRzLgorICoKKyAqIE5vdGUsIG9mZnNldHMgb2YgZmll bGRzIGJlbG93IHdpbGwgbm90IGJlIGZpbGxlZCBpbnRvCisgKiBWTUNTSU5GTzoKKyAqIDEuIGZp ZWxkcyBkZWZpbmVkIGluIEludGVsIHNwZWNpZmljYXRpb24gKEludGVswq4gNjQgYW5kCisgKiAg ICBJQS0zMiBBcmNoaXRlY3R1cmVzIFNvZnR3YXJlIERldmVsb3BlcuKAmXMgTWFudWFsLCBWb2x1 bWUKKyAqICAgIDNDKSBidXQgbm90IGRlZmluZWQgaW4gKnZtY3NfZmllbGQqLgorICogMi4gZmll bGRzIGRvbid0IGV4aXN0IGJlY2F1c2UgdGhlaXIgY29ycmVzcG9uZGluZworICogICAgY29udHJv bCBiaXRzIGFyZSBub3Qgc2V0LgorICovCitzdGF0aWMgX19pbml0IHZvaWQgYWxsb2Nfdm1jc2lu Zm8odm9pZCkKK3sKKy8qCisgKiBUaGUgZmlyc3QgOCBieXRlcyBpbiB2bWNzIHJlZ2lvbiBhcmUg Zm9yCisgKiAgIFZNQ1MgcmV2aXNpb24gaWRlbnRpZmllcgorICogICBWTVgtYWJvcnQgaW5kaWNh dG9yCisgKi8KKyNkZWZpbmUgRklFTERfU1RBUlQgKDgpCisKKwlpbnQgb2Zmc2V0LCBmbGFnOwor CXN0cnVjdCB2bWNzICp2bWNzOworCXU2NCBvbGRfbXNyLCB0ZXN0X2JpdHM7CisKKwlmbGFnID0g MDsKKworCWlmICh2bWNzaW5mb19zaXplKQorCQlyZXR1cm47CisKKwl2bWNzID0gYWxsb2Nfdm1j cygpOworCWlmICghdm1jcykgeworCQlyZXR1cm47CisJfQorCisJcmRtc3JsKE1TUl9JQTMyX0ZF QVRVUkVfQ09OVFJPTCwgb2xkX21zcik7CisKKwl0ZXN0X2JpdHMgPSBGRUFUVVJFX0NPTlRST0xf TE9DS0VEOworCXRlc3RfYml0cyB8PSBGRUFUVVJFX0NPTlRST0xfVk1YT05fRU5BQkxFRF9PVVRT SURFX1NNWDsKKwlpZiAodGJvb3RfZW5hYmxlZCgpKQorCQl0ZXN0X2JpdHMgfD0gRkVBVFVSRV9D T05UUk9MX1ZNWE9OX0VOQUJMRURfSU5TSURFX1NNWDsKKwlpZiAoKG9sZF9tc3IgJiB0ZXN0X2Jp dHMpICE9IHRlc3RfYml0cykKKwkJd3Jtc3JsKE1TUl9JQTMyX0ZFQVRVUkVfQ09OVFJPTCwgb2xk X21zciB8IHRlc3RfYml0cyk7CisKKwlmbGFnID0gcmVhZF9jcjQoKSAmIFg4Nl9DUjRfVk1YRTsK KwlpZiAoIWZsYWcpCisJCXdyaXRlX2NyNChyZWFkX2NyNCgpIHwgWDg2X0NSNF9WTVhFKTsKKwor CWt2bV9jcHVfdm14b24oX19wYShwZXJfY3B1KHZteGFyZWEsIHJhd19zbXBfcHJvY2Vzc29yX2lk KCkpKSk7CisJdm1jc19sb2FkKHZtY3MpOworCisJVk1DU0lORk9fUkVWSVNJT05fSUQodm1jcy0+ cmV2aXNpb25faWQpOworCisJLyoKKwkgKiBXcml0ZSBlbmNvZGVkIG9mZnNldHMgaW50byBWTUNT IGRhdGEgZm9yIGxhdGVyIHZtY3NfcmVhZC4KKwkgKi8KKwlmb3IgKG9mZnNldCA9IEZJRUxEX1NU QVJUOyBvZmZzZXQgPCB2bWNzX2NvbmZpZy5zaXplOworCSAgICAgb2Zmc2V0ICs9IHNpemVvZih1 MTYpKQorCQkqKHUxNiAqKSgoY2hhciAqKXZtY3MgKyBvZmZzZXQpID0gRU5DT0RJTkdfT0ZGU0VU KG9mZnNldCk7CisKKwlhcHBlbmRfY29udHJvbF9maWVsZCgpOworCisJdm1jc193cml0ZTMyKFBJ Tl9CQVNFRF9WTV9FWEVDX0NPTlRST0wsCisJCSAgICAgdm1jc19jb25maWcucGluX2Jhc2VkX2V4 ZWNfY3RybCk7CisJdm1jc193cml0ZTMyKENQVV9CQVNFRF9WTV9FWEVDX0NPTlRST0wsCisJCSAg ICAgdm1jc19jb25maWcuY3B1X2Jhc2VkX2V4ZWNfY3RybCk7CisJaWYgKGNwdV9oYXNfc2Vjb25k YXJ5X2V4ZWNfY3RybHMoKSkgeworCQl2bWNzX3dyaXRlMzIoU0VDT05EQVJZX1ZNX0VYRUNfQ09O VFJPTCwKKwkJCSAgICAgdm1jc19jb25maWcuY3B1X2Jhc2VkXzJuZF9leGVjX2N0cmwpOworCX0K Kwl2bWNzX3dyaXRlMzIoVk1fRVhJVF9DT05UUk9MUywgdm1jc19jb25maWcudm1leGl0X2N0cmwp OworCXZtY3Nfd3JpdGUzMihWTV9FTlRSWV9DT05UUk9MUywgdm1jc19jb25maWcudm1lbnRyeV9j dHJsKTsKKworCWFwcGVuZF9maWVsZDE2KCk7CisJYXBwZW5kX2ZpZWxkNjQoKTsKKwlhcHBlbmRf ZmllbGQzMigpOworCWFwcGVuZF9maWVsZCgpOworCisJdXBkYXRlX3ZtY3NpbmZvX25vdGUoKTsK KworCXZtY3NfY2xlYXIodm1jcyk7CisJa3ZtX2NwdV92bXhvZmYoKTsKKwlpZiAoIWZsYWcpCisJ CXdyaXRlX2NyNChyZWFkX2NyNCgpICYgflg4Nl9DUjRfVk1YRSk7CisJd3Jtc3JsKE1TUl9JQTMy X0ZFQVRVUkVfQ09OVFJPTCwgb2xkX21zcik7CisKKwlmcmVlX3ZtY3Modm1jcyk7Cit9CisKIHN0 YXRpYyBfX2luaXQgaW50IGhhcmR3YXJlX3NldHVwKHZvaWQpCiB7CiAJaWYgKHNldHVwX3ZtY3Nf Y29uZmlnKCZ2bWNzX2NvbmZpZykgPCAwKQpAQCAtNzIyNyw2ICs3NTc1LDggQEAgc3RhdGljIGlu dCBfX2luaXQgdm14X2luaXQodm9pZCkKIAlpZiAocikKIAkJZ290byBvdXQzOwogCisJYWxsb2Nf dm1jc2luZm8oKTsKKwogCXZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKE1TUl9GU19CQVNF LCBmYWxzZSk7CiAJdm14X2Rpc2FibGVfaW50ZXJjZXB0X2Zvcl9tc3IoTVNSX0dTX0JBU0UsIGZh bHNlKTsKIAl2bXhfZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcihNU1JfS0VSTkVMX0dTX0JBU0Us IHRydWUpOwotLSAKMS43LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmtleGVjIG1haWxpbmcgbGlzdAprZXhlY0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8va2V4ZWMK