This is the third part of the effort to support AMX. The second part can be found here: https://lore.kernel.org/r/20211013142847.120153383@xxxxxxxxxxxxx With AMX the FPU register state buffer which is part of task_struct::thread::fpu is not going to be extended unconditionally for all tasks on an AMX enabled system as that would waste minimum 8K per task. AMX provides a mechanism to trap on first use. That trap will be utilized to allocate a larger register state buffer when the task (process) has permissions to use it. The default buffer task_struct will only carry states up to AVX512. This needs more information than what is provided now with various variables. The original approach was to just add more variables, but it's simpler to stick this into data structures. The current series: - creates a data structure which carries the necessary information: default and maximum features and sizes. - instantiates and initializes one for kernel information and one for user space - converts all users of the old variables - removes the now unused old variables It's a straight forward conversion which should not introduce any functional changes. This series is based on: git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git x86/fpu-2 and also available from git: git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git x86/fpu-3 The full series with part 4 on top is available here: git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git x86/fpu Thanks, tglx --- include/asm/fpu/types.h | 39 ++++++++++ include/asm/fpu/xstate.h | 47 +----------- kernel/fpu/context.h | 6 - kernel/fpu/core.c | 37 +++++++--- kernel/fpu/init.c | 46 +++++------- kernel/fpu/internal.h | 2 kernel/fpu/regset.c | 2 kernel/fpu/signal.c | 11 +- kernel/fpu/xstate.c | 173 +++++++++++++++++++++++++---------------------- kernel/fpu/xstate.h | 15 +++- 10 files changed, 205 insertions(+), 173 deletions(-)