Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Mar 2014 23:18:02 +0800
From:      Jia-Shiun Li <jiashiun@gmail.com>
To:        freebsd-hackers@freebsd.org
Subject:   Add CPUID subleaf capability to cpuctl/cpucontrol
Message-ID:  <CAHNYxxPZ%2BLpVGhgJXRhpMJkotXEY1Hyezye79XB_xHNazVgdng@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--089e0115ffc654ce9904f583fb37
Content-Type: text/plain; charset=UTF-8

Hi all,

I am recently writing a small tool playing msr with cpuctl(4).
Meanwhile I found that it is currently not passing value but 0 in ECX
register to CPUID instruction as input. So I have the attached patch
to do it.

ECX is used to specify sub-leaf for some EAX leaf value. For example
  EAX=0x04: Deterministic Cache Parameters Leaf
  EAX=0x0b: Extended Topology Enumeration Leaf
with the attached patch user will be able to get subleaf info by
writing applications using cpuctl(4) ioctl or by using cpucontrol(8)
with -s flag.

Please comment.

Regards,
Jia-Shiun.

--089e0115ffc654ce9904f583fb37
Content-Type: text/plain; charset=US-ASCII; name="cpuid-subleaves.patch.txt"
Content-Disposition: attachment; filename="cpuid-subleaves.patch.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ht8rce4s0

