diff options
Diffstat (limited to 'include')
52 files changed, 419 insertions, 174 deletions
diff --git a/include/asm-arm/arch-pxa/ssp.h b/include/asm-arm/arch-pxa/ssp.h index 949878c0d908..ea200551a75f 100644 --- a/include/asm-arm/arch-pxa/ssp.h +++ b/include/asm-arm/arch-pxa/ssp.h | |||
@@ -40,8 +40,8 @@ struct ssp_dev { | |||
40 | }; | 40 | }; |
41 | 41 | ||
42 | int ssp_write_word(struct ssp_dev *dev, u32 data); | 42 | int ssp_write_word(struct ssp_dev *dev, u32 data); |
43 | int ssp_read_word(struct ssp_dev *dev); | 43 | int ssp_read_word(struct ssp_dev *dev, u32 *data); |
44 | void ssp_flush(struct ssp_dev *dev); | 44 | int ssp_flush(struct ssp_dev *dev); |
45 | void ssp_enable(struct ssp_dev *dev); | 45 | void ssp_enable(struct ssp_dev *dev); |
46 | void ssp_disable(struct ssp_dev *dev); | 46 | void ssp_disable(struct ssp_dev *dev); |
47 | void ssp_save_state(struct ssp_dev *dev, struct ssp_state *ssp); | 47 | void ssp_save_state(struct ssp_dev *dev, struct ssp_state *ssp); |
diff --git a/include/asm-arm/arch-s3c2410/dma.h b/include/asm-arm/arch-s3c2410/dma.h index 72964f9b8414..7463fd5252ce 100644 --- a/include/asm-arm/arch-s3c2410/dma.h +++ b/include/asm-arm/arch-s3c2410/dma.h | |||
@@ -104,6 +104,7 @@ enum s3c2410_chan_op_e { | |||
104 | S3C2410_DMAOP_RESUME, | 104 | S3C2410_DMAOP_RESUME, |
105 | S3C2410_DMAOP_FLUSH, | 105 | S3C2410_DMAOP_FLUSH, |
106 | S3C2410_DMAOP_TIMEOUT, /* internal signal to handler */ | 106 | S3C2410_DMAOP_TIMEOUT, /* internal signal to handler */ |
107 | S3C2410_DMAOP_STARTED, /* indicate channel started */ | ||
107 | }; | 108 | }; |
108 | 109 | ||
109 | typedef enum s3c2410_chan_op_e s3c2410_chan_op_t; | 110 | typedef enum s3c2410_chan_op_e s3c2410_chan_op_t; |
diff --git a/include/asm-arm/arch-s3c2410/regs-rtc.h b/include/asm-arm/arch-s3c2410/regs-rtc.h index 228983f89bc8..0fbec07bb6b8 100644 --- a/include/asm-arm/arch-s3c2410/regs-rtc.h +++ b/include/asm-arm/arch-s3c2410/regs-rtc.h | |||
@@ -18,7 +18,7 @@ | |||
18 | #ifndef __ASM_ARCH_REGS_RTC_H | 18 | #ifndef __ASM_ARCH_REGS_RTC_H |
19 | #define __ASM_ARCH_REGS_RTC_H __FILE__ | 19 | #define __ASM_ARCH_REGS_RTC_H __FILE__ |
20 | 20 | ||
21 | #define S3C2410_RTCREG(x) ((x) + S3C24XX_VA_RTC) | 21 | #define S3C2410_RTCREG(x) (x) |
22 | 22 | ||
23 | #define S3C2410_RTCCON S3C2410_RTCREG(0x40) | 23 | #define S3C2410_RTCCON S3C2410_RTCREG(0x40) |
24 | #define S3C2410_RTCCON_RTCEN (1<<0) | 24 | #define S3C2410_RTCCON_RTCEN (1<<0) |
diff --git a/include/asm-arm/hardware/ssp.h b/include/asm-arm/hardware/ssp.h index 28aa11b769cd..3b42e181997c 100644 --- a/include/asm-arm/hardware/ssp.h +++ b/include/asm-arm/hardware/ssp.h | |||
@@ -16,8 +16,8 @@ struct ssp_state { | |||
16 | }; | 16 | }; |
17 | 17 | ||
18 | int ssp_write_word(u16 data); | 18 | int ssp_write_word(u16 data); |
19 | int ssp_read_word(void); | 19 | int ssp_read_word(u16 *data); |
20 | void ssp_flush(void); | 20 | int ssp_flush(void); |
21 | void ssp_enable(void); | 21 | void ssp_enable(void); |
22 | void ssp_disable(void); | 22 | void ssp_disable(void); |
23 | void ssp_save_state(struct ssp_state *ssp); | 23 | void ssp_save_state(struct ssp_state *ssp); |
diff --git a/include/asm-arm/io.h b/include/asm-arm/io.h index b3479fc1cc8f..bf7b9dea30f1 100644 --- a/include/asm-arm/io.h +++ b/include/asm-arm/io.h | |||
@@ -291,5 +291,12 @@ extern void pci_iounmap(struct pci_dev *dev, void __iomem *addr); | |||
291 | */ | 291 | */ |
292 | #define xlate_dev_kmem_ptr(p) p | 292 | #define xlate_dev_kmem_ptr(p) p |
293 | 293 | ||
294 | /* | ||
295 | * Register ISA memory and port locations for glibc iopl/inb/outb | ||
296 | * emulation. | ||
297 | */ | ||
298 | extern void register_isa_ports(unsigned int mmio, unsigned int io, | ||
299 | unsigned int io_shift); | ||
300 | |||
294 | #endif /* __KERNEL__ */ | 301 | #endif /* __KERNEL__ */ |
295 | #endif /* __ASM_ARM_IO_H */ | 302 | #endif /* __ASM_ARM_IO_H */ |
diff --git a/include/asm-arm/procinfo.h b/include/asm-arm/procinfo.h index edb7b6502fcf..91a31adfa8a8 100644 --- a/include/asm-arm/procinfo.h +++ b/include/asm-arm/procinfo.h | |||
@@ -55,5 +55,6 @@ extern unsigned int elf_hwcap; | |||
55 | #define HWCAP_VFP 64 | 55 | #define HWCAP_VFP 64 |
56 | #define HWCAP_EDSP 128 | 56 | #define HWCAP_EDSP 128 |
57 | #define HWCAP_JAVA 256 | 57 | #define HWCAP_JAVA 256 |
58 | #define HWCAP_IWMMXT 512 | ||
58 | 59 | ||
59 | #endif | 60 | #endif |
diff --git a/include/asm-i386/alternative.h b/include/asm-i386/alternative.h index 96adbabec740..b01a7ec409ce 100644 --- a/include/asm-i386/alternative.h +++ b/include/asm-i386/alternative.h | |||
@@ -88,9 +88,6 @@ static inline void alternatives_smp_switch(int smp) {} | |||
88 | /* | 88 | /* |
89 | * Alternative inline assembly for SMP. | 89 | * Alternative inline assembly for SMP. |
90 | * | 90 | * |
91 | * alternative_smp() takes two versions (SMP first, UP second) and is | ||
92 | * for more complex stuff such as spinlocks. | ||
93 | * | ||
94 | * The LOCK_PREFIX macro defined here replaces the LOCK and | 91 | * The LOCK_PREFIX macro defined here replaces the LOCK and |
95 | * LOCK_PREFIX macros used everywhere in the source tree. | 92 | * LOCK_PREFIX macros used everywhere in the source tree. |
96 | * | 93 | * |
@@ -110,21 +107,6 @@ static inline void alternatives_smp_switch(int smp) {} | |||
110 | */ | 107 | */ |
111 | 108 | ||
112 | #ifdef CONFIG_SMP | 109 | #ifdef CONFIG_SMP |
113 | #define alternative_smp(smpinstr, upinstr, args...) \ | ||
114 | asm volatile ("661:\n\t" smpinstr "\n662:\n" \ | ||
115 | ".section .smp_altinstructions,\"a\"\n" \ | ||
116 | " .align 4\n" \ | ||
117 | " .long 661b\n" /* label */ \ | ||
118 | " .long 663f\n" /* new instruction */ \ | ||
119 | " .byte 0x68\n" /* X86_FEATURE_UP */ \ | ||
120 | " .byte 662b-661b\n" /* sourcelen */ \ | ||
121 | " .byte 664f-663f\n" /* replacementlen */ \ | ||
122 | ".previous\n" \ | ||
123 | ".section .smp_altinstr_replacement,\"awx\"\n" \ | ||
124 | "663:\n\t" upinstr "\n" /* replacement */ \ | ||
125 | "664:\n\t.fill 662b-661b,1,0x42\n" /* space for original */ \ | ||
126 | ".previous" : args) | ||
127 | |||
128 | #define LOCK_PREFIX \ | 110 | #define LOCK_PREFIX \ |
129 | ".section .smp_locks,\"a\"\n" \ | 111 | ".section .smp_locks,\"a\"\n" \ |
130 | " .align 4\n" \ | 112 | " .align 4\n" \ |
@@ -133,8 +115,6 @@ static inline void alternatives_smp_switch(int smp) {} | |||
133 | "661:\n\tlock; " | 115 | "661:\n\tlock; " |
134 | 116 | ||
135 | #else /* ! CONFIG_SMP */ | 117 | #else /* ! CONFIG_SMP */ |
136 | #define alternative_smp(smpinstr, upinstr, args...) \ | ||
137 | asm volatile (upinstr : args) | ||
138 | #define LOCK_PREFIX "" | 118 | #define LOCK_PREFIX "" |
139 | #endif | 119 | #endif |
140 | 120 | ||
diff --git a/include/asm-i386/mmzone.h b/include/asm-i386/mmzone.h index e33e9f9e4c66..22cb07cc8f32 100644 --- a/include/asm-i386/mmzone.h +++ b/include/asm-i386/mmzone.h | |||
@@ -14,7 +14,7 @@ extern struct pglist_data *node_data[]; | |||
14 | 14 | ||
15 | #ifdef CONFIG_X86_NUMAQ | 15 | #ifdef CONFIG_X86_NUMAQ |
16 | #include <asm/numaq.h> | 16 | #include <asm/numaq.h> |
17 | #else /* summit or generic arch */ | 17 | #elif defined(CONFIG_ACPI_SRAT)/* summit or generic arch */ |
18 | #include <asm/srat.h> | 18 | #include <asm/srat.h> |
19 | #endif | 19 | #endif |
20 | 20 | ||
diff --git a/include/asm-i386/rwlock.h b/include/asm-i386/rwlock.h index 96b0bef2ea56..3ac1ba98b1bc 100644 --- a/include/asm-i386/rwlock.h +++ b/include/asm-i386/rwlock.h | |||
@@ -21,22 +21,20 @@ | |||
21 | #define RW_LOCK_BIAS_STR "0x01000000" | 21 | #define RW_LOCK_BIAS_STR "0x01000000" |
22 | 22 | ||
23 | #define __build_read_lock_ptr(rw, helper) \ | 23 | #define __build_read_lock_ptr(rw, helper) \ |
24 | alternative_smp("lock; subl $1,(%0)\n\t" \ | 24 | asm volatile(LOCK_PREFIX " ; subl $1,(%0)\n\t" \ |
25 | "jns 1f\n" \ | 25 | "jns 1f\n" \ |
26 | "call " helper "\n\t" \ | 26 | "call " helper "\n\t" \ |
27 | "1:\n", \ | 27 | "1:\n" \ |
28 | "subl $1,(%0)\n\t", \ | ||
29 | :"a" (rw) : "memory") | 28 | :"a" (rw) : "memory") |
30 | 29 | ||
31 | #define __build_read_lock_const(rw, helper) \ | 30 | #define __build_read_lock_const(rw, helper) \ |
32 | alternative_smp("lock; subl $1,%0\n\t" \ | 31 | asm volatile(LOCK_PREFIX " ; subl $1,%0\n\t" \ |
33 | "jns 1f\n" \ | 32 | "jns 1f\n" \ |
34 | "pushl %%eax\n\t" \ | 33 | "pushl %%eax\n\t" \ |
35 | "leal %0,%%eax\n\t" \ | 34 | "leal %0,%%eax\n\t" \ |
36 | "call " helper "\n\t" \ | 35 | "call " helper "\n\t" \ |
37 | "popl %%eax\n\t" \ | 36 | "popl %%eax\n\t" \ |
38 | "1:\n", \ | 37 | "1:\n" : \ |
39 | "subl $1,%0\n\t", \ | ||
40 | "+m" (*(volatile int *)rw) : : "memory") | 38 | "+m" (*(volatile int *)rw) : : "memory") |
41 | 39 | ||
42 | #define __build_read_lock(rw, helper) do { \ | 40 | #define __build_read_lock(rw, helper) do { \ |
@@ -47,7 +45,7 @@ | |||
47 | } while (0) | 45 | } while (0) |
48 | 46 | ||
49 | #define __build_write_lock_ptr(rw, helper) \ | 47 | #define __build_write_lock_ptr(rw, helper) \ |
50 | alternative_smp("lock; subl $" RW_LOCK_BIAS_STR ",(%0)\n\t" \ | 48 | asm volatile(LOCK_PREFIX " ; subl $" RW_LOCK_BIAS_STR ",(%0)\n\t" \ |
51 | "jz 1f\n" \ | 49 | "jz 1f\n" \ |
52 | "call " helper "\n\t" \ | 50 | "call " helper "\n\t" \ |
53 | "1:\n", \ | 51 | "1:\n", \ |
@@ -55,7 +53,7 @@ | |||
55 | :"a" (rw) : "memory") | 53 | :"a" (rw) : "memory") |
56 | 54 | ||
57 | #define __build_write_lock_const(rw, helper) \ | 55 | #define __build_write_lock_const(rw, helper) \ |
58 | alternative_smp("lock; subl $" RW_LOCK_BIAS_STR ",%0\n\t" \ | 56 | asm volatile(LOCK_PREFIX " ; subl $" RW_LOCK_BIAS_STR ",%0\n\t" \ |
59 | "jz 1f\n" \ | 57 | "jz 1f\n" \ |
60 | "pushl %%eax\n\t" \ | 58 | "pushl %%eax\n\t" \ |
61 | "leal %0,%%eax\n\t" \ | 59 | "leal %0,%%eax\n\t" \ |
diff --git a/include/asm-i386/spinlock.h b/include/asm-i386/spinlock.h index d816c62a7a1d..d1020363c41a 100644 --- a/include/asm-i386/spinlock.h +++ b/include/asm-i386/spinlock.h | |||
@@ -22,7 +22,7 @@ | |||
22 | 22 | ||
23 | #define __raw_spin_lock_string \ | 23 | #define __raw_spin_lock_string \ |
24 | "\n1:\t" \ | 24 | "\n1:\t" \ |
25 | "lock ; decb %0\n\t" \ | 25 | LOCK_PREFIX " ; decb %0\n\t" \ |
26 | "jns 3f\n" \ | 26 | "jns 3f\n" \ |
27 | "2:\t" \ | 27 | "2:\t" \ |
28 | "rep;nop\n\t" \ | 28 | "rep;nop\n\t" \ |
@@ -38,7 +38,7 @@ | |||
38 | */ | 38 | */ |
39 | #define __raw_spin_lock_string_flags \ | 39 | #define __raw_spin_lock_string_flags \ |
40 | "\n1:\t" \ | 40 | "\n1:\t" \ |
41 | "lock ; decb %0\n\t" \ | 41 | LOCK_PREFIX " ; decb %0\n\t" \ |
42 | "jns 5f\n" \ | 42 | "jns 5f\n" \ |
43 | "2:\t" \ | 43 | "2:\t" \ |
44 | "testl $0x200, %1\n\t" \ | 44 | "testl $0x200, %1\n\t" \ |
@@ -57,15 +57,9 @@ | |||
57 | "jmp 4b\n" \ | 57 | "jmp 4b\n" \ |
58 | "5:\n\t" | 58 | "5:\n\t" |
59 | 59 | ||
60 | #define __raw_spin_lock_string_up \ | ||
61 | "\n\tdecb %0" | ||
62 | |||
63 | static inline void __raw_spin_lock(raw_spinlock_t *lock) | 60 | static inline void __raw_spin_lock(raw_spinlock_t *lock) |
64 | { | 61 | { |
65 | alternative_smp( | 62 | asm(__raw_spin_lock_string : "+m" (lock->slock) : : "memory"); |
66 | __raw_spin_lock_string, | ||
67 | __raw_spin_lock_string_up, | ||
68 | "+m" (lock->slock) : : "memory"); | ||
69 | } | 63 | } |
70 | 64 | ||
71 | /* | 65 | /* |
@@ -76,10 +70,7 @@ static inline void __raw_spin_lock(raw_spinlock_t *lock) | |||
76 | #ifndef CONFIG_PROVE_LOCKING | 70 | #ifndef CONFIG_PROVE_LOCKING |
77 | static inline void __raw_spin_lock_flags(raw_spinlock_t *lock, unsigned long flags) | 71 | static inline void __raw_spin_lock_flags(raw_spinlock_t *lock, unsigned long flags) |
78 | { | 72 | { |
79 | alternative_smp( | 73 | asm(__raw_spin_lock_string_flags : "+m" (lock->slock) : "r" (flags) : "memory"); |
80 | __raw_spin_lock_string_flags, | ||
81 | __raw_spin_lock_string_up, | ||
82 | "+m" (lock->slock) : "r" (flags) : "memory"); | ||
83 | } | 74 | } |
84 | #endif | 75 | #endif |
85 | 76 | ||
diff --git a/include/asm-i386/unistd.h b/include/asm-i386/unistd.h index fc1c8ddae149..d983b74e4d9f 100644 --- a/include/asm-i386/unistd.h +++ b/include/asm-i386/unistd.h | |||
@@ -324,8 +324,6 @@ | |||
324 | #define __NR_vmsplice 316 | 324 | #define __NR_vmsplice 316 |
325 | #define __NR_move_pages 317 | 325 | #define __NR_move_pages 317 |
326 | 326 | ||
327 | #ifdef __KERNEL__ | ||
328 | |||
329 | #define NR_syscalls 318 | 327 | #define NR_syscalls 318 |
330 | 328 | ||
331 | /* | 329 | /* |
@@ -425,6 +423,8 @@ __asm__ volatile ("push %%ebp ; push %%ebx ; movl 4(%2),%%ebp ; " \ | |||
425 | __syscall_return(type,__res); \ | 423 | __syscall_return(type,__res); \ |
426 | } | 424 | } |
427 | 425 | ||
426 | #ifdef __KERNEL__ | ||
427 | |||
428 | #define __ARCH_WANT_IPC_PARSE_VERSION | 428 | #define __ARCH_WANT_IPC_PARSE_VERSION |
429 | #define __ARCH_WANT_OLD_READDIR | 429 | #define __ARCH_WANT_OLD_READDIR |
430 | #define __ARCH_WANT_OLD_STAT | 430 | #define __ARCH_WANT_OLD_STAT |
diff --git a/include/asm-i386/unwind.h b/include/asm-i386/unwind.h index 69f0f1df6722..4c1a0b968569 100644 --- a/include/asm-i386/unwind.h +++ b/include/asm-i386/unwind.h | |||
@@ -87,6 +87,7 @@ static inline int arch_unw_user_mode(const struct unwind_frame_info *info) | |||
87 | #else | 87 | #else |
88 | 88 | ||
89 | #define UNW_PC(frame) ((void)(frame), 0) | 89 | #define UNW_PC(frame) ((void)(frame), 0) |
90 | #define UNW_SP(frame) ((void)(frame), 0) | ||
90 | 91 | ||
91 | static inline int arch_unw_user_mode(const void *info) | 92 | static inline int arch_unw_user_mode(const void *info) |
92 | { | 93 | { |
diff --git a/include/asm-powerpc/kexec.h b/include/asm-powerpc/kexec.h index 8f7fd5cfec34..11cbdf81fd2e 100644 --- a/include/asm-powerpc/kexec.h +++ b/include/asm-powerpc/kexec.h | |||
@@ -32,6 +32,7 @@ | |||
32 | #endif | 32 | #endif |
33 | 33 | ||
34 | #ifndef __ASSEMBLY__ | 34 | #ifndef __ASSEMBLY__ |
35 | #include <linux/cpumask.h> | ||
35 | 36 | ||
36 | #ifdef CONFIG_KEXEC | 37 | #ifdef CONFIG_KEXEC |
37 | 38 | ||
@@ -109,7 +110,6 @@ static inline void crash_setup_regs(struct pt_regs *newregs, | |||
109 | 110 | ||
110 | #define MAX_NOTE_BYTES 1024 | 111 | #define MAX_NOTE_BYTES 1024 |
111 | 112 | ||
112 | #ifdef __powerpc64__ | ||
113 | extern void kexec_smp_wait(void); /* get and clear naca physid, wait for | 113 | extern void kexec_smp_wait(void); /* get and clear naca physid, wait for |
114 | master to copy new code to 0 */ | 114 | master to copy new code to 0 */ |
115 | extern int crashing_cpu; | 115 | extern int crashing_cpu; |
@@ -119,7 +119,6 @@ static inline int kexec_sr_activated(int cpu) | |||
119 | { | 119 | { |
120 | return cpu_isset(cpu,cpus_in_sr); | 120 | return cpu_isset(cpu,cpus_in_sr); |
121 | } | 121 | } |
122 | #endif /* __powerpc64 __ */ | ||
123 | 122 | ||
124 | struct kimage; | 123 | struct kimage; |
125 | struct pt_regs; | 124 | struct pt_regs; |
diff --git a/include/asm-powerpc/pgalloc.h b/include/asm-powerpc/pgalloc.h index 9f0917c68659..ae63db7b3e7d 100644 --- a/include/asm-powerpc/pgalloc.h +++ b/include/asm-powerpc/pgalloc.h | |||
@@ -117,7 +117,7 @@ static inline void pte_free(struct page *ptepage) | |||
117 | pte_free_kernel(page_address(ptepage)); | 117 | pte_free_kernel(page_address(ptepage)); |
118 | } | 118 | } |
119 | 119 | ||
120 | #define PGF_CACHENUM_MASK 0xf | 120 | #define PGF_CACHENUM_MASK 0x3 |
121 | 121 | ||
122 | typedef struct pgtable_free { | 122 | typedef struct pgtable_free { |
123 | unsigned long val; | 123 | unsigned long val; |
diff --git a/include/asm-powerpc/rtas.h b/include/asm-powerpc/rtas.h index a33c6acffa61..82a27e9a041f 100644 --- a/include/asm-powerpc/rtas.h +++ b/include/asm-powerpc/rtas.h | |||
@@ -170,6 +170,7 @@ extern int rtas_get_sensor(int sensor, int index, int *state); | |||
170 | extern int rtas_get_power_level(int powerdomain, int *level); | 170 | extern int rtas_get_power_level(int powerdomain, int *level); |
171 | extern int rtas_set_power_level(int powerdomain, int level, int *setlevel); | 171 | extern int rtas_set_power_level(int powerdomain, int level, int *setlevel); |
172 | extern int rtas_set_indicator(int indicator, int index, int new_value); | 172 | extern int rtas_set_indicator(int indicator, int index, int new_value); |
173 | extern int rtas_set_indicator_fast(int indicator, int index, int new_value); | ||
173 | extern void rtas_progress(char *s, unsigned short hex); | 174 | extern void rtas_progress(char *s, unsigned short hex); |
174 | extern void rtas_initialize(void); | 175 | extern void rtas_initialize(void); |
175 | 176 | ||
diff --git a/include/asm-powerpc/system.h b/include/asm-powerpc/system.h index 7307aa775671..4c9f5229e833 100644 --- a/include/asm-powerpc/system.h +++ b/include/asm-powerpc/system.h | |||
@@ -53,6 +53,15 @@ | |||
53 | #define smp_read_barrier_depends() do { } while(0) | 53 | #define smp_read_barrier_depends() do { } while(0) |
54 | #endif /* CONFIG_SMP */ | 54 | #endif /* CONFIG_SMP */ |
55 | 55 | ||
56 | /* | ||
57 | * This is a barrier which prevents following instructions from being | ||
58 | * started until the value of the argument x is known. For example, if | ||
59 | * x is a variable loaded from memory, this prevents following | ||
60 | * instructions from being executed until the load has been performed. | ||
61 | */ | ||
62 | #define data_barrier(x) \ | ||
63 | asm volatile("twi 0,%0,0; isync" : : "r" (x) : "memory"); | ||
64 | |||
56 | struct task_struct; | 65 | struct task_struct; |
57 | struct pt_regs; | 66 | struct pt_regs; |
58 | 67 | ||
diff --git a/include/asm-powerpc/tsi108.h b/include/asm-powerpc/tsi108.h index c4c278d72f71..2c702d35a7cf 100644 --- a/include/asm-powerpc/tsi108.h +++ b/include/asm-powerpc/tsi108.h | |||
@@ -1,16 +1,18 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-ppc/tsi108.h | ||
3 | * | ||
4 | * common routine and memory layout for Tundra TSI108(Grendel) host bridge | 2 | * common routine and memory layout for Tundra TSI108(Grendel) host bridge |
5 | * memory controller. | 3 | * memory controller. |
6 | * | 4 | * |
7 | * Author: Jacob Pan (jacob.pan@freescale.com) | 5 | * Author: Jacob Pan (jacob.pan@freescale.com) |
8 | * Alex Bounine (alexandreb@tundra.com) | 6 | * Alex Bounine (alexandreb@tundra.com) |
9 | * 2004 (c) Freescale Semiconductor Inc. This file is licensed under | 7 | * |
10 | * the terms of the GNU General Public License version 2. This program | 8 | * Copyright 2004-2006 Freescale Semiconductor, Inc. |
11 | * is licensed "as is" without any warranty of any kind, whether express | 9 | * |
12 | * or implied. | 10 | * This program is free software; you can redistribute it and/or |
11 | * modify it under the terms of the GNU General Public License | ||
12 | * as published by the Free Software Foundation; either version | ||
13 | * 2 of the License, or (at your option) any later version. | ||
13 | */ | 14 | */ |
15 | |||
14 | #ifndef __PPC_KERNEL_TSI108_H | 16 | #ifndef __PPC_KERNEL_TSI108_H |
15 | #define __PPC_KERNEL_TSI108_H | 17 | #define __PPC_KERNEL_TSI108_H |
16 | 18 | ||
diff --git a/include/asm-powerpc/tsi108_irq.h b/include/asm-powerpc/tsi108_irq.h new file mode 100644 index 000000000000..3e4d04effa57 --- /dev/null +++ b/include/asm-powerpc/tsi108_irq.h | |||
@@ -0,0 +1,124 @@ | |||
1 | /* | ||
2 | * (C) Copyright 2005 Tundra Semiconductor Corp. | ||
3 | * Alex Bounine, <alexandreb at tundra.com). | ||
4 | * | ||
5 | * See file CREDITS for list of people who contributed to this | ||
6 | * project. | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or | ||
9 | * modify it under the terms of the GNU General Public License as | ||
10 | * published by the Free Software Foundation; either version 2 of | ||
11 | * the License, or (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; if not, write to the Free Software | ||
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | ||
21 | * MA 02111-1307 USA | ||
22 | */ | ||
23 | |||
24 | /* | ||
25 | * definitions for interrupt controller initialization and external interrupt | ||
26 | * demultiplexing on TSI108EMU/SVB boards. | ||
27 | */ | ||
28 | |||
29 | #ifndef _ASM_PPC_TSI108_IRQ_H | ||
30 | #define _ASM_PPC_TSI108_IRQ_H | ||
31 | |||
32 | /* | ||
33 | * Tsi108 interrupts | ||
34 | */ | ||
35 | #ifndef TSI108_IRQ_REG_BASE | ||
36 | #define TSI108_IRQ_REG_BASE 0 | ||
37 | #endif | ||
38 | |||
39 | #define TSI108_IRQ(x) (TSI108_IRQ_REG_BASE + (x)) | ||
40 | |||
41 | #define TSI108_MAX_VECTORS (36 + 4) /* 36 sources + PCI INT demux */ | ||
42 | #define MAX_TASK_PRIO 0xF | ||
43 | |||
44 | #define TSI108_IRQ_SPURIOUS (TSI108_MAX_VECTORS) | ||
45 | |||
46 | #define DEFAULT_PRIO_LVL 10 /* initial priority level */ | ||
47 | |||
48 | /* Interrupt vectors assignment to external and internal | ||
49 | * sources of requests. */ | ||
50 | |||
51 | /* EXTERNAL INTERRUPT SOURCES */ | ||
52 | |||
53 | #define IRQ_TSI108_EXT_INT0 TSI108_IRQ(0) /* External Source at INT[0] */ | ||
54 | #define IRQ_TSI108_EXT_INT1 TSI108_IRQ(1) /* External Source at INT[1] */ | ||
55 | #define IRQ_TSI108_EXT_INT2 TSI108_IRQ(2) /* External Source at INT[2] */ | ||
56 | #define IRQ_TSI108_EXT_INT3 TSI108_IRQ(3) /* External Source at INT[3] */ | ||
57 | |||
58 | /* INTERNAL INTERRUPT SOURCES */ | ||
59 | |||
60 | #define IRQ_TSI108_RESERVED0 TSI108_IRQ(4) /* Reserved IRQ */ | ||
61 | #define IRQ_TSI108_RESERVED1 TSI108_IRQ(5) /* Reserved IRQ */ | ||
62 | #define IRQ_TSI108_RESERVED2 TSI108_IRQ(6) /* Reserved IRQ */ | ||
63 | #define IRQ_TSI108_RESERVED3 TSI108_IRQ(7) /* Reserved IRQ */ | ||
64 | #define IRQ_TSI108_DMA0 TSI108_IRQ(8) /* DMA0 */ | ||
65 | #define IRQ_TSI108_DMA1 TSI108_IRQ(9) /* DMA1 */ | ||
66 | #define IRQ_TSI108_DMA2 TSI108_IRQ(10) /* DMA2 */ | ||
67 | #define IRQ_TSI108_DMA3 TSI108_IRQ(11) /* DMA3 */ | ||
68 | #define IRQ_TSI108_UART0 TSI108_IRQ(12) /* UART0 */ | ||
69 | #define IRQ_TSI108_UART1 TSI108_IRQ(13) /* UART1 */ | ||
70 | #define IRQ_TSI108_I2C TSI108_IRQ(14) /* I2C */ | ||
71 | #define IRQ_TSI108_GPIO TSI108_IRQ(15) /* GPIO */ | ||
72 | #define IRQ_TSI108_GIGE0 TSI108_IRQ(16) /* GIGE0 */ | ||
73 | #define IRQ_TSI108_GIGE1 TSI108_IRQ(17) /* GIGE1 */ | ||
74 | #define IRQ_TSI108_RESERVED4 TSI108_IRQ(18) /* Reserved IRQ */ | ||
75 | #define IRQ_TSI108_HLP TSI108_IRQ(19) /* HLP */ | ||
76 | #define IRQ_TSI108_SDRAM TSI108_IRQ(20) /* SDC */ | ||
77 | #define IRQ_TSI108_PROC_IF TSI108_IRQ(21) /* Processor IF */ | ||
78 | #define IRQ_TSI108_RESERVED5 TSI108_IRQ(22) /* Reserved IRQ */ | ||
79 | #define IRQ_TSI108_PCI TSI108_IRQ(23) /* PCI/X block */ | ||
80 | |||
81 | #define IRQ_TSI108_MBOX0 TSI108_IRQ(24) /* Mailbox 0 register */ | ||
82 | #define IRQ_TSI108_MBOX1 TSI108_IRQ(25) /* Mailbox 1 register */ | ||
83 | #define IRQ_TSI108_MBOX2 TSI108_IRQ(26) /* Mailbox 2 register */ | ||
84 | #define IRQ_TSI108_MBOX3 TSI108_IRQ(27) /* Mailbox 3 register */ | ||
85 | |||
86 | #define IRQ_TSI108_DBELL0 TSI108_IRQ(28) /* Doorbell 0 */ | ||
87 | #define IRQ_TSI108_DBELL1 TSI108_IRQ(29) /* Doorbell 1 */ | ||
88 | #define IRQ_TSI108_DBELL2 TSI108_IRQ(30) /* Doorbell 2 */ | ||
89 | #define IRQ_TSI108_DBELL3 TSI108_IRQ(31) /* Doorbell 3 */ | ||
90 | |||
91 | #define IRQ_TSI108_TIMER0 TSI108_IRQ(32) /* Global Timer 0 */ | ||
92 | #define IRQ_TSI108_TIMER1 TSI108_IRQ(33) /* Global Timer 1 */ | ||
93 | #define IRQ_TSI108_TIMER2 TSI108_IRQ(34) /* Global Timer 2 */ | ||
94 | #define IRQ_TSI108_TIMER3 TSI108_IRQ(35) /* Global Timer 3 */ | ||
95 | |||
96 | /* | ||
97 | * PCI bus INTA# - INTD# lines demultiplexor | ||
98 | */ | ||
99 | #define IRQ_PCI_INTAD_BASE TSI108_IRQ(36) | ||
100 | #define IRQ_PCI_INTA (IRQ_PCI_INTAD_BASE + 0) | ||
101 | #define IRQ_PCI_INTB (IRQ_PCI_INTAD_BASE + 1) | ||
102 | #define IRQ_PCI_INTC (IRQ_PCI_INTAD_BASE + 2) | ||
103 | #define IRQ_PCI_INTD (IRQ_PCI_INTAD_BASE + 3) | ||
104 | #define NUM_PCI_IRQS (4) | ||
105 | |||
106 | /* number of entries in vector dispatch table */ | ||
107 | #define IRQ_TSI108_TAB_SIZE (TSI108_MAX_VECTORS + 1) | ||
108 | |||
109 | /* Mapping of MPIC outputs to processors' interrupt pins */ | ||
110 | |||
111 | #define IDIR_INT_OUT0 0x1 | ||
112 | #define IDIR_INT_OUT1 0x2 | ||
113 | #define IDIR_INT_OUT2 0x4 | ||
114 | #define IDIR_INT_OUT3 0x8 | ||
115 | |||
116 | /*--------------------------------------------------------------- | ||
117 | * IRQ line configuration parameters */ | ||
118 | |||
119 | /* Interrupt delivery modes */ | ||
120 | typedef enum { | ||
121 | TSI108_IRQ_DIRECTED, | ||
122 | TSI108_IRQ_DISTRIBUTED, | ||
123 | } TSI108_IRQ_MODE; | ||
124 | #endif /* _ASM_PPC_TSI108_IRQ_H */ | ||
diff --git a/include/asm-ppc/cpm2.h b/include/asm-ppc/cpm2.h index c70344b91049..f6a7ff04ffe5 100644 --- a/include/asm-ppc/cpm2.h +++ b/include/asm-ppc/cpm2.h | |||
@@ -1093,5 +1093,100 @@ typedef struct im_idma { | |||
1093 | 1093 | ||
1094 | #define FCC_PSMR_RMII ((uint)0x00020000) /* Use RMII interface */ | 1094 | #define FCC_PSMR_RMII ((uint)0x00020000) /* Use RMII interface */ |
1095 | 1095 | ||
1096 | /* FCC iop & clock configuration. BSP code is responsible to define Fx_RXCLK & Fx_TXCLK | ||
1097 | * in order to use clock-computing stuff below for the FCC x | ||
1098 | */ | ||
1099 | |||
1100 | /* Automatically generates register configurations */ | ||
1101 | #define PC_CLK(x) ((uint)(1<<(x-1))) /* FCC CLK I/O ports */ | ||
1102 | |||
1103 | #define CMXFCR_RF1CS(x) ((uint)((x-5)<<27)) /* FCC1 Receive Clock Source */ | ||
1104 | #define CMXFCR_TF1CS(x) ((uint)((x-5)<<24)) /* FCC1 Transmit Clock Source */ | ||
1105 | #define CMXFCR_RF2CS(x) ((uint)((x-9)<<19)) /* FCC2 Receive Clock Source */ | ||
1106 | #define CMXFCR_TF2CS(x) ((uint)((x-9)<<16)) /* FCC2 Transmit Clock Source */ | ||
1107 | #define CMXFCR_RF3CS(x) ((uint)((x-9)<<11)) /* FCC3 Receive Clock Source */ | ||
1108 | #define CMXFCR_TF3CS(x) ((uint)((x-9)<<8)) /* FCC3 Transmit Clock Source */ | ||
1109 | |||
1110 | #define PC_F1RXCLK PC_CLK(F1_RXCLK) | ||
1111 | #define PC_F1TXCLK PC_CLK(F1_TXCLK) | ||
1112 | #define CMX1_CLK_ROUTE (CMXFCR_RF1CS(F1_RXCLK) | CMXFCR_TF1CS(F1_TXCLK)) | ||
1113 | #define CMX1_CLK_MASK ((uint)0xff000000) | ||
1114 | |||
1115 | #define PC_F2RXCLK PC_CLK(F2_RXCLK) | ||
1116 | #define PC_F2TXCLK PC_CLK(F2_TXCLK) | ||
1117 | #define CMX2_CLK_ROUTE (CMXFCR_RF2CS(F2_RXCLK) | CMXFCR_TF2CS(F2_TXCLK)) | ||
1118 | #define CMX2_CLK_MASK ((uint)0x00ff0000) | ||
1119 | |||
1120 | #define PC_F3RXCLK PC_CLK(F3_RXCLK) | ||
1121 | #define PC_F3TXCLK PC_CLK(F3_TXCLK) | ||
1122 | #define CMX3_CLK_ROUTE (CMXFCR_RF3CS(F3_RXCLK) | CMXFCR_TF3CS(F3_TXCLK)) | ||
1123 | #define CMX3_CLK_MASK ((uint)0x0000ff00) | ||
1124 | |||
1125 | #define CPMUX_CLK_MASK (CMX3_CLK_MASK | CMX2_CLK_MASK) | ||
1126 | #define CPMUX_CLK_ROUTE (CMX3_CLK_ROUTE | CMX2_CLK_ROUTE) | ||
1127 | |||
1128 | #define CLK_TRX (PC_F3TXCLK | PC_F3RXCLK | PC_F2TXCLK | PC_F2RXCLK) | ||
1129 | |||
1130 | /* I/O Pin assignment for FCC1. I don't yet know the best way to do this, | ||
1131 | * but there is little variation among the choices. | ||
1132 | */ | ||
1133 | #define PA1_COL 0x00000001U | ||
1134 | #define PA1_CRS 0x00000002U | ||
1135 | #define PA1_TXER 0x00000004U | ||
1136 | #define PA1_TXEN 0x00000008U | ||
1137 | #define PA1_RXDV 0x00000010U | ||
1138 | #define PA1_RXER 0x00000020U | ||
1139 | #define PA1_TXDAT 0x00003c00U | ||
1140 | #define PA1_RXDAT 0x0003c000U | ||
1141 | #define PA1_PSORA0 (PA1_RXDAT | PA1_TXDAT) | ||
1142 | #define PA1_PSORA1 (PA1_COL | PA1_CRS | PA1_TXER | PA1_TXEN | \ | ||
1143 | PA1_RXDV | PA1_RXER) | ||
1144 | #define PA1_DIRA0 (PA1_RXDAT | PA1_CRS | PA1_COL | PA1_RXER | PA1_RXDV) | ||
1145 | #define PA1_DIRA1 (PA1_TXDAT | PA1_TXEN | PA1_TXER) | ||
1146 | |||
1147 | |||
1148 | /* I/O Pin assignment for FCC2. I don't yet know the best way to do this, | ||
1149 | * but there is little variation among the choices. | ||
1150 | */ | ||
1151 | #define PB2_TXER 0x00000001U | ||
1152 | #define PB2_RXDV 0x00000002U | ||
1153 | #define PB2_TXEN 0x00000004U | ||
1154 | #define PB2_RXER 0x00000008U | ||
1155 | #define PB2_COL 0x00000010U | ||
1156 | #define PB2_CRS 0x00000020U | ||
1157 | #define PB2_TXDAT 0x000003c0U | ||
1158 | #define PB2_RXDAT 0x00003c00U | ||
1159 | #define PB2_PSORB0 (PB2_RXDAT | PB2_TXDAT | PB2_CRS | PB2_COL | \ | ||
1160 | PB2_RXER | PB2_RXDV | PB2_TXER) | ||
1161 | #define PB2_PSORB1 (PB2_TXEN) | ||
1162 | #define PB2_DIRB0 (PB2_RXDAT | PB2_CRS | PB2_COL | PB2_RXER | PB2_RXDV) | ||
1163 | #define PB2_DIRB1 (PB2_TXDAT | PB2_TXEN | PB2_TXER) | ||
1164 | |||
1165 | |||
1166 | /* I/O Pin assignment for FCC3. I don't yet know the best way to do this, | ||
1167 | * but there is little variation among the choices. | ||
1168 | */ | ||
1169 | #define PB3_RXDV 0x00004000U | ||
1170 | #define PB3_RXER 0x00008000U | ||
1171 | #define PB3_TXER 0x00010000U | ||
1172 | #define PB3_TXEN 0x00020000U | ||
1173 | #define PB3_COL 0x00040000U | ||
1174 | #define PB3_CRS 0x00080000U | ||
1175 | #define PB3_TXDAT 0x0f000000U | ||
1176 | #define PC3_TXDAT 0x00000010U | ||
1177 | #define PB3_RXDAT 0x00f00000U | ||
1178 | #define PB3_PSORB0 (PB3_RXDAT | PB3_TXDAT | PB3_CRS | PB3_COL | \ | ||
1179 | PB3_RXER | PB3_RXDV | PB3_TXER | PB3_TXEN) | ||
1180 | #define PB3_PSORB1 0 | ||
1181 | #define PB3_DIRB0 (PB3_RXDAT | PB3_CRS | PB3_COL | PB3_RXER | PB3_RXDV) | ||
1182 | #define PB3_DIRB1 (PB3_TXDAT | PB3_TXEN | PB3_TXER) | ||
1183 | #define PC3_DIRC1 (PC3_TXDAT) | ||
1184 | |||
1185 | /* Handy macro to specify mem for FCCs*/ | ||
1186 | #define FCC_MEM_OFFSET(x) (CPM_FCC_SPECIAL_BASE + (x*128)) | ||
1187 | #define FCC1_MEM_OFFSET FCC_MEM_OFFSET(0) | ||
1188 | #define FCC2_MEM_OFFSET FCC_MEM_OFFSET(1) | ||
1189 | #define FCC2_MEM_OFFSET FCC_MEM_OFFSET(2) | ||
1190 | |||
1096 | #endif /* __CPM2__ */ | 1191 | #endif /* __CPM2__ */ |
1097 | #endif /* __KERNEL__ */ | 1192 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-ppc/mpc8260.h b/include/asm-ppc/mpc8260.h index 4b93481e7679..23579d4afae7 100644 --- a/include/asm-ppc/mpc8260.h +++ b/include/asm-ppc/mpc8260.h | |||
@@ -82,6 +82,7 @@ enum ppc_sys_devices { | |||
82 | MPC82xx_CPM_SMC2, | 82 | MPC82xx_CPM_SMC2, |
83 | MPC82xx_CPM_USB, | 83 | MPC82xx_CPM_USB, |
84 | MPC82xx_SEC1, | 84 | MPC82xx_SEC1, |
85 | MPC82xx_MDIO_BB, | ||
85 | NUM_PPC_SYS_DEVS, | 86 | NUM_PPC_SYS_DEVS, |
86 | }; | 87 | }; |
87 | 88 | ||
diff --git a/include/asm-ppc/mpc8xx.h b/include/asm-ppc/mpc8xx.h index adcce33f20ae..d3a2f2fe230c 100644 --- a/include/asm-ppc/mpc8xx.h +++ b/include/asm-ppc/mpc8xx.h | |||
@@ -110,6 +110,7 @@ enum ppc_sys_devices { | |||
110 | MPC8xx_CPM_SMC1, | 110 | MPC8xx_CPM_SMC1, |
111 | MPC8xx_CPM_SMC2, | 111 | MPC8xx_CPM_SMC2, |
112 | MPC8xx_CPM_USB, | 112 | MPC8xx_CPM_USB, |
113 | MPC8xx_MDIO_FEC, | ||
113 | NUM_PPC_SYS_DEVS, | 114 | NUM_PPC_SYS_DEVS, |
114 | }; | 115 | }; |
115 | 116 | ||
diff --git a/include/asm-sparc64/pgtable.h b/include/asm-sparc64/pgtable.h index 1ba19eb34ce3..ebfe395cfb87 100644 --- a/include/asm-sparc64/pgtable.h +++ b/include/asm-sparc64/pgtable.h | |||
@@ -234,7 +234,7 @@ static inline pte_t pfn_pte(unsigned long pfn, pgprot_t prot) | |||
234 | sz_bits = 0UL; | 234 | sz_bits = 0UL; |
235 | if (_PAGE_SZBITS_4U != 0UL || _PAGE_SZBITS_4V != 0UL) { | 235 | if (_PAGE_SZBITS_4U != 0UL || _PAGE_SZBITS_4V != 0UL) { |
236 | __asm__ __volatile__( | 236 | __asm__ __volatile__( |
237 | "\n661: sethi %uhi(%1), %0\n" | 237 | "\n661: sethi %%uhi(%1), %0\n" |
238 | " sllx %0, 32, %0\n" | 238 | " sllx %0, 32, %0\n" |
239 | " .section .sun4v_2insn_patch, \"ax\"\n" | 239 | " .section .sun4v_2insn_patch, \"ax\"\n" |
240 | " .word 661b\n" | 240 | " .word 661b\n" |
diff --git a/include/asm-x86_64/alternative.h b/include/asm-x86_64/alternative.h index aa67bfd1b3ce..a584826cc570 100644 --- a/include/asm-x86_64/alternative.h +++ b/include/asm-x86_64/alternative.h | |||
@@ -4,6 +4,7 @@ | |||
4 | #ifdef __KERNEL__ | 4 | #ifdef __KERNEL__ |
5 | 5 | ||
6 | #include <linux/types.h> | 6 | #include <linux/types.h> |
7 | #include <asm/cpufeature.h> | ||
7 | 8 | ||
8 | struct alt_instr { | 9 | struct alt_instr { |
9 | u8 *instr; /* original instruction */ | 10 | u8 *instr; /* original instruction */ |
@@ -102,9 +103,6 @@ static inline void alternatives_smp_switch(int smp) {} | |||
102 | /* | 103 | /* |
103 | * Alternative inline assembly for SMP. | 104 | * Alternative inline assembly for SMP. |
104 | * | 105 | * |
105 | * alternative_smp() takes two versions (SMP first, UP second) and is | ||
106 | * for more complex stuff such as spinlocks. | ||
107 | * | ||
108 | * The LOCK_PREFIX macro defined here replaces the LOCK and | 106 | * The LOCK_PREFIX macro defined here replaces the LOCK and |
109 | * LOCK_PREFIX macros used everywhere in the source tree. | 107 | * LOCK_PREFIX macros used everywhere in the source tree. |
110 | * | 108 | * |
@@ -124,21 +122,6 @@ static inline void alternatives_smp_switch(int smp) {} | |||
124 | */ | 122 | */ |
125 | 123 | ||
126 | #ifdef CONFIG_SMP | 124 | #ifdef CONFIG_SMP |
127 | #define alternative_smp(smpinstr, upinstr, args...) \ | ||
128 | asm volatile ("661:\n\t" smpinstr "\n662:\n" \ | ||
129 | ".section .smp_altinstructions,\"a\"\n" \ | ||
130 | " .align 8\n" \ | ||
131 | " .quad 661b\n" /* label */ \ | ||
132 | " .quad 663f\n" /* new instruction */ \ | ||
133 | " .byte 0x66\n" /* X86_FEATURE_UP */ \ | ||
134 | " .byte 662b-661b\n" /* sourcelen */ \ | ||
135 | " .byte 664f-663f\n" /* replacementlen */ \ | ||
136 | ".previous\n" \ | ||
137 | ".section .smp_altinstr_replacement,\"awx\"\n" \ | ||
138 | "663:\n\t" upinstr "\n" /* replacement */ \ | ||
139 | "664:\n\t.fill 662b-661b,1,0x42\n" /* space for original */ \ | ||
140 | ".previous" : args) | ||
141 | |||
142 | #define LOCK_PREFIX \ | 125 | #define LOCK_PREFIX \ |
143 | ".section .smp_locks,\"a\"\n" \ | 126 | ".section .smp_locks,\"a\"\n" \ |
144 | " .align 8\n" \ | 127 | " .align 8\n" \ |
@@ -147,8 +130,6 @@ static inline void alternatives_smp_switch(int smp) {} | |||
147 | "661:\n\tlock; " | 130 | "661:\n\tlock; " |
148 | 131 | ||
149 | #else /* ! CONFIG_SMP */ | 132 | #else /* ! CONFIG_SMP */ |
150 | #define alternative_smp(smpinstr, upinstr, args...) \ | ||
151 | asm volatile (upinstr : args) | ||
152 | #define LOCK_PREFIX "" | 133 | #define LOCK_PREFIX "" |
153 | #endif | 134 | #endif |
154 | 135 | ||
diff --git a/include/asm-x86_64/processor.h b/include/asm-x86_64/processor.h index 3b3c1217fe61..de9c3147ee4c 100644 --- a/include/asm-x86_64/processor.h +++ b/include/asm-x86_64/processor.h | |||
@@ -232,8 +232,14 @@ struct tss_struct { | |||
232 | unsigned long io_bitmap[IO_BITMAP_LONGS + 1]; | 232 | unsigned long io_bitmap[IO_BITMAP_LONGS + 1]; |
233 | } __attribute__((packed)) ____cacheline_aligned; | 233 | } __attribute__((packed)) ____cacheline_aligned; |
234 | 234 | ||
235 | |||
235 | extern struct cpuinfo_x86 boot_cpu_data; | 236 | extern struct cpuinfo_x86 boot_cpu_data; |
236 | DECLARE_PER_CPU(struct tss_struct,init_tss); | 237 | DECLARE_PER_CPU(struct tss_struct,init_tss); |
238 | /* Save the original ist values for checking stack pointers during debugging */ | ||
239 | struct orig_ist { | ||
240 | unsigned long ist[7]; | ||
241 | }; | ||
242 | DECLARE_PER_CPU(struct orig_ist, orig_ist); | ||
237 | 243 | ||
238 | #ifdef CONFIG_X86_VSMP | 244 | #ifdef CONFIG_X86_VSMP |
239 | #define ARCH_MIN_TASKALIGN (1 << INTERNODE_CACHE_SHIFT) | 245 | #define ARCH_MIN_TASKALIGN (1 << INTERNODE_CACHE_SHIFT) |
diff --git a/include/asm-x86_64/spinlock.h b/include/asm-x86_64/spinlock.h index 8d3421996f94..248a79f0eaff 100644 --- a/include/asm-x86_64/spinlock.h +++ b/include/asm-x86_64/spinlock.h | |||
@@ -21,7 +21,7 @@ | |||
21 | 21 | ||
22 | #define __raw_spin_lock_string \ | 22 | #define __raw_spin_lock_string \ |
23 | "\n1:\t" \ | 23 | "\n1:\t" \ |
24 | "lock ; decl %0\n\t" \ | 24 | LOCK_PREFIX " ; decl %0\n\t" \ |
25 | "js 2f\n" \ | 25 | "js 2f\n" \ |
26 | LOCK_SECTION_START("") \ | 26 | LOCK_SECTION_START("") \ |
27 | "2:\t" \ | 27 | "2:\t" \ |
@@ -40,10 +40,7 @@ | |||
40 | 40 | ||
41 | static inline void __raw_spin_lock(raw_spinlock_t *lock) | 41 | static inline void __raw_spin_lock(raw_spinlock_t *lock) |
42 | { | 42 | { |
43 | alternative_smp( | 43 | asm volatile(__raw_spin_lock_string : "=m" (lock->slock) : : "memory"); |
44 | __raw_spin_lock_string, | ||
45 | __raw_spin_lock_string_up, | ||
46 | "=m" (lock->slock) : : "memory"); | ||
47 | } | 44 | } |
48 | 45 | ||
49 | #define __raw_spin_lock_flags(lock, flags) __raw_spin_lock(lock) | 46 | #define __raw_spin_lock_flags(lock, flags) __raw_spin_lock(lock) |
@@ -125,12 +122,12 @@ static inline int __raw_write_trylock(raw_rwlock_t *lock) | |||
125 | 122 | ||
126 | static inline void __raw_read_unlock(raw_rwlock_t *rw) | 123 | static inline void __raw_read_unlock(raw_rwlock_t *rw) |
127 | { | 124 | { |
128 | asm volatile("lock ; incl %0" :"=m" (rw->lock) : : "memory"); | 125 | asm volatile(LOCK_PREFIX " ; incl %0" :"=m" (rw->lock) : : "memory"); |
129 | } | 126 | } |
130 | 127 | ||
131 | static inline void __raw_write_unlock(raw_rwlock_t *rw) | 128 | static inline void __raw_write_unlock(raw_rwlock_t *rw) |
132 | { | 129 | { |
133 | asm volatile("lock ; addl $" RW_LOCK_BIAS_STR ",%0" | 130 | asm volatile(LOCK_PREFIX " ; addl $" RW_LOCK_BIAS_STR ",%0" |
134 | : "=m" (rw->lock) : : "memory"); | 131 | : "=m" (rw->lock) : : "memory"); |
135 | } | 132 | } |
136 | 133 | ||
diff --git a/include/asm-x86_64/unistd.h b/include/asm-x86_64/unistd.h index 94387c915e53..2d89d309a2a8 100644 --- a/include/asm-x86_64/unistd.h +++ b/include/asm-x86_64/unistd.h | |||
@@ -620,8 +620,6 @@ __SYSCALL(__NR_vmsplice, sys_vmsplice) | |||
620 | #define __NR_move_pages 279 | 620 | #define __NR_move_pages 279 |
621 | __SYSCALL(__NR_move_pages, sys_move_pages) | 621 | __SYSCALL(__NR_move_pages, sys_move_pages) |
622 | 622 | ||
623 | #ifdef __KERNEL__ | ||
624 | |||
625 | #define __NR_syscall_max __NR_move_pages | 623 | #define __NR_syscall_max __NR_move_pages |
626 | 624 | ||
627 | #ifndef __NO_STUBS | 625 | #ifndef __NO_STUBS |
@@ -746,6 +744,8 @@ __syscall_return(type,__res); \ | |||
746 | 744 | ||
747 | #else /* __KERNEL_SYSCALLS__ */ | 745 | #else /* __KERNEL_SYSCALLS__ */ |
748 | 746 | ||
747 | #ifdef __KERNEL__ | ||
748 | |||
749 | #include <linux/syscalls.h> | 749 | #include <linux/syscalls.h> |
750 | #include <asm/ptrace.h> | 750 | #include <asm/ptrace.h> |
751 | 751 | ||
@@ -838,9 +838,9 @@ asmlinkage long sys_rt_sigaction(int sig, | |||
838 | struct sigaction __user *oact, | 838 | struct sigaction __user *oact, |
839 | size_t sigsetsize); | 839 | size_t sigsetsize); |
840 | 840 | ||
841 | #endif /* __ASSEMBLY__ */ | 841 | #endif |
842 | 842 | ||
843 | #endif /* __NO_STUBS */ | 843 | #endif |
844 | 844 | ||
845 | /* | 845 | /* |
846 | * "Conditional" syscalls | 846 | * "Conditional" syscalls |
@@ -850,5 +850,6 @@ asmlinkage long sys_rt_sigaction(int sig, | |||
850 | */ | 850 | */ |
851 | #define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall") | 851 | #define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall") |
852 | 852 | ||
853 | #endif /* __KERNEL__ */ | 853 | #endif |
854 | |||
854 | #endif | 855 | #endif |
diff --git a/include/asm-x86_64/unwind.h b/include/asm-x86_64/unwind.h index f3e7124effe3..1f6e9bfb569e 100644 --- a/include/asm-x86_64/unwind.h +++ b/include/asm-x86_64/unwind.h | |||
@@ -95,6 +95,7 @@ static inline int arch_unw_user_mode(const struct unwind_frame_info *info) | |||
95 | #else | 95 | #else |
96 | 96 | ||
97 | #define UNW_PC(frame) ((void)(frame), 0) | 97 | #define UNW_PC(frame) ((void)(frame), 0) |
98 | #define UNW_SP(frame) ((void)(frame), 0) | ||
98 | 99 | ||
99 | static inline int arch_unw_user_mode(const void *info) | 100 | static inline int arch_unw_user_mode(const void *info) |
100 | { | 101 | { |
diff --git a/include/linux/compat_ioctl.h b/include/linux/compat_ioctl.h index 269d000bb2a3..bea0255196c4 100644 --- a/include/linux/compat_ioctl.h +++ b/include/linux/compat_ioctl.h | |||
@@ -216,6 +216,7 @@ COMPATIBLE_IOCTL(VT_RESIZE) | |||
216 | COMPATIBLE_IOCTL(VT_RESIZEX) | 216 | COMPATIBLE_IOCTL(VT_RESIZEX) |
217 | COMPATIBLE_IOCTL(VT_LOCKSWITCH) | 217 | COMPATIBLE_IOCTL(VT_LOCKSWITCH) |
218 | COMPATIBLE_IOCTL(VT_UNLOCKSWITCH) | 218 | COMPATIBLE_IOCTL(VT_UNLOCKSWITCH) |
219 | COMPATIBLE_IOCTL(VT_GETHIFONTMASK) | ||
219 | /* Little p (/dev/rtc, /dev/envctrl, etc.) */ | 220 | /* Little p (/dev/rtc, /dev/envctrl, etc.) */ |
220 | COMPATIBLE_IOCTL(RTC_AIE_ON) | 221 | COMPATIBLE_IOCTL(RTC_AIE_ON) |
221 | COMPATIBLE_IOCTL(RTC_AIE_OFF) | 222 | COMPATIBLE_IOCTL(RTC_AIE_OFF) |
diff --git a/include/linux/fb.h b/include/linux/fb.h index 4ad0673b1995..2f335e966011 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h | |||
@@ -1,7 +1,6 @@ | |||
1 | #ifndef _LINUX_FB_H | 1 | #ifndef _LINUX_FB_H |
2 | #define _LINUX_FB_H | 2 | #define _LINUX_FB_H |
3 | 3 | ||
4 | #include <linux/backlight.h> | ||
5 | #include <asm/types.h> | 4 | #include <asm/types.h> |
6 | 5 | ||
7 | /* Definitions of frame buffers */ | 6 | /* Definitions of frame buffers */ |
@@ -381,6 +380,7 @@ struct fb_cursor { | |||
381 | #include <linux/workqueue.h> | 380 | #include <linux/workqueue.h> |
382 | #include <linux/notifier.h> | 381 | #include <linux/notifier.h> |
383 | #include <linux/list.h> | 382 | #include <linux/list.h> |
383 | #include <linux/backlight.h> | ||
384 | #include <asm/io.h> | 384 | #include <asm/io.h> |
385 | 385 | ||
386 | struct vm_area_struct; | 386 | struct vm_area_struct; |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 25610205c90d..555bc195c420 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -570,13 +570,14 @@ struct inode { | |||
570 | * 3: quota file | 570 | * 3: quota file |
571 | * | 571 | * |
572 | * The locking order between these classes is | 572 | * The locking order between these classes is |
573 | * parent -> child -> normal -> quota | 573 | * parent -> child -> normal -> xattr -> quota |
574 | */ | 574 | */ |
575 | enum inode_i_mutex_lock_class | 575 | enum inode_i_mutex_lock_class |
576 | { | 576 | { |
577 | I_MUTEX_NORMAL, | 577 | I_MUTEX_NORMAL, |
578 | I_MUTEX_PARENT, | 578 | I_MUTEX_PARENT, |
579 | I_MUTEX_CHILD, | 579 | I_MUTEX_CHILD, |
580 | I_MUTEX_XATTR, | ||
580 | I_MUTEX_QUOTA | 581 | I_MUTEX_QUOTA |
581 | }; | 582 | }; |
582 | 583 | ||
diff --git a/include/linux/fs_enet_pd.h b/include/linux/fs_enet_pd.h index 783c476b8674..74ed35a00a94 100644 --- a/include/linux/fs_enet_pd.h +++ b/include/linux/fs_enet_pd.h | |||
@@ -69,34 +69,21 @@ enum fs_ioport { | |||
69 | fsiop_porte, | 69 | fsiop_porte, |
70 | }; | 70 | }; |
71 | 71 | ||
72 | struct fs_mii_bus_info { | 72 | struct fs_mii_bit { |
73 | int method; /* mii method */ | 73 | u32 offset; |
74 | int id; /* the id of the mii_bus */ | 74 | u8 bit; |
75 | int disable_aneg; /* if the controller needs to negothiate speed & duplex */ | 75 | u8 polarity; |
76 | int lpa; /* the default board-specific vallues will be applied otherwise */ | 76 | }; |
77 | 77 | struct fs_mii_bb_platform_info { | |
78 | union { | 78 | struct fs_mii_bit mdio_dir; |
79 | struct { | 79 | struct fs_mii_bit mdio_dat; |
80 | int duplex; | 80 | struct fs_mii_bit mdc_dat; |
81 | int speed; | 81 | int mdio_port; /* port & bit for MDIO */ |
82 | } fixed; | 82 | int mdio_bit; |
83 | 83 | int mdc_port; /* port & bit for MDC */ | |
84 | struct { | 84 | int mdc_bit; |
85 | /* nothing */ | 85 | int delay; /* delay in us */ |
86 | } fec; | 86 | int irq[32]; /* irqs per phy's */ |
87 | |||
88 | struct { | ||
89 | /* nothing */ | ||
90 | } scc; | ||
91 | |||
92 | struct { | ||
93 | int mdio_port; /* port & bit for MDIO */ | ||
94 | int mdio_bit; | ||
95 | int mdc_port; /* port & bit for MDC */ | ||
96 | int mdc_bit; | ||
97 | int delay; /* delay in us */ | ||
98 | } bitbang; | ||
99 | } i; | ||
100 | }; | 87 | }; |
101 | 88 | ||
102 | struct fs_platform_info { | 89 | struct fs_platform_info { |
@@ -119,6 +106,7 @@ struct fs_platform_info { | |||
119 | u32 device_flags; | 106 | u32 device_flags; |
120 | 107 | ||
121 | int phy_addr; /* the phy address (-1 no phy) */ | 108 | int phy_addr; /* the phy address (-1 no phy) */ |
109 | const char* bus_id; | ||
122 | int phy_irq; /* the phy irq (if it exists) */ | 110 | int phy_irq; /* the phy irq (if it exists) */ |
123 | 111 | ||
124 | const struct fs_mii_bus_info *bus_info; | 112 | const struct fs_mii_bus_info *bus_info; |
@@ -130,6 +118,10 @@ struct fs_platform_info { | |||
130 | int napi_weight; /* NAPI weight */ | 118 | int napi_weight; /* NAPI weight */ |
131 | 119 | ||
132 | int use_rmii; /* use RMII mode */ | 120 | int use_rmii; /* use RMII mode */ |
121 | int has_phy; /* if the network is phy container as well...*/ | ||
122 | }; | ||
123 | struct fs_mii_fec_platform_info { | ||
124 | u32 irq[32]; | ||
125 | u32 mii_speed; | ||
133 | }; | 126 | }; |
134 | |||
135 | #endif | 127 | #endif |
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h index 383627ad328f..ab2740832742 100644 --- a/include/linux/if_vlan.h +++ b/include/linux/if_vlan.h | |||
@@ -155,6 +155,11 @@ static inline int __vlan_hwaccel_rx(struct sk_buff *skb, | |||
155 | { | 155 | { |
156 | struct net_device_stats *stats; | 156 | struct net_device_stats *stats; |
157 | 157 | ||
158 | if (skb_bond_should_drop(skb)) { | ||
159 | dev_kfree_skb_any(skb); | ||
160 | return NET_RX_DROP; | ||
161 | } | ||
162 | |||
158 | skb->dev = grp->vlan_devices[vlan_tag & VLAN_VID_MASK]; | 163 | skb->dev = grp->vlan_devices[vlan_tag & VLAN_VID_MASK]; |
159 | if (skb->dev == NULL) { | 164 | if (skb->dev == NULL) { |
160 | dev_kfree_skb_any(skb); | 165 | dev_kfree_skb_any(skb); |
diff --git a/include/linux/ioprio.h b/include/linux/ioprio.h index 88d5961f7a3f..8e2042b9d471 100644 --- a/include/linux/ioprio.h +++ b/include/linux/ioprio.h | |||
@@ -59,27 +59,6 @@ static inline int task_nice_ioprio(struct task_struct *task) | |||
59 | /* | 59 | /* |
60 | * For inheritance, return the highest of the two given priorities | 60 | * For inheritance, return the highest of the two given priorities |
61 | */ | 61 | */ |
62 | static inline int ioprio_best(unsigned short aprio, unsigned short bprio) | 62 | extern int ioprio_best(unsigned short aprio, unsigned short bprio); |
63 | { | ||
64 | unsigned short aclass = IOPRIO_PRIO_CLASS(aprio); | ||
65 | unsigned short bclass = IOPRIO_PRIO_CLASS(bprio); | ||
66 | |||
67 | if (!ioprio_valid(aprio)) | ||
68 | return bprio; | ||
69 | if (!ioprio_valid(bprio)) | ||
70 | return aprio; | ||
71 | |||
72 | if (aclass == IOPRIO_CLASS_NONE) | ||
73 | aclass = IOPRIO_CLASS_BE; | ||
74 | if (bclass == IOPRIO_CLASS_NONE) | ||
75 | bclass = IOPRIO_CLASS_BE; | ||
76 | |||
77 | if (aclass == bclass) | ||
78 | return min(aprio, bprio); | ||
79 | if (aclass > bclass) | ||
80 | return bprio; | ||
81 | else | ||
82 | return aprio; | ||
83 | } | ||
84 | 63 | ||
85 | #endif | 64 | #endif |
diff --git a/include/linux/jbd.h b/include/linux/jbd.h index 20eb34403d0c..a04c154c5207 100644 --- a/include/linux/jbd.h +++ b/include/linux/jbd.h | |||
@@ -72,6 +72,9 @@ extern int journal_enable_debug; | |||
72 | #endif | 72 | #endif |
73 | 73 | ||
74 | extern void * __jbd_kmalloc (const char *where, size_t size, gfp_t flags, int retry); | 74 | extern void * __jbd_kmalloc (const char *where, size_t size, gfp_t flags, int retry); |
75 | extern void * jbd_slab_alloc(size_t size, gfp_t flags); | ||
76 | extern void jbd_slab_free(void *ptr, size_t size); | ||
77 | |||
75 | #define jbd_kmalloc(size, flags) \ | 78 | #define jbd_kmalloc(size, flags) \ |
76 | __jbd_kmalloc(__FUNCTION__, (size), (flags), journal_oom_retry) | 79 | __jbd_kmalloc(__FUNCTION__, (size), (flags), journal_oom_retry) |
77 | #define jbd_rep_kmalloc(size, flags) \ | 80 | #define jbd_rep_kmalloc(size, flags) \ |
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 181c69cad4e3..851aa1bcfc1a 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
@@ -210,6 +210,7 @@ extern enum system_states { | |||
210 | extern void dump_stack(void); | 210 | extern void dump_stack(void); |
211 | 211 | ||
212 | #ifdef DEBUG | 212 | #ifdef DEBUG |
213 | /* If you are writing a driver, please use dev_dbg instead */ | ||
213 | #define pr_debug(fmt,arg...) \ | 214 | #define pr_debug(fmt,arg...) \ |
214 | printk(KERN_DEBUG fmt,##arg) | 215 | printk(KERN_DEBUG fmt,##arg) |
215 | #else | 216 | #else |
diff --git a/include/linux/mm.h b/include/linux/mm.h index 990957e0929f..f0b135cd86da 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -336,6 +336,7 @@ static inline void init_page_count(struct page *page) | |||
336 | } | 336 | } |
337 | 337 | ||
338 | void put_page(struct page *page); | 338 | void put_page(struct page *page); |
339 | void put_pages_list(struct list_head *pages); | ||
339 | 340 | ||
340 | void split_page(struct page *page, unsigned int order); | 341 | void split_page(struct page *page, unsigned int order); |
341 | 342 | ||
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 75f02d8c6ed3..50a4719512ed 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -320,6 +320,9 @@ struct net_device | |||
320 | #define NETIF_F_TSO_ECN (SKB_GSO_TCP_ECN << NETIF_F_GSO_SHIFT) | 320 | #define NETIF_F_TSO_ECN (SKB_GSO_TCP_ECN << NETIF_F_GSO_SHIFT) |
321 | #define NETIF_F_TSO6 (SKB_GSO_TCPV6 << NETIF_F_GSO_SHIFT) | 321 | #define NETIF_F_TSO6 (SKB_GSO_TCPV6 << NETIF_F_GSO_SHIFT) |
322 | 322 | ||
323 | /* List of features with software fallbacks. */ | ||
324 | #define NETIF_F_GSO_SOFTWARE (NETIF_F_TSO | NETIF_F_TSO_ECN | NETIF_F_TSO6) | ||
325 | |||
323 | #define NETIF_F_GEN_CSUM (NETIF_F_NO_CSUM | NETIF_F_HW_CSUM) | 326 | #define NETIF_F_GEN_CSUM (NETIF_F_NO_CSUM | NETIF_F_HW_CSUM) |
324 | #define NETIF_F_ALL_CSUM (NETIF_F_IP_CSUM | NETIF_F_GEN_CSUM) | 327 | #define NETIF_F_ALL_CSUM (NETIF_F_IP_CSUM | NETIF_F_GEN_CSUM) |
325 | 328 | ||
@@ -1012,6 +1015,30 @@ static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb) | |||
1012 | unlikely(skb->ip_summed != CHECKSUM_HW)); | 1015 | unlikely(skb->ip_summed != CHECKSUM_HW)); |
1013 | } | 1016 | } |
1014 | 1017 | ||
1018 | /* On bonding slaves other than the currently active slave, suppress | ||
1019 | * duplicates except for 802.3ad ETH_P_SLOW and alb non-mcast/bcast. | ||
1020 | */ | ||
1021 | static inline int skb_bond_should_drop(struct sk_buff *skb) | ||
1022 | { | ||
1023 | struct net_device *dev = skb->dev; | ||
1024 | struct net_device *master = dev->master; | ||
1025 | |||
1026 | if (master && | ||
1027 | (dev->priv_flags & IFF_SLAVE_INACTIVE)) { | ||
1028 | if (master->priv_flags & IFF_MASTER_ALB) { | ||
1029 | if (skb->pkt_type != PACKET_BROADCAST && | ||
1030 | skb->pkt_type != PACKET_MULTICAST) | ||
1031 | return 0; | ||
1032 | } | ||
1033 | if (master->priv_flags & IFF_MASTER_8023AD && | ||
1034 | skb->protocol == __constant_htons(ETH_P_SLOW)) | ||
1035 | return 0; | ||
1036 | |||
1037 | return 1; | ||
1038 | } | ||
1039 | return 0; | ||
1040 | } | ||
1041 | |||
1015 | #endif /* __KERNEL__ */ | 1042 | #endif /* __KERNEL__ */ |
1016 | 1043 | ||
1017 | #endif /* _LINUX_DEV_H */ | 1044 | #endif /* _LINUX_DEV_H */ |
diff --git a/include/linux/netfilter_bridge.h b/include/linux/netfilter_bridge.h index 10c13dc4665b..427c67ff89e9 100644 --- a/include/linux/netfilter_bridge.h +++ b/include/linux/netfilter_bridge.h | |||
@@ -48,15 +48,25 @@ enum nf_br_hook_priorities { | |||
48 | 48 | ||
49 | /* Only used in br_forward.c */ | 49 | /* Only used in br_forward.c */ |
50 | static inline | 50 | static inline |
51 | void nf_bridge_maybe_copy_header(struct sk_buff *skb) | 51 | int nf_bridge_maybe_copy_header(struct sk_buff *skb) |
52 | { | 52 | { |
53 | int err; | ||
54 | |||
53 | if (skb->nf_bridge) { | 55 | if (skb->nf_bridge) { |
54 | if (skb->protocol == __constant_htons(ETH_P_8021Q)) { | 56 | if (skb->protocol == __constant_htons(ETH_P_8021Q)) { |
57 | err = skb_cow(skb, 18); | ||
58 | if (err) | ||
59 | return err; | ||
55 | memcpy(skb->data - 18, skb->nf_bridge->data, 18); | 60 | memcpy(skb->data - 18, skb->nf_bridge->data, 18); |
56 | skb_push(skb, 4); | 61 | skb_push(skb, 4); |
57 | } else | 62 | } else { |
63 | err = skb_cow(skb, 16); | ||
64 | if (err) | ||
65 | return err; | ||
58 | memcpy(skb->data - 16, skb->nf_bridge->data, 16); | 66 | memcpy(skb->data - 16, skb->nf_bridge->data, 16); |
67 | } | ||
59 | } | 68 | } |
69 | return 0; | ||
60 | } | 70 | } |
61 | 71 | ||
62 | /* This is called by the IP fragmenting code and it ensures there is | 72 | /* This is called by the IP fragmenting code and it ensures there is |
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 2d3fb6416d91..db9cbf68e12b 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h | |||
@@ -659,7 +659,7 @@ struct nfs4_rename_res { | |||
659 | struct nfs4_setclientid { | 659 | struct nfs4_setclientid { |
660 | const nfs4_verifier * sc_verifier; /* request */ | 660 | const nfs4_verifier * sc_verifier; /* request */ |
661 | unsigned int sc_name_len; | 661 | unsigned int sc_name_len; |
662 | char sc_name[32]; /* request */ | 662 | char sc_name[48]; /* request */ |
663 | u32 sc_prog; /* request */ | 663 | u32 sc_prog; /* request */ |
664 | unsigned int sc_netid_len; | 664 | unsigned int sc_netid_len; |
665 | char sc_netid[4]; /* request */ | 665 | char sc_netid[4]; /* request */ |
diff --git a/include/linux/node.h b/include/linux/node.h index 81dcec84cd8f..bc001bc225c3 100644 --- a/include/linux/node.h +++ b/include/linux/node.h | |||
@@ -30,12 +30,20 @@ extern struct node node_devices[]; | |||
30 | 30 | ||
31 | extern int register_node(struct node *, int, struct node *); | 31 | extern int register_node(struct node *, int, struct node *); |
32 | extern void unregister_node(struct node *node); | 32 | extern void unregister_node(struct node *node); |
33 | #ifdef CONFIG_NUMA | ||
33 | extern int register_one_node(int nid); | 34 | extern int register_one_node(int nid); |
34 | extern void unregister_one_node(int nid); | 35 | extern void unregister_one_node(int nid); |
35 | #ifdef CONFIG_NUMA | ||
36 | extern int register_cpu_under_node(unsigned int cpu, unsigned int nid); | 36 | extern int register_cpu_under_node(unsigned int cpu, unsigned int nid); |
37 | extern int unregister_cpu_under_node(unsigned int cpu, unsigned int nid); | 37 | extern int unregister_cpu_under_node(unsigned int cpu, unsigned int nid); |
38 | #else | 38 | #else |
39 | static inline int register_one_node(int nid) | ||
40 | { | ||
41 | return 0; | ||
42 | } | ||
43 | static inline int unregister_one_node(int nid) | ||
44 | { | ||
45 | return 0; | ||
46 | } | ||
39 | static inline int register_cpu_under_node(unsigned int cpu, unsigned int nid) | 47 | static inline int register_cpu_under_node(unsigned int cpu, unsigned int nid) |
40 | { | 48 | { |
41 | return 0; | 49 | return 0; |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 4eae06b08cf2..4c2839eab7f4 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -1726,6 +1726,9 @@ | |||
1726 | #define PCI_VENDOR_ID_DOMEX 0x134a | 1726 | #define PCI_VENDOR_ID_DOMEX 0x134a |
1727 | #define PCI_DEVICE_ID_DOMEX_DMX3191D 0x0001 | 1727 | #define PCI_DEVICE_ID_DOMEX_DMX3191D 0x0001 |
1728 | 1728 | ||
1729 | #define PCI_VENDOR_ID_INTASHIELD 0x135a | ||
1730 | #define PCI_DEVICE_ID_INTASHIELD_IS200 0x0d80 | ||
1731 | |||
1729 | #define PCI_VENDOR_ID_QUATECH 0x135C | 1732 | #define PCI_VENDOR_ID_QUATECH 0x135C |
1730 | #define PCI_DEVICE_ID_QUATECH_QSC100 0x0010 | 1733 | #define PCI_DEVICE_ID_QUATECH_QSC100 0x0010 |
1731 | #define PCI_DEVICE_ID_QUATECH_DSC100 0x0020 | 1734 | #define PCI_DEVICE_ID_QUATECH_DSC100 0x0020 |
diff --git a/include/linux/phy.h b/include/linux/phy.h index 331521a10a2d..9447a57ee8a9 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h | |||
@@ -378,6 +378,7 @@ int phy_mii_ioctl(struct phy_device *phydev, | |||
378 | struct mii_ioctl_data *mii_data, int cmd); | 378 | struct mii_ioctl_data *mii_data, int cmd); |
379 | int phy_start_interrupts(struct phy_device *phydev); | 379 | int phy_start_interrupts(struct phy_device *phydev); |
380 | void phy_print_status(struct phy_device *phydev); | 380 | void phy_print_status(struct phy_device *phydev); |
381 | struct phy_device* phy_device_create(struct mii_bus *bus, int addr, int phy_id); | ||
381 | 382 | ||
382 | extern struct bus_type mdio_bus_type; | 383 | extern struct bus_type mdio_bus_type; |
383 | #endif /* __PHY_H */ | 384 | #endif /* __PHY_H */ |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 19c96d498e20..755e9cddac47 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
@@ -1040,6 +1040,21 @@ static inline int pskb_trim(struct sk_buff *skb, unsigned int len) | |||
1040 | } | 1040 | } |
1041 | 1041 | ||
1042 | /** | 1042 | /** |
1043 | * pskb_trim_unique - remove end from a paged unique (not cloned) buffer | ||
1044 | * @skb: buffer to alter | ||
1045 | * @len: new length | ||
1046 | * | ||
1047 | * This is identical to pskb_trim except that the caller knows that | ||
1048 | * the skb is not cloned so we should never get an error due to out- | ||
1049 | * of-memory. | ||
1050 | */ | ||
1051 | static inline void pskb_trim_unique(struct sk_buff *skb, unsigned int len) | ||
1052 | { | ||
1053 | int err = pskb_trim(skb, len); | ||
1054 | BUG_ON(err); | ||
1055 | } | ||
1056 | |||
1057 | /** | ||
1043 | * skb_orphan - orphan a buffer | 1058 | * skb_orphan - orphan a buffer |
1044 | * @skb: buffer to orphan | 1059 | * @skb: buffer to orphan |
1045 | * | 1060 | * |
@@ -1081,7 +1096,7 @@ static inline void __skb_queue_purge(struct sk_buff_head *list) | |||
1081 | * the headroom they think they need without accounting for the | 1096 | * the headroom they think they need without accounting for the |
1082 | * built in space. The built in space is used for optimisations. | 1097 | * built in space. The built in space is used for optimisations. |
1083 | * | 1098 | * |
1084 | * %NULL is returned in there is no free memory. | 1099 | * %NULL is returned if there is no free memory. |
1085 | */ | 1100 | */ |
1086 | static inline struct sk_buff *__dev_alloc_skb(unsigned int length, | 1101 | static inline struct sk_buff *__dev_alloc_skb(unsigned int length, |
1087 | gfp_t gfp_mask) | 1102 | gfp_t gfp_mask) |
@@ -1101,7 +1116,7 @@ static inline struct sk_buff *__dev_alloc_skb(unsigned int length, | |||
1101 | * the headroom they think they need without accounting for the | 1116 | * the headroom they think they need without accounting for the |
1102 | * built in space. The built in space is used for optimisations. | 1117 | * built in space. The built in space is used for optimisations. |
1103 | * | 1118 | * |
1104 | * %NULL is returned in there is no free memory. Although this function | 1119 | * %NULL is returned if there is no free memory. Although this function |
1105 | * allocates memory it can be called from an interrupt. | 1120 | * allocates memory it can be called from an interrupt. |
1106 | */ | 1121 | */ |
1107 | static inline struct sk_buff *dev_alloc_skb(unsigned int length) | 1122 | static inline struct sk_buff *dev_alloc_skb(unsigned int length) |
diff --git a/include/linux/sunrpc/rpc_pipe_fs.h b/include/linux/sunrpc/rpc_pipe_fs.h index 2c2189cb30aa..a481472c9484 100644 --- a/include/linux/sunrpc/rpc_pipe_fs.h +++ b/include/linux/sunrpc/rpc_pipe_fs.h | |||
@@ -42,9 +42,9 @@ RPC_I(struct inode *inode) | |||
42 | extern int rpc_queue_upcall(struct inode *, struct rpc_pipe_msg *); | 42 | extern int rpc_queue_upcall(struct inode *, struct rpc_pipe_msg *); |
43 | 43 | ||
44 | extern struct dentry *rpc_mkdir(char *, struct rpc_clnt *); | 44 | extern struct dentry *rpc_mkdir(char *, struct rpc_clnt *); |
45 | extern int rpc_rmdir(char *); | 45 | extern int rpc_rmdir(struct dentry *); |
46 | extern struct dentry *rpc_mkpipe(char *, void *, struct rpc_pipe_ops *, int flags); | 46 | extern struct dentry *rpc_mkpipe(char *, void *, struct rpc_pipe_ops *, int flags); |
47 | extern int rpc_unlink(char *); | 47 | extern int rpc_unlink(struct dentry *); |
48 | extern struct vfsmount *rpc_get_mount(void); | 48 | extern struct vfsmount *rpc_get_mount(void); |
49 | extern void rpc_put_mount(void); | 49 | extern void rpc_put_mount(void); |
50 | 50 | ||
diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h index 840e47a4ccc5..3a0cca255b76 100644 --- a/include/linux/sunrpc/xprt.h +++ b/include/linux/sunrpc/xprt.h | |||
@@ -37,7 +37,7 @@ extern unsigned int xprt_max_resvport; | |||
37 | 37 | ||
38 | #define RPC_MIN_RESVPORT (1U) | 38 | #define RPC_MIN_RESVPORT (1U) |
39 | #define RPC_MAX_RESVPORT (65535U) | 39 | #define RPC_MAX_RESVPORT (65535U) |
40 | #define RPC_DEF_MIN_RESVPORT (650U) | 40 | #define RPC_DEF_MIN_RESVPORT (665U) |
41 | #define RPC_DEF_MAX_RESVPORT (1023U) | 41 | #define RPC_DEF_MAX_RESVPORT (1023U) |
42 | 42 | ||
43 | /* | 43 | /* |
diff --git a/include/linux/tty.h b/include/linux/tty.h index e421d5e34818..04827ca65781 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h | |||
@@ -59,6 +59,7 @@ struct tty_bufhead { | |||
59 | struct tty_buffer *head; /* Queue head */ | 59 | struct tty_buffer *head; /* Queue head */ |
60 | struct tty_buffer *tail; /* Active buffer */ | 60 | struct tty_buffer *tail; /* Active buffer */ |
61 | struct tty_buffer *free; /* Free queue head */ | 61 | struct tty_buffer *free; /* Free queue head */ |
62 | int memory_used; /* Buffer space used excluding free queue */ | ||
62 | }; | 63 | }; |
63 | /* | 64 | /* |
64 | * The pty uses char_buf and flag_buf as a contiguous buffer | 65 | * The pty uses char_buf and flag_buf as a contiguous buffer |
diff --git a/include/linux/vt.h b/include/linux/vt.h index 8ab334a48222..ba806e8711be 100644 --- a/include/linux/vt.h +++ b/include/linux/vt.h | |||
@@ -60,5 +60,6 @@ struct vt_consize { | |||
60 | #define VT_RESIZEX 0x560A /* set kernel's idea of screensize + more */ | 60 | #define VT_RESIZEX 0x560A /* set kernel's idea of screensize + more */ |
61 | #define VT_LOCKSWITCH 0x560B /* disallow vt switching */ | 61 | #define VT_LOCKSWITCH 0x560B /* disallow vt switching */ |
62 | #define VT_UNLOCKSWITCH 0x560C /* allow vt switching */ | 62 | #define VT_UNLOCKSWITCH 0x560C /* allow vt switching */ |
63 | #define VT_GETHIFONTMASK 0x560D /* return hi font mask */ | ||
63 | 64 | ||
64 | #endif /* _LINUX_VT_H */ | 65 | #endif /* _LINUX_VT_H */ |
diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h index f8665326ed9f..600d61d7d2ab 100644 --- a/include/media/v4l2-dev.h +++ b/include/media/v4l2-dev.h | |||
@@ -16,7 +16,7 @@ | |||
16 | #include <linux/device.h> | 16 | #include <linux/device.h> |
17 | #include <linux/mutex.h> | 17 | #include <linux/mutex.h> |
18 | #include <linux/compiler.h> /* need __user */ | 18 | #include <linux/compiler.h> /* need __user */ |
19 | #ifdef CONFIG_VIDEO_V4L1 | 19 | #ifdef CONFIG_VIDEO_V4L1_COMPAT |
20 | #include <linux/videodev.h> | 20 | #include <linux/videodev.h> |
21 | #else | 21 | #else |
22 | #include <linux/videodev2.h> | 22 | #include <linux/videodev2.h> |
diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index a9663b49ea54..92eae0e0f3f1 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h | |||
@@ -404,19 +404,6 @@ static inline int sctp_list_single_entry(struct list_head *head) | |||
404 | return ((head->next != head) && (head->next == head->prev)); | 404 | return ((head->next != head) && (head->next == head->prev)); |
405 | } | 405 | } |
406 | 406 | ||
407 | /* Calculate the size (in bytes) occupied by the data of an iovec. */ | ||
408 | static inline size_t get_user_iov_size(struct iovec *iov, int iovlen) | ||
409 | { | ||
410 | size_t retval = 0; | ||
411 | |||
412 | for (; iovlen > 0; --iovlen) { | ||
413 | retval += iov->iov_len; | ||
414 | iov++; | ||
415 | } | ||
416 | |||
417 | return retval; | ||
418 | } | ||
419 | |||
420 | /* Generate a random jitter in the range of -50% ~ +50% of input RTO. */ | 407 | /* Generate a random jitter in the range of -50% ~ +50% of input RTO. */ |
421 | static inline __s32 sctp_jitter(__u32 rto) | 408 | static inline __s32 sctp_jitter(__u32 rto) |
422 | { | 409 | { |
diff --git a/include/net/sctp/sm.h b/include/net/sctp/sm.h index 1eac3d0eb7a9..de313de4fefe 100644 --- a/include/net/sctp/sm.h +++ b/include/net/sctp/sm.h | |||
@@ -221,8 +221,7 @@ struct sctp_chunk *sctp_make_abort_no_data(const struct sctp_association *, | |||
221 | const struct sctp_chunk *, | 221 | const struct sctp_chunk *, |
222 | __u32 tsn); | 222 | __u32 tsn); |
223 | struct sctp_chunk *sctp_make_abort_user(const struct sctp_association *, | 223 | struct sctp_chunk *sctp_make_abort_user(const struct sctp_association *, |
224 | const struct sctp_chunk *, | 224 | const struct msghdr *, size_t msg_len); |
225 | const struct msghdr *); | ||
226 | struct sctp_chunk *sctp_make_abort_violation(const struct sctp_association *, | 225 | struct sctp_chunk *sctp_make_abort_violation(const struct sctp_association *, |
227 | const struct sctp_chunk *, | 226 | const struct sctp_chunk *, |
228 | const __u8 *, | 227 | const __u8 *, |
diff --git a/include/scsi/libiscsi.h b/include/scsi/libiscsi.h index ba2760802ded..41904f611d12 100644 --- a/include/scsi/libiscsi.h +++ b/include/scsi/libiscsi.h | |||
@@ -60,6 +60,7 @@ struct iscsi_nopin; | |||
60 | #define TMABORT_SUCCESS 0x1 | 60 | #define TMABORT_SUCCESS 0x1 |
61 | #define TMABORT_FAILED 0x2 | 61 | #define TMABORT_FAILED 0x2 |
62 | #define TMABORT_TIMEDOUT 0x3 | 62 | #define TMABORT_TIMEDOUT 0x3 |
63 | #define TMABORT_NOT_FOUND 0x4 | ||
63 | 64 | ||
64 | /* Connection suspend "bit" */ | 65 | /* Connection suspend "bit" */ |
65 | #define ISCSI_SUSPEND_BIT 1 | 66 | #define ISCSI_SUSPEND_BIT 1 |
@@ -83,6 +84,12 @@ struct iscsi_mgmt_task { | |||
83 | struct list_head running; | 84 | struct list_head running; |
84 | }; | 85 | }; |
85 | 86 | ||
87 | enum { | ||
88 | ISCSI_TASK_COMPLETED, | ||
89 | ISCSI_TASK_PENDING, | ||
90 | ISCSI_TASK_RUNNING, | ||
91 | }; | ||
92 | |||
86 | struct iscsi_cmd_task { | 93 | struct iscsi_cmd_task { |
87 | /* | 94 | /* |
88 | * Becuae LLDs allocate their hdr differently, this is a pointer to | 95 | * Becuae LLDs allocate their hdr differently, this is a pointer to |
@@ -101,6 +108,8 @@ struct iscsi_cmd_task { | |||
101 | struct iscsi_conn *conn; /* used connection */ | 108 | struct iscsi_conn *conn; /* used connection */ |
102 | struct iscsi_mgmt_task *mtask; /* tmf mtask in progr */ | 109 | struct iscsi_mgmt_task *mtask; /* tmf mtask in progr */ |
103 | 110 | ||
111 | /* state set/tested under session->lock */ | ||
112 | int state; | ||
104 | struct list_head running; /* running cmd list */ | 113 | struct list_head running; /* running cmd list */ |
105 | void *dd_data; /* driver/transport data */ | 114 | void *dd_data; /* driver/transport data */ |
106 | }; | 115 | }; |
@@ -126,6 +135,14 @@ struct iscsi_conn { | |||
126 | int id; /* CID */ | 135 | int id; /* CID */ |
127 | struct list_head item; /* maintains list of conns */ | 136 | struct list_head item; /* maintains list of conns */ |
128 | int c_stage; /* connection state */ | 137 | int c_stage; /* connection state */ |
138 | /* | ||
139 | * Preallocated buffer for pdus that have data but do not | ||
140 | * originate from scsi-ml. We never have two pdus using the | ||
141 | * buffer at the same time. It is only allocated to | ||
142 | * the default max recv size because the pdus we support | ||
143 | * should always fit in this buffer | ||
144 | */ | ||
145 | char *data; | ||
129 | struct iscsi_mgmt_task *login_mtask; /* mtask used for login/text */ | 146 | struct iscsi_mgmt_task *login_mtask; /* mtask used for login/text */ |
130 | struct iscsi_mgmt_task *mtask; /* xmit mtask in progress */ | 147 | struct iscsi_mgmt_task *mtask; /* xmit mtask in progress */ |
131 | struct iscsi_cmd_task *ctask; /* xmit ctask in progress */ | 148 | struct iscsi_cmd_task *ctask; /* xmit ctask in progress */ |
@@ -134,7 +151,7 @@ struct iscsi_conn { | |||
134 | struct kfifo *immqueue; /* immediate xmit queue */ | 151 | struct kfifo *immqueue; /* immediate xmit queue */ |
135 | struct kfifo *mgmtqueue; /* mgmt (control) xmit queue */ | 152 | struct kfifo *mgmtqueue; /* mgmt (control) xmit queue */ |
136 | struct list_head mgmt_run_list; /* list of control tasks */ | 153 | struct list_head mgmt_run_list; /* list of control tasks */ |
137 | struct kfifo *xmitqueue; /* data-path cmd queue */ | 154 | struct list_head xmitqueue; /* data-path cmd queue */ |
138 | struct list_head run_list; /* list of cmds in progress */ | 155 | struct list_head run_list; /* list of cmds in progress */ |
139 | struct work_struct xmitwork; /* per-conn. xmit workqueue */ | 156 | struct work_struct xmitwork; /* per-conn. xmit workqueue */ |
140 | /* | 157 | /* |
diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h index 5a3df1d7085f..39e833260bd0 100644 --- a/include/scsi/scsi_transport_iscsi.h +++ b/include/scsi/scsi_transport_iscsi.h | |||
@@ -57,8 +57,6 @@ struct sockaddr; | |||
57 | * @stop_conn: suspend/recover/terminate connection | 57 | * @stop_conn: suspend/recover/terminate connection |
58 | * @send_pdu: send iSCSI PDU, Login, Logout, NOP-Out, Reject, Text. | 58 | * @send_pdu: send iSCSI PDU, Login, Logout, NOP-Out, Reject, Text. |
59 | * @session_recovery_timedout: notify LLD a block during recovery timed out | 59 | * @session_recovery_timedout: notify LLD a block during recovery timed out |
60 | * @suspend_conn_recv: susepend the recv side of the connection | ||
61 | * @termincate_conn: destroy socket connection. Called with mutex lock. | ||
62 | * @init_cmd_task: Initialize a iscsi_cmd_task and any internal structs. | 60 | * @init_cmd_task: Initialize a iscsi_cmd_task and any internal structs. |
63 | * Called from queuecommand with session lock held. | 61 | * Called from queuecommand with session lock held. |
64 | * @init_mgmt_task: Initialize a iscsi_mgmt_task and any internal structs. | 62 | * @init_mgmt_task: Initialize a iscsi_mgmt_task and any internal structs. |
@@ -112,8 +110,6 @@ struct iscsi_transport { | |||
112 | char *data, uint32_t data_size); | 110 | char *data, uint32_t data_size); |
113 | void (*get_stats) (struct iscsi_cls_conn *conn, | 111 | void (*get_stats) (struct iscsi_cls_conn *conn, |
114 | struct iscsi_stats *stats); | 112 | struct iscsi_stats *stats); |
115 | void (*suspend_conn_recv) (struct iscsi_conn *conn); | ||
116 | void (*terminate_conn) (struct iscsi_conn *conn); | ||
117 | void (*init_cmd_task) (struct iscsi_cmd_task *ctask); | 113 | void (*init_cmd_task) (struct iscsi_cmd_task *ctask); |
118 | void (*init_mgmt_task) (struct iscsi_conn *conn, | 114 | void (*init_mgmt_task) (struct iscsi_conn *conn, |
119 | struct iscsi_mgmt_task *mtask, | 115 | struct iscsi_mgmt_task *mtask, |