diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-alpha/bitops.h | 2 | ||||
| -rw-r--r-- | include/asm-arm/unaligned.h | 22 | ||||
| -rw-r--r-- | include/asm-m68k/raw_io.h | 8 | ||||
| -rw-r--r-- | include/asm-m68knommu/hardirq.h | 2 | ||||
| -rw-r--r-- | include/asm-m68knommu/machdep.h | 1 | ||||
| -rw-r--r-- | include/asm-mips/edac.h | 35 | ||||
| -rw-r--r-- | include/asm-powerpc/bug.h | 2 | ||||
| -rw-r--r-- | include/asm-powerpc/page.h | 1 | ||||
| -rw-r--r-- | include/asm-x86_64/uaccess.h | 4 | ||||
| -rw-r--r-- | include/linux/compiler.h | 4 | ||||
| -rw-r--r-- | include/linux/device.h | 3 | ||||
| -rw-r--r-- | include/linux/lguest.h | 47 | ||||
| -rw-r--r-- | include/linux/lguest_bus.h | 5 | ||||
| -rw-r--r-- | include/linux/lguest_launcher.h | 60 | ||||
| -rw-r--r-- | include/linux/mm.h | 2 | ||||
| -rw-r--r-- | include/linux/netfilter/xt_connlimit.h | 4 | ||||
| -rw-r--r-- | include/linux/pnp.h | 191 | ||||
| -rw-r--r-- | include/linux/pnpbios.h | 60 | ||||
| -rw-r--r-- | include/linux/suspend.h | 3 | ||||
| -rw-r--r-- | include/net/netfilter/nf_conntrack_tuple.h | 4 | ||||
| -rw-r--r-- | include/xen/page.h | 1 |
21 files changed, 291 insertions, 170 deletions
diff --git a/include/asm-alpha/bitops.h b/include/asm-alpha/bitops.h index 3a0cbeb03fa1..9e71201000d5 100644 --- a/include/asm-alpha/bitops.h +++ b/include/asm-alpha/bitops.h | |||
| @@ -324,7 +324,7 @@ static inline int fls64(unsigned long x) | |||
| 324 | { | 324 | { |
| 325 | unsigned long t, a, r; | 325 | unsigned long t, a, r; |
| 326 | 326 | ||
| 327 | t = __kernel_cmpbge (x, 0x0101010101010101); | 327 | t = __kernel_cmpbge (x, 0x0101010101010101UL); |
| 328 | a = __flsm1_tab[t]; | 328 | a = __flsm1_tab[t]; |
| 329 | t = __kernel_extbl (x, a); | 329 | t = __kernel_extbl (x, a); |
| 330 | r = a*8 + __flsm1_tab[t] + (x != 0); | 330 | r = a*8 + __flsm1_tab[t] + (x != 0); |
diff --git a/include/asm-arm/unaligned.h b/include/asm-arm/unaligned.h index 795b9e5b9e6a..8431f6eed5c6 100644 --- a/include/asm-arm/unaligned.h +++ b/include/asm-arm/unaligned.h | |||
| @@ -60,24 +60,24 @@ extern int __bug_unaligned_x(const void *ptr); | |||
| 60 | __get_unaligned_4_be((__p+4))) | 60 | __get_unaligned_4_be((__p+4))) |
| 61 | 61 | ||
| 62 | #define __get_unaligned_le(ptr) \ | 62 | #define __get_unaligned_le(ptr) \ |
| 63 | ({ \ | 63 | ((__force typeof(*(ptr)))({ \ |
| 64 | const __u8 *__p = (const __u8 *)(ptr); \ | 64 | const __u8 *__p = (const __u8 *)(ptr); \ |
| 65 | __builtin_choose_expr(sizeof(*(ptr)) == 1, *__p, \ | 65 | __builtin_choose_expr(sizeof(*(ptr)) == 1, *__p, \ |
| 66 | __builtin_choose_expr(sizeof(*(ptr)) == 2, __get_unaligned_2_le(__p), \ | 66 | __builtin_choose_expr(sizeof(*(ptr)) == 2, __get_unaligned_2_le(__p), \ |
| 67 | __builtin_choose_expr(sizeof(*(ptr)) == 4, __get_unaligned_4_le(__p), \ | 67 | __builtin_choose_expr(sizeof(*(ptr)) == 4, __get_unaligned_4_le(__p), \ |
| 68 | __builtin_choose_expr(sizeof(*(ptr)) == 8, __get_unaligned_8_le(__p), \ | 68 | __builtin_choose_expr(sizeof(*(ptr)) == 8, __get_unaligned_8_le(__p), \ |
| 69 | (void)__bug_unaligned_x(__p))))); \ | 69 | (void)__bug_unaligned_x(__p))))); \ |
| 70 | }) | 70 | })) |
| 71 | 71 | ||
| 72 | #define __get_unaligned_be(ptr) \ | 72 | #define __get_unaligned_be(ptr) \ |
| 73 | ({ \ | 73 | ((__force typeof(*(ptr)))({ \ |
| 74 | const __u8 *__p = (const __u8 *)(ptr); \ | 74 | const __u8 *__p = (const __u8 *)(ptr); \ |
| 75 | __builtin_choose_expr(sizeof(*(ptr)) == 1, *__p, \ | 75 | __builtin_choose_expr(sizeof(*(ptr)) == 1, *__p, \ |
| 76 | __builtin_choose_expr(sizeof(*(ptr)) == 2, __get_unaligned_2_be(__p), \ | 76 | __builtin_choose_expr(sizeof(*(ptr)) == 2, __get_unaligned_2_be(__p), \ |
| 77 | __builtin_choose_expr(sizeof(*(ptr)) == 4, __get_unaligned_4_be(__p), \ | 77 | __builtin_choose_expr(sizeof(*(ptr)) == 4, __get_unaligned_4_be(__p), \ |
| 78 | __builtin_choose_expr(sizeof(*(ptr)) == 8, __get_unaligned_8_be(__p), \ | 78 | __builtin_choose_expr(sizeof(*(ptr)) == 8, __get_unaligned_8_be(__p), \ |
| 79 | (void)__bug_unaligned_x(__p))))); \ | 79 | (void)__bug_unaligned_x(__p))))); \ |
| 80 | }) | 80 | })) |
| 81 | 81 | ||
| 82 | 82 | ||
| 83 | static inline void __put_unaligned_2_le(__u32 __v, register __u8 *__p) | 83 | static inline void __put_unaligned_2_le(__u32 __v, register __u8 *__p) |
| @@ -131,15 +131,16 @@ static inline void __put_unaligned_8_be(const unsigned long long __v, register _ | |||
| 131 | */ | 131 | */ |
| 132 | #define __put_unaligned_le(val,ptr) \ | 132 | #define __put_unaligned_le(val,ptr) \ |
| 133 | ({ \ | 133 | ({ \ |
| 134 | (void)sizeof(*(ptr) = (val)); \ | ||
| 134 | switch (sizeof(*(ptr))) { \ | 135 | switch (sizeof(*(ptr))) { \ |
| 135 | case 1: \ | 136 | case 1: \ |
| 136 | *(ptr) = (val); \ | 137 | *(ptr) = (val); \ |
| 137 | break; \ | 138 | break; \ |
| 138 | case 2: __put_unaligned_2_le((val),(__u8 *)(ptr)); \ | 139 | case 2: __put_unaligned_2_le((__force u16)(val),(__u8 *)(ptr)); \ |
| 139 | break; \ | 140 | break; \ |
| 140 | case 4: __put_unaligned_4_le((val),(__u8 *)(ptr)); \ | 141 | case 4: __put_unaligned_4_le((__force u32)(val),(__u8 *)(ptr)); \ |
| 141 | break; \ | 142 | break; \ |
| 142 | case 8: __put_unaligned_8_le((val),(__u8 *)(ptr)); \ | 143 | case 8: __put_unaligned_8_le((__force u64)(val),(__u8 *)(ptr)); \ |
| 143 | break; \ | 144 | break; \ |
| 144 | default: __bug_unaligned_x(ptr); \ | 145 | default: __bug_unaligned_x(ptr); \ |
| 145 | break; \ | 146 | break; \ |
| @@ -149,15 +150,16 @@ static inline void __put_unaligned_8_be(const unsigned long long __v, register _ | |||
| 149 | 150 | ||
| 150 | #define __put_unaligned_be(val,ptr) \ | 151 | #define __put_unaligned_be(val,ptr) \ |
| 151 | ({ \ | 152 | ({ \ |
| 153 | (void)sizeof(*(ptr) = (val)); \ | ||
| 152 | switch (sizeof(*(ptr))) { \ | 154 | switch (sizeof(*(ptr))) { \ |
| 153 | case 1: \ | 155 | case 1: \ |
| 154 | *(ptr) = (val); \ | 156 | *(ptr) = (val); \ |
| 155 | break; \ | 157 | break; \ |
| 156 | case 2: __put_unaligned_2_be((val),(__u8 *)(ptr)); \ | 158 | case 2: __put_unaligned_2_be((__force u16)(val),(__u8 *)(ptr)); \ |
| 157 | break; \ | 159 | break; \ |
| 158 | case 4: __put_unaligned_4_be((val),(__u8 *)(ptr)); \ | 160 | case 4: __put_unaligned_4_be((__force u32)(val),(__u8 *)(ptr)); \ |
| 159 | break; \ | 161 | break; \ |
| 160 | case 8: __put_unaligned_8_be((val),(__u8 *)(ptr)); \ | 162 | case 8: __put_unaligned_8_be((__force u64)(val),(__u8 *)(ptr)); \ |
| 161 | break; \ | 163 | break; \ |
| 162 | default: __bug_unaligned_x(ptr); \ | 164 | default: __bug_unaligned_x(ptr); \ |
| 163 | break; \ | 165 | break; \ |
diff --git a/include/asm-m68k/raw_io.h b/include/asm-m68k/raw_io.h index 91c623f0994c..d9eb9834ccc8 100644 --- a/include/asm-m68k/raw_io.h +++ b/include/asm-m68k/raw_io.h | |||
| @@ -36,15 +36,15 @@ extern void __iounmap(void *addr, unsigned long size); | |||
| 36 | #define in_be32(addr) \ | 36 | #define in_be32(addr) \ |
| 37 | ({ u32 __v = (*(__force volatile u32 *) (addr)); __v; }) | 37 | ({ u32 __v = (*(__force volatile u32 *) (addr)); __v; }) |
| 38 | #define in_le16(addr) \ | 38 | #define in_le16(addr) \ |
| 39 | ({ u16 __v = le16_to_cpu(*(__force volatile u16 *) (addr)); __v; }) | 39 | ({ u16 __v = le16_to_cpu(*(__force volatile __le16 *) (addr)); __v; }) |
| 40 | #define in_le32(addr) \ | 40 | #define in_le32(addr) \ |
| 41 | ({ u32 __v = le32_to_cpu(*(__force volatile u32 *) (addr)); __v; }) | 41 | ({ u32 __v = le32_to_cpu(*(__force volatile __le32 *) (addr)); __v; }) |
| 42 | 42 | ||
| 43 | #define out_8(addr,b) (void)((*(__force volatile u8 *) (addr)) = (b)) | 43 | #define out_8(addr,b) (void)((*(__force volatile u8 *) (addr)) = (b)) |
| 44 | #define out_be16(addr,w) (void)((*(__force volatile u16 *) (addr)) = (w)) | 44 | #define out_be16(addr,w) (void)((*(__force volatile u16 *) (addr)) = (w)) |
| 45 | #define out_be32(addr,l) (void)((*(__force volatile u32 *) (addr)) = (l)) | 45 | #define out_be32(addr,l) (void)((*(__force volatile u32 *) (addr)) = (l)) |
| 46 | #define out_le16(addr,w) (void)((*(__force volatile u16 *) (addr)) = cpu_to_le16(w)) | 46 | #define out_le16(addr,w) (void)((*(__force volatile __le16 *) (addr)) = cpu_to_le16(w)) |
| 47 | #define out_le32(addr,l) (void)((*(__force volatile u32 *) (addr)) = cpu_to_le32(l)) | 47 | #define out_le32(addr,l) (void)((*(__force volatile __le32 *) (addr)) = cpu_to_le32(l)) |
| 48 | 48 | ||
| 49 | #define raw_inb in_8 | 49 | #define raw_inb in_8 |
| 50 | #define raw_inw in_be16 | 50 | #define raw_inw in_be16 |
diff --git a/include/asm-m68knommu/hardirq.h b/include/asm-m68knommu/hardirq.h index 980075bab792..bfad28149a49 100644 --- a/include/asm-m68knommu/hardirq.h +++ b/include/asm-m68knommu/hardirq.h | |||
| @@ -22,4 +22,6 @@ typedef struct { | |||
| 22 | # error HARDIRQ_BITS is too low! | 22 | # error HARDIRQ_BITS is too low! |
| 23 | #endif | 23 | #endif |
| 24 | 24 | ||
| 25 | void ack_bad_irq(unsigned int irq); | ||
| 26 | |||
| 25 | #endif /* __M68K_HARDIRQ_H */ | 27 | #endif /* __M68K_HARDIRQ_H */ |
diff --git a/include/asm-m68knommu/machdep.h b/include/asm-m68knommu/machdep.h index 6ce28f8e0ead..2b75a300df4f 100644 --- a/include/asm-m68knommu/machdep.h +++ b/include/asm-m68knommu/machdep.h | |||
| @@ -48,6 +48,5 @@ extern char *mach_sysrq_xlate; | |||
| 48 | 48 | ||
| 49 | extern void config_BSP(char *command, int len); | 49 | extern void config_BSP(char *command, int len); |
| 50 | extern void (*mach_tick)(void); | 50 | extern void (*mach_tick)(void); |
| 51 | extern void (*mach_trap_init)(void); | ||
| 52 | 51 | ||
| 53 | #endif /* _M68KNOMMU_MACHDEP_H */ | 52 | #endif /* _M68KNOMMU_MACHDEP_H */ |
diff --git a/include/asm-mips/edac.h b/include/asm-mips/edac.h new file mode 100644 index 000000000000..83719eee2d13 --- /dev/null +++ b/include/asm-mips/edac.h | |||
| @@ -0,0 +1,35 @@ | |||
| 1 | #ifndef ASM_EDAC_H | ||
| 2 | #define ASM_EDAC_H | ||
| 3 | |||
| 4 | /* ECC atomic, DMA, SMP and interrupt safe scrub function */ | ||
| 5 | |||
| 6 | static inline void atomic_scrub(void *va, u32 size) | ||
| 7 | { | ||
| 8 | unsigned long *virt_addr = va; | ||
| 9 | unsigned long temp; | ||
| 10 | u32 i; | ||
| 11 | |||
| 12 | for (i = 0; i < size / sizeof(unsigned long); i++, virt_addr++) { | ||
| 13 | |||
| 14 | /* | ||
| 15 | * Very carefully read and write to memory atomically | ||
| 16 | * so we are interrupt, DMA and SMP safe. | ||
| 17 | * | ||
| 18 | * Intel: asm("lock; addl $0, %0"::"m"(*virt_addr)); | ||
| 19 | */ | ||
| 20 | |||
| 21 | __asm__ __volatile__ ( | ||
| 22 | " .set mips3 \n" | ||
| 23 | "1: ll %0, %1 # atomic_add \n" | ||
| 24 | " ll %0, %1 # atomic_add \n" | ||
| 25 | " addu %0, $0 \n" | ||
| 26 | " sc %0, %1 \n" | ||
| 27 | " beqz %0, 1b \n" | ||
| 28 | " .set mips0 \n" | ||
| 29 | : "=&r" (temp), "=m" (*virt_addr) | ||
| 30 | : "m" (*virt_addr)); | ||
| 31 | |||
| 32 | } | ||
| 33 | } | ||
| 34 | |||
| 35 | #endif | ||
diff --git a/include/asm-powerpc/bug.h b/include/asm-powerpc/bug.h index f6fa39474846..a248b8bd4d7c 100644 --- a/include/asm-powerpc/bug.h +++ b/include/asm-powerpc/bug.h | |||
| @@ -79,7 +79,7 @@ | |||
| 79 | _EMIT_BUG_ENTRY \ | 79 | _EMIT_BUG_ENTRY \ |
| 80 | : : "i" (__FILE__), "i" (__LINE__), "i" (0), \ | 80 | : : "i" (__FILE__), "i" (__LINE__), "i" (0), \ |
| 81 | "i" (sizeof(struct bug_entry)), \ | 81 | "i" (sizeof(struct bug_entry)), \ |
| 82 | "r" ((long)(x))); \ | 82 | "r" ((__force long)(x))); \ |
| 83 | } \ | 83 | } \ |
| 84 | } while (0) | 84 | } while (0) |
| 85 | 85 | ||
diff --git a/include/asm-powerpc/page.h b/include/asm-powerpc/page.h index 10c51f457d48..236a9210e5fc 100644 --- a/include/asm-powerpc/page.h +++ b/include/asm-powerpc/page.h | |||
| @@ -190,7 +190,6 @@ extern void copy_user_page(void *to, void *from, unsigned long vaddr, | |||
| 190 | extern int page_is_ram(unsigned long pfn); | 190 | extern int page_is_ram(unsigned long pfn); |
| 191 | 191 | ||
| 192 | struct vm_area_struct; | 192 | struct vm_area_struct; |
| 193 | extern const char *arch_vma_name(struct vm_area_struct *vma); | ||
| 194 | 193 | ||
| 195 | #include <asm-generic/memory_model.h> | 194 | #include <asm-generic/memory_model.h> |
| 196 | #endif /* __ASSEMBLY__ */ | 195 | #endif /* __ASSEMBLY__ */ |
diff --git a/include/asm-x86_64/uaccess.h b/include/asm-x86_64/uaccess.h index 9df30b939c4e..f4ce8768ad44 100644 --- a/include/asm-x86_64/uaccess.h +++ b/include/asm-x86_64/uaccess.h | |||
| @@ -100,7 +100,7 @@ struct exception_table_entry | |||
| 100 | case 8: __get_user_x(8,__ret_gu,__val_gu,ptr); break; \ | 100 | case 8: __get_user_x(8,__ret_gu,__val_gu,ptr); break; \ |
| 101 | default: __get_user_bad(); break; \ | 101 | default: __get_user_bad(); break; \ |
| 102 | } \ | 102 | } \ |
| 103 | (x) = (typeof(*(ptr)))__val_gu; \ | 103 | (x) = (__force typeof(*(ptr)))__val_gu; \ |
| 104 | __ret_gu; \ | 104 | __ret_gu; \ |
| 105 | }) | 105 | }) |
| 106 | 106 | ||
| @@ -192,7 +192,7 @@ struct __large_struct { unsigned long buf[100]; }; | |||
| 192 | int __gu_err; \ | 192 | int __gu_err; \ |
| 193 | unsigned long __gu_val; \ | 193 | unsigned long __gu_val; \ |
| 194 | __get_user_size(__gu_val,(ptr),(size),__gu_err); \ | 194 | __get_user_size(__gu_val,(ptr),(size),__gu_err); \ |
| 195 | (x) = (typeof(*(ptr)))__gu_val; \ | 195 | (x) = (__force typeof(*(ptr)))__gu_val; \ |
| 196 | __gu_err; \ | 196 | __gu_err; \ |
| 197 | }) | 197 | }) |
| 198 | 198 | ||
diff --git a/include/linux/compiler.h b/include/linux/compiler.h index 12a1291855e2..86f9a3a6137d 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h | |||
| @@ -15,8 +15,8 @@ | |||
| 15 | # define __acquire(x) __context__(x,1) | 15 | # define __acquire(x) __context__(x,1) |
| 16 | # define __release(x) __context__(x,-1) | 16 | # define __release(x) __context__(x,-1) |
| 17 | # define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0) | 17 | # define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0) |
| 18 | extern void __chk_user_ptr(const void __user *); | 18 | extern void __chk_user_ptr(const volatile void __user *); |
| 19 | extern void __chk_io_ptr(const void __iomem *); | 19 | extern void __chk_io_ptr(const volatile void __iomem *); |
| 20 | #else | 20 | #else |
| 21 | # define __user | 21 | # define __user |
| 22 | # define __kernel | 22 | # define __kernel |
diff --git a/include/linux/device.h b/include/linux/device.h index d9f0a57f5a2f..3a38d1f70cb7 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
| @@ -551,6 +551,9 @@ extern void put_device(struct device * dev); | |||
| 551 | /* drivers/base/power/shutdown.c */ | 551 | /* drivers/base/power/shutdown.c */ |
| 552 | extern void device_shutdown(void); | 552 | extern void device_shutdown(void); |
| 553 | 553 | ||
| 554 | /* drivers/base/sys.c */ | ||
| 555 | extern void sysdev_shutdown(void); | ||
| 556 | |||
| 554 | 557 | ||
| 555 | /* drivers/base/firmware.c */ | 558 | /* drivers/base/firmware.c */ |
| 556 | extern int __must_check firmware_register(struct kset *); | 559 | extern int __must_check firmware_register(struct kset *); |
diff --git a/include/linux/lguest.h b/include/linux/lguest.h index 500aace21ca7..e76c151c7129 100644 --- a/include/linux/lguest.h +++ b/include/linux/lguest.h | |||
| @@ -27,18 +27,38 @@ | |||
| 27 | #define LG_CLOCK_MIN_DELTA 100UL | 27 | #define LG_CLOCK_MIN_DELTA 100UL |
| 28 | #define LG_CLOCK_MAX_DELTA ULONG_MAX | 28 | #define LG_CLOCK_MAX_DELTA ULONG_MAX |
| 29 | 29 | ||
| 30 | /*G:031 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", | ||
| 32 | * to make requests of the Host Itself. | ||
| 33 | * | ||
| 34 | * Our hypercall mechanism uses the highest unused trap code (traps 32 and | ||
| 35 | * above are used by real hardware interrupts). Seventeen hypercalls are | ||
| 36 | * available: the hypercall number is put in the %eax register, and the | ||
| 37 | * arguments (when required) are placed in %edx, %ebx and %ecx. If a return | ||
| 38 | * value makes sense, it's returned in %eax. | ||
| 39 | * | ||
| 40 | * Grossly invalid calls result in Sudden Death at the hands of the vengeful | ||
| 41 | * Host, rather than returning failure. This reflects Winston Churchill's | ||
| 42 | * definition of a gentleman: "someone who is only rude intentionally". */ | ||
| 30 | #define LGUEST_TRAP_ENTRY 0x1F | 43 | #define LGUEST_TRAP_ENTRY 0x1F |
| 31 | 44 | ||
| 32 | static inline unsigned long | 45 | static inline unsigned long |
| 33 | hcall(unsigned long call, | 46 | hcall(unsigned long call, |
| 34 | unsigned long arg1, unsigned long arg2, unsigned long arg3) | 47 | unsigned long arg1, unsigned long arg2, unsigned long arg3) |
| 35 | { | 48 | { |
| 49 | /* "int" is the Intel instruction to trigger a trap. */ | ||
| 36 | asm volatile("int $" __stringify(LGUEST_TRAP_ENTRY) | 50 | asm volatile("int $" __stringify(LGUEST_TRAP_ENTRY) |
| 51 | /* The call is in %eax (aka "a"), and can be replaced */ | ||
| 37 | : "=a"(call) | 52 | : "=a"(call) |
| 53 | /* The other arguments are in %eax, %edx, %ebx & %ecx */ | ||
| 38 | : "a"(call), "d"(arg1), "b"(arg2), "c"(arg3) | 54 | : "a"(call), "d"(arg1), "b"(arg2), "c"(arg3) |
| 55 | /* "memory" means this might write somewhere in memory. | ||
| 56 | * This isn't true for all calls, but it's safe to tell | ||
| 57 | * gcc that it might happen so it doesn't get clever. */ | ||
| 39 | : "memory"); | 58 | : "memory"); |
| 40 | return call; | 59 | return call; |
| 41 | } | 60 | } |
| 61 | /*:*/ | ||
| 42 | 62 | ||
| 43 | void async_hcall(unsigned long call, | 63 | void async_hcall(unsigned long call, |
| 44 | unsigned long arg1, unsigned long arg2, unsigned long arg3); | 64 | unsigned long arg1, unsigned long arg2, unsigned long arg3); |
| @@ -52,31 +72,40 @@ struct hcall_ring | |||
| 52 | u32 eax, edx, ebx, ecx; | 72 | u32 eax, edx, ebx, ecx; |
| 53 | }; | 73 | }; |
| 54 | 74 | ||
| 55 | /* All the good stuff happens here: guest registers it with LGUEST_INIT */ | 75 | /*G:032 The second method of communicating with the Host is to via "struct |
| 76 | * lguest_data". The Guest's very first hypercall is to tell the Host where | ||
| 77 | * this is, and then the Guest and Host both publish information in it. :*/ | ||
| 56 | struct lguest_data | 78 | struct lguest_data |
| 57 | { | 79 | { |
| 58 | /* Fields which change during running: */ | 80 | /* 512 == enabled (same as eflags in normal hardware). The Guest |
| 59 | /* 512 == enabled (same as eflags) */ | 81 | * changes interrupts so often that a hypercall is too slow. */ |
| 60 | unsigned int irq_enabled; | 82 | unsigned int irq_enabled; |
| 61 | /* Interrupts blocked by guest. */ | 83 | /* Fine-grained interrupt disabling by the Guest */ |
| 62 | DECLARE_BITMAP(blocked_interrupts, LGUEST_IRQS); | 84 | DECLARE_BITMAP(blocked_interrupts, LGUEST_IRQS); |
| 63 | 85 | ||
| 64 | /* Virtual address of page fault. */ | 86 | /* The Host writes the virtual address of the last page fault here, |
| 87 | * which saves the Guest a hypercall. CR2 is the native register where | ||
| 88 | * this address would normally be found. */ | ||
| 65 | unsigned long cr2; | 89 | unsigned long cr2; |
| 66 | 90 | ||
| 67 | /* Async hypercall ring. 0xFF == done, 0 == pending. */ | 91 | /* Async hypercall ring. Instead of directly making hypercalls, we can |
| 92 | * place them in here for processing the next time the Host wants. | ||
| 93 | * This batching can be quite efficient. */ | ||
| 94 | |||
| 95 | /* 0xFF == done (set by Host), 0 == pending (set by Guest). */ | ||
| 68 | u8 hcall_status[LHCALL_RING_SIZE]; | 96 | u8 hcall_status[LHCALL_RING_SIZE]; |
| 97 | /* The actual registers for the hypercalls. */ | ||
| 69 | struct hcall_ring hcalls[LHCALL_RING_SIZE]; | 98 | struct hcall_ring hcalls[LHCALL_RING_SIZE]; |
| 70 | 99 | ||
| 71 | /* Fields initialized by the hypervisor at boot: */ | 100 | /* Fields initialized by the Host at boot: */ |
| 72 | /* Memory not to try to access */ | 101 | /* Memory not to try to access */ |
| 73 | unsigned long reserve_mem; | 102 | unsigned long reserve_mem; |
| 74 | /* ID of this guest (used by network driver to set ethernet address) */ | 103 | /* ID of this Guest (used by network driver to set ethernet address) */ |
| 75 | u16 guestid; | 104 | u16 guestid; |
| 76 | /* KHz for the TSC clock. */ | 105 | /* KHz for the TSC clock. */ |
| 77 | u32 tsc_khz; | 106 | u32 tsc_khz; |
| 78 | 107 | ||
| 79 | /* Fields initialized by the guest at boot: */ | 108 | /* Fields initialized by the Guest at boot: */ |
| 80 | /* Instruction range to suppress interrupts even if enabled */ | 109 | /* Instruction range to suppress interrupts even if enabled */ |
| 81 | unsigned long noirq_start, noirq_end; | 110 | unsigned long noirq_start, noirq_end; |
| 82 | }; | 111 | }; |
diff --git a/include/linux/lguest_bus.h b/include/linux/lguest_bus.h index c9b4e05fee49..d27853ddc644 100644 --- a/include/linux/lguest_bus.h +++ b/include/linux/lguest_bus.h | |||
| @@ -15,11 +15,14 @@ struct lguest_device { | |||
| 15 | void *private; | 15 | void *private; |
| 16 | }; | 16 | }; |
| 17 | 17 | ||
| 18 | /* By convention, each device can use irq index+1 if it wants to. */ | 18 | /*D:380 Since interrupt numbers are arbitrary, we use a convention: each device |
| 19 | * can use the interrupt number corresponding to its index. The +1 is because | ||
| 20 | * interrupt 0 is not usable (it's actually the timer interrupt). */ | ||
| 19 | static inline int lgdev_irq(const struct lguest_device *dev) | 21 | static inline int lgdev_irq(const struct lguest_device *dev) |
| 20 | { | 22 | { |
| 21 | return dev->index + 1; | 23 | return dev->index + 1; |
| 22 | } | 24 | } |
| 25 | /*:*/ | ||
| 23 | 26 | ||
| 24 | /* dma args must not be vmalloced! */ | 27 | /* dma args must not be vmalloced! */ |
| 25 | void lguest_send_dma(unsigned long key, struct lguest_dma *dma); | 28 | void lguest_send_dma(unsigned long key, struct lguest_dma *dma); |
diff --git a/include/linux/lguest_launcher.h b/include/linux/lguest_launcher.h index 0ba414a40c80..641670579446 100644 --- a/include/linux/lguest_launcher.h +++ b/include/linux/lguest_launcher.h | |||
| @@ -9,14 +9,45 @@ | |||
| 9 | /* How many devices? Assume each one wants up to two dma arrays per device. */ | 9 | /* How many devices? Assume each one wants up to two dma arrays per device. */ |
| 10 | #define LGUEST_MAX_DEVICES (LGUEST_MAX_DMA/2) | 10 | #define LGUEST_MAX_DEVICES (LGUEST_MAX_DMA/2) |
| 11 | 11 | ||
| 12 | /*D:200 | ||
| 13 | * Lguest I/O | ||
| 14 | * | ||
| 15 | * The lguest I/O mechanism is the only way Guests can talk to devices. There | ||
| 16 | * are two hypercalls involved: SEND_DMA for output and BIND_DMA for input. In | ||
| 17 | * each case, "struct lguest_dma" describes the buffer: this contains 16 | ||
| 18 | * addr/len pairs, and if there are fewer buffer elements the len array is | ||
| 19 | * terminated with a 0. | ||
| 20 | * | ||
| 21 | * I/O is organized by keys: BIND_DMA attaches buffers to a particular key, and | ||
| 22 | * SEND_DMA transfers to buffers bound to particular key. By convention, keys | ||
| 23 | * correspond to a physical address within the device's page. This means that | ||
| 24 | * devices will never accidentally end up with the same keys, and allows the | ||
| 25 | * Host use The Futex Trick (as we'll see later in our journey). | ||
| 26 | * | ||
| 27 | * SEND_DMA simply indicates a key to send to, and the physical address of the | ||
| 28 | * "struct lguest_dma" to send. The Host will write the number of bytes | ||
| 29 | * transferred into the "struct lguest_dma"'s used_len member. | ||
| 30 | * | ||
| 31 | * BIND_DMA indicates a key to bind to, a pointer to an array of "struct | ||
| 32 | * lguest_dma"s ready for receiving, the size of that array, and an interrupt | ||
| 33 | * to trigger when data is received. The Host will only allow transfers into | ||
| 34 | * buffers with a used_len of zero: it then sets used_len to the number of | ||
| 35 | * bytes transferred and triggers the interrupt for the Guest to process the | ||
| 36 | * new input. */ | ||
| 12 | struct lguest_dma | 37 | struct lguest_dma |
| 13 | { | 38 | { |
| 14 | /* 0 if free to be used, filled by hypervisor. */ | 39 | /* 0 if free to be used, filled by the Host. */ |
| 15 | u32 used_len; | 40 | u32 used_len; |
| 16 | unsigned long addr[LGUEST_MAX_DMA_SECTIONS]; | 41 | unsigned long addr[LGUEST_MAX_DMA_SECTIONS]; |
| 17 | u16 len[LGUEST_MAX_DMA_SECTIONS]; | 42 | u16 len[LGUEST_MAX_DMA_SECTIONS]; |
| 18 | }; | 43 | }; |
| 44 | /*:*/ | ||
| 19 | 45 | ||
| 46 | /*D:460 This is the layout of a block device memory page. The Launcher sets up | ||
| 47 | * the num_sectors initially to tell the Guest the size of the disk. The Guest | ||
| 48 | * puts the type, sector and length of the request in the first three fields, | ||
| 49 | * then DMAs to the Host. The Host processes the request, sets up the result, | ||
| 50 | * then DMAs back to the Guest. */ | ||
| 20 | struct lguest_block_page | 51 | struct lguest_block_page |
| 21 | { | 52 | { |
| 22 | /* 0 is a read, 1 is a write. */ | 53 | /* 0 is a read, 1 is a write. */ |
| @@ -28,27 +59,47 @@ struct lguest_block_page | |||
| 28 | u32 num_sectors; /* Disk length = num_sectors * 512 */ | 59 | u32 num_sectors; /* Disk length = num_sectors * 512 */ |
| 29 | }; | 60 | }; |
| 30 | 61 | ||
| 31 | /* There is a shared page of these. */ | 62 | /*D:520 The network device is basically a memory page where all the Guests on |
| 63 | * the network publish their MAC (ethernet) addresses: it's an array of "struct | ||
| 64 | * lguest_net": */ | ||
| 32 | struct lguest_net | 65 | struct lguest_net |
| 33 | { | 66 | { |
| 34 | /* Simply the mac address (with multicast bit meaning promisc). */ | 67 | /* Simply the mac address (with multicast bit meaning promisc). */ |
| 35 | unsigned char mac[6]; | 68 | unsigned char mac[6]; |
| 36 | }; | 69 | }; |
| 70 | /*:*/ | ||
| 37 | 71 | ||
| 38 | /* Where the Host expects the Guest to SEND_DMA console output to. */ | 72 | /* Where the Host expects the Guest to SEND_DMA console output to. */ |
| 39 | #define LGUEST_CONSOLE_DMA_KEY 0 | 73 | #define LGUEST_CONSOLE_DMA_KEY 0 |
| 40 | 74 | ||
| 41 | /* We have a page of these descriptors in the lguest_device page. */ | 75 | /*D:010 |
| 76 | * Drivers | ||
| 77 | * | ||
| 78 | * The Guest needs devices to do anything useful. Since we don't let it touch | ||
| 79 | * real devices (think of the damage it could do!) we provide virtual devices. | ||
| 80 | * We could emulate a PCI bus with various devices on it, but that is a fairly | ||
| 81 | * complex burden for the Host and suboptimal for the Guest, so we have our own | ||
| 82 | * "lguest" bus and simple drivers. | ||
| 83 | * | ||
| 84 | * Devices are described by an array of LGUEST_MAX_DEVICES of these structs, | ||
| 85 | * placed by the Launcher just above the top of physical memory: | ||
| 86 | */ | ||
| 42 | struct lguest_device_desc { | 87 | struct lguest_device_desc { |
| 88 | /* The device type: console, network, disk etc. */ | ||
| 43 | u16 type; | 89 | u16 type; |
| 44 | #define LGUEST_DEVICE_T_CONSOLE 1 | 90 | #define LGUEST_DEVICE_T_CONSOLE 1 |
| 45 | #define LGUEST_DEVICE_T_NET 2 | 91 | #define LGUEST_DEVICE_T_NET 2 |
| 46 | #define LGUEST_DEVICE_T_BLOCK 3 | 92 | #define LGUEST_DEVICE_T_BLOCK 3 |
| 47 | 93 | ||
| 94 | /* The specific features of this device: these depends on device type | ||
| 95 | * except for LGUEST_DEVICE_F_RANDOMNESS. */ | ||
| 48 | u16 features; | 96 | u16 features; |
| 49 | #define LGUEST_NET_F_NOCSUM 0x4000 /* Don't bother checksumming */ | 97 | #define LGUEST_NET_F_NOCSUM 0x4000 /* Don't bother checksumming */ |
| 50 | #define LGUEST_DEVICE_F_RANDOMNESS 0x8000 /* IRQ is fairly random */ | 98 | #define LGUEST_DEVICE_F_RANDOMNESS 0x8000 /* IRQ is fairly random */ |
| 51 | 99 | ||
| 100 | /* This is how the Guest reports status of the device: the Host can set | ||
| 101 | * LGUEST_DEVICE_S_REMOVED to indicate removal, but the rest are only | ||
| 102 | * ever manipulated by the Guest, and only ever set. */ | ||
| 52 | u16 status; | 103 | u16 status; |
| 53 | /* 256 and above are device specific. */ | 104 | /* 256 and above are device specific. */ |
| 54 | #define LGUEST_DEVICE_S_ACKNOWLEDGE 1 /* We have seen device. */ | 105 | #define LGUEST_DEVICE_S_ACKNOWLEDGE 1 /* We have seen device. */ |
| @@ -58,9 +109,12 @@ struct lguest_device_desc { | |||
| 58 | #define LGUEST_DEVICE_S_REMOVED_ACK 16 /* Driver has been told. */ | 109 | #define LGUEST_DEVICE_S_REMOVED_ACK 16 /* Driver has been told. */ |
| 59 | #define LGUEST_DEVICE_S_FAILED 128 /* Something actually failed */ | 110 | #define LGUEST_DEVICE_S_FAILED 128 /* Something actually failed */ |
| 60 | 111 | ||
| 112 | /* Each device exists somewhere in Guest physical memory, over some | ||
| 113 | * number of pages. */ | ||
| 61 | u16 num_pages; | 114 | u16 num_pages; |
| 62 | u32 pfn; | 115 | u32 pfn; |
| 63 | }; | 116 | }; |
| 117 | /*:*/ | ||
| 64 | 118 | ||
| 65 | /* Write command first word is a request. */ | 119 | /* Write command first word is a request. */ |
| 66 | enum lguest_req | 120 | enum lguest_req |
diff --git a/include/linux/mm.h b/include/linux/mm.h index c456c3a1c28e..3e9e8fec5a41 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
| @@ -1246,7 +1246,7 @@ void drop_slab(void); | |||
| 1246 | extern int randomize_va_space; | 1246 | extern int randomize_va_space; |
| 1247 | #endif | 1247 | #endif |
| 1248 | 1248 | ||
| 1249 | __attribute__((weak)) const char *arch_vma_name(struct vm_area_struct *vma); | 1249 | const char * arch_vma_name(struct vm_area_struct *vma); |
| 1250 | 1250 | ||
| 1251 | #endif /* __KERNEL__ */ | 1251 | #endif /* __KERNEL__ */ |
| 1252 | #endif /* _LINUX_MM_H */ | 1252 | #endif /* _LINUX_MM_H */ |
diff --git a/include/linux/netfilter/xt_connlimit.h b/include/linux/netfilter/xt_connlimit.h index 90ae8b474cb8..37e933c9987d 100644 --- a/include/linux/netfilter/xt_connlimit.h +++ b/include/linux/netfilter/xt_connlimit.h | |||
| @@ -5,8 +5,8 @@ struct xt_connlimit_data; | |||
| 5 | 5 | ||
| 6 | struct xt_connlimit_info { | 6 | struct xt_connlimit_info { |
| 7 | union { | 7 | union { |
| 8 | u_int32_t v4_mask; | 8 | __be32 v4_mask; |
| 9 | u_int32_t v6_mask[4]; | 9 | __be32 v6_mask[4]; |
| 10 | }; | 10 | }; |
| 11 | unsigned int limit, inverse; | 11 | unsigned int limit, inverse; |
| 12 | 12 | ||
diff --git a/include/linux/pnp.h b/include/linux/pnp.h index 66edb2293184..16b46aace349 100644 --- a/include/linux/pnp.h +++ b/include/linux/pnp.h | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Linux Plug and Play Support | 2 | * Linux Plug and Play Support |
| 3 | * Copyright by Adam Belay <ambx1@neo.rr.com> | 3 | * Copyright by Adam Belay <ambx1@neo.rr.com> |
| 4 | * | ||
| 5 | */ | 4 | */ |
| 6 | 5 | ||
| 7 | #ifndef _LINUX_PNP_H | 6 | #ifndef _LINUX_PNP_H |
| @@ -23,7 +22,6 @@ | |||
| 23 | struct pnp_protocol; | 22 | struct pnp_protocol; |
| 24 | struct pnp_dev; | 23 | struct pnp_dev; |
| 25 | 24 | ||
| 26 | |||
| 27 | /* | 25 | /* |
| 28 | * Resource Management | 26 | * Resource Management |
| 29 | */ | 27 | */ |
| @@ -73,37 +71,37 @@ struct pnp_dev; | |||
| 73 | #define PNP_PORT_FLAG_FIXED (1<<1) | 71 | #define PNP_PORT_FLAG_FIXED (1<<1) |
| 74 | 72 | ||
| 75 | struct pnp_port { | 73 | struct pnp_port { |
| 76 | unsigned short min; /* min base number */ | 74 | unsigned short min; /* min base number */ |
| 77 | unsigned short max; /* max base number */ | 75 | unsigned short max; /* max base number */ |
| 78 | unsigned char align; /* align boundary */ | 76 | unsigned char align; /* align boundary */ |
| 79 | unsigned char size; /* size of range */ | 77 | unsigned char size; /* size of range */ |
| 80 | unsigned char flags; /* port flags */ | 78 | unsigned char flags; /* port flags */ |
| 81 | unsigned char pad; /* pad */ | 79 | unsigned char pad; /* pad */ |
| 82 | struct pnp_port *next; /* next port */ | 80 | struct pnp_port *next; /* next port */ |
| 83 | }; | 81 | }; |
| 84 | 82 | ||
| 85 | #define PNP_IRQ_NR 256 | 83 | #define PNP_IRQ_NR 256 |
| 86 | struct pnp_irq { | 84 | struct pnp_irq { |
| 87 | DECLARE_BITMAP(map, PNP_IRQ_NR); /* bitmaks for IRQ lines */ | 85 | DECLARE_BITMAP(map, PNP_IRQ_NR); /* bitmask for IRQ lines */ |
| 88 | unsigned char flags; /* IRQ flags */ | 86 | unsigned char flags; /* IRQ flags */ |
| 89 | unsigned char pad; /* pad */ | 87 | unsigned char pad; /* pad */ |
| 90 | struct pnp_irq *next; /* next IRQ */ | 88 | struct pnp_irq *next; /* next IRQ */ |
| 91 | }; | 89 | }; |
| 92 | 90 | ||
| 93 | struct pnp_dma { | 91 | struct pnp_dma { |
| 94 | unsigned char map; /* bitmask for DMA channels */ | 92 | unsigned char map; /* bitmask for DMA channels */ |
| 95 | unsigned char flags; /* DMA flags */ | 93 | unsigned char flags; /* DMA flags */ |
| 96 | struct pnp_dma *next; /* next port */ | 94 | struct pnp_dma *next; /* next port */ |
| 97 | }; | 95 | }; |
| 98 | 96 | ||
| 99 | struct pnp_mem { | 97 | struct pnp_mem { |
| 100 | unsigned int min; /* min base number */ | 98 | unsigned int min; /* min base number */ |
| 101 | unsigned int max; /* max base number */ | 99 | unsigned int max; /* max base number */ |
| 102 | unsigned int align; /* align boundary */ | 100 | unsigned int align; /* align boundary */ |
| 103 | unsigned int size; /* size of range */ | 101 | unsigned int size; /* size of range */ |
| 104 | unsigned char flags; /* memory flags */ | 102 | unsigned char flags; /* memory flags */ |
| 105 | unsigned char pad; /* pad */ | 103 | unsigned char pad; /* pad */ |
| 106 | struct pnp_mem *next; /* next memory resource */ | 104 | struct pnp_mem *next; /* next memory resource */ |
| 107 | }; | 105 | }; |
| 108 | 106 | ||
| 109 | #define PNP_RES_PRIORITY_PREFERRED 0 | 107 | #define PNP_RES_PRIORITY_PREFERRED 0 |
| @@ -127,7 +125,6 @@ struct pnp_resource_table { | |||
| 127 | struct resource irq_resource[PNP_MAX_IRQ]; | 125 | struct resource irq_resource[PNP_MAX_IRQ]; |
| 128 | }; | 126 | }; |
| 129 | 127 | ||
| 130 | |||
| 131 | /* | 128 | /* |
| 132 | * Device Managemnt | 129 | * Device Managemnt |
| 133 | */ | 130 | */ |
| @@ -139,14 +136,14 @@ struct pnp_card { | |||
| 139 | struct list_head protocol_list; /* node in protocol's list of cards */ | 136 | struct list_head protocol_list; /* node in protocol's list of cards */ |
| 140 | struct list_head devices; /* devices attached to the card */ | 137 | struct list_head devices; /* devices attached to the card */ |
| 141 | 138 | ||
| 142 | struct pnp_protocol * protocol; | 139 | struct pnp_protocol *protocol; |
| 143 | struct pnp_id * id; /* contains supported EISA IDs*/ | 140 | struct pnp_id *id; /* contains supported EISA IDs */ |
| 144 | 141 | ||
| 145 | char name[PNP_NAME_LEN]; /* contains a human-readable name */ | 142 | char name[PNP_NAME_LEN]; /* contains a human-readable name */ |
| 146 | unsigned char pnpver; /* Plug & Play version */ | 143 | unsigned char pnpver; /* Plug & Play version */ |
| 147 | unsigned char productver; /* product version */ | 144 | unsigned char productver; /* product version */ |
| 148 | unsigned int serial; /* serial number */ | 145 | unsigned int serial; /* serial number */ |
| 149 | unsigned char checksum; /* if zero - checksum passed */ | 146 | unsigned char checksum; /* if zero - checksum passed */ |
| 150 | struct proc_dir_entry *procdir; /* directory entry in /proc/bus/isapnp */ | 147 | struct proc_dir_entry *procdir; /* directory entry in /proc/bus/isapnp */ |
| 151 | }; | 148 | }; |
| 152 | 149 | ||
| @@ -159,18 +156,18 @@ struct pnp_card { | |||
| 159 | (card) = global_to_pnp_card((card)->global_list.next)) | 156 | (card) = global_to_pnp_card((card)->global_list.next)) |
| 160 | 157 | ||
| 161 | struct pnp_card_link { | 158 | struct pnp_card_link { |
| 162 | struct pnp_card * card; | 159 | struct pnp_card *card; |
| 163 | struct pnp_card_driver * driver; | 160 | struct pnp_card_driver *driver; |
| 164 | void * driver_data; | 161 | void *driver_data; |
| 165 | pm_message_t pm_state; | 162 | pm_message_t pm_state; |
| 166 | }; | 163 | }; |
| 167 | 164 | ||
| 168 | static inline void *pnp_get_card_drvdata (struct pnp_card_link *pcard) | 165 | static inline void *pnp_get_card_drvdata(struct pnp_card_link *pcard) |
| 169 | { | 166 | { |
| 170 | return pcard->driver_data; | 167 | return pcard->driver_data; |
| 171 | } | 168 | } |
| 172 | 169 | ||
| 173 | static inline void pnp_set_card_drvdata (struct pnp_card_link *pcard, void *data) | 170 | static inline void pnp_set_card_drvdata(struct pnp_card_link *pcard, void *data) |
| 174 | { | 171 | { |
| 175 | pcard->driver_data = data; | 172 | pcard->driver_data = data; |
| 176 | } | 173 | } |
| @@ -186,22 +183,22 @@ struct pnp_dev { | |||
| 186 | struct list_head card_list; /* node in card's list of devices */ | 183 | struct list_head card_list; /* node in card's list of devices */ |
| 187 | struct list_head rdev_list; /* node in cards list of requested devices */ | 184 | struct list_head rdev_list; /* node in cards list of requested devices */ |
| 188 | 185 | ||
| 189 | struct pnp_protocol * protocol; | 186 | struct pnp_protocol *protocol; |
| 190 | struct pnp_card * card; /* card the device is attached to, none if NULL */ | 187 | struct pnp_card *card; /* card the device is attached to, none if NULL */ |
| 191 | struct pnp_driver * driver; | 188 | struct pnp_driver *driver; |
| 192 | struct pnp_card_link * card_link; | 189 | struct pnp_card_link *card_link; |
| 193 | 190 | ||
| 194 | struct pnp_id * id; /* supported EISA IDs*/ | 191 | struct pnp_id *id; /* supported EISA IDs */ |
| 195 | 192 | ||
| 196 | int active; | 193 | int active; |
| 197 | int capabilities; | 194 | int capabilities; |
| 198 | struct pnp_option * independent; | 195 | struct pnp_option *independent; |
| 199 | struct pnp_option * dependent; | 196 | struct pnp_option *dependent; |
| 200 | struct pnp_resource_table res; | 197 | struct pnp_resource_table res; |
| 201 | 198 | ||
| 202 | char name[PNP_NAME_LEN]; /* contains a human-readable name */ | 199 | char name[PNP_NAME_LEN]; /* contains a human-readable name */ |
| 203 | unsigned short regs; /* ISAPnP: supported registers */ | 200 | unsigned short regs; /* ISAPnP: supported registers */ |
| 204 | int flags; /* used by protocols */ | 201 | int flags; /* used by protocols */ |
| 205 | struct proc_dir_entry *procent; /* device entry in /proc/bus/isapnp */ | 202 | struct proc_dir_entry *procent; /* device entry in /proc/bus/isapnp */ |
| 206 | void *data; | 203 | void *data; |
| 207 | }; | 204 | }; |
| @@ -220,19 +217,19 @@ struct pnp_dev { | |||
| 220 | (dev) = card_to_pnp_dev((dev)->card_list.next)) | 217 | (dev) = card_to_pnp_dev((dev)->card_list.next)) |
| 221 | #define pnp_dev_name(dev) (dev)->name | 218 | #define pnp_dev_name(dev) (dev)->name |
| 222 | 219 | ||
| 223 | static inline void *pnp_get_drvdata (struct pnp_dev *pdev) | 220 | static inline void *pnp_get_drvdata(struct pnp_dev *pdev) |
| 224 | { | 221 | { |
| 225 | return dev_get_drvdata(&pdev->dev); | 222 | return dev_get_drvdata(&pdev->dev); |
| 226 | } | 223 | } |
| 227 | 224 | ||
| 228 | static inline void pnp_set_drvdata (struct pnp_dev *pdev, void *data) | 225 | static inline void pnp_set_drvdata(struct pnp_dev *pdev, void *data) |
| 229 | { | 226 | { |
| 230 | dev_set_drvdata(&pdev->dev, data); | 227 | dev_set_drvdata(&pdev->dev, data); |
| 231 | } | 228 | } |
| 232 | 229 | ||
| 233 | struct pnp_fixup { | 230 | struct pnp_fixup { |
| 234 | char id[7]; | 231 | char id[7]; |
| 235 | void (*quirk_function)(struct pnp_dev *dev); /* fixup function */ | 232 | void (*quirk_function) (struct pnp_dev * dev); /* fixup function */ |
| 236 | }; | 233 | }; |
| 237 | 234 | ||
| 238 | /* config parameters */ | 235 | /* config parameters */ |
| @@ -269,7 +266,6 @@ extern struct pnp_protocol pnpbios_protocol; | |||
| 269 | #define pnp_device_is_pnpbios(dev) 0 | 266 | #define pnp_device_is_pnpbios(dev) 0 |
| 270 | #endif | 267 | #endif |
| 271 | 268 | ||
| 272 | |||
| 273 | /* status */ | 269 | /* status */ |
| 274 | #define PNP_READY 0x0000 | 270 | #define PNP_READY 0x0000 |
| 275 | #define PNP_ATTACHED 0x0001 | 271 | #define PNP_ATTACHED 0x0001 |
| @@ -287,17 +283,17 @@ extern struct pnp_protocol pnpbios_protocol; | |||
| 287 | 283 | ||
| 288 | struct pnp_id { | 284 | struct pnp_id { |
| 289 | char id[PNP_ID_LEN]; | 285 | char id[PNP_ID_LEN]; |
| 290 | struct pnp_id * next; | 286 | struct pnp_id *next; |
| 291 | }; | 287 | }; |
| 292 | 288 | ||
| 293 | struct pnp_driver { | 289 | struct pnp_driver { |
| 294 | char * name; | 290 | char *name; |
| 295 | const struct pnp_device_id *id_table; | 291 | const struct pnp_device_id *id_table; |
| 296 | unsigned int flags; | 292 | unsigned int flags; |
| 297 | int (*probe) (struct pnp_dev *dev, const struct pnp_device_id *dev_id); | 293 | int (*probe) (struct pnp_dev *dev, const struct pnp_device_id *dev_id); |
| 298 | void (*remove) (struct pnp_dev *dev); | 294 | void (*remove) (struct pnp_dev *dev); |
| 299 | int (*suspend) (struct pnp_dev *dev, pm_message_t state); | 295 | int (*suspend) (struct pnp_dev *dev, pm_message_t state); |
| 300 | int (*resume) (struct pnp_dev *dev); | 296 | int (*resume) (struct pnp_dev *dev); |
| 301 | struct device_driver driver; | 297 | struct device_driver driver; |
| 302 | }; | 298 | }; |
| 303 | 299 | ||
| @@ -305,13 +301,14 @@ struct pnp_driver { | |||
| 305 | 301 | ||
| 306 | struct pnp_card_driver { | 302 | struct pnp_card_driver { |
| 307 | struct list_head global_list; | 303 | struct list_head global_list; |
| 308 | char * name; | 304 | char *name; |
| 309 | const struct pnp_card_device_id *id_table; | 305 | const struct pnp_card_device_id *id_table; |
| 310 | unsigned int flags; | 306 | unsigned int flags; |
| 311 | int (*probe) (struct pnp_card_link *card, const struct pnp_card_device_id *card_id); | 307 | int (*probe) (struct pnp_card_link *card, |
| 308 | const struct pnp_card_device_id *card_id); | ||
| 312 | void (*remove) (struct pnp_card_link *card); | 309 | void (*remove) (struct pnp_card_link *card); |
| 313 | int (*suspend) (struct pnp_card_link *card, pm_message_t state); | 310 | int (*suspend) (struct pnp_card_link *card, pm_message_t state); |
| 314 | int (*resume) (struct pnp_card_link *card); | 311 | int (*resume) (struct pnp_card_link *card); |
| 315 | struct pnp_driver link; | 312 | struct pnp_driver link; |
| 316 | }; | 313 | }; |
| 317 | 314 | ||
| @@ -321,29 +318,28 @@ struct pnp_card_driver { | |||
| 321 | #define PNP_DRIVER_RES_DO_NOT_CHANGE 0x0001 /* do not change the state of the device */ | 318 | #define PNP_DRIVER_RES_DO_NOT_CHANGE 0x0001 /* do not change the state of the device */ |
| 322 | #define PNP_DRIVER_RES_DISABLE 0x0003 /* ensure the device is disabled */ | 319 | #define PNP_DRIVER_RES_DISABLE 0x0003 /* ensure the device is disabled */ |
| 323 | 320 | ||
| 324 | |||
| 325 | /* | 321 | /* |
| 326 | * Protocol Management | 322 | * Protocol Management |
| 327 | */ | 323 | */ |
| 328 | 324 | ||
| 329 | struct pnp_protocol { | 325 | struct pnp_protocol { |
| 330 | struct list_head protocol_list; | 326 | struct list_head protocol_list; |
| 331 | char * name; | 327 | char *name; |
| 332 | 328 | ||
| 333 | /* resource control functions */ | 329 | /* resource control functions */ |
| 334 | int (*get)(struct pnp_dev *dev, struct pnp_resource_table *res); | 330 | int (*get) (struct pnp_dev *dev, struct pnp_resource_table *res); |
| 335 | int (*set)(struct pnp_dev *dev, struct pnp_resource_table *res); | 331 | int (*set) (struct pnp_dev *dev, struct pnp_resource_table *res); |
| 336 | int (*disable)(struct pnp_dev *dev); | 332 | int (*disable) (struct pnp_dev *dev); |
| 337 | 333 | ||
| 338 | /* protocol specific suspend/resume */ | 334 | /* protocol specific suspend/resume */ |
| 339 | int (*suspend)(struct pnp_dev *dev, pm_message_t state); | 335 | int (*suspend) (struct pnp_dev * dev, pm_message_t state); |
| 340 | int (*resume)(struct pnp_dev *dev); | 336 | int (*resume) (struct pnp_dev * dev); |
| 341 | 337 | ||
| 342 | /* used by pnp layer only (look but don't touch) */ | 338 | /* used by pnp layer only (look but don't touch) */ |
| 343 | unsigned char number; /* protocol number*/ | 339 | unsigned char number; /* protocol number */ |
| 344 | struct device dev; /* link to driver model */ | 340 | struct device dev; /* link to driver model */ |
| 345 | struct list_head cards; | 341 | struct list_head cards; |
| 346 | struct list_head devices; | 342 | struct list_head devices; |
| 347 | }; | 343 | }; |
| 348 | 344 | ||
| 349 | #define to_pnp_protocol(n) list_entry(n, struct pnp_protocol, protocol_list) | 345 | #define to_pnp_protocol(n) list_entry(n, struct pnp_protocol, protocol_list) |
| @@ -356,7 +352,6 @@ struct pnp_protocol { | |||
| 356 | (dev) != protocol_to_pnp_dev(&(protocol)->devices); \ | 352 | (dev) != protocol_to_pnp_dev(&(protocol)->devices); \ |
| 357 | (dev) = protocol_to_pnp_dev((dev)->protocol_list.next)) | 353 | (dev) = protocol_to_pnp_dev((dev)->protocol_list.next)) |
| 358 | 354 | ||
| 359 | |||
| 360 | extern struct bus_type pnp_bus_type; | 355 | extern struct bus_type pnp_bus_type; |
| 361 | 356 | ||
| 362 | #if defined(CONFIG_PNP) | 357 | #if defined(CONFIG_PNP) |
| @@ -376,21 +371,25 @@ void pnp_remove_card(struct pnp_card *card); | |||
| 376 | int pnp_add_card_device(struct pnp_card *card, struct pnp_dev *dev); | 371 | int pnp_add_card_device(struct pnp_card *card, struct pnp_dev *dev); |
| 377 | void pnp_remove_card_device(struct pnp_dev *dev); | 372 | void pnp_remove_card_device(struct pnp_dev *dev); |
| 378 | int pnp_add_card_id(struct pnp_id *id, struct pnp_card *card); | 373 | int pnp_add_card_id(struct pnp_id *id, struct pnp_card *card); |
| 379 | struct pnp_dev * pnp_request_card_device(struct pnp_card_link *clink, const char * id, struct pnp_dev * from); | 374 | struct pnp_dev *pnp_request_card_device(struct pnp_card_link *clink, |
| 380 | void pnp_release_card_device(struct pnp_dev * dev); | 375 | const char *id, struct pnp_dev *from); |
| 381 | int pnp_register_card_driver(struct pnp_card_driver * drv); | 376 | void pnp_release_card_device(struct pnp_dev *dev); |
| 382 | void pnp_unregister_card_driver(struct pnp_card_driver * drv); | 377 | int pnp_register_card_driver(struct pnp_card_driver *drv); |
| 378 | void pnp_unregister_card_driver(struct pnp_card_driver *drv); | ||
| 383 | extern struct list_head pnp_cards; | 379 | extern struct list_head pnp_cards; |
| 384 | 380 | ||
| 385 | /* resource management */ | 381 | /* resource management */ |
| 386 | struct pnp_option * pnp_register_independent_option(struct pnp_dev *dev); | 382 | struct pnp_option *pnp_register_independent_option(struct pnp_dev *dev); |
| 387 | struct pnp_option * pnp_register_dependent_option(struct pnp_dev *dev, int priority); | 383 | struct pnp_option *pnp_register_dependent_option(struct pnp_dev *dev, |
| 384 | int priority); | ||
| 388 | int pnp_register_irq_resource(struct pnp_option *option, struct pnp_irq *data); | 385 | int pnp_register_irq_resource(struct pnp_option *option, struct pnp_irq *data); |
| 389 | int pnp_register_dma_resource(struct pnp_option *option, struct pnp_dma *data); | 386 | int pnp_register_dma_resource(struct pnp_option *option, struct pnp_dma *data); |
| 390 | int pnp_register_port_resource(struct pnp_option *option, struct pnp_port *data); | 387 | int pnp_register_port_resource(struct pnp_option *option, |
| 388 | struct pnp_port *data); | ||
| 391 | int pnp_register_mem_resource(struct pnp_option *option, struct pnp_mem *data); | 389 | int pnp_register_mem_resource(struct pnp_option *option, struct pnp_mem *data); |
| 392 | void pnp_init_resource_table(struct pnp_resource_table *table); | 390 | void pnp_init_resource_table(struct pnp_resource_table *table); |
| 393 | int pnp_manual_config_dev(struct pnp_dev *dev, struct pnp_resource_table *res, int mode); | 391 | int pnp_manual_config_dev(struct pnp_dev *dev, struct pnp_resource_table *res, |
| 392 | int mode); | ||
| 394 | int pnp_auto_config_dev(struct pnp_dev *dev); | 393 | int pnp_auto_config_dev(struct pnp_dev *dev); |
| 395 | int pnp_validate_config(struct pnp_dev *dev); | 394 | int pnp_validate_config(struct pnp_dev *dev); |
| 396 | int pnp_start_dev(struct pnp_dev *dev); | 395 | int pnp_start_dev(struct pnp_dev *dev); |
| @@ -398,11 +397,11 @@ int pnp_stop_dev(struct pnp_dev *dev); | |||
| 398 | int pnp_activate_dev(struct pnp_dev *dev); | 397 | int pnp_activate_dev(struct pnp_dev *dev); |
| 399 | int pnp_disable_dev(struct pnp_dev *dev); | 398 | int pnp_disable_dev(struct pnp_dev *dev); |
| 400 | void pnp_resource_change(struct resource *resource, resource_size_t start, | 399 | void pnp_resource_change(struct resource *resource, resource_size_t start, |
| 401 | resource_size_t size); | 400 | resource_size_t size); |
| 402 | 401 | ||
| 403 | /* protocol helpers */ | 402 | /* protocol helpers */ |
| 404 | int pnp_is_active(struct pnp_dev * dev); | 403 | int pnp_is_active(struct pnp_dev *dev); |
| 405 | int compare_pnp_id(struct pnp_id * pos, const char * id); | 404 | int compare_pnp_id(struct pnp_id *pos, const char *id); |
| 406 | int pnp_add_id(struct pnp_id *id, struct pnp_dev *dev); | 405 | int pnp_add_id(struct pnp_id *id, struct pnp_dev *dev); |
| 407 | int pnp_register_driver(struct pnp_driver *drv); | 406 | int pnp_register_driver(struct pnp_driver *drv); |
| 408 | void pnp_unregister_driver(struct pnp_driver *drv); | 407 | void pnp_unregister_driver(struct pnp_driver *drv); |
| @@ -415,23 +414,24 @@ static inline void pnp_unregister_protocol(struct pnp_protocol *protocol) { } | |||
| 415 | static inline int pnp_init_device(struct pnp_dev *dev) { return -ENODEV; } | 414 | static inline int pnp_init_device(struct pnp_dev *dev) { return -ENODEV; } |
| 416 | static inline int pnp_add_device(struct pnp_dev *dev) { return -ENODEV; } | 415 | static inline int pnp_add_device(struct pnp_dev *dev) { return -ENODEV; } |
| 417 | static inline int pnp_device_attach(struct pnp_dev *pnp_dev) { return -ENODEV; } | 416 | static inline int pnp_device_attach(struct pnp_dev *pnp_dev) { return -ENODEV; } |
| 418 | static inline void pnp_device_detach(struct pnp_dev *pnp_dev) { ; } | 417 | static inline void pnp_device_detach(struct pnp_dev *pnp_dev) { } |
| 418 | |||
| 419 | #define pnp_platform_devices 0 | 419 | #define pnp_platform_devices 0 |
| 420 | 420 | ||
| 421 | /* multidevice card support */ | 421 | /* multidevice card support */ |
| 422 | static inline int pnp_add_card(struct pnp_card *card) { return -ENODEV; } | 422 | static inline int pnp_add_card(struct pnp_card *card) { return -ENODEV; } |
| 423 | static inline void pnp_remove_card(struct pnp_card *card) { ; } | 423 | static inline void pnp_remove_card(struct pnp_card *card) { } |
| 424 | static inline int pnp_add_card_device(struct pnp_card *card, struct pnp_dev *dev) { return -ENODEV; } | 424 | static inline int pnp_add_card_device(struct pnp_card *card, struct pnp_dev *dev) { return -ENODEV; } |
| 425 | static inline void pnp_remove_card_device(struct pnp_dev *dev) { ; } | 425 | static inline void pnp_remove_card_device(struct pnp_dev *dev) { } |
| 426 | static inline int pnp_add_card_id(struct pnp_id *id, struct pnp_card *card) { return -ENODEV; } | 426 | static inline int pnp_add_card_id(struct pnp_id *id, struct pnp_card *card) { return -ENODEV; } |
| 427 | static inline struct pnp_dev * pnp_request_card_device(struct pnp_card_link *clink, const char * id, struct pnp_dev * from) { return NULL; } | 427 | static inline struct pnp_dev *pnp_request_card_device(struct pnp_card_link *clink, const char *id, struct pnp_dev *from) { return NULL; } |
| 428 | static inline void pnp_release_card_device(struct pnp_dev * dev) { ; } | 428 | static inline void pnp_release_card_device(struct pnp_dev *dev) { } |
| 429 | static inline int pnp_register_card_driver(struct pnp_card_driver * drv) { return -ENODEV; } | 429 | static inline int pnp_register_card_driver(struct pnp_card_driver *drv) { return -ENODEV; } |
| 430 | static inline void pnp_unregister_card_driver(struct pnp_card_driver * drv) { ; } | 430 | static inline void pnp_unregister_card_driver(struct pnp_card_driver *drv) { } |
| 431 | 431 | ||
| 432 | /* resource management */ | 432 | /* resource management */ |
| 433 | static inline struct pnp_option * pnp_register_independent_option(struct pnp_dev *dev) { return NULL; } | 433 | static inline struct pnp_option *pnp_register_independent_option(struct pnp_dev *dev) { return NULL; } |
| 434 | static inline struct pnp_option * pnp_register_dependent_option(struct pnp_dev *dev, int priority) { return NULL; } | 434 | static inline struct pnp_option *pnp_register_dependent_option(struct pnp_dev *dev, int priority) { return NULL; } |
| 435 | static inline int pnp_register_irq_resource(struct pnp_option *option, struct pnp_irq *data) { return -ENODEV; } | 435 | static inline int pnp_register_irq_resource(struct pnp_option *option, struct pnp_irq *data) { return -ENODEV; } |
| 436 | static inline int pnp_register_dma_resource(struct pnp_option *option, struct pnp_dma *data) { return -ENODEV; } | 436 | static inline int pnp_register_dma_resource(struct pnp_option *option, struct pnp_dma *data) { return -ENODEV; } |
| 437 | static inline int pnp_register_port_resource(struct pnp_option *option, struct pnp_port *data) { return -ENODEV; } | 437 | static inline int pnp_register_port_resource(struct pnp_option *option, struct pnp_port *data) { return -ENODEV; } |
| @@ -444,20 +444,17 @@ static inline int pnp_start_dev(struct pnp_dev *dev) { return -ENODEV; } | |||
| 444 | static inline int pnp_stop_dev(struct pnp_dev *dev) { return -ENODEV; } | 444 | static inline int pnp_stop_dev(struct pnp_dev *dev) { return -ENODEV; } |
| 445 | static inline int pnp_activate_dev(struct pnp_dev *dev) { return -ENODEV; } | 445 | static inline int pnp_activate_dev(struct pnp_dev *dev) { return -ENODEV; } |
| 446 | static inline int pnp_disable_dev(struct pnp_dev *dev) { return -ENODEV; } | 446 | static inline int pnp_disable_dev(struct pnp_dev *dev) { return -ENODEV; } |
| 447 | static inline void pnp_resource_change(struct resource *resource, | 447 | static inline void pnp_resource_change(struct resource *resource, resource_size_t start, resource_size_t size) { } |
| 448 | resource_size_t start, | ||
| 449 | resource_size_t size) { } | ||
| 450 | 448 | ||
| 451 | /* protocol helpers */ | 449 | /* protocol helpers */ |
| 452 | static inline int pnp_is_active(struct pnp_dev * dev) { return 0; } | 450 | static inline int pnp_is_active(struct pnp_dev *dev) { return 0; } |
| 453 | static inline int compare_pnp_id(struct pnp_id * pos, const char * id) { return -ENODEV; } | 451 | static inline int compare_pnp_id(struct pnp_id *pos, const char *id) { return -ENODEV; } |
| 454 | static inline int pnp_add_id(struct pnp_id *id, struct pnp_dev *dev) { return -ENODEV; } | 452 | static inline int pnp_add_id(struct pnp_id *id, struct pnp_dev *dev) { return -ENODEV; } |
| 455 | static inline int pnp_register_driver(struct pnp_driver *drv) { return -ENODEV; } | 453 | static inline int pnp_register_driver(struct pnp_driver *drv) { return -ENODEV; } |
| 456 | static inline void pnp_unregister_driver(struct pnp_driver *drv) { ; } | 454 | static inline void pnp_unregister_driver(struct pnp_driver *drv) { } |
| 457 | 455 | ||
| 458 | #endif /* CONFIG_PNP */ | 456 | #endif /* CONFIG_PNP */ |
| 459 | 457 | ||
| 460 | |||
| 461 | #define pnp_err(format, arg...) printk(KERN_ERR "pnp: " format "\n" , ## arg) | 458 | #define pnp_err(format, arg...) printk(KERN_ERR "pnp: " format "\n" , ## arg) |
| 462 | #define pnp_info(format, arg...) printk(KERN_INFO "pnp: " format "\n" , ## arg) | 459 | #define pnp_info(format, arg...) printk(KERN_INFO "pnp: " format "\n" , ## arg) |
| 463 | #define pnp_warn(format, arg...) printk(KERN_WARNING "pnp: " format "\n" , ## arg) | 460 | #define pnp_warn(format, arg...) printk(KERN_WARNING "pnp: " format "\n" , ## arg) |
diff --git a/include/linux/pnpbios.h b/include/linux/pnpbios.h index 0a282ac1f6b2..329192adc9dd 100644 --- a/include/linux/pnpbios.h +++ b/include/linux/pnpbios.h | |||
| @@ -99,32 +99,32 @@ | |||
| 99 | 99 | ||
| 100 | #pragma pack(1) | 100 | #pragma pack(1) |
| 101 | struct pnp_dev_node_info { | 101 | struct pnp_dev_node_info { |
| 102 | __u16 no_nodes; | 102 | __u16 no_nodes; |
| 103 | __u16 max_node_size; | 103 | __u16 max_node_size; |
| 104 | }; | 104 | }; |
| 105 | struct pnp_docking_station_info { | 105 | struct pnp_docking_station_info { |
| 106 | __u32 location_id; | 106 | __u32 location_id; |
| 107 | __u32 serial; | 107 | __u32 serial; |
| 108 | __u16 capabilities; | 108 | __u16 capabilities; |
| 109 | }; | 109 | }; |
| 110 | struct pnp_isa_config_struc { | 110 | struct pnp_isa_config_struc { |
| 111 | __u8 revision; | 111 | __u8 revision; |
| 112 | __u8 no_csns; | 112 | __u8 no_csns; |
| 113 | __u16 isa_rd_data_port; | 113 | __u16 isa_rd_data_port; |
| 114 | __u16 reserved; | 114 | __u16 reserved; |
| 115 | }; | 115 | }; |
| 116 | struct escd_info_struc { | 116 | struct escd_info_struc { |
| 117 | __u16 min_escd_write_size; | 117 | __u16 min_escd_write_size; |
| 118 | __u16 escd_size; | 118 | __u16 escd_size; |
| 119 | __u32 nv_storage_base; | 119 | __u32 nv_storage_base; |
| 120 | }; | 120 | }; |
| 121 | struct pnp_bios_node { | 121 | struct pnp_bios_node { |
| 122 | __u16 size; | 122 | __u16 size; |
| 123 | __u8 handle; | 123 | __u8 handle; |
| 124 | __u32 eisa_id; | 124 | __u32 eisa_id; |
| 125 | __u8 type_code[3]; | 125 | __u8 type_code[3]; |
| 126 | __u16 flags; | 126 | __u16 flags; |
| 127 | __u8 data[0]; | 127 | __u8 data[0]; |
| 128 | }; | 128 | }; |
| 129 | #pragma pack() | 129 | #pragma pack() |
| 130 | 130 | ||
| @@ -133,22 +133,16 @@ struct pnp_bios_node { | |||
| 133 | /* non-exported */ | 133 | /* non-exported */ |
| 134 | extern struct pnp_dev_node_info node_info; | 134 | extern struct pnp_dev_node_info node_info; |
| 135 | 135 | ||
| 136 | extern int pnp_bios_dev_node_info (struct pnp_dev_node_info *data); | 136 | extern int pnp_bios_dev_node_info(struct pnp_dev_node_info *data); |
| 137 | extern int pnp_bios_get_dev_node (u8 *nodenum, char config, struct pnp_bios_node *data); | 137 | extern int pnp_bios_get_dev_node(u8 *nodenum, char config, |
| 138 | extern int pnp_bios_set_dev_node (u8 nodenum, char config, struct pnp_bios_node *data); | 138 | struct pnp_bios_node *data); |
| 139 | extern int pnp_bios_get_stat_res (char *info); | 139 | extern int pnp_bios_set_dev_node(u8 nodenum, char config, |
| 140 | extern int pnp_bios_isapnp_config (struct pnp_isa_config_struc *data); | 140 | struct pnp_bios_node *data); |
| 141 | extern int pnp_bios_escd_info (struct escd_info_struc *data); | 141 | extern int pnp_bios_get_stat_res(char *info); |
| 142 | extern int pnp_bios_read_escd (char *data, u32 nvram_base); | 142 | extern int pnp_bios_isapnp_config(struct pnp_isa_config_struc *data); |
| 143 | extern int pnp_bios_escd_info(struct escd_info_struc *data); | ||
| 144 | extern int pnp_bios_read_escd(char *data, u32 nvram_base); | ||
| 143 | extern int pnp_bios_dock_station_info(struct pnp_docking_station_info *data); | 145 | extern int pnp_bios_dock_station_info(struct pnp_docking_station_info *data); |
| 144 | #define needed 0 | ||
| 145 | #if needed | ||
| 146 | extern int pnp_bios_get_event (u16 *message); | ||
| 147 | extern int pnp_bios_send_message (u16 message); | ||
| 148 | extern int pnp_bios_set_stat_res (char *info); | ||
| 149 | extern int pnp_bios_apm_id_table (char *table, u16 *size); | ||
| 150 | extern int pnp_bios_write_escd (char *data, u32 nvram_base); | ||
| 151 | #endif | ||
| 152 | 146 | ||
| 153 | #endif /* CONFIG_PNPBIOS */ | 147 | #endif /* CONFIG_PNPBIOS */ |
| 154 | 148 | ||
diff --git a/include/linux/suspend.h b/include/linux/suspend.h index e8e6da394c92..618f93c32b7f 100644 --- a/include/linux/suspend.h +++ b/include/linux/suspend.h | |||
| @@ -125,6 +125,9 @@ static inline int unregister_pm_notifier(struct notifier_block *nb) | |||
| 125 | static inline void register_nosave_region(unsigned long b, unsigned long e) | 125 | static inline void register_nosave_region(unsigned long b, unsigned long e) |
| 126 | { | 126 | { |
| 127 | } | 127 | } |
| 128 | static inline void register_nosave_region_late(unsigned long b, unsigned long e) | ||
| 129 | { | ||
| 130 | } | ||
| 128 | #endif | 131 | #endif |
| 129 | 132 | ||
| 130 | #endif /* _LINUX_SWSUSP_H */ | 133 | #endif /* _LINUX_SWSUSP_H */ |
diff --git a/include/net/netfilter/nf_conntrack_tuple.h b/include/net/netfilter/nf_conntrack_tuple.h index 040dae5f0c9e..c48e390f4b0f 100644 --- a/include/net/netfilter/nf_conntrack_tuple.h +++ b/include/net/netfilter/nf_conntrack_tuple.h | |||
| @@ -35,7 +35,7 @@ union nf_conntrack_address { | |||
| 35 | union nf_conntrack_man_proto | 35 | union nf_conntrack_man_proto |
| 36 | { | 36 | { |
| 37 | /* Add other protocols here. */ | 37 | /* Add other protocols here. */ |
| 38 | u_int16_t all; | 38 | __be16 all; |
| 39 | 39 | ||
| 40 | struct { | 40 | struct { |
| 41 | __be16 port; | 41 | __be16 port; |
| @@ -73,7 +73,7 @@ struct nf_conntrack_tuple | |||
| 73 | union nf_conntrack_address u3; | 73 | union nf_conntrack_address u3; |
| 74 | union { | 74 | union { |
| 75 | /* Add other protocols here. */ | 75 | /* Add other protocols here. */ |
| 76 | u_int16_t all; | 76 | __be16 all; |
| 77 | 77 | ||
| 78 | struct { | 78 | struct { |
| 79 | __be16 port; | 79 | __be16 port; |
diff --git a/include/xen/page.h b/include/xen/page.h index 1df6c1930578..c0c8fcb27899 100644 --- a/include/xen/page.h +++ b/include/xen/page.h | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | #include <linux/pfn.h> | 4 | #include <linux/pfn.h> |
| 5 | 5 | ||
| 6 | #include <asm/uaccess.h> | 6 | #include <asm/uaccess.h> |
| 7 | #include <asm/pgtable.h> | ||
| 7 | 8 | ||
| 8 | #include <xen/features.h> | 9 | #include <xen/features.h> |
| 9 | 10 | ||
