svn commit: r217506 - in head/sys: amd64/amd64 i386/i386
Jung-uk Kim
jkim at FreeBSD.org
Mon Jan 17 17:30:35 UTC 2011
Author: jkim
Date: Mon Jan 17 17:30:35 2011
New Revision: 217506
URL: http://svn.freebsd.org/changeset/base/217506
Log:
Avoid preemption while manipulating CRs and MTRRs.
Tested by: ariff
Modified:
head/sys/amd64/amd64/amd64_mem.c
head/sys/i386/i386/i686_mem.c
Modified: head/sys/amd64/amd64/amd64_mem.c
==============================================================================
--- head/sys/amd64/amd64/amd64_mem.c Mon Jan 17 17:25:46 2011 (r217505)
+++ head/sys/amd64/amd64/amd64_mem.c Mon Jan 17 17:30:35 2011 (r217506)
@@ -311,6 +311,8 @@ amd64_mrstoreone(void *arg)
mrd = sc->mr_desc;
+ critical_enter();
+
/* Disable PGE. */
cr4 = rcr4();
load_cr4(cr4 & ~CR4_PGE);
@@ -399,6 +401,8 @@ amd64_mrstoreone(void *arg)
/* Restore caches and PGE. */
load_cr0(cr0);
load_cr4(cr4);
+
+ critical_exit();
}
/*
Modified: head/sys/i386/i386/i686_mem.c
==============================================================================
--- head/sys/i386/i386/i686_mem.c Mon Jan 17 17:25:46 2011 (r217505)
+++ head/sys/i386/i386/i686_mem.c Mon Jan 17 17:30:35 2011 (r217506)
@@ -305,6 +305,8 @@ i686_mrstoreone(void *arg)
mrd = sc->mr_desc;
+ critical_enter();
+
/* Disable PGE. */
cr4 = rcr4();
load_cr4(cr4 & ~CR4_PGE);
@@ -393,6 +395,8 @@ i686_mrstoreone(void *arg)
/* Restore caches and PGE. */
load_cr0(cr0);
load_cr4(cr4);
+
+ critical_exit();
}
/*
More information about the svn-src-head
mailing list