On Tue, 2024-01-02 at 18:25 +0800, Xi Ruoyao wrote:
On Tue, 2024-01-02 at 18:17 +0800, Xi Ruoyao wrote:
The only other architecture setting FCSR in SET_PERSONALITY2 is MIPS. They do this for supporting different FP flavors (NaN encodings etc). which do not exist on LoongArch. I'm not sure how MIPS evades the issue (or maybe it's just buggy too) but I'll investigate it later.
Phew. I just managed to recommission my 3A4000 and I can reproduce the issue as well with Linux 5.18.1 (the latest kernel release when I decommissioned it) and CONFIG_PREEMPT=y.
% cat measure.c #include <fenv.h> int main() { return fetestexcept(FE_INEXACT); }
% echo $((1./3)) 0.33333333333333331
% while ./a.out; do ; done (stopped in seconds)
I'm building the mainline kernel on the 3A4000 now, will see if the issue still exists...
Still happening with 6.7.0-rc8. I'm not sure how to fix it for MIPS. Maybe lose_fpu in SET_PERSONALITY2? But to me doing so will be really nasty. Anyway I'll leave this for MIPS maintainers.