CVSROOT:        /cvs
Module name:    src
Changes by:     [email protected]        2025/12/14 05:28:39

Modified files:
        sys/arch/sparc64/sparc64: ipifuncs.c 

Log message:
The sun4v_send_ipi() function completely blocks interrupts.  This may
result in failures if there is lots of IPI traffic between CPUs as
CPUs that are busy sending an IPI won't be able to process incoming IPIs.
Instead of blocking interrupts, use splhigh() to protect the per-CPU state
involved in sending IPIs.

The sun4v_broadcast_ipi() function did not block interrupts and therefore
lacked protection of the per-CPU state.  This means an IPI sent from an
interrupt handler could overwrite the state, resulting in TLB flushes being
sent to the wrong CPUs or with the wrong parameters.  Use splhigh() here
as well.  This seems to fix (some) of the recent instability seen on
sparc64 after changes to how we tear down exiting processes.

ok deraadt@

Reply via email to