Thanks for your reply what i want to know is that why there are many devices in $domain.xml, actully , i choose nothing in virt-manager? so, Do i need to look at qemuDomainDefineXMLFlags()? hours ago, i thought it's qemuDomainCreateWithFlags. -- Have a good day > -----原始邮件-----> 发件人: Michal Privoznik <mprivozn@redhat.com> > 发送时间: 2018年4月26日 星期四 > 收件人: "李卓瑶" <lizhuoyao@hikdata.com>, libvirt-users <libvirt-users@redhat.com> > 抄送: shengyizju@163.com > 主题: Re: [libvirt-users] how xml generated > > On 04/26/2018 04:29 AM, 李卓瑶 wrote: > > hi : > > i create a domain by virt-manager tool, then there is a xxx.xml generated in /etc/libvirt/qemu/. > > so, my question is how the xx.xml generated? What the code involves in libvirt ? > > Long story short, virt-manager invokes virt-install which generates XML > string. This string (not yet saved onto disk, still just in memory) is > then passed to libvirt API virDomainDefineXML() which parses it, does > some sanity checking and finally formats it back and save it under > /etc/libvirt/qemu/$domain.xml. > > Codewise, you want to be looking at qemuDomainDefineXMLFlags(). > > Michal
On 04/26/2018 09:50 AM, 李卓瑶 wrote:> Thanks for your reply > what i want to know is that why there are many devices in $domain.xml, actully , i choose nothing in virt-manager? > so, Do i need to look at qemuDomainDefineXMLFlags()?Because we try to have 1:1 relationship between domain XML configuration and devices as seen by guest. Even when you don't select anything in virt-manager the domain will definitely have a PCI root controller, controller for disk bus (be it sata, scsi, ide, ..), then it'll also have a virtual NIC, some memory/cpu configuration, and so on. In the code, these devices are added once XML is parsed by virDomainDefPostParseInternal(). Each driver can pass this xmlopt structure filled in with callbacks (take a look at virQEMUDriverCreateXMLConf()). So in the end, devices are added only after XML is parsed. However, it is not done all in one place. For instance, controllers are added during device address assignment, other devices are added in PostParse callbacks, and so on.> hours ago, i thought it's qemuDomainCreateWithFlags.No. This creates so called transient domains. https://wiki.libvirt.org/page/VM_lifecycle#Transient_guest_domains_vs_Persistent_guest_domains Michal
oh, there is much much much code,it's too too too hard for me. So,,,,,can i ask more question:use virt-manager create a domain,but with a result of "unsupported configuration:the ioh3420 controller is not supported in this qemu".since it's arm64 platform,and ioh3420 is a intel device.right?Why produce a intel device in arm64 platform? So, can i delete the ioh3420 only by changing the code?info: i use the libvirt-2.0.0,virt-manager create doamin succeed;when i update to libvirt-3.2.0,the issue above happened. qemu is 2.3.0 Thanks! -- Have a good day > -----原始邮件-----> 发件人: Michal Privoznik <mprivozn@redhat.com> > 发送时间: 2018年4月26日 星期四 > 收件人: "李卓瑶" <lizhuoyao@hikdata.com> > 抄送: libvirt-users <libvirt-users@redhat.com>, shengyizju@163.com > 主题: Re: [libvirt-users] how xml generated > > On 04/26/2018 09:50 AM, 李卓瑶 wrote: > > Thanks for your reply > > what i want to know is that why there are many devices in $domain.xml, actully , i choose nothing in virt-manager? > > so, Do i need to look at qemuDomainDefineXMLFlags()? > > Because we try to have 1:1 relationship between domain XML configuration > and devices as seen by guest. Even when you don't select anything in > virt-manager the domain will definitely have a PCI root controller, > controller for disk bus (be it sata, scsi, ide, ..), then it'll also > have a virtual NIC, some memory/cpu configuration, and so on. > > In the code, these devices are added once XML is parsed by > virDomainDefPostParseInternal(). Each driver can pass this xmlopt > structure filled in with callbacks (take a look at > virQEMUDriverCreateXMLConf()). So in the end, devices are added only > after XML is parsed. However, it is not done all in one place. For > instance, controllers are added during device address assignment, other > devices are added in PostParse callbacks, and so on. > > > hours ago, i thought it's qemuDomainCreateWithFlags. > > No. This creates so called transient domains. > > https://wiki.libvirt.org/page/VM_lifecycle#Transient_guest_domains_vs_Persistent_guest_domains > > Michal