From: Zachary Amsden <zach@vmware.com>
To: caglar@pardus.org.tr, Andi Kleen <ak@suse.de>,
lkml <linux-kernel@vger.kernel.org>,
Virtualization Mailing List <virtualization@lists.osdl.org>,
Greg KH <greg@kroah.com>, Andrew Morton <akpm@osdl.org>
Subject: [PATCH] Fix potential interrupts during alternative patching [was Re: [RFC] Avoid PIT SMP lockups]
Date: Thu, 19 Oct 2006 01:00:55 -0700 [thread overview]
Message-ID: <453730B7.3040906@vmware.com> (raw)
In-Reply-To: <200610171505.53576.caglar@pardus.org.tr>
[-- Attachment #1: Type: text/plain, Size: 739 bytes --]
S.Çağlar Onur wrote:
> 17 Eki 2006 Sal 01:21 tarihinde, S.Çağlar Onur şunları yazmıştı:
>
>> 17 Eki 2006 Sal 01:17 tarihinde, Zachary Amsden şunları yazmıştı:
>>
>>> My nasty quick patch might not apply - the only tree I've got is a very
>>> hacked 2.6.18-rc6-mm1+local-patches thing, but the fix should be obvious
>>> enough.
>>>
>> Ok, I'll test and report back...
>>
>
> Both 2.6.18 and 2.6.18.1 boots without any problem (and of course without
> noreplacement workarund) with that patch.
>
> Cheers
>
So this patch is an obvious bugfix - please apply, and to stable as
well. I'm not sure when this broke, but taking interrupts in the middle
of self modifying code is not a pretty sight.
Zach
[-- Attachment #2: hotfix-alternative-irq-safety.patch --]
[-- Type: text/plain, Size: 1303 bytes --]
Interrupts must be disabled during alternative instruction patching.
On systems with high timer IRQ rates, or when running in an emulator,
timing differences can result in random kernel panics because of
running partially patched instructions. This doesn't yet fix NMIs,
which requires extricating the patch code from the late bug checking
and is logically separate (and also less likely to cause problems).
Signed-off-by: Zachary Amsden <zach@vmware.com>
diff -r 773ac0ebfeb4 arch/i386/kernel/alternative.c
--- a/arch/i386/kernel/alternative.c Wed Oct 18 06:03:56 2006 -0700
+++ b/arch/i386/kernel/alternative.c Wed Oct 18 06:07:03 2006 -0700
@@ -344,6 +344,7 @@ void alternatives_smp_switch(int smp)
void __init alternative_instructions(void)
{
+ unsigned long flags;
if (no_replacement) {
printk(KERN_INFO "(SMP-)alternatives turned off\n");
free_init_pages("SMP alternatives",
@@ -351,6 +352,8 @@ void __init alternative_instructions(voi
(unsigned long)__smp_alt_end);
return;
}
+
+ local_irq_save(flags);
apply_alternatives(__alt_instructions, __alt_instructions_end);
/* switch to patch-once-at-boottime-only mode and free the
@@ -386,4 +389,5 @@ void __init alternative_instructions(voi
alternatives_smp_switch(0);
}
#endif
-}
+ local_irq_restore(flags);
+}
next parent reply other threads:[~2006-10-19 8:00 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1160170736.6140.31.camel@localhost.localdomain>
[not found] ` <453404F6.5040202@vmware.com>
[not found] ` <200610170121.51492.caglar@pardus.org.tr>
[not found] ` <200610171505.53576.caglar@pardus.org.tr>
2006-10-19 8:00 ` Zachary Amsden [this message]
2006-10-19 8:49 ` [PATCH] Fix potential interrupts during alternative patching [was Re: [RFC] Avoid PIT SMP lockups] Jeremy Fitzhardinge
2006-10-19 9:00 ` Zachary Amsden
2006-10-20 10:36 ` S.Çağlar Onur
2006-10-20 5:25 ` Greg KH
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=453730B7.3040906@vmware.com \
--to=zach@vmware.com \
--cc=ak@suse.de \
--cc=akpm@osdl.org \
--cc=caglar@pardus.org.tr \
--cc=greg@kroah.com \
--cc=linux-kernel@vger.kernel.org \
--cc=virtualization@lists.osdl.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).