diff options
Diffstat (limited to 'include')
43 files changed, 226 insertions, 322 deletions
diff --git a/include/asm-alpha/current.h b/include/asm-alpha/current.h index 8d88a13c1bec..094d285a1b34 100644 --- a/include/asm-alpha/current.h +++ b/include/asm-alpha/current.h | |||
@@ -3,7 +3,7 @@ | |||
3 | 3 | ||
4 | #include <linux/thread_info.h> | 4 | #include <linux/thread_info.h> |
5 | 5 | ||
6 | #define get_current() (current_thread_info()->task + 0) | 6 | #define get_current() (current_thread_info()->task) |
7 | #define current get_current() | 7 | #define current get_current() |
8 | 8 | ||
9 | #endif /* _ALPHA_CURRENT_H */ | 9 | #endif /* _ALPHA_CURRENT_H */ |
diff --git a/include/asm-alpha/dma-mapping.h b/include/asm-alpha/dma-mapping.h index 75a1aff5b57b..db351d1296f4 100644 --- a/include/asm-alpha/dma-mapping.h +++ b/include/asm-alpha/dma-mapping.h | |||
@@ -11,7 +11,7 @@ | |||
11 | #define dma_unmap_single(dev, addr, size, dir) \ | 11 | #define dma_unmap_single(dev, addr, size, dir) \ |
12 | pci_unmap_single(alpha_gendev_to_pci(dev), addr, size, dir) | 12 | pci_unmap_single(alpha_gendev_to_pci(dev), addr, size, dir) |
13 | #define dma_alloc_coherent(dev, size, addr, gfp) \ | 13 | #define dma_alloc_coherent(dev, size, addr, gfp) \ |
14 | pci_alloc_consistent(alpha_gendev_to_pci(dev), size, addr) | 14 | __pci_alloc_consistent(alpha_gendev_to_pci(dev), size, addr, gfp) |
15 | #define dma_free_coherent(dev, size, va, addr) \ | 15 | #define dma_free_coherent(dev, size, va, addr) \ |
16 | pci_free_consistent(alpha_gendev_to_pci(dev), size, va, addr) | 16 | pci_free_consistent(alpha_gendev_to_pci(dev), size, va, addr) |
17 | #define dma_map_page(dev, page, off, size, dir) \ | 17 | #define dma_map_page(dev, page, off, size, dir) \ |
diff --git a/include/asm-alpha/kvm.h b/include/asm-alpha/kvm.h new file mode 100644 index 000000000000..b9daec429689 --- /dev/null +++ b/include/asm-alpha/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_ALPHA_H | ||
2 | #define __LINUX_KVM_ALPHA_H | ||
3 | |||
4 | /* alpha does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-alpha/pci.h b/include/asm-alpha/pci.h index d5b10ef64364..d31fd49ff79a 100644 --- a/include/asm-alpha/pci.h +++ b/include/asm-alpha/pci.h | |||
@@ -76,7 +76,13 @@ extern inline void pcibios_penalize_isa_irq(int irq, int active) | |||
76 | successful and sets *DMA_ADDRP to the pci side dma address as well, | 76 | successful and sets *DMA_ADDRP to the pci side dma address as well, |
77 | else DMA_ADDRP is undefined. */ | 77 | else DMA_ADDRP is undefined. */ |
78 | 78 | ||
79 | extern void *pci_alloc_consistent(struct pci_dev *, size_t, dma_addr_t *); | 79 | extern void *__pci_alloc_consistent(struct pci_dev *, size_t, |
80 | dma_addr_t *, gfp_t); | ||
81 | static inline void * | ||
82 | pci_alloc_consistent(struct pci_dev *dev, size_t size, dma_addr_t *dma) | ||
83 | { | ||
84 | return __pci_alloc_consistent(dev, size, dma, GFP_ATOMIC); | ||
85 | } | ||
80 | 86 | ||
81 | /* Free and unmap a consistent DMA buffer. CPU_ADDR and DMA_ADDR must | 87 | /* Free and unmap a consistent DMA buffer. CPU_ADDR and DMA_ADDR must |
82 | be values that were returned from pci_alloc_consistent. SIZE must | 88 | be values that were returned from pci_alloc_consistent. SIZE must |
diff --git a/include/asm-arm/kvm.h b/include/asm-arm/kvm.h new file mode 100644 index 000000000000..cb3c08cbcb9e --- /dev/null +++ b/include/asm-arm/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_ARM_H | ||
2 | #define __LINUX_KVM_ARM_H | ||
3 | |||
4 | /* arm does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-avr32/kvm.h b/include/asm-avr32/kvm.h new file mode 100644 index 000000000000..8c5777020e2c --- /dev/null +++ b/include/asm-avr32/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_AVR32_H | ||
2 | #define __LINUX_KVM_AVR32_H | ||
3 | |||
4 | /* avr32 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-blackfin/kvm.h b/include/asm-blackfin/kvm.h new file mode 100644 index 000000000000..e3477d77c014 --- /dev/null +++ b/include/asm-blackfin/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_BLACKFIN_H | ||
2 | #define __LINUX_KVM_BLACKFIN_H | ||
3 | |||
4 | /* blackfin does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-cris/kvm.h b/include/asm-cris/kvm.h new file mode 100644 index 000000000000..c860f51149f0 --- /dev/null +++ b/include/asm-cris/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_CRIS_H | ||
2 | #define __LINUX_KVM_CRIS_H | ||
3 | |||
4 | /* cris does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-frv/kvm.h b/include/asm-frv/kvm.h new file mode 100644 index 000000000000..9c8a4f08d0a9 --- /dev/null +++ b/include/asm-frv/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_FRV_H | ||
2 | #define __LINUX_KVM_FRV_H | ||
3 | |||
4 | /* frv does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-generic/Kbuild.asm b/include/asm-generic/Kbuild.asm index fd9dcfd91c39..92a6d91d0c1a 100644 --- a/include/asm-generic/Kbuild.asm +++ b/include/asm-generic/Kbuild.asm | |||
@@ -1,3 +1,5 @@ | |||
1 | header-y += kvm.h | ||
2 | |||
1 | ifeq ($(wildcard include/asm-$(SRCARCH)/a.out.h),include/asm-$(SRCARCH)/a.out.h) | 3 | ifeq ($(wildcard include/asm-$(SRCARCH)/a.out.h),include/asm-$(SRCARCH)/a.out.h) |
2 | unifdef-y += a.out.h | 4 | unifdef-y += a.out.h |
3 | endif | 5 | endif |
diff --git a/include/asm-h8300/kvm.h b/include/asm-h8300/kvm.h new file mode 100644 index 000000000000..bdbed7b987e1 --- /dev/null +++ b/include/asm-h8300/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_H8300_H | ||
2 | #define __LINUX_KVM_H8300_H | ||
3 | |||
4 | /* h8300 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-ia64/kvm.h b/include/asm-ia64/kvm.h new file mode 100644 index 000000000000..030d29b4b26b --- /dev/null +++ b/include/asm-ia64/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_IA64_H | ||
2 | #define __LINUX_KVM_IA64_H | ||
3 | |||
4 | /* ia64 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-m32r/kvm.h b/include/asm-m32r/kvm.h new file mode 100644 index 000000000000..99a40515b77e --- /dev/null +++ b/include/asm-m32r/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_M32R_H | ||
2 | #define __LINUX_KVM_M32R_H | ||
3 | |||
4 | /* m32r does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-m68k/kvm.h b/include/asm-m68k/kvm.h new file mode 100644 index 000000000000..7ed27fce5240 --- /dev/null +++ b/include/asm-m68k/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_M68K_H | ||
2 | #define __LINUX_KVM_M68K_H | ||
3 | |||
4 | /* m68k does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-m68knommu/kvm.h b/include/asm-m68knommu/kvm.h new file mode 100644 index 000000000000..b49d4258dabb --- /dev/null +++ b/include/asm-m68knommu/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_M68KNOMMU_H | ||
2 | #define __LINUX_KVM_M68KNOMMU_H | ||
3 | |||
4 | /* m68knommu does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-mips/kvm.h b/include/asm-mips/kvm.h new file mode 100644 index 000000000000..093a5b7f796b --- /dev/null +++ b/include/asm-mips/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_MIPS_H | ||
2 | #define __LINUX_KVM_MIPS_H | ||
3 | |||
4 | /* mips does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-mips/mach-au1x00/au1000.h b/include/asm-mips/mach-au1x00/au1000.h index cb18af989645..5bb57bf2b9d7 100644 --- a/include/asm-mips/mach-au1x00/au1000.h +++ b/include/asm-mips/mach-au1x00/au1000.h | |||
@@ -1786,6 +1786,7 @@ struct cpu_spec { | |||
1786 | char *cpu_name; | 1786 | char *cpu_name; |
1787 | unsigned char cpu_od; /* Set Config[OD] */ | 1787 | unsigned char cpu_od; /* Set Config[OD] */ |
1788 | unsigned char cpu_bclk; /* Enable BCLK switching */ | 1788 | unsigned char cpu_bclk; /* Enable BCLK switching */ |
1789 | unsigned char cpu_pll_wo; /* sys_cpupll reg. write-only */ | ||
1789 | }; | 1790 | }; |
1790 | 1791 | ||
1791 | extern struct cpu_spec cpu_specs[]; | 1792 | extern struct cpu_spec cpu_specs[]; |
diff --git a/include/asm-mn10300/kvm.h b/include/asm-mn10300/kvm.h new file mode 100644 index 000000000000..f6b609ff4a57 --- /dev/null +++ b/include/asm-mn10300/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_MN10300_H | ||
2 | #define __LINUX_KVM_MN10300_H | ||
3 | |||
4 | /* mn10300 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-parisc/kvm.h b/include/asm-parisc/kvm.h new file mode 100644 index 000000000000..00cc45812547 --- /dev/null +++ b/include/asm-parisc/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_PARISC_H | ||
2 | #define __LINUX_KVM_PARISC_H | ||
3 | |||
4 | /* parisc does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-powerpc/kvm.h b/include/asm-powerpc/kvm.h new file mode 100644 index 000000000000..d1b530fbf8dd --- /dev/null +++ b/include/asm-powerpc/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_POWERPC_H | ||
2 | #define __LINUX_KVM_POWERPC_H | ||
3 | |||
4 | /* powerpc does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-s390/kvm.h b/include/asm-s390/kvm.h new file mode 100644 index 000000000000..573f2a351386 --- /dev/null +++ b/include/asm-s390/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_S390_H | ||
2 | #define __LINUX_KVM_S390_H | ||
3 | |||
4 | /* s390 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-sh/floppy.h b/include/asm-sh/floppy.h deleted file mode 100644 index 59fbfdc90dfb..000000000000 --- a/include/asm-sh/floppy.h +++ /dev/null | |||
@@ -1,268 +0,0 @@ | |||
1 | /* | ||
2 | * Architecture specific parts of the Floppy driver | ||
3 | * include/asm-i386/floppy.h | ||
4 | * | ||
5 | * This file is subject to the terms and conditions of the GNU General Public | ||
6 | * License. See the file "COPYING" in the main directory of this archive | ||
7 | * for more details. | ||
8 | * | ||
9 | * Copyright (C) 1995 | ||
10 | */ | ||
11 | #ifndef __ASM_SH_FLOPPY_H | ||
12 | #define __ASM_SH_FLOPPY_H | ||
13 | |||
14 | #include <linux/vmalloc.h> | ||
15 | |||
16 | |||
17 | /* | ||
18 | * The DMA channel used by the floppy controller cannot access data at | ||
19 | * addresses >= 16MB | ||
20 | * | ||
21 | * Went back to the 1MB limit, as some people had problems with the floppy | ||
22 | * driver otherwise. It doesn't matter much for performance anyway, as most | ||
23 | * floppy accesses go through the track buffer. | ||
24 | */ | ||
25 | #define _CROSS_64KB(a,s,vdma) \ | ||
26 | (!vdma && ((unsigned long)(a)/K_64 != ((unsigned long)(a) + (s) - 1) / K_64)) | ||
27 | |||
28 | #define CROSS_64KB(a,s) _CROSS_64KB(a,s,use_virtual_dma & 1) | ||
29 | |||
30 | |||
31 | #define SW fd_routine[use_virtual_dma&1] | ||
32 | #define CSW fd_routine[can_use_virtual_dma & 1] | ||
33 | |||
34 | |||
35 | #define fd_inb(port) inb_p(port) | ||
36 | #define fd_outb(value,port) outb_p(value,port) | ||
37 | |||
38 | #define fd_request_dma() CSW._request_dma(FLOPPY_DMA,"floppy") | ||
39 | #define fd_free_dma() CSW._free_dma(FLOPPY_DMA) | ||
40 | #define fd_enable_irq() enable_irq(FLOPPY_IRQ) | ||
41 | #define fd_disable_irq() disable_irq(FLOPPY_IRQ) | ||
42 | #define fd_free_irq() free_irq(FLOPPY_IRQ, NULL) | ||
43 | #define fd_get_dma_residue() SW._get_dma_residue(FLOPPY_DMA) | ||
44 | #define fd_dma_mem_alloc(size) SW._dma_mem_alloc(size) | ||
45 | #define fd_dma_setup(addr, size, mode, io) SW._dma_setup(addr, size, mode, io) | ||
46 | |||
47 | #define FLOPPY_CAN_FALLBACK_ON_NODMA | ||
48 | |||
49 | static int virtual_dma_count; | ||
50 | static int virtual_dma_residue; | ||
51 | static char *virtual_dma_addr; | ||
52 | static int virtual_dma_mode; | ||
53 | static int doing_pdma; | ||
54 | |||
55 | static void floppy_hardint(int irq, void *dev_id, struct pt_regs * regs) | ||
56 | { | ||
57 | register unsigned char st; | ||
58 | |||
59 | #undef TRACE_FLPY_INT | ||
60 | |||
61 | #ifdef TRACE_FLPY_INT | ||
62 | static int calls=0; | ||
63 | static int bytes=0; | ||
64 | static int dma_wait=0; | ||
65 | #endif | ||
66 | if(!doing_pdma) { | ||
67 | floppy_interrupt(irq, dev_id, regs); | ||
68 | return; | ||
69 | } | ||
70 | |||
71 | #ifdef TRACE_FLPY_INT | ||
72 | if(!calls) | ||
73 | bytes = virtual_dma_count; | ||
74 | #endif | ||
75 | |||
76 | { | ||
77 | register int lcount; | ||
78 | register char *lptr; | ||
79 | |||
80 | st = 1; | ||
81 | for(lcount=virtual_dma_count, lptr=virtual_dma_addr; | ||
82 | lcount; lcount--, lptr++) { | ||
83 | st=inb(virtual_dma_port+4) & 0xa0 ; | ||
84 | if(st != 0xa0) | ||
85 | break; | ||
86 | if(virtual_dma_mode) | ||
87 | outb_p(*lptr, virtual_dma_port+5); | ||
88 | else | ||
89 | *lptr = inb_p(virtual_dma_port+5); | ||
90 | } | ||
91 | virtual_dma_count = lcount; | ||
92 | virtual_dma_addr = lptr; | ||
93 | st = inb(virtual_dma_port+4); | ||
94 | } | ||
95 | |||
96 | #ifdef TRACE_FLPY_INT | ||
97 | calls++; | ||
98 | #endif | ||
99 | if(st == 0x20) | ||
100 | return; | ||
101 | if(!(st & 0x20)) { | ||
102 | virtual_dma_residue += virtual_dma_count; | ||
103 | virtual_dma_count=0; | ||
104 | #ifdef TRACE_FLPY_INT | ||
105 | printk("count=%x, residue=%x calls=%d bytes=%d dma_wait=%d\n", | ||
106 | virtual_dma_count, virtual_dma_residue, calls, bytes, | ||
107 | dma_wait); | ||
108 | calls = 0; | ||
109 | dma_wait=0; | ||
110 | #endif | ||
111 | doing_pdma = 0; | ||
112 | floppy_interrupt(irq, dev_id, regs); | ||
113 | return; | ||
114 | } | ||
115 | #ifdef TRACE_FLPY_INT | ||
116 | if(!virtual_dma_count) | ||
117 | dma_wait++; | ||
118 | #endif | ||
119 | } | ||
120 | |||
121 | static void fd_disable_dma(void) | ||
122 | { | ||
123 | if(! (can_use_virtual_dma & 1)) | ||
124 | disable_dma(FLOPPY_DMA); | ||
125 | doing_pdma = 0; | ||
126 | virtual_dma_residue += virtual_dma_count; | ||
127 | virtual_dma_count=0; | ||
128 | } | ||
129 | |||
130 | static int vdma_request_dma(unsigned int dmanr, const char * device_id) | ||
131 | { | ||
132 | return 0; | ||
133 | } | ||
134 | |||
135 | static void vdma_nop(unsigned int dummy) | ||
136 | { | ||
137 | } | ||
138 | |||
139 | |||
140 | static int vdma_get_dma_residue(unsigned int dummy) | ||
141 | { | ||
142 | return virtual_dma_count + virtual_dma_residue; | ||
143 | } | ||
144 | |||
145 | |||
146 | static int fd_request_irq(void) | ||
147 | { | ||
148 | if(can_use_virtual_dma) | ||
149 | return request_irq(FLOPPY_IRQ, floppy_hardint, | ||
150 | IRQF_DISABLED, "floppy", NULL); | ||
151 | else | ||
152 | return request_irq(FLOPPY_IRQ, floppy_interrupt, | ||
153 | IRQF_DISABLED, "floppy", NULL); | ||
154 | } | ||
155 | |||
156 | static unsigned long dma_mem_alloc(unsigned long size) | ||
157 | { | ||
158 | return __get_dma_pages(GFP_KERNEL,get_order(size)); | ||
159 | } | ||
160 | |||
161 | |||
162 | static unsigned long vdma_mem_alloc(unsigned long size) | ||
163 | { | ||
164 | return (unsigned long) vmalloc(size); | ||
165 | |||
166 | } | ||
167 | |||
168 | #define nodma_mem_alloc(size) vdma_mem_alloc(size) | ||
169 | |||
170 | static void _fd_dma_mem_free(unsigned long addr, unsigned long size) | ||
171 | { | ||
172 | if((unsigned int) addr >= (unsigned int) high_memory) | ||
173 | return vfree((void *)addr); | ||
174 | else | ||
175 | free_pages(addr, get_order(size)); | ||
176 | } | ||
177 | |||
178 | #define fd_dma_mem_free(addr, size) _fd_dma_mem_free(addr, size) | ||
179 | |||
180 | static void _fd_chose_dma_mode(char *addr, unsigned long size) | ||
181 | { | ||
182 | if(can_use_virtual_dma == 2) { | ||
183 | if((unsigned int) addr >= (unsigned int) high_memory || | ||
184 | virt_to_phys(addr) >= 0x10000000) | ||
185 | use_virtual_dma = 1; | ||
186 | else | ||
187 | use_virtual_dma = 0; | ||
188 | } else { | ||
189 | use_virtual_dma = can_use_virtual_dma & 1; | ||
190 | } | ||
191 | } | ||
192 | |||
193 | #define fd_chose_dma_mode(addr, size) _fd_chose_dma_mode(addr, size) | ||
194 | |||
195 | |||
196 | static int vdma_dma_setup(char *addr, unsigned long size, int mode, int io) | ||
197 | { | ||
198 | doing_pdma = 1; | ||
199 | virtual_dma_port = io; | ||
200 | virtual_dma_mode = (mode == DMA_MODE_WRITE); | ||
201 | virtual_dma_addr = addr; | ||
202 | virtual_dma_count = size; | ||
203 | virtual_dma_residue = 0; | ||
204 | return 0; | ||
205 | } | ||
206 | |||
207 | static int hard_dma_setup(char *addr, unsigned long size, int mode, int io) | ||
208 | { | ||
209 | #ifdef FLOPPY_SANITY_CHECK | ||
210 | if (CROSS_64KB(addr, size)) { | ||
211 | printk("DMA crossing 64-K boundary %p-%p\n", addr, addr+size); | ||
212 | return -1; | ||
213 | } | ||
214 | #endif | ||
215 | |||
216 | __flush_purge_region(addr, size); | ||
217 | |||
218 | /* actual, physical DMA */ | ||
219 | doing_pdma = 0; | ||
220 | clear_dma_ff(FLOPPY_DMA); | ||
221 | set_dma_mode(FLOPPY_DMA,mode); | ||
222 | set_dma_addr(FLOPPY_DMA,virt_to_phys(addr)); | ||
223 | set_dma_count(FLOPPY_DMA,size); | ||
224 | enable_dma(FLOPPY_DMA); | ||
225 | return 0; | ||
226 | } | ||
227 | |||
228 | static struct fd_routine_l { | ||
229 | int (*_request_dma)(unsigned int dmanr, const char * device_id); | ||
230 | void (*_free_dma)(unsigned int dmanr); | ||
231 | int (*_get_dma_residue)(unsigned int dummy); | ||
232 | unsigned long (*_dma_mem_alloc) (unsigned long size); | ||
233 | int (*_dma_setup)(char *addr, unsigned long size, int mode, int io); | ||
234 | } fd_routine[] = { | ||
235 | { | ||
236 | request_dma, | ||
237 | free_dma, | ||
238 | get_dma_residue, | ||
239 | dma_mem_alloc, | ||
240 | hard_dma_setup | ||
241 | }, | ||
242 | { | ||
243 | vdma_request_dma, | ||
244 | vdma_nop, | ||
245 | vdma_get_dma_residue, | ||
246 | vdma_mem_alloc, | ||
247 | vdma_dma_setup | ||
248 | } | ||
249 | }; | ||
250 | |||
251 | |||
252 | static int FDC1 = 0x3f0; | ||
253 | static int FDC2 = -1; | ||
254 | |||
255 | /* | ||
256 | * Floppy types are stored in the rtc's CMOS RAM and so rtc_lock | ||
257 | * is needed to prevent corrupted CMOS RAM in case "insmod floppy" | ||
258 | * coincides with another rtc CMOS user. Paul G. | ||
259 | */ | ||
260 | #define FLOPPY0_TYPE (4) | ||
261 | #define FLOPPY1_TYPE (0) | ||
262 | |||
263 | #define N_FDC 2 | ||
264 | #define N_DRIVE 8 | ||
265 | |||
266 | #define EXTRA_FLOPPY_PARAMS | ||
267 | |||
268 | #endif /* __ASM_SH_FLOPPY_H */ | ||
diff --git a/include/asm-sh/fpu.h b/include/asm-sh/fpu.h index f8429880a270..91462fea1507 100644 --- a/include/asm-sh/fpu.h +++ b/include/asm-sh/fpu.h | |||
@@ -1,9 +1,8 @@ | |||
1 | #ifndef __ASM_SH_FPU_H | 1 | #ifndef __ASM_SH_FPU_H |
2 | #define __ASM_SH_FPU_H | 2 | #define __ASM_SH_FPU_H |
3 | 3 | ||
4 | #define SR_FD 0x00008000 | ||
5 | |||
6 | #ifndef __ASSEMBLY__ | 4 | #ifndef __ASSEMBLY__ |
5 | #include <linux/preempt.h> | ||
7 | #include <asm/ptrace.h> | 6 | #include <asm/ptrace.h> |
8 | 7 | ||
9 | #ifdef CONFIG_SH_FPU | 8 | #ifdef CONFIG_SH_FPU |
@@ -21,25 +20,35 @@ struct task_struct; | |||
21 | 20 | ||
22 | extern void save_fpu(struct task_struct *__tsk, struct pt_regs *regs); | 21 | extern void save_fpu(struct task_struct *__tsk, struct pt_regs *regs); |
23 | #else | 22 | #else |
23 | |||
24 | #define release_fpu(regs) do { } while (0) | 24 | #define release_fpu(regs) do { } while (0) |
25 | #define grab_fpu(regs) do { } while (0) | 25 | #define grab_fpu(regs) do { } while (0) |
26 | #define save_fpu(tsk, regs) do { } while (0) | 26 | |
27 | static inline void save_fpu(struct task_struct *tsk, struct pt_regs *regs) | ||
28 | { | ||
29 | clear_tsk_thread_flag(tsk, TIF_USEDFPU); | ||
30 | } | ||
27 | #endif | 31 | #endif |
28 | 32 | ||
29 | extern int do_fpu_inst(unsigned short, struct pt_regs *); | 33 | extern int do_fpu_inst(unsigned short, struct pt_regs *); |
30 | 34 | ||
31 | #define unlazy_fpu(tsk, regs) do { \ | 35 | static inline void unlazy_fpu(struct task_struct *tsk, struct pt_regs *regs) |
32 | if (test_tsk_thread_flag(tsk, TIF_USEDFPU)) { \ | 36 | { |
33 | save_fpu(tsk, regs); \ | 37 | preempt_disable(); |
34 | } \ | 38 | if (test_tsk_thread_flag(tsk, TIF_USEDFPU)) |
35 | } while (0) | 39 | save_fpu(tsk, regs); |
36 | 40 | preempt_enable(); | |
37 | #define clear_fpu(tsk, regs) do { \ | 41 | } |
38 | if (test_tsk_thread_flag(tsk, TIF_USEDFPU)) { \ | 42 | |
39 | clear_tsk_thread_flag(tsk, TIF_USEDFPU); \ | 43 | static inline void clear_fpu(struct task_struct *tsk, struct pt_regs *regs) |
40 | release_fpu(regs); \ | 44 | { |
41 | } \ | 45 | preempt_disable(); |
42 | } while (0) | 46 | if (test_tsk_thread_flag(tsk, TIF_USEDFPU)) { |
47 | clear_tsk_thread_flag(tsk, TIF_USEDFPU); | ||
48 | release_fpu(regs); | ||
49 | } | ||
50 | preempt_enable(); | ||
51 | } | ||
43 | 52 | ||
44 | #endif /* __ASSEMBLY__ */ | 53 | #endif /* __ASSEMBLY__ */ |
45 | 54 | ||
diff --git a/include/asm-sh/kvm.h b/include/asm-sh/kvm.h new file mode 100644 index 000000000000..6af51dbab2d0 --- /dev/null +++ b/include/asm-sh/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_SH_H | ||
2 | #define __LINUX_KVM_SH_H | ||
3 | |||
4 | /* sh does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-sh/processor.h b/include/asm-sh/processor.h index 19fe47c1ca17..ec707b98e5b9 100644 --- a/include/asm-sh/processor.h +++ b/include/asm-sh/processor.h | |||
@@ -2,7 +2,6 @@ | |||
2 | #define __ASM_SH_PROCESSOR_H | 2 | #define __ASM_SH_PROCESSOR_H |
3 | 3 | ||
4 | #include <asm/cpu-features.h> | 4 | #include <asm/cpu-features.h> |
5 | #include <asm/fpu.h> | ||
6 | 5 | ||
7 | #ifndef __ASSEMBLY__ | 6 | #ifndef __ASSEMBLY__ |
8 | /* | 7 | /* |
diff --git a/include/asm-sh/processor_32.h b/include/asm-sh/processor_32.h index df2d5b039ef4..c09305d6a9d9 100644 --- a/include/asm-sh/processor_32.h +++ b/include/asm-sh/processor_32.h | |||
@@ -70,6 +70,7 @@ extern struct sh_cpuinfo cpu_data[]; | |||
70 | */ | 70 | */ |
71 | #define SR_DSP 0x00001000 | 71 | #define SR_DSP 0x00001000 |
72 | #define SR_IMASK 0x000000f0 | 72 | #define SR_IMASK 0x000000f0 |
73 | #define SR_FD 0x00008000 | ||
73 | 74 | ||
74 | /* | 75 | /* |
75 | * FPU structure and data | 76 | * FPU structure and data |
diff --git a/include/asm-sh/processor_64.h b/include/asm-sh/processor_64.h index eda4bef448e9..88a2edf8fa5d 100644 --- a/include/asm-sh/processor_64.h +++ b/include/asm-sh/processor_64.h | |||
@@ -112,6 +112,7 @@ extern struct sh_cpuinfo cpu_data[]; | |||
112 | #endif | 112 | #endif |
113 | 113 | ||
114 | #define SR_IMASK 0x000000f0 | 114 | #define SR_IMASK 0x000000f0 |
115 | #define SR_FD 0x00008000 | ||
115 | #define SR_SSTEP 0x08000000 | 116 | #define SR_SSTEP 0x08000000 |
116 | 117 | ||
117 | #ifndef __ASSEMBLY__ | 118 | #ifndef __ASSEMBLY__ |
diff --git a/include/asm-sparc/kvm.h b/include/asm-sparc/kvm.h new file mode 100644 index 000000000000..2e5478da3819 --- /dev/null +++ b/include/asm-sparc/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_SPARC_H | ||
2 | #define __LINUX_KVM_SPARC_H | ||
3 | |||
4 | /* sparc does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-sparc64/kvm.h b/include/asm-sparc64/kvm.h new file mode 100644 index 000000000000..380537a77bf9 --- /dev/null +++ b/include/asm-sparc64/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_SPARC64_H | ||
2 | #define __LINUX_KVM_SPARC64_H | ||
3 | |||
4 | /* sparc64 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-um/kvm.h b/include/asm-um/kvm.h new file mode 100644 index 000000000000..66aa77094551 --- /dev/null +++ b/include/asm-um/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_UM_H | ||
2 | #define __LINUX_KVM_UM_H | ||
3 | |||
4 | /* um does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-v850/kvm.h b/include/asm-v850/kvm.h new file mode 100644 index 000000000000..3f729b79febc --- /dev/null +++ b/include/asm-v850/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_V850_H | ||
2 | #define __LINUX_KVM_V850_H | ||
3 | |||
4 | /* v850 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-x86/irqflags.h b/include/asm-x86/irqflags.h index 92021c1ffa3a..0e2292483b35 100644 --- a/include/asm-x86/irqflags.h +++ b/include/asm-x86/irqflags.h | |||
@@ -70,6 +70,26 @@ static inline void raw_local_irq_restore(unsigned long flags) | |||
70 | native_restore_fl(flags); | 70 | native_restore_fl(flags); |
71 | } | 71 | } |
72 | 72 | ||
73 | #ifdef CONFIG_X86_VSMP | ||
74 | |||
75 | /* | ||
76 | * Interrupt control for the VSMP architecture: | ||
77 | */ | ||
78 | |||
79 | static inline void raw_local_irq_disable(void) | ||
80 | { | ||
81 | unsigned long flags = __raw_local_save_flags(); | ||
82 | raw_local_irq_restore((flags & ~X86_EFLAGS_IF) | X86_EFLAGS_AC); | ||
83 | } | ||
84 | |||
85 | static inline void raw_local_irq_enable(void) | ||
86 | { | ||
87 | unsigned long flags = __raw_local_save_flags(); | ||
88 | raw_local_irq_restore((flags | X86_EFLAGS_IF) & (~X86_EFLAGS_AC)); | ||
89 | } | ||
90 | |||
91 | #else | ||
92 | |||
73 | static inline void raw_local_irq_disable(void) | 93 | static inline void raw_local_irq_disable(void) |
74 | { | 94 | { |
75 | native_irq_disable(); | 95 | native_irq_disable(); |
@@ -80,6 +100,8 @@ static inline void raw_local_irq_enable(void) | |||
80 | native_irq_enable(); | 100 | native_irq_enable(); |
81 | } | 101 | } |
82 | 102 | ||
103 | #endif | ||
104 | |||
83 | /* | 105 | /* |
84 | * Used in the idle loop; sti takes one instruction cycle | 106 | * Used in the idle loop; sti takes one instruction cycle |
85 | * to complete: | 107 | * to complete: |
@@ -137,10 +159,17 @@ static inline unsigned long __raw_local_irq_save(void) | |||
137 | #define raw_local_irq_save(flags) \ | 159 | #define raw_local_irq_save(flags) \ |
138 | do { (flags) = __raw_local_irq_save(); } while (0) | 160 | do { (flags) = __raw_local_irq_save(); } while (0) |
139 | 161 | ||
162 | #ifdef CONFIG_X86_VSMP | ||
163 | static inline int raw_irqs_disabled_flags(unsigned long flags) | ||
164 | { | ||
165 | return !(flags & X86_EFLAGS_IF) || (flags & X86_EFLAGS_AC); | ||
166 | } | ||
167 | #else | ||
140 | static inline int raw_irqs_disabled_flags(unsigned long flags) | 168 | static inline int raw_irqs_disabled_flags(unsigned long flags) |
141 | { | 169 | { |
142 | return !(flags & X86_EFLAGS_IF); | 170 | return !(flags & X86_EFLAGS_IF); |
143 | } | 171 | } |
172 | #endif | ||
144 | 173 | ||
145 | static inline int raw_irqs_disabled(void) | 174 | static inline int raw_irqs_disabled(void) |
146 | { | 175 | { |
diff --git a/include/asm-xtensa/kvm.h b/include/asm-xtensa/kvm.h new file mode 100644 index 000000000000..bda4e331e98c --- /dev/null +++ b/include/asm-xtensa/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_XTENSA_H | ||
2 | #define __LINUX_KVM_XTENSA_H | ||
3 | |||
4 | /* xtensa does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/linux/Kbuild b/include/linux/Kbuild index 4a446a19295e..9cdd12a9e843 100644 --- a/include/linux/Kbuild +++ b/include/linux/Kbuild | |||
@@ -253,7 +253,7 @@ unifdef-y += kd.h | |||
253 | unifdef-y += kernelcapi.h | 253 | unifdef-y += kernelcapi.h |
254 | unifdef-y += kernel.h | 254 | unifdef-y += kernel.h |
255 | unifdef-y += keyboard.h | 255 | unifdef-y += keyboard.h |
256 | unifdef-$(CONFIG_HAVE_KVM) += kvm.h | 256 | unifdef-y += kvm.h |
257 | unifdef-y += llc.h | 257 | unifdef-y += llc.h |
258 | unifdef-y += loop.h | 258 | unifdef-y += loop.h |
259 | unifdef-y += lp.h | 259 | unifdef-y += lp.h |
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 028ba3b523b1..a6a6035a4e1e 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
@@ -256,6 +256,7 @@ struct cgroup_subsys { | |||
256 | void (*bind)(struct cgroup_subsys *ss, struct cgroup *root); | 256 | void (*bind)(struct cgroup_subsys *ss, struct cgroup *root); |
257 | int subsys_id; | 257 | int subsys_id; |
258 | int active; | 258 | int active; |
259 | int disabled; | ||
259 | int early_init; | 260 | int early_init; |
260 | #define MAX_CGROUP_TYPE_NAMELEN 32 | 261 | #define MAX_CGROUP_TYPE_NAMELEN 32 |
261 | const char *name; | 262 | const char *name; |
diff --git a/include/linux/hpet.h b/include/linux/hpet.h index 9cd94bfd07e5..2dc29ce6c8e4 100644 --- a/include/linux/hpet.h +++ b/include/linux/hpet.h | |||
@@ -64,7 +64,7 @@ struct hpet { | |||
64 | */ | 64 | */ |
65 | 65 | ||
66 | #define Tn_INT_ROUTE_CAP_MASK (0xffffffff00000000ULL) | 66 | #define Tn_INT_ROUTE_CAP_MASK (0xffffffff00000000ULL) |
67 | #define Tn_INT_ROUTE_CAP_SHIFT (32UL) | 67 | #define Tn_INI_ROUTE_CAP_SHIFT (32UL) |
68 | #define Tn_FSB_INT_DELCAP_MASK (0x8000UL) | 68 | #define Tn_FSB_INT_DELCAP_MASK (0x8000UL) |
69 | #define Tn_FSB_INT_DELCAP_SHIFT (15) | 69 | #define Tn_FSB_INT_DELCAP_SHIFT (15) |
70 | #define Tn_FSB_EN_CNF_MASK (0x4000UL) | 70 | #define Tn_FSB_EN_CNF_MASK (0x4000UL) |
diff --git a/include/linux/input.h b/include/linux/input.h index 1bdc39a8c76c..cae2c35d1206 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
@@ -1227,12 +1227,13 @@ void input_free_device(struct input_dev *dev); | |||
1227 | 1227 | ||
1228 | static inline struct input_dev *input_get_device(struct input_dev *dev) | 1228 | static inline struct input_dev *input_get_device(struct input_dev *dev) |
1229 | { | 1229 | { |
1230 | return to_input_dev(get_device(&dev->dev)); | 1230 | return dev ? to_input_dev(get_device(&dev->dev)) : NULL; |
1231 | } | 1231 | } |
1232 | 1232 | ||
1233 | static inline void input_put_device(struct input_dev *dev) | 1233 | static inline void input_put_device(struct input_dev *dev) |
1234 | { | 1234 | { |
1235 | put_device(&dev->dev); | 1235 | if (dev) |
1236 | put_device(&dev->dev); | ||
1236 | } | 1237 | } |
1237 | 1238 | ||
1238 | static inline void *input_get_drvdata(struct input_dev *dev) | 1239 | static inline void *input_get_drvdata(struct input_dev *dev) |
diff --git a/include/linux/iocontext.h b/include/linux/iocontext.h index 1b4ccf25b4d2..cac4b364cd40 100644 --- a/include/linux/iocontext.h +++ b/include/linux/iocontext.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define IOCONTEXT_H | 2 | #define IOCONTEXT_H |
3 | 3 | ||
4 | #include <linux/radix-tree.h> | 4 | #include <linux/radix-tree.h> |
5 | #include <linux/rcupdate.h> | ||
5 | 6 | ||
6 | /* | 7 | /* |
7 | * This is the per-process anticipatory I/O scheduler state. | 8 | * This is the per-process anticipatory I/O scheduler state. |
@@ -54,6 +55,8 @@ struct cfq_io_context { | |||
54 | 55 | ||
55 | void (*dtor)(struct io_context *); /* destructor */ | 56 | void (*dtor)(struct io_context *); /* destructor */ |
56 | void (*exit)(struct io_context *); /* called on task exit */ | 57 | void (*exit)(struct io_context *); /* called on task exit */ |
58 | |||
59 | struct rcu_head rcu_head; | ||
57 | }; | 60 | }; |
58 | 61 | ||
59 | /* | 62 | /* |
diff --git a/include/linux/libata.h b/include/linux/libata.h index b064bfeb69ee..37ee881c42ac 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -350,7 +350,8 @@ enum { | |||
350 | ATAPI_READ = 0, /* READs */ | 350 | ATAPI_READ = 0, /* READs */ |
351 | ATAPI_WRITE = 1, /* WRITEs */ | 351 | ATAPI_WRITE = 1, /* WRITEs */ |
352 | ATAPI_READ_CD = 2, /* READ CD [MSF] */ | 352 | ATAPI_READ_CD = 2, /* READ CD [MSF] */ |
353 | ATAPI_MISC = 3, /* the rest */ | 353 | ATAPI_PASS_THRU = 3, /* SAT pass-thru */ |
354 | ATAPI_MISC = 4, /* the rest */ | ||
354 | }; | 355 | }; |
355 | 356 | ||
356 | enum ata_xfer_mask { | 357 | enum ata_xfer_mask { |
@@ -849,6 +850,7 @@ extern unsigned int ata_dev_try_classify(struct ata_device *dev, int present, | |||
849 | */ | 850 | */ |
850 | extern void ata_tf_load(struct ata_port *ap, const struct ata_taskfile *tf); | 851 | extern void ata_tf_load(struct ata_port *ap, const struct ata_taskfile *tf); |
851 | extern void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf); | 852 | extern void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf); |
853 | extern int atapi_cmd_type(u8 opcode); | ||
852 | extern void ata_tf_to_fis(const struct ata_taskfile *tf, | 854 | extern void ata_tf_to_fis(const struct ata_taskfile *tf, |
853 | u8 pmp, int is_cmd, u8 *fis); | 855 | u8 pmp, int is_cmd, u8 *fis); |
854 | extern void ata_tf_from_fis(const u8 *fis, struct ata_taskfile *tf); | 856 | extern void ata_tf_from_fis(const u8 *fis, struct ata_taskfile *tf); |
@@ -1379,27 +1381,6 @@ static inline int ata_try_flush_cache(const struct ata_device *dev) | |||
1379 | ata_id_has_flush_ext(dev->id); | 1381 | ata_id_has_flush_ext(dev->id); |
1380 | } | 1382 | } |
1381 | 1383 | ||
1382 | static inline int atapi_cmd_type(u8 opcode) | ||
1383 | { | ||
1384 | switch (opcode) { | ||
1385 | case GPCMD_READ_10: | ||
1386 | case GPCMD_READ_12: | ||
1387 | return ATAPI_READ; | ||
1388 | |||
1389 | case GPCMD_WRITE_10: | ||
1390 | case GPCMD_WRITE_12: | ||
1391 | case GPCMD_WRITE_AND_VERIFY_10: | ||
1392 | return ATAPI_WRITE; | ||
1393 | |||
1394 | case GPCMD_READ_CD: | ||
1395 | case GPCMD_READ_CD_MSF: | ||
1396 | return ATAPI_READ_CD; | ||
1397 | |||
1398 | default: | ||
1399 | return ATAPI_MISC; | ||
1400 | } | ||
1401 | } | ||
1402 | |||
1403 | static inline unsigned int ac_err_mask(u8 status) | 1384 | static inline unsigned int ac_err_mask(u8 status) |
1404 | { | 1385 | { |
1405 | if (status & (ATA_BUSY | ATA_DRQ)) | 1386 | if (status & (ATA_BUSY | ATA_DRQ)) |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index a2f003239c85..ee81906b5164 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -383,9 +383,11 @@ static inline void __napi_complete(struct napi_struct *n) | |||
383 | 383 | ||
384 | static inline void napi_complete(struct napi_struct *n) | 384 | static inline void napi_complete(struct napi_struct *n) |
385 | { | 385 | { |
386 | local_irq_disable(); | 386 | unsigned long flags; |
387 | |||
388 | local_irq_save(flags); | ||
387 | __napi_complete(n); | 389 | __napi_complete(n); |
388 | local_irq_enable(); | 390 | local_irq_restore(flags); |
389 | } | 391 | } |
390 | 392 | ||
391 | /** | 393 | /** |
@@ -1072,12 +1074,14 @@ static inline int netif_is_multiqueue(const struct net_device *dev) | |||
1072 | } | 1074 | } |
1073 | 1075 | ||
1074 | /* Use this variant when it is known for sure that it | 1076 | /* Use this variant when it is known for sure that it |
1075 | * is executing from interrupt context. | 1077 | * is executing from hardware interrupt context or with hardware interrupts |
1078 | * disabled. | ||
1076 | */ | 1079 | */ |
1077 | extern void dev_kfree_skb_irq(struct sk_buff *skb); | 1080 | extern void dev_kfree_skb_irq(struct sk_buff *skb); |
1078 | 1081 | ||
1079 | /* Use this variant in places where it could be invoked | 1082 | /* Use this variant in places where it could be invoked |
1080 | * either from interrupt or non-interrupt context. | 1083 | * from either hardware interrupt or other context, with hardware interrupts |
1084 | * either disabled or enabled. | ||
1081 | */ | 1085 | */ |
1082 | extern void dev_kfree_skb_any(struct sk_buff *skb); | 1086 | extern void dev_kfree_skb_any(struct sk_buff *skb); |
1083 | 1087 | ||
diff --git a/include/net/llc.h b/include/net/llc.h index f5024583fc8b..7940da1606e7 100644 --- a/include/net/llc.h +++ b/include/net/llc.h | |||
@@ -65,7 +65,6 @@ struct llc_sap { | |||
65 | 65 | ||
66 | extern struct list_head llc_sap_list; | 66 | extern struct list_head llc_sap_list; |
67 | extern rwlock_t llc_sap_list_lock; | 67 | extern rwlock_t llc_sap_list_lock; |
68 | extern unsigned char llc_station_mac_sa[ETH_ALEN]; | ||
69 | 68 | ||
70 | extern int llc_rcv(struct sk_buff *skb, struct net_device *dev, | 69 | extern int llc_rcv(struct sk_buff *skb, struct net_device *dev, |
71 | struct packet_type *pt, struct net_device *orig_dev); | 70 | struct packet_type *pt, struct net_device *orig_dev); |
diff --git a/include/net/llc_pdu.h b/include/net/llc_pdu.h index 4a8f58b17e43..75b8e2968c9b 100644 --- a/include/net/llc_pdu.h +++ b/include/net/llc_pdu.h | |||
@@ -381,7 +381,7 @@ static inline void llc_pdu_init_as_xid_cmd(struct sk_buff *skb, | |||
381 | xid_info->fmt_id = LLC_XID_FMT_ID; /* 0x81 */ | 381 | xid_info->fmt_id = LLC_XID_FMT_ID; /* 0x81 */ |
382 | xid_info->type = svcs_supported; | 382 | xid_info->type = svcs_supported; |
383 | xid_info->rw = rx_window << 1; /* size of receive window */ | 383 | xid_info->rw = rx_window << 1; /* size of receive window */ |
384 | skb_put(skb, 3); | 384 | skb_put(skb, sizeof(struct llc_xid_info)); |
385 | } | 385 | } |
386 | 386 | ||
387 | /** | 387 | /** |
@@ -406,7 +406,7 @@ static inline void llc_pdu_init_as_xid_rsp(struct sk_buff *skb, | |||
406 | xid_info->fmt_id = LLC_XID_FMT_ID; | 406 | xid_info->fmt_id = LLC_XID_FMT_ID; |
407 | xid_info->type = svcs_supported; | 407 | xid_info->type = svcs_supported; |
408 | xid_info->rw = rx_window << 1; | 408 | xid_info->rw = rx_window << 1; |
409 | skb_put(skb, 3); | 409 | skb_put(skb, sizeof(struct llc_xid_info)); |
410 | } | 410 | } |
411 | 411 | ||
412 | /* LLC Type 2 FRMR response information field format */ | 412 | /* LLC Type 2 FRMR response information field format */ |
diff --git a/include/net/llc_sap.h b/include/net/llc_sap.h index 2c56dbece729..ed25bec2f648 100644 --- a/include/net/llc_sap.h +++ b/include/net/llc_sap.h | |||
@@ -1,5 +1,8 @@ | |||
1 | #ifndef LLC_SAP_H | 1 | #ifndef LLC_SAP_H |
2 | #define LLC_SAP_H | 2 | #define LLC_SAP_H |
3 | |||
4 | #include <asm/types.h> | ||
5 | |||
3 | /* | 6 | /* |
4 | * Copyright (c) 1997 by Procom Technology,Inc. | 7 | * Copyright (c) 1997 by Procom Technology,Inc. |
5 | * 2001-2003 by Arnaldo Carvalho de Melo <acme@conectiva.com.br> | 8 | * 2001-2003 by Arnaldo Carvalho de Melo <acme@conectiva.com.br> |
@@ -19,8 +22,8 @@ struct sock; | |||
19 | extern void llc_sap_rtn_pdu(struct llc_sap *sap, struct sk_buff *skb); | 22 | extern void llc_sap_rtn_pdu(struct llc_sap *sap, struct sk_buff *skb); |
20 | extern void llc_save_primitive(struct sock *sk, struct sk_buff* skb, | 23 | extern void llc_save_primitive(struct sock *sk, struct sk_buff* skb, |
21 | unsigned char prim); | 24 | unsigned char prim); |
22 | extern struct sk_buff *llc_alloc_frame(struct sock *sk, | 25 | extern struct sk_buff *llc_alloc_frame(struct sock *sk, struct net_device *dev, |
23 | struct net_device *dev); | 26 | u8 type, u32 data_size); |
24 | 27 | ||
25 | extern void llc_build_and_send_test_pkt(struct llc_sap *sap, | 28 | extern void llc_build_and_send_test_pkt(struct llc_sap *sap, |
26 | struct sk_buff *skb, | 29 | struct sk_buff *skb, |