Re: some QEMU success in running armv7

From: Warner Losh <imp_at_bsdimp.com>
Date: Fri, 19 May 2023 13:10:15 UTC
You'd never use kvm for armv7 when running on amd64 anyway... You can't run
the code directly, but have to use the emulation stream.

Warner

On Fri, May 19, 2023 at 1:45 AM Mario Marietto <marietto2008@gmail.com>
wrote:

> Nice review. infortunately kvm does not work ? and a qemu vm without kvm
> is very slow and useless.
>
> Il ven 19 mag 2023, 04:49 Thomas David Rivers <rivers@dignus.com> ha
> scritto:
>
>>
>> Just f.y.i. - here's the steps I was able to deduce today
>> to get FreeBSD armv7 running under qemu... just in case
>> someone goes looking for this... (I was doing this on a
>> FreeBSD 12.3-RELEASE x86_64 system.)
>>
>>
>> 1.   Retrieve the armv7 image from:
>>         fetch
>> https://download.freebsd.org/releases/arm/armv7/ISO-IMAGES/13.2/FreeBSD-13.2-RELEASE-arm-armv7-GENERICSD.img.xz
>>      and unzip it.   This is an actual hard-drive image of a working
>>      system.
>>
>> 2.  Assuming the qemu port has been installed - this command
>>     starts that system
>>
>>     qemu-system-arm -M virt -m 512m -nographic \
>>        -bios edk2-arm-code.fd \
>>        -hda FreeBSD-13.2-RELEASE-arm-armv7-GENERICSD.img
>>
>>     the existing terminal will be the console.  There is no
>>     networking.
>>
>>     There root user's password is 'root'.
>>
>> Unfortunately this doesn't provide networking in the guest.  This
>> compilation of QEMU also doesn't support the "-netdev user" mode
>> of networking so I can't take advantage of that.  (The FreeBSD 12.3
>> host is using QEMU emulator version 7.2.0 - from just the pkg
>> install.)  However, I found that using this option on qemu:
>>
>>     -nic tap,ifname=tap7,script=no,downscript=no
>>
>> got it to use the tap interface on the host to emulate the virtio
>> device to the guest.
>>
>> I also found this discussion regarding alignment issues in the
>> virtio driver in armv7:
>>
>>
>> https://forums.freebsd.org/threads/kernel-panic-on-armv7-with-qemu.89016/#post-610281
>>
>> that resulted in PR 271288.   Apparently it's because of newer versions
>> of QEMU doing a better job at reporting unaligned memory accesses in the
>> guest for the armv7 "ldm" instruction.
>>
>> When I use the tap interface, I did get the exact panic mentioned
>> in the forum and the PR.
>>
>> I did find that specifying the rtl8139 device worked around the panic
>> with the QEMU option:
>>
>>   -nic tap,ifname=tap7,script=no,downscript=no,model=rtl8139
>>
>> by the way - tap7 happens to be a tap device I'd already configured
>> on the host FreeBSD 12.3 system - if you're doing this yourself,
>> it will likely need to be a different tap device, see this
>> write-up for info about how to configure a tap + bridge on your
>> FreeBSD host:
>>
>> http://bsdwiki.reedmedia.net/wiki/networking_qemu_virtual_bsd_systems.html
>>
>> So - it seems a newer version of the armv7 kernel with the patch
>> applied will fix the virtio driver problem, until then, model=rtl8139
>> works around it and I have networking and everything!
>>
>>         - Dave R. -
>>
>> --
>> rivers@dignus.com                        Work: (919) 676-0847
>> Get your mainframe programming tools at http://www.dignus.com
>>
>>