From nobody Wed May 8 21:12:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1542104575649800.4019900308634; Tue, 13 Nov 2018 02:22:55 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A432411536; Tue, 13 Nov 2018 10:22:52 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DC1A91974E; Tue, 13 Nov 2018 10:22:51 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id DBFCD14B20; Tue, 13 Nov 2018 10:22:50 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id wA9LJ6uF019650 for ; Fri, 9 Nov 2018 16:19:06 -0500 Received: by smtp.corp.redhat.com (Postfix) id 168215C220; Fri, 9 Nov 2018 21:19:06 +0000 (UTC) Received: from mx1.redhat.com (ext-mx04.extmail.prod.ext.phx2.redhat.com [10.5.110.28]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0F4F65C21E for ; Fri, 9 Nov 2018 21:19:03 +0000 (UTC) Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.17.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E36908830F for ; Fri, 9 Nov 2018 21:19:00 +0000 (UTC) Received: from LapSte-arch.dom.nafets.de ([87.170.6.122]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPA (Nemesis) id 1M7bND-1gQQiV0i1l-0081Fh; Fri, 09 Nov 2018 22:18:58 +0100 From: infos@nafets.de To: libvir-list@redhat.com Date: Fri, 9 Nov 2018 21:18:57 +0000 Message-Id: <20181109211857.7792-1-infos@nafets.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:nGm0drUqhEJukVQMi1Vix2wi7hWyEQ+DWwyOykrI8IIOyl+Gc8w VFH4eGFz0UbfNQynnwIYhiyyTmKtQ8jn4gHw6qc02VzzPvQ87l8Y+cibip3Qff3hbF7vVzm Cs3jUjpRg1iKTDGgfO1mb8Mgy6mcCVLQBl+aRIaxfR1escLpv3UdM/VmSLjZ3S0x9JCCG1U lW3423uWu8furdSL+KNXQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:NcJSTXCMafM=:QuD98VljQsfOpGYt8ShubP HAe66onwGAwXLPEIeqx90E8F/RmyasvVyO/bIOnA5/9fUg8tW6GXR1LR4xJK5aIjtkSAv4WTL r6kBkP/CS2baYS498Ic+eR8BtRQF1xuO48Pik4c2WKJPMUNGweyKeZdp0Xg0Vm2Mz6lOTjrVV r35LXFcoyarMbVk24rWThCrg1Bqc0TUHLfUG38fgoU7A/j1vP/y0LdV+7uQlTWvQU7nrGqiLx 8zVnU5WrSGw7l5PpifyI5W3lVX6Beutb0N0vDzlGsR3To55l0nHGKu48opBA/Y1KCu4kgdfQM LGHzX4qJv7hrBF1/Afg/epAJ+EsHl4ATxJ1HnRAkI7p60Vi541sMd+6jHgcjIkhcYJ1SEyw9e v73COEhCWiz8hiMuLYLIA06swCExdJNwXCTfPQBZnG32Gt7kULPaNTnNcK73e0fqnRnhNtrl3 h2fjuhQL4irKkrGHK47XylSyBhz1G/vNG4E+lXlFjjuFu696UTThVDcZXO0xA27OzInVfccp8 Dtu1Gn0rjvYJUxedG+Z1n2gPp4b+/kgVO0ThuY2BQp+AxpAt4o3HTaRMC3RROLBy84nbqYXIT sYVyOWgXsZ3BUeK8uUPoVKZ47G+NMetAO5ol1vLeq7afcccm+ji9KqO4t3rRlRp9V/P0DwLXm R+BV4nNBNAQtUq7N7IPIw3oCTfALX0ArkexekZpslE4yW1fjuDutLZCrPyXx4vX0cMjHybUjj PDLhPOPp8ZqOAU8NWhnNSmBw631hDx02UcIyxwK4l1AYsoQkQUA5i665NAuVMhfBSvRXlMk2T vZhLITi X-Greylist: Sender passed SPF test, Sender IP whitelisted by DNSRBL, ACL 216 matched, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Fri, 09 Nov 2018 21:19:01 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Fri, 09 Nov 2018 21:19:01 +0000 (UTC) for IP:'212.227.17.24' DOMAIN:'mout.kundenserver.de' HELO:'mout.kundenserver.de' FROM:'infos@nafets.de' RCPT:'' X-RedHat-Spam-Score: -0.01 (RCVD_IN_DNSWL_NONE) 212.227.17.24 mout.kundenserver.de 212.227.17.24 mout.kundenserver.de X-Scanned-By: MIMEDefang 2.78 on 10.5.110.28 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com X-Mailman-Approved-At: Tue, 13 Nov 2018 05:13:01 -0500 Cc: Stefan Schallenberg Subject: [libvirt] [PATCH] Add armv6l Support as guest X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 13 Nov 2018 10:22:53 +0000 (UTC) Content-Type: text/plain; charset="utf-8" From: Stefan Schallenberg Support for armv6l qemu guests has been added. Tested with arm1176 CPU on x86. Signed-off-by Stefan Schallenberg --- docs/news.xml | 9 +++++ docs/schemas/basictypes.rng | 1 + src/qemu/qemu_capabilities.c | 5 ++- src/qemu/qemu_command.c | 4 +- src/qemu/qemu_domain.c | 11 ++++-- src/qemu/qemu_domain_address.c | 6 ++- tests/capabilityschemadata/caps-qemu-kvm.xml | 10 +++++ tests/testutilsqemu.c | 40 +++++++++++++++++++- 8 files changed, 75 insertions(+), 11 deletions(-) diff --git a/docs/news.xml b/docs/news.xml index 88774c55ae..b01bcbf949 100644 --- a/docs/news.xml +++ b/docs/news.xml @@ -25,6 +25,15 @@
+ + + Add armv6l Support as guest + + + Support for armv6l qemu guests has been added. + Tested with arm1176 CPU on x86. + +
diff --git a/docs/schemas/basictypes.rng b/docs/schemas/basictypes.rng index 14a3670e5c..8a01b854c0 100644 --- a/docs/schemas/basictypes.rng +++ b/docs/schemas/basictypes.rng @@ -380,6 +380,7 @@ aarch64 alpha armv7l + armv6l cris i686 ia64 diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 2ca5af3297..4871e89324 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -618,7 +618,7 @@ static const char *virQEMUCapsArchToString(virArch arch) { if (arch =3D=3D VIR_ARCH_I686) return "i386"; - else if (arch =3D=3D VIR_ARCH_ARMV7L) + else if (arch =3D=3D VIR_ARCH_ARMV6L || arch =3D=3D VIR_ARCH_ARMV7L) return "arm"; else if (arch =3D=3D VIR_ARCH_OR32) return "or32"; @@ -2179,7 +2179,7 @@ static const char *preferredMachines[] =3D { NULL, /* VIR_ARCH_NONE (not a real arch :) */ "clipper", /* VIR_ARCH_ALPHA */ - NULL, /* VIR_ARCH_ARMV6L (no QEMU impl) */ + "versatilepb", /* VIR_ARCH_ARMV6L */ "integratorcp", /* VIR_ARCH_ARMV7L */ "integratorcp", /* VIR_ARCH_ARMV7B */ =20 @@ -4157,6 +4157,7 @@ virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps, =20 /* GIC capabilities, eg. available GIC versions */ if ((qemuCaps->arch =3D=3D VIR_ARCH_AARCH64 || + qemuCaps->arch =3D=3D VIR_ARCH_ARMV6L || qemuCaps->arch =3D=3D VIR_ARCH_ARMV7L) && virQEMUCapsProbeQMPGICCapabilities(qemuCaps, mon) < 0) goto cleanup; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index f59cbf559e..2aa5dab049 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -9072,7 +9072,9 @@ static bool qemuChrIsPlatformDevice(const virDomainDef *def, virDomainChrDefPtr chr) { - if (def->os.arch =3D=3D VIR_ARCH_ARMV7L || def->os.arch =3D=3D VIR_ARC= H_AARCH64) { + if (def->os.arch =3D=3D VIR_ARCH_ARMV6L || + def->os.arch =3D=3D VIR_ARCH_ARMV7L || + def->os.arch =3D=3D VIR_ARCH_AARCH64) { =20 /* pl011 (used on mach-virt) is a platform device */ if (chr->deviceType =3D=3D VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL && diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index e25afdad6b..2a757683c8 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -3253,6 +3253,7 @@ qemuDomainDefAddDefaultDevices(virDomainDefPtr def, addPCIRoot =3D true; break; =20 + case VIR_ARCH_ARMV6L: case VIR_ARCH_ARMV7L: case VIR_ARCH_AARCH64: addDefaultUSB =3D false; @@ -3297,7 +3298,6 @@ qemuDomainDefAddDefaultDevices(virDomainDefPtr def, addPCIRoot =3D true; break; =20 - case VIR_ARCH_ARMV6L: case VIR_ARCH_ARMV7B: case VIR_ARCH_CRIS: case VIR_ARCH_ITANIUM: @@ -5908,7 +5908,8 @@ qemuDomainDefaultNetModel(const virDomainDef *def, if (ARCH_IS_S390(def->os.arch)) return "virtio"; =20 - if (def->os.arch =3D=3D VIR_ARCH_ARMV7L || + if (def->os.arch =3D=3D VIR_ARCH_ARMV6L || + def->os.arch =3D=3D VIR_ARCH_ARMV7L || def->os.arch =3D=3D VIR_ARCH_AARCH64) { if (STREQ(def->os.machine, "versatilepb")) return "smc91c111"; @@ -9691,7 +9692,8 @@ bool qemuDomainMachineIsARMVirt(const char *machine, const virArch arch) { - if (arch !=3D VIR_ARCH_ARMV7L && + if (arch !=3D VIR_ARCH_ARMV6L && + arch !=3D VIR_ARCH_ARMV7L && arch !=3D VIR_ARCH_AARCH64) return false; =20 @@ -10497,7 +10499,8 @@ qemuDomainSupportsNicdev(virDomainDefPtr def, virDomainNetDefPtr net) { /* non-virtio ARM nics require legacy -net nic */ - if (((def->os.arch =3D=3D VIR_ARCH_ARMV7L) || + if (((def->os.arch =3D=3D VIR_ARCH_ARMV6L) || + (def->os.arch =3D=3D VIR_ARCH_ARMV7L) || (def->os.arch =3D=3D VIR_ARCH_AARCH64)) && net->info.type !=3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO && net->info.type !=3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c index 27c9bfb946..64a6595717 100644 --- a/src/qemu/qemu_domain_address.c +++ b/src/qemu/qemu_domain_address.c @@ -468,7 +468,8 @@ static void qemuDomainAssignARMVirtioMMIOAddresses(virDomainDefPtr def, virQEMUCapsPtr qemuCaps) { - if (def->os.arch !=3D VIR_ARCH_ARMV7L && + if (def->os.arch !=3D VIR_ARCH_ARMV6L && + def->os.arch !=3D VIR_ARCH_ARMV7L && def->os.arch !=3D VIR_ARCH_AARCH64) return; =20 @@ -2185,7 +2186,8 @@ static bool qemuDomainSupportsPCI(virDomainDefPtr def, virQEMUCapsPtr qemuCaps) { - if ((def->os.arch !=3D VIR_ARCH_ARMV7L) && + if ((def->os.arch !=3D VIR_ARCH_ARMV6L) && + (def->os.arch !=3D VIR_ARCH_ARMV7L) && (def->os.arch !=3D VIR_ARCH_AARCH64) && !ARCH_IS_RISCV(def->os.arch)) return true; diff --git a/tests/capabilityschemadata/caps-qemu-kvm.xml b/tests/capabilit= yschemadata/caps-qemu-kvm.xml index 1aa98d140f..01cebcab16 100644 --- a/tests/capabilityschemadata/caps-qemu-kvm.xml +++ b/tests/capabilityschemadata/caps-qemu-kvm.xml @@ -81,6 +81,16 @@ =20 + + hvm + + 32 + /usr/bin/qemu-system-arm + versatilepb + + + + hvm diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index 332885eb77..1c60aaee03 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -392,7 +392,39 @@ static int testQemuAddS390Guest(virCapsPtr caps) return -1; } =20 -static int testQemuAddArmGuest(virCapsPtr caps) +static int testQemuAddArm6Guest(virCapsPtr caps) +{ + static const char *machines[] =3D { "versatilepb" }; + virCapsGuestMachinePtr *capsmachines =3D NULL; + virCapsGuestPtr guest; + + capsmachines =3D virCapabilitiesAllocMachines(machines, + ARRAY_CARDINALITY(machines= )); + if (!capsmachines) + goto error; + + guest =3D virCapabilitiesAddGuest(caps, VIR_DOMAIN_OSTYPE_HVM, VIR_ARC= H_ARMV6L, + QEMUBinList[TEST_UTILS_QEMU_BIN_ARM], + NULL, + ARRAY_CARDINALITY(machines), + capsmachines); + if (!guest) + goto error; + + if (!virCapabilitiesAddGuestDomain(guest, VIR_DOMAIN_VIRT_QEMU, NULL, = NULL, 0, NULL)) + goto error; + if (!virCapabilitiesAddGuestDomain(guest, VIR_DOMAIN_VIRT_KVM, + NULL, NULL, 0, NULL)) + goto error; + + return 0; + + error: + virCapabilitiesFreeMachines(capsmachines, ARRAY_CARDINALITY(machines)); + return -1; +} + +static int testQemuAddArm7Guest(virCapsPtr caps) { static const char *machines[] =3D { "vexpress-a9", "vexpress-a15", @@ -426,6 +458,7 @@ static int testQemuAddArmGuest(virCapsPtr caps) return -1; } =20 + static int testQemuAddAARCH64Guest(virCapsPtr caps) { static const char *machines[] =3D { "virt"}; @@ -514,7 +547,10 @@ virCapsPtr testQemuCapsInit(void) if (testQemuAddS390Guest(caps)) goto cleanup; =20 - if (testQemuAddArmGuest(caps)) + if (testQemuAddArm6Guest(caps)) + goto cleanup; + + if (testQemuAddArm7Guest(caps)) goto cleanup; =20 if (testQemuAddAARCH64Guest(caps)) --=20 2.19.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list