This note describes an improved scheme for assigning hardware interrupt priorty
levels and their masking in the kernel. 

The scheme used by the UNIX kernel imposes the following restrictions:

	o	controllers supporting block devices must interrupt at or below 
		level 6.
	o	controllers supporting only character devices must interrupt at
		or below level 5.
	o	network controllers must interrupt at or below level ?.

Our current implementation of the spl[0-7] functions resulted in spl[1-7] 
setting the interrupt mask level to 7, and spl0 setting the level to zero
after servicing simulated AST interrupts.  Level 7 masks all interrupts except 
another level 7: i.e. power failures and parity errors.  No attention was
paid to the jumpering of interrupt levels on controller boards.

We have had numerious complaints about lost characters on ttys, the date 
slipping, and the time function not being accurate. Our neglect of interrupt 
priorities has been a factor in this, it is time to fix it.

By determining during autoconfiguration the 'psl' value to mask interrupts 
from a controller, we can limit the time spent at unnecessarly high priority.
A field added to the "qb_ctlr" structure will hold the 'psl' value. Within 
the driver, instead of using code like

		s = spl[56]();
			... protected code ...
		splx(s)

we can use

		s = splx(qm->qm_intpsl);
			... protected code ...
		splx(s)

The UNIX restrictions mentioned above still apply.
