From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754491Ab0EGWnT (ORCPT ); Fri, 7 May 2010 18:43:19 -0400 Received: from terminus.zytor.com ([198.137.202.10]:33461 "EHLO mail.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754119Ab0EGWnR (ORCPT ); Fri, 7 May 2010 18:43:17 -0400 Message-ID: <4BE49778.6060800@zytor.com> Date: Fri, 07 May 2010 15:43:04 -0700 From: "H. Peter Anvin" User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100330 Fedora/3.0.4-1.fc12 Thunderbird/3.0.4 MIME-Version: 1.0 To: LKML , Ingo Molnar , Greg KH , Hank Janssen , Thomas Gleixner , Alok Kataria Subject: RFC - Cleaned up hypervisor layer Content-Type: multipart/mixed; boundary="------------030202080905010901000708" 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. --------------030202080905010901000708 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit This patch implements a cleaned up hypervisor layer, plus cleans up some of the aspects of both Hank's MS-HyperV patch and the existing VMware driver. In particular, the MS-HyperV information is private information, per system, not per CPU, and can thus simply be stored in an ordinary global variable. This also turns the hypervisor detection into an information structure instead of just an identifier. -hpa --------------030202080905010901000708 Content-Type: text/plain; name="diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="diff" ZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2h5cGVydi5oIGIvYXJjaC94ODYv aW5jbHVkZS9hc20vaHlwZXJ2LmgKaW5kZXggNDYwNDA0Ny4uNWRmNDc3YSAxMDA2NDQKLS0t IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vaHlwZXJ2LmgKKysrIGIvYXJjaC94ODYvaW5jbHVk ZS9hc20vaHlwZXJ2LmgKQEAgLTEsNSArMSw1IEBACi0jaWZuZGVmIF9BU01fWDg2X0tWTV9I WVBFUlZfSAotI2RlZmluZSBfQVNNX1g4Nl9LVk1fSFlQRVJWX0gKKyNpZm5kZWYgX0FTTV9Y ODZfSFlQRVJWX0gKKyNkZWZpbmUgX0FTTV9YODZfSFlQRVJWX0gKIAogI2luY2x1ZGUgPGxp bnV4L3R5cGVzLmg+CiAKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2RlZmluZSBIWVBFUlZfSFlQ RVJWSVNPUl9QUkVTRU5UX0JJVAkJMHg4MDAwMDAwMAogI2RlZmluZSBIWVBFUlZfQ1BVSURf TUlOCQkJMHg0MDAwMDAwNQorI2RlZmluZSBIWVBFUlZfQ1BVSURfTUFYCQkJMHg0MDAwZmZm ZgogCiAvKgogICogRmVhdHVyZSBpZGVudGlmaWNhdGlvbi4gRUFYIGluZGljYXRlcyB3aGlj aCBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9oeXBlcnZpc29yLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9oeXBlcnZpc29yLmgK aW5kZXggYjc4YzA5NC4uNzBhYmRhNyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9h c20vaHlwZXJ2aXNvci5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2h5cGVydmlzb3Iu aApAQCAtMTcsMTAgKzE3LDMzIEBACiAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp biBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCiAgKgogICov Ci0jaWZuZGVmIEFTTV9YODZfX0hZUEVSVklTT1JfSAotI2RlZmluZSBBU01fWDg2X19IWVBF UlZJU09SX0gKKyNpZm5kZWYgX0FTTV9YODZfSFlQRVJWSVNPUl9ICisjZGVmaW5lIF9BU01f WDg2X0hZUEVSVklTT1JfSAogCiBleHRlcm4gdm9pZCBpbml0X2h5cGVydmlzb3Ioc3RydWN0 IGNwdWluZm9feDg2ICpjKTsKIGV4dGVybiB2b2lkIGluaXRfaHlwZXJ2aXNvcl9wbGF0Zm9y bSh2b2lkKTsKIAorLyoKKyAqIHg4NiBoeXBlcnZpc29yIGluZm9ybWF0aW9uCisgKi8KK3N0 cnVjdCBoeXBlcnZpc29yX3g4NiB7CisJLyogSHlwZXJ2aXNvciBuYW1lICovCisJY29uc3Qg Y2hhcgkqbmFtZTsKKworCS8qIERldGVjdGlvbiByb3V0aW5lICovCisJYm9vbAkJKCpkZXRl Y3QpKHZvaWQpOworCisJLyogQWRqdXN0IENQVSBmZWF0dXJlIGJpdHMgKHJ1biBvbmNlIHBl ciBDUFUpICovCisJdm9pZAkJKCpzZXRfY3B1X2ZlYXR1cmVzKShzdHJ1Y3QgY3B1aW5mb194 ODYgKik7CisKKwkvKiBQbGF0Zm9ybSBzZXR1cCAocnVuIG9uY2UgcGVyIGJvb3QpICovCisJ dm9pZAkJKCppbml0X3BsYXRmb3JtKSh2b2lkKTsKK307CisKK2V4dGVybiBjb25zdCBzdHJ1 Y3QgaHlwZXJ2aXNvcl94ODYgKng4Nl9oeXBlcjsKKworLyogUmVjb2duaXplZCBoeXBlcnZp c29ycyAqLworZXh0ZXJuIGNvbnN0IHN0cnVjdCBoeXBlcnZpc29yX3g4NiB4ODZfaHlwZXJf dm13YXJlOworZXh0ZXJuIGNvbnN0IHN0cnVjdCBoeXBlcnZpc29yX3g4NiB4ODZfaHlwZXJf bXNfaHlwZXJ2OworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNt L21zaHlwZXJ2LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc2h5cGVydi5oCmluZGV4IDZj ZDgxMDEuLjc5Y2U1NjggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL21zaHlw ZXJ2LmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vbXNoeXBlcnYuaApAQCAtMSw3ICsx LDE0IEBACi0jaWZuZGVmIEFTTV9YODZfX01TSFlQRVJfSAotI2RlZmluZSBBU01fWDg2X19N U0hZUEVSX0gKKyNpZm5kZWYgX0FTTV9YODZfTVNIWVBFUl9ICisjZGVmaW5lIF9BU01fWDg2 X01TSFlQRVJfSAogCi1pbnQgbXNfaHlwZXJ2X3BsYXRmb3JtKHZvaWQpOwotdm9pZCBfX2Nw dWluaXQgbXNfaHlwZXJ2X3NldF9mZWF0dXJlX2JpdHMoc3RydWN0IGNwdWluZm9feDg2ICpj KTsKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGFzbS9oeXBlcnYuaD4K Kworc3RydWN0IG1zX2h5cGVydl9pbmZvIHsKKwl1MzIgZmVhdHVyZXM7CisJdTMyIGhpbnRz OworfTsKKworZXh0ZXJuIHN0cnVjdCBtc19oeXBlcnZfaW5mbyBtc19oeXBlcnY7CiAKICNl bmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmggYi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaAppbmRleCA1OTdjMDQxLi5lNGYxZGZi IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaAorKysgYi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaApAQCAtMTEzLDkgKzExMyw2IEBAIHN0 cnVjdCBjcHVpbmZvX3g4NiB7CiAJLyogSW5kZXggaW50byBwZXJfY3B1IGxpc3Q6ICovCiAJ dTE2CQkJY3B1X2luZGV4OwogI2VuZGlmCi0JdW5zaWduZWQgaW50CQl4ODZfaHlwZXJfdmVu ZG9yOwotCS8qIFRoZSBsYXlvdXQgb2YgdGhpcyBmaWVsZCBpcyBoeXBlcnZpc29yIHNwZWNp ZmljICovCi0JdW5zaWduZWQgaW50CQl4ODZfaHlwZXJfZmVhdHVyZXM7CiB9IF9fYXR0cmli dXRlX18oKF9fYWxpZ25lZF9fKFNNUF9DQUNIRV9CWVRFUykpKTsKIAogI2RlZmluZSBYODZf VkVORE9SX0lOVEVMCTAKQEAgLTEyOSwxMCArMTI2LDYgQEAgc3RydWN0IGNwdWluZm9feDg2 IHsKIAogI2RlZmluZSBYODZfVkVORE9SX1VOS05PV04JMHhmZgogCi0jZGVmaW5lIFg4Nl9I WVBFUl9WRU5ET1JfTk9ORSAgMAotI2RlZmluZSBYODZfSFlQRVJfVkVORE9SX1ZNV0FSRSAx Ci0jZGVmaW5lIFg4Nl9IWVBFUl9WRU5ET1JfTVNGVAkyCi0KIC8qCiAgKiBjYXBhYmlsaXRp ZXMgb2YgQ1BVcwogICovCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS92bXdh cmUuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Ztd2FyZS5oCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBlNDllZDZkLi4wMDAwMDAwCi0tLSBhL2FyY2gveDg2L2luY2x1ZGUv YXNtL3Ztd2FyZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLyoKLSAqIENv cHlyaWdodCAoQykgMjAwOCwgVk13YXJlLCBJbmMuCi0gKgotICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK LSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotICogKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0gKiBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g KiBNRVJDSEFOVEFCSUxJVFkgT1IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Us IEdPT0QgVElUTEUgb3IKLSAqIE5PTiBJTkZSSU5HRU1FTlQuICBTZWUgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlCi0gKiBkZXRhaWxzLgotICoKLSAqIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Qs IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotICoKLSAqLwotI2lm bmRlZiBBU01fWDg2X19WTVdBUkVfSAotI2RlZmluZSBBU01fWDg2X19WTVdBUkVfSAotCi1l eHRlcm4gdm9pZCB2bXdhcmVfcGxhdGZvcm1fc2V0dXAodm9pZCk7Ci1leHRlcm4gaW50IHZt d2FyZV9wbGF0Zm9ybSh2b2lkKTsKLWV4dGVybiB2b2lkIHZtd2FyZV9zZXRfZmVhdHVyZV9i aXRzKHN0cnVjdCBjcHVpbmZvX3g4NiAqYyk7Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJj aC94ODYva2VybmVsL2NwdS9oeXBlcnZpc29yLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2h5 cGVydmlzb3IuYwppbmRleCBkZTNmNGUwLi44ODg3NzdhIDEwMDY0NAotLS0gYS9hcmNoL3g4 Ni9rZXJuZWwvY3B1L2h5cGVydmlzb3IuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2h5 cGVydmlzb3IuYwpAQCAtMjIsNDAgKzIyLDUyIEBACiAgKi8KIAogI2luY2x1ZGUgPGFzbS9w cm9jZXNzb3IuaD4KLSNpbmNsdWRlIDxhc20vdm13YXJlLmg+Ci0jaW5jbHVkZSA8YXNtL21z aHlwZXJ2Lmg+CiAjaW5jbHVkZSA8YXNtL2h5cGVydmlzb3IuaD4KIAotc3RhdGljIGlubGlu ZSB2b2lkIF9fY3B1aW5pdAotZGV0ZWN0X2h5cGVydmlzb3JfdmVuZG9yKHN0cnVjdCBjcHVp bmZvX3g4NiAqYykKKy8qCisgKiBIeXBlcnZpc29yIGRldGVjdCBvcmRlci4gIFRoaXMgaXMg c3BlY2lmaWVkIGV4cGxpY2l0bHkgaGVyZSBiZWNhdXNlCisgKiBzb21lIGh5cGVydmlzb3Jz IG1pZ2h0IGltcGxlbWVudCBjb21wYXRpYmlsaXR5IG1vZGVzIGZvciBvdGhlcgorICogaHlw ZXJ2aXNvcnMgYW5kIHRoZXJlZm9yZSBuZWVkIHRvIGJlIGRldGVjdGVkIGluIHNwZWNpZmlj IHNlcXVlbmNlLgorICovCitzdGF0aWMgY29uc3QgX19pbml0Y29uc3Qgc3RydWN0IGh5cGVy dmlzb3JfeDg2ICogY29uc3QgaHlwZXJ2aXNvcnNbXSA9CiB7Ci0JaWYgKHZtd2FyZV9wbGF0 Zm9ybSgpKQotCQljLT54ODZfaHlwZXJfdmVuZG9yID0gWDg2X0hZUEVSX1ZFTkRPUl9WTVdB UkU7Ci0JZWxzZSBpZiAobXNfaHlwZXJ2X3BsYXRmb3JtKCkpCi0JCWMtPng4Nl9oeXBlcl92 ZW5kb3IgPSBYODZfSFlQRVJfVkVORE9SX01TRlQ7Ci0JZWxzZQotCQljLT54ODZfaHlwZXJf dmVuZG9yID0gWDg2X0hZUEVSX1ZFTkRPUl9OT05FOwotfQorCSZ4ODZfaHlwZXJfdm13YXJl LAorCSZ4ODZfaHlwZXJfbXNfaHlwZXJ2LAorfTsKKworY29uc3Qgc3RydWN0IGh5cGVydmlz b3JfeDg2ICp4ODZfaHlwZXI7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBfX2NwdWluaXQKLWh5 cGVydmlzb3Jfc2V0X2ZlYXR1cmVfYml0cyhzdHJ1Y3QgY3B1aW5mb194ODYgKmMpCitzdGF0 aWMgaW5saW5lIHZvaWQgX19pbml0CitkZXRlY3RfaHlwZXJ2aXNvcl92ZW5kb3Iodm9pZCkK IHsKLQlpZiAoYm9vdF9jcHVfZGF0YS54ODZfaHlwZXJfdmVuZG9yID09IFg4Nl9IWVBFUl9W RU5ET1JfVk1XQVJFKQotCQl2bXdhcmVfc2V0X2ZlYXR1cmVfYml0cyhjKTsKLQllbHNlIGlm IChib290X2NwdV9kYXRhLng4Nl9oeXBlcl92ZW5kb3IgPT0gWDg2X0hZUEVSX1ZFTkRPUl9N U0ZUKQotCQltc19oeXBlcnZfc2V0X2ZlYXR1cmVfYml0cyhjKTsKLQlyZXR1cm47CisJY29u c3Qgc3RydWN0IGh5cGVydmlzb3JfeDg2ICpoLCAqIGNvbnN0ICpwOworCisJZm9yIChwID0g aHlwZXJ2aXNvcnM7IHAgPCBoeXBlcnZpc29ycyArIEFSUkFZX1NJWkUoaHlwZXJ2aXNvcnMp OyBwKyspIHsKKwkJaCA9ICpwOworCQlpZiAoaC0+ZGV0ZWN0KCkpIHsKKwkJCXg4Nl9oeXBl ciA9IGg7CisJCQlwcmludGsoS0VSTl9JTkZPICJIeXBlcnZpc29yIGRldGVjdGVkOiAlc1xu IiwgaC0+bmFtZSk7CisJCQlicmVhazsKKwkJfQorCX0KIH0KIAogdm9pZCBfX2NwdWluaXQg aW5pdF9oeXBlcnZpc29yKHN0cnVjdCBjcHVpbmZvX3g4NiAqYykKIHsKLQlkZXRlY3RfaHlw ZXJ2aXNvcl92ZW5kb3IoYyk7Ci0JaHlwZXJ2aXNvcl9zZXRfZmVhdHVyZV9iaXRzKGMpOwor CWlmICh4ODZfaHlwZXIgJiYgeDg2X2h5cGVyLT5zZXRfY3B1X2ZlYXR1cmVzKQorCQl4ODZf aHlwZXItPnNldF9jcHVfZmVhdHVyZXMoYyk7CiB9CiAKIHZvaWQgX19pbml0IGluaXRfaHlw ZXJ2aXNvcl9wbGF0Zm9ybSh2b2lkKQogeworCQorCWRldGVjdF9oeXBlcnZpc29yX3ZlbmRv cigpOworCisJaWYgKCF4ODZfaHlwZXIpCisJCXJldHVybjsKKwogCWluaXRfaHlwZXJ2aXNv cigmYm9vdF9jcHVfZGF0YSk7Ci0JaWYgKGJvb3RfY3B1X2RhdGEueDg2X2h5cGVyX3ZlbmRv ciA9PSBYODZfSFlQRVJfVkVORE9SX1ZNV0FSRSkKLQkJdm13YXJlX3BsYXRmb3JtX3NldHVw KCk7CisKKwlpZiAoeDg2X2h5cGVyLT5pbml0X3BsYXRmb3JtKQorCQl4ODZfaHlwZXItPmlu aXRfcGxhdGZvcm0oKTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbXNo eXBlcnYuYyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvbXNoeXBlcnYuYwppbmRleCAyNDQzYjYx Li4yYTFhMjU2IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L21zaHlwZXJ2LmMK KysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9tc2h5cGVydi5jCkBAIC0yMyw0NSArMjMsNDIg QEAKIAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nv ci5oPgorI2luY2x1ZGUgPGFzbS9oeXBlcnZpc29yLmg+CiAjaW5jbHVkZSA8YXNtL2h5cGVy di5oPgogI2luY2x1ZGUgPGFzbS9tc2h5cGVydi5oPgogCitzdHJ1Y3QgbXNfaHlwZXJ2X2lu Zm8gbXNfaHlwZXJ2OwogCi1pbnQgbXNfaHlwZXJ2X3BsYXRmb3JtKHZvaWQpCitzdGF0aWMg Ym9vbCBfX2luaXQgbXNfaHlwZXJ2X3BsYXRmb3JtKHZvaWQpCiB7Ci0JdTMyIGVheCwgZWJ4 LCBlY3gsIGVkeDsKLQljaGFyIGh5cF9zaWduYXR1cmVbMTNdOworCXUzMiBlYXg7CisJdTMy IGh5cF9zaWduYXR1cmVbM107CiAKLQljcHVpZCgxLCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4 KTsKLQlpZiAoIShlY3ggJiBIWVBFUlZfSFlQRVJWSVNPUl9QUkVTRU5UX0JJVCkpCi0JCXJl dHVybiAwOworCWlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0hZUEVSVklTT1IpKQor CQlyZXR1cm4gZmFsc2U7CiAKLQljcHVpZChIWVBFUlZfQ1BVSURfVkVORE9SX0FORF9NQVhf RlVOQ1RJT05TLCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KTsKLQkqKHUzMiAqKShoeXBfc2ln bmF0dXJlICsgMCkgPSBlYng7Ci0JKih1MzIgKikoaHlwX3NpZ25hdHVyZSArIDQpID0gZWN4 OwotCSoodTMyICopKGh5cF9zaWduYXR1cmUgKyA4KSA9IGVkeDsKKwljcHVpZChIWVBFUlZf Q1BVSURfVkVORE9SX0FORF9NQVhfRlVOQ1RJT05TLAorCSAgICAgICZlYXgsICZoeXBfc2ln bmF0dXJlWzBdLCAmaHlwX3NpZ25hdHVyZVsxXSwgJmh5cF9zaWduYXR1cmVbMl0pOwogCi0J aWYgKChlYXggPCBIWVBFUlZfQ1BVSURfTUlOKSB8fCAobWVtY21wKCJNaWNyb3NvZnQgSHYi LCBoeXBfc2lnbmF0dXJlLCAxMikpKQotCQlyZXR1cm4gMDsKLQlyZXR1cm4gMTsKKwlyZXR1 cm4gZWF4ID49IEhZUEVSVl9DUFVJRF9NSU4gJiYgCisJCWVheCA8PSBIWVBFUlZfQ1BVSURf TUFYICYmCisJCSFtZW1jbXAoIk1pY3Jvc29mdCBIdiIsIGh5cF9zaWduYXR1cmUsIDEyKTsK IH0KIAotdm9pZCBfX2NwdWluaXQgbXNfaHlwZXJ2X3NldF9mZWF0dXJlX2JpdHMoc3RydWN0 IGNwdWluZm9feDg2ICpjKQorc3RhdGljIHZvaWQgX19pbml0IG1zX2h5cGVydl9pbml0X3Bs YXRmb3JtKHZvaWQpCiB7Ci0JdTMyIGVheCwgZWJ4LCBlY3gsIGVkeDsKLQotCWMtPng4Nl9o eXBlcl9mZWF0dXJlcyA9IDA7CiAJLyoKLQkgKiBFeHRyYWN0IHRoZSBmZWF0dXJlcywgcmVj b21tZW5kYXRpb25zIGV0Yy4KLQkgKiBUaGUgZmlyc3QgOSBiaXRzIHdpbGwgYmUgdXNlZCB0 byB0cmFjayBoeXBlcnZpc29yIGZlYXR1cmVzLgotCSAqIFRoZSBuZXh0IDYgYml0cyB3aWxs IGJlIHVzZWQgdG8gdHJhY2sgdGhlIGh5cGVydmlzb3IKLQkgKiByZWNvbW1lbmRhdGlvbnMu CisJICogRXh0cmFjdCB0aGUgZmVhdHVyZXMgYW5kIGhpbnRzCiAJICovCi0JY3B1aWQoSFlQ RVJWX0NQVUlEX0ZFQVRVUkVTLCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KTsKLQljLT54ODZf aHlwZXJfZmVhdHVyZXMgfD0gKGVheCAmIDB4MWZmKTsKKwltc19oeXBlcnYuZmVhdHVyZXMg PSBjcHVpZF9lYXgoSFlQRVJWX0NQVUlEX0ZFQVRVUkVTKTsKKwltc19oeXBlcnYuaGludHMg ICAgPSBjcHVpZF9lYXgoSFlQRVJWX0NQVUlEX0VOTElHSFRNRU5UX0lORk8pOwogCi0JY3B1 aWQoSFlQRVJWX0NQVUlEX0VOTElHSFRNRU5UX0lORk8sICZlYXgsICZlYngsICZlY3gsICZl ZHgpOwotCWMtPng4Nl9oeXBlcl9mZWF0dXJlcyB8PSAoKGVheCAmIDB4M2YpIDw8IDkpOwot CXByaW50ayhLRVJOX0lORk8gIkRldGVjdGVkIEh5cGVyViB3aXRoIGZlYXR1cmVzOiAleFxu IiwKLQkJYy0+eDg2X2h5cGVyX2ZlYXR1cmVzKTsKKwlwcmludGsoS0VSTl9JTkZPICJIeXBl clY6IGZlYXR1cmVzIDB4JXgsIGhpbnRzIDB4JXhcbiIsCisJICAgICAgIG1zX2h5cGVydi5m ZWF0dXJlcywgbXNfaHlwZXJ2LmhpbnRzKTsKIH0KKworY29uc3QgX19yZWZjb25zdCBzdHJ1 Y3QgaHlwZXJ2aXNvcl94ODYgeDg2X2h5cGVyX21zX2h5cGVydiA9IHsKKwkubmFtZQkJCT0g Ik1pY3Jvc29mdCBIeXBlclYiLAorCS5kZXRlY3QJCQk9IG1zX2h5cGVydl9wbGF0Zm9ybSwK KwkuaW5pdF9wbGF0Zm9ybQkJPSBtc19oeXBlcnZfaW5pdF9wbGF0Zm9ybSwKK307CmRpZmYg LS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L3Ztd2FyZS5jIGIvYXJjaC94ODYva2VybmVs L2NwdS92bXdhcmUuYwppbmRleCAxY2JlZDk3Li40NmE1YjVkIDEwMDY0NAotLS0gYS9hcmNo L3g4Ni9rZXJuZWwvY3B1L3Ztd2FyZS5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvdm13 YXJlLmMKQEAgLTIzLDggKzIzLDggQEAKIAogI2luY2x1ZGUgPGxpbnV4L2RtaS5oPgogI2lu Y2x1ZGUgPGFzbS9kaXY2NC5oPgotI2luY2x1ZGUgPGFzbS92bXdhcmUuaD4KICNpbmNsdWRl IDxhc20veDg2X2luaXQuaD4KKyNpbmNsdWRlIDxhc20vaHlwZXJ2aXNvci5oPgogCiAjZGVm aW5lIENQVUlEX1ZNV0FSRV9JTkZPX0xFQUYJMHg0MDAwMDAwMAogI2RlZmluZSBWTVdBUkVf SFlQRVJWSVNPUl9NQUdJQwkweDU2NEQ1ODY4CkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyB1 bnNpZ25lZCBsb25nIHZtd2FyZV9nZXRfdHNjX2toeih2b2lkKQogCXJldHVybiB0c2NfaHo7 CiB9CiAKLXZvaWQgX19pbml0IHZtd2FyZV9wbGF0Zm9ybV9zZXR1cCh2b2lkKQorc3RhdGlj IHZvaWQgX19pbml0IHZtd2FyZV9wbGF0Zm9ybV9zZXR1cCh2b2lkKQogewogCXVpbnQzMl90 IGVheCwgZWJ4LCBlY3gsIGVkeDsKIApAQCAtODIsMjQgKzgyLDIxIEBAIHZvaWQgX19pbml0 IHZtd2FyZV9wbGF0Zm9ybV9zZXR1cCh2b2lkKQogICogc2VyaWFsIGtleSBzaG91bGQgYmUg ZW5vdWdoLCBhcyB0aGlzIHdpbGwgYWx3YXlzIGhhdmUgYSBWTXdhcmUKICAqIHNwZWNpZmlj IHN0cmluZyB3aGVuIHJ1bm5pbmcgdW5kZXIgVk13YXJlIGh5cGVydmlzb3IuCiAgKi8KLWlu dCB2bXdhcmVfcGxhdGZvcm0odm9pZCkKK3N0YXRpYyBib29sIF9faW5pdCB2bXdhcmVfcGxh dGZvcm0odm9pZCkKIHsKIAlpZiAoY3B1X2hhc19oeXBlcnZpc29yKSB7Ci0JCXVuc2lnbmVk IGludCBlYXgsIGVieCwgZWN4LCBlZHg7Ci0JCWNoYXIgaHlwZXJfdmVuZG9yX2lkWzEzXTsK LQotCQljcHVpZChDUFVJRF9WTVdBUkVfSU5GT19MRUFGLCAmZWF4LCAmZWJ4LCAmZWN4LCAm ZWR4KTsKLQkJbWVtY3B5KGh5cGVyX3ZlbmRvcl9pZCArIDAsICZlYngsIDQpOwotCQltZW1j cHkoaHlwZXJfdmVuZG9yX2lkICsgNCwgJmVjeCwgNCk7Ci0JCW1lbWNweShoeXBlcl92ZW5k b3JfaWQgKyA4LCAmZWR4LCA0KTsKLQkJaHlwZXJfdmVuZG9yX2lkWzEyXSA9ICdcMCc7Ci0J CWlmICghc3RyY21wKGh5cGVyX3ZlbmRvcl9pZCwgIlZNd2FyZVZNd2FyZSIpKQotCQkJcmV0 dXJuIDE7CisJCXVuc2lnbmVkIGludCBlYXg7CisJCXVuc2lnbmVkIGludCBoeXBlcl92ZW5k b3JfaWRbM107CisKKwkJY3B1aWQoQ1BVSURfVk1XQVJFX0lORk9fTEVBRiwgJmVheCwgJmh5 cGVyX3ZlbmRvcl9pZFswXSwKKwkJICAgICAgJmh5cGVyX3ZlbmRvcl9pZFsxXSwgJmh5cGVy X3ZlbmRvcl9pZFsyXSk7CisJCWlmICghbWVtY21wKGh5cGVyX3ZlbmRvcl9pZCwgIlZNd2Fy ZVZNd2FyZSIsIDEyKSkKKwkJCXJldHVybiB0cnVlOwogCX0gZWxzZSBpZiAoZG1pX2F2YWls YWJsZSAmJiBkbWlfbmFtZV9pbl9zZXJpYWwoIlZNd2FyZSIpICYmCiAJCSAgIF9fdm13YXJl X3BsYXRmb3JtKCkpCi0JCXJldHVybiAxOworCQlyZXR1cm4gdHJ1ZTsKIAotCXJldHVybiAw OworCXJldHVybiBmYWxzZTsKIH0KIAogLyoKQEAgLTExNCw4ICsxMTEsMTUgQEAgaW50IHZt d2FyZV9wbGF0Zm9ybSh2b2lkKQogICogc28gdGhhdCB0aGUga2VybmVsIGNvdWxkIGp1c3Qg dHJ1c3QgdGhlIGh5cGVydmlzb3Igd2l0aCBwcm92aWRpbmcgYQogICogcmVsaWFibGUgdmly dHVhbCBUU0MgdGhhdCBpcyBzdWl0YWJsZSBmb3IgdGltZWtlZXBpbmcuCiAgKi8KLXZvaWQg X19jcHVpbml0IHZtd2FyZV9zZXRfZmVhdHVyZV9iaXRzKHN0cnVjdCBjcHVpbmZvX3g4NiAq YykKK3N0YXRpYyB2b2lkIF9fY3B1aW5pdCB2bXdhcmVfc2V0X2NwdV9mZWF0dXJlcyhzdHJ1 Y3QgY3B1aW5mb194ODYgKmMpCiB7CiAJc2V0X2NwdV9jYXAoYywgWDg2X0ZFQVRVUkVfQ09O U1RBTlRfVFNDKTsKIAlzZXRfY3B1X2NhcChjLCBYODZfRkVBVFVSRV9UU0NfUkVMSUFCTEUp OwogfQorCitjb25zdCBfX3JlZmNvbnN0IHN0cnVjdCBoeXBlcnZpc29yX3g4NiB4ODZfaHlw ZXJfdm13YXJlID0geworCS5uYW1lCQkJPSAiVk13YXJlIiwKKwkuZGV0ZWN0CQkJPSB2bXdh cmVfcGxhdGZvcm0sCisJLnNldF9jcHVfZmVhdHVyZXMJPSB2bXdhcmVfc2V0X2NwdV9mZWF0 dXJlcywKKwkuaW5pdF9wbGF0Zm9ybQkJPSB2bXdhcmVfcGxhdGZvcm1fc2V0dXAsCit9Owo= --------------030202080905010901000708--