Added CPUID info to JSON report

This commit is contained in:
SChernykh 2020-11-10 12:15:52 +01:00
parent 673c366f77
commit 44054ac7eb
2 changed files with 17 additions and 6 deletions

View file

@ -189,16 +189,20 @@ xmrig::BasicCpuInfo::BasicCpuInfo() :
memcpy(vendor + 4, &data[3], 4); memcpy(vendor + 4, &data[3], 4);
memcpy(vendor + 8, &data[2], 4); memcpy(vendor + 8, &data[2], 4);
cpuid(PROCESSOR_INFO, data);
m_procInfo = data[EAX_Reg];
m_family = get_masked(m_procInfo, 12, 8) + get_masked(m_procInfo, 28, 20);
m_model = (get_masked(m_procInfo, 20, 16) << 4) | get_masked(m_procInfo, 8, 4);
m_stepping = get_masked(m_procInfo, 4, 0);
if (memcmp(vendor, "AuthenticAMD", 12) == 0) { if (memcmp(vendor, "AuthenticAMD", 12) == 0) {
m_vendor = VENDOR_AMD; m_vendor = VENDOR_AMD;
cpuid(PROCESSOR_INFO, data); if (m_family >= 0x17) {
const int32_t family = get_masked(data[EAX_Reg], 12, 8) + get_masked(data[EAX_Reg], 28, 20);
if (family >= 0x17) {
m_assembly = Assembly::RYZEN; m_assembly = Assembly::RYZEN;
switch (family) { switch (m_family) {
case 0x17: case 0x17:
m_msrMod = MSR_MOD_RYZEN_17H; m_msrMod = MSR_MOD_RYZEN_17H;
break; break;
@ -233,7 +237,6 @@ xmrig::BasicCpuInfo::BasicCpuInfo() :
unsigned int reserved2 : 4; unsigned int reserved2 : 4;
} processor_info; } processor_info;
cpuid(1, data);
memcpy(&processor_info, data, sizeof(processor_info)); memcpy(&processor_info, data, sizeof(processor_info));
// Intel JCC erratum mitigation // Intel JCC erratum mitigation
@ -327,6 +330,10 @@ rapidjson::Value xmrig::BasicCpuInfo::toJSON(rapidjson::Document &doc) const
Value out(kObjectType); Value out(kObjectType);
out.AddMember("brand", StringRef(brand()), allocator); out.AddMember("brand", StringRef(brand()), allocator);
out.AddMember("family", m_family, allocator);
out.AddMember("model", m_model, allocator);
out.AddMember("stepping", m_stepping, allocator);
out.AddMember("proc_info", m_procInfo, allocator);
out.AddMember("aes", hasAES(), allocator); out.AddMember("aes", hasAES(), allocator);
out.AddMember("avx2", hasAVX2(), allocator); out.AddMember("avx2", hasAVX2(), allocator);
out.AddMember("x64", isX64(), allocator); out.AddMember("x64", isX64(), allocator);

View file

@ -70,6 +70,10 @@ protected:
bool m_jccErratum = false; bool m_jccErratum = false;
private: private:
uint32_t m_procInfo = 0;
uint32_t m_family = 0;
uint32_t m_model = 0;
uint32_t m_stepping = 0;
Assembly m_assembly = Assembly::NONE; Assembly m_assembly = Assembly::NONE;
MsrMod m_msrMod = MSR_MOD_NONE; MsrMod m_msrMod = MSR_MOD_NONE;
std::bitset<FLAG_MAX> m_flags; std::bitset<FLAG_MAX> m_flags;