Summary: | Old i386 boot: CPU0: local APIC error 0x4 – Cannot boot any longer | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Base System | Reporter: | freebsd-bug-report.e3f7c7f2e19a <freebsd-bug-report.e3f7c7f2e19a> | ||||||
Component: | kern | Assignee: | Mark Johnston <markj> | ||||||
Status: | In Progress --- | ||||||||
Severity: | Affects Many People | CC: | ben, freebsd-bug-report.e3f7c7f2e19a, imp, markj | ||||||
Priority: | --- | ||||||||
Version: | 14.0-RELEASE | ||||||||
Hardware: | i386 | ||||||||
OS: | Any | ||||||||
Attachments: |
|
Description
freebsd-bug-report.e3f7c7f2e19a@inrobotico.com
2023-11-14 18:44:51 UTC
Likely due to a change in a ACPICA import. Honestly: you'd likely need to find which one by bisecting the road from stable/12 branch point to stable/13, then figure out what caused the breakage in that... then figure out a fix... and ideally get it upstreamed... This sort of thing is impossible to remotely debug and/or debug without strong motivation to make it work. My bad. As per documentation somewhere, added hint.apic.0.disabled="1" to the /boot/loader.conf, and this issue was solved. However, /boot/kernel/zfs.ko et co. were not upgraded, when skipping major releases to 13.0: https://forums.freebsd.org/threads/freebsd-13-1-upgrade-issue.85190/post-628769 Created attachment 256313 [details] fix The offending commit appears to be 279cd05b7e4d. 0x4 in the ECR is apparently: > Bit 2: Send Accept Error. > Set when the local APIC detects that a message it sent was not accepted by any > APIC on the APIC bus. Used only on P6 family and Pentium processors. I guess pre-P4 systems don't like IPIs fired off into oblivion. Attached patch adds a check for multiple CPUs to match the one in smp_targeted_tlb_shootdown(), which seems to be the only other caller. Tested on single-CPU 440BX and multiprocessor i840. A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/src/commit/?id=254a2b767f9a39f1541e0a07a70bbe269e86ad70 commit 254a2b767f9a39f1541e0a07a70bbe269e86ad70 Author: Mark Johnston <markj@FreeBSD.org> AuthorDate: 2025-01-07 17:58:58 +0000 Commit: Mark Johnston <markj@FreeBSD.org> CommitDate: 2025-01-07 18:13:54 +0000 x86: Short-circuit ipi_all_but_self() on UP systems Apparently this is required on old intel hw, see https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=275086#c3 PR: 275086 Reviewed by: mav, kib Fixes: 279cd05b7e4d ("Use APIC_IPI_DEST_OTHERS for bitmapped IPIs too.") MFC after: 1 week Diagnosed by: Ben Wilber <ben@desync.com> Differential Revision: https://reviews.freebsd.org/D48361 sys/x86/x86/mp_x86.c | 3 +++ 1 file changed, 3 insertions(+) (In reply to ben from comment #3) Thanks for the analysis. I committed a modified version of the patch. Reopening since it's a legitimate bug. |