Subject: Re: anyone booted sun2 or sun3 kernels in the last 3 months?
To: None <mrg@eterna.com.au>
From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
List: port-sun3
Date: 06/24/2006 12:08:30
mrg@eterna.com.au wrote:

> what happens is that we have:
> 
> #define _IPL_SOFT_LEVEL_MIN     1
> #define _IPL_SOFT_LEVEL_MAX     3
> 
> but
> 
> #define IPL_SOFTNET     (PSL_S|PSL_IPL1)
> 
> and 
> 
> #define PSL_IPL1        0x0100          /* interrupt priority level 1 */
> #define PSL_S           0x2000          /* supervisor enable bit */
> 
> and then in sun68k/isr.c we have:
> 
> softintr_establish(int ipl, void (*func)(void *), void *arg)
> ...
>         ipl &= ~PSL_S;
> 	if (ipl < _IPL_SOFT_LEVEL_MIN || ipl > _IPL_SOFT_LEVEL_MAX)
> 		panic("softintr_establish: unsupported soft IPL %d", ipl);
> 
> ipl = PSL_IPL1 at this point. the caller is just a few lines above
> this in softintr_init():
> 
>         softnet_cookie = softintr_establish(IPL_SOFTNET,
> 					    (void (*)(void *)) netintr, NULL);
> 
> what's the right fix here?

I guess the problem is that IPL_* macros are now defined as
arguments passed to splraseipl() (in <sys/spl.h>) for each spl levels
but some ports already have had their own usage/meanings of IPL_* macros.

As noted in PR 33218, maybe it's better to introduce new macro for
splraisespl() args or MD usage of IPL_*.

(Note sun3 doesn't use sun68k/isr.c and doesn't have generic software
 interrupts yet)
---
Izumi Tsutsui