Re: V240 Status?

Takeshi Nakayama <[email protected]>
Newsgroups gmane.os.netbsd.ports.sparc64
Message-ID <[email protected]>
>>> Takeshi Nakayama <[email protected]> wrote

> >>> Martin Husemann <[email protected]> wrote
> 
> > On Mon, Jan 21, 2013 at 10:21:44PM +0100, J. Hannken-Illjes wrote:
> > > So its not V240 specific.  As high priority calls are rare (only subr_pcu.c,
> > > and NPF through subr_pserialize.c used it so far) it is quite possible they
> > > were never tested.
> > 
> > I'm pretty sure I tested back then, but I am not 100% sure right now.
> > I'll have a look.
> 
> I think sparc64_ipi_ccall in mp_subr.S is suspicious.
> 
> If it is called directly from interrupt_vector in locore.s, it
> requires something like TRAP_SETUP() or INTR_SETUP() to prepare
> stack and others.

Other idea is just schedule a softint in IPI-handler:

Introduce ci_xcall_ih in per-CPU struct cpu_info, then initialize
it with sparc_softintr_establish(PIL_HIGH, NULL, NULL).

In IPI-handler, just use setup_sparcintr as similar as ci_tick_ih
in sparc_interrupt as below:

ENTRY(sparc64_ipi_ccall)
	sethi	%hi(CPUINFO_VA+CI_XCALL_IH), %g6
	LDPTR	[%g6 + %lo(CPUINFO_VA+CI_XCALL_IH)], %g5
	STPTR	%g2, [%g5 + IH_FUN]
	ba,pt	%icc, setup_sparcintr
	 STPTR	%g3, [%g5 + IH_ARG]

If we make it as xc_ipi_handler specific, storings of ih_fun and
ih_arg can be omitted.

-- Takeshi Nakayama
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.