SW5kZXg6IHN5cy9kZXYvY3B1Y3RsL2NwdWN0bC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9kZXYvY3B1
Y3RsL2NwdWN0bC5jCShyZXZpc2lvbiAyNjM0MjApCisrKyBzeXMvZGV2L2NwdWN0bC9jcHVjdGwu
Ywkod29ya2luZyBjb3B5KQpAQCAtMjA0LDcgKzIwNCw3IEBACiAJb2xkY3B1ID0gdGQtPnRkX29u
Y3B1OwogCWlzX2JvdW5kID0gY3B1X3NjaGVkX2lzX2JvdW5kKHRkKTsKIAlzZXRfY3B1KGNwdSwg
dGQpOwotCWNwdWlkX2NvdW50KGRhdGEtPmxldmVsLCAwLCBkYXRhLT5kYXRhKTsKKwljcHVpZF9j
b3VudChkYXRhLT5sZXZlbCwgZGF0YS0+c3VibGV2ZWwsIGRhdGEtPmRhdGEpOwogCXJlc3RvcmVf
Y3B1KG9sZGNwdSwgaXNfYm91bmQsIHRkKTsKIAlyZXR1cm4gKDApOwogfQpJbmRleDogc3lzL3N5
cy9jcHVjdGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvc3lzL2NwdWN0bC5oCShyZXZpc2lvbiAyNjM0
MjApCisrKyBzeXMvc3lzL2NwdWN0bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBA
CiAKIHR5cGVkZWYgc3RydWN0IHsKIAlpbnQJCWxldmVsOwkvKiBDUFVJRCBsZXZlbCAqLworCWlu
dAkJc3VibGV2ZWw7IC8qIHN1YmxldmVsICovCiAJdWludDMyX3QJZGF0YVs0XTsKIH0gY3B1Y3Rs
X2NwdWlkX2FyZ3NfdDsKIApJbmRleDogdXNyLnNiaW4vY3B1Y29udHJvbC9jcHVjb250cm9sLmMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gdXNyLnNiaW4vY3B1Y29udHJvbC9jcHVjb250cm9sLmMJKHJldmlzaW9u
IDI2MzQyMCkKKysrIHVzci5zYmluL2NwdWNvbnRyb2wvY3B1Y29udHJvbC5jCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw2ICs2MCw3IEBACiAjZGVmaW5lCUZMQUdfSQkweDAxCiAjZGVmaW5lCUZMQUdf
TQkweDAyCiAjZGVmaW5lCUZMQUdfVQkweDA0CisjZGVmaW5lCUZMQUdfUwkweDA4CiAKICNkZWZp
bmUJT1BfSU5WQUwJMHgwMAogI2RlZmluZQlPUF9SRUFECQkweDAxCkBAIC05OCw3ICs5OSw3IEBA
CiAKIHN0YXRpYyB2b2lkCXVzYWdlKHZvaWQpOwogc3RhdGljIGludAlpc2Rpcihjb25zdCBjaGFy
ICpwYXRoKTsKLXN0YXRpYyBpbnQJZG9fY3B1aWQoY29uc3QgY2hhciAqY21kYXJnLCBjb25zdCBj
aGFyICpkZXYpOworc3RhdGljIGludAlkb19jcHVpZChjb25zdCBjaGFyICpjbWRhcmcsIGNvbnN0
IGNoYXIgKnN1YmxldmVsYXJnLCBjb25zdCBjaGFyICpkZXYpOwogc3RhdGljIGludAlkb19tc3Io
Y29uc3QgY2hhciAqY21kYXJnLCBjb25zdCBjaGFyICpkZXYpOwogc3RhdGljIGludAlkb191cGRh
dGUoY29uc3QgY2hhciAqZGV2KTsKIHN0YXRpYyB2b2lkCWRhdGFkaXJfYWRkKGNvbnN0IGNoYXIg
KnBhdGgpOwpAQCAtMTMxLDkgKzEzMiwxMCBAQAogfQogCiBzdGF0aWMgaW50Ci1kb19jcHVpZChj
b25zdCBjaGFyICpjbWRhcmcsIGNvbnN0IGNoYXIgKmRldikKK2RvX2NwdWlkKGNvbnN0IGNoYXIg
KmNtZGFyZywgY29uc3QgY2hhciAqc3VibGV2ZWxhcmcsIGNvbnN0IGNoYXIgKmRldikKIHsKIAl1
bnNpZ25lZCBpbnQgbGV2ZWw7CisJdW5zaWduZWQgaW50IHN1YmxldmVsOwogCWNwdWN0bF9jcHVp
ZF9hcmdzX3QgYXJnczsKIAlpbnQgZmQsIGVycm9yOwogCWNoYXIgKmVuZHB0cjsKQEAgLTE0Nywx
MSArMTQ5LDIyIEBACiAJCXVzYWdlKCk7CiAJCS8qIE5PVFJFQUNIRUQgKi8KIAl9CisJaWYgKHN1
YmxldmVsYXJnICE9IE5VTEwpIHsKKwkJc3VibGV2ZWwgPSBzdHJ0b3VsKHN1YmxldmVsYXJnLCAm
ZW5kcHRyLCAxNik7CisJCWlmICgqc3VibGV2ZWxhcmcgPT0gJ1wwJyB8fCAqZW5kcHRyICE9ICdc
MCcpIHsKKwkJCVdBUk5YKDAsICJpbmNvcnJlY3Qgb3BlcmFuZDogJXMiLCBjbWRhcmcpOworCQkJ
dXNhZ2UoKTsKKwkJCS8qIE5PVFJFQUNIRUQgKi8KKwkJfQorCX0gZWxzZSB7CisJCXN1YmxldmVs
ID0gMDsKKwl9CiAKIAkvKgogCSAqIEZpbGwgaW9jdGwgYXJndW1lbnQgc3RydWN0dXJlLgogCSAq
LwogCWFyZ3MubGV2ZWwgPSBsZXZlbDsKKwlhcmdzLnN1YmxldmVsID0gc3VibGV2ZWw7CiAJZmQg
PSBvcGVuKGRldiwgT19SRE9OTFkpOwogCWlmIChmZCA8IDApIHsKIAkJV0FSTigwLCAiZXJyb3Ig
b3BlbmluZyAlcyBmb3IgcmVhZGluZyIsIGRldik7CkBAIC0xNjMsOCArMTc2LDggQEAKIAkJY2xv
c2UoZmQpOwogCQlyZXR1cm4gKGVycm9yKTsKIAl9Ci0JZnByaW50ZihzdGRvdXQsICJjcHVpZCBs
ZXZlbCAweCV4OiAweCUuOHggMHglLjh4IDB4JS44eCAweCUuOHhcbiIsCi0JICAgIGxldmVsLCBh
cmdzLmRhdGFbMF0sIGFyZ3MuZGF0YVsxXSwgYXJncy5kYXRhWzJdLCBhcmdzLmRhdGFbM10pOwor
CWZwcmludGYoc3Rkb3V0LCAiY3B1aWQgbGV2ZWwgMHgleCBzdWJsZXZlbCAweCV4OiAweCUuOHgg
MHglLjh4IDB4JS44eCAweCUuOHhcbiIsCisJICAgIGxldmVsLCBzdWJsZXZlbCwgYXJncy5kYXRh
WzBdLCBhcmdzLmRhdGFbMV0sIGFyZ3MuZGF0YVsyXSwgYXJncy5kYXRhWzNdKTsKIAljbG9zZShm
ZCk7CiAJcmV0dXJuICgwKTsKIH0KQEAgLTM2NywxOCArMzgwLDIwIEBACiB7CiAJaW50IGMsIGZs
YWdzOwogCWNvbnN0IGNoYXIgKmNtZGFyZzsKKwljb25zdCBjaGFyICpzdWJsZXZlbGFyZzsKIAlj
b25zdCBjaGFyICpkZXY7CiAJaW50IGVycm9yOwogCiAJZmxhZ3MgPSAwOwogCWVycm9yID0gMDsK
LQljbWRhcmcgPSAiIjsJLyogVG8ga2VlcCBnY2MzIGhhcHB5LiAqLworCWNtZGFyZyA9IE5VTEw7
CisJc3VibGV2ZWxhcmcgPSBOVUxMOwogCiAJLyoKIAkgKiBBZGQgYWxsIGRlZmF1bHQgZGF0YSBk
aXJzIHRvIHRoZSBsaXN0IGZpcnN0LgogCSAqLwogCWRhdGFkaXJfYWRkKERFRkFVTFRfREFUQURJ
Uik7Ci0Jd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJkOmhpOm06dXYiKSkgIT0gLTEp
IHsKKwl3aGlsZSAoKGMgPSBnZXRvcHQoYXJnYywgYXJndiwgImQ6aGk6bTp1dnM6IikpICE9IC0x
KSB7CiAJCXN3aXRjaCAoYykgewogCQljYXNlICdkJzoKIAkJCWRhdGFkaXJfYWRkKG9wdGFyZyk7
CkBAIC0zOTEsNiArNDA2LDEwIEBACiAJCQlmbGFncyB8PSBGTEFHX007CiAJCQljbWRhcmcgPSBv
cHRhcmc7CiAJCQlicmVhazsKKwkJY2FzZSAncyc6CisJCQlmbGFncyB8PSBGTEFHX1M7CisJCQlz
dWJsZXZlbGFyZyA9IG9wdGFyZzsKKwkJCWJyZWFrOwogCQljYXNlICd1JzoKIAkJCWZsYWdzIHw9
IEZMQUdfVTsKIAkJCWJyZWFrOwpAQCAtNDE0LDcgKzQzMywxMSBAQAogCWMgPSBmbGFncyAmIChG
TEFHX0kgfCBGTEFHX00gfCBGTEFHX1UpOwogCXN3aXRjaCAoYykgewogCQljYXNlIEZMQUdfSToK
LQkJCWVycm9yID0gZG9fY3B1aWQoY21kYXJnLCBkZXYpOworCQkJaWYgKDAgIT0gKGZsYWdzICYg
RkxBR19TKSkgeworCQkJCWVycm9yID0gZG9fY3B1aWQoY21kYXJnLCBzdWJsZXZlbGFyZywgZGV2
KTsKKwkJCX0gZWxzZSB7CisJCQkJZXJyb3IgPSBkb19jcHVpZChjbWRhcmcsIE5VTEwsIGRldik7
CisJCQl9CiAJCQlicmVhazsKIAkJY2FzZSBGTEFHX006CiAJCQllcnJvciA9IGRvX21zcihjbWRh
cmcsIGRldik7Cg==
--089e0115ffc654ce9904f583fb37--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAHNYxxPZ%2BLpVGhgJXRhpMJkotXEY1Hyezye79XB_xHNazVgdng>