Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 Mar 2023 08:59:03 -0800
From:      Mark Millard <marklmi@yahoo.com>
To:        bob prohaska <fbsd@www.zefox.net>
Cc:        freebsd-arm@freebsd.org
Subject:   Re: panic: Called fill_fpregs while the kernel is using the VFP
Message-ID:  <003859D4-9CAB-492A-B433-915A0675CD44@yahoo.com>
In-Reply-To: <20230306151928.GA51161@www.zefox.net>
References:  <20230306151928.GA51161@www.zefox.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mar 6, 2023, at 07:19, bob prohaska <fbsd@www.zefox.net> wrote:

> This is new to me. Pi2 running armv7 at=20
> main-4b0552d5f4: Thu Feb 16 16:12:46 PST 2023
>=20
> panic: Called fill_fpregs while the kernel is using the VFP
> cpuid =3D 3
> time =3D 1678112700
> KDB: stack backtrace:
> db_trace_self() at db_trace_self
> pc =3D 0xc05e5aec  lr =3D 0xc007a684 (db_trace_self_wrapper+0x30)
> sp =3D 0xdd2de790  fp =3D 0xdd2de8a8
> db_trace_self_wrapper() at db_trace_self_wrapper+0x30
> pc =3D 0xc007a684  lr =3D 0xc02e9184 (vpanic+0x140)
> sp =3D 0xdd2de8b0  fp =3D 0xdd2de8d0
> r4 =3D 0x00000100  r5 =3D 0x00000000
> r6 =3D 0xc07875a1  r7 =3D 0xc0b12f08
> vpanic() at vpanic+0x140
> pc =3D 0xc02e9184  lr =3D 0xc02e8f64 (dump_savectx)
> sp =3D 0xdd2de8d8  fp =3D 0xdd2de8dc
> r4 =3D 0xe05bc900  r5 =3D 0xc4c19e90
> r6 =3D 0xdffb6e50  r7 =3D 0xd70afa40
> r8 =3D 0xdffb6e40  r9 =3D 0xe05bc900
> r10 =3D 0xdd2de960
> dump_savectx() at dump_savectx
> pc =3D 0xc02e8f64  lr =3D 0xc05f2ea8 (set_regs)
> sp =3D 0xdd2de8e4  fp =3D 0xdd2de8f8
> set_regs() at set_regs
> pc =3D 0xc05f2ea8  lr =3D 0xc026ee34 (elf32_get_fpregset+0x2c)
> sp =3D 0xdd2de900  fp =3D 0xdd2de908
> r4 =3D 0xdffb6e50  r5 =3D 0xc026ee08
> elf32_get_fpregset() at elf32_get_fpregset+0x2c
> pc =3D 0xc026ee34  lr =3D 0xc026cd9c (elf32_coredump+0x308)
> sp =3D 0xdd2de910  fp =3D 0xdd2de988
> r4 =3D 0xc09033d4 r10 =3D 0xdd2de960
> elf32_coredump() at elf32_coredump+0x308
> pc =3D 0xc026cd9c  lr =3D 0xc02edfac (sigexit+0xce0)
> sp =3D 0xdd2de990  fp =3D 0xdd2decf8
> r4 =3D 0x0000004e  r5 =3D 0xddb6883c
> r6 =3D 0xddb68754  r7 =3D 0xc026ca94
> r8 =3D 0xde22e2bc  r9 =3D 0xddb687b0
> r10 =3D 0x00000000
> sigexit() at sigexit+0xce0
> pc =3D 0xc02edfac  lr =3D 0xc02ee8ac (postsig+0x128)
> sp =3D 0xdd2ded00  fp =3D 0xdd2ded88
> r4 =3D 0x00000006  r5 =3D 0xde2f5000
> r6 =3D 0xdd2ded20  r7 =3D 0xdd2ded18
> r8 =3D 0xde22e1f8  r9 =3D 0xd710cab8
> r10 =3D 0x00000005
> postsig() at postsig+0x128
> pc =3D 0xc02ee8ac  lr =3D 0xc02f26dc (ast_sig+0x11c)
> sp =3D 0xdd2ded90  fp =3D 0xdd2dee08
> r4 =3D 0xde2f5000  r5 =3D 0xde22e2bc
> r6 =3D 0xc0753a8d  r7 =3D 0x00000000
> r8 =3D 0xde22e1f8  r9 =3D 0x00000ab8
> r10 =3D 0x23adf040
> ast_sig() at ast_sig+0x11c
> pc =3D 0xc02f26dc  lr =3D 0xc0352fb0 (ast_handler+0xe0)
> sp =3D 0xdd2dee10  fp =3D 0xdd2dee28
> r4 =3D 0xdd2dee40  r5 =3D 0x0000000e
> r6 =3D 0x00004000  r7 =3D 0xc096bf9c
> r8 =3D 0xde2f5000  r9 =3D 0x00000001
> ast_handler() at ast_handler+0xe0
> pc =3D 0xc0352fb0  lr =3D 0xc0352ec0 (ast+0x20)
> sp =3D 0xdd2dee30  fp =3D 0xdd2dee38
> r4 =3D 0xdd2dee40  r5 =3D 0xde2f5000
> r6 =3D 0x00000000  r7 =3D 0x000001b1
> r8 =3D 0x24006570  r9 =3D 0x23adf040
> ast() at ast+0x20
> pc =3D 0xc0352ec0  lr =3D 0xc05e8410 (swi_exit+0x3c)
> sp =3D 0xdd2dee40  fp =3D 0xbfbfcaf0
> r4 =3D 0x60000013  r5 =3D 0xde2f5000
> swi_exit() at swi_exit+0x3c
> pc =3D 0xc05e8410  lr =3D 0xc05e8410 (swi_exit+0x3c)
> sp =3D 0xdd2dee40  fp =3D 0xbfbfcaf0
> KDB: enter: panic
> [ thread pid 8505 tid 100176 ]
> Stopped at      kdb_enter+0x54: ldrb    r15, [r15, r15, ror r15]!
> db>=20
>=20

