Subject: Re: panic 'null page frame' on SS5 / NetBSD 1.3
To: None <erik@mediator.uni-c.dk>
From: Paul Kranenburg <pk@cs.few.eur.nl>
List: port-sparc
Date: 08/26/1998 17:19:43
> Upgrading is not really an options at this time, but backporting a patch
> from a later system may be.
> 

Apply this:

Index: iommureg.h
===================================================================
RCS file: /cvsroot/src/sys/arch/sparc/sparc/iommureg.h,v
retrieving revision 1.3
retrieving revision 1.3.2.2
diff -c -r1.3 -r1.3.2.2
*** iommureg.h	1997/09/14 19:16:04	1.3
--- iommureg.h	1998/05/05 11:59:06	1.3.2.2
***************
*** 1,4 ****
! /*	$NetBSD: iommureg.h,v 1.3 1997/09/14 19:16:04 pk Exp $ */
  
  /*
   * Copyright (c) 1996
--- 1,4 ----
! /*	$NetBSD: iommureg.h,v 1.3.2.2 1998/05/05 11:59:06 mycroft Exp $ */
  
  /*
   * Copyright (c) 1996
***************
*** 59,69 ****
--- 59,76 ----
  #define IOMMU_FLPG_VADDR	0xfffff000
  #define IOMMU_FLUSH_MASK	0xfffff000
  
+ /*
+  * A few empty cycles after touching the IOMMU registers seems to
+  * avoid utter lossage on some machines (SS4s & SS5s) where our caller
+  * would see some of its local (`%lx') registers trashed.
+  */
  #define IOMMU_FLUSHPAGE(sc, va)	do {				\
  	(sc)->sc_reg->io_flushpage = (va) & IOMMU_FLUSH_MASK;	\
+ 	__asm("nop;nop;nop;");					\
  } while (0);
  #define IOMMU_FLUSHALL(sc)	do {				\
  	(sc)->sc_reg->io_flashclear = 0;			\
+ 	__asm("nop;nop;nop;");					\
  } while (0)
  
  /* to pte.h ? */