Subject: Re: Kernel thread scheduling
To: Lennart Augustsson <lennart@augustsson.net>
From: Matthias Drochner <M.Drochner@fz-juelich.de>
List: tech-kern
Date: 01/17/2000 13:35:22
lennart@augustsson.net said:
>  * Use the lowest possible physical spl level for USB.  This is what I
>    do today; hoping that splbio() is lower than the others...
>    This is really a hack. 

Fwiw, I had the same problem with the driver for a Bit3
PCI-VME adapter. VME interrupts come in as PCI interrupts,
all at one level, while the VME device drivers expect the
usual splxxx() semantics. I did it more or less the way
you describe. Even worse, since there is no easy way to
raise the irq level to a runtime-determined value
[switch (handle->level) {
	case IPL_NET:
		s = splnet();
		break;
	[...]
}
wouldn't be nice]
the level is always set to splhigh() during the handler
calls. See dev/pci/btvmei.c.

I don't see much gain from a kernel threads here (unless
the whole interrupt handling is redesigned this way),
I'm only missing two mi interfaces:
-a spllow() or so, blocking only itself
-some spl(IPL_XXX) call for runtime determined levels

best regards
Matthias