On 03/14/17 12:01, H. Peter Anvin wrote: > On 11/08/16 10:39, Kyle Huey wrote: >> } >> >> + if (test_tsk_thread_flag(prev_p, TIF_NOCPUID) ^ >> + test_tsk_thread_flag(next_p, TIF_NOCPUID)) { >> + set_cpuid_faulting(test_tsk_thread_flag(next_p, TIF_NOCPUID)); >> + } >> + >> if (test_tsk_thread_flag(prev_p, TIF_NOTSC) ^ >> test_tsk_thread_flag(next_p, TIF_NOTSC)) { >> /* prev and next are different */ >> if (test_tsk_thread_flag(next_p, TIF_NOTSC)) >> hard_disable_TSC(); >> else >> hard_enable_TSC(); >> } > > I'm unhappy about this part: we already do two XORs on these after bit > extraction, which is quite inefficient; and at least theoretically we > could be indirecting though the ->stack pointer for every one if gcc > can't tell it won't have changed (we really need to get thread_info > moved into the task_struct allocation and away from the kernel stack, > especially since on x86 the pointer is the same size as the vestigial > structure it points to.) > Nevermind, I was accidentally looking at v10 not v15 of this patchset. My bad. -hpa