From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: pci_stub and kvm Date: Wed, 01 Jul 2009 10:49:54 +0300 Message-ID: <4A4B1522.1090000@redhat.com> References: <86802c440906302118oa181b2fm9599137bb2314129@mail.gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Ingo Molnar , jbarnes@virtuousgeek.org, Linux Kernel Mailing List , linux-pci@vger.kernel.org, Marcelo Tosatti , KVM list , Sheng Yang To: Yinghai Lu Return-path: In-Reply-To: <86802c440906302118oa181b2fm9599137bb2314129@mail.gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On 07/01/2009 07:18 AM, Yinghai Lu wrote: > [ 1966.343286] > [ 1966.343288] ======================================================= > [ 1966.356756] [ INFO: possible circular locking dependency detected ] > [ 1966.356759] 2.6.31-rc1-tip-00978-g99123e5-dirty #438 > [ 1966.356761] ------------------------------------------------------- > [ 1966.356764] events/0/387 is trying to acquire lock: > [ 1966.356766] (&kvm->lock){+.+.+.}, at: [] > kvm_assigned_dev_interrupt_work_handler+0x42/0x13a > [ 1966.356786] > [ 1966.356787] but task is already holding lock: > [ 1966.356789] (&match->interrupt_work){+.+...}, at: > [] worker_thread+0x175/0x2f6 > [ 1966.356797] > [ 1966.356798] which lock already depends on the new lock. > [ 1966.356799] > [ 1966.356800] > [ 1966.356801] the existing dependency chain (in reverse order) is: > [ 1966.356803] > [ 1966.356803] -> #1 (&match->interrupt_work){+.+...}: > [ 1966.356809] [] __lock_acquire+0x1396/0x1710 > [ 1966.356817] [] lock_acquire+0xcc/0x104 > [ 1966.356821] [] __cancel_work_timer+0x121/0x247 > [ 1966.356825] [] cancel_work_sync+0x23/0x39 > [ 1966.356828] [] kvm_deassign_irq+0xf1/0x183 > [ 1966.356832] [] kvm_vm_ioctl+0x8c8/0xc1a > [ 1966.356837] [] vfs_ioctl+0x3e/0xa3 > [ 1966.356846] [] do_vfs_ioctl+0x4be/0x511 > [ 1966.356850] [] sys_ioctl+0x56/0x8d > [ 1966.356854] [] system_call_fastpath+0x16/0x1b > [ 1966.356860] [] 0xffffffffffffffff > [ 1966.356869] > [ 1966.356870] -> #0 (&kvm->lock){+.+.+.}: > [ 1966.356872] [] __lock_acquire+0x10cb/0x1710 > [ 1966.356875] [] lock_acquire+0xcc/0x104 > [ 1966.356878] [] mutex_lock_nested+0x75/0x2fa > [ 1966.356886] [] > kvm_assigned_dev_interrupt_work_handler+0x42/0x13a > [ 1966.356890] [] worker_thread+0x1cf/0x2f6 > [ 1966.356892] [] kthread+0xa8/0xb0 > [ 1966.356899] [] child_rip+0xa/0x20 > [ 1966.356906] [] 0xffffffffffffffff > This is already fixed in kvm.git. I'm not sure about merging it to 2.6.30 since the race is very rare and involves device assignment (which is not very mainstream), while the fix touches the core kvm parts. -- error compiling committee.c: too many arguments to function