See . . .

For the fixes to this armv7/armv6 specific problem:

Mon, 20 Feb 2023
    =E2=80=A2 git: 24abb6b82102 - main - When saving a context on arm =
call the vfp handler Andrew Turner

Thu, 23 Feb 2023
    =E2=80=A2 git: 4d2427f2c445 - main - arm: Unbreak debugging programs =
that use FP instructions Kornel Dul=C4=99ba=20
    =E2=80=A2 git: 98c666cf8758 - main - arm: Fix initialization of VFP =
context Kornel Dul=C4=99ba=20

So you need 98c666cf8758 or later.

For where it was broken:

Sat, 04 Feb 2023
=E2=80=A2 git: 6926e2699ae5 - main - arm: Add support for using VFP in =
kernel Kornel Dul=C4=99ba=20
=E2=80=A2 git: e5d7c5c857f8 - main - arm: mv: Add missing function =
prototype Kornel Dul=C4=99ba=20

It can be nasty to try to build the kernel via a system
running a broken kernel. Getting an appropriate vintage
kernel via a snapshot can work around such issues.
Another way is using an appropriate kernel.txz from what
is available via looking around in:

https://artifact.ci.freebsd.org/snapshot/main/?C=3DM&O=3DD

After renaming/deleting /boot/kernel , that compressed
tar file can be expanded with -C / involved to create a
/boot/kernel/ on the armv7 media. With that kernel
booted, then a normal build/install update can be done.
(The wording does not deal with if you happen to end up
with a temporary kernel that is broken in some other
way: pick a different one in that case.)

=3D=3D=3D
Mark Millard
marklmi at yahoo.com




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?003859D4-9CAB-492A-B433-915A0675CD44>