Magellan Linux

Contents of /trunk/kernel-alx/patches-3.10/0110-3.10.11-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2288 - (show annotations) (download)
Wed Sep 25 06:47:47 2013 UTC (10 years, 7 months ago) by niro
File size: 39064 byte(s)
-linux-3.10 patches
1 diff --git a/Documentation/hwmon/k10temp b/Documentation/hwmon/k10temp
2 index 90956b6..4dfdc8f 100644
3 --- a/Documentation/hwmon/k10temp
4 +++ b/Documentation/hwmon/k10temp
5 @@ -12,6 +12,7 @@ Supported chips:
6 * AMD Family 12h processors: "Llano" (E2/A4/A6/A8-Series)
7 * AMD Family 14h processors: "Brazos" (C/E/G/Z-Series)
8 * AMD Family 15h processors: "Bulldozer" (FX-Series), "Trinity"
9 +* AMD Family 16h processors: "Kabini"
10
11 Prefix: 'k10temp'
12 Addresses scanned: PCI space
13 diff --git a/Makefile b/Makefile
14 index b119684..595076d 100644
15 --- a/Makefile
16 +++ b/Makefile
17 @@ -1,6 +1,6 @@
18 VERSION = 3
19 PATCHLEVEL = 10
20 -SUBLEVEL = 10
21 +SUBLEVEL = 11
22 EXTRAVERSION =
23 NAME = TOSSUG Baby Fish
24
25 diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
26 index 13609e0..05db95d 100644
27 --- a/arch/arm/xen/enlighten.c
28 +++ b/arch/arm/xen/enlighten.c
29 @@ -170,6 +170,7 @@ static void __init xen_percpu_init(void *unused)
30 per_cpu(xen_vcpu, cpu) = vcpup;
31
32 enable_percpu_irq(xen_events_irq, 0);
33 + put_cpu();
34 }
35
36 static void xen_restart(char str, const char *cmd)
37 diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
38 index 74991fe..fe404e7 100644
39 --- a/arch/powerpc/Kconfig
40 +++ b/arch/powerpc/Kconfig
41 @@ -986,6 +986,7 @@ config RELOCATABLE
42 must live at a different physical address than the primary
43 kernel.
44
45 +# This value must have zeroes in the bottom 60 bits otherwise lots will break
46 config PAGE_OFFSET
47 hex
48 default "0xc000000000000000"
49 diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h
50 index 988c812..b9f4262 100644
51 --- a/arch/powerpc/include/asm/page.h
52 +++ b/arch/powerpc/include/asm/page.h
53 @@ -211,9 +211,19 @@ extern long long virt_phys_offset;
54 #define __va(x) ((void *)(unsigned long)((phys_addr_t)(x) + VIRT_PHYS_OFFSET))
55 #define __pa(x) ((unsigned long)(x) - VIRT_PHYS_OFFSET)
56 #else
57 +#ifdef CONFIG_PPC64
58 +/*
59 + * gcc miscompiles (unsigned long)(&static_var) - PAGE_OFFSET
60 + * with -mcmodel=medium, so we use & and | instead of - and + on 64-bit.
61 + */
62 +#define __va(x) ((void *)(unsigned long)((phys_addr_t)(x) | PAGE_OFFSET))
63 +#define __pa(x) ((unsigned long)(x) & 0x0fffffffffffffffUL)
64 +
65 +#else /* 32-bit, non book E */
66 #define __va(x) ((void *)(unsigned long)((phys_addr_t)(x) + PAGE_OFFSET - MEMORY_START))
67 #define __pa(x) ((unsigned long)(x) - PAGE_OFFSET + MEMORY_START)
68 #endif
69 +#endif
70
71 /*
72 * Unfortunately the PLT is in the BSS in the PPC32 ELF ABI,
73 diff --git a/arch/powerpc/kernel/lparcfg.c b/arch/powerpc/kernel/lparcfg.c
74 index d92f387..e2a0a16 100644
75 --- a/arch/powerpc/kernel/lparcfg.c
76 +++ b/arch/powerpc/kernel/lparcfg.c
77 @@ -35,7 +35,13 @@
78 #include <asm/vdso_datapage.h>
79 #include <asm/vio.h>
80 #include <asm/mmu.h>
81 +#include <asm/machdep.h>
82
83 +
84 +/*
85 + * This isn't a module but we expose that to userspace
86 + * via /proc so leave the definitions here
87 + */
88 #define MODULE_VERS "1.9"
89 #define MODULE_NAME "lparcfg"
90
91 @@ -418,7 +424,8 @@ static void parse_em_data(struct seq_file *m)
92 {
93 unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
94
95 - if (plpar_hcall(H_GET_EM_PARMS, retbuf) == H_SUCCESS)
96 + if (firmware_has_feature(FW_FEATURE_LPAR) &&
97 + plpar_hcall(H_GET_EM_PARMS, retbuf) == H_SUCCESS)
98 seq_printf(m, "power_mode_data=%016lx\n", retbuf[0]);
99 }
100
101 @@ -677,7 +684,6 @@ static int lparcfg_open(struct inode *inode, struct file *file)
102 }
103
104 static const struct file_operations lparcfg_fops = {
105 - .owner = THIS_MODULE,
106 .read = seq_read,
107 .write = lparcfg_write,
108 .open = lparcfg_open,
109 @@ -699,14 +705,4 @@ static int __init lparcfg_init(void)
110 }
111 return 0;
112 }
113 -
114 -static void __exit lparcfg_cleanup(void)
115 -{
116 - remove_proc_subtree("powerpc/lparcfg", NULL);
117 -}
118 -
119 -module_init(lparcfg_init);
120 -module_exit(lparcfg_cleanup);
121 -MODULE_DESCRIPTION("Interface for LPAR configuration data");
122 -MODULE_AUTHOR("Dave Engebretsen");
123 -MODULE_LICENSE("GPL");
124 +machine_device_initcall(pseries, lparcfg_init);
125 diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
126 index 1f34e92..7a5bf1b 100644
127 --- a/arch/x86/mm/init.c
128 +++ b/arch/x86/mm/init.c
129 @@ -78,8 +78,8 @@ __ref void *alloc_low_pages(unsigned int num)
130 return __va(pfn << PAGE_SHIFT);
131 }
132
133 -/* need 4 4k for initial PMD_SIZE, 4k for 0-ISA_END_ADDRESS */
134 -#define INIT_PGT_BUF_SIZE (5 * PAGE_SIZE)
135 +/* need 3 4k for initial PMD_SIZE, 3 4k for 0-ISA_END_ADDRESS */
136 +#define INIT_PGT_BUF_SIZE (6 * PAGE_SIZE)
137 RESERVE_BRK(early_pgt_alloc, INIT_PGT_BUF_SIZE);
138 void __init early_alloc_pgt_buf(void)
139 {
140 diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
141 index 80403c1..45af90a 100644
142 --- a/drivers/acpi/ec.c
143 +++ b/drivers/acpi/ec.c
144 @@ -987,6 +987,10 @@ static struct dmi_system_id __initdata ec_dmi_table[] = {
145 ec_skip_dsdt_scan, "HP Folio 13", {
146 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
147 DMI_MATCH(DMI_PRODUCT_NAME, "HP Folio 13"),}, NULL},
148 + {
149 + ec_validate_ecdt, "ASUS hardware", {
150 + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTek Computer Inc."),
151 + DMI_MATCH(DMI_PRODUCT_NAME, "L4R"),}, NULL},
152 {},
153 };
154
155 diff --git a/drivers/base/memory.c b/drivers/base/memory.c
156 index 14f8a69..86abbff 100644
157 --- a/drivers/base/memory.c
158 +++ b/drivers/base/memory.c
159 @@ -152,6 +152,8 @@ static ssize_t show_mem_removable(struct device *dev,
160 container_of(dev, struct memory_block, dev);
161
162 for (i = 0; i < sections_per_block; i++) {
163 + if (!present_section_nr(mem->start_section_nr + i))
164 + continue;
165 pfn = section_nr_to_pfn(mem->start_section_nr + i);
166 ret &= is_mem_section_removable(pfn, PAGES_PER_SECTION);
167 }
168 diff --git a/drivers/base/regmap/regcache-rbtree.c b/drivers/base/regmap/regcache-rbtree.c
169 index 02f490b..bb8c3bb 100644
170 --- a/drivers/base/regmap/regcache-rbtree.c
171 +++ b/drivers/base/regmap/regcache-rbtree.c
172 @@ -362,7 +362,7 @@ static int regcache_rbtree_write(struct regmap *map, unsigned int reg,
173 rbnode = kzalloc(sizeof *rbnode, GFP_KERNEL);
174 if (!rbnode)
175 return -ENOMEM;
176 - rbnode->blklen = sizeof(*rbnode);
177 + rbnode->blklen = 1;
178 rbnode->base_reg = reg;
179 rbnode->block = kmalloc(rbnode->blklen * map->cache_word_size,
180 GFP_KERNEL);
181 diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
182 index 01f6c2c..a365780 100644
183 --- a/drivers/gpu/drm/i915/i915_reg.h
184 +++ b/drivers/gpu/drm/i915/i915_reg.h
185 @@ -4246,7 +4246,7 @@
186 #define EDP_LINK_TRAIN_600MV_0DB_IVB (0x30 <<22)
187 #define EDP_LINK_TRAIN_600MV_3_5DB_IVB (0x36 <<22)
188 #define EDP_LINK_TRAIN_800MV_0DB_IVB (0x38 <<22)
189 -#define EDP_LINK_TRAIN_800MV_3_5DB_IVB (0x33 <<22)
190 +#define EDP_LINK_TRAIN_800MV_3_5DB_IVB (0x3e <<22)
191
192 /* legacy values */
193 #define EDP_LINK_TRAIN_500MV_0DB_IVB (0x00 <<22)
194 diff --git a/drivers/gpu/drm/nouveau/core/include/subdev/mc.h b/drivers/gpu/drm/nouveau/core/include/subdev/mc.h
195 index d550226..9d2cd20 100644
196 --- a/drivers/gpu/drm/nouveau/core/include/subdev/mc.h
197 +++ b/drivers/gpu/drm/nouveau/core/include/subdev/mc.h
198 @@ -20,8 +20,8 @@ nouveau_mc(void *obj)
199 return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_MC];
200 }
201
202 -#define nouveau_mc_create(p,e,o,d) \
203 - nouveau_mc_create_((p), (e), (o), sizeof(**d), (void **)d)
204 +#define nouveau_mc_create(p,e,o,m,d) \
205 + nouveau_mc_create_((p), (e), (o), (m), sizeof(**d), (void **)d)
206 #define nouveau_mc_destroy(p) ({ \
207 struct nouveau_mc *pmc = (p); _nouveau_mc_dtor(nv_object(pmc)); \
208 })
209 @@ -33,7 +33,8 @@ nouveau_mc(void *obj)
210 })
211
212 int nouveau_mc_create_(struct nouveau_object *, struct nouveau_object *,
213 - struct nouveau_oclass *, int, void **);
214 + struct nouveau_oclass *, const struct nouveau_mc_intr *,
215 + int, void **);
216 void _nouveau_mc_dtor(struct nouveau_object *);
217 int _nouveau_mc_init(struct nouveau_object *);
218 int _nouveau_mc_fini(struct nouveau_object *, bool);
219 diff --git a/drivers/gpu/drm/nouveau/core/subdev/mc/base.c b/drivers/gpu/drm/nouveau/core/subdev/mc/base.c
220 index 1c0330b..ec9cd6f 100644
221 --- a/drivers/gpu/drm/nouveau/core/subdev/mc/base.c
222 +++ b/drivers/gpu/drm/nouveau/core/subdev/mc/base.c
223 @@ -80,7 +80,9 @@ _nouveau_mc_dtor(struct nouveau_object *object)
224
225 int
226 nouveau_mc_create_(struct nouveau_object *parent, struct nouveau_object *engine,
227 - struct nouveau_oclass *oclass, int length, void **pobject)
228 + struct nouveau_oclass *oclass,
229 + const struct nouveau_mc_intr *intr_map,
230 + int length, void **pobject)
231 {
232 struct nouveau_device *device = nv_device(parent);
233 struct nouveau_mc *pmc;
234 @@ -92,6 +94,8 @@ nouveau_mc_create_(struct nouveau_object *parent, struct nouveau_object *engine,
235 if (ret)
236 return ret;
237
238 + pmc->intr_map = intr_map;
239 +
240 ret = request_irq(device->pdev->irq, nouveau_mc_intr,
241 IRQF_SHARED, "nouveau", pmc);
242 if (ret < 0)
243 diff --git a/drivers/gpu/drm/nouveau/core/subdev/mc/nv04.c b/drivers/gpu/drm/nouveau/core/subdev/mc/nv04.c
244 index 8c76971..64aa4ed 100644
245 --- a/drivers/gpu/drm/nouveau/core/subdev/mc/nv04.c
246 +++ b/drivers/gpu/drm/nouveau/core/subdev/mc/nv04.c
247 @@ -50,12 +50,11 @@ nv04_mc_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
248 struct nv04_mc_priv *priv;
249 int ret;
250
251 - ret = nouveau_mc_create(parent, engine, oclass, &priv);
252 + ret = nouveau_mc_create(parent, engine, oclass, nv04_mc_intr, &priv);
253 *pobject = nv_object(priv);
254 if (ret)
255 return ret;
256
257 - priv->base.intr_map = nv04_mc_intr;
258 return 0;
259 }
260
261 diff --git a/drivers/gpu/drm/nouveau/core/subdev/mc/nv44.c b/drivers/gpu/drm/nouveau/core/subdev/mc/nv44.c
262 index 5191937..d989178 100644
263 --- a/drivers/gpu/drm/nouveau/core/subdev/mc/nv44.c
264 +++ b/drivers/gpu/drm/nouveau/core/subdev/mc/nv44.c
265 @@ -36,12 +36,11 @@ nv44_mc_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
266 struct nv44_mc_priv *priv;
267 int ret;
268
269 - ret = nouveau_mc_create(parent, engine, oclass, &priv);
270 + ret = nouveau_mc_create(parent, engine, oclass, nv04_mc_intr, &priv);
271 *pobject = nv_object(priv);
272 if (ret)
273 return ret;
274
275 - priv->base.intr_map = nv04_mc_intr;
276 return 0;
277 }
278
279 diff --git a/drivers/gpu/drm/nouveau/core/subdev/mc/nv50.c b/drivers/gpu/drm/nouveau/core/subdev/mc/nv50.c
280 index d796924..732d810 100644
281 --- a/drivers/gpu/drm/nouveau/core/subdev/mc/nv50.c
282 +++ b/drivers/gpu/drm/nouveau/core/subdev/mc/nv50.c
283 @@ -52,12 +52,11 @@ nv50_mc_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
284 struct nv50_mc_priv *priv;
285 int ret;
286
287 - ret = nouveau_mc_create(parent, engine, oclass, &priv);
288 + ret = nouveau_mc_create(parent, engine, oclass, nv50_mc_intr, &priv);
289 *pobject = nv_object(priv);
290 if (ret)
291 return ret;
292
293 - priv->base.intr_map = nv50_mc_intr;
294 return 0;
295 }
296
297 diff --git a/drivers/gpu/drm/nouveau/core/subdev/mc/nv98.c b/drivers/gpu/drm/nouveau/core/subdev/mc/nv98.c
298 index e82fd21..0d57b4d 100644
299 --- a/drivers/gpu/drm/nouveau/core/subdev/mc/nv98.c
300 +++ b/drivers/gpu/drm/nouveau/core/subdev/mc/nv98.c
301 @@ -54,12 +54,11 @@ nv98_mc_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
302 struct nv98_mc_priv *priv;
303 int ret;
304
305 - ret = nouveau_mc_create(parent, engine, oclass, &priv);
306 + ret = nouveau_mc_create(parent, engine, oclass, nv98_mc_intr, &priv);
307 *pobject = nv_object(priv);
308 if (ret)
309 return ret;
310
311 - priv->base.intr_map = nv98_mc_intr;
312 return 0;
313 }
314
315 diff --git a/drivers/gpu/drm/nouveau/core/subdev/mc/nvc0.c b/drivers/gpu/drm/nouveau/core/subdev/mc/nvc0.c
316 index 737bd4b..4c97cd2 100644
317 --- a/drivers/gpu/drm/nouveau/core/subdev/mc/nvc0.c
318 +++ b/drivers/gpu/drm/nouveau/core/subdev/mc/nvc0.c
319 @@ -56,12 +56,11 @@ nvc0_mc_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
320 struct nvc0_mc_priv *priv;
321 int ret;
322
323 - ret = nouveau_mc_create(parent, engine, oclass, &priv);
324 + ret = nouveau_mc_create(parent, engine, oclass, nvc0_mc_intr, &priv);
325 *pobject = nv_object(priv);
326 if (ret)
327 return ret;
328
329 - priv->base.intr_map = nvc0_mc_intr;
330 return 0;
331 }
332
333 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c b/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c
334 index 3751730..1a0bf07 100644
335 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c
336 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c
337 @@ -29,7 +29,9 @@
338 #include <drm/drmP.h>
339 #include <drm/ttm/ttm_bo_driver.h>
340
341 -#define VMW_PPN_SIZE sizeof(unsigned long)
342 +#define VMW_PPN_SIZE (sizeof(unsigned long))
343 +/* A future safe maximum remap size. */
344 +#define VMW_PPN_PER_REMAP ((31 * 1024) / VMW_PPN_SIZE)
345
346 static int vmw_gmr2_bind(struct vmw_private *dev_priv,
347 struct page *pages[],
348 @@ -38,43 +40,61 @@ static int vmw_gmr2_bind(struct vmw_private *dev_priv,
349 {
350 SVGAFifoCmdDefineGMR2 define_cmd;
351 SVGAFifoCmdRemapGMR2 remap_cmd;
352 - uint32_t define_size = sizeof(define_cmd) + 4;
353 - uint32_t remap_size = VMW_PPN_SIZE * num_pages + sizeof(remap_cmd) + 4;
354 uint32_t *cmd;
355 uint32_t *cmd_orig;
356 + uint32_t define_size = sizeof(define_cmd) + sizeof(*cmd);
357 + uint32_t remap_num = num_pages / VMW_PPN_PER_REMAP + ((num_pages % VMW_PPN_PER_REMAP) > 0);
358 + uint32_t remap_size = VMW_PPN_SIZE * num_pages + (sizeof(remap_cmd) + sizeof(*cmd)) * remap_num;
359 + uint32_t remap_pos = 0;
360 + uint32_t cmd_size = define_size + remap_size;
361 uint32_t i;
362
363 - cmd_orig = cmd = vmw_fifo_reserve(dev_priv, define_size + remap_size);
364 + cmd_orig = cmd = vmw_fifo_reserve(dev_priv, cmd_size);
365 if (unlikely(cmd == NULL))
366 return -ENOMEM;
367
368 define_cmd.gmrId = gmr_id;
369 define_cmd.numPages = num_pages;
370
371 + *cmd++ = SVGA_CMD_DEFINE_GMR2;
372 + memcpy(cmd, &define_cmd, sizeof(define_cmd));
373 + cmd += sizeof(define_cmd) / sizeof(*cmd);
374 +
375 + /*
376 + * Need to split the command if there are too many
377 + * pages that goes into the gmr.
378 + */
379 +
380 remap_cmd.gmrId = gmr_id;
381 remap_cmd.flags = (VMW_PPN_SIZE > sizeof(*cmd)) ?
382 SVGA_REMAP_GMR2_PPN64 : SVGA_REMAP_GMR2_PPN32;
383 - remap_cmd.offsetPages = 0;
384 - remap_cmd.numPages = num_pages;
385
386 - *cmd++ = SVGA_CMD_DEFINE_GMR2;
387 - memcpy(cmd, &define_cmd, sizeof(define_cmd));
388 - cmd += sizeof(define_cmd) / sizeof(uint32);
389 + while (num_pages > 0) {
390 + unsigned long nr = min(num_pages, (unsigned long)VMW_PPN_PER_REMAP);
391 +
392 + remap_cmd.offsetPages = remap_pos;
393 + remap_cmd.numPages = nr;
394
395 - *cmd++ = SVGA_CMD_REMAP_GMR2;
396 - memcpy(cmd, &remap_cmd, sizeof(remap_cmd));
397 - cmd += sizeof(remap_cmd) / sizeof(uint32);
398 + *cmd++ = SVGA_CMD_REMAP_GMR2;
399 + memcpy(cmd, &remap_cmd, sizeof(remap_cmd));
400 + cmd += sizeof(remap_cmd) / sizeof(*cmd);
401
402 - for (i = 0; i < num_pages; ++i) {
403 - if (VMW_PPN_SIZE <= 4)
404 - *cmd = page_to_pfn(*pages++);
405 - else
406 - *((uint64_t *)cmd) = page_to_pfn(*pages++);
407 + for (i = 0; i < nr; ++i) {
408 + if (VMW_PPN_SIZE <= 4)
409 + *cmd = page_to_pfn(*pages++);
410 + else
411 + *((uint64_t *)cmd) = page_to_pfn(*pages++);
412
413 - cmd += VMW_PPN_SIZE / sizeof(*cmd);
414 + cmd += VMW_PPN_SIZE / sizeof(*cmd);
415 + }
416 +
417 + num_pages -= nr;
418 + remap_pos += nr;
419 }
420
421 - vmw_fifo_commit(dev_priv, define_size + remap_size);
422 + BUG_ON(cmd != cmd_orig + cmd_size / sizeof(*cmd));
423 +
424 + vmw_fifo_commit(dev_priv, cmd_size);
425
426 return 0;
427 }
428 diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
429 index 0428e8a..df064e8 100644
430 --- a/drivers/hwmon/Kconfig
431 +++ b/drivers/hwmon/Kconfig
432 @@ -296,8 +296,8 @@ config SENSORS_K10TEMP
433 If you say yes here you get support for the temperature
434 sensor(s) inside your CPU. Supported are later revisions of
435 the AMD Family 10h and all revisions of the AMD Family 11h,
436 - 12h (Llano), 14h (Brazos) and 15h (Bulldozer/Trinity)
437 - microarchitectures.
438 + 12h (Llano), 14h (Brazos), 15h (Bulldozer/Trinity) and
439 + 16h (Kabini) microarchitectures.
440
441 This driver can also be built as a module. If so, the module
442 will be called k10temp.
443 diff --git a/drivers/hwmon/k10temp.c b/drivers/hwmon/k10temp.c
444 index e3b037c..e633856 100644
445 --- a/drivers/hwmon/k10temp.c
446 +++ b/drivers/hwmon/k10temp.c
447 @@ -1,5 +1,5 @@
448 /*
449 - * k10temp.c - AMD Family 10h/11h/12h/14h/15h processor hardware monitoring
450 + * k10temp.c - AMD Family 10h/11h/12h/14h/15h/16h processor hardware monitoring
451 *
452 * Copyright (c) 2009 Clemens Ladisch <clemens@ladisch.de>
453 *
454 @@ -211,6 +211,7 @@ static DEFINE_PCI_DEVICE_TABLE(k10temp_id_table) = {
455 { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_CNB17H_F3) },
456 { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_NB_F3) },
457 { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_M10H_F3) },
458 + { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_16H_NB_F3) },
459 {}
460 };
461 MODULE_DEVICE_TABLE(pci, k10temp_id_table);
462 diff --git a/drivers/misc/hpilo.c b/drivers/misc/hpilo.c
463 index 621c7a3..b83e3ca 100644
464 --- a/drivers/misc/hpilo.c
465 +++ b/drivers/misc/hpilo.c
466 @@ -759,7 +759,7 @@ static int ilo_probe(struct pci_dev *pdev,
467
468 /* Ignore subsystem_device = 0x1979 (set by BIOS) */
469 if (pdev->subsystem_device == 0x1979)
470 - goto out;
471 + return 0;
472
473 if (max_ccb > MAX_CCB)
474 max_ccb = MAX_CCB;
475 @@ -899,7 +899,7 @@ static void __exit ilo_exit(void)
476 class_destroy(ilo_class);
477 }
478
479 -MODULE_VERSION("1.4");
480 +MODULE_VERSION("1.4.1");
481 MODULE_ALIAS(ILO_NAME);
482 MODULE_DESCRIPTION(ILO_NAME);
483 MODULE_AUTHOR("David Altobelli <david.altobelli@hp.com>");
484 diff --git a/drivers/misc/mei/hw-me.c b/drivers/misc/mei/hw-me.c
485 index 700fe55..1bf3f8b 100644
486 --- a/drivers/misc/mei/hw-me.c
487 +++ b/drivers/misc/mei/hw-me.c
488 @@ -176,16 +176,14 @@ static void mei_me_hw_reset(struct mei_device *dev, bool intr_enable)
489 struct mei_me_hw *hw = to_me_hw(dev);
490 u32 hcsr = mei_hcsr_read(hw);
491
492 - dev_dbg(&dev->pdev->dev, "before reset HCSR = 0x%08x.\n", hcsr);
493 -
494 - hcsr |= (H_RST | H_IG);
495 + hcsr |= H_RST | H_IG | H_IS;
496
497 if (intr_enable)
498 hcsr |= H_IE;
499 else
500 - hcsr |= ~H_IE;
501 + hcsr &= ~H_IE;
502
503 - mei_hcsr_set(hw, hcsr);
504 + mei_me_reg_write(hw, H_CSR, hcsr);
505
506 if (dev->dev_state == MEI_DEV_POWER_DOWN)
507 mei_me_hw_reset_release(dev);
508 diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
509 index 6bd0e92..417a089 100644
510 --- a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
511 +++ b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
512 @@ -448,6 +448,7 @@ static void ath9k_htc_tx_process(struct ath9k_htc_priv *priv,
513 struct ieee80211_conf *cur_conf = &priv->hw->conf;
514 bool txok;
515 int slot;
516 + int hdrlen, padsize;
517
518 slot = strip_drv_header(priv, skb);
519 if (slot < 0) {
520 @@ -504,6 +505,15 @@ send_mac80211:
521
522 ath9k_htc_tx_clear_slot(priv, slot);
523
524 + /* Remove padding before handing frame back to mac80211 */
525 + hdrlen = ieee80211_get_hdrlen_from_skb(skb);
526 +
527 + padsize = hdrlen & 3;
528 + if (padsize && skb->len > hdrlen + padsize) {
529 + memmove(skb->data + padsize, skb->data, hdrlen);
530 + skb_pull(skb, padsize);
531 + }
532 +
533 /* Send status to mac80211 */
534 ieee80211_tx_status(priv->hw, skb);
535 }
536 diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
537 index 2ba4945..bd126c2 100644
538 --- a/drivers/net/wireless/ath/ath9k/init.c
539 +++ b/drivers/net/wireless/ath/ath9k/init.c
540 @@ -767,7 +767,8 @@ void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
541 IEEE80211_HW_PS_NULLFUNC_STACK |
542 IEEE80211_HW_SPECTRUM_MGMT |
543 IEEE80211_HW_REPORTS_TX_ACK_STATUS |
544 - IEEE80211_HW_SUPPORTS_RC_TABLE;
545 + IEEE80211_HW_SUPPORTS_RC_TABLE |
546 + IEEE80211_HW_SUPPORTS_HT_CCK_RATES;
547
548 if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_HT)
549 hw->flags |= IEEE80211_HW_AMPDU_AGGREGATION;
550 diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
551 index 35ced10..e33a659 100644
552 --- a/drivers/net/wireless/ath/ath9k/main.c
553 +++ b/drivers/net/wireless/ath/ath9k/main.c
554 @@ -173,8 +173,7 @@ static void ath_restart_work(struct ath_softc *sc)
555 {
556 ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work, 0);
557
558 - if (AR_SREV_9340(sc->sc_ah) || AR_SREV_9485(sc->sc_ah) ||
559 - AR_SREV_9550(sc->sc_ah))
560 + if (AR_SREV_9340(sc->sc_ah) || AR_SREV_9330(sc->sc_ah))
561 ieee80211_queue_delayed_work(sc->hw, &sc->hw_pll_work,
562 msecs_to_jiffies(ATH_PLL_WORK_INTERVAL));
563
564 diff --git a/drivers/net/wireless/ath/carl9170/main.c b/drivers/net/wireless/ath/carl9170/main.c
565 index e9010a4..0686375 100644
566 --- a/drivers/net/wireless/ath/carl9170/main.c
567 +++ b/drivers/net/wireless/ath/carl9170/main.c
568 @@ -1857,7 +1857,8 @@ void *carl9170_alloc(size_t priv_size)
569 IEEE80211_HW_SUPPORTS_PS |
570 IEEE80211_HW_PS_NULLFUNC_STACK |
571 IEEE80211_HW_NEED_DTIM_BEFORE_ASSOC |
572 - IEEE80211_HW_SIGNAL_DBM;
573 + IEEE80211_HW_SIGNAL_DBM |
574 + IEEE80211_HW_SUPPORTS_HT_CCK_RATES;
575
576 if (!modparam_noht) {
577 /*
578 diff --git a/drivers/net/wireless/iwlegacy/4965-mac.c b/drivers/net/wireless/iwlegacy/4965-mac.c
579 index 900f5f8..a8eff95 100644
580 --- a/drivers/net/wireless/iwlegacy/4965-mac.c
581 +++ b/drivers/net/wireless/iwlegacy/4965-mac.c
582 @@ -4446,9 +4446,9 @@ il4965_irq_tasklet(struct il_priv *il)
583 set_bit(S_RFKILL, &il->status);
584 } else {
585 clear_bit(S_RFKILL, &il->status);
586 - wiphy_rfkill_set_hw_state(il->hw->wiphy, hw_rf_kill);
587 il_force_reset(il, true);
588 }
589 + wiphy_rfkill_set_hw_state(il->hw->wiphy, hw_rf_kill);
590
591 handled |= CSR_INT_BIT_RF_KILL;
592 }
593 diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
594 index 705aa33..7e66a90 100644
595 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
596 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
597 @@ -5912,7 +5912,8 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
598 IEEE80211_HW_SUPPORTS_PS |
599 IEEE80211_HW_PS_NULLFUNC_STACK |
600 IEEE80211_HW_AMPDU_AGGREGATION |
601 - IEEE80211_HW_REPORTS_TX_ACK_STATUS;
602 + IEEE80211_HW_REPORTS_TX_ACK_STATUS |
603 + IEEE80211_HW_SUPPORTS_HT_CCK_RATES;
604
605 /*
606 * Don't set IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING for USB devices
607 diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c
608 index 69dd49c..ce3f129d 100644
609 --- a/drivers/scsi/pm8001/pm8001_hwi.c
610 +++ b/drivers/scsi/pm8001/pm8001_hwi.c
611 @@ -221,7 +221,7 @@ static void init_default_table_values(struct pm8001_hba_info *pm8001_ha)
612 pm8001_ha->main_cfg_tbl.pm8001_tbl.fatal_err_interrupt = 0x01;
613 for (i = 0; i < PM8001_MAX_INB_NUM; i++) {
614 pm8001_ha->inbnd_q_tbl[i].element_pri_size_cnt =
615 - PM8001_MPI_QUEUE | (64 << 16) | (0x00<<30);
616 + PM8001_MPI_QUEUE | (pm8001_ha->iomb_size << 16) | (0x00<<30);
617 pm8001_ha->inbnd_q_tbl[i].upper_base_addr =
618 pm8001_ha->memoryMap.region[IB + i].phys_addr_hi;
619 pm8001_ha->inbnd_q_tbl[i].lower_base_addr =
620 @@ -247,7 +247,7 @@ static void init_default_table_values(struct pm8001_hba_info *pm8001_ha)
621 }
622 for (i = 0; i < PM8001_MAX_OUTB_NUM; i++) {
623 pm8001_ha->outbnd_q_tbl[i].element_size_cnt =
624 - PM8001_MPI_QUEUE | (64 << 16) | (0x01<<30);
625 + PM8001_MPI_QUEUE | (pm8001_ha->iomb_size << 16) | (0x01<<30);
626 pm8001_ha->outbnd_q_tbl[i].upper_base_addr =
627 pm8001_ha->memoryMap.region[OB + i].phys_addr_hi;
628 pm8001_ha->outbnd_q_tbl[i].lower_base_addr =
629 diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
630 index 302514d..e1c4896 100644
631 --- a/drivers/scsi/pm8001/pm80xx_hwi.c
632 +++ b/drivers/scsi/pm8001/pm80xx_hwi.c
633 @@ -275,7 +275,7 @@ static void init_default_table_values(struct pm8001_hba_info *pm8001_ha)
634
635 for (i = 0; i < PM8001_MAX_SPCV_INB_NUM; i++) {
636 pm8001_ha->inbnd_q_tbl[i].element_pri_size_cnt =
637 - PM8001_MPI_QUEUE | (64 << 16) | (0x00<<30);
638 + PM8001_MPI_QUEUE | (pm8001_ha->iomb_size << 16) | (0x00<<30);
639 pm8001_ha->inbnd_q_tbl[i].upper_base_addr =
640 pm8001_ha->memoryMap.region[IB + i].phys_addr_hi;
641 pm8001_ha->inbnd_q_tbl[i].lower_base_addr =
642 @@ -301,7 +301,7 @@ static void init_default_table_values(struct pm8001_hba_info *pm8001_ha)
643 }
644 for (i = 0; i < PM8001_MAX_SPCV_OUTB_NUM; i++) {
645 pm8001_ha->outbnd_q_tbl[i].element_size_cnt =
646 - PM8001_MPI_QUEUE | (64 << 16) | (0x01<<30);
647 + PM8001_MPI_QUEUE | (pm8001_ha->iomb_size << 16) | (0x01<<30);
648 pm8001_ha->outbnd_q_tbl[i].upper_base_addr =
649 pm8001_ha->memoryMap.region[OB + i].phys_addr_hi;
650 pm8001_ha->outbnd_q_tbl[i].lower_base_addr =
651 diff --git a/drivers/staging/imx-drm/imx-drm-core.c b/drivers/staging/imx-drm/imx-drm-core.c
652 index 6455305..a532ca5 100644
653 --- a/drivers/staging/imx-drm/imx-drm-core.c
654 +++ b/drivers/staging/imx-drm/imx-drm-core.c
655 @@ -681,6 +681,7 @@ found:
656
657 return i;
658 }
659 +EXPORT_SYMBOL_GPL(imx_drm_encoder_get_mux_id);
660
661 /*
662 * imx_drm_remove_encoder - remove an encoder
663 diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
664 index 012ff8b..4c1b8db 100644
665 --- a/drivers/target/iscsi/iscsi_target.c
666 +++ b/drivers/target/iscsi/iscsi_target.c
667 @@ -1086,7 +1086,6 @@ int iscsit_process_scsi_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
668 if (cmd->reject_reason)
669 return 0;
670
671 - target_put_sess_cmd(conn->sess->se_sess, &cmd->se_cmd);
672 return 1;
673 }
674 /*
675 @@ -1124,14 +1123,10 @@ after_immediate_data:
676 */
677 cmdsn_ret = iscsit_sequence_cmd(cmd->conn, cmd,
678 (unsigned char *)hdr, hdr->cmdsn);
679 - if (cmdsn_ret == CMDSN_ERROR_CANNOT_RECOVER) {
680 + if (cmdsn_ret == CMDSN_ERROR_CANNOT_RECOVER)
681 return -1;
682 - } else if (cmdsn_ret == CMDSN_LOWER_THAN_EXP) {
683 - target_put_sess_cmd(conn->sess->se_sess, &cmd->se_cmd);
684 - return 0;
685 - }
686
687 - if (cmd->sense_reason) {
688 + if (cmd->sense_reason || cmdsn_ret == CMDSN_LOWER_THAN_EXP) {
689 int rc;
690
691 rc = iscsit_dump_data_payload(cmd->conn,
692 @@ -1541,6 +1536,10 @@ int iscsit_handle_nop_out(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
693 if (hdr->itt == RESERVED_ITT && !(hdr->opcode & ISCSI_OP_IMMEDIATE)) {
694 pr_err("NOPOUT ITT is reserved, but Immediate Bit is"
695 " not set, protocol error.\n");
696 + if (!cmd)
697 + return iscsit_add_reject(conn, ISCSI_REASON_PROTOCOL_ERROR,
698 + (unsigned char *)hdr);
699 +
700 return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR,
701 (unsigned char *)hdr);
702 }
703 @@ -1550,6 +1549,10 @@ int iscsit_handle_nop_out(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
704 " greater than MaxXmitDataSegmentLength: %u, protocol"
705 " error.\n", payload_length,
706 conn->conn_ops->MaxXmitDataSegmentLength);
707 + if (!cmd)
708 + return iscsit_add_reject(conn, ISCSI_REASON_PROTOCOL_ERROR,
709 + (unsigned char *)hdr);
710 +
711 return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR,
712 (unsigned char *)hdr);
713 }
714 diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c
715 index 3402241..bc788c5 100644
716 --- a/drivers/target/iscsi/iscsi_target_login.c
717 +++ b/drivers/target/iscsi/iscsi_target_login.c
718 @@ -1163,12 +1163,11 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
719 if (np->np_thread_state == ISCSI_NP_THREAD_RESET) {
720 spin_unlock_bh(&np->np_thread_lock);
721 complete(&np->np_restart_comp);
722 - if (ret == -ENODEV) {
723 - iscsit_put_transport(conn->conn_transport);
724 - kfree(conn);
725 - conn = NULL;
726 + iscsit_put_transport(conn->conn_transport);
727 + kfree(conn);
728 + conn = NULL;
729 + if (ret == -ENODEV)
730 goto out;
731 - }
732 /* Get another socket */
733 return 1;
734 }
735 diff --git a/drivers/target/target_core_spc.c b/drivers/target/target_core_spc.c
736 index 4cb667d..9fabbf7 100644
737 --- a/drivers/target/target_core_spc.c
738 +++ b/drivers/target/target_core_spc.c
739 @@ -97,9 +97,12 @@ spc_emulate_inquiry_std(struct se_cmd *cmd, unsigned char *buf)
740
741 buf[7] = 0x2; /* CmdQue=1 */
742
743 - snprintf(&buf[8], 8, "LIO-ORG");
744 - snprintf(&buf[16], 16, "%s", dev->t10_wwn.model);
745 - snprintf(&buf[32], 4, "%s", dev->t10_wwn.revision);
746 + memcpy(&buf[8], "LIO-ORG ", 8);
747 + memset(&buf[16], 0x20, 16);
748 + memcpy(&buf[16], dev->t10_wwn.model,
749 + min_t(size_t, strlen(dev->t10_wwn.model), 16));
750 + memcpy(&buf[32], dev->t10_wwn.revision,
751 + min_t(size_t, strlen(dev->t10_wwn.revision), 4));
752 buf[4] = 31; /* Set additional length to 31 */
753
754 return 0;
755 diff --git a/drivers/tty/hvc/hvsi_lib.c b/drivers/tty/hvc/hvsi_lib.c
756 index 3396eb9..ac27671 100644
757 --- a/drivers/tty/hvc/hvsi_lib.c
758 +++ b/drivers/tty/hvc/hvsi_lib.c
759 @@ -341,8 +341,8 @@ void hvsilib_establish(struct hvsi_priv *pv)
760
761 pr_devel("HVSI@%x: ... waiting handshake\n", pv->termno);
762
763 - /* Try for up to 200s */
764 - for (timeout = 0; timeout < 20; timeout++) {
765 + /* Try for up to 400ms */
766 + for (timeout = 0; timeout < 40; timeout++) {
767 if (pv->established)
768 goto established;
769 if (!hvsi_get_packet(pv))
770 diff --git a/drivers/usb/gadget/f_acm.c b/drivers/usb/gadget/f_acm.c
771 index 4b7e33e..ab1065a 100644
772 --- a/drivers/usb/gadget/f_acm.c
773 +++ b/drivers/usb/gadget/f_acm.c
774 @@ -285,6 +285,7 @@ static struct usb_string acm_string_defs[] = {
775 [ACM_CTRL_IDX].s = "CDC Abstract Control Model (ACM)",
776 [ACM_DATA_IDX].s = "CDC ACM Data",
777 [ACM_IAD_IDX ].s = "CDC Serial",
778 + { } /* end of list */
779 };
780
781 static struct usb_gadget_strings acm_string_table = {
782 diff --git a/fs/jfs/jfs_dtree.c b/fs/jfs/jfs_dtree.c
783 index 0ddbece..c450fdb 100644
784 --- a/fs/jfs/jfs_dtree.c
785 +++ b/fs/jfs/jfs_dtree.c
786 @@ -3047,6 +3047,14 @@ int jfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
787
788 dir_index = (u32) filp->f_pos;
789
790 + /*
791 + * NFSv4 reserves cookies 1 and 2 for . and .. so we add
792 + * the value we return to the vfs is one greater than the
793 + * one we use internally.
794 + */
795 + if (dir_index)
796 + dir_index--;
797 +
798 if (dir_index > 1) {
799 struct dir_table_slot dirtab_slot;
800
801 @@ -3086,7 +3094,7 @@ int jfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
802 if (p->header.flag & BT_INTERNAL) {
803 jfs_err("jfs_readdir: bad index table");
804 DT_PUTPAGE(mp);
805 - filp->f_pos = -1;
806 + filp->f_pos = DIREND;
807 return 0;
808 }
809 } else {
810 @@ -3094,7 +3102,7 @@ int jfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
811 /*
812 * self "."
813 */
814 - filp->f_pos = 0;
815 + filp->f_pos = 1;
816 if (filldir(dirent, ".", 1, 0, ip->i_ino,
817 DT_DIR))
818 return 0;
819 @@ -3102,7 +3110,7 @@ int jfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
820 /*
821 * parent ".."
822 */
823 - filp->f_pos = 1;
824 + filp->f_pos = 2;
825 if (filldir(dirent, "..", 2, 1, PARENT(ip), DT_DIR))
826 return 0;
827
828 @@ -3123,24 +3131,25 @@ int jfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
829 /*
830 * Legacy filesystem - OS/2 & Linux JFS < 0.3.6
831 *
832 - * pn = index = 0: First entry "."
833 - * pn = 0; index = 1: Second entry ".."
834 + * pn = 0; index = 1: First entry "."
835 + * pn = 0; index = 2: Second entry ".."
836 * pn > 0: Real entries, pn=1 -> leftmost page
837 * pn = index = -1: No more entries
838 */
839 dtpos = filp->f_pos;
840 - if (dtpos == 0) {
841 + if (dtpos < 2) {
842 /* build "." entry */
843
844 + filp->f_pos = 1;
845 if (filldir(dirent, ".", 1, filp->f_pos, ip->i_ino,
846 DT_DIR))
847 return 0;
848 - dtoffset->index = 1;
849 + dtoffset->index = 2;
850 filp->f_pos = dtpos;
851 }
852
853 if (dtoffset->pn == 0) {
854 - if (dtoffset->index == 1) {
855 + if (dtoffset->index == 2) {
856 /* build ".." entry */
857
858 if (filldir(dirent, "..", 2, filp->f_pos,
859 @@ -3233,6 +3242,12 @@ int jfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
860 }
861 jfs_dirent->position = unique_pos++;
862 }
863 + /*
864 + * We add 1 to the index because we may
865 + * use a value of 2 internally, and NFSv4
866 + * doesn't like that.
867 + */
868 + jfs_dirent->position++;
869 } else {
870 jfs_dirent->position = dtpos;
871 len = min(d_namleft, DTLHDRDATALEN_LEGACY);
872 diff --git a/include/linux/regmap.h b/include/linux/regmap.h
873 index f91bb41..98c470ce 100644
874 --- a/include/linux/regmap.h
875 +++ b/include/linux/regmap.h
876 @@ -16,6 +16,7 @@
877 #include <linux/list.h>
878 #include <linux/rbtree.h>
879 #include <linux/err.h>
880 +#include <linux/bug.h>
881
882 struct module;
883 struct device;
884 diff --git a/include/net/mac80211.h b/include/net/mac80211.h
885 index 885898a..4e50d36 100644
886 --- a/include/net/mac80211.h
887 +++ b/include/net/mac80211.h
888 @@ -1484,6 +1484,7 @@ enum ieee80211_hw_flags {
889 IEEE80211_HW_SUPPORTS_RC_TABLE = 1<<24,
890 IEEE80211_HW_P2P_DEV_ADDR_FOR_INTF = 1<<25,
891 IEEE80211_HW_TIMING_BEACON_ONLY = 1<<26,
892 + IEEE80211_HW_SUPPORTS_HT_CCK_RATES = 1<<27,
893 };
894
895 /**
896 diff --git a/ipc/msg.c b/ipc/msg.c
897 index d0c6d96..f8fbe2c 100644
898 --- a/ipc/msg.c
899 +++ b/ipc/msg.c
900 @@ -795,7 +795,7 @@ static inline void free_copy(struct msg_msg *copy)
901
902 static struct msg_msg *find_msg(struct msg_queue *msq, long *msgtyp, int mode)
903 {
904 - struct msg_msg *msg;
905 + struct msg_msg *msg, *found = NULL;
906 long count = 0;
907
908 list_for_each_entry(msg, &msq->q_messages, m_list) {
909 @@ -804,6 +804,7 @@ static struct msg_msg *find_msg(struct msg_queue *msq, long *msgtyp, int mode)
910 *msgtyp, mode)) {
911 if (mode == SEARCH_LESSEQUAL && msg->m_type != 1) {
912 *msgtyp = msg->m_type - 1;
913 + found = msg;
914 } else if (mode == SEARCH_NUMBER) {
915 if (*msgtyp == count)
916 return msg;
917 @@ -813,7 +814,7 @@ static struct msg_msg *find_msg(struct msg_queue *msq, long *msgtyp, int mode)
918 }
919 }
920
921 - return ERR_PTR(-EAGAIN);
922 + return found ?: ERR_PTR(-EAGAIN);
923 }
924
925
926 diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c
927 index 3bdf283..61ed862 100644
928 --- a/kernel/time/timer_list.c
929 +++ b/kernel/time/timer_list.c
930 @@ -265,10 +265,9 @@ static inline void timer_list_header(struct seq_file *m, u64 now)
931 static int timer_list_show(struct seq_file *m, void *v)
932 {
933 struct timer_list_iter *iter = v;
934 - u64 now = ktime_to_ns(ktime_get());
935
936 if (iter->cpu == -1 && !iter->second_pass)
937 - timer_list_header(m, now);
938 + timer_list_header(m, iter->now);
939 else if (!iter->second_pass)
940 print_cpu(m, iter->cpu, iter->now);
941 #ifdef CONFIG_GENERIC_CLOCKEVENTS
942 @@ -298,33 +297,41 @@ void sysrq_timer_list_show(void)
943 return;
944 }
945
946 -static void *timer_list_start(struct seq_file *file, loff_t *offset)
947 +static void *move_iter(struct timer_list_iter *iter, loff_t offset)
948 {
949 - struct timer_list_iter *iter = file->private;
950 -
951 - if (!*offset) {
952 - iter->cpu = -1;
953 - iter->now = ktime_to_ns(ktime_get());
954 - } else if (iter->cpu >= nr_cpu_ids) {
955 + for (; offset; offset--) {
956 + iter->cpu = cpumask_next(iter->cpu, cpu_online_mask);
957 + if (iter->cpu >= nr_cpu_ids) {
958 #ifdef CONFIG_GENERIC_CLOCKEVENTS
959 - if (!iter->second_pass) {
960 - iter->cpu = -1;
961 - iter->second_pass = true;
962 - } else
963 - return NULL;
964 + if (!iter->second_pass) {
965 + iter->cpu = -1;
966 + iter->second_pass = true;
967 + } else
968 + return NULL;
969 #else
970 - return NULL;
971 + return NULL;
972 #endif
973 + }
974 }
975 return iter;
976 }
977
978 +static void *timer_list_start(struct seq_file *file, loff_t *offset)
979 +{
980 + struct timer_list_iter *iter = file->private;
981 +
982 + if (!*offset)
983 + iter->now = ktime_to_ns(ktime_get());
984 + iter->cpu = -1;
985 + iter->second_pass = false;
986 + return move_iter(iter, *offset);
987 +}
988 +
989 static void *timer_list_next(struct seq_file *file, void *v, loff_t *offset)
990 {
991 struct timer_list_iter *iter = file->private;
992 - iter->cpu = cpumask_next(iter->cpu, cpu_online_mask);
993 ++*offset;
994 - return timer_list_start(file, offset);
995 + return move_iter(iter, 1);
996 }
997
998 static void timer_list_stop(struct seq_file *seq, void *v)
999 diff --git a/kernel/workqueue.c b/kernel/workqueue.c
1000 index 6f01921..e52d002 100644
1001 --- a/kernel/workqueue.c
1002 +++ b/kernel/workqueue.c
1003 @@ -2188,6 +2188,15 @@ __acquires(&pool->lock)
1004 dump_stack();
1005 }
1006
1007 + /*
1008 + * The following prevents a kworker from hogging CPU on !PREEMPT
1009 + * kernels, where a requeueing work item waiting for something to
1010 + * happen could deadlock with stop_machine as such work item could
1011 + * indefinitely requeue itself while all other CPUs are trapped in
1012 + * stop_machine.
1013 + */
1014 + cond_resched();
1015 +
1016 spin_lock_irq(&pool->lock);
1017
1018 /* clear cpu intensive status */
1019 diff --git a/mm/slab.h b/mm/slab.h
1020 index f96b49e..4d6d836 100644
1021 --- a/mm/slab.h
1022 +++ b/mm/slab.h
1023 @@ -162,6 +162,8 @@ static inline const char *cache_name(struct kmem_cache *s)
1024
1025 static inline struct kmem_cache *cache_from_memcg(struct kmem_cache *s, int idx)
1026 {
1027 + if (!s->memcg_params)
1028 + return NULL;
1029 return s->memcg_params->memcg_caches[idx];
1030 }
1031
1032 diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
1033 index 170f9a7..3052672 100644
1034 --- a/net/mac80211/ibss.c
1035 +++ b/net/mac80211/ibss.c
1036 @@ -1166,6 +1166,7 @@ int ieee80211_ibss_leave(struct ieee80211_sub_if_data *sdata)
1037 clear_bit(SDATA_STATE_OFFCHANNEL_BEACON_STOPPED, &sdata->state);
1038 ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON_ENABLED |
1039 BSS_CHANGED_IBSS);
1040 + ieee80211_vif_release_channel(sdata);
1041 synchronize_rcu();
1042 kfree(presp);
1043
1044 diff --git a/net/mac80211/rc80211_minstrel_ht.c b/net/mac80211/rc80211_minstrel_ht.c
1045 index f5aed96..f3bbea1 100644
1046 --- a/net/mac80211/rc80211_minstrel_ht.c
1047 +++ b/net/mac80211/rc80211_minstrel_ht.c
1048 @@ -828,6 +828,9 @@ minstrel_ht_update_cck(struct minstrel_priv *mp, struct minstrel_ht_sta *mi,
1049 if (sband->band != IEEE80211_BAND_2GHZ)
1050 return;
1051
1052 + if (!(mp->hw->flags & IEEE80211_HW_SUPPORTS_HT_CCK_RATES))
1053 + return;
1054 +
1055 mi->cck_supported = 0;
1056 mi->cck_supported_short = 0;
1057 for (i = 0; i < 4; i++) {
1058 diff --git a/net/sunrpc/xdr.c b/net/sunrpc/xdr.c
1059 index 75edcfa..1504bb1 100644
1060 --- a/net/sunrpc/xdr.c
1061 +++ b/net/sunrpc/xdr.c
1062 @@ -207,10 +207,13 @@ _shift_data_right_pages(struct page **pages, size_t pgto_base,
1063 pgfrom_base -= copy;
1064
1065 vto = kmap_atomic(*pgto);
1066 - vfrom = kmap_atomic(*pgfrom);
1067 - memmove(vto + pgto_base, vfrom + pgfrom_base, copy);
1068 + if (*pgto != *pgfrom) {
1069 + vfrom = kmap_atomic(*pgfrom);
1070 + memcpy(vto + pgto_base, vfrom + pgfrom_base, copy);
1071 + kunmap_atomic(vfrom);
1072 + } else
1073 + memmove(vto + pgto_base, vto + pgfrom_base, copy);
1074 flush_dcache_page(*pgto);
1075 - kunmap_atomic(vfrom);
1076 kunmap_atomic(vto);
1077
1078 } while ((len -= copy) != 0);
1079 diff --git a/sound/isa/opti9xx/opti92x-ad1848.c b/sound/isa/opti9xx/opti92x-ad1848.c
1080 index b41ed86..e427dbf 100644
1081 --- a/sound/isa/opti9xx/opti92x-ad1848.c
1082 +++ b/sound/isa/opti9xx/opti92x-ad1848.c
1083 @@ -173,11 +173,7 @@ MODULE_DEVICE_TABLE(pnp_card, snd_opti9xx_pnpids);
1084
1085 #endif /* CONFIG_PNP */
1086
1087 -#ifdef OPTi93X
1088 -#define DEV_NAME "opti93x"
1089 -#else
1090 -#define DEV_NAME "opti92x"
1091 -#endif
1092 +#define DEV_NAME KBUILD_MODNAME
1093
1094 static char * snd_opti9xx_names[] = {
1095 "unknown",
1096 @@ -1168,7 +1164,7 @@ static int snd_opti9xx_pnp_resume(struct pnp_card_link *pcard)
1097
1098 static struct pnp_card_driver opti9xx_pnpc_driver = {
1099 .flags = PNP_DRIVER_RES_DISABLE,
1100 - .name = "opti9xx",
1101 + .name = DEV_NAME,
1102 .id_table = snd_opti9xx_pnpids,
1103 .probe = snd_opti9xx_pnp_probe,
1104 .remove = snd_opti9xx_pnp_remove,
1105 diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
1106 index 496d7f2..5bc4194 100644
1107 --- a/sound/pci/hda/patch_hdmi.c
1108 +++ b/sound/pci/hda/patch_hdmi.c
1109 @@ -1715,6 +1715,9 @@ static int generic_hdmi_build_controls(struct hda_codec *codec)
1110 struct snd_pcm_chmap *chmap;
1111 struct snd_kcontrol *kctl;
1112 int i;
1113 +
1114 + if (!codec->pcm_info[pin_idx].pcm)
1115 + break;
1116 err = snd_pcm_add_chmap_ctls(codec->pcm_info[pin_idx].pcm,
1117 SNDRV_PCM_STREAM_PLAYBACK,
1118 NULL, 0, pin_idx, &chmap);
1119 diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
1120 index 57f9f2a..458cf89 100644
1121 --- a/sound/pci/hda/patch_realtek.c
1122 +++ b/sound/pci/hda/patch_realtek.c
1123 @@ -4207,6 +4207,7 @@ static const struct hda_fixup alc662_fixups[] = {
1124
1125 static const struct snd_pci_quirk alc662_fixup_tbl[] = {
1126 SND_PCI_QUIRK(0x1019, 0x9087, "ECS", ALC662_FIXUP_ASUS_MODE2),
1127 + SND_PCI_QUIRK(0x1025, 0x022f, "Acer Aspire One", ALC662_FIXUP_INV_DMIC),
1128 SND_PCI_QUIRK(0x1025, 0x0308, "Acer Aspire 8942G", ALC662_FIXUP_ASPIRE),
1129 SND_PCI_QUIRK(0x1025, 0x031c, "Gateway NV79", ALC662_FIXUP_SKU_IGNORE),
1130 SND_PCI_QUIRK(0x1025, 0x0349, "eMachines eM250", ALC662_FIXUP_INV_DMIC),