All of lore.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi@qumranet.com>
To: Paolo Ornati <ornati@fastwebnet.it>
Cc: Michal Piotrowski <michal.k.k.piotrowski@gmail.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	kvm-devel@lists.sourceforge.net
Subject: Re: WARNING: at arch/x86_64/kernel/smp.c:379 smp_call_function_single()
Date: Sun, 19 Aug 2007 13:55:13 +0300	[thread overview]
Message-ID: <46C82191.90300@qumranet.com> (raw)
In-Reply-To: <46C05017.3050806@qumranet.com>

[-- Attachment #1: Type: text/plain, Size: 2180 bytes --]

Avi Kivity wrote:
> Paolo Ornati wrote:
>> On Fri, 10 Aug 2007 14:04:33 +0200
>> "Michal Piotrowski" <michal.k.k.piotrowski@gmail.com> wrote:
>>
>>  
>>>> [  756.707601] Disabling non-boot CPUs ...
>>>> [  756.712034] kvm: disabling virtualization on CPU1
>>>> [  756.712037] WARNING: at arch/x86_64/kernel/smp.c:379 
>>>> smp_call_function_single()
>>>> [  756.712039]
>>>> [  756.712039] Call Trace:
>>>> [  756.712046]  [<ffffffff8021d159>] 
>>>> smp_call_function_single+0x119/0x120
>>>> [  756.712050]  [<ffffffff80542169>] thread_return+0x1bf/0x626
>>>> [  756.712054]  [<ffffffff80234b5b>] sys_sched_yield+0x2b/0x80
>>>> [  756.712057]  [<ffffffff8043684b>] kvm_cpu_hotplug+0x4b/0xa0
>>>> [  756.712060]  [<ffffffff80247c83>] notifier_call_chain+0x53/0x80
>>>> [  756.712062]  [<ffffffff80247d09>] 
>>>> __raw_notifier_call_chain+0x9/0x10
>>>> [  756.712065]  [<ffffffff80247d21>] raw_notifier_call_chain+0x11/0x20
>>>> [  756.712068]  [<ffffffff8026184b>] take_cpu_down+0x1b/0x30
>>>> [  756.712071]  [<ffffffff802699d2>] do_stop+0xd2/0x150
>>>> [  756.712073]  [<ffffffff80269900>] do_stop+0x0/0x150
>>>> [  756.712076]  [<ffffffff8024f84d>] kthread+0x4d/0x80
>>>> [  756.712079]  [<ffffffff8020cb28>] child_rip+0xa/0x12
>>>> [  756.712081]  [<ffffffff8020c23c>] restore_args+0x0/0x30
>>>> [  756.712084]  [<ffffffff8024f800>] kthread+0x0/0x80
>>>> [  756.712086]  [<ffffffff8020cb1e>] child_rip+0x0/0x12
>>>> [  756.712087]
>>>> [  756.815693] CPU 1 is now offline
>>>> [  756.815697] lockdep: not fixing up alternatives.
>>>> [  756.819276] CPU1 is down
>>>>  
>>>>       
>>> Added to KR list, thanks for the report.
>>>     
>>
>>
>> I've bisected it down to this commit:
>>
>> cec9ad279b66793bee0b5009b7ca311060061efd
>>
>>     KVM: Use CPU_DYING for disabling virtualization
>>         Only at the CPU_DYING stage can we be sure that no user 
>> process will
>>     be scheduled onto the cpu and oops when trying to use virtualization
>>     extensions.
>>
>>   
>
> Thanks.  I'll have a go at it.
>
>

Sorry about the delay -- here is the fairly simple patch.  A Tested-by: 
would be appreciated.


-- 
error compiling committee.c: too many arguments to function


[-- Attachment #2: 0001-KVM-Avoid-calling-smp_call_function_single-with-i.patch --]
[-- Type: text/x-patch, Size: 1283 bytes --]

>From a8c346b28695b938018f4bafd458f6d3e70c36e3 Mon Sep 17 00:00:00 2001
From: Avi Kivity <avi@qumranet.com>
Date: Sun, 19 Aug 2007 13:51:00 +0300
Subject: [PATCH] KVM: Avoid calling smp_call_function_single() with interrupts disabled

When taking a cpu down, we need to hardware_disable() it.  Unfortunately,
the CPU_DYING notifier is called with interrupts disabled, which means
we can't use smp_call_function_single().  Fortunately, the CPU_DYING notifier
is always called on the dying cpu, so we don't need to use the function at
all and can simply call hardware_disable() directly.

Signed-off-by: Avi Kivity <avi@qumranet.com>
---
 drivers/kvm/kvm_main.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c
index 9685609..cd05579 100644
--- a/drivers/kvm/kvm_main.c
+++ b/drivers/kvm/kvm_main.c
@@ -2974,6 +2974,10 @@ static int kvm_cpu_hotplug(struct notifier_block *notifier, unsigned long val,
 	switch (val) {
 	case CPU_DYING:
 	case CPU_DYING_FROZEN:
+		printk(KERN_INFO "kvm: disabling virtualization on CPU%d\n",
+		       cpu);
+		hardware_disable(NULL);
+		break;
 	case CPU_UP_CANCELED:
 	case CPU_UP_CANCELED_FROZEN:
 		printk(KERN_INFO "kvm: disabling virtualization on CPU%d\n",
-- 
1.5.2.4


  reply	other threads:[~2007-08-19 10:55 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-10 11:41 WARNING: at arch/x86_64/kernel/smp.c:379 smp_call_function_single() Paolo Ornati
2007-08-10 12:04 ` Michal Piotrowski
2007-08-10 12:04   ` Michal Piotrowski
2007-08-13 11:42   ` Paolo Ornati
2007-08-13 11:42     ` Paolo Ornati
2007-08-13 12:35     ` Avi Kivity
2007-08-13 12:35       ` Avi Kivity
2007-08-19 10:55       ` Avi Kivity [this message]
2007-08-19 12:51         ` Paolo Ornati
2007-08-19 12:51           ` Paolo Ornati

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=46C82191.90300@qumranet.com \
    --to=avi@qumranet.com \
    --cc=kvm-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michal.k.k.piotrowski@gmail.com \
    --cc=ornati@fastwebnet.it \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.