Re: KVM on ARM Cortex A53 in 32-bit Mode

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





2017-03-16 5:38 GMT-04:00 Christoffer Dall <cdall@xxxxxxxxxx>:
On Wed, Mar 15, 2017 at 07:50:36PM -0400, Yasutaka, T wrote:
> Hi Christopher and other KVM/ARM community members,
>
> I tried the following QEMU and Kernel combinations on Raspberry Pi 3
> (AArch64 mode) but failed:
>
> Latest commit of Alexander Graf's no-kvm-irqchip QEMU branch:
> https://github.com/agraf/qemu/tree/no-kvm-irqchip
>
> raspberrypi/linux's rpi-4.10.y branch (forked from Linux 4.10-rc8?) latest
> commit bb0ff9d059c67e1611c7422f7982a6a4876efe67
> patched by $(git diff (linux 4.10-rc5 commit
> 7a308bb3016f57e5be11a677d15b821536419d36) (Christpher's irqs-to-user-v2
> latest commit d0a7cc725535df1b9cc64b442d246c20a9edb904) )
>
> and got the following error:
>
> pi@raspberrypi:~/os/graf/no-kvm-irqchip/aarch64-softmmu $
> qemu-system-aarch64 --enable-kvm -M virt
> "kvm" accelerator not found.
> No accelerator found!

You'd need "-machine virt,kernel_irqchip=off" to use the userspace GIC
emulation.  Perhaps QEMU's error message for trying to initialize the
in-kernel GIC is just weird.

I executed with the flag but still got the same error message (accelerator not found):

qemu-system-aarch64 --enable-kvm -cpu host -machine type=virt,kernel_irqchip=off -nographic -smp 1 -m 256 -kernel aarch64-linux-3.15rc2-buildroot.img --append "console=ttyAMA0"


And I found out that an article saying recent OpenSUSE distro officialy supports KVM:
https://news.opensuse.org/2016/12/05/opensuse-leap-42-2-gets-64-bit-raspberry-image/

The developer of this distro is the same as the kernel_irqchip=off QEMU patch author (Alexander Graf), and when I tried the above command on this [1] distro KVM-QEMU actually worked ("worked" means it reaches to the buildroot login prompt). 

So I guess this distro applied your patches (it proves KVM/QEMU on RPI3 is actually feasible) and the central reason that my failure of KVM on Raspibian OS would be just a kernel config problem. 

I set my .config file by make menuconfig, but it might need some other (potentially non-GUI?) configurations. My current config is: https://gist.github.com/caprice-j/836e3c7627f65c0f3a79e56a8d75368e

I thought I enabled necessary KVM-related flags but I might miss something.

[1] http://download.opensuse.org/ports/aarch64/distribution/leap/42.2/appliances/openSUSE-Leap42.2-ARM-X11-raspberrypi3.aarch64.raw.xz


>
> pi@raspberrypi:~/os/graf/no-kvm-irqchip/aarch64-softmmu $ lkvm run test
>   # lkvm run -k test -m 448 -c 4 --name guest-1605
>   Error: Unsupported KVM extension detected: KVM_CAP_IRQCHIP
>   Fatal: Failed to create virtual GIC

I don't think kvmtool supports running on a system that doesn't have
in-kernel GIC support.

>
>
> which seems strange for me because dmesg shows kernel is 4.10.2-v8+ and
> Boot CPU is AArach64, all CPUs are initialized in HYP mode and /dev/kvm
> exists. So I thought GIC emulation is also enabled, or should I need to
> enable other config flags or do settings?

The RPI3 doesn't have a GIC, so you'll never get KVM emulation of the
GIC with that board.  Ever.  That's why you want the irqchip in
userspace patches.

> Or, is this way of applying patch
> wrong? Current config.gz is:
> https://gist.github.com/caprice-j/d6e144cb8727df813a4fbe716beac3cb
>
> My other concerns are no kvm-ok command is available and /proc/cpuinfo does
> not show flags for virtualization support (I believe RPI3's cortex A53
> (ARMv8) has builtin virt support and does not show the support flag
> explicitly in /proc/cpuinfo ... but I'm unsure that is true)

If you have /dev/kvm then KVM as such is running on your system, no need
to worry further, just fix your setup to emulate the GIC in userspace.

Thanks,
-Christoffer



--
Yasutaka TANAKA
M.S. Candidate, Computer Science
Fu Foundation School of Engineering and Applied Science
Columbia University

_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux