On Mon, Jan 23, 2017 at 09:23:06AM -0800, Dave Hansen wrote: > On 01/23/2017 08:55 AM, Yu-cheng Yu wrote: > >> The best fix here would be not to paper over the issue in the copy > >> function but find where it got clobbered, or where some initialization > >> code failed to set it. > > > > Someone else reported different issues from the same bug and a different > > patch was just tested OK this morning. I think that adding xfeatures bits > > to xcomp_bv should have been done in fpstate_init(). > > Right. So where did it get cleared out?
It is not set until a task triggers XSAVES. We did not set it in fpstate_init() because there is no valid data at the time. The problem happens when Linux copies data to the XSAVES area, like we see here; the kernel is not expected to change XSAVES format (xcomp_bv) but xcomp_bv is still blank (except bit 63). Because XSAVES format is not changed after boot time and xcomp_bv does not affect INIT optimization, why don't we fix the problem in fpstate_init()? Yu-cheng