Annotation of /trunk/kernel-alx/patches-3.4/0117-3.4.18-all-fixes.patch
Parent Directory | Revision Log
Revision 1946 -
(hide annotations)
(download)
Wed Nov 14 15:25:09 2012 UTC (11 years, 10 months ago) by niro
File size: 18422 byte(s)
Wed Nov 14 15:25:09 2012 UTC (11 years, 10 months ago) by niro
File size: 18422 byte(s)
3.4.18-alx-r1
1 | niro | 1946 | diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c |
2 | index c2b77e5..5ccd6e8 100644 | ||
3 | --- a/arch/arm/mach-exynos/common.c | ||
4 | +++ b/arch/arm/mach-exynos/common.c | ||
5 | @@ -44,7 +44,6 @@ | ||
6 | #include <plat/fimc-core.h> | ||
7 | #include <plat/iic-core.h> | ||
8 | #include <plat/tv-core.h> | ||
9 | -#include <plat/spi-core.h> | ||
10 | #include <plat/regs-serial.h> | ||
11 | |||
12 | #include "common.h" | ||
13 | @@ -339,8 +338,6 @@ static void __init exynos4_map_io(void) | ||
14 | |||
15 | s5p_fb_setname(0, "exynos4-fb"); | ||
16 | s5p_hdmi_setname("exynos4-hdmi"); | ||
17 | - | ||
18 | - s3c64xx_spi_setname("exynos4210-spi"); | ||
19 | } | ||
20 | |||
21 | static void __init exynos5_map_io(void) | ||
22 | @@ -361,8 +358,6 @@ static void __init exynos5_map_io(void) | ||
23 | s3c_i2c0_setname("s3c2440-i2c"); | ||
24 | s3c_i2c1_setname("s3c2440-i2c"); | ||
25 | s3c_i2c2_setname("s3c2440-i2c"); | ||
26 | - | ||
27 | - s3c64xx_spi_setname("exynos4210-spi"); | ||
28 | } | ||
29 | |||
30 | static void __init exynos4_init_clocks(int xtal) | ||
31 | diff --git a/arch/arm/mach-s3c24xx/s3c2416.c b/arch/arm/mach-s3c24xx/s3c2416.c | ||
32 | index f74818d..7743fad 100644 | ||
33 | --- a/arch/arm/mach-s3c24xx/s3c2416.c | ||
34 | +++ b/arch/arm/mach-s3c24xx/s3c2416.c | ||
35 | @@ -61,7 +61,6 @@ | ||
36 | #include <plat/nand-core.h> | ||
37 | #include <plat/adc-core.h> | ||
38 | #include <plat/rtc-core.h> | ||
39 | -#include <plat/spi-core.h> | ||
40 | |||
41 | static struct map_desc s3c2416_iodesc[] __initdata = { | ||
42 | IODESC_ENT(WATCHDOG), | ||
43 | @@ -132,7 +131,6 @@ void __init s3c2416_map_io(void) | ||
44 | /* initialize device information early */ | ||
45 | s3c2416_default_sdhci0(); | ||
46 | s3c2416_default_sdhci1(); | ||
47 | - s3c64xx_spi_setname("s3c2443-spi"); | ||
48 | |||
49 | iotable_init(s3c2416_iodesc, ARRAY_SIZE(s3c2416_iodesc)); | ||
50 | } | ||
51 | diff --git a/arch/arm/mach-s3c24xx/s3c2443.c b/arch/arm/mach-s3c24xx/s3c2443.c | ||
52 | index 165b6a6..ab648ad 100644 | ||
53 | --- a/arch/arm/mach-s3c24xx/s3c2443.c | ||
54 | +++ b/arch/arm/mach-s3c24xx/s3c2443.c | ||
55 | @@ -43,7 +43,6 @@ | ||
56 | #include <plat/nand-core.h> | ||
57 | #include <plat/adc-core.h> | ||
58 | #include <plat/rtc-core.h> | ||
59 | -#include <plat/spi-core.h> | ||
60 | |||
61 | static struct map_desc s3c2443_iodesc[] __initdata = { | ||
62 | IODESC_ENT(WATCHDOG), | ||
63 | @@ -101,9 +100,6 @@ void __init s3c2443_map_io(void) | ||
64 | s3c24xx_gpiocfg_default.set_pull = s3c2443_gpio_setpull; | ||
65 | s3c24xx_gpiocfg_default.get_pull = s3c2443_gpio_getpull; | ||
66 | |||
67 | - /* initialize device information early */ | ||
68 | - s3c64xx_spi_setname("s3c2443-spi"); | ||
69 | - | ||
70 | iotable_init(s3c2443_iodesc, ARRAY_SIZE(s3c2443_iodesc)); | ||
71 | } | ||
72 | |||
73 | diff --git a/arch/arm/mach-s5p64x0/common.c b/arch/arm/mach-s5p64x0/common.c | ||
74 | index 111e404..6e6a0a9 100644 | ||
75 | --- a/arch/arm/mach-s5p64x0/common.c | ||
76 | +++ b/arch/arm/mach-s5p64x0/common.c | ||
77 | @@ -44,7 +44,6 @@ | ||
78 | #include <plat/sdhci.h> | ||
79 | #include <plat/adc-core.h> | ||
80 | #include <plat/fb-core.h> | ||
81 | -#include <plat/spi-core.h> | ||
82 | #include <plat/gpio-cfg.h> | ||
83 | #include <plat/regs-irqtype.h> | ||
84 | #include <plat/regs-serial.h> | ||
85 | @@ -180,7 +179,6 @@ void __init s5p6440_map_io(void) | ||
86 | /* initialize any device information early */ | ||
87 | s3c_adc_setname("s3c64xx-adc"); | ||
88 | s3c_fb_setname("s5p64x0-fb"); | ||
89 | - s3c64xx_spi_setname("s5p64x0-spi"); | ||
90 | |||
91 | s5p64x0_default_sdhci0(); | ||
92 | s5p64x0_default_sdhci1(); | ||
93 | @@ -195,7 +193,6 @@ void __init s5p6450_map_io(void) | ||
94 | /* initialize any device information early */ | ||
95 | s3c_adc_setname("s3c64xx-adc"); | ||
96 | s3c_fb_setname("s5p64x0-fb"); | ||
97 | - s3c64xx_spi_setname("s5p64x0-spi"); | ||
98 | |||
99 | s5p64x0_default_sdhci0(); | ||
100 | s5p64x0_default_sdhci1(); | ||
101 | diff --git a/arch/arm/mach-s5pc100/common.c b/arch/arm/mach-s5pc100/common.c | ||
102 | index cc6e561..6219086 100644 | ||
103 | --- a/arch/arm/mach-s5pc100/common.c | ||
104 | +++ b/arch/arm/mach-s5pc100/common.c | ||
105 | @@ -45,7 +45,6 @@ | ||
106 | #include <plat/fb-core.h> | ||
107 | #include <plat/iic-core.h> | ||
108 | #include <plat/onenand-core.h> | ||
109 | -#include <plat/spi-core.h> | ||
110 | #include <plat/regs-serial.h> | ||
111 | #include <plat/watchdog-reset.h> | ||
112 | |||
113 | @@ -166,8 +165,6 @@ void __init s5pc100_map_io(void) | ||
114 | s3c_onenand_setname("s5pc100-onenand"); | ||
115 | s3c_fb_setname("s5pc100-fb"); | ||
116 | s3c_cfcon_setname("s5pc100-pata"); | ||
117 | - | ||
118 | - s3c64xx_spi_setname("s5pc100-spi"); | ||
119 | } | ||
120 | |||
121 | void __init s5pc100_init_clocks(int xtal) | ||
122 | diff --git a/arch/arm/mach-s5pv210/common.c b/arch/arm/mach-s5pv210/common.c | ||
123 | index a0c50ef..4c9e902 100644 | ||
124 | --- a/arch/arm/mach-s5pv210/common.c | ||
125 | +++ b/arch/arm/mach-s5pv210/common.c | ||
126 | @@ -43,7 +43,6 @@ | ||
127 | #include <plat/iic-core.h> | ||
128 | #include <plat/keypad-core.h> | ||
129 | #include <plat/tv-core.h> | ||
130 | -#include <plat/spi-core.h> | ||
131 | #include <plat/regs-serial.h> | ||
132 | |||
133 | #include "common.h" | ||
134 | @@ -197,8 +196,6 @@ void __init s5pv210_map_io(void) | ||
135 | |||
136 | /* setup TV devices */ | ||
137 | s5p_hdmi_setname("s5pv210-hdmi"); | ||
138 | - | ||
139 | - s3c64xx_spi_setname("s5pv210-spi"); | ||
140 | } | ||
141 | |||
142 | void __init s5pv210_init_clocks(int xtal) | ||
143 | diff --git a/arch/arm/plat-samsung/include/plat/spi-core.h b/arch/arm/plat-samsung/include/plat/spi-core.h | ||
144 | deleted file mode 100644 | ||
145 | index 0b9428a..0000000 | ||
146 | --- a/arch/arm/plat-samsung/include/plat/spi-core.h | ||
147 | +++ /dev/null | ||
148 | @@ -1,30 +0,0 @@ | ||
149 | -/* | ||
150 | - * Copyright (C) 2012 Heiko Stuebner <heiko@sntech.de> | ||
151 | - * | ||
152 | - * This program is free software; you can redistribute it and/or modify | ||
153 | - * it under the terms of the GNU General Public License version 2 as | ||
154 | - * published by the Free Software Foundation. | ||
155 | - */ | ||
156 | - | ||
157 | -#ifndef __PLAT_S3C_SPI_CORE_H | ||
158 | -#define __PLAT_S3C_SPI_CORE_H | ||
159 | - | ||
160 | -/* These functions are only for use with the core support code, such as | ||
161 | - * the cpu specific initialisation code | ||
162 | - */ | ||
163 | - | ||
164 | -/* re-define device name depending on support. */ | ||
165 | -static inline void s3c64xx_spi_setname(char *name) | ||
166 | -{ | ||
167 | -#ifdef CONFIG_S3C64XX_DEV_SPI0 | ||
168 | - s3c64xx_device_spi0.name = name; | ||
169 | -#endif | ||
170 | -#ifdef CONFIG_S3C64XX_DEV_SPI1 | ||
171 | - s3c64xx_device_spi1.name = name; | ||
172 | -#endif | ||
173 | -#ifdef CONFIG_S3C64XX_DEV_SPI2 | ||
174 | - s3c64xx_device_spi2.name = name; | ||
175 | -#endif | ||
176 | -} | ||
177 | - | ||
178 | -#endif /* __PLAT_S3C_SPI_CORE_H */ | ||
179 | diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c | ||
180 | index b0b00d7..c82f06e 100644 | ||
181 | --- a/drivers/block/floppy.c | ||
182 | +++ b/drivers/block/floppy.c | ||
183 | @@ -4161,6 +4161,7 @@ static int __init floppy_init(void) | ||
184 | |||
185 | disks[dr]->queue = blk_init_queue(do_fd_request, &floppy_lock); | ||
186 | if (!disks[dr]->queue) { | ||
187 | + put_disk(disks[dr]); | ||
188 | err = -ENOMEM; | ||
189 | goto out_put_disk; | ||
190 | } | ||
191 | diff --git a/drivers/gpio/gpio-timberdale.c b/drivers/gpio/gpio-timberdale.c | ||
192 | index 031c6ad..1a3e2b9 100644 | ||
193 | --- a/drivers/gpio/gpio-timberdale.c | ||
194 | +++ b/drivers/gpio/gpio-timberdale.c | ||
195 | @@ -116,7 +116,7 @@ static void timbgpio_irq_disable(struct irq_data *d) | ||
196 | unsigned long flags; | ||
197 | |||
198 | spin_lock_irqsave(&tgpio->lock, flags); | ||
199 | - tgpio->last_ier &= ~(1 << offset); | ||
200 | + tgpio->last_ier &= ~(1UL << offset); | ||
201 | iowrite32(tgpio->last_ier, tgpio->membase + TGPIO_IER); | ||
202 | spin_unlock_irqrestore(&tgpio->lock, flags); | ||
203 | } | ||
204 | @@ -128,7 +128,7 @@ static void timbgpio_irq_enable(struct irq_data *d) | ||
205 | unsigned long flags; | ||
206 | |||
207 | spin_lock_irqsave(&tgpio->lock, flags); | ||
208 | - tgpio->last_ier |= 1 << offset; | ||
209 | + tgpio->last_ier |= 1UL << offset; | ||
210 | iowrite32(tgpio->last_ier, tgpio->membase + TGPIO_IER); | ||
211 | spin_unlock_irqrestore(&tgpio->lock, flags); | ||
212 | } | ||
213 | diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c | ||
214 | index 5a75510..112c16e 100644 | ||
215 | --- a/drivers/gpio/gpiolib.c | ||
216 | +++ b/drivers/gpio/gpiolib.c | ||
217 | @@ -623,9 +623,11 @@ static ssize_t export_store(struct class *class, | ||
218 | */ | ||
219 | |||
220 | status = gpio_request(gpio, "sysfs"); | ||
221 | - if (status < 0) | ||
222 | + if (status < 0) { | ||
223 | + if (status == -EPROBE_DEFER) | ||
224 | + status = -ENODEV; | ||
225 | goto done; | ||
226 | - | ||
227 | + } | ||
228 | status = gpio_export(gpio, true); | ||
229 | if (status < 0) | ||
230 | gpio_free(gpio); | ||
231 | @@ -1191,8 +1193,10 @@ int gpio_request(unsigned gpio, const char *label) | ||
232 | |||
233 | spin_lock_irqsave(&gpio_lock, flags); | ||
234 | |||
235 | - if (!gpio_is_valid(gpio)) | ||
236 | + if (!gpio_is_valid(gpio)) { | ||
237 | + status = -EINVAL; | ||
238 | goto done; | ||
239 | + } | ||
240 | desc = &gpio_desc[gpio]; | ||
241 | chip = desc->chip; | ||
242 | if (chip == NULL) | ||
243 | diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.c b/drivers/gpu/drm/nouveau/nouveau_drv.c | ||
244 | index 4f2030b..05091c2 100644 | ||
245 | --- a/drivers/gpu/drm/nouveau/nouveau_drv.c | ||
246 | +++ b/drivers/gpu/drm/nouveau/nouveau_drv.c | ||
247 | @@ -186,11 +186,13 @@ nouveau_pci_suspend(struct pci_dev *pdev, pm_message_t pm_state) | ||
248 | if (dev->switch_power_state == DRM_SWITCH_POWER_OFF) | ||
249 | return 0; | ||
250 | |||
251 | - NV_INFO(dev, "Disabling display...\n"); | ||
252 | - nouveau_display_fini(dev); | ||
253 | + if (dev->mode_config.num_crtc) { | ||
254 | + NV_INFO(dev, "Disabling display...\n"); | ||
255 | + nouveau_display_fini(dev); | ||
256 | |||
257 | - NV_INFO(dev, "Disabling fbcon...\n"); | ||
258 | - nouveau_fbcon_set_suspend(dev, 1); | ||
259 | + NV_INFO(dev, "Disabling fbcon...\n"); | ||
260 | + nouveau_fbcon_set_suspend(dev, 1); | ||
261 | + } | ||
262 | |||
263 | NV_INFO(dev, "Unpinning framebuffer(s)...\n"); | ||
264 | list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { | ||
265 | @@ -363,10 +365,12 @@ nouveau_pci_resume(struct pci_dev *pdev) | ||
266 | NV_ERROR(dev, "Could not pin/map cursor.\n"); | ||
267 | } | ||
268 | |||
269 | - nouveau_fbcon_set_suspend(dev, 0); | ||
270 | - nouveau_fbcon_zfill_all(dev); | ||
271 | + if (dev->mode_config.num_crtc) { | ||
272 | + nouveau_fbcon_set_suspend(dev, 0); | ||
273 | + nouveau_fbcon_zfill_all(dev); | ||
274 | |||
275 | - nouveau_display_init(dev); | ||
276 | + nouveau_display_init(dev); | ||
277 | + } | ||
278 | |||
279 | /* Force CLUT to get re-loaded during modeset */ | ||
280 | list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { | ||
281 | @@ -468,9 +472,7 @@ static int __init nouveau_init(void) | ||
282 | #ifdef CONFIG_VGA_CONSOLE | ||
283 | if (vgacon_text_force()) | ||
284 | nouveau_modeset = 0; | ||
285 | - else | ||
286 | #endif | ||
287 | - nouveau_modeset = 1; | ||
288 | } | ||
289 | |||
290 | if (!nouveau_modeset) | ||
291 | diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c | ||
292 | index c2a8511..b096cf2 100644 | ||
293 | --- a/drivers/gpu/drm/nouveau/nouveau_state.c | ||
294 | +++ b/drivers/gpu/drm/nouveau/nouveau_state.c | ||
295 | @@ -47,6 +47,7 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev) | ||
296 | { | ||
297 | struct drm_nouveau_private *dev_priv = dev->dev_private; | ||
298 | struct nouveau_engine *engine = &dev_priv->engine; | ||
299 | + u32 pclass = dev->pdev->class >> 8; | ||
300 | |||
301 | switch (dev_priv->chipset & 0xf0) { | ||
302 | case 0x00: | ||
303 | @@ -526,7 +527,8 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev) | ||
304 | } | ||
305 | |||
306 | /* headless mode */ | ||
307 | - if (nouveau_modeset == 2) { | ||
308 | + if (nouveau_modeset == 2 || | ||
309 | + (nouveau_modeset < 0 && pclass != PCI_CLASS_DISPLAY_VGA)) { | ||
310 | engine->display.early_init = nouveau_stub_init; | ||
311 | engine->display.late_takedown = nouveau_stub_takedown; | ||
312 | engine->display.create = nouveau_stub_init; | ||
313 | diff --git a/drivers/gpu/drm/nouveau/nv04_dac.c b/drivers/gpu/drm/nouveau/nv04_dac.c | ||
314 | index 8300266..f180dcf 100644 | ||
315 | --- a/drivers/gpu/drm/nouveau/nv04_dac.c | ||
316 | +++ b/drivers/gpu/drm/nouveau/nv04_dac.c | ||
317 | @@ -210,7 +210,7 @@ out: | ||
318 | NVWriteVgaCrtc(dev, 0, NV_CIO_CR_MODE_INDEX, saved_cr_mode); | ||
319 | |||
320 | if (blue == 0x18) { | ||
321 | - NV_INFO(dev, "Load detected on head A\n"); | ||
322 | + NV_DEBUG(dev, "Load detected on head A\n"); | ||
323 | return connector_status_connected; | ||
324 | } | ||
325 | |||
326 | @@ -323,7 +323,7 @@ nv17_dac_detect(struct drm_encoder *encoder, struct drm_connector *connector) | ||
327 | |||
328 | if (nv17_dac_sample_load(encoder) & | ||
329 | NV_PRAMDAC_TEST_CONTROL_SENSEB_ALLHI) { | ||
330 | - NV_INFO(dev, "Load detected on output %c\n", | ||
331 | + NV_DEBUG(dev, "Load detected on output %c\n", | ||
332 | '@' + ffs(dcb->or)); | ||
333 | return connector_status_connected; | ||
334 | } else { | ||
335 | @@ -398,7 +398,7 @@ static void nv04_dac_commit(struct drm_encoder *encoder) | ||
336 | |||
337 | helper->dpms(encoder, DRM_MODE_DPMS_ON); | ||
338 | |||
339 | - NV_INFO(dev, "Output %s is running on CRTC %d using output %c\n", | ||
340 | + NV_DEBUG(dev, "Output %s is running on CRTC %d using output %c\n", | ||
341 | drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base), | ||
342 | nv_crtc->index, '@' + ffs(nv_encoder->dcb->or)); | ||
343 | } | ||
344 | @@ -447,7 +447,7 @@ static void nv04_dac_dpms(struct drm_encoder *encoder, int mode) | ||
345 | return; | ||
346 | nv_encoder->last_dpms = mode; | ||
347 | |||
348 | - NV_INFO(dev, "Setting dpms mode %d on vga encoder (output %d)\n", | ||
349 | + NV_DEBUG(dev, "Setting dpms mode %d on vga encoder (output %d)\n", | ||
350 | mode, nv_encoder->dcb->index); | ||
351 | |||
352 | nv04_dac_update_dacclk(encoder, mode == DRM_MODE_DPMS_ON); | ||
353 | diff --git a/drivers/gpu/drm/nouveau/nv04_dfp.c b/drivers/gpu/drm/nouveau/nv04_dfp.c | ||
354 | index 2258746..473f30a 100644 | ||
355 | --- a/drivers/gpu/drm/nouveau/nv04_dfp.c | ||
356 | +++ b/drivers/gpu/drm/nouveau/nv04_dfp.c | ||
357 | @@ -476,7 +476,7 @@ static void nv04_dfp_commit(struct drm_encoder *encoder) | ||
358 | |||
359 | helper->dpms(encoder, DRM_MODE_DPMS_ON); | ||
360 | |||
361 | - NV_INFO(dev, "Output %s is running on CRTC %d using output %c\n", | ||
362 | + NV_DEBUG(dev, "Output %s is running on CRTC %d using output %c\n", | ||
363 | drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base), | ||
364 | nv_crtc->index, '@' + ffs(nv_encoder->dcb->or)); | ||
365 | } | ||
366 | @@ -519,7 +519,7 @@ static void nv04_lvds_dpms(struct drm_encoder *encoder, int mode) | ||
367 | return; | ||
368 | nv_encoder->last_dpms = mode; | ||
369 | |||
370 | - NV_INFO(dev, "Setting dpms mode %d on lvds encoder (output %d)\n", | ||
371 | + NV_DEBUG(dev, "Setting dpms mode %d on lvds encoder (output %d)\n", | ||
372 | mode, nv_encoder->dcb->index); | ||
373 | |||
374 | if (was_powersaving && is_powersaving_dpms(mode)) | ||
375 | @@ -564,7 +564,7 @@ static void nv04_tmds_dpms(struct drm_encoder *encoder, int mode) | ||
376 | return; | ||
377 | nv_encoder->last_dpms = mode; | ||
378 | |||
379 | - NV_INFO(dev, "Setting dpms mode %d on tmds encoder (output %d)\n", | ||
380 | + NV_DEBUG(dev, "Setting dpms mode %d on tmds encoder (output %d)\n", | ||
381 | mode, nv_encoder->dcb->index); | ||
382 | |||
383 | nv04_dfp_update_backlight(encoder, mode); | ||
384 | diff --git a/drivers/gpu/drm/nouveau/nv04_tv.c b/drivers/gpu/drm/nouveau/nv04_tv.c | ||
385 | index 3eb605d..4de1fbe 100644 | ||
386 | --- a/drivers/gpu/drm/nouveau/nv04_tv.c | ||
387 | +++ b/drivers/gpu/drm/nouveau/nv04_tv.c | ||
388 | @@ -69,7 +69,7 @@ static void nv04_tv_dpms(struct drm_encoder *encoder, int mode) | ||
389 | struct nv04_mode_state *state = &dev_priv->mode_reg; | ||
390 | uint8_t crtc1A; | ||
391 | |||
392 | - NV_INFO(dev, "Setting dpms mode %d on TV encoder (output %d)\n", | ||
393 | + NV_DEBUG(dev, "Setting dpms mode %d on TV encoder (output %d)\n", | ||
394 | mode, nv_encoder->dcb->index); | ||
395 | |||
396 | state->pllsel &= ~(PLLSEL_TV_CRTC1_MASK | PLLSEL_TV_CRTC2_MASK); | ||
397 | @@ -162,7 +162,7 @@ static void nv04_tv_commit(struct drm_encoder *encoder) | ||
398 | |||
399 | helper->dpms(encoder, DRM_MODE_DPMS_ON); | ||
400 | |||
401 | - NV_INFO(dev, "Output %s is running on CRTC %d using output %c\n", | ||
402 | + NV_DEBUG(dev, "Output %s is running on CRTC %d using output %c\n", | ||
403 | drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base), nv_crtc->index, | ||
404 | '@' + ffs(nv_encoder->dcb->or)); | ||
405 | } | ||
406 | diff --git a/drivers/hid/hid-microsoft.c b/drivers/hid/hid-microsoft.c | ||
407 | index e5c699b..3899989 100644 | ||
408 | --- a/drivers/hid/hid-microsoft.c | ||
409 | +++ b/drivers/hid/hid-microsoft.c | ||
410 | @@ -29,22 +29,30 @@ | ||
411 | #define MS_RDESC 0x08 | ||
412 | #define MS_NOGET 0x10 | ||
413 | #define MS_DUPLICATE_USAGES 0x20 | ||
414 | +#define MS_RDESC_3K 0x40 | ||
415 | |||
416 | -/* | ||
417 | - * Microsoft Wireless Desktop Receiver (Model 1028) has | ||
418 | - * 'Usage Min/Max' where it ought to have 'Physical Min/Max' | ||
419 | - */ | ||
420 | static __u8 *ms_report_fixup(struct hid_device *hdev, __u8 *rdesc, | ||
421 | unsigned int *rsize) | ||
422 | { | ||
423 | unsigned long quirks = (unsigned long)hid_get_drvdata(hdev); | ||
424 | |||
425 | + /* | ||
426 | + * Microsoft Wireless Desktop Receiver (Model 1028) has | ||
427 | + * 'Usage Min/Max' where it ought to have 'Physical Min/Max' | ||
428 | + */ | ||
429 | if ((quirks & MS_RDESC) && *rsize == 571 && rdesc[557] == 0x19 && | ||
430 | rdesc[559] == 0x29) { | ||
431 | hid_info(hdev, "fixing up Microsoft Wireless Receiver Model 1028 report descriptor\n"); | ||
432 | rdesc[557] = 0x35; | ||
433 | rdesc[559] = 0x45; | ||
434 | } | ||
435 | + /* the same as above (s/usage/physical/) */ | ||
436 | + if ((quirks & MS_RDESC_3K) && *rsize == 106 && | ||
437 | + !memcmp((char []){ 0x19, 0x00, 0x29, 0xff }, | ||
438 | + &rdesc[94], 4)) { | ||
439 | + rdesc[94] = 0x35; | ||
440 | + rdesc[96] = 0x45; | ||
441 | + } | ||
442 | return rdesc; | ||
443 | } | ||
444 | |||
445 | @@ -193,7 +201,7 @@ static const struct hid_device_id ms_devices[] = { | ||
446 | { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_USB), | ||
447 | .driver_data = MS_PRESENTER }, | ||
448 | { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_3K), | ||
449 | - .driver_data = MS_ERGONOMY }, | ||
450 | + .driver_data = MS_ERGONOMY | MS_RDESC_3K }, | ||
451 | { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0), | ||
452 | .driver_data = MS_NOGET }, | ||
453 | { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_MOUSE_4500), | ||
454 | diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c | ||
455 | index 23904d2..df44509 100644 | ||
456 | --- a/drivers/md/raid1.c | ||
457 | +++ b/drivers/md/raid1.c | ||
458 | @@ -2564,7 +2564,7 @@ static struct r1conf *setup_conf(struct mddev *mddev) | ||
459 | || disk_idx < 0) | ||
460 | continue; | ||
461 | if (test_bit(Replacement, &rdev->flags)) | ||
462 | - disk = conf->mirrors + conf->raid_disks + disk_idx; | ||
463 | + disk = conf->mirrors + mddev->raid_disks + disk_idx; | ||
464 | else | ||
465 | disk = conf->mirrors + disk_idx; | ||
466 | |||
467 | diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c | ||
468 | index e4d6dc2..d6ffd43 100644 | ||
469 | --- a/drivers/net/wireless/b43/main.c | ||
470 | +++ b/drivers/net/wireless/b43/main.c | ||
471 | @@ -5430,6 +5430,8 @@ static void b43_ssb_remove(struct ssb_device *sdev) | ||
472 | cancel_work_sync(&wldev->restart_work); | ||
473 | |||
474 | B43_WARN_ON(!wl); | ||
475 | + if (!wldev->fw.ucode.data) | ||
476 | + return; /* NULL if firmware never loaded */ | ||
477 | if (wl->current_dev == wldev) { | ||
478 | /* Restore the queues count before unregistering, because firmware detect | ||
479 | * might have modified it. Restoring is important, so the networking | ||
480 | diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c | ||
481 | index d594460..69f3f7d 100644 | ||
482 | --- a/drivers/target/target_core_transport.c | ||
483 | +++ b/drivers/target/target_core_transport.c | ||
484 | @@ -1748,7 +1748,6 @@ static void target_complete_tmr_failure(struct work_struct *work) | ||
485 | |||
486 | se_cmd->se_tmr_req->response = TMR_LUN_DOES_NOT_EXIST; | ||
487 | se_cmd->se_tfo->queue_tm_rsp(se_cmd); | ||
488 | - transport_generic_free_cmd(se_cmd, 0); | ||
489 | } | ||
490 | |||
491 | /** | ||
492 | diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c | ||
493 | index 0ee374d..556cc82 100644 | ||
494 | --- a/fs/ext4/ialloc.c | ||
495 | +++ b/fs/ext4/ialloc.c | ||
496 | @@ -697,6 +697,10 @@ repeat_in_this_group: | ||
497 | "inode=%lu", ino + 1); | ||
498 | continue; | ||
499 | } | ||
500 | + BUFFER_TRACE(inode_bitmap_bh, "get_write_access"); | ||
501 | + err = ext4_journal_get_write_access(handle, inode_bitmap_bh); | ||
502 | + if (err) | ||
503 | + goto fail; | ||
504 | ext4_lock_group(sb, group); | ||
505 | ret2 = ext4_test_and_set_bit(ino, inode_bitmap_bh->b_data); | ||
506 | ext4_unlock_group(sb, group); | ||
507 | @@ -710,6 +714,11 @@ repeat_in_this_group: | ||
508 | goto out; | ||
509 | |||
510 | got: | ||
511 | + BUFFER_TRACE(inode_bitmap_bh, "call ext4_handle_dirty_metadata"); | ||
512 | + err = ext4_handle_dirty_metadata(handle, NULL, inode_bitmap_bh); | ||
513 | + if (err) | ||
514 | + goto fail; | ||
515 | + | ||
516 | /* We may have to initialize the block bitmap if it isn't already */ | ||
517 | if (EXT4_HAS_RO_COMPAT_FEATURE(sb, EXT4_FEATURE_RO_COMPAT_GDT_CSUM) && | ||
518 | gdp->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT)) { | ||
519 | @@ -742,11 +751,6 @@ got: | ||
520 | goto fail; | ||
521 | } | ||
522 | |||
523 | - BUFFER_TRACE(inode_bitmap_bh, "get_write_access"); | ||
524 | - err = ext4_journal_get_write_access(handle, inode_bitmap_bh); | ||
525 | - if (err) | ||
526 | - goto fail; | ||
527 | - | ||
528 | BUFFER_TRACE(group_desc_bh, "get_write_access"); | ||
529 | err = ext4_journal_get_write_access(handle, group_desc_bh); | ||
530 | if (err) | ||
531 | @@ -789,11 +793,6 @@ got: | ||
532 | ext4_unlock_group(sb, group); | ||
533 | } | ||
534 | |||
535 | - BUFFER_TRACE(inode_bitmap_bh, "call ext4_handle_dirty_metadata"); | ||
536 | - err = ext4_handle_dirty_metadata(handle, NULL, inode_bitmap_bh); | ||
537 | - if (err) | ||
538 | - goto fail; | ||
539 | - | ||
540 | BUFFER_TRACE(group_desc_bh, "call ext4_handle_dirty_metadata"); | ||
541 | err = ext4_handle_dirty_metadata(handle, NULL, group_desc_bh); | ||
542 | if (err) |