From: Fenghua Yu <[email protected]>

setup_init_fpu_buf() calls booting time xsaves and xrstors to save/restore
xstate in xsave area.

Signed-off-by: Fenghua Yu <[email protected]>
---
 arch/x86/kernel/xsave.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/xsave.c b/arch/x86/kernel/xsave.c
index a4b451c..8fa7c7d 100644
--- a/arch/x86/kernel/xsave.c
+++ b/arch/x86/kernel/xsave.c
@@ -496,15 +496,21 @@ static void __init setup_init_fpu_buf(void)
 
        setup_xstate_features();
 
+       if (cpu_has_xsaves) {
+               init_xstate_buf->xsave_hdr.xcomp_bv =
+                                               (u64)1 << 63 | pcntxt_mask;
+               init_xstate_buf->xsave_hdr.xstate_bv = pcntxt_mask;
+       }
+
        /*
         * Init all the features state with header_bv being 0x0
         */
-       xrstor_state(init_xstate_buf, -1);
+       xrstor_state_booting(init_xstate_buf, -1);
        /*
         * Dump the init state again. This is to identify the init state
         * of any feature which is not represented by all zero's.
         */
-       xsave_state(init_xstate_buf, -1);
+       xsave_state_booting(init_xstate_buf, -1);
 }
 
 static enum { AUTO, ENABLE, DISABLE } eagerfpu = AUTO;
-- 
1.8.1.2

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to