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