KVM: PIT: stop vpit before freeing irq_routing
authorXiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Sat, 10 Jul 2010 09:37:56 +0000 (17:37 +0800)
committerAvi Kivity <avi@redhat.com>
Mon, 2 Aug 2010 03:40:35 +0000 (06:40 +0300)
commitaea924f606c309feead37ab5c43f410a08ff3826
tree6d409eb035985ebcec3d16b0410706d3e8fcf184
parenta6f177efaa5856e22ed0d3c1e81e65b41654d083
KVM: PIT: stop vpit before freeing irq_routing

Fix:
general protection fault: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
......
Call Trace:
 [<ffffffffa0159bd1>] ? kvm_set_irq+0xdd/0x24b [kvm]
 [<ffffffff8106ea8b>] ? trace_hardirqs_off_caller+0x1f/0x10e
 [<ffffffff813ad17f>] ? sub_preempt_count+0xe/0xb6
 [<ffffffff8106d273>] ? put_lock_stats+0xe/0x27
...
RIP  [<ffffffffa0159c72>] kvm_set_irq+0x17e/0x24b [kvm]

This bug is triggered when guest is shutdown, is because we freed
irq_routing before pit thread stopped

Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
arch/x86/kvm/i8254.c
arch/x86/kvm/x86.c