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 ? */