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

Reply via email to