Page MenuHomeFreeBSD

powerpc: Fix inconsistent Altivec handling in set_mcontext
ClosedPublic

Authored by sanastasio_raptorengineering.com on Oct 31 2023, 8:34 PM.
Referenced Files
F116018566: D42417.diff
Thu, May 1, 4:42 PM
Unknown Object (File)
Thu, Apr 24, 1:12 AM
Unknown Object (File)
Mon, Apr 21, 2:38 PM
Unknown Object (File)
Mon, Apr 14, 5:07 AM
Unknown Object (File)
Wed, Apr 9, 2:07 PM
Unknown Object (File)
Mar 26 2025, 7:07 AM
Unknown Object (File)
Mar 17 2025, 10:30 PM
Unknown Object (File)
Jan 29 2025, 9:18 AM

Details

Summary
powerpc: Fix inconsistent Altivec handling in set_mcontext

When support for fpu_kern_enter/fpu_kern_leave was added to powerpc,
set_mcontext was updated to handle Altivec state restoration in the same
way that the FPU state by lazily restoring the context on the first
trap. However the function was not correctly updated to unconditionally
clear the PCB_VEC and PSL_VEC bits from the pcb's flags and srr1
respectively which can sometimes result in a mismatch between a
process's MSR[VEC] state and its pcb_flags.

Fix this by simply clearing the VEC flags unconditionally in
set_mcontext, which is already done for FPU/VSX.

Fixes: a6662c37b6ffe ("powerpc: Implement fpu_kern_enter/fpu_kern_leave")
Test Plan

The fix was tested on a previously-failing CI test case and was confirmed to fix the issue. (https://ci.freebsd.org/view/Test/job/FreeBSD-main-powerpc64-test/1075/consoleText)

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable