From nobody Mon Feb 9 13:35:47 2026 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 1543441556450128.61477927758983; Wed, 28 Nov 2018 13:45:56 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 688E1793EC; Wed, 28 Nov 2018 21:45:53 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 33D067C804; Wed, 28 Nov 2018 21:45:53 +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 DD387181B9E7; Wed, 28 Nov 2018 21:45:52 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id wASLjXCf001037 for ; Wed, 28 Nov 2018 16:45:33 -0500 Received: by smtp.corp.redhat.com (Postfix) id 56CCA1057042; Wed, 28 Nov 2018 21:45:33 +0000 (UTC) Received: from mx1.redhat.com (ext-mx02.extmail.prod.ext.phx2.redhat.com [10.5.110.26]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4A36B103BAB2 for ; Wed, 28 Nov 2018 21:45:29 +0000 (UTC) Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.126.187]) (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 BD9063983 for ; Wed, 28 Nov 2018 21:45:27 +0000 (UTC) Received: from LapSte-arch.dom.nafets.de ([87.170.9.20]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPA (Nemesis) id 1MIxFi-1g7psN2BkA-00KSf4; Wed, 28 Nov 2018 22:45:25 +0100 From: infos@nafets.de To: libvir-list@redhat.com Date: Wed, 28 Nov 2018 21:45:14 +0000 Message-Id: <20181128214516.3289-2-infos@nafets.de> In-Reply-To: <20181128214516.3289-1-infos@nafets.de> References: <20181128214516.3289-1-infos@nafets.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:eFi6chvMbwtd044OF7J7vxaph2EmT7nGhX363Zpz7whjIUQl6HL yhEnZEswQkOknlC684fhpnfxgFakcSyiuHC1rQXjoiPvrpmk4HBayvBoqLML8B/4QS5Dy2Y n2xQ4Jj9Y+OyOMarMJANZe0MgTZdmD34Peyynax3fCVjFBdIdcDPJOfFyMCL+CVhC7tf5bG dKN16iyOKZSw1A5YZaQMQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:hgIJK0TjNeA=:TxGMUqc+jhXLuMA9aVpZbS lUrC4B9+N1smH2qQAW7iw8Se9AjrUxKX55QJooCeEtWU8X81a0h4dOBUJ6zAEm3xECg+B90Vo Sqh7Vf47xIGDLhdeBlnGuNgP80D+ZxXoh1RkZvouBhCGxIs5+Il6mzYsJkxG1PGuD/jnOnXki Odgk938Wd95eCZBCDDZfVQdE2uw//Qkf1xaZsv+qIarL9lwDe3LhclQ5O/rMWj7HX2xMWqVrH RrSIaE/dTUbAZ4GlEJ2A1DKlVvmFZwW5Csj0exrhpNQ+oUjh1Oy85YE33B6DEPLpW++Ru9ZBT zZhHWif2Q9HnY7E1a5N34FN9mxkJyxnPrR/W6eRt1Xx3e1/8Py0o6OB+u84CDMykjFbLsz08S 64ZXh2BCxftnjWglQsHPgKos/FnzmUv25UYS2BPLRN2VciaDHqw1ne/LRNCYc3pJ1X9W4CPCL OVYRVy7X11VXyFWPCfk896F11LqkciIf0sTVJp6HpKKYMPh/7dONx0xuCId1RnV0Sg+suemsF V4REgKQsgmE7GUJjbQ1I2fq2+PYxmoIQcLO/MnR9eF+7c8NUosjebLJDLNBdL/8BoRBmR1yyy Hb8wpLI+QdA9djbTiaz9INHiHX4GHiNv9Wy0YRHjN81HYubVPINUBQfAq2IrVxew8L7DHkfX2 ehTchAv8iPOg0t4LapjEdTx4RrkwVxW6yHEnHEZ941qUiB5CgB9a+VFxsMBQUR1lgvIXWohQq jUbUKJcVsf50jLN1ZWRRXX+PheAmvXOPmutzPA== 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.26]); Wed, 28 Nov 2018 21:45:28 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Wed, 28 Nov 2018 21:45:28 +0000 (UTC) for IP:'212.227.126.187' DOMAIN:'mout.kundenserver.de' HELO:'mout.kundenserver.de' FROM:'infos@nafets.de' RCPT:'' X-RedHat-Spam-Score: -0.011 (RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2) 212.227.126.187 mout.kundenserver.de 212.227.126.187 mout.kundenserver.de X-Scanned-By: MIMEDefang 2.78 on 10.5.110.26 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-loop: libvir-list@redhat.com Cc: Stefan Schallenberg , Stefan Schallenberg Subject: [libvirt] [PATCH 1/3] 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.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Wed, 28 Nov 2018 21:45:54 +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 Reviewed-by: Andrea Bolognani --- 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 | 66 ++++++++++++++++++++ tests/testutilsqemu.c | 40 +++++++++++- 7 files changed, 122 insertions(+), 11 deletions(-) diff --git a/docs/schemas/basictypes.rng b/docs/schemas/basictypes.rng index 71a6db3bb4..9a63720ff7 100644 --- a/docs/schemas/basictypes.rng +++ b/docs/schemas/basictypes.rng @@ -406,6 +406,7 @@ aarch64 alpha + armv6l armv7l cris i686 diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 20a1a0c201..8cb50073b4 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -625,7 +625,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"; @@ -2201,7 +2201,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) */ + "integratorcp", /* VIR_ARCH_ARMV6L */ "integratorcp", /* VIR_ARCH_ARMV7L */ "integratorcp", /* VIR_ARCH_ARMV7B */ =20 @@ -4179,6 +4179,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 315419c71b..c36f8d44e3 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -9223,7 +9223,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 ee61caa823..efe6202101 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -3260,6 +3260,7 @@ qemuDomainDefAddDefaultDevices(virDomainDefPtr def, addPCIRoot =3D true; break; =20 + case VIR_ARCH_ARMV6L: case VIR_ARCH_ARMV7L: case VIR_ARCH_AARCH64: addDefaultUSB =3D false; @@ -3305,7 +3306,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: @@ -6024,7 +6024,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"; @@ -9807,7 +9808,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 @@ -10613,7 +10615,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 73ed9cc68c..4cee6633ac 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 @@ -2367,7 +2368,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..4b3895dbd1 100644 --- a/tests/capabilityschemadata/caps-qemu-kvm.xml +++ b/tests/capabilityschemadata/caps-qemu-kvm.xml @@ -81,6 +81,72 @@ =20 + + hvm + + 32 + /usr/bin/qemu-system-arm + integratorcp + nuri + mps2-an511 + verdex + mps2-an505 + virt-3.0 + virt + ast2500-evb + smdkc210 + collie + imx25-pdk + spitz + realview-pbx-a9 + realview-eb + realview-pb-a8 + versatilepb + emcraft-sf2 + virt-2.9 + musicpal + z2 + akita + virt-2.7 + kzm + virt-2.8 + realview-eb-mpcore + mcimx7d-sabre + sx1 + sx1-v1 + virt-2.6 + cubieboard + highbank + raspi2 + netduino2 + terrier + n810 + mainstone + palmetto-bmc + sabrelite + midway + romulus-bmc + cheetah + tosa + borzoi + versatileab + lm3s6965evb + n800 + virt-2.10 + virt-2.11 + connex + virt-2.12 + witherspoon-bmc + xilinx-zynq-a9 + mps2-an385 + vexpress-a9 + vexpress-a15 + canon-a1100 + lm3s811evb + + + + hvm diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index 0d3e9fc7e6..3f7d3b107d 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.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list