Can you open arch/i386/kernel/smpboot.c in your favorite text
editor, locate wakeup_secondary_via_INIT (it has this name
in 2.5.3-pre5), and in this function locate
apic_write_around(APIC_ICR, APIC_DM_STARTUP | (start_eip >> 12));
/* Give the other CPU some time to accept the IPI */
udelay(300);
and try increasing 300 to some bigger value (and make sure that
you are using pristine sources, there must be no printk() between
apic_write_around and udelay()). When I was getting Linux SMP
to work on GA-6VXD7 (it still boots, even with 2.5.3-pre5), I had to
ensure that no bus accesses (and especially PCI write) happen
until secondary CPU is alive. By trial and error I found
that 150us is needed on my motherboard, so I put 300us here.
Maybe 300us is not enough for you, so try increasing this value.
On 6VXD7 if you are not silent after you send startup IPI,
secondary CPU will not execute even first two instructions,
and first CPU will die about 50ms after it sends this
startup IPI.
Best regards,
Petr Vandrovec
vandrove@vc.cvut.cz
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/