Add support for Hygon Dhyana processor

Message ID 20190517032911.83025-1-fanjinke@hygon.cn
State Accepted
Commit ee7e49e19388fd0f19ca1c4773d3efc5fa123d58
Headers show
Series
  • Add support for Hygon Dhyana processor
Related show

Commit Message

Jinke Fan May 17, 2019, 3:29 a.m.
-Add vendor identification
-Support in get_cpu_cache

Background:
    Chengdu Haiguang IC Design Co., Ltd (Hygon) is a Joint Venture
    between AMD and Haiguang Information Technology Co.,Ltd., aims at
    providing high performance x86 processor for China server market.
    Its first generation processor codename is Dhyana, which
    originates from AMD technology and shares most of the
    architecture with AMD's family 17h, but with different CPU Vendor
    ID("HygonGenuine")/Family series number(Family 18h).

Related Hygon kernel patch can be found on:
http://lkml.kernel.org/r/5ce86123a7b9dad925ac583d88d2f921040e859b.1538583282.git.puwen@hygon.cn

Signed-off-by: Jinke Fan <fanjinke@hygon.cn>

---
 winsup/cygwin/fhandler_proc.cc | 3 ++-
 winsup/cygwin/sysconf.cc       | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

-- 
2.17.1

Comments

Corinna Vinschen June 3, 2019, 8:41 a.m. | #1
On May 17 11:29, Jinke Fan wrote:
> -Add vendor identification

> -Support in get_cpu_cache

> 

> Background:

>     Chengdu Haiguang IC Design Co., Ltd (Hygon) is a Joint Venture

>     between AMD and Haiguang Information Technology Co.,Ltd., aims at

>     providing high performance x86 processor for China server market.

>     Its first generation processor codename is Dhyana, which

>     originates from AMD technology and shares most of the

>     architecture with AMD's family 17h, but with different CPU Vendor

>     ID("HygonGenuine")/Family series number(Family 18h).


Pushed.


Thanks,
Corinna

-- 
Corinna Vinschen
Cygwin Maintainer
Red Hat

Patch

diff --git a/winsup/cygwin/fhandler_proc.cc b/winsup/cygwin/fhandler_proc.cc
index a6a0b683c..c461bbc75 100644
--- a/winsup/cygwin/fhandler_proc.cc
+++ b/winsup/cygwin/fhandler_proc.cc
@@ -706,7 +706,8 @@  format_proc_cpuinfo (void *, char *&destbuf)
 
       /* Vendor identification. */
       bool is_amd = false, is_intel = false;
-      if (!strcmp ((char*)vendor_id, "AuthenticAMD"))
+      if (!strcmp ((char*)vendor_id, "AuthenticAMD")
+          || !strcmp((char*)vendor_id, "HygonGenuine"))
 	is_amd = true;
       else if (!strcmp ((char*)vendor_id, "GenuineIntel"))
 	is_intel = true;
diff --git a/winsup/cygwin/sysconf.cc b/winsup/cygwin/sysconf.cc
index 216e5142f..3440c09ee 100644
--- a/winsup/cygwin/sysconf.cc
+++ b/winsup/cygwin/sysconf.cc
@@ -486,7 +486,8 @@  get_cpu_cache (int in)
   vendor_id[3] = 0;
   if (!strcmp ((char*) vendor_id, "GenuineIntel"))
     return get_cpu_cache_intel (in, maxf & 0xffff);
-  else if (!strcmp ((char*)vendor_id, "AuthenticAMD"))
+  else if (!strcmp ((char*)vendor_id, "AuthenticAMD")
+           || !strcmp((char*)vendor_id, "HygonGenuine"))
     {
       uint32_t maxe = 0, unused;
       cpuid (&maxe, &unused, &unused, &unused, 0x80000000);