From: zach@vmware.com
To: akpm@osdl.org, chrisl@vmware.com, davej@codemonkey.org.uk,
hpa@zytor.com, linux-kernel@vger.kernel.org, pratap@vmware.com,
Riley@Williams.Name, zach@vmware.com
Subject: [PATCH] 2/6 i386 serialize-msr
Date: Fri, 29 Jul 2005 21:04:16 -0700 [thread overview]
Message-ID: <200507300404.j6U44GSC005922@zach-dev.vmware.com> (raw)
i386 arch cleanup. Introduce the serialize macro to serialize processor state.
Why the microcode update needs it I am not quite sure, since wrmsr() is already
a serializing instruction, but it is a microcode update, so I will keep the
semantic the same, since this could be a timing workaround. As far as I can
tell, this has always been there since the original microcode update source.
Signed-off-by: Zachary Amsden <zach@vmware.com>
Index: linux-2.6.13/arch/i386/kernel/microcode.c
===================================================================
--- linux-2.6.13.orig/arch/i386/kernel/microcode.c 2005-07-29 11:14:33.000000000 -0700
+++ linux-2.6.13/arch/i386/kernel/microcode.c 2005-07-29 11:16:18.000000000 -0700
@@ -164,7 +164,8 @@
}
wrmsr(MSR_IA32_UCODE_REV, 0, 0);
- __asm__ __volatile__ ("cpuid" : : : "ax", "bx", "cx", "dx");
+ /* XXX needed? wrmsr should serialize unless a chip bug */
+ serialize();
/* get the current revision from MSR 0x8B */
rdmsr(MSR_IA32_UCODE_REV, val[0], uci->rev);
pr_debug("microcode: collect_cpu_info : sig=0x%x, pf=0x%x, rev=0x%x\n",
@@ -377,7 +378,9 @@
(unsigned long) uci->mc->bits >> 16 >> 16);
wrmsr(MSR_IA32_UCODE_REV, 0, 0);
- __asm__ __volatile__ ("cpuid" : : : "ax", "bx", "cx", "dx");
+ /* XXX needed? wrmsr should serialize unless a chip bug */
+ serialize();
+
/* get the current revision from MSR 0x8B */
rdmsr(MSR_IA32_UCODE_REV, val[0], val[1]);
Index: linux-2.6.13/include/asm-i386/processor.h
===================================================================
--- linux-2.6.13.orig/include/asm-i386/processor.h 2005-07-29 11:16:10.000000000 -0700
+++ linux-2.6.13/include/asm-i386/processor.h 2005-07-29 11:16:28.000000000 -0700
@@ -277,6 +277,11 @@
outb((data), 0x23); \
} while (0)
+static inline void serialize(void)
+{
+ __asm__ __volatile__ ("cpuid" : : : "ax", "bx", "cx", "dx");
+}
+
static inline void __monitor(const void *eax, unsigned long ecx,
unsigned long edx)
{
next reply other threads:[~2005-07-30 4:06 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-30 4:04 zach [this message]
2005-07-30 10:32 ` [PATCH] 2/6 i386 serialize-msr Pavel Machek
2005-07-30 17:43 ` Zachary Amsden
2005-07-30 17:59 ` Zwane Mwaikambo
2005-07-30 17:55 ` Zachary Amsden
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=200507300404.j6U44GSC005922@zach-dev.vmware.com \
--to=zach@vmware.com \
--cc=Riley@Williams.Name \
--cc=akpm@osdl.org \
--cc=chrisl@vmware.com \
--cc=davej@codemonkey.org.uk \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=pratap@vmware.com \
/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.