*BSD News Article 23669


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!munnari.oz.au!spool.mu.edu!agate!dog.ee.lbl.gov!horse.ee.lbl.gov!torek
From: torek@horse.ee.lbl.gov (Chris Torek)
Newsgroups: comp.unix.bsd
Subject: Re: BSD44 on a SPARC questions
Date: 11 Nov 1993 22:08:44 GMT
Organization: Lawrence Berkeley Laboratory, Berkeley CA
Lines: 106
Message-ID: <35439@dog.ee.lbl.gov>
References: <CG8p31.zJK@austin.ibm.com> <35396@dog.ee.lbl.gov> <CGCCLz.pL2@austin.ibm.com>
NNTP-Posting-Host: 128.3.112.15

In article <CGCCLz.pL2@austin.ibm.com> roger@wizards.austin.ibm.com
(Roger Florkowski) writes:
>[hang with 8 MB]

The Mach 2.5 VM, as adapted into BSD, is prone to hangs.  There may
also be an as-yet-undiscovered race somewhere in the sparc code.

>[problems compiling intr.c] ... but [<machine/instr.h>] is only pulled
>in if DIAGNOSTIC is defined.....  and I was attempting a compile w/o
>DIAGNOSTIC defined.

Ah.  Obviously I never tried a non-DIAGNOSTIC kernel.  The inclusion
should be unconditional.  Thanks, fixed now (see below).

>Ok, so are you saying the 'post-4.4BSD' version supports BSD labels ?

Well, no and yes.  We (mostly Craig Leres) did some additional work at
LBL in order to be able to read HP Magneto-Optic disks, as written under
4.4BSD by hp300 boxes, and part of that involved making sure the BSD
label reading code works.  There is still no driver code for writing
labels.

In any case, since we use the Sun boot loaders (which are not supplied
with the distribution), you must use SunOS to install the Sun boot;
and the Sun boot requires a Sun-style disk label (as far as I know---I
have not actually *tried* it to see if it goes on anyway after failing
to checksum a Sun label).

(If you were to boot diskless, from a SunOS server, it could be made
to work, I suppose....  Note that the Sun diskless boot loader is
perfectly happy with loading a BSD kernel, but the BSD kernel will
notice you booted from the network and try to mount its root file
system via NFS.)

>Are there any interesting changes for the SPARC that have happened
>since the 4.4 release that I could/should use, and how do I get them ?

Lots.  Patches can be found on ftp.ee.lbl.gov (the patches are not
up-to-date with the very latest stuff, because the very latest stuff
is quite untested) in the `sparc-4.4' directory.

The intr.c patch below now supersedes the one in the sparc-4.4 patches.

*** /nbsd/usr/src/sys/sparc/sparc/intr.c	Fri Jun 11 15:16:33 1993
--- ./intr.c	Thu Nov 11 13:48:19 1993
***************
*** 40,46 ****
   * SUCH DAMAGE.
   *
!  *	@(#)intr.c	8.1 (Berkeley) 6/11/93
   *
!  * from: $Header: intr.c,v 1.20 92/11/26 03:04:53 torek Exp $ (LBL)
   */
  
--- 40,46 ----
   * SUCH DAMAGE.
   *
!  *	@(#)intr.c	8.3 (Berkeley) 11/11/93
   *
!  * from: $Header: intr.c,v 1.22 93/09/26 19:48:06 torek Exp $ (LBL)
   */
  
***************
*** 48,51 ****
--- 48,53 ----
  #include <sys/kernel.h>
  
+ #include <vm/vm.h>
+ 
  #include <net/netisr.h>
  
***************
*** 52,58 ****
  #include <machine/cpu.h>
  #include <machine/ctlreg.h>
- #ifdef DIAGNOSTIC
  #include <machine/instr.h>
- #endif
  #include <machine/trap.h>
  
--- 54,58 ----
***************
*** 73,77 ****
  	    fp->ipl, fp->pc, fp->npc, fp->psr, PSR_BITS);
  	timesince = time.tv_sec - straytime;
- 	straytime = time.tv_sec;
  	if (timesince <= 10) {
  		if (++nstray > 9)
--- 73,76 ----
***************
*** 251,257 ****
--- 250,260 ----
  		    I_MOVi(I_L3, level), I_BA(0, displ), I_RDPSR(I_L0));
  #endif
+ 	/* kernel text is write protected -- let us in for a moment */
+ 	pmap_changeprot(kernel_pmap, (vm_offset_t)tv,
+ 	    VM_PROT_READ|VM_PROT_WRITE, 1);
  	tv->tv_instr[0] = I_SETHI(I_L3, hi22);	/* sethi %hi(vec),%l3 */
  	tv->tv_instr[1] = I_JMPLri(I_G0, I_L3, lo10);/* jmpl %l3+%lo(vec),%g0 */
  	tv->tv_instr[2] = I_RDPSR(I_L0);	/* mov %psr, %l0 */
+ 	pmap_changeprot(kernel_pmap, (vm_offset_t)tv, VM_PROT_READ, 1);
  	fastvec |= 1 << level;
  	splx(s);
-- 
In-Real-Life: Chris Torek, Lawrence Berkeley Lab CSE/EE (+1 510 486 5427)
Berkeley, CA		Domain:	torek@ee.lbl.gov