Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: x86: Add topology_hw_smt_threads() and remove smp_num_siblings From: Prarit Bhargava Message-Id: <20180104115204.17067-1-prarit@redhat.com> Date: Thu, 4 Jan 2018 06:52:04 -0500 To: linux-kernel@vger.kernel.org Cc: Prarit Bhargava , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , x86@kernel.org, Jonathan Corbet , Andi Kleen , Vitaly Kuznetsov , linux-doc@vger.kernel.org, linux-edac@vger.kernel.org, oprofile-list@lists.sf.net List-ID: Q29tbWl0IGJiYjY1ZDJkMzY1ZSAoIng4NjogdXNlIGNwdWlkIHZlY3RvciAweGIgd2hlbiBhdmFp bGFibGUgZm9yCmRldGVjdGluZyBjcHUgdG9wb2xvZ3kiKSBjaGFuZ2VkIHRoZSB2YWx1ZSBvZiBz bXBfbnVtX3NpYmxpbmdzIGZyb20gdGhlCmFjdGl2ZSBudW1iZXIgb2YgdGhyZWFkcyBpbiBhIGNv cmUgdG8gdGhlIG1heGltdW0gbnVtYmVyIHRocmVhZHMgaW4gYQpjb3JlLiAgZS5nLikgT24gSW50 ZWwgSGFzd2VsbCBhbmQgbmV3ZXIgc3lzdGVtcyBzbXBfbnVtX3NpYmxpbmdzIGlzCnR3byBldmVu IGlmIFNNVCBpcyBkaXNhYmxlZC4KCnRvcG9sb2d5X21heF9zbXRfdGhyZWFkcygpIGFscmVhZHkg cmV0dXJucyB0aGUgYWN0aXZlIG51bWJlciBvZiB0aHJlYWRzLgpJbnRyb2R1Y2UgdG9wb2xvZ3lf aHdfc210X3RocmVhZHMoKSB3aGljaCByZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZgp0aHJl YWRzLiAgVGhlc2UgYXJlIHVzZWQgdG8gZml4IGFuZCByZXBsYWNlIHJlZmVyZW5jZXMgdG8gc21w X251bV9zaWJsaW5ncy4KClNpZ25lZC1vZmYtYnk6IFByYXJpdCBCaGFyZ2F2YSA8cHJhcml0QHJl ZGhhdC5jb20+CkNjOiBUaG9tYXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KQ2M6IElu Z28gTW9sbmFyIDxtaW5nb0ByZWRoYXQuY29tPgpDYzogIkguIFBldGVyIEFudmluIiA8aHBhQHp5 dG9yLmNvbT4KQ2M6IHg4NkBrZXJuZWwub3JnCkNjOiBKb25hdGhhbiBDb3JiZXQgPGNvcmJldEBs d24ubmV0PgpDYzogQW5kaSBLbGVlbiA8YWtAbGludXguaW50ZWwuY29tPgpDYzogVml0YWx5IEt1 em5ldHNvdiA8dmt1em5ldHNAcmVkaGF0LmNvbT4KQ2M6IGxpbnV4LWRvY0B2Z2VyLmtlcm5lbC5v cmcKQ2M6IGxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3JnCkNjOiBvcHJvZmlsZS1saXN0QGxpc3Rz LnNmLm5ldAotLS0KIERvY3VtZW50YXRpb24veDg2L3RvcG9sb2d5LnR4dCAgICAgICAgICB8IDEz ICsrKysrKysrKy0tLS0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL3BlcmZfZXZlbnRfcDQuaCAgICB8 ICA0ICsrLS0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL3NtcC5oICAgICAgICAgICAgICB8ICAyIC0t CiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS90b3BvbG9neS5oICAgICAgICAgfCAxMCArKysrKy0tLS0t CiBhcmNoL3g4Ni9rZXJuZWwvY3B1L2FtZC5jICAgICAgICAgICAgICAgfCAgNiArKy0tLS0KIGFy Y2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmMgICAgICAgICAgICB8IDE4ICsrKysrKysrKysrLS0t LS0tLQogYXJjaC94ODYva2VybmVsL2NwdS9tY2hlY2svbWNlLWluamVjdC5jIHwgIDMgKystCiBh cmNoL3g4Ni9rZXJuZWwvY3B1L3RvcG9sb2d5LmMgICAgICAgICAgfCAgNCArKy0tCiBhcmNoL3g4 Ni9rZXJuZWwvaXRtdC5jICAgICAgICAgICAgICAgICAgfCAgMiArLQogYXJjaC94ODYva2VybmVs L3Byb2Nlc3MuYyAgICAgICAgICAgICAgIHwgIDMgKystCiBhcmNoL3g4Ni9rZXJuZWwvc21wYm9v dC5jICAgICAgICAgICAgICAgfCAyMiArKysrKysrKy0tLS0tLS0tLS0tLS0tCiBhcmNoL3g4Ni9v cHJvZmlsZS9ubWlfaW50LmMgICAgICAgICAgICAgfCAgMiArLQogYXJjaC94ODYvb3Byb2ZpbGUv b3BfbW9kZWxfcDQuYyAgICAgICAgIHwgIDQgKystLQogMTMgZmlsZXMgY2hhbmdlZCwgNDcgaW5z ZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi94 ODYvdG9wb2xvZ3kudHh0IGIvRG9jdW1lbnRhdGlvbi94ODYvdG9wb2xvZ3kudHh0CmluZGV4IGYz ZTlkN2U5ZWQ2Yy4uOWZhMDdhNDQ2MGRmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3g4Ni90 b3BvbG9neS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi94ODYvdG9wb2xvZ3kudHh0CkBAIC04Mywx MyArODMsMTggQEAgVGhlIHRvcG9sb2d5IG9mIGEgc3lzdGVtIGlzIGRlc2NyaWJlZCBpbiB0aGUg dW5pdHMgb2Y6CiAKICAgQ29yZS1yZWxhdGVkIHRvcG9sb2d5IGluZm9ybWF0aW9uIGluIHRoZSBr ZXJuZWw6CiAKLSAgLSBzbXBfbnVtX3NpYmxpbmdzOgorICAtIHRvcG9sb2d5X2h3X3NtdF90aHJl YWRzOgogCi0gICAgVGhlIG51bWJlciBvZiB0aHJlYWRzIGluIGEgY29yZS4gVGhlIG51bWJlciBv ZiB0aHJlYWRzIGluIGEgcGFja2FnZSBjYW4gYmUKLSAgICBjYWxjdWxhdGVkIGJ5OgorICAgIFRo ZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRoYXQgYSBjb3JlJ3MgaGFyZHdhcmUgc3VwcG9y dHMuICBGb3IKKyAgICBleGFtcGxlLCBvbiBJbnRlbCBIYXN3ZWxsIGFuZCBuZXdlciBzeXN0ZW1z IHRoaXMgaXMgMiBldmVuIGlmIFNNVCBpcworICAgIGRpc2FibGVkLgogCi0JdGhyZWFkc19wZXJf cGFja2FnZSA9IGNwdWluZm9feDg2Lng4Nl9tYXhfY29yZXMgKiBzbXBfbnVtX3NpYmxpbmdzCisg IC0gdG9wb2xvZ3lfbWF4X3NtdF90aHJlYWRzOgogCisgICAgVGhlIG51bWJlciBvZiB0aHJlYWRz L2NvcmUgYXZhaWxhYmxlIGF0IHJ1bnRpbWUuICBUaGUgbnVtYmVyIG9mIHRocmVhZHMgaW4KKyAg ICBhIHBhY2thZ2UgY2FuIGJlIGNhbGN1bGF0ZWQgYnk6CisKKyAgICB0aHJlYWRzX3Blcl9wYWNr YWdlID0gY3B1aW5mb194ODYueDg2X21heF9jb3JlcyAqIHRvcG9sb2d5X21heF9zbXRfdGhyZWFk cwogCiAqIFRocmVhZHM6CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BlcmZf ZXZlbnRfcDQuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BlcmZfZXZlbnRfcDQuaAppbmRleCA5 NGRlMWEwNWFlYmEuLjExYWZkYWRjZTljMiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9h c20vcGVyZl9ldmVudF9wNC5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BlcmZfZXZlbnRf cDQuaApAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyBpbmxpbmUgdTY0IHA0X2NsZWFyX2h0X2Jp dCh1NjQgY29uZmlnKQogc3RhdGljIGlubGluZSBpbnQgcDRfaHRfYWN0aXZlKHZvaWQpCiB7CiAj aWZkZWYgQ09ORklHX1NNUAotCXJldHVybiBzbXBfbnVtX3NpYmxpbmdzID4gMTsKKwlyZXR1cm4g dG9wb2xvZ3lfbWF4X3NtdF90aHJlYWRzKCkgPiAxOwogI2VuZGlmCiAJcmV0dXJuIDA7CiB9CkBA IC0xODksNyArMTg5LDcgQEAgc3RhdGljIGlubGluZSBpbnQgcDRfaHRfYWN0aXZlKHZvaWQpCiBz dGF0aWMgaW5saW5lIGludCBwNF9odF90aHJlYWQoaW50IGNwdSkKIHsKICNpZmRlZiBDT05GSUdf U01QCi0JaWYgKHNtcF9udW1fc2libGluZ3MgPT0gMikKKwlpZiAodG9wb2xvZ3lfbWF4X3NtdF90 aHJlYWRzKCkgPT0gMikKIAkJcmV0dXJuIGNwdSAhPSBjcHVtYXNrX2ZpcnN0KHRoaXNfY3B1X2Nw dW1hc2tfdmFyX3B0cihjcHVfc2libGluZ19tYXApKTsKICNlbmRpZgogCXJldHVybiAwOwpkaWZm IC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc21wLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9zbXAuaAppbmRleCA0NjFmNTNkMjc3MDguLmNmMjhhMzkzMjkxNyAxMDA2NDQKLS0tIGEvYXJj aC94ODYvaW5jbHVkZS9hc20vc21wLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vc21wLmgK QEAgLTE4LDcgKzE4LDYgQEAKICNpbmNsdWRlIDxhc20vdGhyZWFkX2luZm8uaD4KICNpbmNsdWRl IDxhc20vY3B1bWFzay5oPgogCi1leHRlcm4gaW50IHNtcF9udW1fc2libGluZ3M7CiBleHRlcm4g dW5zaWduZWQgaW50IG51bV9wcm9jZXNzb3JzOwogCiBERUNMQVJFX1BFUl9DUFVfUkVBRF9NT1NU TFkoY3B1bWFza192YXJfdCwgY3B1X3NpYmxpbmdfbWFwKTsKQEAgLTE3MCw3ICsxNjksNiBAQCBz dGF0aWMgaW5saW5lIGludCB3YmludmRfb25fYWxsX2NwdXModm9pZCkKIAl3YmludmQoKTsKIAly ZXR1cm4gMDsKIH0KLSNkZWZpbmUgc21wX251bV9zaWJsaW5ncwkxCiAjZW5kaWYgLyogQ09ORklH X1NNUCAqLwogCiBleHRlcm4gdW5zaWduZWQgZGlzYWJsZWRfY3B1czsKZGlmZiAtLWdpdCBhL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3RvcG9sb2d5LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS90b3Bv bG9neS5oCmluZGV4IGMxZDJhOTg5MjM1Mi4uYjVmZjFjNzg0ZWVmIDEwMDY0NAotLS0gYS9hcmNo L3g4Ni9pbmNsdWRlL2FzbS90b3BvbG9neS5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Rv cG9sb2d5LmgKQEAgLTExNiwxNiArMTE2LDE2IEBAIGV4dGVybiB1bnNpZ25lZCBpbnQgX19tYXhf bG9naWNhbF9wYWNrYWdlczsKICNkZWZpbmUgdG9wb2xvZ3lfbWF4X3BhY2thZ2VzKCkJCQkoX19t YXhfbG9naWNhbF9wYWNrYWdlcykKIAogZXh0ZXJuIGludCBfX21heF9zbXRfdGhyZWFkczsKLQot c3RhdGljIGlubGluZSBpbnQgdG9wb2xvZ3lfbWF4X3NtdF90aHJlYWRzKHZvaWQpCi17Ci0JcmV0 dXJuIF9fbWF4X3NtdF90aHJlYWRzOwotfQorI2RlZmluZSB0b3BvbG9neV9tYXhfc210X3RocmVh ZHMoKQkJKF9fbWF4X3NtdF90aHJlYWRzKQorZXh0ZXJuIGludCBfX2h3X3NtdF90aHJlYWRzOwor I2RlZmluZSB0b3BvbG9neV9od19zbXRfdGhyZWFkcygpCQkoX19od19zbXRfdGhyZWFkcykKIAog aW50IHRvcG9sb2d5X3VwZGF0ZV9wYWNrYWdlX21hcCh1bnNpZ25lZCBpbnQgYXBpY2lkLCB1bnNp Z25lZCBpbnQgY3B1KTsKIGV4dGVybiBpbnQgdG9wb2xvZ3lfcGh5c190b19sb2dpY2FsX3BrZyh1 bnNpZ25lZCBpbnQgcGtnKTsKICNlbHNlCiAjZGVmaW5lIHRvcG9sb2d5X21heF9wYWNrYWdlcygp CQkJKDEpCisjZGVmaW5lIHRvcG9sb2d5X21heF9zbXRfdGhyZWFkcygpCQkoMSkKKyNkZWZpbmUg dG9wb2xvZ3lfaHdfc210X3RocmVhZHMoKQkJKDEpCiBzdGF0aWMgaW5saW5lIGludAogdG9wb2xv Z3lfdXBkYXRlX3BhY2thZ2VfbWFwKHVuc2lnbmVkIGludCBhcGljaWQsIHVuc2lnbmVkIGludCBj cHUpIHsgcmV0dXJuIDA7IH0KIHN0YXRpYyBpbmxpbmUgaW50IHRvcG9sb2d5X3BoeXNfdG9fbG9n aWNhbF9wa2codW5zaWduZWQgaW50IHBrZykgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvYXJj aC94ODYva2VybmVsL2NwdS9hbWQuYyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvYW1kLmMKaW5kZXgg YmNiNzVkYzk3ZDQ0Li5mMjU4MjUwNWUyZjkgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9j cHUvYW1kLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9hbWQuYwpAQCAtMzMyLDE2ICszMzIs MTQgQEAgc3RhdGljIHZvaWQgYW1kX2dldF90b3BvbG9neShzdHJ1Y3QgY3B1aW5mb194ODYgKmMp CiAJCWNwdWlkKDB4ODAwMDAwMWUsICZlYXgsICZlYngsICZlY3gsICZlZHgpOwogCiAJCW5vZGVf aWQgID0gZWN4ICYgMHhmZjsKLQkJc21wX251bV9zaWJsaW5ncyA9ICgoZWJ4ID4+IDgpICYgMHhm ZikgKyAxOworCQlfX2h3X3NtdF90aHJlYWRzID0gKChlYnggPj4gOCkgJiAweGZmKSArIDE7CiAK IAkJaWYgKGMtPng4NiA9PSAweDE1KQogCQkJYy0+Y3VfaWQgPSBlYnggJiAweGZmOwogCiAJCWlm IChjLT54ODYgPj0gMHgxNykgewogCQkJYy0+Y3B1X2NvcmVfaWQgPSBlYnggJiAweGZmOwotCi0J CQlpZiAoc21wX251bV9zaWJsaW5ncyA+IDEpCi0JCQkJYy0+eDg2X21heF9jb3JlcyAvPSBzbXBf bnVtX3NpYmxpbmdzOworCQkJYy0+eDg2X21heF9jb3JlcyAvPSB0b3BvbG9neV9od19zbXRfdGhy ZWFkcygpOwogCQl9CiAKIAkJLyoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY29t bW9uLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jCmluZGV4IGM0N2RlNGViZjYzYS4u MTA3MGUyODMyY2EzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jCisr KyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmMKQEAgLTY1NCwyMiArNjU0LDIyIEBAIHZv aWQgZGV0ZWN0X2h0KHN0cnVjdCBjcHVpbmZvX3g4NiAqYykKIAogCWNwdWlkKDEsICZlYXgsICZl YngsICZlY3gsICZlZHgpOwogCi0Jc21wX251bV9zaWJsaW5ncyA9IChlYnggJiAweGZmMDAwMCkg Pj4gMTY7CisJX19od19zbXRfdGhyZWFkcyA9IChlYnggJiAweGZmMDAwMCkgPj4gMTY7CiAKLQlp ZiAoc21wX251bV9zaWJsaW5ncyA9PSAxKSB7CisJaWYgKHRvcG9sb2d5X2h3X3NtdF90aHJlYWRz KCkgPT0gMSkgewogCQlwcl9pbmZvX29uY2UoIkNQVTA6IEh5cGVyLVRocmVhZGluZyBpcyBkaXNh YmxlZFxuIik7CiAJCWdvdG8gb3V0OwogCX0KIAotCWlmIChzbXBfbnVtX3NpYmxpbmdzIDw9IDEp CisJaWYgKHRvcG9sb2d5X2h3X3NtdF90aHJlYWRzKCkgPD0gMSkKIAkJZ290byBvdXQ7CiAKLQlp bmRleF9tc2IgPSBnZXRfY291bnRfb3JkZXIoc21wX251bV9zaWJsaW5ncyk7CisJaW5kZXhfbXNi ID0gZ2V0X2NvdW50X29yZGVyKHRvcG9sb2d5X2h3X3NtdF90aHJlYWRzKCkpOwogCWMtPnBoeXNf cHJvY19pZCA9IGFwaWMtPnBoeXNfcGtnX2lkKGMtPmluaXRpYWxfYXBpY2lkLCBpbmRleF9tc2Ip OwogCi0Jc21wX251bV9zaWJsaW5ncyA9IHNtcF9udW1fc2libGluZ3MgLyBjLT54ODZfbWF4X2Nv cmVzOworCV9faHdfc210X3RocmVhZHMgPSB0b3BvbG9neV9od19zbXRfdGhyZWFkcygpIC8gYy0+ eDg2X21heF9jb3JlczsKIAotCWluZGV4X21zYiA9IGdldF9jb3VudF9vcmRlcihzbXBfbnVtX3Np YmxpbmdzKTsKKwlpbmRleF9tc2IgPSBnZXRfY291bnRfb3JkZXIodG9wb2xvZ3lfaHdfc210X3Ro cmVhZHMoKSk7CiAKIAljb3JlX2JpdHMgPSBnZXRfY291bnRfb3JkZXIoYy0+eDg2X21heF9jb3Jl cyk7CiAKQEAgLTY3Nyw3ICs2NzcsNyBAQCB2b2lkIGRldGVjdF9odChzdHJ1Y3QgY3B1aW5mb194 ODYgKmMpCiAJCQkJICAgICAgICgoMSA8PCBjb3JlX2JpdHMpIC0gMSk7CiAKIG91dDoKLQlpZiAo IXByaW50ZWQgJiYgKGMtPng4Nl9tYXhfY29yZXMgKiBzbXBfbnVtX3NpYmxpbmdzKSA+IDEpIHsK KwlpZiAoIXByaW50ZWQgJiYgKGMtPng4Nl9tYXhfY29yZXMgKiB0b3BvbG9neV9od19zbXRfdGhy ZWFkcygpKSA+IDEpIHsKIAkJcHJfaW5mbygiQ1BVOiBQaHlzaWNhbCBQcm9jZXNzb3IgSUQ6ICVk XG4iLAogCQkJYy0+cGh5c19wcm9jX2lkKTsKIAkJcHJfaW5mbygiQ1BVOiBQcm9jZXNzb3IgQ29y ZSBJRDogJWRcbiIsCkBAIC0xMjI4LDYgKzEyMjgsMTAgQEAgc3RhdGljIHZvaWQgaWRlbnRpZnlf Y3B1KHN0cnVjdCBjcHVpbmZvX3g4NiAqYykKIAkvKiBJbml0IE1hY2hpbmUgQ2hlY2sgRXhjZXB0 aW9uIGlmIGF2YWlsYWJsZS4gKi8KIAltY2hlY2tfY3B1X2luaXQoYyk7CiAKKwkvKiBNdXN0IGJl IGNhbGxlZCBiZWZvcmUgc2VsZWN0X2lkbGVfcm91dGluZSAqLworCWlmIChjICE9ICZib290X2Nw dV9kYXRhKQorCQlzZXRfY3B1X3NpYmxpbmdfbWFwKHJhd19zbXBfcHJvY2Vzc29yX2lkKCkpOwor CiAJc2VsZWN0X2lkbGVfcm91dGluZShjKTsKIAogI2lmZGVmIENPTkZJR19OVU1BCmRpZmYgLS1n aXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L21jaGVjay9tY2UtaW5qZWN0LmMgYi9hcmNoL3g4Ni9r ZXJuZWwvY3B1L21jaGVjay9tY2UtaW5qZWN0LmMKaW5kZXggMjMxYWQyM2IyNGE5Li4zNzg1OTI5 ZDExYWYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZS1pbmplY3Qu YworKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L21jaGVjay9tY2UtaW5qZWN0LmMKQEAgLTQyMCw3 ICs0MjAsOCBAQCBzdGF0aWMgdTMyIGdldF9uYmNfZm9yX25vZGUoaW50IG5vZGVfaWQpCiAJc3Ry dWN0IGNwdWluZm9feDg2ICpjID0gJmJvb3RfY3B1X2RhdGE7CiAJdTMyIGNvcmVzX3Blcl9ub2Rl OwogCi0JY29yZXNfcGVyX25vZGUgPSAoYy0+eDg2X21heF9jb3JlcyAqIHNtcF9udW1fc2libGlu Z3MpIC8gYW1kX2dldF9ub2Rlc19wZXJfc29ja2V0KCk7CisJY29yZXNfcGVyX25vZGUgPSAoYy0+ eDg2X21heF9jb3JlcyAqIHRvcG9sb2d5X2h3X3NtdF90aHJlYWRzKCkpIC8KKwkJCSBhbWRfZ2V0 X25vZGVzX3Blcl9zb2NrZXQoKTsKIAogCXJldHVybiBjb3Jlc19wZXJfbm9kZSAqIG5vZGVfaWQ7 CiB9CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L3RvcG9sb2d5LmMgYi9hcmNoL3g4 Ni9rZXJuZWwvY3B1L3RvcG9sb2d5LmMKaW5kZXggYjA5OTAyNGQzMzljLi44Y2YyOTI3YzczZWMg MTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvdG9wb2xvZ3kuYworKysgYi9hcmNoL3g4 Ni9rZXJuZWwvY3B1L3RvcG9sb2d5LmMKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBkZXRlY3RfZXh0 ZW5kZWRfdG9wb2xvZ3koc3RydWN0IGNwdWluZm9feDg2ICpjKQogCS8qCiAJICogUG9wdWxhdGUg SFQgcmVsYXRlZCBpbmZvcm1hdGlvbiBmcm9tIHN1Yi1sZWFmIGxldmVsIDAuCiAJICovCi0JY29y ZV9sZXZlbF9zaWJsaW5ncyA9IHNtcF9udW1fc2libGluZ3MgPSBMRVZFTF9NQVhfU0lCTElOR1Mo ZWJ4KTsKKwljb3JlX2xldmVsX3NpYmxpbmdzID0gX19od19zbXRfdGhyZWFkcyA9IExFVkVMX01B WF9TSUJMSU5HUyhlYngpOwogCWNvcmVfcGx1c19tYXNrX3dpZHRoID0gaHRfbWFza193aWR0aCA9 IEJJVFNfU0hJRlRfTkVYVF9MRVZFTChlYXgpOwogCiAJc3ViX2luZGV4ID0gMTsKQEAgLTg1LDcg Kzg1LDcgQEAgdm9pZCBkZXRlY3RfZXh0ZW5kZWRfdG9wb2xvZ3koc3RydWN0IGNwdWluZm9feDg2 ICpjKQogCSAqLwogCWMtPmFwaWNpZCA9IGFwaWMtPnBoeXNfcGtnX2lkKGMtPmluaXRpYWxfYXBp Y2lkLCAwKTsKIAotCWMtPng4Nl9tYXhfY29yZXMgPSAoY29yZV9sZXZlbF9zaWJsaW5ncyAvIHNt cF9udW1fc2libGluZ3MpOworCWMtPng4Nl9tYXhfY29yZXMgPSAoY29yZV9sZXZlbF9zaWJsaW5n cyAvIHRvcG9sb2d5X2h3X3NtdF90aHJlYWRzKCkpOwogCiAJaWYgKCFwcmludGVkKSB7CiAJCXBy X2luZm8oIkNQVTogUGh5c2ljYWwgUHJvY2Vzc29yIElEOiAlZFxuIiwKZGlmZiAtLWdpdCBhL2Fy Y2gveDg2L2tlcm5lbC9pdG10LmMgYi9hcmNoL3g4Ni9rZXJuZWwvaXRtdC5jCmluZGV4IGY3M2Y0 NzVkMDU3My4uNGI4ODdkM2Y3OWVkIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvaXRtdC5j CisrKyBiL2FyY2gveDg2L2tlcm5lbC9pdG10LmMKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIHNj aGVkX3NldF9pdG10X2NvcmVfcHJpbyhpbnQgcHJpbywgaW50IGNvcmVfY3B1KQogCQkgKiBvZiB0 aGUgcHJpb3JpdHkgY2hhaW4gYW5kIG9ubHkgdXNlZCB3aGVuCiAJCSAqIGFsbCBvdGhlciBoaWdo IHByaW9yaXR5IGNwdXMgYXJlIG91dCBvZiBjYXBhY2l0eS4KIAkJICovCi0JCXNtdF9wcmlvID0g cHJpbyAqIHNtcF9udW1fc2libGluZ3MgLyBpOworCQlzbXRfcHJpbyA9IHByaW8gKiB0b3BvbG9n eV9od19zbXRfdGhyZWFkcygpIC8gaTsKIAkJcGVyX2NwdShzY2hlZF9jb3JlX3ByaW9yaXR5LCBj cHUpID0gc210X3ByaW87CiAJCWkrKzsKIAl9CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwv cHJvY2Vzcy5jIGIvYXJjaC94ODYva2VybmVsL3Byb2Nlc3MuYwppbmRleCBhZWQ5ZDk0YmQ0NmYu LjY3NTc1ZmFlZThkZCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL3Byb2Nlc3MuYworKysg Yi9hcmNoL3g4Ni9rZXJuZWwvcHJvY2Vzcy5jCkBAIC00NzYsNyArNDc2LDggQEAgc3RhdGljIF9f Y3B1aWRsZSB2b2lkIG13YWl0X2lkbGUodm9pZCkKIHZvaWQgc2VsZWN0X2lkbGVfcm91dGluZShj b25zdCBzdHJ1Y3QgY3B1aW5mb194ODYgKmMpCiB7CiAjaWZkZWYgQ09ORklHX1NNUAotCWlmIChi b290X29wdGlvbl9pZGxlX292ZXJyaWRlID09IElETEVfUE9MTCAmJiBzbXBfbnVtX3NpYmxpbmdz ID4gMSkKKwlpZiAoYm9vdF9vcHRpb25faWRsZV9vdmVycmlkZSA9PSBJRExFX1BPTEwgJiYKKwkg ICAgdG9wb2xvZ3lfaHdfc210X3RocmVhZHMoKSA+IDEpCiAJCXByX3dhcm5fb25jZSgiV0FSTklO RzogcG9sbGluZyBpZGxlIGFuZCBIVCBlbmFibGVkLCBwZXJmb3JtYW5jZSBtYXkgZGVncmFkZVxu Iik7CiAjZW5kaWYKIAlpZiAoeDg2X2lkbGUgfHwgYm9vdF9vcHRpb25faWRsZV9vdmVycmlkZSA9 PSBJRExFX1BPTEwpCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvc21wYm9vdC5jIGIvYXJj aC94ODYva2VybmVsL3NtcGJvb3QuYwppbmRleCBlZDU1NmQ1MGQ3ZWQuLjU2YmRjZGJhMDA2ZiAx MDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL3NtcGJvb3QuYworKysgYi9hcmNoL3g4Ni9rZXJu ZWwvc21wYm9vdC5jCkBAIC03OSwxMCArNzksNiBAQAogI2luY2x1ZGUgPGFzbS9taXNjLmg+CiAj aW5jbHVkZSA8YXNtL3FzcGlubG9jay5oPgogCi0vKiBOdW1iZXIgb2Ygc2libGluZ3MgcGVyIENQ VSBwYWNrYWdlICovCi1pbnQgc21wX251bV9zaWJsaW5ncyA9IDE7Ci1FWFBPUlRfU1lNQk9MKHNt cF9udW1fc2libGluZ3MpOwotCiAvKiBMYXN0IGxldmVsIGNhY2hlIElEIG9mIGVhY2ggbG9naWNh bCBDUFUgKi8KIERFRklORV9QRVJfQ1BVX1JFQURfTU9TVExZKHUxNiwgY3B1X2xsY19pZCkgPSBC QURfQVBJQ0lEOwogCkBAIC0xMDUsOCArMTAxLDExIEBAIHVuc2lnbmVkIGludCBfX21heF9sb2dp Y2FsX3BhY2thZ2VzIF9fcmVhZF9tb3N0bHk7CiBFWFBPUlRfU1lNQk9MKF9fbWF4X2xvZ2ljYWxf cGFja2FnZXMpOwogc3RhdGljIHVuc2lnbmVkIGludCBsb2dpY2FsX3BhY2thZ2VzIF9fcmVhZF9t b3N0bHk7CiAKLS8qIE1heGltdW0gbnVtYmVyIG9mIFNNVCB0aHJlYWRzIG9uIGFueSBvbmxpbmUg Y29yZSAqLworLyogTWF4aW11bSBudW1iZXIgb2YgU01UIHRocmVhZHMgb24gYW55IG9ubGluZSBj b3JlIGRldGVybWluZWQgYnkgdG9wb2xvZ3kgKi8KIGludCBfX3JlYWRfbW9zdGx5IF9fbWF4X3Nt dF90aHJlYWRzID0gMTsKKy8qIE1heGltdW0gbnVtYmVyIG9mIFNNVCB0aHJlYWRzIHJlYWQgZnJv bSBoYXJkd2FyZSAqLworaW50IF9fcmVhZF9tb3N0bHkgX19od19zbXRfdGhyZWFkcyA9IDE7CitF WFBPUlRfU1lNQk9MKF9faHdfc210X3RocmVhZHMpOwogCiAvKiBGbGFnIHRvIGluZGljYXRlIGlm IGEgY29tcGxldGUgc2NoZWQgZG9tYWluIHJlYnVpbGQgaXMgcmVxdWlyZWQgKi8KIGJvb2wgeDg2 X3RvcG9sb2d5X3VwZGF0ZTsKQEAgLTE3NywxNiArMTc2LDExIEBAIHN0YXRpYyB2b2lkIHNtcF9j YWxsaW4odm9pZCkKIAlhcGljX2FwX3NldHVwKCk7CiAKIAkvKgotCSAqIFNhdmUgb3VyIHByb2Nl c3NvciBwYXJhbWV0ZXJzLiBOb3RlOiB0aGlzIGluZm9ybWF0aW9uCi0JICogaXMgbmVlZGVkIGZv ciBjbG9jayBjYWxpYnJhdGlvbi4KLQkgKi8KLQlzbXBfc3RvcmVfY3B1X2luZm8oY3B1aWQpOwot Ci0JLyoKLQkgKiBUaGUgdG9wb2xvZ3kgaW5mb3JtYXRpb24gbXVzdCBiZSB1cCB0byBkYXRlIGJl Zm9yZQorCSAqIFNhdmUgQ1BVIHBhcmFtZXRlcnMgYW5kIHRvcG9sb2d5LiAgVGhpcyBpbmZvcm1h dGlvbiBpcyBuZWVkZWQgZm9yCisJICogY2xvY2sgY2FsaWJyYXRpb24sIGFuZCBtdXN0IGJlIHVw ZGF0ZSB0byBkYXRlIGJlZm9yZSBjYWxsaW5nCiAJICogY2FsaWJyYXRlX2RlbGF5KCkgYW5kIG5v dGlmeV9jcHVfc3RhcnRpbmcoKS4KIAkgKi8KLQlzZXRfY3B1X3NpYmxpbmdfbWFwKHJhd19zbXBf cHJvY2Vzc29yX2lkKCkpOworCXNtcF9zdG9yZV9jcHVfaW5mbyhjcHVpZCk7CiAKIAkvKgogCSAq IEdldCBvdXIgYm9nb21pcHMuCkBAIC00NjMsNyArNDU3LDcgQEAgc3RhdGljIGJvb2wgeDg2X2hh c19udW1hX2luX3BhY2thZ2U7CiAKIHZvaWQgc2V0X2NwdV9zaWJsaW5nX21hcChpbnQgY3B1KQog ewotCWJvb2wgaGFzX3NtdCA9IHNtcF9udW1fc2libGluZ3MgPiAxOworCWJvb2wgaGFzX3NtdCA9 IHRvcG9sb2d5X2h3X3NtdF90aHJlYWRzKCkgPiAxOwogCWJvb2wgaGFzX21wID0gaGFzX3NtdCB8 fCBib290X2NwdV9kYXRhLng4Nl9tYXhfY29yZXMgPiAxOwogCXN0cnVjdCBjcHVpbmZvX3g4NiAq YyA9ICZjcHVfZGF0YShjcHUpOwogCXN0cnVjdCBjcHVpbmZvX3g4NiAqbzsKZGlmZiAtLWdpdCBh L2FyY2gveDg2L29wcm9maWxlL25taV9pbnQuYyBiL2FyY2gveDg2L29wcm9maWxlL25taV9pbnQu YwppbmRleCAxNzRjNTk3NzRjYzkuLjgwMjlkYjRjNGQzYiAxMDA2NDQKLS0tIGEvYXJjaC94ODYv b3Byb2ZpbGUvbm1pX2ludC5jCisrKyBiL2FyY2gveDg2L29wcm9maWxlL25taV9pbnQuYwpAQCAt NTY2LDcgKzU2Niw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHA0X2luaXQoY2hhciAqKmNwdV90eXBl KQogCW1vZGVsID0gJm9wX3A0X3NwZWM7CiAJcmV0dXJuIDE7CiAjZWxzZQotCXN3aXRjaCAoc21w X251bV9zaWJsaW5ncykgeworCXN3aXRjaCAodG9wb2xvZ3lfaHdfc210X3RocmVhZHMoKSkgewog CWNhc2UgMToKIAkJKmNwdV90eXBlID0gImkzODYvcDQiOwogCQltb2RlbCA9ICZvcF9wNF9zcGVj OwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvb3Byb2ZpbGUvb3BfbW9kZWxfcDQuYyBiL2FyY2gveDg2 L29wcm9maWxlL29wX21vZGVsX3A0LmMKaW5kZXggYWQxZDkxZjQ3NWFiLi43YmViZDA0MmRmMTUg MTAwNjQ0Ci0tLSBhL2FyY2gveDg2L29wcm9maWxlL29wX21vZGVsX3A0LmMKKysrIGIvYXJjaC94 ODYvb3Byb2ZpbGUvb3BfbW9kZWxfcDQuYwpAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgdW5zaWdu ZWQgaW50IG51bV9jb250cm9scyA9IE5VTV9DT05UUk9MU19OT05fSFQ7CiBzdGF0aWMgaW5saW5l IHZvaWQgc2V0dXBfbnVtX2NvdW50ZXJzKHZvaWQpCiB7CiAjaWZkZWYgQ09ORklHX1NNUAotCWlm IChzbXBfbnVtX3NpYmxpbmdzID09IDIpIHsKKwlpZiAodG9wb2xvZ3lfaHdfc210X3RocmVhZHMo KSA9PSAyKSB7CiAJCW51bV9jb3VudGVycyA9IE5VTV9DT1VOVEVSU19IVDI7CiAJCW51bV9jb250 cm9scyA9IE5VTV9DT05UUk9MU19IVDI7CiAJfQpAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgc2V0dXBfbnVtX2NvdW50ZXJzKHZvaWQpCiBzdGF0aWMgaW5saW5lIGludCBhZGRy X2luY3JlbWVudCh2b2lkKQogewogI2lmZGVmIENPTkZJR19TTVAKLQlyZXR1cm4gc21wX251bV9z aWJsaW5ncyA9PSAyID8gMiA6IDE7CisJcmV0dXJuIHRvcG9sb2d5X2h3X3NtdF90aHJlYWRzKCkg PT0gMiA/IDIgOiAxOwogI2Vsc2UKIAlyZXR1cm4gMTsKICNlbmRpZgo=