Re: BUG: sleeping function called from invalid context at mm/slub.c:793
Am 11.01.2011 11:29, Avi Kivity wrote: Please try out the attached patch. From f3a6041b5bb3bf7c88f9694a66d7f34be2f78845 Mon Sep 17 00:00:00 2001 From: Avi Kivity a...@redhat.com Date: Tue, 11 Jan 2011 12:15:54 +0200 Subject: [PATCH] KVM: Initialize fpu state in preemptible context init_fpu() (which is indirectly called by the fpu switching code) assumes it is in process context. Rather than makeing init_fpu() use an atomic allocation, which can cause a task to be killed, make sure the fpu is already initialized when we enter the run loop. Signed-off-by: Avi Kivity a...@redhat.com --- arch/x86/kernel/i387.c |1 + arch/x86/kvm/x86.c |3 +++ 2 files changed, 4 insertions(+), 0 deletions(-) diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c index 58bb239..e60c38c 100644 --- a/arch/x86/kernel/i387.c +++ b/arch/x86/kernel/i387.c @@ -169,6 +169,7 @@ int init_fpu(struct task_struct *tsk) set_stopped_child_used_math(tsk); return 0; } +EXPORT_SYMBOL_GPL(init_fpu); /* * The xstateregs_active() routine is the same as the fpregs_active() routine, diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 8652643..fd93cda 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -5351,6 +5351,9 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) int r; sigset_t sigsaved; + if (!tsk_used_math(current) init_fpu(current)) + return -ENOMEM; + Could become a rainy day for the kvm-kmod maintainer: For compat support on kernels without init_fpu exported yet, can I trigger the same result by simply issuing an FPU instruction here so that do_device_not_available will perform the allocation? Not really nice, but it doesn't appear to me like there is any code path that would complain about in-kernel FPU usage (provided we don't need math emulation - which is quite likely). Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: BUG: sleeping function called from invalid context at mm/slub.c:793
On 01/13/2011 02:59 PM, Jan Kiszka wrote: @@ -5351,6 +5351,9 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) int r; sigset_t sigsaved; + if (!tsk_used_math(current) init_fpu(current)) + return -ENOMEM; + Could become a rainy day for the kvm-kmod maintainer: For compat support on kernels without init_fpu exported yet, can I trigger the same result by simply issuing an FPU instruction here so that do_device_not_available will perform the allocation? Not really nice, but it doesn't appear to me like there is any code path that would complain about in-kernel FPU usage (provided we don't need math emulation - which is quite likely). That's a pessimization, since it forces the fpu to be switched. If both qemu and the guest don't use the fpu, we can run a guest with some other task's fpu loaded. Oh, but if it's after the check for !tsk_used_math(), it only triggers once, so that's okay. I guess something like mov %%xmm0, %%xmm0 should do nicely. -- error compiling committee.c: too many arguments to function -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: BUG: sleeping function called from invalid context at mm/slub.c:793
On 01/10/2011 09:31 PM, Kirill A. Shutemov wrote: On Mon, Jan 10, 2011 at 10:52:05AM -0600, Christoph Lameter wrote: On Mon, 10 Jan 2011, Kirill A. Shutemov wrote: Every time I run qemu with KVM enabled I get this in dmesg: [ 182.878328] BUG: sleeping function called from invalid context at mm/slub.c:793 [ 182.878339] in_atomic(): 1, irqs_disabled(): 0, pid: 4992, name: qemu [ 182.878355] Pid: 4992, comm: qemu Not tainted 2.6.37+ #31 [ 182.878361] Call Trace: [ 182.878381] [c104e317] ? __might_sleep+0xd0/0xd7 [ 182.878394] [c10ec337] ? slab_pre_alloc_hook.clone.39+0x23/0x27 [ 182.878404] [c10ece27] ? kmem_cache_alloc+0x22/0xc8 [ 182.878414] [c1030221] ? init_fpu+0x44/0x7b fpu_alloc() does call kmem_cache_alloc with GFP_KERNEL although we are in an atomic context. Something like this? --- From 7c6fbfed72e7d22cbdf7393f9711d521e0fbb4a6 Mon Sep 17 00:00:00 2001 From: Kirill A. Shutemovkir...@shutemov.name Date: Mon, 10 Jan 2011 21:24:23 +0200 Subject: [PATCH] x86, fpu_alloc(): call kmem_cache_alloc() with GFP_ATOMIC [ 182.878328] BUG: sleeping function called from invalid context at mm/slub.c:793 [ 182.878339] in_atomic(): 1, irqs_disabled(): 0, pid: 4992, name: qemu [ 182.878355] Pid: 4992, comm: qemu Not tainted 2.6.37+ #31 [ 182.878361] Call Trace: [ 182.878381] [c104e317] ? __might_sleep+0xd0/0xd7 [ 182.878394] [c10ec337] ? slab_pre_alloc_hook.clone.39+0x23/0x27 [ 182.878404] [c10ece27] ? kmem_cache_alloc+0x22/0xc8 [ 182.878414] [c1030221] ? init_fpu+0x44/0x7b [ 182.878426] [c130cc29] ? do_device_not_available+0x0/0x1b [ 182.878435] [c1030221] ? init_fpu+0x44/0x7b [ 182.878444] [c102a588] ? math_state_restore+0x24/0x47 [ 182.878453] [c130cc39] ? do_device_not_available+0x10/0x1b [ 182.878462] [c130c4ab] ? error_code+0x67/0x6c [ 182.878475] [c1012340] ? kvm_load_guest_fpu+0xa1/0xaa [ 182.878484] [c1013364] ? kvm_arch_vcpu_ioctl_run+0x798/0xbe8 [ 182.878496] [c1004523] ? kvm_vcpu_ioctl+0x105/0x46e [ 182.878508] [c107dce0] ? get_futex_key+0x73/0x132 [ 182.878517] [c107e352] ? futex_wake+0xb6/0xc0 [ 182.878527] [c107f8d6] ? do_futex+0x87/0x669 [ 182.878535] [c100441e] ? kvm_vcpu_ioctl+0x0/0x46e [ 182.878545] [c1101ebf] ? do_vfs_ioctl+0x4a0/0x4d1 [ 182.878554] [c130e348] ? do_page_fault+0x2eb/0x316 [ 182.878564] [c1101f36] ? sys_ioctl+0x46/0x68 [ 182.878572] [c130bdc0] ? syscall_call+0x7/0xb [ 182.878585] [c130] ? aer_probe+0x1da/0x274 Signed-off-by: Kirill A. Shutemovkir...@shutemov.name --- arch/x86/include/asm/i387.h |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h index ef32890..8b896dd 100644 --- a/arch/x86/include/asm/i387.h +++ b/arch/x86/include/asm/i387.h @@ -426,7 +426,7 @@ static inline int fpu_alloc(struct fpu *fpu) { if (fpu_allocated(fpu)) return 0; - fpu-state = kmem_cache_alloc(task_xstate_cachep, GFP_KERNEL); + fpu-state = kmem_cache_alloc(task_xstate_cachep, GFP_ATOMIC); if (!fpu-state) return -ENOMEM; WARN_ON((unsigned long)fpu-state 15); If this fails, a task will be killed. I'll patch kvm to ensure that the fpu is initialized. -- error compiling committee.c: too many arguments to function -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: BUG: sleeping function called from invalid context at mm/slub.c:793
On 01/11/2011 11:49 AM, Avi Kivity wrote: On 01/10/2011 09:31 PM, Kirill A. Shutemov wrote: On Mon, Jan 10, 2011 at 10:52:05AM -0600, Christoph Lameter wrote: On Mon, 10 Jan 2011, Kirill A. Shutemov wrote: Every time I run qemu with KVM enabled I get this in dmesg: [ 182.878328] BUG: sleeping function called from invalid context at mm/slub.c:793 [ 182.878339] in_atomic(): 1, irqs_disabled(): 0, pid: 4992, name: qemu [ 182.878355] Pid: 4992, comm: qemu Not tainted 2.6.37+ #31 [ 182.878361] Call Trace: [ 182.878381] [c104e317] ? __might_sleep+0xd0/0xd7 [ 182.878394] [c10ec337] ? slab_pre_alloc_hook.clone.39+0x23/0x27 [ 182.878404] [c10ece27] ? kmem_cache_alloc+0x22/0xc8 [ 182.878414] [c1030221] ? init_fpu+0x44/0x7b fpu_alloc() does call kmem_cache_alloc with GFP_KERNEL although we are in an atomic context. Something like this? --- From 7c6fbfed72e7d22cbdf7393f9711d521e0fbb4a6 Mon Sep 17 00:00:00 2001 From: Kirill A. Shutemovkir...@shutemov.name Date: Mon, 10 Jan 2011 21:24:23 +0200 Subject: [PATCH] x86, fpu_alloc(): call kmem_cache_alloc() with GFP_ATOMIC [ 182.878328] BUG: sleeping function called from invalid context at mm/slub.c:793 [ 182.878339] in_atomic(): 1, irqs_disabled(): 0, pid: 4992, name: qemu [ 182.878355] Pid: 4992, comm: qemu Not tainted 2.6.37+ #31 [ 182.878361] Call Trace: [ 182.878381] [c104e317] ? __might_sleep+0xd0/0xd7 [ 182.878394] [c10ec337] ? slab_pre_alloc_hook.clone.39+0x23/0x27 [ 182.878404] [c10ece27] ? kmem_cache_alloc+0x22/0xc8 [ 182.878414] [c1030221] ? init_fpu+0x44/0x7b [ 182.878426] [c130cc29] ? do_device_not_available+0x0/0x1b [ 182.878435] [c1030221] ? init_fpu+0x44/0x7b [ 182.878444] [c102a588] ? math_state_restore+0x24/0x47 [ 182.878453] [c130cc39] ? do_device_not_available+0x10/0x1b [ 182.878462] [c130c4ab] ? error_code+0x67/0x6c [ 182.878475] [c1012340] ? kvm_load_guest_fpu+0xa1/0xaa [ 182.878484] [c1013364] ? kvm_arch_vcpu_ioctl_run+0x798/0xbe8 [ 182.878496] [c1004523] ? kvm_vcpu_ioctl+0x105/0x46e [ 182.878508] [c107dce0] ? get_futex_key+0x73/0x132 [ 182.878517] [c107e352] ? futex_wake+0xb6/0xc0 [ 182.878527] [c107f8d6] ? do_futex+0x87/0x669 [ 182.878535] [c100441e] ? kvm_vcpu_ioctl+0x0/0x46e [ 182.878545] [c1101ebf] ? do_vfs_ioctl+0x4a0/0x4d1 [ 182.878554] [c130e348] ? do_page_fault+0x2eb/0x316 [ 182.878564] [c1101f36] ? sys_ioctl+0x46/0x68 [ 182.878572] [c130bdc0] ? syscall_call+0x7/0xb [ 182.878585] [c130] ? aer_probe+0x1da/0x274 Signed-off-by: Kirill A. Shutemovkir...@shutemov.name --- arch/x86/include/asm/i387.h |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h index ef32890..8b896dd 100644 --- a/arch/x86/include/asm/i387.h +++ b/arch/x86/include/asm/i387.h @@ -426,7 +426,7 @@ static inline int fpu_alloc(struct fpu *fpu) { if (fpu_allocated(fpu)) return 0; -fpu-state = kmem_cache_alloc(task_xstate_cachep, GFP_KERNEL); +fpu-state = kmem_cache_alloc(task_xstate_cachep, GFP_ATOMIC); if (!fpu-state) return -ENOMEM; WARN_ON((unsigned long)fpu-state 15); If this fails, a task will be killed. I'll patch kvm to ensure that the fpu is initialized. Please try out the attached patch. -- error compiling committee.c: too many arguments to function From f3a6041b5bb3bf7c88f9694a66d7f34be2f78845 Mon Sep 17 00:00:00 2001 From: Avi Kivity a...@redhat.com Date: Tue, 11 Jan 2011 12:15:54 +0200 Subject: [PATCH] KVM: Initialize fpu state in preemptible context init_fpu() (which is indirectly called by the fpu switching code) assumes it is in process context. Rather than makeing init_fpu() use an atomic allocation, which can cause a task to be killed, make sure the fpu is already initialized when we enter the run loop. Signed-off-by: Avi Kivity a...@redhat.com --- arch/x86/kernel/i387.c |1 + arch/x86/kvm/x86.c |3 +++ 2 files changed, 4 insertions(+), 0 deletions(-) diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c index 58bb239..e60c38c 100644 --- a/arch/x86/kernel/i387.c +++ b/arch/x86/kernel/i387.c @@ -169,6 +169,7 @@ int init_fpu(struct task_struct *tsk) set_stopped_child_used_math(tsk); return 0; } +EXPORT_SYMBOL_GPL(init_fpu); /* * The xstateregs_active() routine is the same as the fpregs_active() routine, diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 8652643..fd93cda 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -5351,6 +5351,9 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) int r; sigset_t sigsaved; + if (!tsk_used_math(current) init_fpu(current)) + return -ENOMEM; + if (vcpu-sigset_active) sigprocmask(SIG_SETMASK, vcpu-sigset, sigsaved); -- 1.7.1
Re: BUG: sleeping function called from invalid context at mm/slub.c:793
On Tue, Jan 11, 2011 at 12:29:41PM +0200, Avi Kivity wrote: On 01/11/2011 11:49 AM, Avi Kivity wrote: On 01/10/2011 09:31 PM, Kirill A. Shutemov wrote: On Mon, Jan 10, 2011 at 10:52:05AM -0600, Christoph Lameter wrote: On Mon, 10 Jan 2011, Kirill A. Shutemov wrote: Every time I run qemu with KVM enabled I get this in dmesg: [ 182.878328] BUG: sleeping function called from invalid context at mm/slub.c:793 [ 182.878339] in_atomic(): 1, irqs_disabled(): 0, pid: 4992, name: qemu [ 182.878355] Pid: 4992, comm: qemu Not tainted 2.6.37+ #31 [ 182.878361] Call Trace: [ 182.878381] [c104e317] ? __might_sleep+0xd0/0xd7 [ 182.878394] [c10ec337] ? slab_pre_alloc_hook.clone.39+0x23/0x27 [ 182.878404] [c10ece27] ? kmem_cache_alloc+0x22/0xc8 [ 182.878414] [c1030221] ? init_fpu+0x44/0x7b fpu_alloc() does call kmem_cache_alloc with GFP_KERNEL although we are in an atomic context. Something like this? --- From 7c6fbfed72e7d22cbdf7393f9711d521e0fbb4a6 Mon Sep 17 00:00:00 2001 From: Kirill A. Shutemovkir...@shutemov.name Date: Mon, 10 Jan 2011 21:24:23 +0200 Subject: [PATCH] x86, fpu_alloc(): call kmem_cache_alloc() with GFP_ATOMIC [ 182.878328] BUG: sleeping function called from invalid context at mm/slub.c:793 [ 182.878339] in_atomic(): 1, irqs_disabled(): 0, pid: 4992, name: qemu [ 182.878355] Pid: 4992, comm: qemu Not tainted 2.6.37+ #31 [ 182.878361] Call Trace: [ 182.878381] [c104e317] ? __might_sleep+0xd0/0xd7 [ 182.878394] [c10ec337] ? slab_pre_alloc_hook.clone.39+0x23/0x27 [ 182.878404] [c10ece27] ? kmem_cache_alloc+0x22/0xc8 [ 182.878414] [c1030221] ? init_fpu+0x44/0x7b [ 182.878426] [c130cc29] ? do_device_not_available+0x0/0x1b [ 182.878435] [c1030221] ? init_fpu+0x44/0x7b [ 182.878444] [c102a588] ? math_state_restore+0x24/0x47 [ 182.878453] [c130cc39] ? do_device_not_available+0x10/0x1b [ 182.878462] [c130c4ab] ? error_code+0x67/0x6c [ 182.878475] [c1012340] ? kvm_load_guest_fpu+0xa1/0xaa [ 182.878484] [c1013364] ? kvm_arch_vcpu_ioctl_run+0x798/0xbe8 [ 182.878496] [c1004523] ? kvm_vcpu_ioctl+0x105/0x46e [ 182.878508] [c107dce0] ? get_futex_key+0x73/0x132 [ 182.878517] [c107e352] ? futex_wake+0xb6/0xc0 [ 182.878527] [c107f8d6] ? do_futex+0x87/0x669 [ 182.878535] [c100441e] ? kvm_vcpu_ioctl+0x0/0x46e [ 182.878545] [c1101ebf] ? do_vfs_ioctl+0x4a0/0x4d1 [ 182.878554] [c130e348] ? do_page_fault+0x2eb/0x316 [ 182.878564] [c1101f36] ? sys_ioctl+0x46/0x68 [ 182.878572] [c130bdc0] ? syscall_call+0x7/0xb [ 182.878585] [c130] ? aer_probe+0x1da/0x274 Signed-off-by: Kirill A. Shutemovkir...@shutemov.name --- arch/x86/include/asm/i387.h |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h index ef32890..8b896dd 100644 --- a/arch/x86/include/asm/i387.h +++ b/arch/x86/include/asm/i387.h @@ -426,7 +426,7 @@ static inline int fpu_alloc(struct fpu *fpu) { if (fpu_allocated(fpu)) return 0; -fpu-state = kmem_cache_alloc(task_xstate_cachep, GFP_KERNEL); +fpu-state = kmem_cache_alloc(task_xstate_cachep, GFP_ATOMIC); if (!fpu-state) return -ENOMEM; WARN_ON((unsigned long)fpu-state 15); If this fails, a task will be killed. I'll patch kvm to ensure that the fpu is initialized. Please try out the attached patch. It helps. Reported-and-tested-by: Kirill A. Shutemov k...@openvz.org Thanks. -- error compiling committee.c: too many arguments to function From f3a6041b5bb3bf7c88f9694a66d7f34be2f78845 Mon Sep 17 00:00:00 2001 From: Avi Kivity a...@redhat.com Date: Tue, 11 Jan 2011 12:15:54 +0200 Subject: [PATCH] KVM: Initialize fpu state in preemptible context init_fpu() (which is indirectly called by the fpu switching code) assumes it is in process context. Rather than makeing init_fpu() use an atomic allocation, which can cause a task to be killed, make sure the fpu is already initialized when we enter the run loop. Signed-off-by: Avi Kivity a...@redhat.com --- arch/x86/kernel/i387.c |1 + arch/x86/kvm/x86.c |3 +++ 2 files changed, 4 insertions(+), 0 deletions(-) diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c index 58bb239..e60c38c 100644 --- a/arch/x86/kernel/i387.c +++ b/arch/x86/kernel/i387.c @@ -169,6 +169,7 @@ int init_fpu(struct task_struct *tsk) set_stopped_child_used_math(tsk); return 0; } +EXPORT_SYMBOL_GPL(init_fpu); /* * The xstateregs_active() routine is the same as the fpregs_active() routine, diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 8652643..fd93cda 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -5351,6 +5351,9 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) int r;
Re: BUG: sleeping function called from invalid context at mm/slub.c:793
On Tue, Jan 11, 2011 at 1:13 PM, Kirill A. Shutemov kir...@shutemov.name wrote: Please try out the attached patch. It helps. Reported-and-tested-by: Kirill A. Shutemov k...@openvz.org Acked-by: Pekka Enberg penb...@kernel.org -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: BUG: sleeping function called from invalid context at mm/slub.c:793
Reviewed-by: Christoph Lameter c...@linux.com -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: BUG: sleeping function called from invalid context at mm/slub.c:793
On Mon, 10 Jan 2011, Kirill A. Shutemov wrote: Every time I run qemu with KVM enabled I get this in dmesg: [ 182.878328] BUG: sleeping function called from invalid context at mm/slub.c:793 [ 182.878339] in_atomic(): 1, irqs_disabled(): 0, pid: 4992, name: qemu [ 182.878355] Pid: 4992, comm: qemu Not tainted 2.6.37+ #31 [ 182.878361] Call Trace: [ 182.878381] [c104e317] ? __might_sleep+0xd0/0xd7 [ 182.878394] [c10ec337] ? slab_pre_alloc_hook.clone.39+0x23/0x27 [ 182.878404] [c10ece27] ? kmem_cache_alloc+0x22/0xc8 [ 182.878414] [c1030221] ? init_fpu+0x44/0x7b fpu_alloc() does call kmem_cache_alloc with GFP_KERNEL although we are in an atomic context. -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: BUG: sleeping function called from invalid context at mm/slub.c:793
On Mon, Jan 10, 2011 at 10:52:05AM -0600, Christoph Lameter wrote: On Mon, 10 Jan 2011, Kirill A. Shutemov wrote: Every time I run qemu with KVM enabled I get this in dmesg: [ 182.878328] BUG: sleeping function called from invalid context at mm/slub.c:793 [ 182.878339] in_atomic(): 1, irqs_disabled(): 0, pid: 4992, name: qemu [ 182.878355] Pid: 4992, comm: qemu Not tainted 2.6.37+ #31 [ 182.878361] Call Trace: [ 182.878381] [c104e317] ? __might_sleep+0xd0/0xd7 [ 182.878394] [c10ec337] ? slab_pre_alloc_hook.clone.39+0x23/0x27 [ 182.878404] [c10ece27] ? kmem_cache_alloc+0x22/0xc8 [ 182.878414] [c1030221] ? init_fpu+0x44/0x7b fpu_alloc() does call kmem_cache_alloc with GFP_KERNEL although we are in an atomic context. Something like this? --- From 7c6fbfed72e7d22cbdf7393f9711d521e0fbb4a6 Mon Sep 17 00:00:00 2001 From: Kirill A. Shutemov kir...@shutemov.name Date: Mon, 10 Jan 2011 21:24:23 +0200 Subject: [PATCH] x86, fpu_alloc(): call kmem_cache_alloc() with GFP_ATOMIC [ 182.878328] BUG: sleeping function called from invalid context at mm/slub.c:793 [ 182.878339] in_atomic(): 1, irqs_disabled(): 0, pid: 4992, name: qemu [ 182.878355] Pid: 4992, comm: qemu Not tainted 2.6.37+ #31 [ 182.878361] Call Trace: [ 182.878381] [c104e317] ? __might_sleep+0xd0/0xd7 [ 182.878394] [c10ec337] ? slab_pre_alloc_hook.clone.39+0x23/0x27 [ 182.878404] [c10ece27] ? kmem_cache_alloc+0x22/0xc8 [ 182.878414] [c1030221] ? init_fpu+0x44/0x7b [ 182.878426] [c130cc29] ? do_device_not_available+0x0/0x1b [ 182.878435] [c1030221] ? init_fpu+0x44/0x7b [ 182.878444] [c102a588] ? math_state_restore+0x24/0x47 [ 182.878453] [c130cc39] ? do_device_not_available+0x10/0x1b [ 182.878462] [c130c4ab] ? error_code+0x67/0x6c [ 182.878475] [c1012340] ? kvm_load_guest_fpu+0xa1/0xaa [ 182.878484] [c1013364] ? kvm_arch_vcpu_ioctl_run+0x798/0xbe8 [ 182.878496] [c1004523] ? kvm_vcpu_ioctl+0x105/0x46e [ 182.878508] [c107dce0] ? get_futex_key+0x73/0x132 [ 182.878517] [c107e352] ? futex_wake+0xb6/0xc0 [ 182.878527] [c107f8d6] ? do_futex+0x87/0x669 [ 182.878535] [c100441e] ? kvm_vcpu_ioctl+0x0/0x46e [ 182.878545] [c1101ebf] ? do_vfs_ioctl+0x4a0/0x4d1 [ 182.878554] [c130e348] ? do_page_fault+0x2eb/0x316 [ 182.878564] [c1101f36] ? sys_ioctl+0x46/0x68 [ 182.878572] [c130bdc0] ? syscall_call+0x7/0xb [ 182.878585] [c130] ? aer_probe+0x1da/0x274 Signed-off-by: Kirill A. Shutemov kir...@shutemov.name --- arch/x86/include/asm/i387.h |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h index ef32890..8b896dd 100644 --- a/arch/x86/include/asm/i387.h +++ b/arch/x86/include/asm/i387.h @@ -426,7 +426,7 @@ static inline int fpu_alloc(struct fpu *fpu) { if (fpu_allocated(fpu)) return 0; - fpu-state = kmem_cache_alloc(task_xstate_cachep, GFP_KERNEL); + fpu-state = kmem_cache_alloc(task_xstate_cachep, GFP_ATOMIC); if (!fpu-state) return -ENOMEM; WARN_ON((unsigned long)fpu-state 15); -- 1.7.3.4 -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html