NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: port-i386/48196



Hi,

Please try the following patch:
Index: cpu.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/cpu.c,v
retrieving revision 1.115
diff -u -r1.115 cpu.c
--- cpu.c	18 May 2015 13:09:55 -0000	1.115
+++ cpu.c	16 Sep 2015 23:57:35 -0000
@@ -137,6 +137,8 @@
 	bool sc_wasonline;
 };
 
+#define EFLAGS_IF	__BIT(9)
+
 #ifdef MULTIPROCESSOR
 int mp_cpu_start(struct cpu_info *, paddr_t); 
 void mp_cpu_start_cleanup(struct cpu_info *);
@@ -1277,6 +1279,7 @@
 {
 #ifdef PAE
 	struct cpu_info *ci = curcpu();
+	ulong IntrOK;
 	pd_entry_t *l3_pd = ci->ci_pae_l3_pdir;
 	int i;
 
@@ -1285,11 +1288,14 @@
 	 * while this doesn't block NMIs, it's probably ok as NMIs unlikely
 	 * reload cr3.
 	 */
+	IntrOK = x86_read_flags() & EFLAGS_IF;
 	x86_disable_intr();
 	for (i = 0 ; i < PDP_SIZE; i++) {
 		l3_pd[i] = pmap->pm_pdirpa[i] | PG_V;
 	}
-	x86_enable_intr();
+	
+	if (IntrOK)
+		x86_enable_intr();
 	tlbflush();
 #else /* PAE */
 	lcr3(pmap_pdirpa(pmap, 0));


If you are successful with pae please let me know.

Best regards,

Nat.


Home | Main Index | Thread Index | Old Index