Message ID | 20090913135441.GA24216@caradoc.them.org |
---|---|
State | Superseded |
Headers | show |
On Sun, Sep 13, 2009 at 09:54:41AM -0400, Daniel Jacobowitz wrote: > Recent versions of the Linux kernel will not preempt CPU-intensive > tasks unless the clock used by sched_clock() works. On -M versatilepb > that's the 24MHz timer in the system controller. It's a very simple > timer, so implement it. Thanks for fixing this long standing issue that has been reported a few times already on the mailing list. I have applied the patch.
diff --git a/hw/arm_sysctl.c b/hw/arm_sysctl.c index 686c1cc..26300ef 100644 --- a/hw/arm_sysctl.c +++ b/hw/arm_sysctl.c @@ -7,6 +7,8 @@ * This code is licenced under the GPL. */ +#include "hw.h" +#include "qemu-timer.h" #include "sysbus.h" #include "primecell.h" #include "sysemu.h" @@ -71,8 +73,7 @@ static uint32_t arm_sysctl_read(void *opaque, target_phys_addr_t offset) case 0x58: /* BOOTCS */ return 0; case 0x5c: /* 24MHz */ - /* ??? not implemented. */ - return 0; + return muldiv64(qemu_get_clock(vm_clock), 24000000, get_ticks_per_sec()); case 0x60: /* MISC */ return 0; case 0x84: /* PROCID0 */
Recent versions of the Linux kernel will not preempt CPU-intensive tasks unless the clock used by sched_clock() works. On -M versatilepb that's the 24MHz timer in the system controller. It's a very simple timer, so implement it. Signed-off-by: Daniel Jacobowitz <dan@codesourcery.com> --- hw/arm_sysctl.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)