qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]