]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Implement the method of getting host info for loongarch
authorXianglai Li <lixianglai@loongson.cn>
Thu, 21 Mar 2024 03:30:28 +0000 (11:30 +0800)
committerAndrea Bolognani <abologna@redhat.com>
Thu, 21 Mar 2024 13:42:26 +0000 (14:42 +0100)
Implement method for loongarch to get host info, such as
cpu frequency, system info, etc.

Signed-off-by: Xianglai Li <lixianglai@loongson.cn>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
src/util/virarch.c
src/util/virhostcpu.c
src/util/virsysinfo.c

index 8545f993ea54d8502a2900272b99aabfced706a4..a94318da0d676567e1fe46fa05bcee336ea218ec 100644 (file)
@@ -223,6 +223,8 @@ virArch virArchFromHost(void)
         arch = VIR_ARCH_X86_64;
     } else if (STREQ(ut.machine, "arm64")) {
         arch = VIR_ARCH_AARCH64;
+    } else if (STREQ(ut.machine, "loongarch64")) {
+        arch = VIR_ARCH_LOONGARCH64;
     } else {
         /* Otherwise assume the canonical name */
         if ((arch = virArchFromString(ut.machine)) == VIR_ARCH_NONE) {
index a3781ca87055d3ca4f6d7a0b3c3e6f44a35161b7..01de69c0d17753c07139b79d07ec99fd3d9a7402 100644 (file)
@@ -575,6 +575,8 @@ virHostCPUParseFrequency(FILE *cpuinfo,
         prefix = "clock";
     else if (ARCH_IS_S390(arch))
         prefix = "cpu MHz dynamic";
+    else if (ARCH_IS_LOONGARCH(arch))
+        prefix = "CPU MHz";
 
     if (!prefix) {
         VIR_WARN("%s is not supported by the %s parser",
@@ -601,7 +603,7 @@ virHostCPUParsePhysAddrSize(FILE *cpuinfo, unsigned int *addrsz)
         char *str;
         char *endptr;
 
-        if (!(str = STRSKIP(line, "address sizes")))
+        if (!(str = STRCASESKIP(line, "address sizes")))
             continue;
 
         /* Skip the colon. */
@@ -1672,7 +1674,8 @@ virHostCPUGetPhysAddrSize(const virArch hostArch,
 {
     g_autoptr(FILE) cpuinfo = NULL;
 
-    if (!(ARCH_IS_X86(hostArch) || ARCH_IS_SH4(hostArch))) {
+    if (!(ARCH_IS_X86(hostArch) || ARCH_IS_SH4(hostArch) ||
+          ARCH_IS_LOONGARCH(hostArch))) {
         /* Ensure size is set to 0 as physical address size is unknown */
         *size = 0;
         return 0;
index 36a861c53f7ec94b9bd06e8eb25516d905a29261..4a03fc3246e2d3024c97e6cb8b5199b7c1c0b896 100644 (file)
@@ -1248,7 +1248,8 @@ virSysinfoRead(void)
 #elif !defined(WIN32) && \
     (defined(__x86_64__) || \
      defined(__i386__) || \
-     defined(__amd64__))
+     defined(__amd64__) || \
+     defined(__loongarch__))
     return virSysinfoReadDMI();
 #else /* WIN32 || not supported arch */
     /*