#16382: ASSERT FAILED: gFPUSaveLength <= sizeof(sInitialState.fpu_state)
----------------------------+----------------------
Reporter: HAL | Owner: korli
Type: bug | Status: assigned
Priority: normal | Milestone: R1/beta3
Component: System/Kernel | Version: R1/beta2
Resolution: | Keywords:
Blocked By: | Blocking:
Platform: x86-64 |
----------------------------+----------------------
Comment (by pulkomandy):
If I understand correctly, we get the size from the CPUID, this gives the
max size that the CPU supports. But we can enable and disable specific
register sets we have storage space for.
The list of things that can be saved is here:
https://xem.github.io/minix86/manual/intel-x86-and-64-manual-
vol1/o_7281d5ea06a5b67a-307.html
Could you show the output of cat /proc/cpuinfo on Linux to make sure which
CPU you have and which instructions it supports?
Currently we have 1024 bytes of storage available, which would be enough
for AVX2, but not for MPX (would need 1056 bytes) nor AVX512 (would need
2560 bytes). The state may be compressed by XSAVEC and XSAVEOPT if
available, but there is no guarantee they can actually make things
smaller.
I think we should bump the space to 2560 bytes already and start getting
ready for AVX512? (this is in
headers/private/kernel/arch/x86/arch_thread_types.h struct arch_thread)
I have put a change doing this at https://review.haiku-
os.org/c/haiku/+/3031 . It would be great if you could test it and let us
know if that fixes the problem for you.
--
Ticket URL: <https://dev.haiku-os.org/ticket/16382#comment:7>
Haiku <https://dev.haiku-os.org>
The Haiku operating system.