Gentoo Archives: gentoo-commits

From: "Mike Pagano (mpagano)" <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] linux-patches r1837 - genpatches-2.6/trunk/2.6.37
Date: Wed, 01 Dec 2010 17:11:56
Message-Id: 20101201171145.24B3F20054@flycatcher.gentoo.org
1 Author: mpagano
2 Date: 2010-12-01 17:11:44 +0000 (Wed, 01 Dec 2010)
3 New Revision: 1837
4
5 Removed:
6 genpatches-2.6/trunk/2.6.37/1000_linux-2.6.36.1.patch
7 genpatches-2.6/trunk/2.6.37/2700_disable-sticky-PCM-stream-assignment-for-AD-codecs.patch
8 genpatches-2.6/trunk/2.6.37/2800_ttm-bo-init-retry-after-failure.patch
9 Modified:
10 genpatches-2.6/trunk/2.6.37/0000_README
11 Log:
12 Prepare 2.6.37 genpatches
13
14 Modified: genpatches-2.6/trunk/2.6.37/0000_README
15 ===================================================================
16 --- genpatches-2.6/trunk/2.6.37/0000_README 2010-12-01 17:08:49 UTC (rev 1836)
17 +++ genpatches-2.6/trunk/2.6.37/0000_README 2010-12-01 17:11:44 UTC (rev 1837)
18 @@ -39,18 +39,6 @@
19 Individual Patch Descriptions:
20 --------------------------------------------------------------------------
21
22 -Patch: 1000_linux-2.6.36.1.patch
23 -From: http://www.kernel.org
24 -Desc: Linux 2.6.36.1
25 -
26 -Patch: 2700_disable-sticky-PCM-stream-assignment-for-AD-codecs.patch
27 -From: http://bugs.gentoo.org/show_bug.cgi?id=344153
28 -Desc: AD codec fix for PCM stream assignments
29 -
30 -Patch: 2800_ttm-bo-init-retry-after-failure.patch
31 -From: http://tinyurl.com/39fzx9t
32 -Desc: radeon: Fix retrying ttm_bo_init() after it failed once
33 -
34 Patch: 2900_xconfig-with-qt4.patch
35 From: http://bugs.gentoo.org/show_bug.cgi?id=342007
36 Desc: xconfig patch for qt4 - thanks to alexander stein
37
38 Deleted: genpatches-2.6/trunk/2.6.37/1000_linux-2.6.36.1.patch
39 ===================================================================
40 --- genpatches-2.6/trunk/2.6.37/1000_linux-2.6.36.1.patch 2010-12-01 17:08:49 UTC (rev 1836)
41 +++ genpatches-2.6/trunk/2.6.37/1000_linux-2.6.36.1.patch 2010-12-01 17:11:44 UTC (rev 1837)
42 @@ -1,1788 +0,0 @@
43 -diff --git a/arch/arm/include/asm/kgdb.h b/arch/arm/include/asm/kgdb.h
44 -index 0826599..48066ce 100644
45 ---- a/arch/arm/include/asm/kgdb.h
46 -+++ b/arch/arm/include/asm/kgdb.h
47 -@@ -70,7 +70,8 @@ extern int kgdb_fault_expected;
48 - #define _GP_REGS 16
49 - #define _FP_REGS 8
50 - #define _EXTRA_REGS 2
51 --#define DBG_MAX_REG_NUM (_GP_REGS + (_FP_REGS * 3) + _EXTRA_REGS)
52 -+#define GDB_MAX_REGS (_GP_REGS + (_FP_REGS * 3) + _EXTRA_REGS)
53 -+#define DBG_MAX_REG_NUM (_GP_REGS + _FP_REGS + _EXTRA_REGS)
54 -
55 - #define KGDB_MAX_NO_CPUS 1
56 - #define BUFMAX 400
57 -@@ -93,7 +94,7 @@ extern int kgdb_fault_expected;
58 - #define _SPT 13
59 - #define _LR 14
60 - #define _PC 15
61 --#define _CPSR (DBG_MAX_REG_NUM - 1)
62 -+#define _CPSR (GDB_MAX_REGS - 1)
63 -
64 - /*
65 - * So that we can denote the end of a frame for tracing,
66 -diff --git a/arch/arm/kernel/kgdb.c b/arch/arm/kernel/kgdb.c
67 -index d6e8b4d..778c2f7 100644
68 ---- a/arch/arm/kernel/kgdb.c
69 -+++ b/arch/arm/kernel/kgdb.c
70 -@@ -79,7 +79,7 @@ sleeping_thread_to_gdb_regs(unsigned long *gdb_regs, struct task_struct *task)
71 - return;
72 -
73 - /* Initialize to zero */
74 -- for (regno = 0; regno < DBG_MAX_REG_NUM; regno++)
75 -+ for (regno = 0; regno < GDB_MAX_REGS; regno++)
76 - gdb_regs[regno] = 0;
77 -
78 - /* Otherwise, we have only some registers from switch_to() */
79 -diff --git a/arch/arm/mach-cns3xxx/include/mach/debug-macro.S b/arch/arm/mach-cns3xxx/include/mach/debug-macro.S
80 -index d16ce7e..9b50442 100644
81 ---- a/arch/arm/mach-cns3xxx/include/mach/debug-macro.S
82 -+++ b/arch/arm/mach-cns3xxx/include/mach/debug-macro.S
83 -@@ -10,7 +10,7 @@
84 - * published by the Free Software Foundation.
85 - */
86 -
87 -- .macro addruart,rx
88 -+ .macro addruart,rx,rtmp
89 - mrc p15, 0, \rx, c1, c0
90 - tst \rx, #1 @ MMU enabled?
91 - moveq \rx, #0x10000000
92 -diff --git a/arch/powerpc/kernel/ppc970-pmu.c b/arch/powerpc/kernel/ppc970-pmu.c
93 -index 8eff48e..3fee685 100644
94 ---- a/arch/powerpc/kernel/ppc970-pmu.c
95 -+++ b/arch/powerpc/kernel/ppc970-pmu.c
96 -@@ -169,9 +169,11 @@ static int p970_marked_instr_event(u64 event)
97 - switch (unit) {
98 - case PM_VPU:
99 - mask = 0x4c; /* byte 0 bits 2,3,6 */
100 -+ break;
101 - case PM_LSU0:
102 - /* byte 2 bits 0,2,3,4,6; all of byte 1 */
103 - mask = 0x085dff00;
104 -+ break;
105 - case PM_LSU1L:
106 - mask = 0x50 << 24; /* byte 3 bits 4,6 */
107 - break;
108 -diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
109 -index 3f76523..f857bd3 100644
110 ---- a/arch/x86/include/asm/cpufeature.h
111 -+++ b/arch/x86/include/asm/cpufeature.h
112 -@@ -152,7 +152,7 @@
113 - #define X86_FEATURE_3DNOWPREFETCH (6*32+ 8) /* 3DNow prefetch instructions */
114 - #define X86_FEATURE_OSVW (6*32+ 9) /* OS Visible Workaround */
115 - #define X86_FEATURE_IBS (6*32+10) /* Instruction Based Sampling */
116 --#define X86_FEATURE_SSE5 (6*32+11) /* SSE-5 */
117 -+#define X86_FEATURE_XOP (6*32+11) /* extended AVX instructions */
118 - #define X86_FEATURE_SKINIT (6*32+12) /* SKINIT/STGI instructions */
119 - #define X86_FEATURE_WDT (6*32+13) /* Watchdog timer */
120 - #define X86_FEATURE_NODEID_MSR (6*32+19) /* NodeId MSR */
121 -diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
122 -index 30a3e97..6a45ec4 100644
123 ---- a/arch/x86/include/asm/io.h
124 -+++ b/arch/x86/include/asm/io.h
125 -@@ -206,6 +206,7 @@ static inline void __iomem *ioremap(resource_size_t offset, unsigned long size)
126 -
127 - extern void iounmap(volatile void __iomem *addr);
128 -
129 -+extern void set_iounmap_nonlazy(void);
130 -
131 - #ifdef __KERNEL__
132 -
133 -diff --git a/arch/x86/include/asm/mrst.h b/arch/x86/include/asm/mrst.h
134 -index 1635074..33fc296 100644
135 ---- a/arch/x86/include/asm/mrst.h
136 -+++ b/arch/x86/include/asm/mrst.h
137 -@@ -26,7 +26,7 @@ enum mrst_cpu_type {
138 - };
139 -
140 - extern enum mrst_cpu_type __mrst_cpu_chip;
141 --static enum mrst_cpu_type mrst_identify_cpu(void)
142 -+static inline enum mrst_cpu_type mrst_identify_cpu(void)
143 - {
144 - return __mrst_cpu_chip;
145 - }
146 -diff --git a/arch/x86/include/asm/smp.h b/arch/x86/include/asm/smp.h
147 -index 4cfc908..4c2f63c 100644
148 ---- a/arch/x86/include/asm/smp.h
149 -+++ b/arch/x86/include/asm/smp.h
150 -@@ -50,7 +50,7 @@ struct smp_ops {
151 - void (*smp_prepare_cpus)(unsigned max_cpus);
152 - void (*smp_cpus_done)(unsigned max_cpus);
153 -
154 -- void (*smp_send_stop)(void);
155 -+ void (*stop_other_cpus)(int wait);
156 - void (*smp_send_reschedule)(int cpu);
157 -
158 - int (*cpu_up)(unsigned cpu);
159 -@@ -73,7 +73,12 @@ extern struct smp_ops smp_ops;
160 -
161 - static inline void smp_send_stop(void)
162 - {
163 -- smp_ops.smp_send_stop();
164 -+ smp_ops.stop_other_cpus(0);
165 -+}
166 -+
167 -+static inline void stop_other_cpus(void)
168 -+{
169 -+ smp_ops.stop_other_cpus(1);
170 - }
171 -
172 - static inline void smp_prepare_boot_cpu(void)
173 -diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
174 -index 5c5b8f3..ad1515d 100644
175 ---- a/arch/x86/kernel/apic/io_apic.c
176 -+++ b/arch/x86/kernel/apic/io_apic.c
177 -@@ -1397,6 +1397,7 @@ int setup_ioapic_entry(int apic_id, int irq,
178 - irte.dlvry_mode = apic->irq_delivery_mode;
179 - irte.vector = vector;
180 - irte.dest_id = IRTE_DEST(destination);
181 -+ irte.redir_hint = 1;
182 -
183 - /* Set source-id of interrupt request */
184 - set_ioapic_sid(&irte, apic_id);
185 -@@ -3348,6 +3349,7 @@ static int msi_compose_msg(struct pci_dev *pdev, unsigned int irq,
186 - irte.dlvry_mode = apic->irq_delivery_mode;
187 - irte.vector = cfg->vector;
188 - irte.dest_id = IRTE_DEST(dest);
189 -+ irte.redir_hint = 1;
190 -
191 - /* Set source-id of interrupt request */
192 - if (pdev)
193 -diff --git a/arch/x86/kernel/cpu/mtrr/cleanup.c b/arch/x86/kernel/cpu/mtrr/cleanup.c
194 -index c5f59d0..ac140c7 100644
195 ---- a/arch/x86/kernel/cpu/mtrr/cleanup.c
196 -+++ b/arch/x86/kernel/cpu/mtrr/cleanup.c
197 -@@ -827,7 +827,7 @@ int __init amd_special_default_mtrr(void)
198 -
199 - if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD)
200 - return 0;
201 -- if (boot_cpu_data.x86 < 0xf || boot_cpu_data.x86 > 0x11)
202 -+ if (boot_cpu_data.x86 < 0xf)
203 - return 0;
204 - /* In case some hypervisor doesn't pass SYSCFG through: */
205 - if (rdmsr_safe(MSR_K8_SYSCFG, &l, &h) < 0)
206 -diff --git a/arch/x86/kernel/cpu/perf_event_amd.c b/arch/x86/kernel/cpu/perf_event_amd.c
207 -index c2897b7..46d5844 100644
208 ---- a/arch/x86/kernel/cpu/perf_event_amd.c
209 -+++ b/arch/x86/kernel/cpu/perf_event_amd.c
210 -@@ -52,7 +52,7 @@ static __initconst const u64 amd_hw_cache_event_ids
211 - [ C(DTLB) ] = {
212 - [ C(OP_READ) ] = {
213 - [ C(RESULT_ACCESS) ] = 0x0040, /* Data Cache Accesses */
214 -- [ C(RESULT_MISS) ] = 0x0046, /* L1 DTLB and L2 DLTB Miss */
215 -+ [ C(RESULT_MISS) ] = 0x0746, /* L1_DTLB_AND_L2_DLTB_MISS.ALL */
216 - },
217 - [ C(OP_WRITE) ] = {
218 - [ C(RESULT_ACCESS) ] = 0,
219 -@@ -66,7 +66,7 @@ static __initconst const u64 amd_hw_cache_event_ids
220 - [ C(ITLB) ] = {
221 - [ C(OP_READ) ] = {
222 - [ C(RESULT_ACCESS) ] = 0x0080, /* Instruction fecthes */
223 -- [ C(RESULT_MISS) ] = 0x0085, /* Instr. fetch ITLB misses */
224 -+ [ C(RESULT_MISS) ] = 0x0385, /* L1_ITLB_AND_L2_ITLB_MISS.ALL */
225 - },
226 - [ C(OP_WRITE) ] = {
227 - [ C(RESULT_ACCESS) ] = -1,
228 -diff --git a/arch/x86/kernel/crash_dump_64.c b/arch/x86/kernel/crash_dump_64.c
229 -index 045b36c..9948288 100644
230 ---- a/arch/x86/kernel/crash_dump_64.c
231 -+++ b/arch/x86/kernel/crash_dump_64.c
232 -@@ -34,7 +34,7 @@ ssize_t copy_oldmem_page(unsigned long pfn, char *buf,
233 - if (!csize)
234 - return 0;
235 -
236 -- vaddr = ioremap(pfn << PAGE_SHIFT, PAGE_SIZE);
237 -+ vaddr = ioremap_cache(pfn << PAGE_SHIFT, PAGE_SIZE);
238 - if (!vaddr)
239 - return -ENOMEM;
240 -
241 -@@ -46,6 +46,7 @@ ssize_t copy_oldmem_page(unsigned long pfn, char *buf,
242 - } else
243 - memcpy(buf, vaddr + offset, csize);
244 -
245 -+ set_iounmap_nonlazy();
246 - iounmap(vaddr);
247 - return csize;
248 - }
249 -diff --git a/arch/x86/kernel/olpc.c b/arch/x86/kernel/olpc.c
250 -index 0e0cdde..a2bd899 100644
251 ---- a/arch/x86/kernel/olpc.c
252 -+++ b/arch/x86/kernel/olpc.c
253 -@@ -114,6 +114,7 @@ int olpc_ec_cmd(unsigned char cmd, unsigned char *inbuf, size_t inlen,
254 - unsigned long flags;
255 - int ret = -EIO;
256 - int i;
257 -+ int restarts = 0;
258 -
259 - spin_lock_irqsave(&ec_lock, flags);
260 -
261 -@@ -169,7 +170,9 @@ restart:
262 - if (wait_on_obf(0x6c, 1)) {
263 - printk(KERN_ERR "olpc-ec: timeout waiting for"
264 - " EC to provide data!\n");
265 -- goto restart;
266 -+ if (restarts++ < 10)
267 -+ goto restart;
268 -+ goto err;
269 - }
270 - outbuf[i] = inb(0x68);
271 - pr_devel("olpc-ec: received 0x%x\n", outbuf[i]);
272 -diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
273 -index e3af342..76a0d71 100644
274 ---- a/arch/x86/kernel/reboot.c
275 -+++ b/arch/x86/kernel/reboot.c
276 -@@ -641,7 +641,7 @@ void native_machine_shutdown(void)
277 - /* O.K Now that I'm on the appropriate processor,
278 - * stop all of the others.
279 - */
280 -- smp_send_stop();
281 -+ stop_other_cpus();
282 - #endif
283 -
284 - lapic_shutdown();
285 -diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c
286 -index d801210..513deac 100644
287 ---- a/arch/x86/kernel/smp.c
288 -+++ b/arch/x86/kernel/smp.c
289 -@@ -159,10 +159,10 @@ asmlinkage void smp_reboot_interrupt(void)
290 - irq_exit();
291 - }
292 -
293 --static void native_smp_send_stop(void)
294 -+static void native_stop_other_cpus(int wait)
295 - {
296 - unsigned long flags;
297 -- unsigned long wait;
298 -+ unsigned long timeout;
299 -
300 - if (reboot_force)
301 - return;
302 -@@ -179,9 +179,12 @@ static void native_smp_send_stop(void)
303 - if (num_online_cpus() > 1) {
304 - apic->send_IPI_allbutself(REBOOT_VECTOR);
305 -
306 -- /* Don't wait longer than a second */
307 -- wait = USEC_PER_SEC;
308 -- while (num_online_cpus() > 1 && wait--)
309 -+ /*
310 -+ * Don't wait longer than a second if the caller
311 -+ * didn't ask us to wait.
312 -+ */
313 -+ timeout = USEC_PER_SEC;
314 -+ while (num_online_cpus() > 1 && (wait || timeout--))
315 - udelay(1);
316 - }
317 -
318 -@@ -227,7 +230,7 @@ struct smp_ops smp_ops = {
319 - .smp_prepare_cpus = native_smp_prepare_cpus,
320 - .smp_cpus_done = native_smp_cpus_done,
321 -
322 -- .smp_send_stop = native_smp_send_stop,
323 -+ .stop_other_cpus = native_stop_other_cpus,
324 - .smp_send_reschedule = native_smp_send_reschedule,
325 -
326 - .cpu_up = native_cpu_up,
327 -diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
328 -index 60788de..9f4edeb 100644
329 ---- a/arch/x86/kernel/traps.c
330 -+++ b/arch/x86/kernel/traps.c
331 -@@ -575,6 +575,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
332 - if (regs->flags & X86_VM_MASK) {
333 - handle_vm86_trap((struct kernel_vm86_regs *) regs,
334 - error_code, 1);
335 -+ preempt_conditional_cli(regs);
336 - return;
337 - }
338 -
339 -diff --git a/arch/x86/kernel/vm86_32.c b/arch/x86/kernel/vm86_32.c
340 -index 5ffb562..61fb985 100644
341 ---- a/arch/x86/kernel/vm86_32.c
342 -+++ b/arch/x86/kernel/vm86_32.c
343 -@@ -551,8 +551,14 @@ cannot_handle:
344 - int handle_vm86_trap(struct kernel_vm86_regs *regs, long error_code, int trapno)
345 - {
346 - if (VMPI.is_vm86pus) {
347 -- if ((trapno == 3) || (trapno == 1))
348 -- return_to_32bit(regs, VM86_TRAP + (trapno << 8));
349 -+ if ((trapno == 3) || (trapno == 1)) {
350 -+ KVM86->regs32->ax = VM86_TRAP + (trapno << 8);
351 -+ /* setting this flag forces the code in entry_32.S to
352 -+ call save_v86_state() and change the stack pointer
353 -+ to KVM86->regs32 */
354 -+ set_thread_flag(TIF_IRET);
355 -+ return 0;
356 -+ }
357 - do_int(regs, trapno, (unsigned char __user *) (regs->pt.ss << 4), SP(regs));
358 - return 0;
359 - }
360 -diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
361 -index 8a3f9f6..2a02a65 100644
362 ---- a/arch/x86/kvm/svm.c
363 -+++ b/arch/x86/kvm/svm.c
364 -@@ -88,6 +88,14 @@ struct nested_state {
365 - /* A VMEXIT is required but not yet emulated */
366 - bool exit_required;
367 -
368 -+ /*
369 -+ * If we vmexit during an instruction emulation we need this to restore
370 -+ * the l1 guest rip after the emulation
371 -+ */
372 -+ unsigned long vmexit_rip;
373 -+ unsigned long vmexit_rsp;
374 -+ unsigned long vmexit_rax;
375 -+
376 - /* cache for intercepts of the guest */
377 - u16 intercept_cr_read;
378 - u16 intercept_cr_write;
379 -@@ -1206,8 +1214,12 @@ static void svm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)
380 - if (old == new) {
381 - /* cr0 write with ts and mp unchanged */
382 - svm->vmcb->control.exit_code = SVM_EXIT_CR0_SEL_WRITE;
383 -- if (nested_svm_exit_handled(svm) == NESTED_EXIT_DONE)
384 -+ if (nested_svm_exit_handled(svm) == NESTED_EXIT_DONE) {
385 -+ svm->nested.vmexit_rip = kvm_rip_read(vcpu);
386 -+ svm->nested.vmexit_rsp = kvm_register_read(vcpu, VCPU_REGS_RSP);
387 -+ svm->nested.vmexit_rax = kvm_register_read(vcpu, VCPU_REGS_RAX);
388 - return;
389 -+ }
390 - }
391 - }
392 -
393 -@@ -2399,6 +2411,23 @@ static int emulate_on_interception(struct vcpu_svm *svm)
394 - return emulate_instruction(&svm->vcpu, 0, 0, 0) == EMULATE_DONE;
395 - }
396 -
397 -+static int cr0_write_interception(struct vcpu_svm *svm)
398 -+{
399 -+ struct kvm_vcpu *vcpu = &svm->vcpu;
400 -+ int r;
401 -+
402 -+ r = emulate_instruction(&svm->vcpu, 0, 0, 0);
403 -+
404 -+ if (svm->nested.vmexit_rip) {
405 -+ kvm_register_write(vcpu, VCPU_REGS_RIP, svm->nested.vmexit_rip);
406 -+ kvm_register_write(vcpu, VCPU_REGS_RSP, svm->nested.vmexit_rsp);
407 -+ kvm_register_write(vcpu, VCPU_REGS_RAX, svm->nested.vmexit_rax);
408 -+ svm->nested.vmexit_rip = 0;
409 -+ }
410 -+
411 -+ return r == EMULATE_DONE;
412 -+}
413 -+
414 - static int cr8_write_interception(struct vcpu_svm *svm)
415 - {
416 - struct kvm_run *kvm_run = svm->vcpu.run;
417 -@@ -2672,7 +2701,7 @@ static int (*svm_exit_handlers[])(struct vcpu_svm *svm) = {
418 - [SVM_EXIT_READ_CR4] = emulate_on_interception,
419 - [SVM_EXIT_READ_CR8] = emulate_on_interception,
420 - [SVM_EXIT_CR0_SEL_WRITE] = emulate_on_interception,
421 -- [SVM_EXIT_WRITE_CR0] = emulate_on_interception,
422 -+ [SVM_EXIT_WRITE_CR0] = cr0_write_interception,
423 - [SVM_EXIT_WRITE_CR3] = emulate_on_interception,
424 - [SVM_EXIT_WRITE_CR4] = emulate_on_interception,
425 - [SVM_EXIT_WRITE_CR8] = cr8_write_interception,
426 -@@ -3354,6 +3383,10 @@ static void svm_cpuid_update(struct kvm_vcpu *vcpu)
427 - static void svm_set_supported_cpuid(u32 func, struct kvm_cpuid_entry2 *entry)
428 - {
429 - switch (func) {
430 -+ case 0x80000001:
431 -+ if (nested)
432 -+ entry->ecx |= (1 << 2); /* Set SVM bit */
433 -+ break;
434 - case 0x8000000A:
435 - entry->eax = 1; /* SVM revision 1 */
436 - entry->ebx = 8; /* Lets support 8 ASIDs in case we add proper
437 -diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
438 -index 3a09c62..a4a427b 100644
439 ---- a/arch/x86/kvm/x86.c
440 -+++ b/arch/x86/kvm/x86.c
441 -@@ -1994,9 +1994,9 @@ static void do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function,
442 - 0 /* Reserved, AES */ | F(XSAVE) | 0 /* OSXSAVE */ | F(AVX);
443 - /* cpuid 0x80000001.ecx */
444 - const u32 kvm_supported_word6_x86_features =
445 -- F(LAHF_LM) | F(CMP_LEGACY) | F(SVM) | 0 /* ExtApicSpace */ |
446 -+ F(LAHF_LM) | F(CMP_LEGACY) | 0 /*SVM*/ | 0 /* ExtApicSpace */ |
447 - F(CR8_LEGACY) | F(ABM) | F(SSE4A) | F(MISALIGNSSE) |
448 -- F(3DNOWPREFETCH) | 0 /* OSVW */ | 0 /* IBS */ | F(SSE5) |
449 -+ F(3DNOWPREFETCH) | 0 /* OSVW */ | 0 /* IBS */ | F(XOP) |
450 - 0 /* SKINIT */ | 0 /* WDT */;
451 -
452 - /* all calls to cpuid_count() should be made on the same cpu */
453 -diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
454 -index 7d46c84..44f8086 100644
455 ---- a/arch/x86/xen/enlighten.c
456 -+++ b/arch/x86/xen/enlighten.c
457 -@@ -1018,7 +1018,7 @@ static void xen_reboot(int reason)
458 - struct sched_shutdown r = { .reason = reason };
459 -
460 - #ifdef CONFIG_SMP
461 -- smp_send_stop();
462 -+ stop_other_cpus();
463 - #endif
464 -
465 - if (HYPERVISOR_sched_op(SCHEDOP_shutdown, &r))
466 -diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
467 -index 25f232b..f4d0100 100644
468 ---- a/arch/x86/xen/smp.c
469 -+++ b/arch/x86/xen/smp.c
470 -@@ -400,9 +400,9 @@ static void stop_self(void *v)
471 - BUG();
472 - }
473 -
474 --static void xen_smp_send_stop(void)
475 -+static void xen_stop_other_cpus(int wait)
476 - {
477 -- smp_call_function(stop_self, NULL, 0);
478 -+ smp_call_function(stop_self, NULL, wait);
479 - }
480 -
481 - static void xen_smp_send_reschedule(int cpu)
482 -@@ -470,7 +470,7 @@ static const struct smp_ops xen_smp_ops __initdata = {
483 - .cpu_disable = xen_cpu_disable,
484 - .play_dead = xen_play_dead,
485 -
486 -- .smp_send_stop = xen_smp_send_stop,
487 -+ .stop_other_cpus = xen_stop_other_cpus,
488 - .smp_send_reschedule = xen_smp_send_reschedule,
489 -
490 - .send_call_func_ipi = xen_smp_send_call_function_ipi,
491 -diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h
492 -index e5fdeeb..d1a0f5b 100644
493 ---- a/drivers/ata/ahci.h
494 -+++ b/drivers/ata/ahci.h
495 -@@ -72,6 +72,7 @@ enum {
496 - AHCI_CMD_RESET = (1 << 8),
497 - AHCI_CMD_CLR_BUSY = (1 << 10),
498 -
499 -+ RX_FIS_PIO_SETUP = 0x20, /* offset of PIO Setup FIS data */
500 - RX_FIS_D2H_REG = 0x40, /* offset of D2H Register FIS data */
501 - RX_FIS_SDB = 0x58, /* offset of SDB FIS data */
502 - RX_FIS_UNK = 0x60, /* offset of Unknown FIS data */
503 -diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
504 -index 8eea309..137514d 100644
505 ---- a/drivers/ata/libahci.c
506 -+++ b/drivers/ata/libahci.c
507 -@@ -1830,12 +1830,24 @@ static unsigned int ahci_qc_issue(struct ata_queued_cmd *qc)
508 - static bool ahci_qc_fill_rtf(struct ata_queued_cmd *qc)
509 - {
510 - struct ahci_port_priv *pp = qc->ap->private_data;
511 -- u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG;
512 -+ u8 *rx_fis = pp->rx_fis;
513 -
514 - if (pp->fbs_enabled)
515 -- d2h_fis += qc->dev->link->pmp * AHCI_RX_FIS_SZ;
516 -+ rx_fis += qc->dev->link->pmp * AHCI_RX_FIS_SZ;
517 -+
518 -+ /*
519 -+ * After a successful execution of an ATA PIO data-in command,
520 -+ * the device doesn't send D2H Reg FIS to update the TF and
521 -+ * the host should take TF and E_Status from the preceding PIO
522 -+ * Setup FIS.
523 -+ */
524 -+ if (qc->tf.protocol == ATA_PROT_PIO && qc->dma_dir == DMA_FROM_DEVICE &&
525 -+ !(qc->flags & ATA_QCFLAG_FAILED)) {
526 -+ ata_tf_from_fis(rx_fis + RX_FIS_PIO_SETUP, &qc->result_tf);
527 -+ qc->result_tf.command = (rx_fis + RX_FIS_PIO_SETUP)[15];
528 -+ } else
529 -+ ata_tf_from_fis(rx_fis + RX_FIS_D2H_REG, &qc->result_tf);
530 -
531 -- ata_tf_from_fis(d2h_fis, &qc->result_tf);
532 - return true;
533 - }
534 -
535 -diff --git a/drivers/bluetooth/hci_ldisc.c b/drivers/bluetooth/hci_ldisc.c
536 -index 998833d..17361ba 100644
537 ---- a/drivers/bluetooth/hci_ldisc.c
538 -+++ b/drivers/bluetooth/hci_ldisc.c
539 -@@ -256,9 +256,16 @@ static int hci_uart_tty_open(struct tty_struct *tty)
540 -
541 - BT_DBG("tty %p", tty);
542 -
543 -+ /* FIXME: This btw is bogus, nothing requires the old ldisc to clear
544 -+ the pointer */
545 - if (hu)
546 - return -EEXIST;
547 -
548 -+ /* Error if the tty has no write op instead of leaving an exploitable
549 -+ hole */
550 -+ if (tty->ops->write == NULL)
551 -+ return -EOPNOTSUPP;
552 -+
553 - if (!(hu = kzalloc(sizeof(struct hci_uart), GFP_KERNEL))) {
554 - BT_ERR("Can't allocate control structure");
555 - return -ENFILE;
556 -diff --git a/drivers/char/pcmcia/synclink_cs.c b/drivers/char/pcmcia/synclink_cs.c
557 -index 9ecd6be..45f9fad 100644
558 ---- a/drivers/char/pcmcia/synclink_cs.c
559 -+++ b/drivers/char/pcmcia/synclink_cs.c
560 -@@ -4127,6 +4127,8 @@ static int hdlcdev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
561 - if (cmd != SIOCWANDEV)
562 - return hdlc_ioctl(dev, ifr, cmd);
563 -
564 -+ memset(&new_line, 0, size);
565 -+
566 - switch(ifr->ifr_settings.type) {
567 - case IF_GET_IFACE: /* return current sync_serial_settings */
568 -
569 -diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
570 -index c37ef64..cf88588 100644
571 ---- a/drivers/idle/intel_idle.c
572 -+++ b/drivers/idle/intel_idle.c
573 -@@ -276,7 +276,7 @@ static int intel_idle_probe(void)
574 -
575 - case 0x1C: /* 28 - Atom Processor */
576 - case 0x26: /* 38 - Lincroft Atom Processor */
577 -- lapic_timer_reliable_states = (1 << 2) | (1 << 1); /* C2, C1 */
578 -+ lapic_timer_reliable_states = (1 << 1); /* C1 */
579 - cpuidle_state_table = atom_cstates;
580 - break;
581 - #ifdef FUTURE_USE
582 -diff --git a/drivers/misc/sgi-xp/xpc_uv.c b/drivers/misc/sgi-xp/xpc_uv.c
583 -index 1f59ee2..17bbacb 100644
584 ---- a/drivers/misc/sgi-xp/xpc_uv.c
585 -+++ b/drivers/misc/sgi-xp/xpc_uv.c
586 -@@ -417,6 +417,7 @@ xpc_process_activate_IRQ_rcvd_uv(void)
587 - static void
588 - xpc_handle_activate_mq_msg_uv(struct xpc_partition *part,
589 - struct xpc_activate_mq_msghdr_uv *msg_hdr,
590 -+ int part_setup,
591 - int *wakeup_hb_checker)
592 - {
593 - unsigned long irq_flags;
594 -@@ -481,6 +482,9 @@ xpc_handle_activate_mq_msg_uv(struct xpc_partition *part,
595 - case XPC_ACTIVATE_MQ_MSG_CHCTL_CLOSEREQUEST_UV: {
596 - struct xpc_activate_mq_msg_chctl_closerequest_uv *msg;
597 -
598 -+ if (!part_setup)
599 -+ break;
600 -+
601 - msg = container_of(msg_hdr, struct
602 - xpc_activate_mq_msg_chctl_closerequest_uv,
603 - hdr);
604 -@@ -497,6 +501,9 @@ xpc_handle_activate_mq_msg_uv(struct xpc_partition *part,
605 - case XPC_ACTIVATE_MQ_MSG_CHCTL_CLOSEREPLY_UV: {
606 - struct xpc_activate_mq_msg_chctl_closereply_uv *msg;
607 -
608 -+ if (!part_setup)
609 -+ break;
610 -+
611 - msg = container_of(msg_hdr, struct
612 - xpc_activate_mq_msg_chctl_closereply_uv,
613 - hdr);
614 -@@ -511,6 +518,9 @@ xpc_handle_activate_mq_msg_uv(struct xpc_partition *part,
615 - case XPC_ACTIVATE_MQ_MSG_CHCTL_OPENREQUEST_UV: {
616 - struct xpc_activate_mq_msg_chctl_openrequest_uv *msg;
617 -
618 -+ if (!part_setup)
619 -+ break;
620 -+
621 - msg = container_of(msg_hdr, struct
622 - xpc_activate_mq_msg_chctl_openrequest_uv,
623 - hdr);
624 -@@ -528,6 +538,9 @@ xpc_handle_activate_mq_msg_uv(struct xpc_partition *part,
625 - case XPC_ACTIVATE_MQ_MSG_CHCTL_OPENREPLY_UV: {
626 - struct xpc_activate_mq_msg_chctl_openreply_uv *msg;
627 -
628 -+ if (!part_setup)
629 -+ break;
630 -+
631 - msg = container_of(msg_hdr, struct
632 - xpc_activate_mq_msg_chctl_openreply_uv, hdr);
633 - args = &part->remote_openclose_args[msg->ch_number];
634 -@@ -545,6 +558,9 @@ xpc_handle_activate_mq_msg_uv(struct xpc_partition *part,
635 - case XPC_ACTIVATE_MQ_MSG_CHCTL_OPENCOMPLETE_UV: {
636 - struct xpc_activate_mq_msg_chctl_opencomplete_uv *msg;
637 -
638 -+ if (!part_setup)
639 -+ break;
640 -+
641 - msg = container_of(msg_hdr, struct
642 - xpc_activate_mq_msg_chctl_opencomplete_uv, hdr);
643 - spin_lock_irqsave(&part->chctl_lock, irq_flags);
644 -@@ -621,6 +637,7 @@ xpc_handle_activate_IRQ_uv(int irq, void *dev_id)
645 -
646 - part_referenced = xpc_part_ref(part);
647 - xpc_handle_activate_mq_msg_uv(part, msg_hdr,
648 -+ part_referenced,
649 - &wakeup_hb_checker);
650 - if (part_referenced)
651 - xpc_part_deref(part);
652 -diff --git a/drivers/net/wireless/p54/eeprom.c b/drivers/net/wireless/p54/eeprom.c
653 -index 78347041..0a7ce37 100644
654 ---- a/drivers/net/wireless/p54/eeprom.c
655 -+++ b/drivers/net/wireless/p54/eeprom.c
656 -@@ -260,8 +260,10 @@ static int p54_generate_channel_lists(struct ieee80211_hw *dev)
657 - list->max_entries = max_channel_num;
658 - list->channels = kzalloc(sizeof(struct p54_channel_entry) *
659 - max_channel_num, GFP_KERNEL);
660 -- if (!list->channels)
661 -+ if (!list->channels) {
662 -+ ret = -ENOMEM;
663 - goto free;
664 -+ }
665 -
666 - for (i = 0; i < max_channel_num; i++) {
667 - if (i < priv->iq_autocal_len) {
668 -diff --git a/drivers/net/wireless/p54/p54usb.c b/drivers/net/wireless/p54/p54usb.c
669 -index ad59595..d5bc21e 100644
670 ---- a/drivers/net/wireless/p54/p54usb.c
671 -+++ b/drivers/net/wireless/p54/p54usb.c
672 -@@ -33,8 +33,17 @@ MODULE_ALIAS("prism54usb");
673 - MODULE_FIRMWARE("isl3886usb");
674 - MODULE_FIRMWARE("isl3887usb");
675 -
676 -+/*
677 -+ * Note:
678 -+ *
679 -+ * Always update our wiki's device list (located at:
680 -+ * http://wireless.kernel.org/en/users/Drivers/p54/devices ),
681 -+ * whenever you add a new device.
682 -+ */
683 -+
684 - static struct usb_device_id p54u_table[] __devinitdata = {
685 - /* Version 1 devices (pci chip + net2280) */
686 -+ {USB_DEVICE(0x045e, 0x00c2)}, /* Microsoft MN-710 */
687 - {USB_DEVICE(0x0506, 0x0a11)}, /* 3COM 3CRWE254G72 */
688 - {USB_DEVICE(0x06b9, 0x0120)}, /* Thomson SpeedTouch 120g */
689 - {USB_DEVICE(0x0707, 0xee06)}, /* SMC 2862W-G */
690 -@@ -47,7 +56,9 @@ static struct usb_device_id p54u_table[] __devinitdata = {
691 - {USB_DEVICE(0x0846, 0x4220)}, /* Netgear WG111 */
692 - {USB_DEVICE(0x09aa, 0x1000)}, /* Spinnaker Proto board */
693 - {USB_DEVICE(0x0cde, 0x0006)}, /* Medion 40900, Roper Europe */
694 -+ {USB_DEVICE(0x107b, 0x55f2)}, /* Gateway WGU-210 (Gemtek) */
695 - {USB_DEVICE(0x124a, 0x4023)}, /* Shuttle PN15, Airvast WM168g, IOGear GWU513 */
696 -+ {USB_DEVICE(0x1630, 0x0005)}, /* 2Wire 802.11g USB (v1) / Z-Com */
697 - {USB_DEVICE(0x1915, 0x2234)}, /* Linksys WUSB54G OEM */
698 - {USB_DEVICE(0x1915, 0x2235)}, /* Linksys WUSB54G Portable OEM */
699 - {USB_DEVICE(0x2001, 0x3701)}, /* DLink DWL-G120 Spinnaker */
700 -@@ -60,6 +71,7 @@ static struct usb_device_id p54u_table[] __devinitdata = {
701 - {USB_DEVICE(0x050d, 0x7050)}, /* Belkin F5D7050 ver 1000 */
702 - {USB_DEVICE(0x0572, 0x2000)}, /* Cohiba Proto board */
703 - {USB_DEVICE(0x0572, 0x2002)}, /* Cohiba Proto board */
704 -+ {USB_DEVICE(0x06a9, 0x000e)}, /* Westell 802.11g USB (A90-211WG-01) */
705 - {USB_DEVICE(0x06b9, 0x0121)}, /* Thomson SpeedTouch 121g */
706 - {USB_DEVICE(0x0707, 0xee13)}, /* SMC 2862W-G version 2 */
707 - {USB_DEVICE(0x083a, 0x4521)}, /* Siemens Gigaset USB Adapter 54 version 2 */
708 -@@ -80,6 +92,7 @@ static struct usb_device_id p54u_table[] __devinitdata = {
709 - {USB_DEVICE(0x13B1, 0x000C)}, /* Linksys WUSB54AG */
710 - {USB_DEVICE(0x1413, 0x5400)}, /* Telsey 802.11g USB2.0 Adapter */
711 - {USB_DEVICE(0x1435, 0x0427)}, /* Inventel UR054G */
712 -+ {USB_DEVICE(0x1668, 0x1050)}, /* Actiontec 802UIG-1 */
713 - {USB_DEVICE(0x2001, 0x3704)}, /* DLink DWL-G122 rev A2 */
714 - {USB_DEVICE(0x413c, 0x5513)}, /* Dell WLA3310 USB Wireless Adapter */
715 - {USB_DEVICE(0x413c, 0x8102)}, /* Spinnaker DUT */
716 -@@ -930,8 +943,8 @@ static int __devinit p54u_probe(struct usb_interface *intf,
717 - #ifdef CONFIG_PM
718 - /* ISL3887 needs a full reset on resume */
719 - udev->reset_resume = 1;
720 -+#endif /* CONFIG_PM */
721 - err = p54u_device_reset(dev);
722 --#endif
723 -
724 - priv->hw_type = P54U_3887;
725 - dev->extra_tx_headroom += sizeof(struct lm87_tx_hdr);
726 -diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c
727 -index b756e07..e8acb1c 100644
728 ---- a/drivers/platform/x86/asus-laptop.c
729 -+++ b/drivers/platform/x86/asus-laptop.c
730 -@@ -1065,9 +1065,9 @@ static ssize_t store_gps(struct device *dev, struct device_attribute *attr,
731 - */
732 - static int asus_gps_rfkill_set(void *data, bool blocked)
733 - {
734 -- acpi_handle handle = data;
735 -+ struct asus_laptop *asus = data;
736 -
737 -- return asus_gps_switch(handle, !blocked);
738 -+ return asus_gps_switch(asus, !blocked);
739 - }
740 -
741 - static const struct rfkill_ops asus_gps_rfkill_ops = {
742 -@@ -1094,7 +1094,7 @@ static int asus_rfkill_init(struct asus_laptop *asus)
743 -
744 - asus->gps_rfkill = rfkill_alloc("asus-gps", &asus->platform_device->dev,
745 - RFKILL_TYPE_GPS,
746 -- &asus_gps_rfkill_ops, NULL);
747 -+ &asus_gps_rfkill_ops, asus);
748 - if (!asus->gps_rfkill)
749 - return -EINVAL;
750 -
751 -diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c
752 -index b860d65..4cf7ffa 100644
753 ---- a/drivers/scsi/gdth.c
754 -+++ b/drivers/scsi/gdth.c
755 -@@ -4175,6 +4175,14 @@ static int ioc_general(void __user *arg, char *cmnd)
756 - ha = gdth_find_ha(gen.ionode);
757 - if (!ha)
758 - return -EFAULT;
759 -+
760 -+ if (gen.data_len > INT_MAX)
761 -+ return -EINVAL;
762 -+ if (gen.sense_len > INT_MAX)
763 -+ return -EINVAL;
764 -+ if (gen.data_len + gen.sense_len > INT_MAX)
765 -+ return -EINVAL;
766 -+
767 - if (gen.data_len + gen.sense_len != 0) {
768 - if (!(buf = gdth_ioctl_alloc(ha, gen.data_len + gen.sense_len,
769 - FALSE, &paddr)))
770 -diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c
771 -index 042153c..ddbade7 100644
772 ---- a/drivers/scsi/libsas/sas_ata.c
773 -+++ b/drivers/scsi/libsas/sas_ata.c
774 -@@ -347,6 +347,7 @@ static int sas_ata_scr_read(struct ata_link *link, unsigned int sc_reg_in,
775 - static struct ata_port_operations sas_sata_ops = {
776 - .phy_reset = sas_ata_phy_reset,
777 - .post_internal_cmd = sas_ata_post_internal,
778 -+ .qc_defer = ata_std_qc_defer,
779 - .qc_prep = ata_noop_qc_prep,
780 - .qc_issue = sas_ata_qc_issue,
781 - .qc_fill_rtf = sas_ata_qc_fill_rtf,
782 -diff --git a/drivers/scsi/pmcraid.h b/drivers/scsi/pmcraid.h
783 -index 6cfa014..dd78f9e 100644
784 ---- a/drivers/scsi/pmcraid.h
785 -+++ b/drivers/scsi/pmcraid.h
786 -@@ -568,7 +568,6 @@ struct pmcraid_cmd {
787 - struct pmcraid_control_block *ioa_cb;
788 - dma_addr_t ioa_cb_bus_addr;
789 - dma_addr_t dma_handle;
790 -- u8 *sense_buffer;
791 -
792 - /* pointer to mid layer structure of SCSI commands */
793 - struct scsi_cmnd *scsi_cmd;
794 -diff --git a/drivers/scsi/qla4xxx/ql4_nx.c b/drivers/scsi/qla4xxx/ql4_nx.c
795 -index 5d4a382..449256f 100644
796 ---- a/drivers/scsi/qla4xxx/ql4_nx.c
797 -+++ b/drivers/scsi/qla4xxx/ql4_nx.c
798 -@@ -5,6 +5,7 @@
799 - * See LICENSE.qla4xxx for copyright and licensing details.
800 - */
801 - #include <linux/delay.h>
802 -+#include <linux/io.h>
803 - #include <linux/pci.h>
804 - #include "ql4_def.h"
805 - #include "ql4_glbl.h"
806 -diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
807 -index ee02d38..71c4cf7 100644
808 ---- a/drivers/scsi/scsi_lib.c
809 -+++ b/drivers/scsi/scsi_lib.c
810 -@@ -2428,7 +2428,8 @@ scsi_internal_device_unblock(struct scsi_device *sdev)
811 - sdev->sdev_state = SDEV_RUNNING;
812 - else if (sdev->sdev_state == SDEV_CREATED_BLOCK)
813 - sdev->sdev_state = SDEV_CREATED;
814 -- else
815 -+ else if (sdev->sdev_state != SDEV_CANCEL &&
816 -+ sdev->sdev_state != SDEV_OFFLINE)
817 - return -EINVAL;
818 -
819 - spin_lock_irqsave(q->queue_lock, flags);
820 -diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
821 -index c3f6737..7a0ca6f 100644
822 ---- a/drivers/scsi/scsi_sysfs.c
823 -+++ b/drivers/scsi/scsi_sysfs.c
824 -@@ -962,10 +962,11 @@ static void __scsi_remove_target(struct scsi_target *starget)
825 - list_for_each_entry(sdev, &shost->__devices, siblings) {
826 - if (sdev->channel != starget->channel ||
827 - sdev->id != starget->id ||
828 -- sdev->sdev_state == SDEV_DEL)
829 -+ scsi_device_get(sdev))
830 - continue;
831 - spin_unlock_irqrestore(shost->host_lock, flags);
832 - scsi_remove_device(sdev);
833 -+ scsi_device_put(sdev);
834 - spin_lock_irqsave(shost->host_lock, flags);
835 - goto restart;
836 - }
837 -diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
838 -index ffa0689..0eb0af5 100644
839 ---- a/drivers/scsi/sd.c
840 -+++ b/drivers/scsi/sd.c
841 -@@ -2252,11 +2252,10 @@ static void sd_probe_async(void *data, async_cookie_t cookie)
842 - index = sdkp->index;
843 - dev = &sdp->sdev_gendev;
844 -
845 -- if (index < SD_MAX_DISKS) {
846 -- gd->major = sd_major((index & 0xf0) >> 4);
847 -- gd->first_minor = ((index & 0xf) << 4) | (index & 0xfff00);
848 -- gd->minors = SD_MINORS;
849 -- }
850 -+ gd->major = sd_major((index & 0xf0) >> 4);
851 -+ gd->first_minor = ((index & 0xf) << 4) | (index & 0xfff00);
852 -+ gd->minors = SD_MINORS;
853 -+
854 - gd->fops = &sd_fops;
855 - gd->private_data = &sdkp->driver;
856 - gd->queue = sdkp->device->request_queue;
857 -@@ -2346,6 +2345,12 @@ static int sd_probe(struct device *dev)
858 - if (error)
859 - goto out_put;
860 -
861 -+ if (index >= SD_MAX_DISKS) {
862 -+ error = -ENODEV;
863 -+ sdev_printk(KERN_WARNING, sdp, "SCSI disk (sd) name space exhausted.\n");
864 -+ goto out_free_index;
865 -+ }
866 -+
867 - error = sd_format_disk_name("sd", index, gd->disk_name, DISK_NAME_LEN);
868 - if (error)
869 - goto out_free_index;
870 -diff --git a/drivers/staging/phison/phison.c b/drivers/staging/phison/phison.c
871 -index 42783d7..6771520 100644
872 ---- a/drivers/staging/phison/phison.c
873 -+++ b/drivers/staging/phison/phison.c
874 -@@ -62,7 +62,7 @@ static int phison_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
875 - };
876 - const struct ata_port_info *ppi[] = { &info, NULL };
877 -
878 -- ret = ata_pci_sff_init_one(pdev, ppi, &phison_sht, NULL, 0);
879 -+ ret = ata_pci_bmdma_init_one(pdev, ppi, &phison_sht, NULL, 0);
880 -
881 - dev_dbg(&pdev->dev, "phison_init_one(), ret = %x\n", ret);
882 -
883 -diff --git a/drivers/staging/usbip/usbip_event.c b/drivers/staging/usbip/usbip_event.c
884 -index a2566f1..af3832b 100644
885 ---- a/drivers/staging/usbip/usbip_event.c
886 -+++ b/drivers/staging/usbip/usbip_event.c
887 -@@ -38,21 +38,13 @@ static int event_handler(struct usbip_device *ud)
888 - ud->eh_ops.shutdown(ud);
889 -
890 - ud->event &= ~USBIP_EH_SHUTDOWN;
891 --
892 -- break;
893 - }
894 -
895 -- /* Stop the error handler. */
896 -- if (ud->event & USBIP_EH_BYE)
897 -- return -1;
898 --
899 - /* Reset the device. */
900 - if (ud->event & USBIP_EH_RESET) {
901 - ud->eh_ops.reset(ud);
902 -
903 - ud->event &= ~USBIP_EH_RESET;
904 --
905 -- break;
906 - }
907 -
908 - /* Mark the device as unusable. */
909 -@@ -60,13 +52,11 @@ static int event_handler(struct usbip_device *ud)
910 - ud->eh_ops.unusable(ud);
911 -
912 - ud->event &= ~USBIP_EH_UNUSABLE;
913 --
914 -- break;
915 - }
916 -
917 -- /* NOTREACHED */
918 -- printk(KERN_ERR "%s: unknown event\n", __func__);
919 -- return -1;
920 -+ /* Stop the error handler. */
921 -+ if (ud->event & USBIP_EH_BYE)
922 -+ return -1;
923 - }
924 -
925 - return 0;
926 -diff --git a/drivers/staging/usbip/vhci_hcd.c b/drivers/staging/usbip/vhci_hcd.c
927 -index 0574d84..832608d 100644
928 ---- a/drivers/staging/usbip/vhci_hcd.c
929 -+++ b/drivers/staging/usbip/vhci_hcd.c
930 -@@ -164,6 +164,8 @@ void rh_port_disconnect(int rhport)
931 - * spin_unlock(&vdev->ud.lock); */
932 -
933 - spin_unlock_irqrestore(&the_controller->lock, flags);
934 -+
935 -+ usb_hcd_poll_rh_status(vhci_to_hcd(the_controller));
936 - }
937 -
938 -
939 -diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
940 -index 84c18971..566c183 100644
941 ---- a/drivers/usb/core/hub.c
942 -+++ b/drivers/usb/core/hub.c
943 -@@ -2860,13 +2860,16 @@ hub_port_init (struct usb_hub *hub, struct usb_device *udev, int port1,
944 - else
945 - i = udev->descriptor.bMaxPacketSize0;
946 - if (le16_to_cpu(udev->ep0.desc.wMaxPacketSize) != i) {
947 -- if (udev->speed != USB_SPEED_FULL ||
948 -+ if (udev->speed == USB_SPEED_LOW ||
949 - !(i == 8 || i == 16 || i == 32 || i == 64)) {
950 -- dev_err(&udev->dev, "ep0 maxpacket = %d\n", i);
951 -+ dev_err(&udev->dev, "Invalid ep0 maxpacket: %d\n", i);
952 - retval = -EMSGSIZE;
953 - goto fail;
954 - }
955 -- dev_dbg(&udev->dev, "ep0 maxpacket = %d\n", i);
956 -+ if (udev->speed == USB_SPEED_FULL)
957 -+ dev_dbg(&udev->dev, "ep0 maxpacket = %d\n", i);
958 -+ else
959 -+ dev_warn(&udev->dev, "Using ep0 maxpacket: %d\n", i);
960 - udev->ep0.desc.wMaxPacketSize = cpu_to_le16(i);
961 - usb_ep0_reinit(udev);
962 - }
963 -diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
964 -index 9f0ce7d..d6e3e41 100644
965 ---- a/drivers/usb/core/message.c
966 -+++ b/drivers/usb/core/message.c
967 -@@ -1140,13 +1140,6 @@ void usb_disable_device(struct usb_device *dev, int skip_ep0)
968 - {
969 - int i;
970 -
971 -- dev_dbg(&dev->dev, "%s nuking %s URBs\n", __func__,
972 -- skip_ep0 ? "non-ep0" : "all");
973 -- for (i = skip_ep0; i < 16; ++i) {
974 -- usb_disable_endpoint(dev, i, true);
975 -- usb_disable_endpoint(dev, i + USB_DIR_IN, true);
976 -- }
977 --
978 - /* getting rid of interfaces will disconnect
979 - * any drivers bound to them (a key side effect)
980 - */
981 -@@ -1176,6 +1169,13 @@ void usb_disable_device(struct usb_device *dev, int skip_ep0)
982 - if (dev->state == USB_STATE_CONFIGURED)
983 - usb_set_device_state(dev, USB_STATE_ADDRESS);
984 - }
985 -+
986 -+ dev_dbg(&dev->dev, "%s nuking %s URBs\n", __func__,
987 -+ skip_ep0 ? "non-ep0" : "all");
988 -+ for (i = skip_ep0; i < 16; ++i) {
989 -+ usb_disable_endpoint(dev, i, true);
990 -+ usb_disable_endpoint(dev, i + USB_DIR_IN, true);
991 -+ }
992 - }
993 -
994 - /**
995 -diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c
996 -index d623c7b..959f062 100644
997 ---- a/drivers/usb/gadget/atmel_usba_udc.c
998 -+++ b/drivers/usb/gadget/atmel_usba_udc.c
999 -@@ -2014,6 +2014,9 @@ static int __init usba_udc_probe(struct platform_device *pdev)
1000 - } else {
1001 - disable_irq(gpio_to_irq(udc->vbus_pin));
1002 - }
1003 -+ } else {
1004 -+ /* gpio_request fail so use -EINVAL for gpio_is_valid */
1005 -+ ubc->vbus_pin = -EINVAL;
1006 - }
1007 - }
1008 -
1009 -diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
1010 -index 1160c55..9a98c38 100644
1011 ---- a/drivers/usb/gadget/composite.c
1012 -+++ b/drivers/usb/gadget/composite.c
1013 -@@ -901,7 +901,8 @@ unknown:
1014 - */
1015 - switch (ctrl->bRequestType & USB_RECIP_MASK) {
1016 - case USB_RECIP_INTERFACE:
1017 -- f = cdev->config->interface[intf];
1018 -+ if (cdev->config)
1019 -+ f = cdev->config->interface[intf];
1020 - break;
1021 -
1022 - case USB_RECIP_ENDPOINT:
1023 -diff --git a/drivers/usb/gadget/f_acm.c b/drivers/usb/gadget/f_acm.c
1024 -index d47a123..bd6226c 100644
1025 ---- a/drivers/usb/gadget/f_acm.c
1026 -+++ b/drivers/usb/gadget/f_acm.c
1027 -@@ -111,7 +111,7 @@ acm_iad_descriptor = {
1028 - .bInterfaceCount = 2, // control + data
1029 - .bFunctionClass = USB_CLASS_COMM,
1030 - .bFunctionSubClass = USB_CDC_SUBCLASS_ACM,
1031 -- .bFunctionProtocol = USB_CDC_PROTO_NONE,
1032 -+ .bFunctionProtocol = USB_CDC_ACM_PROTO_AT_V25TER,
1033 - /* .iFunction = DYNAMIC */
1034 - };
1035 -
1036 -diff --git a/drivers/usb/gadget/g_ffs.c b/drivers/usb/gadget/g_ffs.c
1037 -index a9474f8..3c2f0a4 100644
1038 ---- a/drivers/usb/gadget/g_ffs.c
1039 -+++ b/drivers/usb/gadget/g_ffs.c
1040 -@@ -53,8 +53,8 @@ MODULE_AUTHOR("Michal Nazarewicz");
1041 - MODULE_LICENSE("GPL");
1042 -
1043 -
1044 --static unsigned short gfs_vendor_id = 0x0525; /* XXX NetChip */
1045 --static unsigned short gfs_product_id = 0xa4ac; /* XXX */
1046 -+static unsigned short gfs_vendor_id = 0x1d6b; /* Linux Foundation */
1047 -+static unsigned short gfs_product_id = 0x0105; /* FunctionFS Gadget */
1048 -
1049 - static struct usb_device_descriptor gfs_dev_desc = {
1050 - .bLength = sizeof gfs_dev_desc,
1051 -diff --git a/drivers/usb/gadget/multi.c b/drivers/usb/gadget/multi.c
1052 -index 795d762..36d67a3 100644
1053 ---- a/drivers/usb/gadget/multi.c
1054 -+++ b/drivers/usb/gadget/multi.c
1055 -@@ -74,8 +74,8 @@ MODULE_LICENSE("GPL");
1056 -
1057 - /***************************** Device Descriptor ****************************/
1058 -
1059 --#define MULTI_VENDOR_NUM 0x0525 /* XXX NetChip */
1060 --#define MULTI_PRODUCT_NUM 0xa4ab /* XXX */
1061 -+#define MULTI_VENDOR_NUM 0x1d6b /* Linux Foundation */
1062 -+#define MULTI_PRODUCT_NUM 0x0104 /* Multifunction Composite Gadget */
1063 -
1064 -
1065 - enum {
1066 -diff --git a/drivers/usb/host/r8a66597.h b/drivers/usb/host/r8a66597.h
1067 -index 95d0f5a..25563e9 100644
1068 ---- a/drivers/usb/host/r8a66597.h
1069 -+++ b/drivers/usb/host/r8a66597.h
1070 -@@ -227,7 +227,7 @@ static inline void r8a66597_write_fifo(struct r8a66597 *r8a66597,
1071 - int odd = len & 0x0001;
1072 -
1073 - len = len / 2;
1074 -- ioread16_rep(fifoaddr, buf, len);
1075 -+ iowrite16_rep(fifoaddr, buf, len);
1076 - if (unlikely(odd)) {
1077 - buf = &buf[len];
1078 - iowrite8((unsigned char)*buf, fifoaddr);
1079 -diff --git a/drivers/usb/musb/blackfin.c b/drivers/usb/musb/blackfin.c
1080 -index b611420..611a9d2 100644
1081 ---- a/drivers/usb/musb/blackfin.c
1082 -+++ b/drivers/usb/musb/blackfin.c
1083 -@@ -342,8 +342,10 @@ int __init musb_platform_init(struct musb *musb, void *board_data)
1084 -
1085 - usb_nop_xceiv_register();
1086 - musb->xceiv = otg_get_transceiver();
1087 -- if (!musb->xceiv)
1088 -+ if (!musb->xceiv) {
1089 -+ gpio_free(musb->config->gpio_vrsel);
1090 - return -ENODEV;
1091 -+ }
1092 -
1093 - if (ANOMALY_05000346) {
1094 - bfin_write_USB_APHY_CALIB(ANOMALY_05000346_value);
1095 -@@ -394,8 +396,9 @@ int __init musb_platform_init(struct musb *musb, void *board_data)
1096 -
1097 - int musb_platform_exit(struct musb *musb)
1098 - {
1099 --
1100 - gpio_free(musb->config->gpio_vrsel);
1101 -
1102 -+ otg_put_transceiver(musb->xceiv);
1103 -+ usb_nop_xceiv_unregister();
1104 - return 0;
1105 - }
1106 -diff --git a/drivers/usb/musb/davinci.c b/drivers/usb/musb/davinci.c
1107 -index 5762436..6e67629 100644
1108 ---- a/drivers/usb/musb/davinci.c
1109 -+++ b/drivers/usb/musb/davinci.c
1110 -@@ -446,6 +446,7 @@ int __init musb_platform_init(struct musb *musb, void *board_data)
1111 - fail:
1112 - clk_disable(musb->clock);
1113 -
1114 -+ otg_put_transceiver(musb->xceiv);
1115 - usb_nop_xceiv_unregister();
1116 - return -ENODEV;
1117 - }
1118 -@@ -496,6 +497,7 @@ int musb_platform_exit(struct musb *musb)
1119 -
1120 - clk_disable(musb->clock);
1121 -
1122 -+ otg_put_transceiver(musb->xceiv);
1123 - usb_nop_xceiv_unregister();
1124 -
1125 - return 0;
1126 -diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
1127 -index 540c766..513d6bd 100644
1128 ---- a/drivers/usb/musb/musb_core.c
1129 -+++ b/drivers/usb/musb/musb_core.c
1130 -@@ -1921,10 +1921,6 @@ static void musb_free(struct musb *musb)
1131 - dma_controller_destroy(c);
1132 - }
1133 -
1134 --#ifdef CONFIG_USB_MUSB_OTG
1135 -- put_device(musb->xceiv->dev);
1136 --#endif
1137 --
1138 - #ifdef CONFIG_USB_MUSB_HDRC_HCD
1139 - usb_put_hcd(musb_to_hcd(musb));
1140 - #else
1141 -diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c
1142 -index 2111a24..ed618bd 100644
1143 ---- a/drivers/usb/musb/omap2430.c
1144 -+++ b/drivers/usb/musb/omap2430.c
1145 -@@ -320,5 +320,6 @@ int musb_platform_exit(struct musb *musb)
1146 -
1147 - musb_platform_suspend(musb);
1148 -
1149 -+ otg_put_transceiver(musb->xceiv);
1150 - return 0;
1151 - }
1152 -diff --git a/drivers/usb/musb/tusb6010.c b/drivers/usb/musb/tusb6010.c
1153 -index 3c48e77..bde40ef 100644
1154 ---- a/drivers/usb/musb/tusb6010.c
1155 -+++ b/drivers/usb/musb/tusb6010.c
1156 -@@ -1152,6 +1152,8 @@ done:
1157 - if (ret < 0) {
1158 - if (sync)
1159 - iounmap(sync);
1160 -+
1161 -+ otg_put_transceiver(musb->xceiv);
1162 - usb_nop_xceiv_unregister();
1163 - }
1164 - return ret;
1165 -@@ -1166,6 +1168,8 @@ int musb_platform_exit(struct musb *musb)
1166 - musb->board_set_power(0);
1167 -
1168 - iounmap(musb->sync_va);
1169 -+
1170 -+ otg_put_transceiver(musb->xceiv);
1171 - usb_nop_xceiv_unregister();
1172 - return 0;
1173 - }
1174 -diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
1175 -index 4f1744c..8d7731d 100644
1176 ---- a/drivers/usb/serial/cp210x.c
1177 -+++ b/drivers/usb/serial/cp210x.c
1178 -@@ -54,6 +54,7 @@ static int cp210x_carrier_raised(struct usb_serial_port *p);
1179 - static int debug;
1180 -
1181 - static const struct usb_device_id id_table[] = {
1182 -+ { USB_DEVICE(0x045B, 0x0053) }, /* Renesas RX610 RX-Stick */
1183 - { USB_DEVICE(0x0471, 0x066A) }, /* AKTAKOM ACE-1001 cable */
1184 - { USB_DEVICE(0x0489, 0xE000) }, /* Pirelli Broadband S.p.A, DP-L10 SIP/GSM Mobile */
1185 - { USB_DEVICE(0x0489, 0xE003) }, /* Pirelli Broadband S.p.A, DP-L10 SIP/GSM Mobile */
1186 -@@ -132,6 +133,7 @@ static const struct usb_device_id id_table[] = {
1187 - { USB_DEVICE(0x17F4, 0xAAAA) }, /* Wavesense Jazz blood glucose meter */
1188 - { USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */
1189 - { USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */
1190 -+ { USB_DEVICE(0x1BE3, 0x07A6) }, /* WAGO 750-923 USB Service Cable */
1191 - { USB_DEVICE(0x413C, 0x9500) }, /* DW700 GPS USB interface */
1192 - { } /* Terminating Entry */
1193 - };
1194 -diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
1195 -index 97cc87d..01ba740 100644
1196 ---- a/drivers/usb/serial/ftdi_sio.c
1197 -+++ b/drivers/usb/serial/ftdi_sio.c
1198 -@@ -177,6 +177,7 @@ static struct usb_device_id id_table_combined [] = {
1199 - { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_SNIFFER_PID) },
1200 - { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_THROTTLE_PID) },
1201 - { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_GATEWAY_PID) },
1202 -+ { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_GBM_PID) },
1203 - { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_IOBOARD_PID) },
1204 - { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_MINI_IOBOARD_PID) },
1205 - { USB_DEVICE(FTDI_VID, FTDI_SPROG_II) },
1206 -@@ -674,7 +675,6 @@ static struct usb_device_id id_table_combined [] = {
1207 - { USB_DEVICE(FTDI_VID, FTDI_RRCIRKITS_LOCOBUFFER_PID) },
1208 - { USB_DEVICE(FTDI_VID, FTDI_ASK_RDR400_PID) },
1209 - { USB_DEVICE(ICOM_ID1_VID, ICOM_ID1_PID) },
1210 -- { USB_DEVICE(PAPOUCH_VID, PAPOUCH_TMU_PID) },
1211 - { USB_DEVICE(FTDI_VID, FTDI_ACG_HFDUAL_PID) },
1212 - { USB_DEVICE(FTDI_VID, FTDI_YEI_SERVOCENTER31_PID) },
1213 - { USB_DEVICE(FTDI_VID, FTDI_THORLABS_PID) },
1214 -@@ -715,8 +715,37 @@ static struct usb_device_id id_table_combined [] = {
1215 - .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
1216 - { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) },
1217 - { USB_DEVICE(FTDI_VID, FTDI_REU_TINY_PID) },
1218 -+
1219 -+ /* Papouch devices based on FTDI chip */
1220 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB485_PID) },
1221 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_AP485_PID) },
1222 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB422_PID) },
1223 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB485_2_PID) },
1224 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_AP485_2_PID) },
1225 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB422_2_PID) },
1226 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB485S_PID) },
1227 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB485C_PID) },
1228 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_LEC_PID) },
1229 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB232_PID) },
1230 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_TMU_PID) },
1231 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_IRAMP_PID) },
1232 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_DRAK5_PID) },
1233 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO8x8_PID) },
1234 - { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO4x4_PID) },
1235 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO2x2_PID) },
1236 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO10x1_PID) },
1237 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO30x3_PID) },
1238 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO60x3_PID) },
1239 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO2x16_PID) },
1240 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO3x32_PID) },
1241 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_DRAK6_PID) },
1242 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_UPSUSB_PID) },
1243 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_MU_PID) },
1244 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SIMUKEY_PID) },
1245 - { USB_DEVICE(PAPOUCH_VID, PAPOUCH_AD4USB_PID) },
1246 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_GMUX_PID) },
1247 -+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_GMSR_PID) },
1248 -+
1249 - { USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DGQG_PID) },
1250 - { USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DUSB_PID) },
1251 - { USB_DEVICE(ALTI2_VID, ALTI2_N3_PID) },
1252 -@@ -751,6 +780,7 @@ static struct usb_device_id id_table_combined [] = {
1253 - { USB_DEVICE(FTDI_VID, XVERVE_SIGNALYZER_SH4_PID),
1254 - .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
1255 - { USB_DEVICE(FTDI_VID, SEGWAY_RMP200_PID) },
1256 -+ { USB_DEVICE(FTDI_VID, ACCESIO_COM4SM_PID) },
1257 - { USB_DEVICE(IONICS_VID, IONICS_PLUGCOMPUTER_PID),
1258 - .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
1259 - { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_24_MASTER_WING_PID) },
1260 -@@ -761,6 +791,9 @@ static struct usb_device_id id_table_combined [] = {
1261 - { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_MAXI_WING_PID) },
1262 - { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_MEDIA_WING_PID) },
1263 - { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_WING_PID) },
1264 -+ { USB_DEVICE(FTDI_VID, FTDI_SCIENCESCOPE_LOGBOOKML_PID) },
1265 -+ { USB_DEVICE(FTDI_VID, FTDI_SCIENCESCOPE_LS_LOGBOOK_PID) },
1266 -+ { USB_DEVICE(FTDI_VID, FTDI_SCIENCESCOPE_HS_LOGBOOK_PID) },
1267 - { }, /* Optional parameter entry */
1268 - { } /* Terminating entry */
1269 - };
1270 -@@ -2028,8 +2061,6 @@ static void ftdi_set_termios(struct tty_struct *tty,
1271 - "urb failed to set to rts/cts flow control\n");
1272 - }
1273 -
1274 -- /* raise DTR/RTS */
1275 -- set_mctrl(port, TIOCM_DTR | TIOCM_RTS);
1276 - } else {
1277 - /*
1278 - * Xon/Xoff code
1279 -@@ -2077,8 +2108,6 @@ static void ftdi_set_termios(struct tty_struct *tty,
1280 - }
1281 - }
1282 -
1283 -- /* lower DTR/RTS */
1284 -- clear_mctrl(port, TIOCM_DTR | TIOCM_RTS);
1285 - }
1286 - return;
1287 - }
1288 -diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
1289 -index 15a4583..cf1aea1b 100644
1290 ---- a/drivers/usb/serial/ftdi_sio_ids.h
1291 -+++ b/drivers/usb/serial/ftdi_sio_ids.h
1292 -@@ -61,6 +61,7 @@
1293 - #define FTDI_OPENDCC_SNIFFER_PID 0xBFD9
1294 - #define FTDI_OPENDCC_THROTTLE_PID 0xBFDA
1295 - #define FTDI_OPENDCC_GATEWAY_PID 0xBFDB
1296 -+#define FTDI_OPENDCC_GBM_PID 0xBFDC
1297 -
1298 - /*
1299 - * RR-CirKits LocoBuffer USB (http://www.rr-cirkits.com)
1300 -@@ -1022,9 +1023,34 @@
1301 - */
1302 -
1303 - #define PAPOUCH_VID 0x5050 /* Vendor ID */
1304 -+#define PAPOUCH_SB485_PID 0x0100 /* Papouch SB485 USB-485/422 Converter */
1305 -+#define PAPOUCH_AP485_PID 0x0101 /* AP485 USB-RS485 Converter */
1306 -+#define PAPOUCH_SB422_PID 0x0102 /* Papouch SB422 USB-RS422 Converter */
1307 -+#define PAPOUCH_SB485_2_PID 0x0103 /* Papouch SB485 USB-485/422 Converter */
1308 -+#define PAPOUCH_AP485_2_PID 0x0104 /* AP485 USB-RS485 Converter */
1309 -+#define PAPOUCH_SB422_2_PID 0x0105 /* Papouch SB422 USB-RS422 Converter */
1310 -+#define PAPOUCH_SB485S_PID 0x0106 /* Papouch SB485S USB-485/422 Converter */
1311 -+#define PAPOUCH_SB485C_PID 0x0107 /* Papouch SB485C USB-485/422 Converter */
1312 -+#define PAPOUCH_LEC_PID 0x0300 /* LEC USB Converter */
1313 -+#define PAPOUCH_SB232_PID 0x0301 /* Papouch SB232 USB-RS232 Converter */
1314 - #define PAPOUCH_TMU_PID 0x0400 /* TMU USB Thermometer */
1315 --#define PAPOUCH_QUIDO4x4_PID 0x0900 /* Quido 4/4 Module */
1316 -+#define PAPOUCH_IRAMP_PID 0x0500 /* Papouch IRAmp Duplex */
1317 -+#define PAPOUCH_DRAK5_PID 0x0700 /* Papouch DRAK5 */
1318 -+#define PAPOUCH_QUIDO8x8_PID 0x0800 /* Papouch Quido 8/8 Module */
1319 -+#define PAPOUCH_QUIDO4x4_PID 0x0900 /* Papouch Quido 4/4 Module */
1320 -+#define PAPOUCH_QUIDO2x2_PID 0x0a00 /* Papouch Quido 2/2 Module */
1321 -+#define PAPOUCH_QUIDO10x1_PID 0x0b00 /* Papouch Quido 10/1 Module */
1322 -+#define PAPOUCH_QUIDO30x3_PID 0x0c00 /* Papouch Quido 30/3 Module */
1323 -+#define PAPOUCH_QUIDO60x3_PID 0x0d00 /* Papouch Quido 60(100)/3 Module */
1324 -+#define PAPOUCH_QUIDO2x16_PID 0x0e00 /* Papouch Quido 2/16 Module */
1325 -+#define PAPOUCH_QUIDO3x32_PID 0x0f00 /* Papouch Quido 3/32 Module */
1326 -+#define PAPOUCH_DRAK6_PID 0x1000 /* Papouch DRAK6 */
1327 -+#define PAPOUCH_UPSUSB_PID 0x8000 /* Papouch UPS-USB adapter */
1328 -+#define PAPOUCH_MU_PID 0x8001 /* MU controller */
1329 -+#define PAPOUCH_SIMUKEY_PID 0x8002 /* Papouch SimuKey */
1330 - #define PAPOUCH_AD4USB_PID 0x8003 /* AD4USB Measurement Module */
1331 -+#define PAPOUCH_GMUX_PID 0x8004 /* Papouch GOLIATH MUX */
1332 -+#define PAPOUCH_GMSR_PID 0x8005 /* Papouch GOLIATH MSR */
1333 -
1334 - /*
1335 - * Marvell SheevaPlug
1336 -@@ -1063,3 +1089,14 @@
1337 - * Submitted by John G. Rogers
1338 - */
1339 - #define SEGWAY_RMP200_PID 0xe729
1340 -+
1341 -+
1342 -+/*
1343 -+ * Accesio USB Data Acquisition products (http://www.accesio.com/)
1344 -+ */
1345 -+#define ACCESIO_COM4SM_PID 0xD578
1346 -+
1347 -+/* www.sciencescope.co.uk educational dataloggers */
1348 -+#define FTDI_SCIENCESCOPE_LOGBOOKML_PID 0xFF18
1349 -+#define FTDI_SCIENCESCOPE_LS_LOGBOOK_PID 0xFF1C
1350 -+#define FTDI_SCIENCESCOPE_HS_LOGBOOK_PID 0xFF1D
1351 -diff --git a/drivers/usb/serial/mct_u232.c b/drivers/usb/serial/mct_u232.c
1352 -index 7aa01b9..2849f8c 100644
1353 ---- a/drivers/usb/serial/mct_u232.c
1354 -+++ b/drivers/usb/serial/mct_u232.c
1355 -@@ -549,9 +549,12 @@ static void mct_u232_close(struct usb_serial_port *port)
1356 - {
1357 - dbg("%s port %d", __func__, port->number);
1358 -
1359 -- usb_serial_generic_close(port);
1360 -- if (port->serial->dev)
1361 -+ if (port->serial->dev) {
1362 -+ /* shutdown our urbs */
1363 -+ usb_kill_urb(port->write_urb);
1364 -+ usb_kill_urb(port->read_urb);
1365 - usb_kill_urb(port->interrupt_in_urb);
1366 -+ }
1367 - } /* mct_u232_close */
1368 -
1369 -
1370 -diff --git a/drivers/usb/serial/opticon.c b/drivers/usb/serial/opticon.c
1371 -index ed01f3b..9ff19c8 100644
1372 ---- a/drivers/usb/serial/opticon.c
1373 -+++ b/drivers/usb/serial/opticon.c
1374 -@@ -96,8 +96,8 @@ static void opticon_bulk_callback(struct urb *urb)
1375 - /* real data, send it to the tty layer */
1376 - tty = tty_port_tty_get(&port->port);
1377 - if (tty) {
1378 -- tty_insert_flip_string(tty, data,
1379 -- data_length);
1380 -+ tty_insert_flip_string(tty, data + 2,
1381 -+ data_length);
1382 - tty_flip_buffer_push(tty);
1383 - tty_kref_put(tty);
1384 - }
1385 -@@ -130,7 +130,7 @@ exit:
1386 - priv->bulk_address),
1387 - priv->bulk_in_buffer, priv->buffer_size,
1388 - opticon_bulk_callback, priv);
1389 -- result = usb_submit_urb(port->read_urb, GFP_ATOMIC);
1390 -+ result = usb_submit_urb(priv->bulk_read_urb, GFP_ATOMIC);
1391 - if (result)
1392 - dev_err(&port->dev,
1393 - "%s - failed resubmitting read urb, error %d\n",
1394 -diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
1395 -index c46911a..51de0dd 100644
1396 ---- a/drivers/usb/serial/option.c
1397 -+++ b/drivers/usb/serial/option.c
1398 -@@ -622,6 +622,7 @@ static const struct usb_device_id option_ids[] = {
1399 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0011, 0xff, 0xff, 0xff) },
1400 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0012, 0xff, 0xff, 0xff) },
1401 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0013, 0xff, 0xff, 0xff) },
1402 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0014, 0xff, 0xff, 0xff) },
1403 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628, 0xff, 0xff, 0xff) },
1404 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0016, 0xff, 0xff, 0xff) },
1405 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0017, 0xff, 0xff, 0xff) },
1406 -@@ -633,38 +634,52 @@ static const struct usb_device_id option_ids[] = {
1407 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0023, 0xff, 0xff, 0xff) },
1408 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0024, 0xff, 0xff, 0xff) },
1409 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0025, 0xff, 0xff, 0xff) },
1410 -- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0026, 0xff, 0xff, 0xff) },
1411 -+ /* { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0026, 0xff, 0xff, 0xff) }, */
1412 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0028, 0xff, 0xff, 0xff) },
1413 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0029, 0xff, 0xff, 0xff) },
1414 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0030, 0xff, 0xff, 0xff) },
1415 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF626, 0xff, 0xff, 0xff) },
1416 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0032, 0xff, 0xff, 0xff) },
1417 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0033, 0xff, 0xff, 0xff) },
1418 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0034, 0xff, 0xff, 0xff) },
1419 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0037, 0xff, 0xff, 0xff) },
1420 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0038, 0xff, 0xff, 0xff) },
1421 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0039, 0xff, 0xff, 0xff) },
1422 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0040, 0xff, 0xff, 0xff) },
1423 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0042, 0xff, 0xff, 0xff) },
1424 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0043, 0xff, 0xff, 0xff) },
1425 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0044, 0xff, 0xff, 0xff) },
1426 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0048, 0xff, 0xff, 0xff) },
1427 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0049, 0xff, 0xff, 0xff) },
1428 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0050, 0xff, 0xff, 0xff) },
1429 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0051, 0xff, 0xff, 0xff) },
1430 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0052, 0xff, 0xff, 0xff) },
1431 -+ /* { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0053, 0xff, 0xff, 0xff) }, */
1432 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0054, 0xff, 0xff, 0xff) },
1433 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0055, 0xff, 0xff, 0xff) },
1434 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0056, 0xff, 0xff, 0xff) },
1435 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0057, 0xff, 0xff, 0xff) },
1436 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0058, 0xff, 0xff, 0xff) },
1437 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0059, 0xff, 0xff, 0xff) },
1438 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0061, 0xff, 0xff, 0xff) },
1439 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0062, 0xff, 0xff, 0xff) },
1440 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0063, 0xff, 0xff, 0xff) },
1441 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0064, 0xff, 0xff, 0xff) },
1442 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0065, 0xff, 0xff, 0xff) },
1443 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0066, 0xff, 0xff, 0xff) },
1444 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0067, 0xff, 0xff, 0xff) },
1445 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0069, 0xff, 0xff, 0xff) },
1446 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0070, 0xff, 0xff, 0xff) },
1447 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0076, 0xff, 0xff, 0xff) },
1448 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0077, 0xff, 0xff, 0xff) },
1449 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0078, 0xff, 0xff, 0xff) },
1450 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0079, 0xff, 0xff, 0xff) },
1451 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0082, 0xff, 0xff, 0xff) },
1452 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0083, 0xff, 0xff, 0xff) },
1453 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0086, 0xff, 0xff, 0xff) },
1454 -- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2002, 0xff, 0xff, 0xff) },
1455 -- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2003, 0xff, 0xff, 0xff) },
1456 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0087, 0xff, 0xff, 0xff) },
1457 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0104, 0xff, 0xff, 0xff) },
1458 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0105, 0xff, 0xff, 0xff) },
1459 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0106, 0xff, 0xff, 0xff) },
1460 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0108, 0xff, 0xff, 0xff) },
1461 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0113, 0xff, 0xff, 0xff) },
1462 -@@ -880,6 +895,8 @@ static const struct usb_device_id option_ids[] = {
1463 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0073, 0xff, 0xff, 0xff) },
1464 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0130, 0xff, 0xff, 0xff) },
1465 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0141, 0xff, 0xff, 0xff) },
1466 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2002, 0xff, 0xff, 0xff) },
1467 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2003, 0xff, 0xff, 0xff) },
1468 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH, 0xff, 0xff, 0xff) },
1469 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC8710, 0xff, 0xff, 0xff) },
1470 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC2726, 0xff, 0xff, 0xff) },
1471 -diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c
1472 -index eb76aae..15a5d89 100644
1473 ---- a/drivers/usb/serial/visor.c
1474 -+++ b/drivers/usb/serial/visor.c
1475 -@@ -606,6 +606,10 @@ static int treo_attach(struct usb_serial *serial)
1476 -
1477 - static int clie_5_attach(struct usb_serial *serial)
1478 - {
1479 -+ struct usb_serial_port *port;
1480 -+ unsigned int pipe;
1481 -+ int j;
1482 -+
1483 - dbg("%s", __func__);
1484 -
1485 - /* TH55 registers 2 ports.
1486 -@@ -621,9 +625,14 @@ static int clie_5_attach(struct usb_serial *serial)
1487 - return -1;
1488 -
1489 - /* port 0 now uses the modified endpoint Address */
1490 -- serial->port[0]->bulk_out_endpointAddress =
1491 -+ port = serial->port[0];
1492 -+ port->bulk_out_endpointAddress =
1493 - serial->port[1]->bulk_out_endpointAddress;
1494 -
1495 -+ pipe = usb_sndbulkpipe(serial->dev, port->bulk_out_endpointAddress);
1496 -+ for (j = 0; j < ARRAY_SIZE(port->write_urbs); ++j)
1497 -+ port->write_urbs[j]->pipe = pipe;
1498 -+
1499 - return 0;
1500 - }
1501 -
1502 -diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h
1503 -index 1d60c65..f110e0e 100644
1504 ---- a/fs/cifs/cifsproto.h
1505 -+++ b/fs/cifs/cifsproto.h
1506 -@@ -107,7 +107,8 @@ extern struct timespec cnvrtDosUnixTm(__le16 le_date, __le16 le_time,
1507 -
1508 - extern struct cifsFileInfo *cifs_new_fileinfo(struct inode *newinode,
1509 - __u16 fileHandle, struct file *file,
1510 -- struct vfsmount *mnt, unsigned int oflags);
1511 -+ struct vfsmount *mnt, unsigned int oflags,
1512 -+ __u32 oplock);
1513 - extern int cifs_posix_open(char *full_path, struct inode **pinode,
1514 - struct super_block *sb,
1515 - int mode, int oflags,
1516 -diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c
1517 -index f9ed075..0f947bf 100644
1518 ---- a/fs/cifs/dir.c
1519 -+++ b/fs/cifs/dir.c
1520 -@@ -132,9 +132,9 @@ cifs_bp_rename_retry:
1521 -
1522 - struct cifsFileInfo *
1523 - cifs_new_fileinfo(struct inode *newinode, __u16 fileHandle,
1524 -- struct file *file, struct vfsmount *mnt, unsigned int oflags)
1525 -+ struct file *file, struct vfsmount *mnt, unsigned int oflags,
1526 -+ __u32 oplock)
1527 - {
1528 -- int oplock = 0;
1529 - struct cifsFileInfo *pCifsFile;
1530 - struct cifsInodeInfo *pCifsInode;
1531 - struct cifs_sb_info *cifs_sb = CIFS_SB(mnt->mnt_sb);
1532 -@@ -143,9 +143,6 @@ cifs_new_fileinfo(struct inode *newinode, __u16 fileHandle,
1533 - if (pCifsFile == NULL)
1534 - return pCifsFile;
1535 -
1536 -- if (oplockEnabled)
1537 -- oplock = REQ_OPLOCK;
1538 --
1539 - pCifsFile->netfid = fileHandle;
1540 - pCifsFile->pid = current->tgid;
1541 - pCifsFile->pInode = igrab(newinode);
1542 -@@ -468,7 +465,7 @@ cifs_create_set_dentry:
1543 - }
1544 -
1545 - pfile_info = cifs_new_fileinfo(newinode, fileHandle, filp,
1546 -- nd->path.mnt, oflags);
1547 -+ nd->path.mnt, oflags, oplock);
1548 - if (pfile_info == NULL) {
1549 - fput(filp);
1550 - CIFSSMBClose(xid, tcon, fileHandle);
1551 -@@ -729,7 +726,8 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
1552 -
1553 - cfile = cifs_new_fileinfo(newInode, fileHandle, filp,
1554 - nd->path.mnt,
1555 -- nd->intent.open.flags);
1556 -+ nd->intent.open.flags,
1557 -+ oplock);
1558 - if (cfile == NULL) {
1559 - fput(filp);
1560 - CIFSSMBClose(xid, pTcon, fileHandle);
1561 -diff --git a/fs/cifs/file.c b/fs/cifs/file.c
1562 -index de748c6..681761c 100644
1563 ---- a/fs/cifs/file.c
1564 -+++ b/fs/cifs/file.c
1565 -@@ -277,7 +277,7 @@ int cifs_open(struct inode *inode, struct file *file)
1566 -
1567 - pCifsFile = cifs_new_fileinfo(inode, netfid, file,
1568 - file->f_path.mnt,
1569 -- oflags);
1570 -+ oflags, oplock);
1571 - if (pCifsFile == NULL) {
1572 - CIFSSMBClose(xid, tcon, netfid);
1573 - rc = -ENOMEM;
1574 -@@ -370,7 +370,7 @@ int cifs_open(struct inode *inode, struct file *file)
1575 - goto out;
1576 -
1577 - pCifsFile = cifs_new_fileinfo(inode, netfid, file, file->f_path.mnt,
1578 -- file->f_flags);
1579 -+ file->f_flags, oplock);
1580 - if (pCifsFile == NULL) {
1581 - rc = -ENOMEM;
1582 - goto out;
1583 -diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c
1584 -index 064a809..84d3c8b 100644
1585 ---- a/fs/nfs/direct.c
1586 -+++ b/fs/nfs/direct.c
1587 -@@ -873,7 +873,7 @@ static ssize_t nfs_direct_write(struct kiocb *iocb, const struct iovec *iov,
1588 - dreq->inode = inode;
1589 - dreq->ctx = get_nfs_open_context(nfs_file_open_context(iocb->ki_filp));
1590 - dreq->l_ctx = nfs_get_lock_context(dreq->ctx);
1591 -- if (dreq->l_ctx != NULL)
1592 -+ if (dreq->l_ctx == NULL)
1593 - goto out_release;
1594 - if (!is_sync_kiocb(iocb))
1595 - dreq->iocb = iocb;
1596 -diff --git a/fs/pipe.c b/fs/pipe.c
1597 -index 279eef9..37eb1eb 100644
1598 ---- a/fs/pipe.c
1599 -+++ b/fs/pipe.c
1600 -@@ -382,7 +382,7 @@ pipe_read(struct kiocb *iocb, const struct iovec *_iov,
1601 - error = ops->confirm(pipe, buf);
1602 - if (error) {
1603 - if (!ret)
1604 -- error = ret;
1605 -+ ret = error;
1606 - break;
1607 - }
1608 -
1609 -diff --git a/kernel/futex.c b/kernel/futex.c
1610 -index 6a3a5fa..e328f57 100644
1611 ---- a/kernel/futex.c
1612 -+++ b/kernel/futex.c
1613 -@@ -1363,7 +1363,6 @@ static inline struct futex_hash_bucket *queue_lock(struct futex_q *q)
1614 - {
1615 - struct futex_hash_bucket *hb;
1616 -
1617 -- get_futex_key_refs(&q->key);
1618 - hb = hash_futex(&q->key);
1619 - q->lock_ptr = &hb->lock;
1620 -
1621 -@@ -1375,7 +1374,6 @@ static inline void
1622 - queue_unlock(struct futex_q *q, struct futex_hash_bucket *hb)
1623 - {
1624 - spin_unlock(&hb->lock);
1625 -- drop_futex_key_refs(&q->key);
1626 - }
1627 -
1628 - /**
1629 -@@ -1480,8 +1478,6 @@ static void unqueue_me_pi(struct futex_q *q)
1630 - q->pi_state = NULL;
1631 -
1632 - spin_unlock(q->lock_ptr);
1633 --
1634 -- drop_futex_key_refs(&q->key);
1635 - }
1636 -
1637 - /*
1638 -@@ -1812,7 +1808,10 @@ static int futex_wait(u32 __user *uaddr, int fshared,
1639 - }
1640 -
1641 - retry:
1642 -- /* Prepare to wait on uaddr. */
1643 -+ /*
1644 -+ * Prepare to wait on uaddr. On success, holds hb lock and increments
1645 -+ * q.key refs.
1646 -+ */
1647 - ret = futex_wait_setup(uaddr, val, fshared, &q, &hb);
1648 - if (ret)
1649 - goto out;
1650 -@@ -1822,24 +1821,23 @@ retry:
1651 -
1652 - /* If we were woken (and unqueued), we succeeded, whatever. */
1653 - ret = 0;
1654 -+ /* unqueue_me() drops q.key ref */
1655 - if (!unqueue_me(&q))
1656 -- goto out_put_key;
1657 -+ goto out;
1658 - ret = -ETIMEDOUT;
1659 - if (to && !to->task)
1660 -- goto out_put_key;
1661 -+ goto out;
1662 -
1663 - /*
1664 - * We expect signal_pending(current), but we might be the
1665 - * victim of a spurious wakeup as well.
1666 - */
1667 -- if (!signal_pending(current)) {
1668 -- put_futex_key(fshared, &q.key);
1669 -+ if (!signal_pending(current))
1670 - goto retry;
1671 -- }
1672 -
1673 - ret = -ERESTARTSYS;
1674 - if (!abs_time)
1675 -- goto out_put_key;
1676 -+ goto out;
1677 -
1678 - restart = &current_thread_info()->restart_block;
1679 - restart->fn = futex_wait_restart;
1680 -@@ -1856,8 +1854,6 @@ retry:
1681 -
1682 - ret = -ERESTART_RESTARTBLOCK;
1683 -
1684 --out_put_key:
1685 -- put_futex_key(fshared, &q.key);
1686 - out:
1687 - if (to) {
1688 - hrtimer_cancel(&to->timer);
1689 -@@ -2236,7 +2232,10 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, int fshared,
1690 - q.rt_waiter = &rt_waiter;
1691 - q.requeue_pi_key = &key2;
1692 -
1693 -- /* Prepare to wait on uaddr. */
1694 -+ /*
1695 -+ * Prepare to wait on uaddr. On success, increments q.key (key1) ref
1696 -+ * count.
1697 -+ */
1698 - ret = futex_wait_setup(uaddr, val, fshared, &q, &hb);
1699 - if (ret)
1700 - goto out_key2;
1701 -@@ -2254,7 +2253,9 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, int fshared,
1702 - * In order for us to be here, we know our q.key == key2, and since
1703 - * we took the hb->lock above, we also know that futex_requeue() has
1704 - * completed and we no longer have to concern ourselves with a wakeup
1705 -- * race with the atomic proxy lock acquition by the requeue code.
1706 -+ * race with the atomic proxy lock acquisition by the requeue code. The
1707 -+ * futex_requeue dropped our key1 reference and incremented our key2
1708 -+ * reference count.
1709 - */
1710 -
1711 - /* Check if the requeue code acquired the second futex for us. */
1712 -diff --git a/kernel/perf_event.c b/kernel/perf_event.c
1713 -index b98bed3..03bb897 100644
1714 ---- a/kernel/perf_event.c
1715 -+++ b/kernel/perf_event.c
1716 -@@ -1773,7 +1773,13 @@ static u64 perf_event_read(struct perf_event *event)
1717 - unsigned long flags;
1718 -
1719 - raw_spin_lock_irqsave(&ctx->lock, flags);
1720 -- update_context_time(ctx);
1721 -+ /*
1722 -+ * may read while context is not active
1723 -+ * (e.g., thread is blocked), in that case
1724 -+ * we cannot update context time
1725 -+ */
1726 -+ if (ctx->is_active)
1727 -+ update_context_time(ctx);
1728 - update_event_times(event);
1729 - raw_spin_unlock_irqrestore(&ctx->lock, flags);
1730 - }
1731 -diff --git a/kernel/sched.c b/kernel/sched.c
1732 -index dc85ceb..3fd774c 100644
1733 ---- a/kernel/sched.c
1734 -+++ b/kernel/sched.c
1735 -@@ -723,7 +723,7 @@ sched_feat_write(struct file *filp, const char __user *ubuf,
1736 - size_t cnt, loff_t *ppos)
1737 - {
1738 - char buf[64];
1739 -- char *cmp = buf;
1740 -+ char *cmp;
1741 - int neg = 0;
1742 - int i;
1743 -
1744 -@@ -734,6 +734,7 @@ sched_feat_write(struct file *filp, const char __user *ubuf,
1745 - return -EFAULT;
1746 -
1747 - buf[cnt] = 0;
1748 -+ cmp = strstrip(buf);
1749 -
1750 - if (strncmp(buf, "NO_", 3) == 0) {
1751 - neg = 1;
1752 -@@ -741,9 +742,7 @@ sched_feat_write(struct file *filp, const char __user *ubuf,
1753 - }
1754 -
1755 - for (i = 0; sched_feat_names[i]; i++) {
1756 -- int len = strlen(sched_feat_names[i]);
1757 --
1758 -- if (strncmp(cmp, sched_feat_names[i], len) == 0) {
1759 -+ if (strcmp(cmp, sched_feat_names[i]) == 0) {
1760 - if (neg)
1761 - sysctl_sched_features &= ~(1UL << i);
1762 - else
1763 -@@ -1858,12 +1857,6 @@ static void dec_nr_running(struct rq *rq)
1764 -
1765 - static void set_load_weight(struct task_struct *p)
1766 - {
1767 -- if (task_has_rt_policy(p)) {
1768 -- p->se.load.weight = 0;
1769 -- p->se.load.inv_weight = WMULT_CONST;
1770 -- return;
1771 -- }
1772 --
1773 - /*
1774 - * SCHED_IDLE tasks get minimal weight:
1775 - */
1776 -diff --git a/mm/vmalloc.c b/mm/vmalloc.c
1777 -index 6b8889d..d8087f0 100644
1778 ---- a/mm/vmalloc.c
1779 -+++ b/mm/vmalloc.c
1780 -@@ -517,6 +517,15 @@ static atomic_t vmap_lazy_nr = ATOMIC_INIT(0);
1781 - static void purge_fragmented_blocks_allcpus(void);
1782 -
1783 - /*
1784 -+ * called before a call to iounmap() if the caller wants vm_area_struct's
1785 -+ * immediately freed.
1786 -+ */
1787 -+void set_iounmap_nonlazy(void)
1788 -+{
1789 -+ atomic_set(&vmap_lazy_nr, lazy_max_pages()+1);
1790 -+}
1791 -+
1792 -+/*
1793 - * Purges all lazily-freed vmap areas.
1794 - *
1795 - * If sync is 0 then don't purge if there is already a purge in progress.
1796 -diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c
1797 -index 0b54b7d..dc60205 100644
1798 ---- a/net/bluetooth/l2cap.c
1799 -+++ b/net/bluetooth/l2cap.c
1800 -@@ -2891,7 +2891,7 @@ static inline int l2cap_connect_req(struct l2cap_conn *conn, struct l2cap_cmd_hd
1801 - struct l2cap_chan_list *list = &conn->chan_list;
1802 - struct l2cap_conn_req *req = (struct l2cap_conn_req *) data;
1803 - struct l2cap_conn_rsp rsp;
1804 -- struct sock *parent, *uninitialized_var(sk);
1805 -+ struct sock *parent, *sk = NULL;
1806 - int result, status = L2CAP_CS_NO_INFO;
1807 -
1808 - u16 dcid = 0, scid = __le16_to_cpu(req->scid);
1809 -@@ -3000,7 +3000,7 @@ sendresp:
1810 - L2CAP_INFO_REQ, sizeof(info), &info);
1811 - }
1812 -
1813 -- if (!(l2cap_pi(sk)->conf_state & L2CAP_CONF_REQ_SENT) &&
1814 -+ if (sk && !(l2cap_pi(sk)->conf_state & L2CAP_CONF_REQ_SENT) &&
1815 - result == L2CAP_CR_SUCCESS) {
1816 - u8 buf[128];
1817 - l2cap_pi(sk)->conf_state |= L2CAP_CONF_REQ_SENT;
1818 -diff --git a/net/netfilter/xt_SECMARK.c b/net/netfilter/xt_SECMARK.c
1819 -index 23b2d6c..364ad16 100644
1820 ---- a/net/netfilter/xt_SECMARK.c
1821 -+++ b/net/netfilter/xt_SECMARK.c
1822 -@@ -101,7 +101,7 @@ static int secmark_tg_check(const struct xt_tgchk_param *par)
1823 - switch (info->mode) {
1824 - case SECMARK_MODE_SEL:
1825 - err = checkentry_selinux(info);
1826 -- if (err <= 0)
1827 -+ if (err)
1828 - return err;
1829 - break;
1830 -
1831
1832 Deleted: genpatches-2.6/trunk/2.6.37/2700_disable-sticky-PCM-stream-assignment-for-AD-codecs.patch
1833 ===================================================================
1834 --- genpatches-2.6/trunk/2.6.37/2700_disable-sticky-PCM-stream-assignment-for-AD-codecs.patch 2010-12-01 17:08:49 UTC (rev 1836)
1835 +++ genpatches-2.6/trunk/2.6.37/2700_disable-sticky-PCM-stream-assignment-for-AD-codecs.patch 2010-12-01 17:11:44 UTC (rev 1837)
1836 @@ -1,80 +0,0 @@
1837 ---- a/sound/pci/hda/hda_codec.c 2010-11-04 14:59:50.000000000 -0400
1838 -+++ b/sound/pci/hda/hda_codec.c 2010-11-04 15:01:20.000000000 -0400
1839 -@@ -1281,6 +1281,9 @@ void __snd_hda_codec_cleanup_stream(stru
1840 - if (!nid)
1841 - return;
1842 -
1843 -+ if (codec->no_sticky_stream)
1844 -+ do_now = 1;
1845 -+
1846 - snd_printdd("hda_codec_cleanup_stream: NID=0x%x\n", nid);
1847 - p = get_hda_cvt_setup(codec, nid);
1848 - if (p) {
1849 ---- a/sound/pci/hda/hda_codec.h 2010-11-04 14:59:52.000000000 -0400
1850 -+++ b/sound/pci/hda/hda_codec.h 2010-11-04 15:01:49.000000000 -0400
1851 -@@ -850,6 +850,7 @@ struct hda_codec {
1852 - unsigned int pin_amp_workaround:1; /* pin out-amp takes index
1853 - * (e.g. Conexant codecs)
1854 - */
1855 -+ unsigned int no_sticky_stream:1; /* no sticky-PCM stream assignment */
1856 - unsigned int pins_shutup:1; /* pins are shut up */
1857 - unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */
1858 - #ifdef CONFIG_SND_HDA_POWER_SAVE
1859 ---- a/sound/pci/hda/patch_analog.c 2010-11-04 15:00:03.000000000 -0400
1860 -+++ b/sound/pci/hda/patch_analog.c 2010-11-04 15:03:24.000000000 -0400
1861 -@@ -1276,6 +1276,7 @@ static int patch_ad1986a(struct hda_code
1862 - spec->multiout.no_share_stream = 1;
1863 -
1864 - codec->no_trigger_sense = 1;
1865 -+ codec->no_sticky_stream = 1;
1866 -
1867 - return 0;
1868 - }
1869 -@@ -1463,6 +1464,7 @@ static int patch_ad1983(struct hda_codec
1870 - codec->patch_ops = ad198x_patch_ops;
1871 -
1872 - codec->no_trigger_sense = 1;
1873 -+ codec->no_sticky_stream = 1;
1874 -
1875 - return 0;
1876 - }
1877 -@@ -1917,6 +1919,7 @@ static int patch_ad1981(struct hda_codec
1878 - }
1879 -
1880 - codec->no_trigger_sense = 1;
1881 -+ codec->no_sticky_stream = 1;
1882 -
1883 - return 0;
1884 - }
1885 -@@ -3235,6 +3238,7 @@ static int patch_ad1988(struct hda_codec
1886 - spec->vmaster_nid = 0x04;
1887 -
1888 - codec->no_trigger_sense = 1;
1889 -+ codec->no_sticky_stream = 1;
1890 -
1891 - return 0;
1892 - }
1893 -@@ -3449,6 +3453,7 @@ static int patch_ad1884(struct hda_codec
1894 - codec->patch_ops = ad198x_patch_ops;
1895 -
1896 - codec->no_trigger_sense = 1;
1897 -+ codec->no_sticky_stream = 1;
1898 -
1899 - return 0;
1900 - }
1901 -@@ -4422,6 +4427,7 @@ static int patch_ad1884a(struct hda_code
1902 - }
1903 -
1904 - codec->no_trigger_sense = 1;
1905 -+ codec->no_sticky_stream = 1;
1906 -
1907 - return 0;
1908 - }
1909 -@@ -4761,6 +4767,7 @@ static int patch_ad1882(struct hda_codec
1910 - }
1911 -
1912 - codec->no_trigger_sense = 1;
1913 -+ codec->no_sticky_stream = 1;
1914 -
1915 - return 0;
1916 - }
1917
1918 Deleted: genpatches-2.6/trunk/2.6.37/2800_ttm-bo-init-retry-after-failure.patch
1919 ===================================================================
1920 --- genpatches-2.6/trunk/2.6.37/2800_ttm-bo-init-retry-after-failure.patch 2010-12-01 17:08:49 UTC (rev 1836)
1921 +++ genpatches-2.6/trunk/2.6.37/2800_ttm-bo-init-retry-after-failure.patch 2010-12-01 17:11:44 UTC (rev 1837)
1922 @@ -1,20 +0,0 @@
1923 ---- a/drivers/gpu/drm/radeon/radeon_object.c 2010-11-30 19:36:43.003461127 -0500
1924 -+++ b/drivers/gpu/drm/radeon/radeon_object.c 2010-11-30 19:44:48.197516895 -0500
1925 -@@ -102,6 +102,8 @@ int radeon_bo_create(struct radeon_devic
1926 - type = ttm_bo_type_device;
1927 - }
1928 - *bo_ptr = NULL;
1929 -+
1930 -+retry:
1931 - bo = kzalloc(sizeof(struct radeon_bo), GFP_KERNEL);
1932 - if (bo == NULL)
1933 - return -ENOMEM;
1934 -@@ -109,8 +111,6 @@ int radeon_bo_create(struct radeon_devic
1935 - bo->gobj = gobj;
1936 - bo->surface_reg = -1;
1937 - INIT_LIST_HEAD(&bo->list);
1938 --
1939 --retry:
1940 - radeon_ttm_placement_from_domain(bo, domain);
1941 - /* Kernel allocation are uninterruptible */
1942 - mutex_lock(&rdev->vram_mutex);