On Thu, Jan 02, 2020 at 06:01:45PM +0000, Catalin Marinas wrote: > On Mon, Dec 23, 2019 at 06:32:26PM +0530, Srinivas Ramana wrote: > > Current SSBS implementation takes care of setting the > > SSBS bit in start_thread() for user threads. While this works > > for tasks launched with fork/clone followed by execve, for cases > > where userspace would just call fork (eg, Java applications) this > > leaves the SSBS bit unset. This results in performance > > regression for such tasks. > > > > It is understood that commit cbdf8a189a66 ("arm64: Force SSBS > > on context switch") masks this issue, but that was done for a > > different reason where heterogeneous CPUs(both SSBS supported > > and unsupported) are present. It is appropriate to take care > > of the SSBS bit for all threads while creation itself. > > > > Fixes: 8f04e8e6e29c ("arm64: ssbd: Add support for PSTATE.SSBS rather than trapping to EL3") > > Signed-off-by: Srinivas Ramana <sramana@xxxxxxxxxxxxxx> > > I suppose the parent process cleared SSBS explicitly. Isn't the child > after fork() supposed to be nearly identical to the parent? If we did as > you suggest, someone else might complain that SSBS has been set in the > child after fork(). Right, I'd expect the parent SSBS to be inherited when we copy the pstate field along with the other regs, and I think this is the correct behaviour. Is that broken somehow? Will