Date: Mon, 27 Sep 2021 12:48:19 +0100 From: Andrew Turner <andrew@fubar.geek.nz> To: Kristof Provost <kp@freebsd.org> Cc: Alexander Motin <mav@FreeBSD.org>, "src-committers@freebsd.org" <src-committers@FreeBSD.org>, "dev-commits-src-all@freebsd.org" <dev-commits-src-all@FreeBSD.org>, "dev-commits-src-main@freebsd.org" <dev-commits-src-main@FreeBSD.org> Subject: Re: git: 695323ae88c7 - main - acpi_cpu: Fix panic if some CPU devices are disabled. Message-ID: <A97F26FE-8871-4354-8F74-DCCF66207EC6@fubar.geek.nz> In-Reply-To: <1D490397-E56E-4D39-A4CC-BDF0CC25E91D@FreeBSD.org> References: <202109252101.18PL1W4I003365@gitrepo.freebsd.org> <1D490397-E56E-4D39-A4CC-BDF0CC25E91D@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
> On 27 Sep 2021, at 09:16, Kristof Provost <kp@freebsd.org> wrote: >=20 > On 25 Sep 2021, at 23:01, Alexander Motin wrote: >=20 > The branch main has been updated by mav: >=20 > URL: = https://cgit.FreeBSD.org/src/commit/?id=3D695323ae88c71776e131940ed7dedd25= 365e932f = <https://cgit.freebsd.org/src/commit/?id=3D695323ae88c71776e131940ed7dedd2= 5365e932f> > commit 695323ae88c71776e131940ed7dedd25365e932f=20 > Author: Alexander Motin <mav@FreeBSD.org>=20 > AuthorDate: 2021-09-25 20:54:28 +0000=20 > Commit: Alexander Motin <mav@FreeBSD.org>=20 > CommitDate: 2021-09-25 21:01:28 +0000 >=20 > acpi_cpu: Fix panic if some CPU devices are disabled. >=20 > While there, remove couple unneeded global variables.=20 > ---=20 > sys/dev/acpica/acpi_cpu.c | 66 = +++++++++++++++++++++--------------------------=20 > 1 file changed, 29 insertions(+), 37 deletions(-) >=20 > diff --git a/sys/dev/acpica/acpi_cpu.c b/sys/dev/acpica/acpi_cpu.c=20 > index ab4ffda7a02e..0577b6eac8b7 100644=20 > --- a/sys/dev/acpica/acpi_cpu.c=20 > +++ b/sys/dev/acpica/acpi_cpu.c=20 > @@ -154,8 +154,6 @@ static struct sysctl_oid *cpu_sysctl_tree;=20 > static int cpu_cx_generic;=20 > static int cpu_cx_lowest_lim; >=20 > -static device_t *cpu_devices;=20 > -static int cpu_ndevices;=20 > static struct acpi_cpu_softc **cpu_softc;=20 > ACPI_SERIAL_DECL(cpu, "ACPI CPU"); >=20 > @@ -443,26 +441,21 @@ acpi_cpu_attach(device_t dev)=20 > static void=20 > acpi_cpu_postattach(void *unused __unused)=20 > { >=20 > I=E2=80=99m seeing this panic on a bhyve VM running an up-to-date main = kernel: >=20 > Fatal trap 12: page fault while in kernel mode > cpuid =3D 2; apic id =3D 02 > fault virtual address =3D 0x0 > fault code =3D supervisor read data, page not present > instruction pointer =3D 0x20:0xffffffff804f643c > stack pointer =3D 0x28:0xffffffff8358bf20 > frame pointer =3D 0x28:0xffffffff8358bfa0 > code segment =3D base 0x0, limit 0xfffff, type 0x1b > =3D DPL 0, pres 1, long 1, def32 0, gran 1 > processor eflags =3D interrupt enabled, resume, IOPL =3D 0 > current process =3D 0 (swapper) > trap number =3D 12 > panic: page fault > cpuid =3D 2 > time =3D 1 > KDB: stack backtrace: > db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame = 0xffffffff8358bbc0 > vpanic() at vpanic+0x187/frame 0xffffffff8358bc20 > panic() at panic+0x43/frame 0xffffffff8358bc80 > trap_fatal() at trap_fatal+0x387/frame 0xffffffff8358bce0 > trap_pfault() at trap_pfault+0x99/frame 0xffffffff8358bd40 > trap() at trap+0x2a7/frame 0xffffffff8358be50 > calltrap() at calltrap+0x8/frame 0xffffffff8358be50 > --- trap 0xc, rip =3D 0xffffffff804f643c, rsp =3D 0xffffffff8358bf20, = rbp =3D 0xffffffff8358bfa0 --- > acpi_cpu_postattach() at acpi_cpu_postattach+0x5c/frame = 0xffffffff8358bfa0 > mi_startup() at mi_startup+0x1f0/frame 0xffffffff8358bff0 > btext() at btext+0x22 > KDB: enter: panic > [ thread pid 0 tid 100000 ] > Stopped at kdb_enter+0x37: movq $0,0x1274f0e(%rip) > db> > I=E2=80=99ve not done any digging, but given that it seems to die in = acpi_cpu_postattach() and you touched that last =E2=80=A6, well you know = how that goes. >=20 I hit what looks to be the same issue on arm64. In my case it was a NULL = pointer dereference on cpu_softc because acpi_cpu_probe never called = malloc as I=E2=80=99m booting using FDT. I=E2=80=99ve pushed a fix for this in 4e50efb1. Andrew
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?A97F26FE-8871-4354-8F74-DCCF66207EC6>