[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [BUG] Guest kernel divide error in kvm_unlock_kick
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [BUG] Guest kernel divide error in kvm_unlock_kick |
Date: |
Thu, 11 Sep 2014 11:45:36 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 |
Il 08/09/2014 15:28, Chris Webb ha scritto:
> divide error: 0000 [#1] PREEMPT SMP
> Modules linked in:
> CPU: 0 PID: 743 Comm: syslogd Not tainted 3.16.2-guest #2
> Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS
> rel-1.7.5-0-ge51488c-20140602_164612-nilsson.home.kraxel.org 04/01/2014
> task: ffff88007c972580 ti: ffff88007cb7c000 task.ti: ffff88007cb7c000
> RIP: 0010:[<ffffffff81037fe2>] [<ffffffff81037fe2>] kvm_unlock_kick+0x72/0x80
> RSP: 0000:ffff88007fc03ec8 EFLAGS: 00010046
> RAX: 0000000000000005 RBX: 0000000000000000 RCX: 0000000000000003
> RDX: 0000000000000003 RSI: ffffffff81a466a0 RDI: 0000000000000000
> RBP: ffffffff81a466a0 R08: ffffffff81b98940 R09: 0000000000000246
> R10: 0000000000000400 R11: 0000000000000000 R12: 00000000000000ea
> R13: 0000000000000009 R14: 0000000000000002 R15: ffff88007fc0d300
> FS: 00007f2a6473e700(0000) GS:ffff88007fc00000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
> CR2: 00000000004a8240 CR3: 000000007ac75000 CR4: 00000000000406f0
> Stack:
> ffffffff81a46400 0000000000000246 0000000000000001 ffffffff8168979d
> 0000000000000282 ffffffff81110d97 0000000000000007 ffff88007cb7ffd8
> ffff88007c972580 000000004b0782e8 0000000000000002 ffffffff81a0b0c8
> Call Trace:
> <IRQ>
> [<ffffffff8168979d>] ? _raw_spin_unlock_irqrestore+0x5d/0x80
> [<ffffffff81110d97>] ? rcu_process_callbacks+0x337/0x4f0
> [<ffffffff810cde2d>] ? __do_softirq+0xfd/0x210
> [<ffffffff810ce06e>] ? irq_exit+0x7e/0xa0
> [<ffffffff8103063b>] ? smp_apic_timer_interrupt+0x3b/0x50
> [<ffffffff8168b04d>] ? apic_timer_interrupt+0x6d/0x80
> <EOI>
> [<ffffffff8114180b>] ? filemap_map_pages+0x17b/0x240
> [<ffffffff811418c0>] ? filemap_map_pages+0x230/0x240
> [<ffffffff811679e2>] ? do_read_fault.isra.70+0x2a2/0x320
> [<ffffffff811696cc>] ? handle_mm_fault+0x37c/0xd00
> [<ffffffff8103bb45>] ? __do_page_fault+0x185/0x4c0
> [<ffffffff8168b958>] ? async_page_fault+0x28/0x30
> [<ffffffff813b9610>] ? __put_user_4+0x20/0x30
> [<ffffffff8168b958>] ? async_page_fault+0x28/0x30
> Code: c0 ca a7 81 48 8d 04 0b 48 8b 30 48 39 ee 75 c9 0f b6 40 08 44 38 e0 75
> c0 48 c7 c0 22 b0 00 00 31 db 0f b7 0c 08 b8 05 00 00 00 <0f> 01 c1 0f 1f 00
> 5b 5d 41 5c c3 0f 1f 00 48 c7 c0 10 cf 00 00
Hi Chris,
sorry for not following up on your previous patch.
This is a hypercall that should have kicked VCPU 3 (see rcx).
Can you please apply this patch and gather a trace of the host
(using "trace-cmd -e kvm qemu-kvm <arguments>")?
Thanks,
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
index fb919c574e23..25ed29f68419 100644
--- a/arch/x86/kvm/lapic.c
+++ b/arch/x86/kvm/lapic.c
@@ -709,6 +709,8 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int
delivery_mode,
int result = 0;
struct kvm_vcpu *vcpu = apic->vcpu;
+ trace_kvm_apic_accept_irq(vcpu->vcpu_id, delivery_mode,
+ trig_mode, vector, false);
switch (delivery_mode) {
case APIC_DM_LOWEST:
vcpu->arch.apic_arb_prio++;
@@ -730,8 +732,6 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int
delivery_mode,
kvm_make_request(KVM_REQ_EVENT, vcpu);
kvm_vcpu_kick(vcpu);
}
- trace_kvm_apic_accept_irq(vcpu->vcpu_id, delivery_mode,
- trig_mode, vector, false);
break;
case APIC_DM_REMRD:
Paolo