From mboxrd@z Thu Jan 1 00:00:00 1970 From: jan.glauber@caviumnetworks.com (Jan Glauber) Date: Fri, 4 May 2018 13:03:44 +0200 Subject: Potential deadlock in vgic Message-ID: <20180504110343.GA10968@hc> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi all, enabling lockdep I see the following reported in the host when I start a kvm guest: [12399.954245] CPU0 CPU1 [12399.958762] ---- ---- [12399.963279] lock(&(&dist->lpi_list_lock)->rlock); [12399.968146] local_irq_disable(); [12399.974052] lock(&(&vgic_cpu->ap_list_lock)->rlock); [12399.981696] lock(&(&dist->lpi_list_lock)->rlock); [12399.989081] [12399.991688] lock(&(&vgic_cpu->ap_list_lock)->rlock); [12399.996989] *** DEADLOCK *** [12400.002897] 2 locks held by qemu-system-aar/5597: [12400.007587] #0: 0000000042beb9dc (&vcpu->mutex){+.+.}, at: kvm_vcpu_ioctl+0x7c/0xa68 [12400.015411] #1: 00000000c45d644a (&(&vgic_cpu->ap_list_lock)->rlock){-.-.}, at: kvm_vgic_sync_hwstate+0x8c/0x328 There is nothing unusual in my config or qemu parameters, I can upload these if needed. I see this on ThunderX and ThunderX2 and also with older kernels (4.13+ distribution kernel). I tried making the lpi_list_lock irq safe but that just leads to different warnings. The locking here seems to be quite sophisticated and I'm not familiar with it. Full dmesg: https://paste.ubuntu.com/p/BZ5QTg62Ym/ --Jan