On Thu, 2020-03-05 at 17:23 +0800, Zhenyu Zheng wrote: > Hi Andrea Bolognani! > > Thank you very much for the reply and guide, they are very helpful. > And we will treat as this as a long-term task to try to enrich ARM > capabilities, both in libvirt and QEMU an other related projects. That sounds good! > As for the missing features, maybe I can do it one by one, start with > simple ones, for example, the simplest feature: "using virsh > capabilities" to show host cpu model, vendor and features is missing, > this is quite simple and currently asked by our users. I have a > workable draft code that reads and parses /proc/cpuinfo for these > informations, will thar work? or Libvirt prefers reads them directly > from registers like currently done in x86 driver? Parsing /proc/cpuinfo is fine - all architectures, including x86, currently do that for at least some of the information. The problem is that on many ARM machines the file doesn't contain a whole lot of information, at least not in a form that's suitable for end users: for example, on this machine that I have access to, all it contains is processor : 0 BogoMIPS : 200.00 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid CPU implementer : 0x43 CPU architecture: 8 CPU variant : 0x1 CPU part : 0x0a1 CPU revision : 1 which is definitely not as pretty as "Skylake-Client" or something :) Another problem is that "virsh capabilities" on x86 will usually report a CPU model that can then be used as a guest CPU[1], but that's not really the case for ARM where CPU models are not as well defined and QEMU definitely doesn't know about all of them. Same goes with features: on x86 you can add or remove pretty much any CPU feature from any CPU model, but on ARM QEMU only supports toggling a small number of CPU features, and even the few CPU models it knows about are hardly representative of what you'd find in the average ARM server at this point. [1] Even though you're not supposed to rely on that, and "virsh domcapabilities" is much better if that's what you're after. -- Andrea Bolognani / Red Hat / Virtualization