Jinke Fan
2021-Mar-23 02:39 UTC
[syslinux] [RESEND PATCH] x86_64: Add support for Hygon Dhyana processor
Hi, When testing syslinux on Hygon Dhyana processor, there are some information as follows: boot: cpuidtest.c32 Vendor = Unknown Vendor ... boot: ifcpu.c32 debug multicore multicore : 1 cores on this system After adding support for Hygon Dhyana processor, the info- rmation is correct: boot: cpuidtest.c32 Vendor = Hygon ... boot: ifcpu.c32 debug multicore multicore : 64 cores on this system Thanks! Jinke Fan Signed-off-by: Jinke Fan <fanjinke51 at yeah.net> --- com32/gplinclude/cpuid.h | 5 +++-- com32/gpllib/cpuid.c | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/com32/gplinclude/cpuid.h b/com32/gplinclude/cpuid.h index 02f3a0b3..fd77b69d 100644 --- a/com32/gplinclude/cpuid.h +++ b/com32/gplinclude/cpuid.h @@ -187,8 +187,9 @@ extern bool get_cpu_flag_value_from_name(s_cpu *cpu, const char * flag); #define X86_VENDOR_RISE 6 #define X86_VENDOR_TRANSMETA 7 #define X86_VENDOR_NSC 8 -#define X86_VENDOR_UNKNOWN 9 -#define X86_VENDOR_NUM 10 +#define X86_VENDOR_HYGON 9 +#define X86_VENDOR_UNKNOWN 10 +#define X86_VENDOR_NUM 11 #define cpu_has(c, bit) test_bit(bit, (c)->x86_capability) diff --git a/com32/gpllib/cpuid.c b/com32/gpllib/cpuid.c index 2abd0bda..0681dbce 100644 --- a/com32/gpllib/cpuid.c +++ b/com32/gpllib/cpuid.c @@ -60,6 +60,11 @@ static struct cpu_dev amd_cpu_dev = { .c_ident = {"AuthenticAMD"} }; +static struct cpu_dev hygon_cpu_dev = { + .c_vendor = "Hygon", + .c_ident = {"HygonGenuine"} +}; + static struct cpu_dev intel_cpu_dev = { .c_vendor = "Intel", .c_ident = {"GenuineIntel"} @@ -149,6 +154,7 @@ void init_cpu_devs(void) cpu_devs[X86_VENDOR_RISE] = &rise_cpu_dev; cpu_devs[X86_VENDOR_TRANSMETA] = &transmeta_cpu_dev; cpu_devs[X86_VENDOR_NSC] = &nsc_cpu_dev; + cpu_devs[X86_VENDOR_HYGON] = &hygon_cpu_dev; cpu_devs[X86_VENDOR_UNKNOWN] = &unknown_cpu_dev; } @@ -389,6 +395,7 @@ void generic_identify(struct cpuinfo_x86 *c) /* Detecting the number of cores */ switch (c->x86_vendor) { case X86_VENDOR_AMD: + case X86_VENDOR_HYGON: if (xlvl >= 0x80000008) { c->x86_num_cores = (cpuid_ecx(0x80000008) & 0xff) + 1; if (c->x86_num_cores & (c->x86_num_cores - 1)) -- 2.17.1