On Wed, Jun 24, 2015 at 4:58 AM, Pavel Fedin <p.fe...@samsung.com> wrote: > Certain machines do not have working vGIC hardware. Linux kernel (at least > up to v4) has configuration options which would still allow to use KVM, > but GIC and timer have to be emulated in userspace. Unfortunately, ARM CPUs > do not have an option to trap access to CP15 virtual timer registers. > Consequently, timer operations cannot be trapped and emulated. > > The only possibility to work around is to use another timer hardware which > is memory-mapped and can be emulated by qemu. In order to make guest kernel > ignoring CP15 timer, we remove it from machine's device tree. >
Curious, what is the kernels algorithm for choosing a timer when multiple are in the device-tree? There are a lot of QEMU reasons for knocking out device tree nodes, un-emulated hardware being a big one. Should we be looking for a more core solution to the "should this device tree node really be here" problem? > Of course this works only with machine models which actually have these > timers (like vexpress). > Does an unedited vexpress DTS just work except for this one thing? Regards, Peter > Pavel Fedin (2): > Introduce qemu_fdt_remove_compatible() > Remove CP15 timer from the device tree if KVM is used without > in-kernel irqchip > > device_tree.c | 10 ++++++++++ > hw/arm/boot.c | 5 +++++ > include/sysemu/device_tree.h | 10 ++++++++++ > 3 files changed, 25 insertions(+) > > -- > 1.9.5.msysgit.0 > >