We use a custom i386 RAMDISK_CD kernel: basically we add most options from
GENERIC and
GENERIC.MP.
Upgrading from 4.6 to 4.8, this kernel hangs forever after:
root on rd0a swap on rd0b dump on rd0b
The problem turns out to be MP; activation of the secondary processors.
The custom kernel works fine on a single-core machine, and a recompiled kernel
without
config lines
option MULTIPROCESSOR
cpu* at mainbus?
also works fine everywhere.
--
The problem can be reproduced by simply adding those two MP config lines to the
standard
RAMDISK_CD kernel config.
--
Experiments with adding printf()s on a Dell 1950 (2 CPUs, 8 cores) suggest that
the hang
happens during:
cpu_boot_secondary(&cpu_info[2])
pmap_tlb_shootrange()
i386_fast_ipi()
But treat that as an inconclusive hint: we don't know whether the printf()s are
100%
reliable, and VirtualBox (2 CPU, IOAPIC) seems to make it past that point and
hang
somewhere after init_main() has entered its intentional infinite waiting loop,
and another
computer (Core 2 Duo) doesn't hang but reboots immediately around that point.
--
Are we overlooking an option/driver that's needed for MP on i386?
Or is this a kernel regression from 4.6 --> 4.8?
+++chefren