On 09/10/2013 12:41 PM, Richard W.M. Jones wrote:
On Tue, Sep 10, 2013 at 12:27:48PM -0400, William Cohen wrote:
> On 09/07/2013 08:16 AM, Richard W.M. Jones wrote:
>> On Sat, Sep 07, 2013 at 01:02:39PM +0100, Richard W.M. Jones wrote:
>>> All places in general where ENXIO might be returned are related to the
>>> function "irqchip_in_kernel" and the mysterious "VGIC"
hardware (which
>>> I guess is doing interrupt routing like APIC on PCs?)
>>
>> The solution was some creative grepping of the qemu sources:
>>
>> -machine accel=kvm:tcg,kernel_irqchip=off
>>
>> Works great (except of course virtio-serial is still broken). I seem
>> to be getting there, slowly ...
>>
>> Rich.
>>
>
>
> Hi Rich,
>
> Thanks for the tip above. I was able to get virtualization running on my Samsung ARM
chromebook (using a nv-uboot that turns on HYP and a locally built 3.11 kernel with a
patch).
Interesting .. which/what is "nv-uboot" and where did you get it from?
Hi Rich,
I used the u-boot described in
http://www.virtualopensystems.com/media/chromebook/chromebook.pdf:
git://github.com/virtualopensystems/u-boot.git
This u-boot doesn't seem to understand initramfs, so the kernel I am using has some
things compiled in rather than modules.
For the linux-3.11 kernel I also had to use a patch based on:
https://github.com/virtualopensystems/linux-kvm-arm/commit/32682304c9935d...
Peter Robinson mentioned there are some other patches submitted for review that are
suppose to accomplished the same.
>
https://fedoraproject.org/wiki/Architectures/ARM/F18/Versatile_Express
>
> This particular image uses a 3.6.10 linux kernel. The URL above mentions that DTB
files are needed for newer kernels. Is there a particular DTB file that would be best to
use? There seems to be several vexpress*.dtb files to choose from.
I used:
qemu-system-arm \
-M vexpress-a9 \
-dtb /boot/dtb-....../vexpress-v2p-ca9.dtb \
-machine accel=kvm:tcg,kernel_irqchip=off \
[etc]
Okay I will try "-M vexpress-a9 -dtb ..vexpress-v2p-ca9.dtb"
I tried to run a couple of the systemtap virtualization examples on the host
(
https://sourceware.org/systemtap/examples/keyword-index.html#VIRTUALIZATION). However,
it looks like the some of the kernel tracepoint that are available for x86:
kernel.trace("kvm_entry") and kernel.trace("kvm_exit") are not
available on my kernel. However, I do see the trace points defined on:
http://lxr.linux.no/#linux+v3.11/arch/arm/kvm/trace.h#L12 And look to be used in the 3.11
kernel.
trace_kvm_entry:
http://lxr.linux.no/#linux+v3.11/arch/arm/kvm/arm.c#L568
trace_kvm_exit:
http://lxr.linux.no/#linux+v3.11/arch/arm/kvm/arm.c#L577
Maybe the kernel doesn't have some config set correctly. There are some
kernel.trace("kvm_*") that are listed on the host kernel:
$ sudo stap -L 'kernel.trace("kvm_*")'
kernel.trace("kvm_ack_irq") $irqchip:unsigned int $pin:unsigned int
kernel.trace("kvm_age_page") $hva:ulong $slot:struct kvm_memory_slot* $ref:int
kernel.trace("kvm_fpu") $load:int
kernel.trace("kvm_mmio") $type:int $len:int $gpa:u64 $val:u64
kernel.trace("kvm_set_irq") $gsi:unsigned int $level:int $irq_source_id:int
kernel.trace("kvm_userspace_exit") $reason:__u32 $errno:int
The kvm trace event that were found are defined in
http://lxr.linux.no/#linux+v3.11/include/trace/events/kvm.h
-Will