On Wed, Feb 13, 2008 at 04:24:53PM +0100, Jiri Kosina wrote:
On Wed, 13 Feb 2008, Zdenek Kabelac wrote:
I get this bug in my log whenever I start qemu-kvm - I do not use kqemu module - so it's with plain kernel modules. If more details are needed - just ask. (Cpu; C2D)This has been obviously caused by Marcelo's (added to CC) commit 10589a4699b, which added down_write(mmap_sem) to alloc_apic_access_page(), which is called with preempt disabled from vmx_create_vcpu().
BUG: sleeping function called from invalid context at kernel/rwsem.c:48
in_atomic():1, irqs_disabled():0
INFO: lockdep is turned off.
Pid: 26600, comm: qemu-kvm Not tainted 2.6.25-rc1 #29
alloc_apic_access_page() called mutex_lock, so the warning would trigger
before that change.
I think it's fine to allocate the APIC page after put_cpu(), since no vcpu state is required.