qemu: fix "Bad FPU state detected" fault on qemu-system-i386
Qemu introduced a commit "target/i386: Enable AVX cpuid bits when using TCG"
since v7.2.0. It causes qemu-system-i386 hang with following error:
traps: rndc-confgen[342] general protection fault ip:
b7ef5545 sp:
bfcc6e6c error:0
------------[ cut here ]------------
Bad FPU state detected at __restore_fpregs_from_fpstate+0x2f/0x60, reinitializing FPU registers.
WARNING: CPU: 7 PID: 353 at arch/x86/mm/extable.c:65 fixup_exception+0x29c/0x2d0
Modules linked in: cfg80211 8021q parport_pc parport sch_fq_codel openvswitch nsh nf_conncount nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 kvm irqbypass fuse configfs
CPU: 7 PID: 353 Comm: in:imklog Not tainted 5.15.78-yocto-standard #1
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS
rel-1.16.1-0-g3208b098f51a-prebuilt.qemu.org 04/01/2014
EIP: fixup_exception+0x29c/0x2d0
Code: 05 ed da 89 df 01 68 b0 cb 5f df e8 4f e7 b6 00 0f 0b 58 e9 9d fe ff ff c6 05 ef da 89 df 01 50 68 f0 cb 5f df e8 35 e7 b6 00 <0f> 0b 5b 5e e9 0a ff ff ff ba 01 00 00 00 89 f0 e8 8a c1 b6 00 0f
EAX:
00000060 EBX:
df734b60 ECX:
f5be9cd0 EDX:
f5be9ccc
ESI:
c3485eec EDI:
0000000d EBP:
c3485e64 ESP:
c3485e4c
DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 EFLAGS:
00000096
CR0:
80050033 CR2:
b79fdde0 CR3:
03cbe000 CR4:
001506d0
Call Trace:
? __restore_fpregs_from_fpstate+0x2f/0x60
exc_general_protection+0x9a/0x390
? exc_bounds+0x90/0x90
handle_exception+0x133/0x133
Upstream has been fixed this issue[1], so backport the patch to fix it.
Ref:
[1] https://gitlab.com/qemu-project/qemu/-/commit/
48b60eb6c917646df9efa7ddb4c25929f358d647
Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>