Fernando Luis Vazquez Cao a36166c6ef Use the APIC to determine the hardware processor id - i386
hard_smp_processor_id used to be just a macro that hard-coded
hard_smp_processor_id to 0 in the non SMP case.  When booting non SMP kernels
on hardware where the boot ioapic id is not 0 this turns out to be a problem.
This is happens frequently in the case of kdump and once in a great while in
the case of real hardware.

Use the APIC to determine the hardware processor id in both UP and SMP kernels
to fix this issue.

Notice that hard_smp_processor_id is only used by SMP code or by code that
works with apics so we do not need to handle the case when apics are not
present and hard_smp_processor_id should never be called there.

Signed-off-by: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
Cc: "Luck, Tony" <tony.luck@intel.com>
Acked-by: Andi Kleen <ak@suse.de>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Vivek Goyal <vgoyal@in.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-09 12:30:48 -07:00
..
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-09-07 16:57:21 -07:00
2006-12-08 08:28:39 -08:00
2007-05-08 11:15:20 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2007-03-05 07:57:52 -08:00
2007-05-02 19:27:15 +02:00
2007-04-25 22:23:33 -07:00
2006-01-18 19:20:31 -08:00
2005-04-16 15:20:36 -07:00
2007-02-16 08:13:59 -08:00
2005-04-16 15:20:36 -07:00
2007-03-05 07:57:50 -08:00
2006-01-10 08:01:34 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-05-26 16:16:16 -07:00
2007-05-08 11:15:20 -07:00
2005-04-16 15:20:36 -07:00
2006-10-03 08:03:41 -07:00
2005-04-16 15:20:36 -07:00
2006-02-15 15:32:22 -08:00
2005-04-16 15:20:36 -07:00
2007-02-16 08:13:59 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2007-05-02 19:27:20 +02:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2007-05-02 19:27:16 +02:00
2007-05-02 19:27:16 +02:00
2007-02-13 13:26:21 +01:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-09-26 10:52:32 +02:00
2007-05-02 19:02:34 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2007-05-02 19:27:16 +02:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2007-05-08 11:15:20 -07:00
2007-03-05 07:57:52 -08:00
2005-04-16 15:20:36 -07:00
2007-03-05 07:57:51 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2007-05-08 11:15:18 -07:00
2006-12-15 08:47:51 -08:00
2005-04-16 15:20:36 -07:00
2006-10-12 22:25:03 -05:00
2007-03-05 07:57:52 -08:00
2005-09-05 00:06:11 -07:00