Use -M virt as default machine for arm/aarch64
Centralize the default machine logic in caps and use it consistently
This commit is contained in:
parent
0182ba3ead
commit
c4162f6708
|
@ -5,7 +5,7 @@
|
|||
<currentMemory>65536</currentMemory>
|
||||
<vcpu>1</vcpu>
|
||||
<os>
|
||||
<type arch="aarch64">hvm</type>
|
||||
<type arch="aarch64" machine="virt">hvm</type>
|
||||
<kernel>/f19-arm.kernel</kernel>
|
||||
<initrd>/f19-arm.initrd</initrd>
|
||||
<cmdline>console=ttyAMA0,1234 rw root=/dev/vda3</cmdline>
|
||||
|
@ -24,11 +24,12 @@
|
|||
<disk type="file" device="disk">
|
||||
<driver name="qemu" type="qcow2"/>
|
||||
<source file="/dev/default-pool/testvol1.img"/>
|
||||
<target dev="sda" bus="sd"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
</disk>
|
||||
<interface type="bridge">
|
||||
<source bridge="eth0"/>
|
||||
<mac address="00:11:22:33:44:55"/>
|
||||
<model type="virtio"/>
|
||||
</interface>
|
||||
<console type="pty"/>
|
||||
</devices>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<currentMemory>65536</currentMemory>
|
||||
<vcpu>1</vcpu>
|
||||
<os>
|
||||
<type arch="armv7l">hvm</type>
|
||||
<type arch="armv7l" machine="virt">hvm</type>
|
||||
<kernel>/f19-arm.kernel</kernel>
|
||||
<initrd>/f19-arm.initrd</initrd>
|
||||
<cmdline>console=ttyAMA0,1234 rw root=/dev/vda3</cmdline>
|
||||
|
@ -24,11 +24,12 @@
|
|||
<disk type="file" device="disk">
|
||||
<driver name="qemu" type="qcow2"/>
|
||||
<source file="/dev/default-pool/testvol1.img"/>
|
||||
<target dev="sda" bus="sd"/>
|
||||
<target dev="vda" bus="virtio"/>
|
||||
</disk>
|
||||
<interface type="bridge">
|
||||
<source bridge="eth0"/>
|
||||
<mac address="00:11:22:33:44:55"/>
|
||||
<model type="virtio"/>
|
||||
</interface>
|
||||
<console type="pty"/>
|
||||
</devices>
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
<domain type="qemu">
|
||||
<name>foobar</name>
|
||||
<uuid>00000000-1111-2222-3333-444444444444</uuid>
|
||||
<memory>65536</memory>
|
||||
<currentMemory>65536</currentMemory>
|
||||
<vcpu>1</vcpu>
|
||||
<os>
|
||||
<type arch="ppc64" machine="pseries">hvm</type>
|
||||
<boot dev="network"/>
|
||||
</os>
|
||||
<features>
|
||||
<acpi/>
|
||||
<apic/>
|
||||
<pae/>
|
||||
</features>
|
||||
<clock offset="utc"/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>restart</on_crash>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-ppc64</emulator>
|
||||
<disk type="file" device="disk">
|
||||
<driver name="qemu" type="qcow2"/>
|
||||
<source file="/dev/default-pool/testvol1.img"/>
|
||||
<target dev="sda" bus="scsi"/>
|
||||
</disk>
|
||||
<graphics type="spice" port="-1" tlsPort="-1" autoport="yes"/>
|
||||
<console type="pty"/>
|
||||
<channel type="unix">
|
||||
<source mode="bind"/>
|
||||
<target type="virtio" name="org.qemu.guest_agent.0"/>
|
||||
</channel>
|
||||
<channel type="spicevmc">
|
||||
<target type="virtio" name="com.redhat.spice.0"/>
|
||||
</channel>
|
||||
<video>
|
||||
<model type="vga"/>
|
||||
</video>
|
||||
<redirdev bus="usb" type="spicevmc"/>
|
||||
<redirdev bus="usb" type="spicevmc"/>
|
||||
</devices>
|
||||
</domain>
|
|
@ -526,6 +526,7 @@ c.add_compare("--arch armv7l --boot kernel=/f19-arm.kernel,initrd=/f19-arm.initr
|
|||
c.add_compare("--arch aarch64 --machine virt --boot kernel=/f19-arm.kernel,initrd=/f19-arm.initrd,kernel_args=\"console=ttyAMA0,1234 rw root=/dev/vda3\",extra_args=foo --disk %(EXISTIMG1)s", "aarch64-machvirt")
|
||||
c.add_compare("--arch aarch64 --boot kernel=/f19-arm.kernel,initrd=/f19-arm.initrd,kernel_args=\"console=ttyAMA0,1234 rw root=/dev/vda3\",extra_args=foo --disk %(EXISTIMG1)s", "aarch64-machdefault")
|
||||
c.add_compare("--arch ppc64 --machine pseries --boot network --disk %(EXISTIMG1)s --os-variant fedora20 --network none", "ppc64-pseries-f20")
|
||||
c.add_compare("--arch ppc64 --boot network --disk %(EXISTIMG1)s --os-variant fedora20 --network none", "ppc64-machdefault-f20")
|
||||
c.add_compare("--disk none --location /tmp/fake.iso --nonetworks", "location-iso") # Using --location iso mounting
|
||||
c.add_compare("--disk %(EXISTIMG1)s --pxe --os-variant rhel6.4", "kvm-rhel6") # RHEL6 defaults
|
||||
c.add_compare("--disk %(EXISTIMG1)s --pxe --os-variant rhel7.0", "kvm-rhel7") # RHEL7 defaults
|
||||
|
|
|
@ -360,7 +360,6 @@ def get_guest(conn, options):
|
|||
typ=req_hv_type,
|
||||
machine=options.machine)
|
||||
guest = conn.caps.build_virtinst_guest(conn, capsguest, capsdomain)
|
||||
guest.os.machine = options.machine
|
||||
except Exception, e:
|
||||
fail(e)
|
||||
|
||||
|
|
|
@ -717,12 +717,11 @@ class vmmCreate(vmmGObjectUI):
|
|||
|
||||
defmachine = None
|
||||
prios = []
|
||||
if self.capsguest.arch == "armv7l":
|
||||
defmachine = "vexpress-a9"
|
||||
prios = ["vexpress-a9", "vexpress-a15", "highbank", "midway"]
|
||||
elif self.capsguest.arch == "ppc64":
|
||||
defmachine = "pseries"
|
||||
prios = ["pseries"]
|
||||
recommended_machine = self.capsdomain.get_recommended_machine(
|
||||
self.conn.get_backend(), self.capsguest)
|
||||
if recommended_machine:
|
||||
defmachine = recommended_machine
|
||||
prios = [defmachine]
|
||||
|
||||
for p in prios[:]:
|
||||
if p not in machines:
|
||||
|
|
|
@ -360,10 +360,15 @@ class Guest(object):
|
|||
def bestDomainType(self, dtype=None, machine=None):
|
||||
domains = []
|
||||
for d in self.domains:
|
||||
d.set_recommended_machine(None)
|
||||
|
||||
if dtype and d.hypervisor_type != dtype.lower():
|
||||
continue
|
||||
if machine and machine not in d.machines:
|
||||
continue
|
||||
|
||||
if machine:
|
||||
d.set_recommended_machine(machine)
|
||||
domains.append(d)
|
||||
|
||||
return self._favoredDomain(domains)
|
||||
|
@ -378,9 +383,30 @@ class Domain(object):
|
|||
self.loader = loader
|
||||
self.machines = machines
|
||||
|
||||
self._recommended_machine = None
|
||||
|
||||
if node is not None:
|
||||
self.parseXML(node)
|
||||
|
||||
def get_recommended_machine(self, conn, capsguest):
|
||||
if self._recommended_machine:
|
||||
return self._recommended_machine
|
||||
|
||||
if not conn.is_test() and not conn.is_qemu():
|
||||
return None
|
||||
|
||||
if capsguest.arch == "ppc64" and "pseries" in self.machines:
|
||||
return "pseries"
|
||||
if capsguest.arch in ["armv7l", "aarch64"]:
|
||||
if "virt" in self.machines:
|
||||
return "virt"
|
||||
if "vexpress-a15" in self.machines:
|
||||
return "vexpress-a15"
|
||||
|
||||
return None
|
||||
|
||||
def set_recommended_machine(self, machine):
|
||||
self._recommended_machine = machine
|
||||
|
||||
def parseXML(self, node):
|
||||
child = node.children
|
||||
|
@ -695,5 +721,6 @@ class Capabilities(object):
|
|||
gobj.os.arch = guest.arch
|
||||
gobj.os.loader = domain.loader
|
||||
gobj.emulator = domain.emulator
|
||||
gobj.os.machine = domain.get_recommended_machine(conn, guest)
|
||||
|
||||
return gobj
|
||||
|
|
|
@ -686,9 +686,6 @@ class Guest(XMLBuilder):
|
|||
if self.os.kernel or self.os.init:
|
||||
self.os.bootorder = []
|
||||
|
||||
if (self.os.machine is None and self.os.is_ppc64()):
|
||||
self.os.machine = "pseries"
|
||||
|
||||
def _set_clock_defaults(self):
|
||||
if not self.os.is_hvm():
|
||||
return
|
||||
|
|
Loading…
Reference in New Issue