Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Nov 2000 00:38:36 +0100
From:      Bernd Walter <ticso@cicely8.cicely.de>
To:        freebsd-alpha@freebsd.org
Subject:   Patch to make my PC164 booting.
Message-ID:  <20001121003836.A20659@cicely8.cicely.de>

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

--T4sUOijqQbZv57TR
Content-Type: text/plain; charset=us-ascii

I don't know the exact problems on other platforms.
The attached workaround is promising on my pc164.

It basicly adds a removing of the cpu int mask for pci/isa irqs to the int
enable code (We may still need to enable when a drivers ataches) and adds the
cpu mask in the disabling code.
This is similar as holding the ipl higher as the ipl has only one level for
all i/o devices which is what the cpu masks disables.
If a new device attaches and enables his int a new trap get refired unneededly
once.

As my patch applys to all eb164 based systems it also applys to former working
systems - I don't asume any critical problems with it but it might decrease the
performance unnecessarily.

Another point is that I use an PAL function to enable PAL privileged commands
to access the mask. This cserve funtionality might not be available on every
system and needs to be tested.

The current result with this is the following:
It boots into single user mode everytime I tried which never happened
before with the scsi controllers compiled into the kernel.
It survived a flood ping via the xl card which never worked before.
After all it is still unstable.
Usually it hangs during fsck or during cvs co and doesn't react on the
seriel anymore.
One time I had the luck that it still reacted on the seriel and acepted
a break to ddb - swapper was waiting in sched.

I don't know if the fix only makes it happen less often or if I'm now
seeing different problems.

-- 
B.Walter              COSMO-Project         http://www.cosmo-project.de
ticso@cicely.de         Usergroup           info@cosmo-project.de


--T4sUOijqQbZv57TR
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="alpha.eb164.patch"

Index: sys/alpha/pci//pci_eb164_intr.s
===================================================================
RCS file: /vol/cvs/FreeBSD/src/sys/alpha/pci/pci_eb164_intr.s,v
retrieving revision 1.3
diff -u -r1.3 pci_eb164_intr.s
--- sys/alpha/pci//pci_eb164_intr.s	2000/11/09 17:01:21	1.3
+++ sys/alpha/pci//pci_eb164_intr.s	2000/11/20 18:42:20
@@ -53,13 +53,30 @@
 	mov	a0, a1
 	ldiq	a0, 0x34
 	call_pal PAL_cserve
+	ldiq	a0, 0x08	/* Allow PALRES */
+	call_pal PAL_cserve
+	.long	0x66100118	/* hw_mfpr a0, icsr */
+	ldah	a1, 0x0020	/* IMSK1 */
+	or	a0, a1, a0
+	xor	a0, a1, a0
+	.long	0x76100118	/* hw_mtpr a0, icsr */
+	ldiq	a0, 0x09	/* Disable PALRES */
+	call_pal PAL_cserve
 	RET
 	END(eb164_intr_enable)
 
 	.text
 LEAF(eb164_intr_disable,1)
-	mov	a0, a1
+/*	mov	a0, a1
 	ldiq	a0, 0x35
+	call_pal PAL_cserve */
+	ldiq	a0, 0x08	/* Allow PALRES */
+	call_pal PAL_cserve
+	.long	0x66100118	/* hw_mfpr a0, icsr */
+	ldah	a1, 0x0020	/* IMSK1 */
+	or	a0, a1, a0
+	.long	0x76100118	/* hw_mtpr a0, icsr */
+	ldiq	a0, 0x09	/* Disable PALRES */
 	call_pal PAL_cserve
 	RET
 	END(eb164_intr_disable)

--T4sUOijqQbZv57TR--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-alpha" in the body of the message




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