1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #include <linux/cpumask.h>
- #include <linux/interrupt.h>
- #include <linux/init.h>
- #include <linux/mm.h>
- #include <linux/delay.h>
- #include <linux/spinlock.h>
- #include <linux/kernel_stat.h>
- #include <linux/mc146818rtc.h>
- #include <linux/cache.h>
- #include <linux/cpu.h>
- #include <linux/module.h>
- #include <asm/smp.h>
- #include <asm/mtrr.h>
- #include <asm/tlbflush.h>
- #include <asm/mmu_context.h>
- #include <asm/apic.h>
- #include <asm/proto.h>
- #include <asm/ipi.h>
- #ifdef CONFIG_X86_32
- void default_send_IPI_self(int vector)
- {
- __default_send_IPI_shortcut(APIC_DEST_SELF, vector, apic->dest_logical);
- }
- /* must come after the send_IPI functions above for inlining */
- static int convert_apicid_to_cpu(int apic_id)
- {
- int i;
- for_each_possible_cpu(i) {
- if (per_cpu(x86_cpu_to_apicid, i) == apic_id)
- return i;
- }
- return -1;
- }
- int safe_smp_processor_id(void)
- {
- int apicid, cpuid;
- if (!boot_cpu_has(X86_FEATURE_APIC))
- return 0;
- apicid = hard_smp_processor_id();
- if (apicid == BAD_APICID)
- return 0;
- cpuid = convert_apicid_to_cpu(apicid);
- return cpuid >= 0 ? cpuid : 0;
- }
- #endif
|