Hi guys,

I want to be able to invoke functions on other cpus
by means of IPIs. Looking at the TLB shootdown code,
IPIs work fine for amd64, ia32, sparc64/sun4v, sparc64/
sun4U. What is the status of TLB shootdows on the
other supported platforms? Do we not support SMPs for
the other platforms? Don't they need TLB shootdowns?!

Intro
-----
Other cpus are notified of a TLB shootdown via:

void tlb_shootdown_ipi_send(void)
{
        ipi_broadcast(VECTOR_TLB_SHOOTDOWN_IPI);
}

void ipi_broadcast(int ipi)
{
        /*.. */
        if (config.cpu_count > 1)
                ipi_broadcast_arch(ipi);
}


1) abs32le
----------
ipi_broadcast_arch() is defined but has an empty
implementation (ie, "{ }").

2) arm32
--------
ipi_broadcast_arch() is not even defined. As far as
I can tell, tlb_shootdown_ipi_recv() is never invoked
on arm32.

3) ia64
-------
ipi_broadcast_arch() again has an empty implementation.
However, the IPI receiving side has been implemented
(external_interrupt() calls tlb_shootdown_ipi_recv directly).

4) mips32
---------
ipi_broadcast_arch() utilizes the dorder device to
raise an IPI on all cpus. Unfortunately, the irq
handler just acknowledges the IPI in dorder_irq_handler()
and never invokes tlb_shootdown_ipi_recv().

5) mips64
---------
Same as mips32.

6) ppc32
--------
ipi_broadcast_arch() is not even defined and the arch
code does not seem to call tlb_shootdown_ipi_recv().


I am probably able to fix the mips32/64 code (although
I am not sure how useful that is since IPIs would only
work with msim's dorder). I *might* be able to do something
about ia64, but I know literally nothing about the rest.

Thank you.

Adam

_______________________________________________
HelenOS-devel mailing list
[email protected]
http://lists.modry.cz/cgi-bin/listinfo/helenos-devel

Reply via email to