Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Nov 1996 16:48:13 -0700
From:      Steve Passe <smp@csn.net>
To:        freebsd-smp@freebsd.org
Subject:   Re: SMP-current hang problems. 
Message-ID:  <199611292348.QAA00819@clem.systemsix.com>

next in thread | raw e-mail | index | archive | help
Hi,

here's the patch I promised for i386/i386/mpboot.s.  It doesn't break anything
on my system, but since mine works already I can't promise it will help
anything either.

let me know what it does...

-------------------------------------- cut ------------------------------------
*** mpboot.s~	Fri Nov 29 15:52:31 1996
--- mpboot.s	Fri Nov 29 16:19:37 1996
***************
*** 63,68 ****
--- 63,78 ----
  	 * Wait for the booting CPU to signal startup
  	 */
  mp_begin:	/* now running relocated at KERNBASE */
+ 	movl	_apic_base, %esi
+ 
+ 	movl	APIC_SVR(%esi), %eax		/* get spurious vector reg. */
+ 	andl	$~0x00000100, %eax		/* disable the APIC */
+ 	movl	%eax, APIC_SVR(%esi)
+ 
+ 	movl	APIC_VER(%esi), %eax
+ 	movl	%eax, _cpuApicVersions
+ 	incl	_mp_ncpus
+ 
  	/* One at a time, we are running on the shared mp_stk */
  	/* This is the Intel reccomended semaphore method */
  	movb	$0xff, %al
***************
*** 82,93 ****
  	movl	APIC_TPR(%esi), %eax		/* get current TPR */
  	orl	$0x000000ff, %eax		/* block all INTs */
  	movl	%eax, APIC_TPR(%esi)		/* put new TPR */
- 	/* :EMXIF **/
  
- 	movl	_apic_base, %esi
- 	movl	APIC_SVR(%esi), %eax		/* get spurious vector reg. */
- 	orl	$0x00000100, %eax		/* This bit enables the APIC */
- 	movl	%eax, APIC_SVR(%esi)
  #if 0	/* the alternate CPU is not ready to receive interrupts yet */
  	movl	APIC_LVT1(%esi), %eax		/* Setup LVT1 as ExtINT */
  	andl	$0xfffe58ff, %eax
--- 92,98 ----
***************
*** 99,107 ****
  	orl	$0xffff0400, %eax
  	movl	%eax, APIC_LVT2(%esi)
  
! 	movl	APIC_VER(%esi), %eax
! 	movl	%eax, _cpuApicVersions
! 	incl	_mp_ncpus
  
  #if 0
  1:	movl	_smp_active, %eax
--- 104,113 ----
  	orl	$0xffff0400, %eax
  	movl	%eax, APIC_LVT2(%esi)
  
! 	movl	APIC_SVR(%esi), %eax		/* get spurious vector reg. */
! 	orl	$0x00000100, %eax		/* This bit enables the APIC */
! 	movl	%eax, APIC_SVR(%esi)
! 	/* :EMXIF **/
  
  #if 0
  1:	movl	_smp_active, %eax
-------------------------------------- cut ------------------------------------
--
Steve Passe	| powered by
smp@csn.net	|            FreeBSD




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199611292348.QAA00819>