diff options
| author | Steve French <sfrench@us.ibm.com> | 2005-11-10 20:31:49 -0500 |
|---|---|---|
| committer | Steve French <sfrench@us.ibm.com> | 2005-11-10 20:31:49 -0500 |
| commit | 84cdda8a1966288de26be5cecf7702d378861ff9 (patch) | |
| tree | 914924b2a78ca756a35c3480d7abb2726f2db1f4 /include | |
| parent | 3c50c61826d1e2e9354232f625216c8fcfef48db (diff) | |
| parent | 6e6ece5dc6022e8086c565498d23511bbceda811 (diff) | |
Merge with /pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-i386/msi.h | 9 | ||||
| -rw-r--r-- | include/asm-i386/smp.h | 6 | ||||
| -rw-r--r-- | include/asm-ia64/kdebug.h | 30 | ||||
| -rw-r--r-- | include/asm-ia64/mmu_context.h | 81 | ||||
| -rw-r--r-- | include/asm-ia64/msi.h | 3 | ||||
| -rw-r--r-- | include/asm-ia64/tlbflush.h | 1 | ||||
| -rw-r--r-- | include/asm-x86_64/msi.h | 4 | ||||
| -rw-r--r-- | include/asm-x86_64/smp.h | 6 | ||||
| -rw-r--r-- | include/linux/ide.h | 3 | ||||
| -rw-r--r-- | include/linux/pci-acpi.h | 5 | ||||
| -rw-r--r-- | include/linux/pci.h | 13 |
11 files changed, 105 insertions, 56 deletions
diff --git a/include/asm-i386/msi.h b/include/asm-i386/msi.h index b85393094c83..f041d4495faf 100644 --- a/include/asm-i386/msi.h +++ b/include/asm-i386/msi.h | |||
| @@ -10,13 +10,6 @@ | |||
| 10 | #include <mach_apic.h> | 10 | #include <mach_apic.h> |
| 11 | 11 | ||
| 12 | #define LAST_DEVICE_VECTOR 232 | 12 | #define LAST_DEVICE_VECTOR 232 |
| 13 | #define MSI_DEST_MODE MSI_LOGICAL_MODE | 13 | #define MSI_TARGET_CPU_SHIFT 12 |
| 14 | #define MSI_TARGET_CPU_SHIFT 12 | ||
| 15 | |||
| 16 | #ifdef CONFIG_SMP | ||
| 17 | #define MSI_TARGET_CPU logical_smp_processor_id() | ||
| 18 | #else | ||
| 19 | #define MSI_TARGET_CPU cpu_to_logical_apicid(first_cpu(cpu_online_map)) | ||
| 20 | #endif | ||
| 21 | 14 | ||
| 22 | #endif /* ASM_MSI_H */ | 15 | #endif /* ASM_MSI_H */ |
diff --git a/include/asm-i386/smp.h b/include/asm-i386/smp.h index 13250199976d..61d3ab9db70c 100644 --- a/include/asm-i386/smp.h +++ b/include/asm-i386/smp.h | |||
| @@ -45,6 +45,8 @@ extern void unlock_ipi_call_lock(void); | |||
| 45 | #define MAX_APICID 256 | 45 | #define MAX_APICID 256 |
| 46 | extern u8 x86_cpu_to_apicid[]; | 46 | extern u8 x86_cpu_to_apicid[]; |
| 47 | 47 | ||
| 48 | #define cpu_physical_id(cpu) x86_cpu_to_apicid[cpu] | ||
| 49 | |||
| 48 | #ifdef CONFIG_HOTPLUG_CPU | 50 | #ifdef CONFIG_HOTPLUG_CPU |
| 49 | extern void cpu_exit_clear(void); | 51 | extern void cpu_exit_clear(void); |
| 50 | extern void cpu_uninit(void); | 52 | extern void cpu_uninit(void); |
| @@ -92,6 +94,10 @@ extern int __cpu_disable(void); | |||
| 92 | extern void __cpu_die(unsigned int cpu); | 94 | extern void __cpu_die(unsigned int cpu); |
| 93 | #endif /* !__ASSEMBLY__ */ | 95 | #endif /* !__ASSEMBLY__ */ |
| 94 | 96 | ||
| 97 | #else /* CONFIG_SMP */ | ||
| 98 | |||
| 99 | #define cpu_physical_id(cpu) boot_cpu_physical_apicid | ||
| 100 | |||
| 95 | #define NO_PROC_ID 0xFF /* No processor magic marker */ | 101 | #define NO_PROC_ID 0xFF /* No processor magic marker */ |
| 96 | 102 | ||
| 97 | #endif | 103 | #endif |
diff --git a/include/asm-ia64/kdebug.h b/include/asm-ia64/kdebug.h index 4d376e1663f7..8b01a083dde6 100644 --- a/include/asm-ia64/kdebug.h +++ b/include/asm-ia64/kdebug.h | |||
| @@ -22,6 +22,9 @@ | |||
| 22 | * 2005-Apr Rusty Lynch <rusty.lynch@intel.com> and Anil S Keshavamurthy | 22 | * 2005-Apr Rusty Lynch <rusty.lynch@intel.com> and Anil S Keshavamurthy |
| 23 | * <anil.s.keshavamurthy@intel.com> adopted from | 23 | * <anil.s.keshavamurthy@intel.com> adopted from |
| 24 | * include/asm-x86_64/kdebug.h | 24 | * include/asm-x86_64/kdebug.h |
| 25 | * | ||
| 26 | * 2005-Oct Keith Owens <kaos@sgi.com>. Expand notify_die to cover more | ||
| 27 | * events. | ||
| 25 | */ | 28 | */ |
| 26 | #include <linux/notifier.h> | 29 | #include <linux/notifier.h> |
| 27 | 30 | ||
| @@ -35,13 +38,36 @@ struct die_args { | |||
| 35 | int signr; | 38 | int signr; |
| 36 | }; | 39 | }; |
| 37 | 40 | ||
| 38 | int register_die_notifier(struct notifier_block *nb); | 41 | extern int register_die_notifier(struct notifier_block *); |
| 42 | extern int unregister_die_notifier(struct notifier_block *); | ||
| 39 | extern struct notifier_block *ia64die_chain; | 43 | extern struct notifier_block *ia64die_chain; |
| 40 | 44 | ||
| 41 | enum die_val { | 45 | enum die_val { |
| 42 | DIE_BREAK = 1, | 46 | DIE_BREAK = 1, |
| 43 | DIE_SS, | 47 | DIE_FAULT, |
| 48 | DIE_OOPS, | ||
| 44 | DIE_PAGE_FAULT, | 49 | DIE_PAGE_FAULT, |
| 50 | DIE_MACHINE_HALT, | ||
| 51 | DIE_MACHINE_RESTART, | ||
| 52 | DIE_MCA_MONARCH_ENTER, | ||
| 53 | DIE_MCA_MONARCH_PROCESS, | ||
| 54 | DIE_MCA_MONARCH_LEAVE, | ||
| 55 | DIE_MCA_SLAVE_ENTER, | ||
| 56 | DIE_MCA_SLAVE_PROCESS, | ||
| 57 | DIE_MCA_SLAVE_LEAVE, | ||
| 58 | DIE_MCA_RENDZVOUS_ENTER, | ||
| 59 | DIE_MCA_RENDZVOUS_PROCESS, | ||
| 60 | DIE_MCA_RENDZVOUS_LEAVE, | ||
| 61 | DIE_INIT_MONARCH_ENTER, | ||
| 62 | DIE_INIT_MONARCH_PROCESS, | ||
| 63 | DIE_INIT_MONARCH_LEAVE, | ||
| 64 | DIE_INIT_SLAVE_ENTER, | ||
| 65 | DIE_INIT_SLAVE_PROCESS, | ||
| 66 | DIE_INIT_SLAVE_LEAVE, | ||
| 67 | DIE_KDEBUG_ENTER, | ||
| 68 | DIE_KDEBUG_LEAVE, | ||
| 69 | DIE_KDUMP_ENTER, | ||
| 70 | DIE_KDUMP_LEAVE, | ||
| 45 | }; | 71 | }; |
| 46 | 72 | ||
| 47 | static inline int notify_die(enum die_val val, char *str, struct pt_regs *regs, | 73 | static inline int notify_die(enum die_val val, char *str, struct pt_regs *regs, |
diff --git a/include/asm-ia64/mmu_context.h b/include/asm-ia64/mmu_context.h index 8d6e72f7b08e..b5c65081a3aa 100644 --- a/include/asm-ia64/mmu_context.h +++ b/include/asm-ia64/mmu_context.h | |||
| @@ -7,12 +7,13 @@ | |||
| 7 | */ | 7 | */ |
| 8 | 8 | ||
| 9 | /* | 9 | /* |
| 10 | * Routines to manage the allocation of task context numbers. Task context numbers are | 10 | * Routines to manage the allocation of task context numbers. Task context |
| 11 | * used to reduce or eliminate the need to perform TLB flushes due to context switches. | 11 | * numbers are used to reduce or eliminate the need to perform TLB flushes |
| 12 | * Context numbers are implemented using ia-64 region ids. Since the IA-64 TLB does not | 12 | * due to context switches. Context numbers are implemented using ia-64 |
| 13 | * consider the region number when performing a TLB lookup, we need to assign a unique | 13 | * region ids. Since the IA-64 TLB does not consider the region number when |
| 14 | * region id to each region in a process. We use the least significant three bits in a | 14 | * performing a TLB lookup, we need to assign a unique region id to each |
| 15 | * region id for this purpose. | 15 | * region in a process. We use the least significant three bits in aregion |
| 16 | * id for this purpose. | ||
| 16 | */ | 17 | */ |
| 17 | 18 | ||
| 18 | #define IA64_REGION_ID_KERNEL 0 /* the kernel's region id (tlb.c depends on this being 0) */ | 19 | #define IA64_REGION_ID_KERNEL 0 /* the kernel's region id (tlb.c depends on this being 0) */ |
| @@ -32,13 +33,17 @@ | |||
| 32 | struct ia64_ctx { | 33 | struct ia64_ctx { |
| 33 | spinlock_t lock; | 34 | spinlock_t lock; |
| 34 | unsigned int next; /* next context number to use */ | 35 | unsigned int next; /* next context number to use */ |
| 35 | unsigned int limit; /* next >= limit => must call wrap_mmu_context() */ | 36 | unsigned int limit; /* available free range */ |
| 36 | unsigned int max_ctx; /* max. context value supported by all CPUs */ | 37 | unsigned int max_ctx; /* max. context value supported by all CPUs */ |
| 38 | /* call wrap_mmu_context when next >= max */ | ||
| 39 | unsigned long *bitmap; /* bitmap size is max_ctx+1 */ | ||
| 40 | unsigned long *flushmap;/* pending rid to be flushed */ | ||
| 37 | }; | 41 | }; |
| 38 | 42 | ||
| 39 | extern struct ia64_ctx ia64_ctx; | 43 | extern struct ia64_ctx ia64_ctx; |
| 40 | DECLARE_PER_CPU(u8, ia64_need_tlb_flush); | 44 | DECLARE_PER_CPU(u8, ia64_need_tlb_flush); |
| 41 | 45 | ||
| 46 | extern void mmu_context_init (void); | ||
| 42 | extern void wrap_mmu_context (struct mm_struct *mm); | 47 | extern void wrap_mmu_context (struct mm_struct *mm); |
| 43 | 48 | ||
| 44 | static inline void | 49 | static inline void |
| @@ -47,10 +52,10 @@ enter_lazy_tlb (struct mm_struct *mm, struct task_struct *tsk) | |||
| 47 | } | 52 | } |
| 48 | 53 | ||
| 49 | /* | 54 | /* |
| 50 | * When the context counter wraps around all TLBs need to be flushed because an old | 55 | * When the context counter wraps around all TLBs need to be flushed because |
| 51 | * context number might have been reused. This is signalled by the ia64_need_tlb_flush | 56 | * an old context number might have been reused. This is signalled by the |
| 52 | * per-CPU variable, which is checked in the routine below. Called by activate_mm(). | 57 | * ia64_need_tlb_flush per-CPU variable, which is checked in the routine |
| 53 | * <efocht@ess.nec.de> | 58 | * below. Called by activate_mm(). <efocht@ess.nec.de> |
| 54 | */ | 59 | */ |
| 55 | static inline void | 60 | static inline void |
| 56 | delayed_tlb_flush (void) | 61 | delayed_tlb_flush (void) |
| @@ -60,11 +65,9 @@ delayed_tlb_flush (void) | |||
| 60 | 65 | ||
| 61 | if (unlikely(__ia64_per_cpu_var(ia64_need_tlb_flush))) { | 66 | if (unlikely(__ia64_per_cpu_var(ia64_need_tlb_flush))) { |
| 62 | spin_lock_irqsave(&ia64_ctx.lock, flags); | 67 | spin_lock_irqsave(&ia64_ctx.lock, flags); |
| 63 | { | 68 | if (__ia64_per_cpu_var(ia64_need_tlb_flush)) { |
| 64 | if (__ia64_per_cpu_var(ia64_need_tlb_flush)) { | 69 | local_flush_tlb_all(); |
| 65 | local_flush_tlb_all(); | 70 | __ia64_per_cpu_var(ia64_need_tlb_flush) = 0; |
| 66 | __ia64_per_cpu_var(ia64_need_tlb_flush) = 0; | ||
| 67 | } | ||
| 68 | } | ||
