Description of problem: The init_fpstate is an XSAVE image that records init states during the boot time. It is presumed to cover all the supported and enabled features. The setup code has been recently optimized to capture legacy states only as all of the other init states are all zeros. When AMX is enabled, this buffer is too small to include AMX TILE_DATA (8KB) as it is statically allocated with about a page. But, the buffer is formatted to have them all although using the compacted format. This also leads to a noisy splat with XRSTORS as it expects all the buffer memory accessible. This is mentioned in Intel SDM Vol.1 13.13 Memory Access By The XSAVE Feature Set: "An execution of an instruction in the XSAVE feature set may access any byte of any state component on which that execution operates." Version-Release number of selected component (if applicable): How reproducible: Steps to Reproduce: It is reproducible on AMX systems when the running kernel is built with CONFIG_DEBUG_PAGEALLOC=y and CONFIG_DEBUG_PAGEALLOC_ENABLE_DEFAULT=y: [ 30.583122] ------------[ cut here ]------------ [ 30.586625] Bad FPU state detected at restore_fpregs_from_fpstate+0x57/0xd0, reinitializing FPU registers. [ 30.586676] WARNING: CPU: 130 PID: 1689 at arch/x86/mm/extable.c:74 fixup_exception+0x2c1/0x2f0 [ 30.602091] CPU: 130 PID: 1689 Comm: probe-bcache Not tainted 5.19.0-various+ #1077 [ 30.610381] Hardware name: Intel Corporation D50DNP/D50DNP, BIOS SE5C6301.86B.7314.D09.2202231344 02/23/2022 [ 30.618850] RIP: 0010:fixup_exception+0x2c1/0x2f0 [ 30.618859] Code: bd fe ff ff e9 1c ff ff ff 0f 0b 48 c7 c2 90 05 8c 92 e9 32 ff ff ff 48 c7 c7 20 a7 fe 91 c6 05 4a dc 99 01 01 e8 4f de 01 00 <0f> 0b eb ab 0f 0b 48 c7 c2 90 05 8c 92 e9 16 fe ff ff 31 f6 4c 89 [ 30.636326] RSP: 0018:ff36ae41e4af7ca8 EFLAGS: 00010082 [ 30.636331] RAX: 0000000000000000 RBX: ffffffff921c6138 RCX: 0000000000000001 [ 30.636334] RDX: 0000000080000001 RSI: 00000000ffff7fff RDI: 00000000ffffffff [ 30.636337] RBP: ff36ae41e4af7cc8 R08: 0000000000000000 R09: c0000000ffff7fff [ 30.636339] R10: 0000000000000000 R11: ff36ae41e4af7af8 R12: ff36ae41e4af7dc8 [ 30.636342] R13: 000000000000000e R14: 0000000000000000 R15: 0000000000000001 [ 30.636344] FS: 0000000000000000(0000) GS:ff19681e5fd80000(0000) knlGS:0000000000000000 [ 30.636348] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 30.645197] CR2: ff196816897300bf CR3: 0000001083388006 CR4: 0000000000771ee0 [ 30.645201] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 30.689689] DR3: 0000000000000000 DR6: 00000000fffe07f0 DR7: 0000000000000400 [ 30.694040] PKRU: 55555554 [ 30.698347] Call Trace: [ 30.702615] <TASK> [ 30.706829] kernelmode_fixup_or_oops+0x49/0x120 [ 30.711098] __bad_area_nosemaphore+0x15a/0x200 [ 30.715346] bad_area_nosemaphore+0x16/0x20 [ 30.719610] do_kern_addr_fault+0x43/0xa0 [ 30.723810] exc_page_fault+0xdd/0x180 [ 30.727968] asm_exc_page_fault+0x27/0x30 [ 30.732088] RIP: 0010:restore_fpregs_from_fpstate+0x57/0xd0 Actual results: Expected results: Additional info:
upstream fix: 471f0aa7fa64 x86/fpu: Fix copy_xstate_to_uabi() to copy init states correctly a401f45e3875 x86/fpu: Exclude dynamic states from init_fpstate d3e021adac7c x86/fpu: Fix the init_fpstate size check with the actual size c32d7cab57e3 x86/fpu: Configure init_fpstate attributes orderly
merged: https://gitee.com/anolis/cloud-kernel/pulls/887