diff options
author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2008-04-01 00:22:26 -0400 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2008-04-01 00:22:26 -0400 |
commit | 399f486286f44d55c4fff0e9cc5d712f2b443489 (patch) | |
tree | 0c2820b3e04232eaa96f08c1057b87728fb3e7a4 /include | |
parent | 481419ec9fbdf3f4ec5389c7e91a81b4a7ebee8d (diff) | |
parent | a9edadbf790d72adf6ebed476cb5caf7743e7e4a (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-linus
Diffstat (limited to 'include')
90 files changed, 393 insertions, 340 deletions
diff --git a/include/asm-arm/arch-at91/at91cap9.h b/include/asm-arm/arch-at91/at91cap9.h index 73e1fcf4a0aa..bac83adb5050 100644 --- a/include/asm-arm/arch-at91/at91cap9.h +++ b/include/asm-arm/arch-at91/at91cap9.h | |||
@@ -97,12 +97,17 @@ | |||
97 | #define AT91_PIOD (0xfffff800 - AT91_BASE_SYS) | 97 | #define AT91_PIOD (0xfffff800 - AT91_BASE_SYS) |
98 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) | 98 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) |
99 | #define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS) | 99 | #define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS) |
100 | #define AT91_SHDC (0xfffffd10 - AT91_BASE_SYS) | 100 | #define AT91_SHDWC (0xfffffd10 - AT91_BASE_SYS) |
101 | #define AT91_RTT (0xfffffd20 - AT91_BASE_SYS) | 101 | #define AT91_RTT (0xfffffd20 - AT91_BASE_SYS) |
102 | #define AT91_PIT (0xfffffd30 - AT91_BASE_SYS) | 102 | #define AT91_PIT (0xfffffd30 - AT91_BASE_SYS) |
103 | #define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) | 103 | #define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) |
104 | #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) | 104 | #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) |
105 | 105 | ||
106 | #define AT91_USART0 AT91CAP9_BASE_US0 | ||
107 | #define AT91_USART1 AT91CAP9_BASE_US1 | ||
108 | #define AT91_USART2 AT91CAP9_BASE_US2 | ||
109 | |||
110 | |||
106 | /* | 111 | /* |
107 | * Internal Memory. | 112 | * Internal Memory. |
108 | */ | 113 | */ |
diff --git a/include/asm-arm/arch-omap/board-h3.h b/include/asm-arm/arch-omap/board-h3.h index 1c2b55c61ca0..0f6404435ea8 100644 --- a/include/asm-arm/arch-omap/board-h3.h +++ b/include/asm-arm/arch-omap/board-h3.h | |||
@@ -36,7 +36,7 @@ | |||
36 | 36 | ||
37 | #define NR_IRQS (MAXIRQNUM + 1) | 37 | #define NR_IRQS (MAXIRQNUM + 1) |
38 | 38 | ||
39 | extern void __init h3_mmc_init(void); | 39 | extern void h3_mmc_init(void); |
40 | extern void h3_mmc_slot_cover_handler(void *arg, int state); | 40 | extern void h3_mmc_slot_cover_handler(void *arg, int state); |
41 | 41 | ||
42 | #endif /* __ASM_ARCH_OMAP_H3_H */ | 42 | #endif /* __ASM_ARCH_OMAP_H3_H */ |
diff --git a/include/asm-arm/arch-omap/common.h b/include/asm-arm/arch-omap/common.h index 442aecbb8f44..224e009e5296 100644 --- a/include/asm-arm/arch-omap/common.h +++ b/include/asm-arm/arch-omap/common.h | |||
@@ -27,9 +27,7 @@ | |||
27 | #ifndef __ARCH_ARM_MACH_OMAP_COMMON_H | 27 | #ifndef __ARCH_ARM_MACH_OMAP_COMMON_H |
28 | #define __ARCH_ARM_MACH_OMAP_COMMON_H | 28 | #define __ARCH_ARM_MACH_OMAP_COMMON_H |
29 | 29 | ||
30 | #ifdef CONFIG_I2C_OMAP | ||
31 | #include <linux/i2c.h> | 30 | #include <linux/i2c.h> |
32 | #endif | ||
33 | 31 | ||
34 | struct sys_timer; | 32 | struct sys_timer; |
35 | 33 | ||
@@ -41,7 +39,12 @@ extern int omap_register_i2c_bus(int bus_id, u32 clkrate, | |||
41 | struct i2c_board_info const *info, | 39 | struct i2c_board_info const *info, |
42 | unsigned len); | 40 | unsigned len); |
43 | #else | 41 | #else |
44 | #define omap_register_i2c_bus(a, b, c, d) 0 | 42 | static inline int omap_register_i2c_bus(int bus_id, u32 clkrate, |
43 | struct i2c_board_info const *info, | ||
44 | unsigned len) | ||
45 | { | ||
46 | return 0; | ||
47 | } | ||
45 | #endif | 48 | #endif |
46 | 49 | ||
47 | #endif /* __ARCH_ARM_MACH_OMAP_COMMON_H */ | 50 | #endif /* __ARCH_ARM_MACH_OMAP_COMMON_H */ |
diff --git a/include/asm-arm/arch-omap/dsp_common.h b/include/asm-arm/arch-omap/dsp_common.h index c61f868f24ee..da97736f3efa 100644 --- a/include/asm-arm/arch-omap/dsp_common.h +++ b/include/asm-arm/arch-omap/dsp_common.h | |||
@@ -24,11 +24,17 @@ | |||
24 | #ifndef ASM_ARCH_DSP_COMMON_H | 24 | #ifndef ASM_ARCH_DSP_COMMON_H |
25 | #define ASM_ARCH_DSP_COMMON_H | 25 | #define ASM_ARCH_DSP_COMMON_H |
26 | 26 | ||
27 | #ifdef CONFIG_ARCH_OMAP1 | 27 | #if defined(CONFIG_ARCH_OMAP1) && defined(CONFIG_OMAP_MMU_FWK) |
28 | extern void omap_dsp_request_mpui(void); | 28 | extern void omap_dsp_request_mpui(void); |
29 | extern void omap_dsp_release_mpui(void); | 29 | extern void omap_dsp_release_mpui(void); |
30 | extern int omap_dsp_request_mem(void); | 30 | extern int omap_dsp_request_mem(void); |
31 | extern int omap_dsp_release_mem(void); | 31 | extern int omap_dsp_release_mem(void); |
32 | #else | ||
33 | static inline int omap_dsp_request_mem(void) | ||
34 | { | ||
35 | return 0; | ||
36 | } | ||
37 | #define omap_dsp_release_mem() do {} while (0) | ||
32 | #endif | 38 | #endif |
33 | 39 | ||
34 | #endif /* ASM_ARCH_DSP_COMMON_H */ | 40 | #endif /* ASM_ARCH_DSP_COMMON_H */ |
diff --git a/include/asm-arm/arch-omap/gpioexpander.h b/include/asm-arm/arch-omap/gpioexpander.h index 7a43b0a912e4..4eed1f80e2fb 100644 --- a/include/asm-arm/arch-omap/gpioexpander.h +++ b/include/asm-arm/arch-omap/gpioexpander.h | |||
@@ -18,7 +18,18 @@ | |||
18 | 18 | ||
19 | /* Function Prototypes for GPIO Expander functions */ | 19 | /* Function Prototypes for GPIO Expander functions */ |
20 | 20 | ||
21 | #ifdef CONFIG_GPIOEXPANDER_OMAP | ||
21 | int read_gpio_expa(u8 *, int); | 22 | int read_gpio_expa(u8 *, int); |
22 | int write_gpio_expa(u8 , int); | 23 | int write_gpio_expa(u8 , int); |
24 | #else | ||
25 | static inline int read_gpio_expa(u8 *val, int addr) | ||
26 | { | ||
27 | return 0; | ||
28 | } | ||
29 | static inline int write_gpio_expa(u8 val, int addr) | ||
30 | { | ||
31 | return 0; | ||
32 | } | ||
33 | #endif | ||
23 | 34 | ||
24 | #endif /* __ASM_ARCH_OMAP_GPIOEXPANDER_H */ | 35 | #endif /* __ASM_ARCH_OMAP_GPIOEXPANDER_H */ |
diff --git a/include/asm-arm/arch-s3c2410/irqs.h b/include/asm-arm/arch-s3c2410/irqs.h index d858b3eb5547..f5435d8c3769 100644 --- a/include/asm-arm/arch-s3c2410/irqs.h +++ b/include/asm-arm/arch-s3c2410/irqs.h | |||
@@ -85,7 +85,7 @@ | |||
85 | #define IRQ_EINT23 S3C2410_IRQ(51) | 85 | #define IRQ_EINT23 S3C2410_IRQ(51) |
86 | 86 | ||
87 | 87 | ||
88 | #define IRQ_EINT(x) S3C2410_IRQ((x >= 4) ? (IRQ_EINT4 + (x) - 4) : (S3C2410_IRQ(0) + (x))) | 88 | #define IRQ_EINT(x) (((x) >= 4) ? (IRQ_EINT4 + (x) - 4) : (IRQ_EINT0 + (x))) |
89 | 89 | ||
90 | #define IRQ_LCD_FIFO S3C2410_IRQ(52) | 90 | #define IRQ_LCD_FIFO S3C2410_IRQ(52) |
91 | #define IRQ_LCD_FRAME S3C2410_IRQ(53) | 91 | #define IRQ_LCD_FRAME S3C2410_IRQ(53) |
diff --git a/include/asm-arm/pgtable-nommu.h b/include/asm-arm/pgtable-nommu.h index 33c83dd87965..2e5868bbe03b 100644 --- a/include/asm-arm/pgtable-nommu.h +++ b/include/asm-arm/pgtable-nommu.h | |||
@@ -92,6 +92,8 @@ extern unsigned int kobjsize(const void *objp); | |||
92 | 92 | ||
93 | #define FIRST_USER_ADDRESS (0) | 93 | #define FIRST_USER_ADDRESS (0) |
94 | 94 | ||
95 | #include <asm-generic/pgtable.h> | ||
96 | |||
95 | #else | 97 | #else |
96 | 98 | ||
97 | /* | 99 | /* |
diff --git a/include/asm-arm/plat-s3c/uncompress.h b/include/asm-arm/plat-s3c/uncompress.h index b5e6208175d1..19b9eda39485 100644 --- a/include/asm-arm/plat-s3c/uncompress.h +++ b/include/asm-arm/plat-s3c/uncompress.h | |||
@@ -27,8 +27,8 @@ static void arch_detect_cpu(void); | |||
27 | 27 | ||
28 | /* defines for UART registers */ | 28 | /* defines for UART registers */ |
29 | 29 | ||
30 | #include "asm/plat-s3c/regs-serial.h" | 30 | #include <asm/plat-s3c/regs-serial.h> |
31 | #include "asm/plat-s3c/regs-watchdog.h" | 31 | #include <asm/plat-s3c/regs-watchdog.h> |
32 | 32 | ||
33 | /* working in physical space... */ | 33 | /* working in physical space... */ |
34 | #undef S3C2410_WDOGREG | 34 | #undef S3C2410_WDOGREG |
diff --git a/include/asm-arm/proc-fns.h b/include/asm-arm/proc-fns.h index a4ce457199d3..75ec760f4c74 100644 --- a/include/asm-arm/proc-fns.h +++ b/include/asm-arm/proc-fns.h | |||
@@ -214,9 +214,9 @@ | |||
214 | #ifndef __ASSEMBLY__ | 214 | #ifndef __ASSEMBLY__ |
215 | 215 | ||
216 | #ifndef MULTI_CPU | 216 | #ifndef MULTI_CPU |
217 | #include "asm/cpu-single.h" | 217 | #include <asm/cpu-single.h> |
218 | #else | 218 | #else |
219 | #include "asm/cpu-multi32.h" | 219 | #include <asm/cpu-multi32.h> |
220 | #endif | 220 | #endif |
221 | 221 | ||
222 | #include <asm/memory.h> | 222 | #include <asm/memory.h> |
diff --git a/include/asm-avr32/byteorder.h b/include/asm-avr32/byteorder.h index 402ff4125cdc..d77b48ba7338 100644 --- a/include/asm-avr32/byteorder.h +++ b/include/asm-avr32/byteorder.h | |||
@@ -12,8 +12,14 @@ extern unsigned long __builtin_bswap_32(unsigned long x); | |||
12 | extern unsigned short __builtin_bswap_16(unsigned short x); | 12 | extern unsigned short __builtin_bswap_16(unsigned short x); |
13 | #endif | 13 | #endif |
14 | 14 | ||
15 | /* | ||
16 | * avr32-linux-gcc versions earlier than 4.2 improperly sign-extends | ||
17 | * the result. | ||
18 | */ | ||
19 | #if !(__GNUC__ == 4 && __GNUC_MINOR__ < 2) | ||
15 | #define __arch__swab32(x) __builtin_bswap_32(x) | 20 | #define __arch__swab32(x) __builtin_bswap_32(x) |
16 | #define __arch__swab16(x) __builtin_bswap_16(x) | 21 | #define __arch__swab16(x) __builtin_bswap_16(x) |
22 | #endif | ||
17 | 23 | ||
18 | #if !defined(__STRICT_ANSI__) || defined(__KERNEL__) | 24 | #if !defined(__STRICT_ANSI__) || defined(__KERNEL__) |
19 | # define __BYTEORDER_HAS_U64__ | 25 | # define __BYTEORDER_HAS_U64__ |
diff --git a/include/asm-frv/system.h b/include/asm-frv/system.h index b400cea81487..2c57f4734746 100644 --- a/include/asm-frv/system.h +++ b/include/asm-frv/system.h | |||
@@ -234,7 +234,7 @@ extern void free_initmem(void); | |||
234 | break; \ | 234 | break; \ |
235 | \ | 235 | \ |
236 | default: \ | 236 | default: \ |
237 | __xg_orig = 0; \ | 237 | __xg_orig = (__typeof__(__xg_orig))0; \ |
238 | asm volatile("break"); \ | 238 | asm volatile("break"); \ |
239 | break; \ | 239 | break; \ |
240 | } \ | 240 | } \ |
@@ -259,7 +259,7 @@ extern uint32_t __cmpxchg_32(uint32_t *v, uint32_t test, uint32_t new); | |||
259 | (__force uint32_t)__xg_test, \ | 259 | (__force uint32_t)__xg_test, \ |
260 | (__force uint32_t)__xg_new); break; \ | 260 | (__force uint32_t)__xg_new); break; \ |
261 | default: \ | 261 | default: \ |
262 | __xg_orig = 0; \ | 262 | __xg_orig = (__typeof__(__xg_orig))0; \ |
263 | asm volatile("break"); \ | 263 | asm volatile("break"); \ |
264 | break; \ | 264 | break; \ |
265 | } \ | 265 | } \ |
diff --git a/include/asm-h8300/uaccess.h b/include/asm-h8300/uaccess.h index a22350ec271a..356068cd0879 100644 --- a/include/asm-h8300/uaccess.h +++ b/include/asm-h8300/uaccess.h | |||
@@ -91,22 +91,19 @@ extern int __put_user_bad(void); | |||
91 | #define get_user(x, ptr) \ | 91 | #define get_user(x, ptr) \ |
92 | ({ \ | 92 | ({ \ |
93 | int __gu_err = 0; \ | 93 | int __gu_err = 0; \ |
94 | uint32_t __gu_val = 0; \ | 94 | typeof(*(ptr)) __gu_val = *ptr; \ |
95 | switch (sizeof(*(ptr))) { \ | 95 | switch (sizeof(*(ptr))) { \ |
96 | case 1: \ | 96 | case 1: \ |
97 | case 2: \ | 97 | case 2: \ |
98 | case 4: \ | 98 | case 4: \ |
99 | __gu_val = *(ptr); \ | 99 | case 8: \ |
100 | break; \ | ||
101 | case 8: \ | ||
102 | memcpy(&__gu_val, ptr, sizeof (*(ptr))); \ | ||
103 | break; \ | 100 | break; \ |
104 | default: \ | 101 | default: \ |
105 | __gu_val = 0; \ | ||
106 | __gu_err = __get_user_bad(); \ | 102 | __gu_err = __get_user_bad(); \ |
103 | __gu_val = 0; \ | ||
107 | break; \ | 104 | break; \ |
108 | } \ | 105 | } \ |
109 | (x) = (typeof(*(ptr)))__gu_val; \ | 106 | (x) = __gu_val; \ |
110 | __gu_err; \ | 107 | __gu_err; \ |
111 | }) | 108 | }) |
112 | #define __get_user(x, ptr) get_user(x, ptr) | 109 | #define __get_user(x, ptr) get_user(x, ptr) |
diff --git a/include/asm-mips/cacheflush.h b/include/asm-mips/cacheflush.h index 4933b4947ed0..01e7eadc97e2 100644 --- a/include/asm-mips/cacheflush.h +++ b/include/asm-mips/cacheflush.h | |||
@@ -93,7 +93,7 @@ extern void (*flush_data_cache_page)(unsigned long addr); | |||
93 | clear_bit(PG_dcache_dirty, &(page)->flags) | 93 | clear_bit(PG_dcache_dirty, &(page)->flags) |
94 | 94 | ||
95 | /* Run kernel code uncached, useful for cache probing functions. */ | 95 | /* Run kernel code uncached, useful for cache probing functions. */ |
96 | unsigned long __init run_uncached(void *func); | 96 | unsigned long run_uncached(void *func); |
97 | 97 | ||
98 | extern void *kmap_coherent(struct page *page, unsigned long addr); | 98 | extern void *kmap_coherent(struct page *page, unsigned long addr); |
99 | extern void kunmap_coherent(void); | 99 | extern void kunmap_coherent(void); |
diff --git a/include/asm-mips/highmem.h b/include/asm-mips/highmem.h index 4d6bd5c31c7b..4374ab2adc75 100644 --- a/include/asm-mips/highmem.h +++ b/include/asm-mips/highmem.h | |||
@@ -39,7 +39,6 @@ extern pte_t *pkmap_page_table; | |||
39 | * easily, subsequent pte tables have to be allocated in one physical | 39 | * easily, subsequent pte tables have to be allocated in one physical |
40 | * chunk of RAM. | 40 | * chunk of RAM. |
41 | */ | 41 | */ |
42 | #define PKMAP_BASE (0xfe000000UL) | ||
43 | #define LAST_PKMAP 1024 | 42 | #define LAST_PKMAP 1024 |
44 | #define LAST_PKMAP_MASK (LAST_PKMAP-1) | 43 | #define LAST_PKMAP_MASK (LAST_PKMAP-1) |
45 | #define PKMAP_NR(virt) ((virt-PKMAP_BASE) >> PAGE_SHIFT) | 44 | #define PKMAP_NR(virt) ((virt-PKMAP_BASE) >> PAGE_SHIFT) |
diff --git a/include/asm-mips/mach-ip27/cpu-feature-overrides.h b/include/asm-mips/mach-ip27/cpu-feature-overrides.h index fe076380c189..7d3112b148d9 100644 --- a/include/asm-mips/mach-ip27/cpu-feature-overrides.h +++ b/include/asm-mips/mach-ip27/cpu-feature-overrides.h | |||
@@ -34,7 +34,11 @@ | |||
34 | #define cpu_has_64bits 1 | 34 | #define cpu_has_64bits 1 |
35 | 35 | ||
36 | #define cpu_has_4kex 1 | 36 | #define cpu_has_4kex 1 |
37 | #define cpu_has_3k_cache 0 | ||
38 | #define cpu_has_6k_cache 0 | ||
37 | #define cpu_has_4k_cache 1 | 39 | #define cpu_has_4k_cache 1 |
40 | #define cpu_has_8k_cache 0 | ||
41 | #define cpu_has_tx39_cache 0 | ||
38 | 42 | ||
39 | #define cpu_has_inclusive_pcaches 1 | 43 | #define cpu_has_inclusive_pcaches 1 |
40 | 44 | ||
diff --git a/include/asm-mips/mach-jmr3927/ioremap.h b/include/asm-mips/mach-jmr3927/ioremap.h index aa131ad7f717..29989ff10d66 100644 --- a/include/asm-mips/mach-jmr3927/ioremap.h +++ b/include/asm-mips/mach-jmr3927/ioremap.h | |||
@@ -25,7 +25,7 @@ static inline void __iomem *plat_ioremap(phys_t offset, unsigned long size, | |||
25 | { | 25 | { |
26 | #define TXX9_DIRECTMAP_BASE 0xff000000ul | 26 | #define TXX9_DIRECTMAP_BASE 0xff000000ul |
27 | if (offset >= TXX9_DIRECTMAP_BASE && | 27 | if (offset >= TXX9_DIRECTMAP_BASE && |
28 | offset < TXX9_DIRECTMAP_BASE + 0xf0000) | 28 | offset < TXX9_DIRECTMAP_BASE + 0xff0000) |
29 | return (void __iomem *)offset; | 29 | return (void __iomem *)offset; |
30 | return NULL; | 30 | return NULL; |
31 | } | 31 | } |
diff --git a/include/asm-mips/mach-lasat/irq.h b/include/asm-mips/mach-lasat/irq.h index da75f89f3723..3a282419d5f9 100644 --- a/include/asm-mips/mach-lasat/irq.h +++ b/include/asm-mips/mach-lasat/irq.h | |||
@@ -1,7 +1,7 @@ | |||
1 | #ifndef _ASM_MACH_LASAT_IRQ_H | 1 | #ifndef _ASM_MACH_LASAT_IRQ_H |
2 | #define _ASM_MACH_LASAT_IRQ_H | 2 | #define _ASM_MACH_LASAT_IRQ_H |
3 | 3 | ||
4 | #define LASAT_CASCADE_IRQ (MIPS_CPU_IRQ_BASE + 0) | 4 | #define LASAT_CASCADE_IRQ (MIPS_CPU_IRQ_BASE + 2) |
5 | 5 | ||
6 | #define LASAT_IRQ_BASE 8 | 6 | #define LASAT_IRQ_BASE 8 |
7 | #define LASAT_IRQ_END 23 | 7 | #define LASAT_IRQ_END 23 |
diff --git a/include/asm-mips/pgtable-32.h b/include/asm-mips/pgtable-32.h index a0947092d0e0..ceefe027c761 100644 --- a/include/asm-mips/pgtable-32.h +++ b/include/asm-mips/pgtable-32.h | |||
@@ -65,6 +65,8 @@ extern int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1, | |||
65 | 65 | ||
66 | #define VMALLOC_START MAP_BASE | 66 | #define VMALLOC_START MAP_BASE |
67 | 67 | ||
68 | #define PKMAP_BASE (0xfe000000UL) | ||
69 | |||
68 | #ifdef CONFIG_HIGHMEM | 70 | #ifdef CONFIG_HIGHMEM |
69 | # define VMALLOC_END (PKMAP_BASE-2*PAGE_SIZE) | 71 | # define VMALLOC_END (PKMAP_BASE-2*PAGE_SIZE) |
70 | #else | 72 | #else |
diff --git a/include/asm-mips/time.h b/include/asm-mips/time.h index a8fd16e1981f..d3bd5c5aa2ec 100644 --- a/include/asm-mips/time.h +++ b/include/asm-mips/time.h | |||
@@ -64,10 +64,11 @@ static inline int mips_clockevent_init(void) | |||
64 | * Initialize the count register as a clocksource | 64 | * Initialize the count register as a clocksource |
65 | */ | 65 | */ |
66 | #ifdef CONFIG_CEVT_R4K | 66 | #ifdef CONFIG_CEVT_R4K |
67 | extern void init_mips_clocksource(void); | 67 | extern int init_mips_clocksource(void); |
68 | #else | 68 | #else |
69 | static inline void init_mips_clocksource(void) | 69 | static inline int init_mips_clocksource(void) |
70 | { | 70 | { |
71 | return 0; | ||
71 | } | 72 | } |
72 | #endif | 73 | #endif |
73 | 74 | ||
diff --git a/include/asm-parisc/elf.h b/include/asm-parisc/elf.h index ce0c0d844c7d..d0a4a8262818 100644 --- a/include/asm-parisc/elf.h +++ b/include/asm-parisc/elf.h | |||
@@ -204,7 +204,7 @@ typedef struct elf64_fdesc { | |||
204 | /* | 204 | /* |
205 | * The following definitions are those for 32-bit ELF binaries on a 32-bit | 205 | * The following definitions are those for 32-bit ELF binaries on a 32-bit |
206 | * kernel and for 64-bit binaries on a 64-bit kernel. To run 32-bit binaries | 206 | * kernel and for 64-bit binaries on a 64-bit kernel. To run 32-bit binaries |
207 | * on a 64-bit kernel, arch/parisc64/kernel/binfmt_elf32.c defines these | 207 | * on a 64-bit kernel, arch/parisc/kernel/binfmt_elf32.c defines these |
208 | * macros appropriately and then #includes binfmt_elf.c, which then includes | 208 | * macros appropriately and then #includes binfmt_elf.c, which then includes |
209 | * this file. | 209 | * this file. |
210 | */ | 210 | */ |
@@ -216,26 +216,25 @@ typedef struct elf64_fdesc { | |||
216 | * Note that this header file is used by default in fs/binfmt_elf.c. So | 216 | * Note that this header file is used by default in fs/binfmt_elf.c. So |
217 | * the following macros are for the default case. However, for the 64 | 217 | * the following macros are for the default case. However, for the 64 |
218 | * bit kernel we also support 32 bit parisc binaries. To do that | 218 | * bit kernel we also support 32 bit parisc binaries. To do that |
219 | * arch/parisc64/kernel/binfmt_elf32.c defines its own set of these | 219 | * arch/parisc/kernel/binfmt_elf32.c defines its own set of these |
220 | * macros, and then it includes fs/binfmt_elf.c to provide an alternate | 220 | * macros, and then it includes fs/binfmt_elf.c to provide an alternate |
221 | * elf binary handler for 32 bit binaries (on the 64 bit kernel). | 221 | * elf binary handler for 32 bit binaries (on the 64 bit kernel). |
222 | */ | 222 | */ |
223 | #ifdef CONFIG_64BIT | 223 | #ifdef CONFIG_64BIT |
224 | #define ELF_CLASS ELFCLASS64 | 224 | #define ELF_CLASS ELFCLASS64 |
225 | #else | 225 | #else |
226 | #define ELF_CLASS ELFCLASS32 | 226 | #define ELF_CLASS ELFCLASS32 |
227 | #endif | 227 | #endif |
228 | 228 | ||
229 | typedef unsigned long elf_greg_t; | 229 | typedef unsigned long elf_greg_t; |
230 | 230 | ||
231 | /* This yields a string that ld.so will use to load implementation | 231 | /* |
232 | specific libraries for optimization. This is more specific in | 232 | * This yields a string that ld.so will use to load implementation |
233 | intent than poking at uname or /proc/cpuinfo. | 233 | * specific libraries for optimization. This is more specific in |
234 | 234 | * intent than poking at uname or /proc/cpuinfo. | |
235 | For the moment, we have only optimizations for the Intel generations, | 235 | */ |
236 | but that could change... */ | ||
237 | 236 | ||
238 | #define ELF_PLATFORM ("PARISC\0" /*+((boot_cpu_data.x86-3)*5) */) | 237 | #define ELF_PLATFORM ("PARISC\0") |
239 | 238 | ||
240 | #define SET_PERSONALITY(ex, ibcs2) \ | 239 | #define SET_PERSONALITY(ex, ibcs2) \ |
241 | current->personality = PER_LINUX; \ | 240 | current->personality = PER_LINUX; \ |
@@ -310,7 +309,7 @@ struct pt_regs; /* forward declaration... */ | |||
310 | #define ELF_OSABI ELFOSABI_LINUX | 309 | #define ELF_OSABI ELFOSABI_LINUX |
311 | 310 | ||
312 | /* %r23 is set by ld.so to a pointer to a function which might be | 311 | /* %r23 is set by ld.so to a pointer to a function which might be |
313 | registered using atexit. This provides a mean for the dynamic | 312 | registered using atexit. This provides a means for the dynamic |
314 | linker to call DT_FINI functions for shared libraries that have | 313 | linker to call DT_FINI functions for shared libraries that have |
315 | been loaded before the code runs. | 314 | been loaded before the code runs. |
316 | 315 | ||
@@ -339,6 +338,5 @@ struct pt_regs; /* forward declaration... */ | |||
339 | but it's not easy, and we've already done it here. */ | 338 | but it's not easy, and we've already done it here. */ |
340 | 339 | ||
341 | #define ELF_HWCAP 0 | 340 | #define ELF_HWCAP 0 |
342 | /* (boot_cpu_data.x86_capability) */ | ||
343 | 341 | ||
344 | #endif | 342 | #endif |
diff --git a/include/asm-parisc/fixmap.h b/include/asm-parisc/fixmap.h index a5caf4b122b7..de3fe3a18229 100644 --- a/include/asm-parisc/fixmap.h +++ b/include/asm-parisc/fixmap.h | |||
@@ -20,4 +20,11 @@ | |||
20 | #define KERNEL_MAP_START (GATEWAY_PAGE_SIZE) | 20 | #define KERNEL_MAP_START (GATEWAY_PAGE_SIZE) |
21 | #define KERNEL_MAP_END (TMPALIAS_MAP_START) | 21 | #define KERNEL_MAP_END (TMPALIAS_MAP_START) |
22 | 22 | ||
23 | #endif | 23 | #ifndef __ASSEMBLY__ |
24 | extern void *vmalloc_start; | ||
25 | #define PCXL_DMA_MAP_SIZE (8*1024*1024) | ||
26 | #define VMALLOC_START ((unsigned long)vmalloc_start) | ||
27 | #define VMALLOC_END (KERNEL_MAP_END) | ||
28 | #endif /*__ASSEMBLY__*/ | ||
29 | |||
30 | #endif /*_ASM_FIXMAP_H*/ | ||
diff --git a/include/asm-parisc/futex.h b/include/asm-parisc/futex.h index dbee6e60aa81..fdc6d055ef7f 100644 --- a/include/asm-parisc/futex.h +++ b/include/asm-parisc/futex.h | |||
@@ -56,6 +56,12 @@ futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval) | |||
56 | int err = 0; | 56 | int err = 0; |
57 | int uval; | 57 | int uval; |
58 | 58 | ||
59 | /* futex.c wants to do a cmpxchg_inatomic on kernel NULL, which is | ||
60 | * our gateway page, and causes no end of trouble... | ||
61 | */ | ||
62 | if (segment_eq(KERNEL_DS, get_fs()) && !uaddr) | ||
63 | return -EFAULT; | ||
64 | |||
59 | if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int))) | 65 | if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int))) |
60 | return -EFAULT; | 66 | return -EFAULT; |
61 | 67 | ||
@@ -67,5 +73,5 @@ futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval) | |||
67 | return uval; | 73 | return uval; |
68 | } | 74 | } |
69 | 75 | ||
70 | #endif | 76 | #endif /*__KERNEL__*/ |
71 | #endif | 77 | #endif /*_ASM_PARISC_FUTEX_H*/ |
diff --git a/include/asm-parisc/pdc.h b/include/asm-parisc/pdc.h index deda8c311373..9eaa794c3e4a 100644 --- a/include/asm-parisc/pdc.h +++ b/include/asm-parisc/pdc.h | |||
@@ -645,8 +645,7 @@ int pdc_soft_power_button(int sw_control); | |||
645 | void pdc_io_reset(void); | 645 | void pdc_io_reset(void); |
646 | void pdc_io_reset_devices(void); | 646 | void pdc_io_reset_devices(void); |
647 | int pdc_iodc_getc(void); | 647 | int pdc_iodc_getc(void); |
648 | int pdc_iodc_print(unsigned char *str, unsigned count); | 648 | int pdc_iodc_print(const unsigned char *str, unsigned count); |
649 | void pdc_printf(const char *fmt, ...); | ||
650 | 649 | ||
651 | void pdc_emergency_unlock(void); | 650 | void pdc_emergency_unlock(void); |
652 | int pdc_sti_call(unsigned long func, unsigned long flags, | 651 | int pdc_sti_call(unsigned long func, unsigned long flags, |
diff --git a/include/asm-parisc/pgalloc.h b/include/asm-parisc/pgalloc.h index 3996dfc30a3f..fc987a1c12a8 100644 --- a/include/asm-parisc/pgalloc.h +++ b/include/asm-parisc/pgalloc.h | |||
@@ -138,10 +138,10 @@ static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) | |||
138 | free_page((unsigned long)pte); | 138 | free_page((unsigned long)pte); |
139 | } | 139 | } |
140 | 140 | ||
141 | static inline void pte_free_kernel(struct mm_struct *mm, struct page *pte) | 141 | static inline void pte_free(struct mm_struct *mm, struct page *pte) |
142 | { | 142 | { |
143 | pgtable_page_dtor(pte); | 143 | pgtable_page_dtor(pte); |
144 | pte_free_kernel(page_address((pte)); | 144 | pte_free_kernel(mm, page_address(pte)); |
145 | } | 145 | } |
146 | 146 | ||
147 | #define check_pgt_cache() do { } while (0) | 147 | #define check_pgt_cache() do { } while (0) |
diff --git a/include/asm-parisc/pgtable.h b/include/asm-parisc/pgtable.h index cd0fa4f73320..dc86adbec916 100644 --- a/include/asm-parisc/pgtable.h +++ b/include/asm-parisc/pgtable.h | |||
@@ -116,14 +116,6 @@ | |||
116 | 116 | ||
117 | #define FIRST_USER_ADDRESS 0 | 117 | #define FIRST_USER_ADDRESS 0 |
118 | 118 | ||
119 | #ifndef __ASSEMBLY__ | ||
120 | extern void *vmalloc_start; | ||
121 | #define PCXL_DMA_MAP_SIZE (8*1024*1024) | ||
122 | #define VMALLOC_START ((unsigned long)vmalloc_start) | ||
123 | /* this is a fixmap remnant, see fixmap.h */ | ||
124 | #define VMALLOC_END (KERNEL_MAP_END) | ||
125 | #endif | ||
126 | |||
127 | /* NB: The tlb miss handlers make certain assumptions about the order */ | 119 | /* NB: The tlb miss handlers make certain assumptions about the order */ |
128 | /* of the following bits, so be careful (One example, bits 25-31 */ | 120 | /* of the following bits, so be careful (One example, bits 25-31 */ |
129 | /* are moved together in one instruction). */ | 121 | /* are moved together in one instruction). */ |
diff --git a/include/asm-parisc/unistd.h b/include/asm-parisc/unistd.h index 081b4ae61866..a7d857f0e4f4 100644 --- a/include/asm-parisc/unistd.h +++ b/include/asm-parisc/unistd.h | |||
@@ -798,8 +798,11 @@ | |||
798 | #define __NR_timerfd (__NR_Linux + 303) | 798 | #define __NR_timerfd (__NR_Linux + 303) |
799 | #define __NR_eventfd (__NR_Linux + 304) | 799 | #define __NR_eventfd (__NR_Linux + 304) |
800 | #define __NR_fallocate (__NR_Linux + 305) | 800 | #define __NR_fallocate (__NR_Linux + 305) |
801 | #define __NR_timerfd_create (__NR_Linux + 306) | ||
802 | #define __NR_timerfd_settime (__NR_Linux + 307) | ||
803 | #define __NR_timerfd_gettime (__NR_Linux + 308) | ||
801 | 804 | ||
802 | #define __NR_Linux_syscalls (__NR_fallocate + 1) | 805 | #define __NR_Linux_syscalls (__NR_timerfd_gettime + 1) |
803 | 806 | ||
804 | 807 | ||
805 | #define __IGNORE_select /* newselect */ | 808 | #define __IGNORE_select /* newselect */ |
diff --git a/include/asm-powerpc/pgtable-ppc32.h b/include/asm-powerpc/pgtable-ppc32.h index d1332bbcbd9b..2c79f550272b 100644 --- a/include/asm-powerpc/pgtable-ppc32.h +++ b/include/asm-powerpc/pgtable-ppc32.h | |||
@@ -339,14 +339,6 @@ extern int icache_44x_need_flush; | |||
339 | #define _PMD_PAGE_MASK 0x000c | 339 | #define _PMD_PAGE_MASK 0x000c |
340 | #define _PMD_PAGE_8M 0x000c | 340 | #define _PMD_PAGE_8M 0x000c |
341 | 341 | ||
342 | /* | ||
343 | * The 8xx TLB miss handler allegedly sets _PAGE_ACCESSED in the PTE | ||
344 | * for an address even if _PAGE_PRESENT is not set, as a performance | ||
345 | * optimization. This is a bug if you ever want to use swap unless | ||
346 | * _PAGE_ACCESSED is 2, which it isn't, or unless you have 8xx-specific | ||
347 | * definitions for __swp_entry etc. below, which would be gross. | ||
348 | * -- paulus | ||
349 | */ | ||
350 | #define _PTE_NONE_MASK _PAGE_ACCESSED | 342 | #define _PTE_NONE_MASK _PAGE_ACCESSED |
351 | 343 | ||
352 | #else /* CONFIG_6xx */ | 344 | #else /* CONFIG_6xx */ |
diff --git a/include/asm-ppc/pgtable.h b/include/asm-ppc/pgtable.h index 69347bdbb401..70435d32129a 100644 --- a/include/asm-ppc/pgtable.h +++ b/include/asm-ppc/pgtable.h | |||
@@ -299,14 +299,6 @@ extern unsigned long ioremap_bot, ioremap_base; | |||
299 | #define _PMD_PAGE_MASK 0x000c | 299 | #define _PMD_PAGE_MASK 0x000c |
300 | #define _PMD_PAGE_8M 0x000c | 300 | #define _PMD_PAGE_8M 0x000c |
301 | 301 | ||
302 | /* | ||
303 | * The 8xx TLB miss handler allegedly sets _PAGE_ACCESSED in the PTE | ||
304 | * for an address even if _PAGE_PRESENT is not set, as a performance | ||
305 | * optimization. This is a bug if you ever want to use swap unless | ||
306 | * _PAGE_ACCESSED is 2, which it isn't, or unless you have 8xx-specific | ||
307 | * definitions for __swp_entry etc. below, which would be gross. | ||
308 | * -- paulus | ||
309 | */ | ||
310 | #define _PTE_NONE_MASK _PAGE_ACCESSED | 302 | #define _PTE_NONE_MASK _PAGE_ACCESSED |
311 | 303 | ||
312 | #else /* CONFIG_6xx */ | 304 | #else /* CONFIG_6xx */ |
diff --git a/include/asm-sh/byteorder.h b/include/asm-sh/byteorder.h index 0eb9904b6545..4c13e6117563 100644 --- a/include/asm-sh/byteorder.h +++ b/include/asm-sh/byteorder.h | |||
@@ -11,13 +11,13 @@ | |||
11 | static inline __attribute_const__ __u32 ___arch__swab32(__u32 x) | 11 | static inline __attribute_const__ __u32 ___arch__swab32(__u32 x) |
12 | { | 12 | { |
13 | __asm__( | 13 | __asm__( |
14 | #ifdef CONFIG_SUPERH32 | 14 | #ifdef __SH5__ |
15 | "byterev %0, %0\n\t" | ||
16 | "shari %0, 32, %0" | ||
17 | #else | ||
15 | "swap.b %0, %0\n\t" | 18 | "swap.b %0, %0\n\t" |
16 | "swap.w %0, %0\n\t" | 19 | "swap.w %0, %0\n\t" |
17 | "swap.b %0, %0" | 20 | "swap.b %0, %0" |
18 | #else | ||
19 | "byterev %0, %0\n\t" | ||
20 | "shari %0, 32, %0" | ||
21 | #endif | 21 | #endif |
22 | : "=r" (x) | 22 | : "=r" (x) |
23 | : "0" (x)); | 23 | : "0" (x)); |
@@ -28,12 +28,11 @@ static inline __attribute_const__ __u32 ___arch__swab32(__u32 x) | |||
28 | static inline __attribute_const__ __u16 ___arch__swab16(__u16 x) | 28 | static inline __attribute_const__ __u16 ___arch__swab16(__u16 x) |
29 | { | 29 | { |
30 | __asm__( | 30 | __asm__( |
31 | #ifdef CONFIG_SUPERH32 | 31 | #ifdef __SH5__ |
32 | "swap.b %0, %0" | ||
33 | #else | ||
34 | "byterev %0, %0\n\t" | 32 | "byterev %0, %0\n\t" |
35 | "shari %0, 32, %0" | 33 | "shari %0, 32, %0" |
36 | 34 | #else | |
35 | "swap.b %0, %0" | ||
37 | #endif | 36 | #endif |
38 | : "=r" (x) | 37 | : "=r" (x) |
39 | : "0" (x)); | 38 | : "0" (x)); |
diff --git a/include/asm-sh/posix_types.h b/include/asm-sh/posix_types.h index 4b9d11c9fc77..4eeb723aee7e 100644 --- a/include/asm-sh/posix_types.h +++ b/include/asm-sh/posix_types.h | |||
@@ -4,4 +4,10 @@ | |||
4 | # else | 4 | # else |
5 | # include "posix_types_64.h" | 5 | # include "posix_types_64.h" |
6 | # endif | 6 | # endif |
7 | #else | ||
8 | # ifdef __SH5__ | ||
9 | # include "posix_types_64.h" | ||
10 | # else | ||
11 | # include "posix_types_32.h" | ||
12 | # endif | ||
7 | #endif /* __KERNEL__ */ | 13 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-sparc64/backoff.h b/include/asm-sparc64/backoff.h index dadd6c385c6c..fa1fdf67e350 100644 --- a/include/asm-sparc64/backoff.h +++ b/include/asm-sparc64/backoff.h | |||
@@ -12,7 +12,8 @@ | |||
12 | mov reg, tmp; \ | 12 | mov reg, tmp; \ |
13 | 88: brnz,pt tmp, 88b; \ | 13 | 88: brnz,pt tmp, 88b; \ |
14 | sub tmp, 1, tmp; \ | 14 | sub tmp, 1, tmp; \ |
15 | cmp reg, BACKOFF_LIMIT; \ | 15 | set BACKOFF_LIMIT, tmp; \ |
16 | cmp reg, tmp; \ | ||
16 | bg,pn %xcc, label; \ | 17 | bg,pn %xcc, label; \ |
17 | nop; \ | 18 | nop; \ |
18 | ba,pt %xcc, label; \ | 19 | ba,pt %xcc, label; \ |
diff --git a/include/asm-sparc64/cpudata.h b/include/asm-sparc64/cpudata.h index 542421460a12..532975ecfe10 100644 --- a/include/asm-sparc64/cpudata.h +++ b/include/asm-sparc64/cpudata.h | |||
@@ -86,6 +86,8 @@ extern struct trap_per_cpu trap_block[NR_CPUS]; | |||
86 | extern void init_cur_cpu_trap(struct thread_info *); | 86 | extern void init_cur_cpu_trap(struct thread_info *); |
87 | extern void setup_tba(void); | 87 | extern void setup_tba(void); |
88 | extern int ncpus_probed; | 88 | extern int ncpus_probed; |
89 | extern void __init cpu_probe(void); | ||
90 | extern const struct seq_operations cpuinfo_op; | ||
89 | 91 | ||
90 | extern unsigned long real_hard_smp_processor_id(void); | 92 | extern unsigned long real_hard_smp_processor_id(void); |
91 | 93 | ||
diff --git a/include/asm-sparc64/dcu.h b/include/asm-sparc64/dcu.h index ecbed2ae548f..0f704e106a1b 100644 --- a/include/asm-sparc64/dcu.h +++ b/include/asm-sparc64/dcu.h | |||
@@ -1,26 +1,27 @@ | |||
1 | /* $Id: dcu.h,v 1.2 2001/03/01 23:23:33 davem Exp $ */ | ||
2 | #ifndef _SPARC64_DCU_H | 1 | #ifndef _SPARC64_DCU_H |
3 | #define _SPARC64_DCU_H | 2 | #define _SPARC64_DCU_H |
4 | 3 | ||
4 | #include <linux/const.h> | ||
5 | |||
5 | /* UltraSparc-III Data Cache Unit Control Register */ | 6 | /* UltraSparc-III Data Cache Unit Control Register */ |
6 | #define DCU_CP 0x0002000000000000 /* Physical Cache Enable w/o mmu*/ | 7 | #define DCU_CP _AC(0x0002000000000000,UL) /* Phys Cache Enable w/o mmu */ |
7 | #define DCU_CV 0x0001000000000000 /* Virtual Cache Enable w/o mmu */ | 8 | #define DCU_CV _AC(0x0001000000000000,UL) /* Virt Cache Enable w/o mmu */ |
8 | #define DCU_ME 0x0000800000000000 /* NC-store Merging Enable */ | 9 | #define DCU_ME _AC(0x0000800000000000,UL) /* NC-store Merging Enable */ |
9 | #define DCU_RE 0x0000400000000000 /* RAW bypass Enable */ | 10 | #define DCU_RE _AC(0x0000400000000000,UL) /* RAW bypass Enable */ |
10 | #define DCU_PE 0x0000200000000000 /* PCache Enable */ | 11 | #define DCU_PE _AC(0x0000200000000000,UL) /* PCache Enable */ |
11 | #define DCU_HPE 0x0000100000000000 /* HW prefetch Enable */ | 12 | #define DCU_HPE _AC(0x0000100000000000,UL) /* HW prefetch Enable */ |
12 | #define DCU_SPE 0x0000080000000000 /* SW prefetch Enable */ | 13 | #define DCU_SPE _AC(0x0000080000000000,UL) /* SW prefetch Enable */ |
13 | #define DCU_SL 0x0000040000000000 /* Secondary load steering Enab */ | 14 | #define DCU_SL _AC(0x0000040000000000,UL) /* Secondary ld-steering Enab*/ |
14 | #define DCU_WE 0x0000020000000000 /* WCache enable */ | 15 | #define DCU_WE _AC(0x0000020000000000,UL) /* WCache enable */ |
15 | #define DCU_PM 0x000001fe00000000 /* PA Watchpoint Byte Mask */ | 16 | #define DCU_PM _AC(0x000001fe00000000,UL) /* PA Watchpoint Byte Mask */ |
16 | #define DCU_VM 0x00000001fe000000 /* VA Watchpoint Byte Mask */ | 17 | #define DCU_VM _AC(0x00000001fe000000,UL) /* VA Watchpoint Byte Mask */ |
17 | #define DCU_PR 0x0000000001000000 /* PA Watchpoint Read Enable */ | 18 | #define DCU_PR _AC(0x0000000001000000,UL) /* PA Watchpoint Read Enable */ |
18 | #define DCU_PW 0x0000000000800000 /* PA Watchpoint Write Enable */ | 19 | #define DCU_PW _AC(0x0000000000800000,UL) /* PA Watchpoint Write Enable*/ |
19 | #define DCU_VR 0x0000000000400000 /* VA Watchpoint Read Enable */ | 20 | #define DCU_VR _AC(0x0000000000400000,UL) /* VA Watchpoint Read Enable */ |
20 | #define DCU_VW 0x0000000000200000 /* VA Watchpoint Write Enable */ | 21 | #define DCU_VW _AC(0x0000000000200000,UL) /* VA Watchpoint Write Enable*/ |
21 | #define DCU_DM 0x0000000000000008 /* DMMU Enable */ | 22 | #define DCU_DM _AC(0x0000000000000008,UL) /* DMMU Enable */ |
22 | #define DCU_IM 0x0000000000000004 /* IMMU Enable */ | 23 | #define DCU_IM _AC(0x0000000000000004,UL) /* IMMU Enable */ |
23 | #define DCU_DC 0x0000000000000002 /* Data Cache Enable */ | 24 | #define DCU_DC _AC(0x0000000000000002,UL) /* Data Cache Enable */ |
24 | #define DCU_IC 0x0000000000000001 /* Instruction Cache Enable */ | 25 | #define DCU_IC _AC(0x0000000000000001,UL) /* Instruction Cache Enable */ |
25 | 26 | ||
26 | #endif /* _SPARC64_DCU_H */ | 27 | #endif /* _SPARC64_DCU_H */ |
diff --git a/include/asm-sparc64/hvtramp.h b/include/asm-sparc64/hvtramp.h index c7dd6ad056df..b2b9b947b3a4 100644 --- a/include/asm-sparc64/hvtramp.h +++ b/include/asm-sparc64/hvtramp.h | |||
@@ -16,7 +16,7 @@ struct hvtramp_descr { | |||
16 | __u64 fault_info_va; | 16 | __u64 fault_info_va; |
17 | __u64 fault_info_pa; | 17 | __u64 fault_info_pa; |
18 | __u64 thread_reg; | 18 | __u64 thread_reg; |
19 | struct hvtramp_mapping maps[2]; | 19 | struct hvtramp_mapping maps[1]; |
20 | }; | 20 | }; |
21 | 21 | ||
22 | extern void hv_cpu_startup(unsigned long hvdescr_pa); | 22 | extern void hv_cpu_startup(unsigned long hvdescr_pa); |
diff --git a/include/asm-sparc64/irq.h b/include/asm-sparc64/irq.h index 30cb76b47be1..0bb9bf531745 100644 --- a/include/asm-sparc64/irq.h +++ b/include/asm-sparc64/irq.h | |||
@@ -64,6 +64,7 @@ extern unsigned char virt_irq_alloc(unsigned int dev_handle, | |||
64 | extern void virt_irq_free(unsigned int virt_irq); | 64 | extern void virt_irq_free(unsigned int virt_irq); |
65 | #endif | 65 | #endif |
66 | 66 | ||
67 | extern void __init init_IRQ(void); | ||
67 | extern void fixup_irqs(void); | 68 | extern void fixup_irqs(void); |
68 | 69 | ||
69 | static inline void set_softint(unsigned long bits) | 70 | static inline void set_softint(unsigned long bits) |
diff --git a/include/asm-sparc64/pgtable.h b/include/asm-sparc64/pgtable.h index 3167ccff64f8..549e45266b68 100644 --- a/include/asm-sparc64/pgtable.h +++ b/include/asm-sparc64/pgtable.h | |||
@@ -23,9 +23,9 @@ | |||
23 | #include <asm/page.h> | 23 | #include <asm/page.h> |
24 | #include <asm/processor.h> | 24 | #include <asm/processor.h> |
25 | 25 | ||
26 | /* The kernel image occupies 0x4000000 to 0x1000000 (4MB --> 32MB). | 26 | /* The kernel image occupies 0x4000000 to 0x6000000 (4MB --> 96MB). |
27 | * The page copy blockops can use 0x2000000 to 0x4000000. | 27 | * The page copy blockops can use 0x6000000 to 0x8000000. |
28 | * The TSB is mapped in the 0x4000000 to 0x6000000 range. | 28 | * The TSB is mapped in the 0x8000000 to 0xa000000 range. |
29 | * The PROM resides in an area spanning 0xf0000000 to 0x100000000. | 29 | * The PROM resides in an area spanning 0xf0000000 to 0x100000000. |
30 | * The vmalloc area spans 0x100000000 to 0x200000000. | 30 | * The vmalloc area spans 0x100000000 to 0x200000000. |
31 | * Since modules need to be in the lowest 32-bits of the address space, | 31 | * Since modules need to be in the lowest 32-bits of the address space, |
@@ -33,8 +33,8 @@ | |||
33 | * There is a single static kernel PMD which maps from 0x0 to address | 33 | * There is a single static kernel PMD which maps from 0x0 to address |
34 | * 0x400000000. | 34 | * 0x400000000. |
35 | */ | 35 | */ |
36 | #define TLBTEMP_BASE _AC(0x0000000002000000,UL) | 36 | #define TLBTEMP_BASE _AC(0x0000000006000000,UL) |
37 | #define TSBMAP_BASE _AC(0x0000000004000000,UL) | 37 | #define TSBMAP_BASE _AC(0x0000000008000000,UL) |
38 | #define MODULES_VADDR _AC(0x0000000010000000,UL) | 38 | #define MODULES_VADDR _AC(0x0000000010000000,UL) |
39 | #define MODULES_LEN _AC(0x00000000e0000000,UL) | 39 | #define MODULES_LEN _AC(0x00000000e0000000,UL) |
40 | #define MODULES_END _AC(0x00000000f0000000,UL) | 40 | #define MODULES_END _AC(0x00000000f0000000,UL) |
@@ -761,6 +761,8 @@ extern unsigned long get_fb_unmapped_area(struct file *filp, unsigned long, | |||
761 | extern void pgtable_cache_init(void); | 761 | extern void pgtable_cache_init(void); |
762 | extern void sun4v_register_fault_status(void); | 762 | extern void sun4v_register_fault_status(void); |
763 | extern void sun4v_ktsb_register(void); | 763 | extern void sun4v_ktsb_register(void); |
764 | extern void __init cheetah_ecache_flush_init(void); | ||
765 | extern void sun4v_patch_tlb_handlers(void); | ||
764 | 766 | ||
765 | extern unsigned long cmdline_memory_size; | 767 | extern unsigned long cmdline_memory_size; |
766 | 768 | ||
diff --git a/include/asm-sparc64/processor.h b/include/asm-sparc64/processor.h index 8da484c19822..885b6a1dcae4 100644 --- a/include/asm-sparc64/processor.h +++ b/include/asm-sparc64/processor.h | |||
@@ -37,6 +37,9 @@ | |||
37 | #endif | 37 | #endif |
38 | 38 | ||
39 | #define TASK_SIZE ((unsigned long)-VPTE_SIZE) | 39 | #define TASK_SIZE ((unsigned long)-VPTE_SIZE) |
40 | #define TASK_SIZE_OF(tsk) \ | ||
41 | (test_tsk_thread_flag(tsk,TIF_32BIT) ? \ | ||
42 | (1UL << 32UL) : TASK_SIZE) | ||
40 | #ifdef __KERNEL__ | 43 | #ifdef __KERNEL__ |
41 | 44 | ||
42 | #define STACK_TOP32 ((1UL << 32UL) - PAGE_SIZE) | 45 | #define STACK_TOP32 ((1UL << 32UL) - PAGE_SIZE) |
diff --git a/include/asm-sparc64/spitfire.h b/include/asm-sparc64/spitfire.h index 63b7040e8134..985ea7e31992 100644 --- a/include/asm-sparc64/spitfire.h +++ b/include/asm-sparc64/spitfire.h | |||
@@ -63,6 +63,8 @@ extern void cheetah_enable_pcache(void); | |||
63 | SPITFIRE_HIGHEST_LOCKED_TLBENT : \ | 63 | SPITFIRE_HIGHEST_LOCKED_TLBENT : \ |
64 | CHEETAH_HIGHEST_LOCKED_TLBENT) | 64 | CHEETAH_HIGHEST_LOCKED_TLBENT) |
65 | 65 | ||
66 | extern int num_kernel_image_mappings; | ||
67 | |||
66 | /* The data cache is write through, so this just invalidates the | 68 | /* The data cache is write through, so this just invalidates the |
67 | * specified line. | 69 | * specified line. |
68 | */ | 70 | */ |
diff --git a/include/asm-sparc64/stacktrace.h b/include/asm-sparc64/stacktrace.h new file mode 100644 index 000000000000..6cee39adf6d6 --- /dev/null +++ b/include/asm-sparc64/stacktrace.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef _SPARC64_STACKTRACE_H | ||
2 | #define _SPARC64_STACKTRACE_H | ||
3 | |||
4 | extern void stack_trace_flush(void); | ||
5 | |||
6 | #endif /* _SPARC64_STACKTRACE_H */ | ||
diff --git a/include/asm-sparc64/timer.h b/include/asm-sparc64/timer.h index ccbd69448866..5b779fd1f788 100644 --- a/include/asm-sparc64/timer.h +++ b/include/asm-sparc64/timer.h | |||
@@ -1,14 +1,13 @@ | |||
1 | /* $Id: timer.h,v 1.3 2000/05/09 17:40:15 davem Exp $ | 1 | /* timer.h: System timer definitions for sun5. |
2 | * timer.h: System timer definitions for sun5. | ||
3 | * | 2 | * |
4 | * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) | 3 | * Copyright (C) 1997, 2008 David S. Miller (davem@davemloft.net) |
5 | */ | 4 | */ |
6 | 5 | ||
7 | #ifndef _SPARC64_TIMER_H | 6 | #ifndef _SPARC64_TIMER_H |
8 | #define _SPARC64_TIMER_H | 7 | #define _SPARC64_TIMER_H |
9 | 8 | ||
10 | #include <linux/types.h> | 9 | #include <linux/types.h> |
11 | 10 | #include <linux/init.h> | |
12 | 11 | ||
13 | struct sparc64_tick_ops { | 12 | struct sparc64_tick_ops { |
14 | unsigned long (*get_tick)(void); | 13 | unsigned long (*get_tick)(void); |
@@ -25,5 +24,7 @@ struct sparc64_tick_ops { | |||
25 | extern struct sparc64_tick_ops *tick_ops; | 24 | extern struct sparc64_tick_ops *tick_ops; |
26 | 25 | ||
27 | extern unsigned long sparc64_get_clock_tick(unsigned int cpu); | 26 | extern unsigned long sparc64_get_clock_tick(unsigned int cpu); |
27 | extern void __devinit setup_sparc64_timer(void); | ||
28 | extern void __init time_init(void); | ||
28 | 29 | ||
29 | #endif /* _SPARC64_TIMER_H */ | 30 | #endif /* _SPARC64_TIMER_H */ |
diff --git a/include/asm-x86/cmpxchg_32.h b/include/asm-x86/cmpxchg_32.h index cea1dae288a7..959fad00dff5 100644 --- a/include/asm-x86/cmpxchg_32.h +++ b/include/asm-x86/cmpxchg_32.h | |||
@@ -269,22 +269,26 @@ static inline unsigned long cmpxchg_386(volatile void *ptr, unsigned long old, | |||
269 | ({ \ | 269 | ({ \ |
270 | __typeof__(*(ptr)) __ret; \ | 270 | __typeof__(*(ptr)) __ret; \ |
271 | if (likely(boot_cpu_data.x86 > 3)) \ | 271 | if (likely(boot_cpu_data.x86 > 3)) \ |
272 | __ret = __cmpxchg((ptr), (unsigned long)(o), \ | 272 | __ret = (__typeof__(*(ptr)))__cmpxchg((ptr), \ |
273 | (unsigned long)(n), sizeof(*(ptr))); \ | 273 | (unsigned long)(o), (unsigned long)(n), \ |
274 | sizeof(*(ptr))); \ | ||
274 | else \ | 275 | else \ |
275 | __ret = cmpxchg_386((ptr), (unsigned long)(o), \ | 276 | __ret = (__typeof__(*(ptr)))cmpxchg_386((ptr), \ |
276 | (unsigned long)(n), sizeof(*(ptr))); \ | 277 | (unsigned long)(o), (unsigned long)(n), \ |
278 | sizeof(*(ptr))); \ | ||
277 | __ret; \ | 279 | __ret; \ |
278 | }) | 280 | }) |
279 | #define cmpxchg_local(ptr, o, n) \ | 281 | #define cmpxchg_local(ptr, o, n) \ |
280 | ({ \ | 282 | ({ \ |
281 | __typeof__(*(ptr)) __ret; \ | 283 | __typeof__(*(ptr)) __ret; \ |
282 | if (likely(boot_cpu_data.x86 > 3)) \ | 284 | if (likely(boot_cpu_data.x86 > 3)) \ |
283 | __ret = __cmpxchg_local((ptr), (unsigned long)(o), \ | 285 | __ret = (__typeof__(*(ptr)))__cmpxchg_local((ptr), \ |
284 | (unsigned long)(n), sizeof(*(ptr))); \ | 286 | (unsigned long)(o), (unsigned long)(n), \ |
287 | sizeof(*(ptr))); \ | ||
285 | else \ | 288 | else \ |
286 | __ret = cmpxchg_386((ptr), (unsigned long)(o), \ | 289 | __ret = (__typeof__(*(ptr)))cmpxchg_386((ptr), \ |
287 | (unsigned long)(n), sizeof(*(ptr))); \ | 290 | (unsigned long)(o), (unsigned long)(n), \ |
291 | sizeof(*(ptr))); \ | ||
288 | __ret; \ | 292 | __ret; \ |
289 | }) | 293 | }) |
290 | #endif | 294 | #endif |
@@ -301,10 +305,12 @@ extern unsigned long long cmpxchg_486_u64(volatile void *, u64, u64); | |||
301 | ({ \ | 305 | ({ \ |
302 | __typeof__(*(ptr)) __ret; \ | 306 | __typeof__(*(ptr)) __ret; \ |
303 | if (likely(boot_cpu_data.x86 > 4)) \ | 307 | if (likely(boot_cpu_data.x86 > 4)) \ |
304 | __ret = __cmpxchg64((ptr), (unsigned long long)(o), \ | 308 | __ret = (__typeof__(*(ptr)))__cmpxchg64((ptr), \ |
309 | (unsigned long long)(o), \ | ||
305 | (unsigned long long)(n)); \ | 310 | (unsigned long long)(n)); \ |
306 | else \ | 311 | else \ |
307 | __ret = cmpxchg_486_u64((ptr), (unsigned long long)(o), \ | 312 | __ret = (__typeof__(*(ptr)))cmpxchg_486_u64((ptr), \ |
313 | (unsigned long long)(o), \ | ||
308 | (unsigned long long)(n)); \ | 314 | (unsigned long long)(n)); \ |
309 | __ret; \ | 315 | __ret; \ |
310 | }) | 316 | }) |
@@ -312,10 +318,12 @@ extern unsigned long long cmpxchg_486_u64(volatile void *, u64, u64); | |||
312 | ({ \ | 318 | ({ \ |
313 | __typeof__(*(ptr)) __ret; \ | 319 | __typeof__(*(ptr)) __ret; \ |
314 | if (likely(boot_cpu_data.x86 > 4)) \ | 320 | if (likely(boot_cpu_data.x86 > 4)) \ |
315 | __ret = __cmpxchg64_local((ptr), (unsigned long long)(o), \ | 321 | __ret = (__typeof__(*(ptr)))__cmpxchg64_local((ptr), \ |
322 | (unsigned long long)(o), \ | ||
316 | (unsigned long long)(n)); \ | 323 | (unsigned long long)(n)); \ |
317 | else \ | 324 | else \ |
318 | __ret = cmpxchg_486_u64((ptr), (unsigned long long)(o), \ | 325 | __ret = (__typeof__(*(ptr)))cmpxchg_486_u64((ptr), \ |
326 | (unsigned long long)(o), \ | ||
319 | (unsigned long long)(n)); \ | 327 | (unsigned long long)(n)); \ |
320 | __ret; \ | 328 | __ret; \ |
321 | }) | 329 | }) |
diff --git a/include/asm-x86/e820_32.h b/include/asm-x86/e820_32.h index f1da7ebd1905..e7207a6de3e0 100644 --- a/include/asm-x86/e820_32.h +++ b/include/asm-x86/e820_32.h | |||
@@ -28,6 +28,8 @@ extern void find_max_pfn(void); | |||
28 | extern void register_bootmem_low_pages(unsigned long max_low_pfn); | 28 | extern void register_bootmem_low_pages(unsigned long max_low_pfn); |
29 | extern void add_memory_region(unsigned long long start, | 29 | extern void add_memory_region(unsigned long long start, |
30 | unsigned long long size, int type); | 30 | unsigned long long size, int type); |
31 | extern void update_memory_range(u64 start, u64 size, unsigned old_type, | ||
32 | unsigned new_type); | ||
31 | extern void e820_register_memory(void); | 33 | extern void e820_register_memory(void); |
32 | extern void limit_regions(unsigned long long size); | 34 | extern void limit_regions(unsigned long long size); |
33 | extern void print_memory_map(char *who); | 35 | extern void print_memory_map(char *who); |
diff --git a/include/asm-x86/e820_64.h b/include/asm-x86/e820_64.h index a560c4f5d500..22ede73ae724 100644 --- a/include/asm-x86/e820_64.h +++ b/include/asm-x86/e820_64.h | |||
@@ -18,6 +18,8 @@ extern unsigned long find_e820_area(unsigned long start, unsigned long end, | |||
18 | unsigned size, unsigned long align); | 18 | unsigned size, unsigned long align); |
19 | extern void add_memory_region(unsigned long start, unsigned long size, | 19 | extern void add_memory_region(unsigned long start, unsigned long size, |
20 | int type); | 20 | int type); |
21 | extern void update_memory_range(u64 start, u64 size, unsigned old_type, | ||
22 | unsigned new_type); | ||
21 | extern void setup_memory_region(void); | 23 | extern void setup_memory_region(void); |
22 | extern void contig_e820_setup(void); | 24 | extern void contig_e820_setup(void); |
23 | extern unsigned long e820_end_of_ram(void); | 25 | extern unsigned long e820_end_of_ram(void); |
diff --git a/include/asm-x86/io_32.h b/include/asm-x86/io_32.h index 58d2c45cd0b1..d4d8fbd9378c 100644 --- a/include/asm-x86/io_32.h +++ b/include/asm-x86/io_32.h | |||
@@ -114,13 +114,13 @@ static inline void * phys_to_virt(unsigned long address) | |||
114 | * If the area you are trying to map is a PCI BAR you should have a | 114 | * If the area you are trying to map is a PCI BAR you should have a |
115 | * look at pci_iomap(). | 115 | * look at pci_iomap(). |
116 | */ | 116 | */ |
117 | extern void __iomem *ioremap_nocache(unsigned long offset, unsigned long size); | 117 | extern void __iomem *ioremap_nocache(resource_size_t offset, unsigned long size); |
118 | extern void __iomem *ioremap_cache(unsigned long offset, unsigned long size); | 118 | extern void __iomem *ioremap_cache(resource_size_t offset, unsigned long size); |
119 | 119 | ||
120 | /* | 120 | /* |
121 | * The default ioremap() behavior is non-cached: | 121 | * The default ioremap() behavior is non-cached: |
122 | */ | 122 | */ |
123 | static inline void __iomem *ioremap(unsigned long offset, unsigned long size) | 123 | static inline void __iomem *ioremap(resource_size_t offset, unsigned long size) |
124 | { | 124 | { |
125 | return ioremap_nocache(offset, size); | 125 | return ioremap_nocache(offset, size); |
126 | } | 126 | } |
diff --git a/include/asm-x86/io_64.h b/include/asm-x86/io_64.h index f64a59cc396d..db0be2011a3c 100644 --- a/include/asm-x86/io_64.h +++ b/include/asm-x86/io_64.h | |||
@@ -158,13 +158,13 @@ extern void early_iounmap(void *addr, unsigned long size); | |||
158 | * it's useful if some control registers are in such an area and write combining | 158 | * it's useful if some control registers are in such an area and write combining |
159 | * or read caching is not desirable: | 159 | * or read caching is not desirable: |
160 | */ | 160 | */ |
161 | extern void __iomem *ioremap_nocache(unsigned long offset, unsigned long size); | 161 | extern void __iomem *ioremap_nocache(resource_size_t offset, unsigned long size); |
162 | extern void __iomem *ioremap_cache(unsigned long offset, unsigned long size); | 162 | extern void __iomem *ioremap_cache(resource_size_t offset, unsigned long size); |
163 | 163 | ||
164 | /* | 164 | /* |
165 | * The default ioremap() behavior is non-cached: | 165 | * The default ioremap() behavior is non-cached: |
166 | */ | 166 | */ |
167 | static inline void __iomem *ioremap(unsigned long offset, unsigned long size) | 167 | static inline void __iomem *ioremap(resource_size_t offset, unsigned long size) |
168 | { | 168 | { |
169 | return ioremap_nocache(offset, size); | 169 | return ioremap_nocache(offset, size); |
170 | } | 170 | } |
diff --git a/include/asm-x86/lguest_hcall.h b/include/asm-x86/lguest_hcall.h index 758b9a5d4539..f239e7069cab 100644 --- a/include/asm-x86/lguest_hcall.h +++ b/include/asm-x86/lguest_hcall.h | |||
@@ -27,7 +27,7 @@ | |||
27 | #ifndef __ASSEMBLY__ | 27 | #ifndef __ASSEMBLY__ |
28 | #include <asm/hw_irq.h> | 28 | #include <asm/hw_irq.h> |
29 | 29 | ||
30 | /*G:031 First, how does our Guest contact the Host to ask for privileged | 30 | /*G:031 But first, how does our Guest contact the Host to ask for privileged |
31 | * operations? There are two ways: the direct way is to make a "hypercall", | 31 | * operations? There are two ways: the direct way is to make a "hypercall", |
32 | * to make requests of the Host Itself. | 32 | * to make requests of the Host Itself. |
33 | * | 33 | * |
diff --git a/include/asm-x86/mach-rdc321x/gpio.h b/include/asm-x86/mach-rdc321x/gpio.h index db31b929b990..acce0b7d397b 100644 --- a/include/asm-x86/mach-rdc321x/gpio.h +++ b/include/asm-x86/mach-rdc321x/gpio.h | |||
@@ -5,19 +5,20 @@ extern int rdc_gpio_get_value(unsigned gpio); | |||
5 | extern void rdc_gpio_set_value(unsigned gpio, int value); | 5 | extern void rdc_gpio_set_value(unsigned gpio, int value); |
6 | extern int rdc_gpio_direction_input(unsigned gpio); | 6 | extern int rdc_gpio_direction_input(unsigned gpio); |
7 | extern int rdc_gpio_direction_output(unsigned gpio, int value); | 7 | extern int rdc_gpio_direction_output(unsigned gpio, int value); |
8 | 8 | extern int rdc_gpio_request(unsigned gpio, const char *label); | |
9 | extern void rdc_gpio_free(unsigned gpio); | ||
10 | extern void __init rdc321x_gpio_setup(void); | ||
9 | 11 | ||
10 | /* Wrappers for the arch-neutral GPIO API */ | 12 | /* Wrappers for the arch-neutral GPIO API */ |
11 | 13 | ||
12 | static inline int gpio_request(unsigned gpio, const char *label) | 14 | static inline int gpio_request(unsigned gpio, const char *label) |
13 | { | 15 | { |
14 | /* Not yet implemented */ | 16 | return rdc_gpio_request(gpio, label); |
15 | return 0; | ||
16 | } | 17 | } |
17 | 18 | ||
18 | static inline void gpio_free(unsigned gpio) | 19 | static inline void gpio_free(unsigned gpio) |
19 | { | 20 | { |
20 | /* Not yet implemented */ | 21 | rdc_gpio_free(gpio); |
21 | } | 22 | } |
22 | 23 | ||
23 | static inline int gpio_direction_input(unsigned gpio) | 24 | static inline int gpio_direction_input(unsigned gpio) |
diff --git a/include/asm-x86/mach-rdc321x/rdc321x_defs.h b/include/asm-x86/mach-rdc321x/rdc321x_defs.h index 838ba8f64fd3..c8e9c8bed3d0 100644 --- a/include/asm-x86/mach-rdc321x/rdc321x_defs.h +++ b/include/asm-x86/mach-rdc321x/rdc321x_defs.h | |||
@@ -3,4 +3,10 @@ | |||
3 | /* General purpose configuration and data registers */ | 3 | /* General purpose configuration and data registers */ |
4 | #define RDC3210_CFGREG_ADDR 0x0CF8 | 4 | #define RDC3210_CFGREG_ADDR 0x0CF8 |
5 | #define RDC3210_CFGREG_DATA 0x0CFC | 5 | #define RDC3210_CFGREG_DATA 0x0CFC |
6 | #define RDC_MAX_GPIO 0x3A | 6 | |
7 | #define RDC321X_GPIO_CTRL_REG1 0x48 | ||
8 | #define RDC321X_GPIO_CTRL_REG2 0x84 | ||
9 | #define RDC321X_GPIO_DATA_REG1 0x4c | ||
10 | #define RDC321X_GPIO_DATA_REG2 0x88 | ||
11 | |||
12 | #define RDC321X_MAX_GPIO 58 | ||
diff --git a/include/asm-x86/page.h b/include/asm-x86/page.h index 1cb7c51bc296..a05b2896492f 100644 --- a/include/asm-x86/page.h +++ b/include/asm-x86/page.h | |||
@@ -52,13 +52,13 @@ extern int page_is_ram(unsigned long pagenr); | |||
52 | 52 | ||
53 | struct page; | 53 | struct page; |
54 | 54 | ||
55 | static void inline clear_user_page(void *page, unsigned long vaddr, | 55 | static inline void clear_user_page(void *page, unsigned long vaddr, |
56 | struct page *pg) | 56 | struct page *pg) |
57 | { | 57 | { |
58 | clear_page(page); | 58 | clear_page(page); |
59 | } | 59 | } |
60 | 60 | ||
61 | static void inline copy_user_page(void *to, void *from, unsigned long vaddr, | 61 | static inline void copy_user_page(void *to, void *from, unsigned long vaddr, |
62 | struct page *topage) | 62 | struct page *topage) |
63 | { | 63 | { |
64 | copy_page(to, from); | 64 | copy_page(to, from); |
diff --git a/include/asm-x86/pgtable.h b/include/asm-x86/pgtable.h index 174b87738714..9cf472aeb9ce 100644 --- a/include/asm-x86/pgtable.h +++ b/include/asm-x86/pgtable.h | |||
@@ -85,6 +85,7 @@ extern pteval_t __PAGE_KERNEL, __PAGE_KERNEL_EXEC; | |||
85 | #define __PAGE_KERNEL_RX (__PAGE_KERNEL_EXEC & ~_PAGE_RW) | 85 | #define __PAGE_KERNEL_RX (__PAGE_KERNEL_EXEC & ~_PAGE_RW) |
86 | #define __PAGE_KERNEL_EXEC_NOCACHE (__PAGE_KERNEL_EXEC | _PAGE_PCD | _PAGE_PWT) | 86 | #define __PAGE_KERNEL_EXEC_NOCACHE (__PAGE_KERNEL_EXEC | _PAGE_PCD | _PAGE_PWT) |
87 | #define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD | _PAGE_PWT) | 87 | #define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD | _PAGE_PWT) |
88 | #define __PAGE_KERNEL_UC_MINUS (__PAGE_KERNEL | _PAGE_PCD) | ||
88 | #define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RX | _PAGE_USER) | 89 | #define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RX | _PAGE_USER) |
89 | #define __PAGE_KERNEL_VSYSCALL_NOCACHE (__PAGE_KERNEL_VSYSCALL | _PAGE_PCD | _PAGE_PWT) | 90 | #define __PAGE_KERNEL_VSYSCALL_NOCACHE (__PAGE_KERNEL_VSYSCALL | _PAGE_PCD | _PAGE_PWT) |
90 | #define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE) | 91 | #define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE) |
@@ -101,6 +102,7 @@ extern pteval_t __PAGE_KERNEL, __PAGE_KERNEL_EXEC; | |||
101 | #define PAGE_KERNEL_EXEC MAKE_GLOBAL(__PAGE_KERNEL_EXEC) | 102 | #define PAGE_KERNEL_EXEC MAKE_GLOBAL(__PAGE_KERNEL_EXEC) |
102 | #define PAGE_KERNEL_RX MAKE_GLOBAL(__PAGE_KERNEL_RX) | 103 | #define PAGE_KERNEL_RX MAKE_GLOBAL(__PAGE_KERNEL_RX) |
103 | #define PAGE_KERNEL_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_NOCACHE) | 104 | #define PAGE_KERNEL_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_NOCACHE) |
105 | #define PAGE_KERNEL_UC_MINUS MAKE_GLOBAL(__PAGE_KERNEL_UC_MINUS) | ||
104 | #define PAGE_KERNEL_EXEC_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_EXEC_NOCACHE) | 106 | #define PAGE_KERNEL_EXEC_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_EXEC_NOCACHE) |
105 | #define PAGE_KERNEL_LARGE MAKE_GLOBAL(__PAGE_KERNEL_LARGE) | 107 | #define PAGE_KERNEL_LARGE MAKE_GLOBAL(__PAGE_KERNEL_LARGE) |
106 | #define PAGE_KERNEL_LARGE_EXEC MAKE_GLOBAL(__PAGE_KERNEL_LARGE_EXEC) | 108 | #define PAGE_KERNEL_LARGE_EXEC MAKE_GLOBAL(__PAGE_KERNEL_LARGE_EXEC) |
diff --git a/include/asm-x86/sync_bitops.h b/include/asm-x86/sync_bitops.h index cbce08a2d135..6b775c905666 100644 --- a/include/asm-x86/sync_bitops.h +++ b/include/asm-x86/sync_bitops.h | |||
@@ -23,10 +23,6 @@ | |||
23 | * This function is atomic and may not be reordered. See __set_bit() | 23 | * This function is atomic and may not be reordered. See __set_bit() |
24 | * if you do not require the atomic guarantees. | 24 | * if you do not require the atomic guarantees. |
25 | * | 25 | * |
26 | * Note: there are no guarantees that this function will not be reordered | ||
27 | * on non-x86 architectures, so if you are writing portable code, | ||
28 | * make sure not to rely on its reordering guarantees. | ||
29 | * | ||
30 | * Note that @nr may be almost arbitrarily large; this function is not | 26 | * Note that @nr may be almost arbitrarily large; this function is not |
31 | * restricted to acting on a single-word quantity. | 27 | * restricted to acting on a single-word quantity. |
32 | */ | 28 | */ |
@@ -61,8 +57,7 @@ static inline void sync_clear_bit(int nr, volatile unsigned long * addr) | |||
61 | * @nr: Bit to change | 57 | * @nr: Bit to change |
62 | * @addr: Address to start counting from | 58 | * @addr: Address to start counting from |
63 | * | 59 | * |
64 | * change_bit() is atomic and may not be reordered. It may be | 60 | * sync_change_bit() is atomic and may not be reordered. |
65 | * reordered on other architectures than x86. | ||
66 | * Note that @nr may be almost arbitrarily large; this function is not | 61 | * Note that @nr may be almost arbitrarily large; this function is not |
67 | * restricted to acting on a single-word quantity. | 62 | * restricted to acting on a single-word quantity. |
68 | */ | 63 | */ |
@@ -80,7 +75,6 @@ static inline void sync_change_bit(int nr, volatile unsigned long * addr) | |||
80 | * @addr: Address to count from | 75 | * @addr: Address to count from |
81 | * | 76 | * |
82 | * This operation is atomic and cannot be reordered. | 77 | * This operation is atomic and cannot be reordered. |
83 | * It may be reordered on other architectures than x86. | ||
84 | * It also implies a memory barrier. | 78 | * It also implies a memory barrier. |
85 | */ | 79 | */ |
86 | static inline int sync_test_and_set_bit(int nr, volatile unsigned long * addr) | 80 | static inline int sync_test_and_set_bit(int nr, volatile unsigned long * addr) |
@@ -99,7 +93,6 @@ static inline int sync_test_and_set_bit(int nr, volatile unsigned long * addr) | |||
99 | * @addr: Address to count from | 93 | * @addr: Address to count from |
100 | * | 94 | * |
101 | * This operation is atomic and cannot be reordered. | 95 | * This operation is atomic and cannot be reordered. |
102 | * It can be reorderdered on other architectures other than x86. | ||
103 | * It also implies a memory barrier. | 96 | * It also implies a memory barrier. |
104 | */ | 97 | */ |
105 | static inline int sync_test_and_clear_bit(int nr, volatile unsigned long * addr) | 98 | static inline int sync_test_and_clear_bit(int nr, volatile unsigned long * addr) |
diff --git a/include/linux/Kbuild b/include/linux/Kbuild index 994df3780007..4a446a19295e 100644 --- a/include/linux/Kbuild +++ b/include/linux/Kbuild | |||
@@ -127,7 +127,6 @@ header-y += pkt_sched.h | |||
127 | header-y += posix_types.h | 127 | header-y += posix_types.h |
128 | header-y += ppdev.h | 128 | header-y += ppdev.h |
129 | header-y += prctl.h | 129 | header-y += prctl.h |
130 | header-y += ps2esdi.h | ||
131 | header-y += qnxtypes.h | 130 | header-y += qnxtypes.h |
132 | header-y += quotaio_v1.h | 131 | header-y += quotaio_v1.h |
133 | header-y += quotaio_v2.h | 132 | header-y += quotaio_v2.h |
@@ -196,7 +195,6 @@ unifdef-y += ethtool.h | |||
196 | unifdef-y += eventpoll.h | 195 | unifdef-y += eventpoll.h |
197 | unifdef-y += signalfd.h | 196 | unifdef-y += signalfd.h |
198 | unifdef-y += ext2_fs.h | 197 | unifdef-y += ext2_fs.h |
199 | unifdef-y += ext3_fs.h | ||
200 | unifdef-y += fb.h | 198 | unifdef-y += fb.h |
201 | unifdef-y += fcntl.h | 199 | unifdef-y += fcntl.h |
202 | unifdef-y += filter.h | 200 | unifdef-y += filter.h |
@@ -205,7 +203,6 @@ unifdef-y += futex.h | |||
205 | unifdef-y += fs.h | 203 | unifdef-y += fs.h |
206 | unifdef-y += gameport.h | 204 | unifdef-y += gameport.h |
207 | unifdef-y += generic_serial.h | 205 | unifdef-y += generic_serial.h |
208 | unifdef-y += genhd.h | ||
209 | unifdef-y += gfs2_ondisk.h | 206 | unifdef-y += gfs2_ondisk.h |
210 | unifdef-y += hayesesp.h | 207 | unifdef-y += hayesesp.h |
211 | unifdef-y += hdlcdrv.h | 208 | unifdef-y += hdlcdrv.h |
@@ -250,7 +247,6 @@ unifdef-y += isdn.h | |||
250 | unifdef-y += isdnif.h | 247 | unifdef-y += isdnif.h |
251 | unifdef-y += isdn_divertif.h | 248 | unifdef-y += isdn_divertif.h |
252 | unifdef-y += isdn_ppp.h | 249 | unifdef-y += isdn_ppp.h |
253 | unifdef-y += jbd.h | ||
254 | unifdef-y += joystick.h | 250 | unifdef-y += joystick.h |
255 | unifdef-y += kdev_t.h | 251 | unifdef-y += kdev_t.h |
256 | unifdef-y += kd.h | 252 | unifdef-y += kd.h |
diff --git a/include/linux/bitops.h b/include/linux/bitops.h index 69c1edb9fe54..40d54731de7e 100644 --- a/include/linux/bitops.h +++ b/include/linux/bitops.h | |||
@@ -65,6 +65,46 @@ static inline __u32 ror32(__u32 word, unsigned int shift) | |||
65 | return (word >> shift) | (word << (32 - shift)); | 65 | return (word >> shift) | (word << (32 - shift)); |
66 | } | 66 | } |
67 | 67 | ||
68 | /** | ||
69 | * rol16 - rotate a 16-bit value left | ||
70 | * @word: value to rotate | ||
71 | * @shift: bits to roll | ||
72 | */ | ||
73 | static inline __u16 rol16(__u16 word, unsigned int shift) | ||
74 | { | ||
75 | return (word << shift) | (word >> (16 - shift)); | ||
76 | } | ||
77 | |||
78 | /** | ||
79 | * ror16 - rotate a 16-bit value right | ||
80 | * @word: value to rotate | ||
81 | * @shift: bits to roll | ||
82 | */ | ||
83 | static inline __u16 ror16(__u16 word, unsigned int shift) | ||
84 | { | ||
85 | return (word >> shift) | (word << (16 - shift)); | ||
86 | } | ||
87 | |||
88 | /** | ||
89 | * rol8 - rotate an 8-bit value left | ||
90 | * @word: value to rotate | ||
91 | * @shift: bits to roll | ||
92 | */ | ||
93 | static inline __u8 rol8(__u8 word, unsigned int shift) | ||
94 | { | ||
95 | return (word << shift) | (word >> (8 - shift)); | ||
96 | } | ||
97 | |||
98 | /** | ||
99 | * ror8 - rotate an 8-bit value right | ||
100 | * @word: value to rotate | ||
101 | * @shift: bits to roll | ||
102 | */ | ||
103 | static inline __u8 ror8(__u8 word, unsigned int shift) | ||
104 | { | ||
105 | return (word >> shift) | (word << (8 - shift)); | ||
106 | } | ||
107 | |||
68 | static inline unsigned fls_long(unsigned long l) | 108 | static inline unsigned fls_long(unsigned long l) |
69 | { | 109 | { |
70 | if (sizeof(l) == 4) | 110 | if (sizeof(l) == 4) |
diff --git a/include/linux/compat.h b/include/linux/compat.h index a671dbff7a1f..8fa7857e153b 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h | |||
@@ -192,8 +192,8 @@ asmlinkage long compat_sys_select(int n, compat_ulong_t __user *inp, | |||
192 | struct compat_timeval __user *tvp); | 192 | struct compat_timeval __user *tvp); |
193 | 193 | ||
194 | asmlinkage long compat_sys_wait4(compat_pid_t pid, | 194 | asmlinkage long compat_sys_wait4(compat_pid_t pid, |
195 | compat_uint_t *stat_addr, int options, | 195 | compat_uint_t __user *stat_addr, int options, |
196 | struct compat_rusage *ru); | 196 | struct compat_rusage __user *ru); |
197 | 197 | ||
198 | #define BITS_PER_COMPAT_LONG (8*sizeof(compat_long_t)) | 198 | #define BITS_PER_COMPAT_LONG (8*sizeof(compat_long_t)) |
199 | 199 | ||
diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h index 6b72a4584086..51e6b1e520e6 100644 --- a/include/linux/cpuidle.h +++ b/include/linux/cpuidle.h | |||
@@ -38,8 +38,8 @@ struct cpuidle_state { | |||
38 | unsigned int power_usage; /* in mW */ | 38 | unsigned int power_usage; /* in mW */ |
39 | unsigned int target_residency; /* in US */ | 39 | unsigned int target_residency; /* in US */ |
40 | 40 | ||
41 | unsigned int usage; | 41 | unsigned long long usage; |
42 | unsigned int time; /* in US */ | 42 | unsigned long long time; /* in US */ |
43 | 43 | ||
44 | int (*enter) (struct cpuidle_device *dev, | 44 | int (*enter) (struct cpuidle_device *dev, |
45 | struct cpuidle_state *state); | 45 | struct cpuidle_state *state); |
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 261e43a4c873..34d440698293 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h | |||
@@ -423,7 +423,7 @@ void dma_async_device_unregister(struct dma_device *device); | |||
423 | /* --- Helper iov-locking functions --- */ | 423 | /* --- Helper iov-locking functions --- */ |
424 | 424 | ||
425 | struct dma_page_list { | 425 | struct dma_page_list { |
426 | char *base_address; | 426 | char __user *base_address; |
427 | int nr_pages; | 427 | int nr_pages; |
428 | struct page **pages; | 428 | struct page **pages; |
429 | }; | 429 | }; |
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h index fcbe8b640ffb..c8d216357865 100644 --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h | |||
@@ -12,6 +12,7 @@ | |||
12 | #ifndef _LINUX_ETHTOOL_H | 12 | #ifndef _LINUX_ETHTOOL_H |
13 | #define _LINUX_ETHTOOL_H | 13 | #define _LINUX_ETHTOOL_H |
14 | 14 | ||
15 | #include <linux/types.h> | ||
15 | 16 | ||
16 | /* This should work for both 32 and 64 bit userland. */ | 17 | /* This should work for both 32 and 64 bit userland. */ |
17 | struct ethtool_cmd { | 18 | struct ethtool_cmd { |
diff --git a/include/linux/exportfs.h b/include/linux/exportfs.h index 51d214138814..adcbb05b120b 100644 --- a/include/linux/exportfs.h +++ b/include/linux/exportfs.h | |||
@@ -49,11 +49,11 @@ struct fid { | |||
49 | 49 | ||
50 | /** | 50 | /** |
51 | * struct export_operations - for nfsd to communicate with file systems | 51 | * struct export_operations - for nfsd to communicate with file systems |
52 | * @decode_fh: decode a file handle fragment and return a &struct dentry | ||
53 | * @encode_fh: encode a file handle fragment from a dentry | 52 | * @encode_fh: encode a file handle fragment from a dentry |
53 | * @fh_to_dentry: find the implied object and get a dentry for it | ||
54 | * @fh_to_parent: find the implied object's parent and get a dentry for it | ||
54 | * @get_name: find the name for a given inode in a given directory | 55 | * @get_name: find the name for a given inode in a given directory |
55 | * @get_parent: find the parent of a given directory | 56 | * @get_parent: find the parent of a given directory |
56 | * @get_dentry: find a dentry for the inode given a file handle sub-fragment | ||
57 | * | 57 | * |
58 | * See Documentation/filesystems/Exporting for details on how to use | 58 | * See Documentation/filesystems/Exporting for details on how to use |
59 | * this interface correctly. | 59 | * this interface correctly. |
diff --git a/include/linux/genhd.h b/include/linux/genhd.h index 32c2ac49a070..ecd2bf63fc84 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h | |||
@@ -55,24 +55,6 @@ enum { | |||
55 | UNIXWARE_PARTITION = 0x63, /* Same as GNU_HURD and SCO Unix */ | 55 | UNIXWARE_PARTITION = 0x63, /* Same as GNU_HURD and SCO Unix */ |
56 | }; | 56 | }; |
57 | 57 | ||
58 | #ifndef __KERNEL__ | ||
59 | |||
60 | struct partition { | ||
61 | unsigned char boot_ind; /* 0x80 - active */ | ||
62 | unsigned char head; /* starting head */ | ||
63 | unsigned char sector; /* starting sector */ | ||
64 | unsigned char cyl; /* starting cylinder */ | ||
65 | unsigned char sys_ind; /* What partition type */ | ||
66 | unsigned char end_head; /* end head */ | ||
67 | unsigned char end_sector; /* end sector */ | ||
68 | unsigned char end_cyl; /* end cylinder */ | ||
69 | unsigned int start_sect; /* starting sector counting from 0 */ | ||
70 | unsigned int nr_sects; /* nr of sectors in partition */ | ||
71 | } __attribute__((packed)); | ||
72 | |||
73 | #endif | ||
74 | |||
75 | #ifdef __KERNEL__ | ||
76 | #include <linux/major.h> | 58 | #include <linux/major.h> |
77 | #include <linux/device.h> | 59 | #include <linux/device.h> |
78 | #include <linux/smp.h> | 60 | #include <linux/smp.h> |
@@ -228,7 +210,7 @@ static inline void part_stat_set_all(struct hd_struct *part, int value) { | |||
228 | sizeof(struct disk_stats)); | 210 | sizeof(struct disk_stats)); |
229 | } | 211 | } |
230 | 212 | ||
231 | #else | 213 | #else /* !CONFIG_SMP */ |
232 | #define __disk_stat_add(gendiskp, field, addnd) \ | 214 | #define __disk_stat_add(gendiskp, field, addnd) \ |
233 | (gendiskp->dkstats.field += addnd) | 215 | (gendiskp->dkstats.field += addnd) |
234 | #define disk_stat_read(gendiskp, field) (gendiskp->dkstats.field) | 216 | #define disk_stat_read(gendiskp, field) (gendiskp->dkstats.field) |
@@ -256,7 +238,7 @@ static inline void part_stat_set_all(struct hd_struct *part, int value) | |||
256 | memset(&part->dkstats, value, sizeof(struct disk_stats)); | 238 | memset(&part->dkstats, value, sizeof(struct disk_stats)); |
257 | } | 239 | } |
258 | 240 | ||
259 | #endif | 241 | #endif /* CONFIG_SMP */ |
260 | 242 | ||
261 | #define disk_stat_add(gendiskp, field, addnd) \ | 243 | #define disk_stat_add(gendiskp, field, addnd) \ |
262 | do { \ | 244 | do { \ |
@@ -395,8 +377,6 @@ static inline void set_capacity(struct gendisk *disk, sector_t size) | |||
395 | disk->capacity = size; | 377 | disk->capacity = size; |
396 | } | 378 | } |
397 | 379 | ||
398 | #endif /* __KERNEL__ */ | ||
399 | |||
400 | #ifdef CONFIG_SOLARIS_X86_PARTITION | 380 | #ifdef CONFIG_SOLARIS_X86_PARTITION |
401 | 381 | ||
402 | #define SOLARIS_X86_NUMSLICE 16 | 382 | #define SOLARIS_X86_NUMSLICE 16 |
@@ -540,8 +520,6 @@ struct unixware_disklabel { | |||
540 | # define MINIX_NR_SUBPARTITIONS 4 | 520 | # define MINIX_NR_SUBPARTITIONS 4 |
541 | #endif /* CONFIG_MINIX_SUBPARTITION */ | 521 | #endif /* CONFIG_MINIX_SUBPARTITION */ |
542 | 522 | ||
543 | #ifdef __KERNEL__ | ||
544 | |||
545 | #define ADDPART_FLAG_NONE 0 | 523 | #define ADDPART_FLAG_NONE 0 |
546 | #define ADDPART_FLAG_RAID 1 | 524 | #define ADDPART_FLAG_RAID 1 |
547 | #define ADDPART_FLAG_WHOLEDISK 2 | 525 | #define ADDPART_FLAG_WHOLEDISK 2 |
@@ -570,8 +548,6 @@ static inline struct block_device *bdget_disk(struct gendisk *disk, int index) | |||
570 | return bdget(MKDEV(disk->major, disk->first_minor) + index); | 548 | return bdget(MKDEV(disk->major, disk->first_minor) + index); |
571 | } | 549 | } |
572 | 550 | ||
573 | #endif | ||
574 | |||
575 | #else /* CONFIG_BLOCK */ | 551 | #else /* CONFIG_BLOCK */ |
576 | 552 | ||
577 | static inline void printk_all_partitions(void) { } | 553 | static inline void printk_all_partitions(void) { } |
@@ -584,4 +560,4 @@ static inline dev_t blk_lookup_devt(const char *name) | |||
584 | 560 | ||
585 | #endif /* CONFIG_BLOCK */ | 561 | #endif /* CONFIG_BLOCK */ |
586 | 562 | ||
587 | #endif | 563 | #endif /* _LINUX_GENHD_H */ |
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h index 49829988bfa0..897f723bd222 100644 --- a/include/linux/hardirq.h +++ b/include/linux/hardirq.h | |||
@@ -72,6 +72,13 @@ | |||
72 | #define in_softirq() (softirq_count()) | 72 | #define in_softirq() (softirq_count()) |
73 | #define in_interrupt() (irq_count()) | 73 | #define in_interrupt() (irq_count()) |
74 | 74 | ||
75 | /* | ||
76 | * Are we running in atomic context? WARNING: this macro cannot | ||
77 | * always detect atomic context; in particular, it cannot know about | ||
78 | * held spinlocks in non-preemptible kernels. Thus it should not be | ||
79 | * used in the general case to determine whether sleeping is possible. | ||
80 | * Do not use in_atomic() in driver code. | ||
81 | */ | ||
75 | #define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != 0) | 82 | #define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != 0) |
76 | 83 | ||
77 | #ifdef CONFIG_PREEMPT | 84 | #ifdef CONFIG_PREEMPT |
diff --git a/include/linux/ide.h b/include/linux/ide.h index a3b69c10d667..bc26b2f27359 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -26,7 +26,7 @@ | |||
26 | #include <asm/semaphore.h> | 26 | #include <asm/semaphore.h> |
27 | #include <asm/mutex.h> | 27 | #include <asm/mutex.h> |
28 | 28 | ||
29 | #if defined(CRIS) || defined(FRV) | 29 | #if defined(CONFIG_CRIS) || defined(CONFIG_FRV) |
30 | # define SUPPORT_VLB_SYNC 0 | 30 | # define SUPPORT_VLB_SYNC 0 |
31 | #else | 31 | #else |
32 | # define SUPPORT_VLB_SYNC 1 | 32 | # define SUPPORT_VLB_SYNC 1 |
diff --git a/include/linux/in.h b/include/linux/in.h index 70c6df882694..4065313cd7ee 100644 --- a/include/linux/in.h +++ b/include/linux/in.h | |||
@@ -265,7 +265,7 @@ static inline bool ipv4_is_local_multicast(__be32 addr) | |||
265 | static inline bool ipv4_is_lbcast(__be32 addr) | 265 | static inline bool ipv4_is_lbcast(__be32 addr) |
266 | { | 266 | { |
267 | /* limited broadcast */ | 267 | /* limited broadcast */ |
268 | return addr == INADDR_BROADCAST; | 268 | return addr == htonl(INADDR_BROADCAST); |
269 | } | 269 | } |
270 | 270 | ||
271 | static inline bool ipv4_is_zeronet(__be32 addr) | 271 | static inline bool ipv4_is_zeronet(__be32 addr) |
diff --git a/include/linux/jbd.h b/include/linux/jbd.h index b18fd3b9b835..423f58272188 100644 --- a/include/linux/jbd.h +++ b/include/linux/jbd.h | |||
@@ -348,8 +348,7 @@ static inline void jbd_unlock_bh_journal_head(struct buffer_head *bh) | |||
348 | struct jbd_revoke_table_s; | 348 | struct jbd_revoke_table_s; |
349 | 349 | ||
350 | /** | 350 | /** |
351 | * struct handle_s - The handle_s type is the concrete type associated with | 351 | * struct handle_s - this is the concrete type associated with handle_t. |
352 | * handle_t. | ||
353 | * @h_transaction: Which compound transaction is this update a part of? | 352 | * @h_transaction: Which compound transaction is this update a part of? |
354 | * @h_buffer_credits: Number of remaining buffers we are allowed to dirty. | 353 | * @h_buffer_credits: Number of remaining buffers we are allowed to dirty. |
355 | * @h_ref: Reference count on this handle | 354 | * @h_ref: Reference count on this handle |
@@ -358,12 +357,7 @@ struct jbd_revoke_table_s; | |||
358 | * @h_jdata: flag to force data journaling | 357 | * @h_jdata: flag to force data journaling |
359 | * @h_aborted: flag indicating fatal error on handle | 358 | * @h_aborted: flag indicating fatal error on handle |
360 | * @h_lockdep_map: lockdep info for debugging lock problems | 359 | * @h_lockdep_map: lockdep info for debugging lock problems |
361 | **/ | ||
362 | |||
363 | /* Docbook can't yet cope with the bit fields, but will leave the documentation | ||
364 | * in so it can be fixed later. | ||
365 | */ | 360 | */ |
366 | |||
367 | struct handle_s | 361 | struct handle_s |
368 | { | 362 | { |
369 | /* Which compound transaction is this update a part of? */ | 363 | /* Which compound transaction is this update a part of? */ |
@@ -558,8 +552,7 @@ struct transaction_s | |||
558 | }; | 552 | }; |
559 | 553 | ||
560 | /** | 554 | /** |
561 | * struct journal_s - The journal_s type is the concrete type associated with | 555 | * struct journal_s - this is the concrete type associated with journal_t. |
562 | * journal_t. | ||
563 | * @j_flags: General journaling state flags | 556 | * @j_flags: General journaling state flags |
564 | * @j_errno: Is there an outstanding uncleared error on the journal (from a | 557 | * @j_errno: Is there an outstanding uncleared error on the journal (from a |
565 | * prior abort)? | 558 | * prior abort)? |
diff --git a/include/linux/lguest_launcher.h b/include/linux/lguest_launcher.h index 589be3e1f3ac..e7217dc58f39 100644 --- a/include/linux/lguest_launcher.h +++ b/include/linux/lguest_launcher.h | |||
@@ -16,6 +16,10 @@ | |||
16 | * a new device, we simply need to write a new virtio driver and create support | 16 | * a new device, we simply need to write a new virtio driver and create support |
17 | * for it in the Launcher: this code won't need to change. | 17 | * for it in the Launcher: this code won't need to change. |
18 | * | 18 | * |
19 | * Virtio devices are also used by kvm, so we can simply reuse their optimized | ||
20 | * device drivers. And one day when everyone uses virtio, my plan will be | ||
21 | * complete. Bwahahahah! | ||
22 | * | ||
19 | * Devices are described by a simplified ID, a status byte, and some "config" | 23 | * Devices are described by a simplified ID, a status byte, and some "config" |
20 | * bytes which describe this device's configuration. This is placed by the | 24 | * bytes which describe this device's configuration. This is placed by the |
21 | * Launcher just above the top of physical memory: | 25 | * Launcher just above the top of physical memory: |
@@ -26,7 +30,7 @@ struct lguest_device_desc { | |||
26 | /* The number of virtqueues (first in config array) */ | 30 | /* The number of virtqueues (first in config array) */ |
27 | __u8 num_vq; | 31 | __u8 num_vq; |
28 | /* The number of bytes of feature bits. Multiply by 2: one for host | 32 | /* The number of bytes of feature bits. Multiply by 2: one for host |
29 | * features and one for guest acknowledgements. */ | 33 | * features and one for Guest acknowledgements. */ |
30 | __u8 feature_len; | 34 | __u8 feature_len; |
31 | /* The number of bytes of the config array after virtqueues. */ | 35 | /* The number of bytes of the config array after virtqueues. */ |
32 | __u8 config_len; | 36 | __u8 config_len; |
diff --git a/include/linux/libata.h b/include/linux/libata.h index a05f60013642..b064bfeb69ee 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -295,6 +295,7 @@ enum { | |||
295 | ATA_EH_SOFTRESET = (1 << 1), | 295 | ATA_EH_SOFTRESET = (1 << 1), |
296 | ATA_EH_HARDRESET = (1 << 2), | 296 | ATA_EH_HARDRESET = (1 << 2), |
297 | ATA_EH_ENABLE_LINK = (1 << 3), | 297 | ATA_EH_ENABLE_LINK = (1 << 3), |
298 | ATA_EH_LPM = (1 << 4), /* link power management action */ | ||
298 | 299 | ||
299 | ATA_EH_RESET_MASK = ATA_EH_SOFTRESET | ATA_EH_HARDRESET, | 300 | ATA_EH_RESET_MASK = ATA_EH_SOFTRESET | ATA_EH_HARDRESET, |
300 | ATA_EH_PERDEV_MASK = ATA_EH_REVALIDATE, | 301 | ATA_EH_PERDEV_MASK = ATA_EH_REVALIDATE, |
@@ -304,7 +305,6 @@ enum { | |||
304 | ATA_EHI_RESUME_LINK = (1 << 1), /* resume link (reset modifier) */ | 305 | ATA_EHI_RESUME_LINK = (1 << 1), /* resume link (reset modifier) */ |
305 | ATA_EHI_NO_AUTOPSY = (1 << 2), /* no autopsy */ | 306 | ATA_EHI_NO_AUTOPSY = (1 << 2), /* no autopsy */ |
306 | ATA_EHI_QUIET = (1 << 3), /* be quiet */ | 307 | ATA_EHI_QUIET = (1 << 3), /* be quiet */ |
307 | ATA_EHI_LPM = (1 << 4), /* link power management action */ | ||
308 | 308 | ||
309 | ATA_EHI_DID_SOFTRESET = (1 << 16), /* already soft-reset this port */ | 309 | ATA_EHI_DID_SOFTRESET = (1 << 16), /* already soft-reset this port */ |
310 | ATA_EHI_DID_HARDRESET = (1 << 17), /* already soft-reset this port */ | 310 | ATA_EHI_DID_HARDRESET = (1 << 17), /* already soft-reset this port */ |
@@ -463,6 +463,7 @@ struct ata_queued_cmd { | |||
463 | unsigned int sect_size; | 463 | unsigned int sect_size; |
464 | 464 | ||
465 | unsigned int nbytes; | 465 | unsigned int nbytes; |
466 | unsigned int extrabytes; | ||
466 | unsigned int curbytes; | 467 | unsigned int curbytes; |
467 | 468 | ||
468 | struct scatterlist *cursg; | 469 | struct scatterlist *cursg; |
@@ -1336,6 +1337,11 @@ static inline struct ata_queued_cmd *ata_qc_from_tag(struct ata_port *ap, | |||
1336 | return NULL; | 1337 | return NULL; |
1337 | } | 1338 | } |
1338 | 1339 | ||
1340 | static inline unsigned int ata_qc_raw_nbytes(struct ata_queued_cmd *qc) | ||
1341 | { | ||
1342 | return qc->nbytes - min(qc->extrabytes, qc->nbytes); | ||
1343 | } | ||
1344 | |||
1339 | static inline void ata_tf_init(struct ata_device *dev, struct ata_taskfile *tf) | 1345 | static inline void ata_tf_init(struct ata_device *dev, struct ata_taskfile *tf) |
1340 | { | 1346 | { |
1341 | memset(tf, 0, sizeof(*tf)); | 1347 | memset(tf, 0, sizeof(*tf)); |
@@ -1354,7 +1360,7 @@ static inline void ata_qc_reinit(struct ata_queued_cmd *qc) | |||
1354 | qc->flags = 0; | 1360 | qc->flags = 0; |
1355 | qc->cursg = NULL; | 1361 | qc->cursg = NULL; |
1356 | qc->cursg_ofs = 0; | 1362 | qc->cursg_ofs = 0; |
1357 | qc->nbytes = qc->curbytes = 0; | 1363 | qc->nbytes = qc->extrabytes = qc->curbytes = 0; |
1358 | qc->n_elem = 0; | 1364 | qc->n_elem = 0; |
1359 | qc->err_mask = 0; | 1365 | qc->err_mask = 0; |
1360 | qc->sect_size = ATA_SECT_SIZE; | 1366 | qc->sect_size = ATA_SECT_SIZE; |
diff --git a/include/linux/memstick.h b/include/linux/memstick.h index b7ee25888836..3e686ec6a967 100644 --- a/include/linux/memstick.h +++ b/include/linux/memstick.h | |||
@@ -239,7 +239,6 @@ struct memstick_request { | |||
239 | unsigned char tpc; | 239 | unsigned char tpc; |
240 | unsigned char data_dir:1, | 240 | unsigned char data_dir:1, |
241 | need_card_int:1, | 241 | need_card_int:1, |
242 | get_int_reg:1, | ||
243 | long_data:1; | 242 | long_data:1; |
244 | unsigned char int_reg; | 243 | unsigned char int_reg; |
245 | int error; | 244 | int error; |
diff --git a/include/linux/mm.h b/include/linux/mm.h index 3f3ccfe42de0..b695875d63e3 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -235,15 +235,22 @@ static inline int get_page_unless_zero(struct page *page) | |||
235 | struct page *vmalloc_to_page(const void *addr); | 235 | struct page *vmalloc_to_page(const void *addr); |
236 | unsigned long vmalloc_to_pfn(const void *addr); | 236 | unsigned long vmalloc_to_pfn(const void *addr); |
237 | 237 | ||
238 | #ifdef CONFIG_MMU | 238 | /* |
239 | /* Determine if an address is within the vmalloc range */ | 239 | * Determine if an address is within the vmalloc range |
240 | * | ||
241 | * On nommu, vmalloc/vfree wrap through kmalloc/kfree directly, so there | ||
242 | * is no special casing required. | ||
243 | */ | ||
240 | static inline int is_vmalloc_addr(const void *x) | 244 | static inline int is_vmalloc_addr(const void *x) |
241 | { | 245 | { |
246 | #ifdef CONFIG_MMU | ||
242 | unsigned long addr = (unsigned long)x; | 247 | unsigned long addr = (unsigned long)x; |
243 | 248 | ||
244 | return addr >= VMALLOC_START && addr < VMALLOC_END; | 249 | return addr >= VMALLOC_START && addr < VMALLOC_END; |
245 | } | 250 | #else |
251 | return 0; | ||
246 | #endif | 252 | #endif |
253 | } | ||
247 | 254 | ||
248 | static inline struct page *compound_head(struct page *page) | 255 | static inline struct page *compound_head(struct page *page) |
249 | { | 256 | { |
diff --git a/include/linux/mount.h b/include/linux/mount.h index 6d3047d8c91c..5ee2df217cdf 100644 --- a/include/linux/mount.h +++ b/include/linux/mount.h | |||
@@ -61,6 +61,7 @@ struct vfsmount { | |||
61 | atomic_t mnt_count; | 61 | atomic_t mnt_count; |
62 | int mnt_expiry_mark; /* true if marked for expiry */ | 62 | int mnt_expiry_mark; /* true if marked for expiry */ |
63 | int mnt_pinned; | 63 | int mnt_pinned; |
64 | int mnt_ghosts; | ||
64 | }; | 65 | }; |
65 | 66 | ||
66 | static inline struct vfsmount *mntget(struct vfsmount *mnt) | 67 | static inline struct vfsmount *mntget(struct vfsmount *mnt) |
@@ -98,7 +99,6 @@ extern int do_add_mount(struct vfsmount *newmnt, struct nameidata *nd, | |||
98 | int mnt_flags, struct list_head *fslist); | 99 | int mnt_flags, struct list_head *fslist); |
99 | 100 | ||
100 | extern void mark_mounts_for_expiry(struct list_head *mounts); | 101 | extern void mark_mounts_for_expiry(struct list_head *mounts); |
101 | extern void shrink_submounts(struct vfsmount *mountpoint, struct list_head *mounts); | ||
102 | 102 | ||
103 | extern spinlock_t vfsmount_lock; | 103 | extern spinlock_t vfsmount_lock; |
104 | extern dev_t name_to_dev_t(char *name); | 104 | extern dev_t name_to_dev_t(char *name); |
diff --git a/include/linux/netfilter/nfnetlink_compat.h b/include/linux/netfilter/nfnetlink_compat.h index 02a42d875cf7..e1451760c9cd 100644 --- a/include/linux/netfilter/nfnetlink_compat.h +++ b/include/linux/netfilter/nfnetlink_compat.h | |||
@@ -1,6 +1,6 @@ | |||
1 | #ifndef _NFNETLINK_COMPAT_H | 1 | #ifndef _NFNETLINK_COMPAT_H |
2 | #define _NFNETLINK_COMPAT_H | 2 | #define _NFNETLINK_COMPAT_H |
3 | #ifndef __KERNEL | 3 | #ifndef __KERNEL__ |
4 | /* Old nfnetlink macros for userspace */ | 4 | /* Old nfnetlink macros for userspace */ |
5 | 5 | ||
6 | /* nfnetlink groups: Up to 32 maximum */ | 6 | /* nfnetlink groups: Up to 32 maximum */ |
diff --git a/include/linux/pci.h b/include/linux/pci.h index 38eff1947750..ea760e519c46 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
@@ -278,6 +278,7 @@ struct pci_bus { | |||
278 | struct device dev; | 278 | struct device dev; |
279 | struct bin_attribute *legacy_io; /* legacy I/O for this bus */ | 279 | struct bin_attribute *legacy_io; /* legacy I/O for this bus */ |
280 | struct bin_attribute *legacy_mem; /* legacy mem */ | 280 | struct bin_attribute *legacy_mem; /* legacy mem */ |
281 | unsigned int is_added:1; | ||
281 | }; | 282 | }; |
282 | 283 | ||
283 | #define pci_bus_b(n) list_entry(n, struct pci_bus, node) | 284 | #define pci_bus_b(n) list_entry(n, struct pci_bus, node) |
@@ -512,7 +513,6 @@ int pci_find_next_capability(struct pci_dev *dev, u8 pos, int cap); | |||
512 | int pci_find_ext_capability(struct pci_dev *dev, int cap); | 513 | int pci_find_ext_capability(struct pci_dev *dev, int cap); |
513 | int pci_find_ht_capability(struct pci_dev *dev, int ht_cap); | 514 | int pci_find_ht_capability(struct pci_dev *dev, int ht_cap); |
514 | int pci_find_next_ht_capability(struct pci_dev *dev, int pos, int ht_cap); | 515 | int pci_find_next_ht_capability(struct pci_dev *dev, int pos, int ht_cap); |
515 | void pcie_wait_pending_transaction(struct pci_dev *dev); | ||
516 | struct pci_bus *pci_find_next_bus(const struct pci_bus *from); | 516 | struct pci_bus *pci_find_next_bus(const struct pci_bus *from); |
517 | 517 | ||
518 | struct pci_dev *pci_get_device(unsigned int vendor, unsigned int device, | 518 | struct pci_dev *pci_get_device(unsigned int vendor, unsigned int device, |
@@ -883,9 +883,6 @@ static inline int pci_find_ext_capability(struct pci_dev *dev, int cap) | |||
883 | return 0; | 883 | return 0; |
884 | } | 884 | } |
885 | 885 | ||
886 | static inline void pcie_wait_pending_transaction(struct pci_dev *dev) | ||
887 | { } | ||
888 | |||
889 | /* Power management related routines */ | 886 | /* Power management related routines */ |
890 | static inline int pci_save_state(struct pci_dev *dev) | 887 | static inline int pci_save_state(struct pci_dev *dev) |
891 | { | 888 | { |
@@ -1044,6 +1041,8 @@ void __iomem *pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen); | |||
1044 | void pcim_iounmap(struct pci_dev *pdev, void __iomem *addr); | 1041 | void pcim_iounmap(struct pci_dev *pdev, void __iomem *addr); |
1045 | void __iomem * const *pcim_iomap_table(struct pci_dev *pdev); | 1042 | void __iomem * const *pcim_iomap_table(struct pci_dev *pdev); |
1046 | int pcim_iomap_regions(struct pci_dev *pdev, u16 mask, const char *name); | 1043 | int pcim_iomap_regions(struct pci_dev *pdev, u16 mask, const char *name); |
1044 | int pcim_iomap_regions_request_all(struct pci_dev *pdev, u16 mask, | ||
1045 | const char *name); | ||
1047 | void pcim_iounmap_regions(struct pci_dev *pdev, u16 mask); | 1046 | void pcim_iounmap_regions(struct pci_dev *pdev, u16 mask); |
1048 | 1047 | ||
1049 | extern int pci_pci_problems; | 1048 | extern int pci_pci_problems; |
diff --git a/include/linux/pkt_cls.h b/include/linux/pkt_cls.h index 28dfc61cf79e..99efbed81fa2 100644 --- a/include/linux/pkt_cls.h +++ b/include/linux/pkt_cls.h | |||
@@ -201,8 +201,8 @@ enum | |||
201 | 201 | ||
202 | struct tc_u32_key | 202 | struct tc_u32_key |
203 | { | 203 | { |
204 | __u32 mask; | 204 | __be32 mask; |
205 | __u32 val; | 205 | __be32 val; |
206 | int off; | 206 | int off; |
207 | int offmask; | 207 | int offmask; |
208 | }; | 208 | }; |
@@ -213,12 +213,12 @@ struct tc_u32_sel | |||
213 | unsigned char offshift; | 213 | unsigned char offshift; |
214 | unsigned char nkeys; | 214 | unsigned char nkeys; |
215 | 215 | ||
216 | __u16 offmask; | 216 | __be16 offmask; |
217 | __u16 off; | 217 | __u16 off; |
218 | short offoff; | 218 | short offoff; |
219 | 219 | ||
220 | short hoff; | 220 | short hoff; |
221 | __u32 hmask; | 221 | __be32 hmask; |
222 | struct tc_u32_key keys[0]; | 222 | struct tc_u32_key keys[0]; |
223 | }; | 223 | }; |
224 | 224 | ||
diff --git a/include/linux/pmu.h b/include/linux/pmu.h index 4c5f65392d36..cafe98d96948 100644 --- a/include/linux/pmu.h +++ b/include/linux/pmu.h | |||
@@ -147,8 +147,15 @@ extern void pmu_wait_complete(struct adb_request *req); | |||
147 | /* For use before switching interrupts off for a long time; | 147 | /* For use before switching interrupts off for a long time; |
148 | * warning: not stackable | 148 | * warning: not stackable |
149 | */ | 149 | */ |
150 | #if defined(CONFIG_ADB_PMU) | ||
150 | extern void pmu_suspend(void); | 151 | extern void pmu_suspend(void); |
151 | extern void pmu_resume(void); | 152 | extern void pmu_resume(void); |
153 | #else | ||
154 | static inline void pmu_suspend(void) | ||
155 | {} | ||
156 | static inline void pmu_resume(void) | ||
157 | {} | ||
158 | #endif | ||
152 | 159 | ||
153 | extern void pmu_enable_irled(int on); | 160 | extern void pmu_enable_irled(int on); |
154 | 161 | ||
@@ -192,7 +199,7 @@ extern unsigned int pmu_power_flags; | |||
192 | extern void pmu_backlight_init(void); | 199 | extern void pmu_backlight_init(void); |
193 | 200 | ||
194 | /* some code needs to know if the PMU was suspended for hibernation */ | 201 | /* some code needs to know if the PMU was suspended for hibernation */ |
195 | #if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32) | 202 | #if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32) |
196 | extern int pmu_sys_suspended; | 203 | extern int pmu_sys_suspended; |
197 | #else | 204 | #else |
198 | /* if power management is not configured it can't be suspended */ | 205 | /* if power management is not configured it can't be suspended */ |
diff --git a/include/linux/pnp.h b/include/linux/pnp.h index cd6332b88829..29dd55838e84 100644 --- a/include/linux/pnp.h +++ b/include/linux/pnp.h | |||
@@ -14,7 +14,7 @@ | |||
14 | #include <linux/mod_devicetable.h> | 14 | #include <linux/mod_devicetable.h> |
15 | 15 | ||
16 | #define PNP_MAX_PORT 40 | 16 | #define PNP_MAX_PORT 40 |
17 | #define PNP_MAX_MEM 12 | 17 | #define PNP_MAX_MEM 24 |
18 | #define PNP_MAX_IRQ 2 | 18 | #define PNP_MAX_IRQ 2 |
19 | #define PNP_MAX_DMA 2 | 19 | #define PNP_MAX_DMA 2 |
20 | #define PNP_NAME_LEN 50 | 20 | #define PNP_NAME_LEN 50 |
diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h index d9a9e718ad19..9b6c935f69cf 100644 --- a/include/linux/proc_fs.h +++ b/include/linux/proc_fs.h | |||
@@ -50,8 +50,6 @@ typedef int (read_proc_t)(char *page, char **start, off_t off, | |||
50 | typedef int (write_proc_t)(struct file *file, const char __user *buffer, | 50 | typedef int (write_proc_t)(struct file *file, const char __user *buffer, |
51 | unsigned long count, void *data); | 51 | unsigned long count, void *data); |
52 | typedef int (get_info_t)(char *, char **, off_t, int); | 52 | typedef int (get_info_t)(char *, char **, off_t, int); |
53 | typedef struct proc_dir_entry *(shadow_proc_t)(struct task_struct *task, | ||
54 | struct proc_dir_entry *pde); | ||
55 | 53 | ||
56 | struct proc_dir_entry { | 54 | struct proc_dir_entry { |
57 | unsigned int low_ino; | 55 | unsigned int low_ino; |
@@ -82,7 +80,6 @@ struct proc_dir_entry { | |||
82 | int pde_users; /* number of callers into module in progress */ | 80 | int pde_users; /* number of callers into module in progress */ |
83 | spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */ | 81 | spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */ |
84 | struct completion *pde_unload_completion; | 82 | struct completion *pde_unload_completion; |
85 | shadow_proc_t *shadow_proc; | ||
86 | }; | 83 | }; |
87 | 84 | ||
88 | struct kcore_list { | 85 | struct kcore_list { |
diff --git a/include/linux/ps2esdi.h b/include/linux/ps2esdi.h deleted file mode 100644 index c0e050b1dfe9..000000000000 --- a/include/linux/ps2esdi.h +++ /dev/null | |||
@@ -1,98 +0,0 @@ | |||
1 | #ifndef _PS2ESDI_H_ | ||
2 | #define _PS2ESDI_H_ | ||
3 | |||
4 | #define NRML_ESDI_ID 0xddff | ||
5 | #define INTG_ESDI_ID 0xdf9f | ||
6 | |||
7 | #define PRIMARY_IO_BASE 0x3510 | ||
8 | #define ALT_IO_BASE 0x3518 | ||
9 | |||
10 | #define ESDI_CMD_INT (io_base+0) | ||
11 | #define ESDI_STT_INT (io_base+0) | ||
12 | #define ESDI_CONTROL (io_base+2) | ||
13 | #define ESDI_STATUS (io_base+2) | ||
14 | #define ESDI_ATTN (io_base+3) | ||
15 | #define ESDI_INTRPT (io_base+3) | ||
16 | |||
17 | #define STATUS_ENABLED 0x01 | ||
18 | #define STATUS_ALTERNATE 0x02 | ||
19 | #define STATUS_BUSY 0x10 | ||
20 | #define STATUS_STAT_AVAIL 0x08 | ||
21 | #define STATUS_INTR 0x01 | ||
22 | #define STATUS_RESET_FAIL 0xea | ||
23 | #define STATUS_CMD_INF 0x04 | ||
24 | |||
25 | #define CTRL_SOFT_RESET 0xe4 | ||
26 | #define CTRL_HARD_RESET 0x80 | ||
27 | #define CTRL_EOI 0xe2 | ||
28 | #define CTRL_ENABLE_DMA 0x02 | ||
29 | #define CTRL_ENABLE_INTR 0x01 | ||
30 | #define CTRL_DISABLE_INTR 0x00 | ||
31 | |||
32 | #define ATT_EOI 0x02 | ||
33 | |||
34 | /* bits of word 0 of configuration status block. more info see p.38 of tech ref */ | ||
35 | #define CONFIG_IS 0x10 /* Invalid Secondary */ | ||
36 | #define CONFIG_ZD 0x08 /* Zero Defect */ | ||
37 | #define CONFIG_SF 0x04 /* Skewed Format */ | ||
38 | #define CONFIG_FR 0x02 /* Removable */ | ||
39 | #define CONFIG_RT 0x01 /* Retries */ | ||
40 | |||
41 | #define PORT_SYS_A 0x92 | ||
42 | #define PORT_DMA_FN 0x18 | ||
43 | #define PORT_DMA_EX 0x1a | ||
44 | |||
45 | #define ON (unsigned char)0x40 | ||
46 | #define OFF (unsigned char)~ON | ||
47 | #define LITE_ON outb(inb(PORT_SYS_A) | ON,PORT_SYS_A) | ||
48 | #define LITE_OFF outb((inb(PORT_SYS_A) & OFF),PORT_SYS_A) | ||
49 | |||
50 | #define FAIL 0 | ||
51 | #define SUCCES 1 | ||
52 | |||
53 | #define INT_CMD_COMPLETE 0x01 | ||
54 | #define INT_CMD_ECC 0x03 | ||
55 | #define INT_CMD_RETRY 0x05 | ||
56 | #define INT_CMD_FORMAT 0x06 | ||
57 | #define INT_CMD_ECC_RETRY 0x07 | ||
58 | #define INT_CMD_WARNING 0x08 | ||
59 | #define INT_CMD_ABORT 0x09 | ||
60 | #define INT_RESET 0x0A | ||
61 | #define INT_TRANSFER_REQ 0x0B | ||
62 | #define INT_CMD_FAILED 0x0C | ||
63 | #define INT_DMA_ERR 0x0D | ||
64 | #define INT_CMD_BLK_ERR 0x0E | ||
65 | #define INT_ATTN_ERROR 0x0F | ||
66 | |||
67 | #define DMA_MASK_CHAN 0x90 | ||
68 | #define DMA_UNMASK_CHAN 0xA0 | ||
69 | #define DMA_WRITE_ADDR 0x20 | ||
70 | #define DMA_WRITE_TC 0x40 | ||
71 | #define DMA_WRITE_MODE 0x70 | ||
72 | |||
73 | #define CMD_GET_DEV_CONFIG 0x09 | ||
74 | #define CMD_READ 0x4601 | ||
75 | #define CMD_WRITE 0x4602 | ||
76 | #define DMA_READ_16 0x4C | ||
77 | #define DMA_WRITE_16 0x44 | ||
78 | |||
79 | |||
80 | #define MB 1024*1024 | ||
81 | #define SECT_SIZE 512 | ||
82 | |||
83 | #define ERROR 1 | ||
84 | #define OK 0 | ||
85 | |||
86 | #define HDIO_GETGEO 0x0301 | ||
87 | |||
88 | #define FALSE 0 | ||
89 | #define TRUE !FALSE | ||
90 | |||
91 | struct ps2esdi_geometry { | ||
92 | unsigned char heads; | ||
93 | unsigned char sectors; | ||
94 | unsigned short cylinders; | ||
95 | unsigned long start; | ||
96 | }; | ||
97 | |||
98 | #endif /* _PS2ESDI_H_ */ | ||
diff --git a/include/linux/rcupreempt.h b/include/linux/rcupreempt.h index 01152ed532c8..d038aa6e5ee1 100644 --- a/include/linux/rcupreempt.h +++ b/include/linux/rcupreempt.h | |||
@@ -87,15 +87,15 @@ DECLARE_PER_CPU(long, dynticks_progress_counter); | |||
87 | 87 | ||
88 | static inline void rcu_enter_nohz(void) | 88 | static inline void rcu_enter_nohz(void) |
89 | { | 89 | { |
90 | smp_mb(); /* CPUs seeing ++ must see prior RCU read-side crit sects */ | ||
90 | __get_cpu_var(dynticks_progress_counter)++; | 91 | __get_cpu_var(dynticks_progress_counter)++; |
91 | WARN_ON(__get_cpu_var(dynticks_progress_counter) & 0x1); | 92 | WARN_ON(__get_cpu_var(dynticks_progress_counter) & 0x1); |
92 | mb(); | ||
93 | } | 93 | } |
94 | 94 | ||
95 | static inline void rcu_exit_nohz(void) | 95 | static inline void rcu_exit_nohz(void) |
96 | { | 96 | { |
97 | mb(); | ||
98 | __get_cpu_var(dynticks_progress_counter)++; | 97 | __get_cpu_var(dynticks_progress_counter)++; |
98 | smp_mb(); /* CPUs seeing ++ must see later RCU read-side crit sects */ | ||
99 | WARN_ON(!(__get_cpu_var(dynticks_progress_counter) & 0x1)); | 99 | WARN_ON(!(__get_cpu_var(dynticks_progress_counter) & 0x1)); |
100 | } | 100 | } |
101 | 101 | ||
diff --git a/include/linux/sched.h b/include/linux/sched.h index 11d8e9a74eff..6a1e7afb099b 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -790,6 +790,7 @@ struct sched_domain { | |||
790 | }; | 790 | }; |
791 | 791 | ||
792 | extern void partition_sched_domains(int ndoms_new, cpumask_t *doms_new); | 792 | extern void partition_sched_domains(int ndoms_new, cpumask_t *doms_new); |
793 | extern int arch_reinit_sched_domains(void); | ||
793 | 794 | ||
794 | #endif /* CONFIG_SMP */ | 795 | #endif /* CONFIG_SMP */ |
795 | 796 | ||
@@ -929,6 +930,9 @@ struct sched_entity { | |||
929 | u64 vruntime; | 930 | u64 vruntime; |
930 | u64 prev_sum_exec_runtime; | 931 | u64 prev_sum_exec_runtime; |
931 | 932 | ||
933 | u64 last_wakeup; | ||
934 | u64 avg_overlap; | ||
935 | |||
932 | #ifdef CONFIG_SCHEDSTATS | 936 | #ifdef CONFIG_SCHEDSTATS |
933 | u64 wait_start; | 937 | u64 wait_start; |
934 | u64 wait_max; | 938 | u64 wait_max; |
@@ -1537,6 +1541,12 @@ static inline void idle_task_exit(void) {} | |||
1537 | 1541 | ||
1538 | extern void sched_idle_next(void); | 1542 | extern void sched_idle_next(void); |
1539 | 1543 | ||
1544 | #if defined(CONFIG_NO_HZ) && defined(CONFIG_SMP) | ||
1545 | extern void wake_up_idle_cpu(int cpu); | ||
1546 | #else | ||
1547 | static inline void wake_up_idle_cpu(int cpu) { } | ||
1548 | #endif | ||
1549 | |||
1540 | #ifdef CONFIG_SCHED_DEBUG | 1550 | #ifdef CONFIG_SCHED_DEBUG |
1541 | extern unsigned int sysctl_sched_latency; | 1551 | extern unsigned int sysctl_sched_latency; |
1542 | extern unsigned int sysctl_sched_min_granularity; | 1552 | extern unsigned int sysctl_sched_min_granularity; |
diff --git a/include/linux/security.h b/include/linux/security.h index b07357ca2137..c673dfd4dffc 100644 --- a/include/linux/security.h +++ b/include/linux/security.h | |||
@@ -57,7 +57,6 @@ extern int cap_inode_need_killpriv(struct dentry *dentry); | |||
57 | extern int cap_inode_killpriv(struct dentry *dentry); | 57 | extern int cap_inode_killpriv(struct dentry *dentry); |
58 | extern int cap_task_post_setuid (uid_t old_ruid, uid_t old_euid, uid_t old_suid, int flags); | 58 | extern int cap_task_post_setuid (uid_t old_ruid, uid_t old_euid, uid_t old_suid, int flags); |
59 | extern void cap_task_reparent_to_init (struct task_struct *p); | 59 | extern void cap_task_reparent_to_init (struct task_struct *p); |
60 | extern int cap_task_kill(struct task_struct *p, struct siginfo *info, int sig, u32 secid); | ||
61 | extern int cap_task_setscheduler (struct task_struct *p, int policy, struct sched_param *lp); | 60 | extern int cap_task_setscheduler (struct task_struct *p, int policy, struct sched_param *lp); |
62 | extern int cap_task_setioprio (struct task_struct *p, int ioprio); | 61 | extern int cap_task_setioprio (struct task_struct *p, int ioprio); |
63 | extern int cap_task_setnice (struct task_struct *p, int nice); | 62 | extern int cap_task_setnice (struct task_struct *p, int nice); |
@@ -2187,7 +2186,7 @@ static inline int security_task_kill (struct task_struct *p, | |||
2187 | struct siginfo *info, int sig, | 2186 | struct siginfo *info, int sig, |
2188 | u32 secid) | 2187 | u32 secid) |
2189 | { | 2188 | { |
2190 | return cap_task_kill(p, info, sig, secid); | 2189 | return 0; |
2191 | } | 2190 | } |
2192 | 2191 | ||
2193 | static inline int security_task_wait (struct task_struct *p) | 2192 | static inline int security_task_wait (struct task_struct *p) |
diff --git a/include/linux/topology.h b/include/linux/topology.h index 2352f46160d3..bd14f8b30f09 100644 --- a/include/linux/topology.h +++ b/include/linux/topology.h | |||
@@ -50,6 +50,8 @@ | |||
50 | for_each_online_node(node) \ | 50 | for_each_online_node(node) \ |
51 | if (nr_cpus_node(node)) | 51 | if (nr_cpus_node(node)) |
52 | 52 | ||
53 | void arch_update_cpu_topology(void); | ||
54 | |||
53 | /* Conform to ACPI 2.0 SLIT distance definitions */ | 55 | /* Conform to ACPI 2.0 SLIT distance definitions */ |
54 | #define LOCAL_DISTANCE 10 | 56 | #define LOCAL_DISTANCE 10 |
55 | #define REMOTE_DISTANCE 20 | 57 | #define REMOTE_DISTANCE 20 |
@@ -138,7 +140,6 @@ | |||
138 | | SD_BALANCE_FORK \ | 140 | | SD_BALANCE_FORK \ |
139 | | SD_BALANCE_EXEC \ | 141 | | SD_BALANCE_EXEC \ |
140 | | SD_WAKE_AFFINE \ | 142 | | SD_WAKE_AFFINE \ |
141 | | SD_WAKE_IDLE \ | ||
142 | | SD_SHARE_PKG_RESOURCES\ | 143 | | SD_SHARE_PKG_RESOURCES\ |
143 | | BALANCE_FOR_MC_POWER, \ | 144 | | BALANCE_FOR_MC_POWER, \ |
144 | .last_balance = jiffies, \ | 145 | .last_balance = jiffies, \ |
diff --git a/include/linux/usb/quirks.h b/include/linux/usb/quirks.h index 2692ec9389ca..1f999ec8d08c 100644 --- a/include/linux/usb/quirks.h +++ b/include/linux/usb/quirks.h | |||
@@ -9,3 +9,6 @@ | |||
9 | 9 | ||
10 | /* device can't resume correctly so reset it instead */ | 10 | /* device can't resume correctly so reset it instead */ |
11 | #define USB_QUIRK_RESET_RESUME 0x00000002 | 11 | #define USB_QUIRK_RESET_RESUME 0x00000002 |
12 | |||
13 | /* device can't handle Set-Interface requests */ | ||
14 | #define USB_QUIRK_NO_SET_INTF 0x00000004 | ||
diff --git a/include/linux/usb_usual.h b/include/linux/usb_usual.h index cee0623b3c7b..0a40dfa44c9f 100644 --- a/include/linux/usb_usual.h +++ b/include/linux/usb_usual.h | |||
@@ -50,7 +50,9 @@ | |||
50 | US_FLAG(CAPACITY_HEURISTICS, 0x00001000) \ | 50 | US_FLAG(CAPACITY_HEURISTICS, 0x00001000) \ |
51 | /* sometimes sizes is too big */ \ | 51 | /* sometimes sizes is too big */ \ |
52 | US_FLAG(MAX_SECTORS_MIN,0x00002000) \ | 52 | US_FLAG(MAX_SECTORS_MIN,0x00002000) \ |
53 | /* Sets max_sectors to arch min */ | 53 | /* Sets max_sectors to arch min */ \ |
54 | US_FLAG(BULK_IGNORE_TAG,0x00004000) \ | ||
55 | /* Ignore tag mismatch in bulk operations */ | ||
54 | 56 | ||
55 | 57 | ||
56 | #define US_FLAG(name, value) US_FL_##name = value , | 58 | #define US_FLAG(name, value) US_FL_##name = value , |
diff --git a/include/linux/virtio.h b/include/linux/virtio.h index 260d1fcf29a4..12c18ac1b973 100644 --- a/include/linux/virtio.h +++ b/include/linux/virtio.h | |||
@@ -43,8 +43,9 @@ struct virtqueue | |||
43 | * vq: the struct virtqueue we're talking about. | 43 | * vq: the struct virtqueue we're talking about. |
44 | * @enable_cb: restart callbacks after disable_cb. | 44 | * @enable_cb: restart callbacks after disable_cb. |
45 | * vq: the struct virtqueue we're talking about. | 45 | * vq: the struct virtqueue we're talking about. |
46 | * This returns "false" (and doesn't re-enable) if there are pending | 46 | * This re-enables callbacks; it returns "false" if there are pending |
47 | * buffers in the queue, to avoid a race. | 47 | * buffers in the queue, to detect a possible race between the driver |
48 | * checking for more work, and enabling callbacks. | ||
48 | * | 49 | * |
49 | * Locking rules are straightforward: the driver is responsible for | 50 | * Locking rules are straightforward: the driver is responsible for |
50 | * locking. No two operations may be invoked simultaneously. | 51 | * locking. No two operations may be invoked simultaneously. |
diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h index 771d17783c18..750648df13f4 100644 --- a/include/net/bluetooth/bluetooth.h +++ b/include/net/bluetooth/bluetooth.h | |||
@@ -170,7 +170,7 @@ static inline int skb_frags_no(struct sk_buff *skb) | |||
170 | int bt_err(__u16 code); | 170 | int bt_err(__u16 code); |
171 | 171 | ||
172 | extern int hci_sock_init(void); | 172 | extern int hci_sock_init(void); |
173 | extern int hci_sock_cleanup(void); | 173 | extern void hci_sock_cleanup(void); |
174 | 174 | ||
175 | extern int bt_sysfs_init(void); | 175 | extern int bt_sysfs_init(void); |
176 | extern void bt_sysfs_cleanup(void); | 176 | extern void bt_sysfs_cleanup(void); |
diff --git a/include/net/dst.h b/include/net/dst.h index e3ac7d0fc4e1..ae13370e8484 100644 --- a/include/net/dst.h +++ b/include/net/dst.h | |||
@@ -52,15 +52,10 @@ struct dst_entry | |||
52 | unsigned short header_len; /* more space at head required */ | 52 | unsigned short header_len; /* more space at head required */ |
53 | unsigned short trailer_len; /* space to reserve at tail */ | 53 | unsigned short trailer_len; /* space to reserve at tail */ |
54 | 54 | ||
55 | u32 metrics[RTAX_MAX]; | ||
56 | struct dst_entry *path; | ||
57 | |||
58 | unsigned long rate_last; /* rate limiting for ICMP */ | ||
59 | unsigned int rate_tokens; | 55 | unsigned int rate_tokens; |
56 | unsigned long rate_last; /* rate limiting for ICMP */ | ||
60 | 57 | ||
61 | #ifdef CONFIG_NET_CLS_ROUTE | 58 | struct dst_entry *path; |
62 | __u32 tclassid; | ||
63 | #endif | ||
64 | 59 | ||
65 | struct neighbour *neighbour; | 60 | struct neighbour *neighbour; |
66 | struct hh_cache *hh; | 61 | struct hh_cache *hh; |
@@ -70,10 +65,20 @@ struct dst_entry | |||
70 | int (*output)(struct sk_buff*); | 65 | int (*output)(struct sk_buff*); |
71 | 66 | ||
72 | struct dst_ops *ops; | 67 | struct dst_ops *ops; |
73 | 68 | ||
74 | unsigned long lastuse; | 69 | u32 metrics[RTAX_MAX]; |
70 | |||
71 | #ifdef CONFIG_NET_CLS_ROUTE | ||
72 | __u32 tclassid; | ||
73 | #endif | ||
74 | |||
75 | /* | ||
76 | * __refcnt wants to be on a different cache line from | ||
77 | * input/output/ops or performance tanks badly | ||
78 | */ | ||
75 | atomic_t __refcnt; /* client references */ | 79 | atomic_t __refcnt; /* client references */ |
76 | int __use; | 80 | int __use; |
81 | unsigned long lastuse; | ||
77 | union { | 82 | union { |
78 | struct dst_entry *next; | 83 | struct dst_entry *next; |
79 | struct rtable *rt_next; | 84 | struct rtable *rt_next; |
diff --git a/include/net/irda/irttp.h b/include/net/irda/irttp.h index 32c385dd9e06..0788c23d2828 100644 --- a/include/net/irda/irttp.h +++ b/include/net/irda/irttp.h | |||
@@ -169,17 +169,17 @@ int irttp_disconnect_request(struct tsap_cb *self, struct sk_buff *skb, | |||
169 | void irttp_flow_request(struct tsap_cb *self, LOCAL_FLOW flow); | 169 | void irttp_flow_request(struct tsap_cb *self, LOCAL_FLOW flow); |
170 | struct tsap_cb *irttp_dup(struct tsap_cb *self, void *instance); | 170 | struct tsap_cb *irttp_dup(struct tsap_cb *self, void *instance); |
171 | 171 | ||
172 | static __inline __u32 irttp_get_saddr(struct tsap_cb *self) | 172 | static inline __u32 irttp_get_saddr(struct tsap_cb *self) |
173 | { | 173 | { |
174 | return irlmp_get_saddr(self->lsap); | 174 | return irlmp_get_saddr(self->lsap); |
175 | } | 175 | } |
176 | 176 | ||
177 | static __inline __u32 irttp_get_daddr(struct tsap_cb *self) | 177 | static inline __u32 irttp_get_daddr(struct tsap_cb *self) |
178 | { | 178 | { |
179 | return irlmp_get_daddr(self->lsap); | 179 | return irlmp_get_daddr(self->lsap); |
180 | } | 180 | } |
181 | 181 | ||
182 | static __inline __u32 irttp_get_max_seg_size(struct tsap_cb *self) | 182 | static inline __u32 irttp_get_max_seg_size(struct tsap_cb *self) |
183 | { | 183 | { |
184 | return self->max_seg_size; | 184 | return self->max_seg_size; |
185 | } | 185 | } |
diff --git a/include/net/neighbour.h b/include/net/neighbour.h index ebbfb509822e..64a5f0120b52 100644 --- a/include/net/neighbour.h +++ b/include/net/neighbour.h | |||
@@ -218,6 +218,10 @@ extern unsigned long neigh_rand_reach_time(unsigned long base); | |||
218 | extern void pneigh_enqueue(struct neigh_table *tbl, struct neigh_parms *p, | 218 | extern void pneigh_enqueue(struct neigh_table *tbl, struct neigh_parms *p, |
219 | struct sk_buff *skb); | 219 | struct sk_buff *skb); |
220 | extern struct pneigh_entry *pneigh_lookup(struct neigh_table *tbl, struct net *net, const void *key, struct net_device *dev, int creat); | 220 | extern struct pneigh_entry *pneigh_lookup(struct neigh_table *tbl, struct net *net, const void *key, struct net_device *dev, int creat); |
221 | extern struct pneigh_entry *__pneigh_lookup(struct neigh_table *tbl, | ||
222 | struct net *net, | ||
223 | const void *key, | ||
224 | struct net_device *dev); | ||
221 | extern int pneigh_delete(struct neigh_table *tbl, struct net *net, const void *key, struct net_device *dev); | 225 | extern int pneigh_delete(struct neigh_table *tbl, struct net *net, const void *key, struct net_device *dev); |
222 | 226 | ||
223 | extern void neigh_app_ns(struct neighbour *n); | 227 | extern void neigh_app_ns(struct neighbour *n); |
diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index 28738b7d53eb..923f2b8b9096 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h | |||
@@ -31,7 +31,6 @@ struct net { | |||
31 | 31 | ||
32 | struct proc_dir_entry *proc_net; | 32 | struct proc_dir_entry *proc_net; |
33 | struct proc_dir_entry *proc_net_stat; | 33 | struct proc_dir_entry *proc_net_stat; |
34 | struct proc_dir_entry *proc_net_root; | ||
35 | 34 | ||
36 | struct list_head sysctl_table_headers; | 35 | struct list_head sysctl_table_headers; |
37 | 36 | ||
diff --git a/include/net/netfilter/nf_conntrack_extend.h b/include/net/netfilter/nf_conntrack_extend.h index 49aac6323fbe..f736e842977f 100644 --- a/include/net/netfilter/nf_conntrack_extend.h +++ b/include/net/netfilter/nf_conntrack_extend.h | |||
@@ -17,7 +17,6 @@ enum nf_ct_ext_id | |||
17 | struct nf_ct_ext { | 17 | struct nf_ct_ext { |
18 | u8 offset[NF_CT_EXT_NUM]; | 18 | u8 offset[NF_CT_EXT_NUM]; |
19 | u8 len; | 19 | u8 len; |
20 | u8 real_len; | ||
21 | char data[0]; | 20 | char data[0]; |
22 | }; | 21 | }; |
23 | 22 | ||
diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index 57df27f19588..ea806732b084 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h | |||
@@ -380,15 +380,19 @@ static inline int sctp_sysctl_jiffies_ms(ctl_table *table, int __user *name, int | |||
380 | 380 | ||
381 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) | 381 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) |
382 | 382 | ||
383 | int sctp_v6_init(void); | 383 | void sctp_v6_pf_init(void); |
384 | void sctp_v6_exit(void); | 384 | void sctp_v6_pf_exit(void); |
385 | int sctp_v6_protosw_init(void); | ||
386 | void sctp_v6_protosw_exit(void); | ||
385 | int sctp_v6_add_protocol(void); | 387 | int sctp_v6_add_protocol(void); |
386 | void sctp_v6_del_protocol(void); | 388 | void sctp_v6_del_protocol(void); |
387 | 389 | ||
388 | #else /* #ifdef defined(CONFIG_IPV6) */ | 390 | #else /* #ifdef defined(CONFIG_IPV6) */ |
389 | 391 | ||
390 | static inline int sctp_v6_init(void) { return 0; } | 392 | static inline void sctp_v6_pf_init(void) { return; } |
391 | static inline void sctp_v6_exit(void) { return; } | 393 | static inline void sctp_v6_pf_exit(void) { return; } |
394 | static inline int sctp_v6_protosw_init(void) { return 0; } | ||
395 | static inline void sctp_v6_protosw_exit(void) { return; } | ||
392 | static inline int sctp_v6_add_protocol(void) { return 0; } | 396 | static inline int sctp_v6_add_protocol(void) { return 0; } |
393 | static inline void sctp_v6_del_protocol(void) { return; } | 397 | static inline void sctp_v6_del_protocol(void) { return; } |
394 | 398 | ||
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index eea7785cc757..0d255ae008b6 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
@@ -204,6 +204,7 @@ struct xfrm_state | |||
204 | * transformer. */ | 204 | * transformer. */ |
205 | const struct xfrm_type *type; | 205 | const struct xfrm_type *type; |
206 | struct xfrm_mode *inner_mode; | 206 | struct xfrm_mode *inner_mode; |
207 | struct xfrm_mode *inner_mode_iaf; | ||
207 | struct xfrm_mode *outer_mode; | 208 | struct xfrm_mode *outer_mode; |
208 | 209 | ||
209 | /* Security context */ | 210 | /* Security context */ |
@@ -277,7 +278,7 @@ extern int __xfrm_state_delete(struct xfrm_state *x); | |||
277 | struct xfrm_state_afinfo { | 278 | struct xfrm_state_afinfo { |
278 | unsigned int family; | 279 | unsigned int family; |
279 | unsigned int proto; | 280 | unsigned int proto; |
280 | unsigned int eth_proto; | 281 | __be16 eth_proto; |
281 | struct module *owner; | 282 | struct module *owner; |
282 | const struct xfrm_type *type_map[IPPROTO_MAX]; | 283 | const struct xfrm_type *type_map[IPPROTO_MAX]; |
283 | struct xfrm_mode *mode_map[XFRM_MODE_MAX]; | 284 | struct xfrm_mode *mode_map[XFRM_MODE_MAX]; |
@@ -387,6 +388,27 @@ enum { | |||
387 | extern int xfrm_register_mode(struct xfrm_mode *mode, int family); | 388 | extern int xfrm_register_mode(struct xfrm_mode *mode, int family); |
388 | extern int xfrm_unregister_mode(struct xfrm_mode *mode, int family); | 389 | extern int xfrm_unregister_mode(struct xfrm_mode *mode, int family); |
389 | 390 | ||
391 | static inline int xfrm_af2proto(unsigned int family) | ||
392 | { | ||
393 | switch(family) { | ||
394 | case AF_INET: | ||
395 | return IPPROTO_IPIP; | ||
396 | case AF_INET6: | ||
397 | return IPPROTO_IPV6; | ||
398 | default: | ||
399 | return 0; | ||
400 | } | ||
401 | } | ||
402 | |||
403 | static inline struct xfrm_mode *xfrm_ip2inner_mode(struct xfrm_state *x, int ipproto) | ||
404 | { | ||
405 | if ((ipproto == IPPROTO_IPIP && x->props.family == AF_INET) || | ||
406 | (ipproto == IPPROTO_IPV6 && x->props.family == AF_INET6)) | ||
407 | return x->inner_mode; | ||
408 | else | ||
409 | return x->inner_mode_iaf; | ||
410 | } | ||
411 | |||
390 | struct xfrm_tmpl | 412 | struct xfrm_tmpl |
391 | { | 413 | { |
392 | /* id in template is interpreted as: | 414 | /* id in template is interpreted as: |
@@ -530,6 +552,9 @@ struct xfrm_mode_skb_cb { | |||
530 | __be16 id; | 552 | __be16 id; |
531 | __be16 frag_off; | 553 | __be16 frag_off; |
532 | 554 | ||
555 | /* IP header length (excluding options or extension headers). */ | ||
556 | u8 ihl; | ||
557 | |||
533 | /* TOS for IPv4, class for IPv6. */ | 558 | /* TOS for IPv4, class for IPv6. */ |
534 | u8 tos; | 559 | u8 tos; |
535 | 560 | ||
@@ -539,6 +564,9 @@ struct xfrm_mode_skb_cb { | |||
539 | /* Protocol for IPv4, NH for IPv6. */ | 564 | /* Protocol for IPv4, NH for IPv6. */ |
540 | u8 protocol; | 565 | u8 protocol; |
541 | 566 | ||
567 | /* Option length for IPv4, zero for IPv6. */ | ||
568 | u8 optlen; | ||
569 | |||
542 | /* Used by IPv6 only, zero for IPv4. */ | 570 | /* Used by IPv6 only, zero for IPv4. */ |
543 | u8 flow_lbl[3]; | 571 | u8 flow_lbl[3]; |
544 | }; | 572 | }; |
@@ -1253,6 +1281,7 @@ extern int xfrm_input(struct sk_buff *skb, int nexthdr, __be32 spi, | |||
1253 | extern int xfrm_input_resume(struct sk_buff *skb, int nexthdr); | 1281 | extern int xfrm_input_resume(struct sk_buff *skb, int nexthdr); |
1254 | extern int xfrm_output_resume(struct sk_buff *skb, int err); | 1282 | extern int xfrm_output_resume(struct sk_buff *skb, int err); |
1255 | extern int xfrm_output(struct sk_buff *skb); | 1283 | extern int xfrm_output(struct sk_buff *skb); |
1284 | extern int xfrm_inner_extract_output(struct xfrm_state *x, struct sk_buff *skb); | ||
1256 | extern int xfrm4_extract_header(struct sk_buff *skb); | 1285 | extern int xfrm4_extract_header(struct sk_buff *skb); |
1257 | extern int xfrm4_extract_input(struct xfrm_state *x, struct sk_buff *skb); | 1286 | extern int xfrm4_extract_input(struct xfrm_state *x, struct sk_buff *skb); |
1258 | extern int xfrm4_rcv_encap(struct sk_buff *skb, int nexthdr, __be32 spi, | 1287 | extern int xfrm4_rcv_encap(struct sk_buff *skb, int nexthdr, __be32 spi, |