• Bharat Bhushan's avatar
    KVM: PPC: Fix issue clearing exit timing counters · 09000adb
    Bharat Bhushan authored
    Following dump is observed on host when clearing the exit timing counters
    
    [root@p1021mds kvm]# echo -n 'c' > vm1200_vcpu0_timing
    INFO: task echo:1276 blocked for more than 120 seconds.
    "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    echo          D 0ff5bf94     0  1276   1190 0x00000000
    Call Trace:
    [c2157e40] [c0007908] __switch_to+0x9c/0xc4
    [c2157e50] [c040293c] schedule+0x1b4/0x3bc
    [c2157e90] [c04032dc] __mutex_lock_slowpath+0x74/0xc0
    [c2157ec0] [c00369e4] kvmppc_init_timing_stats+0x20/0xb8
    [c2157ed0] [c0036b00] kvmppc_exit_timing_write+0x84/0x98
    [c2157ef0] [c00b9f90] vfs_write+0xc0/0x16c
    [c2157f10] [c00ba284] sys_write+0x4c/0x90
    [c2157f40] [c000e320] ret_from_syscall+0x0/0x3c
    
            The vcpu->mutex is used by kvm_ioctl_* (KVM_RUN etc) and same was
    used when clearing the stats (in kvmppc_init_timing_stats()). What happens
    is that when the guest is idle then it held the vcpu->mutx. While the
    exiting timing process waits for guest to release the vcpu->mutex and
    a hang state is reached.
    
            Now using seprate lock for exit timing stats.
    Signed-off-by: default avatarBharat Bhushan <Bharat.Bhushan@freescale.com>
    Acked-by: default avatarAlexander Graf <agraf@suse.de>
    Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
    09000adb
timing.c 7.17 KB