diff -Nuar startdde-5.9.61/display/util.go startdde-5.9.61.new/display/util.go
--- startdde-5.9.61/display/util.go	2022-12-09 11:19:18.000000000 +0800
+++ startdde-5.9.61.new/display/util.go	2023-04-12 11:21:51.145365556 +0800
@@ -15,6 +15,7 @@
 	"sort"
 	"strconv"
 	"strings"
+	"os/exec"
 
 	"github.com/godbus/dbus"
 	hostname1 "github.com/linuxdeepin/go-dbus-factory/org.freedesktop.hostname1"
@@ -333,6 +334,32 @@
 	return chassis, nil
 }
 
+func CheckKvm() string {
+    var maty string
+    out, err := exec.Command("systemd-detect-virt").Output()
+    if err != nil {
+    	maty = ""
+    }else {
+    	maty = string(out)
+    	maty = strings.Replace(maty, "\n", "", -1)
+    }
+    return maty
+}
+
+func CheckArch() string {
+    var KArch string
+    out, err := exec.Command("arch").Output()
+
+    if err != nil {
+    	KArch = ""
+    }else {
+    	KArch = string(out)
+    	KArch = strings.Replace(KArch,"\n","",-1)
+    }
+    return KArch
+}
+
+
 func getGraphicsCardPciId() string {
 	var pciId string
 	subsystems := []string{"drm"}
@@ -362,6 +389,27 @@
 			}
 		}
 	}
+//qxl not support in arm/loongarch
+//just try drm/card0  
+	if pciId == "" {
+		maty := CheckKvm()
+		KArch := CheckArch()
+		if maty == "kvm" { 
+			if KArch == "aarch64" || KArch == "loongarch64" {
+					for _, dev := range devices {
+						name := dev.GetName()
+						if name == "card0" {
+							cardDevice := dev.GetParent()
+							parentDevice := cardDevice.GetParent()
+							pciId = parentDevice.GetProperty("PCI_ID")
+							cardDevice.Unref()
+							parentDevice.Unref()
+							break
+						}
+					}
+    		}
+		}
+	}
 
 	return pciId
 }
