In ipi_send(), perform a mf instruction prior to initiating the IPI.
This guarantees that loads and stores emitted before the fence are made visible before the IPI becomes pended. Remove the mf.a instruction after initiating the IPI. There's no guarantee that the IPI becomes pended prior to subsequent reads or writes. Even if there was a guarantee, it would mostly be without any benefit.
This commit is contained in:
parent
d7da171b0d
commit
36cb272078
@ -354,8 +354,8 @@ ipi_send(u_int64_t lid, int ipi)
|
||||
vector = (u_int64_t)(ipi_vector[ipi] & 0xff);
|
||||
CTR3(KTR_SMP, "ipi_send(%p, %ld), cpuid=%d", pipi, vector,
|
||||
PCPU_GET(cpuid));
|
||||
ia64_mf();
|
||||
*pipi = vector;
|
||||
ia64_mf_a();
|
||||
}
|
||||
|
||||
SYSINIT(start_aps, SI_SUB_SMP, SI_ORDER_FIRST, cpu_mp_unleash, NULL);
|
||||
|
Loading…
x
Reference in New Issue
Block a user