Magellan Linux

Contents of /trunk/kernel-alx/patches-4.19/0110-4.19.11-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3389 - (show annotations) (download)
Fri Aug 2 11:47:24 2019 UTC (4 years, 9 months ago) by niro
File size: 55181 byte(s)
-linux-4.19.11
1 diff --git a/Makefile b/Makefile
2 index 36d9de42def3..676155d4dc3e 100644
3 --- a/Makefile
4 +++ b/Makefile
5 @@ -1,7 +1,7 @@
6 # SPDX-License-Identifier: GPL-2.0
7 VERSION = 4
8 PATCHLEVEL = 19
9 -SUBLEVEL = 10
10 +SUBLEVEL = 11
11 EXTRAVERSION =
12 NAME = "People's Front"
13
14 diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
15 index 4adb85e66be3..93762244be7f 100644
16 --- a/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
17 +++ b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
18 @@ -31,7 +31,7 @@
19
20 wifi_pwrseq: wifi-pwrseq {
21 compatible = "mmc-pwrseq-simple";
22 - reset-gpios = <&expgpio 1 GPIO_ACTIVE_HIGH>;
23 + reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
24 };
25 };
26
27 diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
28 index c318bcbc6ba7..89e6fd547c75 100644
29 --- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
30 +++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
31 @@ -26,7 +26,7 @@
32
33 wifi_pwrseq: wifi-pwrseq {
34 compatible = "mmc-pwrseq-simple";
35 - reset-gpios = <&expgpio 1 GPIO_ACTIVE_HIGH>;
36 + reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
37 };
38 };
39
40 diff --git a/arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval.dts b/arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval.dts
41 index 76b56eafaab9..f714a20649d7 100644
42 --- a/arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval.dts
43 +++ b/arch/arm/boot/dts/qcom-apq8064-arrow-sd-600eval.dts
44 @@ -387,6 +387,11 @@
45 hpd-gpio = <&tlmm_pinmux 72 GPIO_ACTIVE_HIGH>;
46
47 ports {
48 + port@0 {
49 + endpoint {
50 + remote-endpoint = <&mdp_dtv_out>;
51 + };
52 + };
53 port@1 {
54 endpoint {
55 remote-endpoint = <&hdmi_con>;
56 diff --git a/arch/arm/mach-mmp/cputype.h b/arch/arm/mach-mmp/cputype.h
57 index 446edaeb78a7..a96abcf521b4 100644
58 --- a/arch/arm/mach-mmp/cputype.h
59 +++ b/arch/arm/mach-mmp/cputype.h
60 @@ -44,10 +44,12 @@ static inline int cpu_is_pxa910(void)
61 #define cpu_is_pxa910() (0)
62 #endif
63
64 -#ifdef CONFIG_CPU_MMP2
65 +#if defined(CONFIG_CPU_MMP2) || defined(CONFIG_MACH_MMP2_DT)
66 static inline int cpu_is_mmp2(void)
67 {
68 - return (((read_cpuid_id() >> 8) & 0xff) == 0x58);
69 + return (((read_cpuid_id() >> 8) & 0xff) == 0x58) &&
70 + (((mmp_chip_id & 0xfff) == 0x410) ||
71 + ((mmp_chip_id & 0xfff) == 0x610));
72 }
73 #else
74 #define cpu_is_mmp2() (0)
75 diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c
76 index 072c51fb07d7..c389f2bef938 100644
77 --- a/arch/arm64/mm/dma-mapping.c
78 +++ b/arch/arm64/mm/dma-mapping.c
79 @@ -587,9 +587,9 @@ static void *__iommu_alloc_attrs(struct device *dev, size_t size,
80 prot,
81 __builtin_return_address(0));
82 if (addr) {
83 - memset(addr, 0, size);
84 if (!coherent)
85 __dma_flush_area(page_to_virt(page), iosize);
86 + memset(addr, 0, size);
87 } else {
88 iommu_dma_unmap_page(dev, *handle, iosize, 0, attrs);
89 dma_release_from_contiguous(dev, page,
90 diff --git a/arch/powerpc/kernel/legacy_serial.c b/arch/powerpc/kernel/legacy_serial.c
91 index 33b34a58fc62..5b9dce17f0c9 100644
92 --- a/arch/powerpc/kernel/legacy_serial.c
93 +++ b/arch/powerpc/kernel/legacy_serial.c
94 @@ -372,6 +372,8 @@ void __init find_legacy_serial_ports(void)
95
96 /* Now find out if one of these is out firmware console */
97 path = of_get_property(of_chosen, "linux,stdout-path", NULL);
98 + if (path == NULL)
99 + path = of_get_property(of_chosen, "stdout-path", NULL);
100 if (path != NULL) {
101 stdout = of_find_node_by_path(path);
102 if (stdout)
103 @@ -595,8 +597,10 @@ static int __init check_legacy_serial_console(void)
104 /* We are getting a weird phandle from OF ... */
105 /* ... So use the full path instead */
106 name = of_get_property(of_chosen, "linux,stdout-path", NULL);
107 + if (name == NULL)
108 + name = of_get_property(of_chosen, "stdout-path", NULL);
109 if (name == NULL) {
110 - DBG(" no linux,stdout-path !\n");
111 + DBG(" no stdout-path !\n");
112 return -ENODEV;
113 }
114 prom_stdout = of_find_node_by_path(name);
115 diff --git a/arch/powerpc/kernel/msi.c b/arch/powerpc/kernel/msi.c
116 index dab616a33b8d..f2197654be07 100644
117 --- a/arch/powerpc/kernel/msi.c
118 +++ b/arch/powerpc/kernel/msi.c
119 @@ -34,5 +34,10 @@ void arch_teardown_msi_irqs(struct pci_dev *dev)
120 {
121 struct pci_controller *phb = pci_bus_to_host(dev->bus);
122
123 - phb->controller_ops.teardown_msi_irqs(dev);
124 + /*
125 + * We can be called even when arch_setup_msi_irqs() returns -ENOSYS,
126 + * so check the pointer again.
127 + */
128 + if (phb->controller_ops.teardown_msi_irqs)
129 + phb->controller_ops.teardown_msi_irqs(dev);
130 }
131 diff --git a/arch/x86/Makefile b/arch/x86/Makefile
132 index 9298f0f3817a..b84f61bc5e7a 100644
133 --- a/arch/x86/Makefile
134 +++ b/arch/x86/Makefile
135 @@ -223,9 +223,6 @@ KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
136
137 # Avoid indirect branches in kernel to deal with Spectre
138 ifdef CONFIG_RETPOLINE
139 -ifeq ($(RETPOLINE_CFLAGS),)
140 - $(error You are building kernel with non-retpoline compiler, please update your compiler.)
141 -endif
142 KBUILD_CFLAGS += $(RETPOLINE_CFLAGS)
143 endif
144
145 @@ -303,6 +300,13 @@ ifndef CC_HAVE_ASM_GOTO
146 @echo Compiler lacks asm-goto support.
147 @exit 1
148 endif
149 +ifdef CONFIG_RETPOLINE
150 +ifeq ($(RETPOLINE_CFLAGS),)
151 + @echo "You are building kernel with non-retpoline compiler." >&2
152 + @echo "Please update your compiler." >&2
153 + @false
154 +endif
155 +endif
156
157 archclean:
158 $(Q)rm -rf $(objtree)/arch/i386
159 diff --git a/block/bio.c b/block/bio.c
160 index c4ef8aa46452..55a5386fd431 100644
161 --- a/block/bio.c
162 +++ b/block/bio.c
163 @@ -1262,7 +1262,8 @@ struct bio *bio_copy_user_iov(struct request_queue *q,
164 if (ret)
165 goto cleanup;
166 } else {
167 - zero_fill_bio(bio);
168 + if (bmd->is_our_pages)
169 + zero_fill_bio(bio);
170 iov_iter_advance(iter, bio->bi_iter.bi_size);
171 }
172
173 diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
174 index 8816c697b205..387f1cf1dc20 100644
175 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
176 +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
177 @@ -330,7 +330,9 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
178 case CHIP_TOPAZ:
179 if (((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x81)) ||
180 ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x83)) ||
181 - ((adev->pdev->device == 0x6907) && (adev->pdev->revision == 0x87))) {
182 + ((adev->pdev->device == 0x6907) && (adev->pdev->revision == 0x87)) ||
183 + ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0xD1)) ||
184 + ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0xD3))) {
185 info->is_kicker = true;
186 strcpy(fw_name, "amdgpu/topaz_k_smc.bin");
187 } else
188 @@ -351,7 +353,6 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
189 if (type == CGS_UCODE_ID_SMU) {
190 if (((adev->pdev->device == 0x67ef) &&
191 ((adev->pdev->revision == 0xe0) ||
192 - (adev->pdev->revision == 0xe2) ||
193 (adev->pdev->revision == 0xe5))) ||
194 ((adev->pdev->device == 0x67ff) &&
195 ((adev->pdev->revision == 0xcf) ||
196 @@ -359,8 +360,13 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
197 (adev->pdev->revision == 0xff)))) {
198 info->is_kicker = true;
199 strcpy(fw_name, "amdgpu/polaris11_k_smc.bin");
200 - } else
201 + } else if ((adev->pdev->device == 0x67ef) &&
202 + (adev->pdev->revision == 0xe2)) {
203 + info->is_kicker = true;
204 + strcpy(fw_name, "amdgpu/polaris11_k2_smc.bin");
205 + } else {
206 strcpy(fw_name, "amdgpu/polaris11_smc.bin");
207 + }
208 } else if (type == CGS_UCODE_ID_SMU_SK) {
209 strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin");
210 }
211 @@ -375,17 +381,35 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
212 (adev->pdev->revision == 0xe7) ||
213 (adev->pdev->revision == 0xef))) ||
214 ((adev->pdev->device == 0x6fdf) &&
215 - (adev->pdev->revision == 0xef))) {
216 + ((adev->pdev->revision == 0xef) ||
217 + (adev->pdev->revision == 0xff)))) {
218 info->is_kicker = true;
219 strcpy(fw_name, "amdgpu/polaris10_k_smc.bin");
220 - } else
221 + } else if ((adev->pdev->device == 0x67df) &&
222 + ((adev->pdev->revision == 0xe1) ||
223 + (adev->pdev->revision == 0xf7))) {
224 + info->is_kicker = true;
225 + strcpy(fw_name, "amdgpu/polaris10_k2_smc.bin");
226 + } else {
227 strcpy(fw_name, "amdgpu/polaris10_smc.bin");
228 + }
229 } else if (type == CGS_UCODE_ID_SMU_SK) {
230 strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin");
231 }
232 break;
233 case CHIP_POLARIS12:
234 - strcpy(fw_name, "amdgpu/polaris12_smc.bin");
235 + if (((adev->pdev->device == 0x6987) &&
236 + ((adev->pdev->revision == 0xc0) ||
237 + (adev->pdev->revision == 0xc3))) ||
238 + ((adev->pdev->device == 0x6981) &&
239 + ((adev->pdev->revision == 0x00) ||
240 + (adev->pdev->revision == 0x01) ||
241 + (adev->pdev->revision == 0x10)))) {
242 + info->is_kicker = true;
243 + strcpy(fw_name, "amdgpu/polaris12_k_smc.bin");
244 + } else {
245 + strcpy(fw_name, "amdgpu/polaris12_smc.bin");
246 + }
247 break;
248 case CHIP_VEGAM:
249 strcpy(fw_name, "amdgpu/vegam_smc.bin");
250 diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
251 index 0f41d8647376..8e26e1ca14c6 100644
252 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
253 +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
254 @@ -761,7 +761,13 @@ static const struct pci_device_id pciidlist[] = {
255 {0x1002, 0x6864, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10},
256 {0x1002, 0x6867, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10},
257 {0x1002, 0x6868, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10},
258 + {0x1002, 0x6869, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10},
259 + {0x1002, 0x686a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10},
260 + {0x1002, 0x686b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10},
261 {0x1002, 0x686c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10},
262 + {0x1002, 0x686d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10},
263 + {0x1002, 0x686e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10},
264 + {0x1002, 0x686f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10},
265 {0x1002, 0x687f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10},
266 /* Vega 12 */
267 {0x1002, 0x69A0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA12},
268 diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
269 index 29ac74f40dce..1427675d0e5a 100644
270 --- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
271 +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
272 @@ -326,7 +326,13 @@ static const struct kfd_deviceid supported_devices[] = {
273 { 0x6864, &vega10_device_info }, /* Vega10 */
274 { 0x6867, &vega10_device_info }, /* Vega10 */
275 { 0x6868, &vega10_device_info }, /* Vega10 */
276 + { 0x6869, &vega10_device_info }, /* Vega10 */
277 + { 0x686A, &vega10_device_info }, /* Vega10 */
278 + { 0x686B, &vega10_device_info }, /* Vega10 */
279 { 0x686C, &vega10_vf_device_info }, /* Vega10 vf*/
280 + { 0x686D, &vega10_device_info }, /* Vega10 */
281 + { 0x686E, &vega10_device_info }, /* Vega10 */
282 + { 0x686F, &vega10_device_info }, /* Vega10 */
283 { 0x687F, &vega10_device_info }, /* Vega10 */
284 };
285
286 diff --git a/drivers/gpu/drm/amd/powerplay/inc/smu7_ppsmc.h b/drivers/gpu/drm/amd/powerplay/inc/smu7_ppsmc.h
287 index 62f36ba2435b..c1a99dfe4913 100644
288 --- a/drivers/gpu/drm/amd/powerplay/inc/smu7_ppsmc.h
289 +++ b/drivers/gpu/drm/amd/powerplay/inc/smu7_ppsmc.h
290 @@ -386,6 +386,8 @@ typedef uint16_t PPSMC_Result;
291 #define PPSMC_MSG_AgmResetPsm ((uint16_t) 0x403)
292 #define PPSMC_MSG_ReadVftCell ((uint16_t) 0x404)
293
294 +#define PPSMC_MSG_ApplyAvfsCksOffVoltage ((uint16_t) 0x415)
295 +
296 #define PPSMC_MSG_GFX_CU_PG_ENABLE ((uint16_t) 0x280)
297 #define PPSMC_MSG_GFX_CU_PG_DISABLE ((uint16_t) 0x281)
298 #define PPSMC_MSG_GetCurrPkgPwr ((uint16_t) 0x282)
299 diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
300 index 1276f168ff68..5b67f575cd34 100644
301 --- a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
302 +++ b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
303 @@ -1984,6 +1984,12 @@ int polaris10_thermal_avfs_enable(struct pp_hwmgr *hwmgr)
304
305 smum_send_msg_to_smc(hwmgr, PPSMC_MSG_EnableAvfs);
306
307 + /* Apply avfs cks-off voltages to avoid the overshoot
308 + * when switching to the highest sclk frequency
309 + */
310 + if (data->apply_avfs_cks_off_voltage)
311 + smum_send_msg_to_smc(hwmgr, PPSMC_MSG_ApplyAvfsCksOffVoltage);
312 +
313 return 0;
314 }
315
316 diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c
317 index 99d5e4f98f49..a6edd5df33b0 100644
318 --- a/drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c
319 +++ b/drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c
320 @@ -37,10 +37,13 @@ MODULE_FIRMWARE("amdgpu/fiji_smc.bin");
321 MODULE_FIRMWARE("amdgpu/polaris10_smc.bin");
322 MODULE_FIRMWARE("amdgpu/polaris10_smc_sk.bin");
323 MODULE_FIRMWARE("amdgpu/polaris10_k_smc.bin");
324 +MODULE_FIRMWARE("amdgpu/polaris10_k2_smc.bin");
325 MODULE_FIRMWARE("amdgpu/polaris11_smc.bin");
326 MODULE_FIRMWARE("amdgpu/polaris11_smc_sk.bin");
327 MODULE_FIRMWARE("amdgpu/polaris11_k_smc.bin");
328 +MODULE_FIRMWARE("amdgpu/polaris11_k2_smc.bin");
329 MODULE_FIRMWARE("amdgpu/polaris12_smc.bin");
330 +MODULE_FIRMWARE("amdgpu/polaris12_k_smc.bin");
331 MODULE_FIRMWARE("amdgpu/vegam_smc.bin");
332 MODULE_FIRMWARE("amdgpu/vega10_smc.bin");
333 MODULE_FIRMWARE("amdgpu/vega10_acg_smc.bin");
334 diff --git a/drivers/gpu/drm/i915/gvt/fb_decoder.c b/drivers/gpu/drm/i915/gvt/fb_decoder.c
335 index 481896fb712a..85e6736f0a32 100644
336 --- a/drivers/gpu/drm/i915/gvt/fb_decoder.c
337 +++ b/drivers/gpu/drm/i915/gvt/fb_decoder.c
338 @@ -235,7 +235,7 @@ int intel_vgpu_decode_primary_plane(struct intel_vgpu *vgpu,
339 plane->bpp = skl_pixel_formats[fmt].bpp;
340 plane->drm_format = skl_pixel_formats[fmt].drm_format;
341 } else {
342 - plane->tiled = !!(val & DISPPLANE_TILED);
343 + plane->tiled = val & DISPPLANE_TILED;
344 fmt = bdw_format_to_drm(val & DISPPLANE_PIXFORMAT_MASK);
345 plane->bpp = bdw_pixel_formats[fmt].bpp;
346 plane->drm_format = bdw_pixel_formats[fmt].drm_format;
347 diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
348 index 75ea87ebf9b0..6937ef0b4bfc 100644
349 --- a/drivers/gpu/drm/i915/intel_lrc.c
350 +++ b/drivers/gpu/drm/i915/intel_lrc.c
351 @@ -442,8 +442,13 @@ static u64 execlists_update_context(struct i915_request *rq)
352 * may not be visible to the HW prior to the completion of the UC
353 * register write and that we may begin execution from the context
354 * before its image is complete leading to invalid PD chasing.
355 + *
356 + * Furthermore, Braswell, at least, wants a full mb to be sure that
357 + * the writes are coherent in memory (visible to the GPU) prior to
358 + * execution, and not just visible to other CPUs (as is the result of
359 + * wmb).
360 */
361 - wmb();
362 + mb();
363 return ce->lrc_desc;
364 }
365
366 diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_dbg.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_dbg.c
367 index ae2aee7ed9e1..e741d26185df 100644
368 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_dbg.c
369 +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_dbg.c
370 @@ -1962,7 +1962,7 @@ static void _dpu_dbg_dump_dpu_dbg_bus(struct dpu_dbg_dpu_debug_bus *bus)
371 u32 *dump_addr = NULL;
372 u32 status = 0;
373 struct dpu_debug_bus_entry *head;
374 - phys_addr_t phys = 0;
375 + dma_addr_t dma = 0;
376 int list_size;
377 int i;
378 u32 offset;
379 @@ -2000,7 +2000,7 @@ static void _dpu_dbg_dump_dpu_dbg_bus(struct dpu_dbg_dpu_debug_bus *bus)
380 if (in_mem) {
381 if (!(*dump_mem))
382 *dump_mem = dma_alloc_coherent(dpu_dbg_base.dev,
383 - list_size, &phys, GFP_KERNEL);
384 + list_size, &dma, GFP_KERNEL);
385
386 if (*dump_mem) {
387 dump_addr = *dump_mem;
388 @@ -2101,7 +2101,7 @@ static void _dpu_dbg_dump_vbif_dbg_bus(struct dpu_dbg_vbif_debug_bus *bus)
389 u32 value, d0, d1;
390 unsigned long reg, reg1, reg2;
391 struct vbif_debug_bus_entry *head;
392 - phys_addr_t phys = 0;
393 + dma_addr_t dma = 0;
394 int i, list_size = 0;
395 void __iomem *mem_base = NULL;
396 struct vbif_debug_bus_entry *dbg_bus;
397 @@ -2151,7 +2151,7 @@ static void _dpu_dbg_dump_vbif_dbg_bus(struct dpu_dbg_vbif_debug_bus *bus)
398 if (in_mem) {
399 if (!(*dump_mem))
400 *dump_mem = dma_alloc_coherent(dpu_dbg_base.dev,
401 - list_size, &phys, GFP_KERNEL);
402 + list_size, &dma, GFP_KERNEL);
403
404 if (*dump_mem) {
405 dump_addr = *dump_mem;
406 diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
407 index faf7009c0a3c..2abcd7bf104f 100644
408 --- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
409 +++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
410 @@ -197,6 +197,22 @@ nv50_dmac_create(struct nvif_device *device, struct nvif_object *disp,
411 /******************************************************************************
412 * EVO channel helpers
413 *****************************************************************************/
414 +static void
415 +evo_flush(struct nv50_dmac *dmac)
416 +{
417 + /* Push buffer fetches are not coherent with BAR1, we need to ensure
418 + * writes have been flushed right through to VRAM before writing PUT.
419 + */
420 + if (dmac->push.type & NVIF_MEM_VRAM) {
421 + struct nvif_device *device = dmac->base.device;
422 + nvif_wr32(&device->object, 0x070000, 0x00000001);
423 + nvif_msec(device, 2000,
424 + if (!(nvif_rd32(&device->object, 0x070000) & 0x00000002))
425 + break;
426 + );
427 + }
428 +}
429 +
430 u32 *
431 evo_wait(struct nv50_dmac *evoc, int nr)
432 {
433 @@ -207,6 +223,7 @@ evo_wait(struct nv50_dmac *evoc, int nr)
434 mutex_lock(&dmac->lock);
435 if (put + nr >= (PAGE_SIZE / 4) - 8) {
436 dmac->ptr[put] = 0x20000000;
437 + evo_flush(dmac);
438
439 nvif_wr32(&dmac->base.user, 0x0000, 0x00000000);
440 if (nvif_msec(device, 2000,
441 @@ -229,17 +246,7 @@ evo_kick(u32 *push, struct nv50_dmac *evoc)
442 {
443 struct nv50_dmac *dmac = evoc;
444
445 - /* Push buffer fetches are not coherent with BAR1, we need to ensure
446 - * writes have been flushed right through to VRAM before writing PUT.
447 - */
448 - if (dmac->push.type & NVIF_MEM_VRAM) {
449 - struct nvif_device *device = dmac->base.device;
450 - nvif_wr32(&device->object, 0x070000, 0x00000001);
451 - nvif_msec(device, 2000,
452 - if (!(nvif_rd32(&device->object, 0x070000) & 0x00000002))
453 - break;
454 - );
455 - }
456 + evo_flush(dmac);
457
458 nvif_wr32(&dmac->base.user, 0x0000, (push - dmac->ptr) << 2);
459 mutex_unlock(&dmac->lock);
460 @@ -1226,6 +1233,7 @@ nv50_mstm_del(struct nv50_mstm **pmstm)
461 {
462 struct nv50_mstm *mstm = *pmstm;
463 if (mstm) {
464 + drm_dp_mst_topology_mgr_destroy(&mstm->mgr);
465 kfree(*pmstm);
466 *pmstm = NULL;
467 }
468 diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
469 index 05368fa4f956..f814d37b1db2 100644
470 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
471 +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
472 @@ -442,11 +442,6 @@ static int rockchip_drm_platform_remove(struct platform_device *pdev)
473 return 0;
474 }
475
476 -static void rockchip_drm_platform_shutdown(struct platform_device *pdev)
477 -{
478 - rockchip_drm_platform_remove(pdev);
479 -}
480 -
481 static const struct of_device_id rockchip_drm_dt_ids[] = {
482 { .compatible = "rockchip,display-subsystem", },
483 { /* sentinel */ },
484 @@ -456,7 +451,6 @@ MODULE_DEVICE_TABLE(of, rockchip_drm_dt_ids);
485 static struct platform_driver rockchip_drm_platform_driver = {
486 .probe = rockchip_drm_platform_probe,
487 .remove = rockchip_drm_platform_remove,
488 - .shutdown = rockchip_drm_platform_shutdown,
489 .driver = {
490 .name = "rockchip-drm",
491 .of_match_table = rockchip_drm_dt_ids,
492 diff --git a/drivers/i2c/busses/i2c-aspeed.c b/drivers/i2c/busses/i2c-aspeed.c
493 index a4f956c6d567..a19fbff16861 100644
494 --- a/drivers/i2c/busses/i2c-aspeed.c
495 +++ b/drivers/i2c/busses/i2c-aspeed.c
496 @@ -555,7 +555,7 @@ static irqreturn_t aspeed_i2c_bus_irq(int irq, void *dev_id)
497 spin_lock(&bus->lock);
498
499 #if IS_ENABLED(CONFIG_I2C_SLAVE)
500 - if (aspeed_i2c_slave_irq(bus)) {
501 + if (IS_ENABLED(CONFIG_I2C_SLAVE) && aspeed_i2c_slave_irq(bus)) {
502 dev_dbg(bus->dev, "irq handled by slave.\n");
503 ret = true;
504 goto out;
505 @@ -564,7 +564,9 @@ static irqreturn_t aspeed_i2c_bus_irq(int irq, void *dev_id)
506
507 ret = aspeed_i2c_master_irq(bus);
508
509 +#if IS_ENABLED(CONFIG_I2C_SLAVE)
510 out:
511 +#endif
512 spin_unlock(&bus->lock);
513 return ret ? IRQ_HANDLED : IRQ_NONE;
514 }
515 diff --git a/drivers/md/dm-cache-metadata.c b/drivers/md/dm-cache-metadata.c
516 index 5936de71883f..6fc93834da44 100644
517 --- a/drivers/md/dm-cache-metadata.c
518 +++ b/drivers/md/dm-cache-metadata.c
519 @@ -930,6 +930,10 @@ static int blocks_are_clean_separate_dirty(struct dm_cache_metadata *cmd,
520 bool dirty_flag;
521 *result = true;
522
523 + if (from_cblock(cmd->cache_blocks) == 0)
524 + /* Nothing to do */
525 + return 0;
526 +
527 r = dm_bitset_cursor_begin(&cmd->dirty_info, cmd->dirty_root,
528 from_cblock(cmd->cache_blocks), &cmd->dirty_cursor);
529 if (r) {
530 diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c
531 index aaf1ad481ee8..1f225a1e08dd 100644
532 --- a/drivers/md/dm-thin.c
533 +++ b/drivers/md/dm-thin.c
534 @@ -195,7 +195,7 @@ static void throttle_unlock(struct throttle *t)
535 struct dm_thin_new_mapping;
536
537 /*
538 - * The pool runs in 4 modes. Ordered in degraded order for comparisons.
539 + * The pool runs in various modes. Ordered in degraded order for comparisons.
540 */
541 enum pool_mode {
542 PM_WRITE, /* metadata may be changed */
543 @@ -282,9 +282,38 @@ struct pool {
544 mempool_t mapping_pool;
545 };
546
547 -static enum pool_mode get_pool_mode(struct pool *pool);
548 static void metadata_operation_failed(struct pool *pool, const char *op, int r);
549
550 +static enum pool_mode get_pool_mode(struct pool *pool)
551 +{
552 + return pool->pf.mode;
553 +}
554 +
555 +static void notify_of_pool_mode_change(struct pool *pool)
556 +{
557 + const char *descs[] = {
558 + "write",
559 + "out-of-data-space",
560 + "read-only",
561 + "read-only",
562 + "fail"
563 + };
564 + const char *extra_desc = NULL;
565 + enum pool_mode mode = get_pool_mode(pool);
566 +
567 + if (mode == PM_OUT_OF_DATA_SPACE) {
568 + if (!pool->pf.error_if_no_space)
569 + extra_desc = " (queue IO)";
570 + else
571 + extra_desc = " (error IO)";
572 + }
573 +
574 + dm_table_event(pool->ti->table);
575 + DMINFO("%s: switching pool to %s%s mode",
576 + dm_device_name(pool->pool_md),
577 + descs[(int)mode], extra_desc ? : "");
578 +}
579 +
580 /*
581 * Target context for a pool.
582 */
583 @@ -2351,8 +2380,6 @@ static void do_waker(struct work_struct *ws)
584 queue_delayed_work(pool->wq, &pool->waker, COMMIT_PERIOD);
585 }
586
587 -static void notify_of_pool_mode_change_to_oods(struct pool *pool);
588 -
589 /*
590 * We're holding onto IO to allow userland time to react. After the
591 * timeout either the pool will have been resized (and thus back in
592 @@ -2365,7 +2392,7 @@ static void do_no_space_timeout(struct work_struct *ws)
593
594 if (get_pool_mode(pool) == PM_OUT_OF_DATA_SPACE && !pool->pf.error_if_no_space) {
595 pool->pf.error_if_no_space = true;
596 - notify_of_pool_mode_change_to_oods(pool);
597 + notify_of_pool_mode_change(pool);
598 error_retry_list_with_code(pool, BLK_STS_NOSPC);
599 }
600 }
601 @@ -2433,26 +2460,6 @@ static void noflush_work(struct thin_c *tc, void (*fn)(struct work_struct *))
602
603 /*----------------------------------------------------------------*/
604
605 -static enum pool_mode get_pool_mode(struct pool *pool)
606 -{
607 - return pool->pf.mode;
608 -}
609 -
610 -static void notify_of_pool_mode_change(struct pool *pool, const char *new_mode)
611 -{
612 - dm_table_event(pool->ti->table);
613 - DMINFO("%s: switching pool to %s mode",
614 - dm_device_name(pool->pool_md), new_mode);
615 -}
616 -
617 -static void notify_of_pool_mode_change_to_oods(struct pool *pool)
618 -{
619 - if (!pool->pf.error_if_no_space)
620 - notify_of_pool_mode_change(pool, "out-of-data-space (queue IO)");
621 - else
622 - notify_of_pool_mode_change(pool, "out-of-data-space (error IO)");
623 -}
624 -
625 static bool passdown_enabled(struct pool_c *pt)
626 {
627 return pt->adjusted_pf.discard_passdown;
628 @@ -2501,8 +2508,6 @@ static void set_pool_mode(struct pool *pool, enum pool_mode new_mode)
629
630 switch (new_mode) {
631 case PM_FAIL:
632 - if (old_mode != new_mode)
633 - notify_of_pool_mode_change(pool, "failure");
634 dm_pool_metadata_read_only(pool->pmd);
635 pool->process_bio = process_bio_fail;
636 pool->process_discard = process_bio_fail;
637 @@ -2516,8 +2521,6 @@ static void set_pool_mode(struct pool *pool, enum pool_mode new_mode)
638
639 case PM_OUT_OF_METADATA_SPACE:
640 case PM_READ_ONLY:
641 - if (!is_read_only_pool_mode(old_mode))
642 - notify_of_pool_mode_change(pool, "read-only");
643 dm_pool_metadata_read_only(pool->pmd);
644 pool->process_bio = process_bio_read_only;
645 pool->process_discard = process_bio_success;
646 @@ -2538,8 +2541,6 @@ static void set_pool_mode(struct pool *pool, enum pool_mode new_mode)
647 * alarming rate. Adjust your low water mark if you're
648 * frequently seeing this mode.
649 */
650 - if (old_mode != new_mode)
651 - notify_of_pool_mode_change_to_oods(pool);
652 pool->out_of_data_space = true;
653 pool->process_bio = process_bio_read_only;
654 pool->process_discard = process_discard_bio;
655 @@ -2552,8 +2553,6 @@ static void set_pool_mode(struct pool *pool, enum pool_mode new_mode)
656 break;
657
658 case PM_WRITE:
659 - if (old_mode != new_mode)
660 - notify_of_pool_mode_change(pool, "write");
661 if (old_mode == PM_OUT_OF_DATA_SPACE)
662 cancel_delayed_work_sync(&pool->no_space_timeout);
663 pool->out_of_data_space = false;
664 @@ -2573,6 +2572,9 @@ static void set_pool_mode(struct pool *pool, enum pool_mode new_mode)
665 * doesn't cause an unexpected mode transition on resume.
666 */
667 pt->adjusted_pf.mode = new_mode;
668 +
669 + if (old_mode != new_mode)
670 + notify_of_pool_mode_change(pool);
671 }
672
673 static void abort_transaction(struct pool *pool)
674 diff --git a/drivers/md/dm-zoned-target.c b/drivers/md/dm-zoned-target.c
675 index a44183ff4be0..85fb2baa8a7f 100644
676 --- a/drivers/md/dm-zoned-target.c
677 +++ b/drivers/md/dm-zoned-target.c
678 @@ -20,7 +20,6 @@ struct dmz_bioctx {
679 struct dm_zone *zone;
680 struct bio *bio;
681 atomic_t ref;
682 - blk_status_t status;
683 };
684
685 /*
686 @@ -78,65 +77,66 @@ static inline void dmz_bio_endio(struct bio *bio, blk_status_t status)
687 {
688 struct dmz_bioctx *bioctx = dm_per_bio_data(bio, sizeof(struct dmz_bioctx));
689
690 - if (bioctx->status == BLK_STS_OK && status != BLK_STS_OK)
691 - bioctx->status = status;
692 - bio_endio(bio);
693 + if (status != BLK_STS_OK && bio->bi_status == BLK_STS_OK)
694 + bio->bi_status = status;
695 +
696 + if (atomic_dec_and_test(&bioctx->ref)) {
697 + struct dm_zone *zone = bioctx->zone;
698 +
699 + if (zone) {
700 + if (bio->bi_status != BLK_STS_OK &&
701 + bio_op(bio) == REQ_OP_WRITE &&
702 + dmz_is_seq(zone))
703 + set_bit(DMZ_SEQ_WRITE_ERR, &zone->flags);
704 + dmz_deactivate_zone(zone);
705 + }
706 + bio_endio(bio);
707 + }
708 }
709
710 /*
711 - * Partial clone read BIO completion callback. This terminates the
712 + * Completion callback for an internally cloned target BIO. This terminates the
713 * target BIO when there are no more references to its context.
714 */
715 -static void dmz_read_bio_end_io(struct bio *bio)
716 +static void dmz_clone_endio(struct bio *clone)
717 {
718 - struct dmz_bioctx *bioctx = bio->bi_private;
719 - blk_status_t status = bio->bi_status;
720 + struct dmz_bioctx *bioctx = clone->bi_private;
721 + blk_status_t status = clone->bi_status;
722
723 - bio_put(bio);
724 + bio_put(clone);
725 dmz_bio_endio(bioctx->bio, status);
726 }
727
728 /*
729 - * Issue a BIO to a zone. The BIO may only partially process the
730 + * Issue a clone of a target BIO. The clone may only partially process the
731 * original target BIO.
732 */
733 -static int dmz_submit_read_bio(struct dmz_target *dmz, struct dm_zone *zone,
734 - struct bio *bio, sector_t chunk_block,
735 - unsigned int nr_blocks)
736 +static int dmz_submit_bio(struct dmz_target *dmz, struct dm_zone *zone,
737 + struct bio *bio, sector_t chunk_block,
738 + unsigned int nr_blocks)
739 {
740 struct dmz_bioctx *bioctx = dm_per_bio_data(bio, sizeof(struct dmz_bioctx));
741 - sector_t sector;
742 struct bio *clone;
743
744 - /* BIO remap sector */
745 - sector = dmz_start_sect(dmz->metadata, zone) + dmz_blk2sect(chunk_block);
746 -
747 - /* If the read is not partial, there is no need to clone the BIO */
748 - if (nr_blocks == dmz_bio_blocks(bio)) {
749 - /* Setup and submit the BIO */
750 - bio->bi_iter.bi_sector = sector;
751 - atomic_inc(&bioctx->ref);
752 - generic_make_request(bio);
753 - return 0;
754 - }
755 -
756 - /* Partial BIO: we need to clone the BIO */
757 clone = bio_clone_fast(bio, GFP_NOIO, &dmz->bio_set);
758 if (!clone)
759 return -ENOMEM;
760
761 - /* Setup the clone */
762 - clone->bi_iter.bi_sector = sector;
763 + bio_set_dev(clone, dmz->dev->bdev);
764 + clone->bi_iter.bi_sector =
765 + dmz_start_sect(dmz->metadata, zone) + dmz_blk2sect(chunk_block);
766 clone->bi_iter.bi_size = dmz_blk2sect(nr_blocks) << SECTOR_SHIFT;
767 - clone->bi_end_io = dmz_read_bio_end_io;
768 + clone->bi_end_io = dmz_clone_endio;
769 clone->bi_private = bioctx;
770
771 bio_advance(bio, clone->bi_iter.bi_size);
772
773 - /* Submit the clone */
774 atomic_inc(&bioctx->ref);
775 generic_make_request(clone);
776
777 + if (bio_op(bio) == REQ_OP_WRITE && dmz_is_seq(zone))
778 + zone->wp_block += nr_blocks;
779 +
780 return 0;
781 }
782
783 @@ -214,7 +214,7 @@ static int dmz_handle_read(struct dmz_target *dmz, struct dm_zone *zone,
784 if (nr_blocks) {
785 /* Valid blocks found: read them */
786 nr_blocks = min_t(unsigned int, nr_blocks, end_block - chunk_block);
787 - ret = dmz_submit_read_bio(dmz, rzone, bio, chunk_block, nr_blocks);
788 + ret = dmz_submit_bio(dmz, rzone, bio, chunk_block, nr_blocks);
789 if (ret)
790 return ret;
791 chunk_block += nr_blocks;
792 @@ -228,25 +228,6 @@ static int dmz_handle_read(struct dmz_target *dmz, struct dm_zone *zone,
793 return 0;
794 }
795
796 -/*
797 - * Issue a write BIO to a zone.
798 - */
799 -static void dmz_submit_write_bio(struct dmz_target *dmz, struct dm_zone *zone,
800 - struct bio *bio, sector_t chunk_block,
801 - unsigned int nr_blocks)
802 -{
803 - struct dmz_bioctx *bioctx = dm_per_bio_data(bio, sizeof(struct dmz_bioctx));
804 -
805 - /* Setup and submit the BIO */
806 - bio_set_dev(bio, dmz->dev->bdev);
807 - bio->bi_iter.bi_sector = dmz_start_sect(dmz->metadata, zone) + dmz_blk2sect(chunk_block);
808 - atomic_inc(&bioctx->ref);
809 - generic_make_request(bio);
810 -
811 - if (dmz_is_seq(zone))
812 - zone->wp_block += nr_blocks;
813 -}
814 -
815 /*
816 * Write blocks directly in a data zone, at the write pointer.
817 * If a buffer zone is assigned, invalidate the blocks written
818 @@ -265,7 +246,9 @@ static int dmz_handle_direct_write(struct dmz_target *dmz,
819 return -EROFS;
820
821 /* Submit write */
822 - dmz_submit_write_bio(dmz, zone, bio, chunk_block, nr_blocks);
823 + ret = dmz_submit_bio(dmz, zone, bio, chunk_block, nr_blocks);
824 + if (ret)
825 + return ret;
826
827 /*
828 * Validate the blocks in the data zone and invalidate
829 @@ -301,7 +284,9 @@ static int dmz_handle_buffered_write(struct dmz_target *dmz,
830 return -EROFS;
831
832 /* Submit write */
833 - dmz_submit_write_bio(dmz, bzone, bio, chunk_block, nr_blocks);
834 + ret = dmz_submit_bio(dmz, bzone, bio, chunk_block, nr_blocks);
835 + if (ret)
836 + return ret;
837
838 /*
839 * Validate the blocks in the buffer zone
840 @@ -600,7 +585,6 @@ static int dmz_map(struct dm_target *ti, struct bio *bio)
841 bioctx->zone = NULL;
842 bioctx->bio = bio;
843 atomic_set(&bioctx->ref, 1);
844 - bioctx->status = BLK_STS_OK;
845
846 /* Set the BIO pending in the flush list */
847 if (!nr_sectors && bio_op(bio) == REQ_OP_WRITE) {
848 @@ -623,35 +607,6 @@ static int dmz_map(struct dm_target *ti, struct bio *bio)
849 return DM_MAPIO_SUBMITTED;
850 }
851
852 -/*
853 - * Completed target BIO processing.
854 - */
855 -static int dmz_end_io(struct dm_target *ti, struct bio *bio, blk_status_t *error)
856 -{
857 - struct dmz_bioctx *bioctx = dm_per_bio_data(bio, sizeof(struct dmz_bioctx));
858 -
859 - if (bioctx->status == BLK_STS_OK && *error)
860 - bioctx->status = *error;
861 -
862 - if (!atomic_dec_and_test(&bioctx->ref))
863 - return DM_ENDIO_INCOMPLETE;
864 -
865 - /* Done */
866 - bio->bi_status = bioctx->status;
867 -
868 - if (bioctx->zone) {
869 - struct dm_zone *zone = bioctx->zone;
870 -
871 - if (*error && bio_op(bio) == REQ_OP_WRITE) {
872 - if (dmz_is_seq(zone))
873 - set_bit(DMZ_SEQ_WRITE_ERR, &zone->flags);
874 - }
875 - dmz_deactivate_zone(zone);
876 - }
877 -
878 - return DM_ENDIO_DONE;
879 -}
880 -
881 /*
882 * Get zoned device information.
883 */
884 @@ -947,7 +902,6 @@ static struct target_type dmz_type = {
885 .ctr = dmz_ctr,
886 .dtr = dmz_dtr,
887 .map = dmz_map,
888 - .end_io = dmz_end_io,
889 .io_hints = dmz_io_hints,
890 .prepare_ioctl = dmz_prepare_ioctl,
891 .postsuspend = dmz_suspend,
892 diff --git a/drivers/md/dm.c b/drivers/md/dm.c
893 index 45abb54037fc..07d2949a8746 100644
894 --- a/drivers/md/dm.c
895 +++ b/drivers/md/dm.c
896 @@ -1592,6 +1592,8 @@ static blk_qc_t __split_and_process_bio(struct mapped_device *md,
897 return ret;
898 }
899
900 + blk_queue_split(md->queue, &bio);
901 +
902 init_clone_info(&ci, md, map, bio);
903
904 if (bio->bi_opf & REQ_PREFLUSH) {
905 diff --git a/drivers/media/common/videobuf2/videobuf2-core.c b/drivers/media/common/videobuf2/videobuf2-core.c
906 index 5653e8eebe2b..16c7b20cbf61 100644
907 --- a/drivers/media/common/videobuf2/videobuf2-core.c
908 +++ b/drivers/media/common/videobuf2/videobuf2-core.c
909 @@ -1755,10 +1755,8 @@ int vb2_core_streamon(struct vb2_queue *q, unsigned int type)
910 if (ret)
911 return ret;
912 ret = vb2_start_streaming(q);
913 - if (ret) {
914 - __vb2_queue_cancel(q);
915 + if (ret)
916 return ret;
917 - }
918 }
919
920 q->streaming = 1;
921 diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
922 index e201ccb3fda4..f6755b86eba2 100644
923 --- a/drivers/mmc/core/block.c
924 +++ b/drivers/mmc/core/block.c
925 @@ -472,7 +472,7 @@ out:
926 static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md,
927 struct mmc_blk_ioc_data *idata)
928 {
929 - struct mmc_command cmd = {};
930 + struct mmc_command cmd = {}, sbc = {};
931 struct mmc_data data = {};
932 struct mmc_request mrq = {};
933 struct scatterlist sg;
934 @@ -550,10 +550,15 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md,
935 }
936
937 if (idata->rpmb) {
938 - err = mmc_set_blockcount(card, data.blocks,
939 - idata->ic.write_flag & (1 << 31));
940 - if (err)
941 - return err;
942 + sbc.opcode = MMC_SET_BLOCK_COUNT;
943 + /*
944 + * We don't do any blockcount validation because the max size
945 + * may be increased by a future standard. We just copy the
946 + * 'Reliable Write' bit here.
947 + */
948 + sbc.arg = data.blocks | (idata->ic.write_flag & BIT(31));
949 + sbc.flags = MMC_RSP_R1 | MMC_CMD_AC;
950 + mrq.sbc = &sbc;
951 }
952
953 if ((MMC_EXTRACT_INDEX_FROM_ARG(cmd.arg) == EXT_CSD_SANITIZE_START) &&
954 diff --git a/drivers/mmc/host/omap.c b/drivers/mmc/host/omap.c
955 index adf32682f27a..c60a7625b1fa 100644
956 --- a/drivers/mmc/host/omap.c
957 +++ b/drivers/mmc/host/omap.c
958 @@ -104,6 +104,7 @@ struct mmc_omap_slot {
959 unsigned int vdd;
960 u16 saved_con;
961 u16 bus_mode;
962 + u16 power_mode;
963 unsigned int fclk_freq;
964
965 struct tasklet_struct cover_tasklet;
966 @@ -1157,7 +1158,7 @@ static void mmc_omap_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
967 struct mmc_omap_slot *slot = mmc_priv(mmc);
968 struct mmc_omap_host *host = slot->host;
969 int i, dsor;
970 - int clk_enabled;
971 + int clk_enabled, init_stream;
972
973 mmc_omap_select_slot(slot, 0);
974
975 @@ -1167,6 +1168,7 @@ static void mmc_omap_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
976 slot->vdd = ios->vdd;
977
978 clk_enabled = 0;
979 + init_stream = 0;
980 switch (ios->power_mode) {
981 case MMC_POWER_OFF:
982 mmc_omap_set_power(slot, 0, ios->vdd);
983 @@ -1174,13 +1176,17 @@ static void mmc_omap_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
984 case MMC_POWER_UP:
985 /* Cannot touch dsor yet, just power up MMC */
986 mmc_omap_set_power(slot, 1, ios->vdd);
987 + slot->power_mode = ios->power_mode;
988 goto exit;
989 case MMC_POWER_ON:
990 mmc_omap_fclk_enable(host, 1);
991 clk_enabled = 1;
992 dsor |= 1 << 11;
993 + if (slot->power_mode != MMC_POWER_ON)
994 + init_stream = 1;
995 break;
996 }
997 + slot->power_mode = ios->power_mode;
998
999 if (slot->bus_mode != ios->bus_mode) {
1000 if (slot->pdata->set_bus_mode != NULL)
1001 @@ -1196,7 +1202,7 @@ static void mmc_omap_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
1002 for (i = 0; i < 2; i++)
1003 OMAP_MMC_WRITE(host, CON, dsor);
1004 slot->saved_con = dsor;
1005 - if (ios->power_mode == MMC_POWER_ON) {
1006 + if (init_stream) {
1007 /* worst case at 400kHz, 80 cycles makes 200 microsecs */
1008 int usecs = 250;
1009
1010 @@ -1234,6 +1240,7 @@ static int mmc_omap_new_slot(struct mmc_omap_host *host, int id)
1011 slot->host = host;
1012 slot->mmc = mmc;
1013 slot->id = id;
1014 + slot->power_mode = MMC_POWER_UNDEFINED;
1015 slot->pdata = &host->pdata->slots[id];
1016
1017 host->slots[id] = slot;
1018 diff --git a/drivers/mmc/host/sdhci-omap.c b/drivers/mmc/host/sdhci-omap.c
1019 index 88347ce78f23..d264391616f9 100644
1020 --- a/drivers/mmc/host/sdhci-omap.c
1021 +++ b/drivers/mmc/host/sdhci-omap.c
1022 @@ -288,9 +288,9 @@ static int sdhci_omap_execute_tuning(struct mmc_host *mmc, u32 opcode)
1023 struct device *dev = omap_host->dev;
1024 struct mmc_ios *ios = &mmc->ios;
1025 u32 start_window = 0, max_window = 0;
1026 + bool dcrc_was_enabled = false;
1027 u8 cur_match, prev_match = 0;
1028 u32 length = 0, max_len = 0;
1029 - u32 ier = host->ier;
1030 u32 phase_delay = 0;
1031 int ret = 0;
1032 u32 reg;
1033 @@ -317,9 +317,10 @@ static int sdhci_omap_execute_tuning(struct mmc_host *mmc, u32 opcode)
1034 * during the tuning procedure. So disable it during the
1035 * tuning procedure.
1036 */
1037 - ier &= ~SDHCI_INT_DATA_CRC;
1038 - sdhci_writel(host, ier, SDHCI_INT_ENABLE);
1039 - sdhci_writel(host, ier, SDHCI_SIGNAL_ENABLE);
1040 + if (host->ier & SDHCI_INT_DATA_CRC) {
1041 + host->ier &= ~SDHCI_INT_DATA_CRC;
1042 + dcrc_was_enabled = true;
1043 + }
1044
1045 while (phase_delay <= MAX_PHASE_DELAY) {
1046 sdhci_omap_set_dll(omap_host, phase_delay);
1047 @@ -366,6 +367,9 @@ tuning_error:
1048
1049 ret:
1050 sdhci_reset(host, SDHCI_RESET_CMD | SDHCI_RESET_DATA);
1051 + /* Reenable forbidden interrupt */
1052 + if (dcrc_was_enabled)
1053 + host->ier |= SDHCI_INT_DATA_CRC;
1054 sdhci_writel(host, host->ier, SDHCI_INT_ENABLE);
1055 sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE);
1056 return ret;
1057 diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
1058 index 1b3fbd9bd5c5..654051e00117 100644
1059 --- a/drivers/mmc/host/sdhci.c
1060 +++ b/drivers/mmc/host/sdhci.c
1061 @@ -193,8 +193,12 @@ void sdhci_reset(struct sdhci_host *host, u8 mask)
1062 timeout = ktime_add_ms(ktime_get(), 100);
1063
1064 /* hw clears the bit when it's done */
1065 - while (sdhci_readb(host, SDHCI_SOFTWARE_RESET) & mask) {
1066 - if (ktime_after(ktime_get(), timeout)) {
1067 + while (1) {
1068 + bool timedout = ktime_after(ktime_get(), timeout);
1069 +
1070 + if (!(sdhci_readb(host, SDHCI_SOFTWARE_RESET) & mask))
1071 + break;
1072 + if (timedout) {
1073 pr_err("%s: Reset 0x%x never completed.\n",
1074 mmc_hostname(host->mmc), (int)mask);
1075 sdhci_dumpregs(host);
1076 @@ -1495,9 +1499,13 @@ void sdhci_enable_clk(struct sdhci_host *host, u16 clk)
1077
1078 /* Wait max 20 ms */
1079 timeout = ktime_add_ms(ktime_get(), 20);
1080 - while (!((clk = sdhci_readw(host, SDHCI_CLOCK_CONTROL))
1081 - & SDHCI_CLOCK_INT_STABLE)) {
1082 - if (ktime_after(ktime_get(), timeout)) {
1083 + while (1) {
1084 + bool timedout = ktime_after(ktime_get(), timeout);
1085 +
1086 + clk = sdhci_readw(host, SDHCI_CLOCK_CONTROL);
1087 + if (clk & SDHCI_CLOCK_INT_STABLE)
1088 + break;
1089 + if (timedout) {
1090 pr_err("%s: Internal clock never stabilised.\n",
1091 mmc_hostname(host->mmc));
1092 sdhci_dumpregs(host);
1093 diff --git a/drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c b/drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c
1094 index 6624499eae72..4ada80317a3b 100644
1095 --- a/drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c
1096 +++ b/drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c
1097 @@ -568,7 +568,7 @@ static const struct sunxi_desc_pin sun8i_a83t_pins[] = {
1098 SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 11),
1099 SUNXI_FUNCTION(0x0, "gpio_in"),
1100 SUNXI_FUNCTION(0x1, "gpio_out"),
1101 - SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 1)), /* PH_EINT11 */
1102 + SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 11)), /* PH_EINT11 */
1103 };
1104
1105 static const struct sunxi_pinctrl_desc sun8i_a83t_pinctrl_data = {
1106 diff --git a/drivers/scsi/raid_class.c b/drivers/scsi/raid_class.c
1107 index ea88906d2cc5..5c3d6e1e0145 100644
1108 --- a/drivers/scsi/raid_class.c
1109 +++ b/drivers/scsi/raid_class.c
1110 @@ -63,8 +63,7 @@ static int raid_match(struct attribute_container *cont, struct device *dev)
1111 * emulated RAID devices, so start with SCSI */
1112 struct raid_internal *i = ac_to_raid_internal(cont);
1113
1114 -#if defined(CONFIG_SCSI) || defined(CONFIG_SCSI_MODULE)
1115 - if (scsi_is_sdev_device(dev)) {
1116 + if (IS_ENABLED(CONFIG_SCSI) && scsi_is_sdev_device(dev)) {
1117 struct scsi_device *sdev = to_scsi_device(dev);
1118
1119 if (i->f->cookie != sdev->host->hostt)
1120 @@ -72,7 +71,6 @@ static int raid_match(struct attribute_container *cont, struct device *dev)
1121
1122 return i->f->is_raid(dev);
1123 }
1124 -#endif
1125 /* FIXME: look at other subsystems too */
1126 return 0;
1127 }
1128 diff --git a/drivers/slimbus/qcom-ngd-ctrl.c b/drivers/slimbus/qcom-ngd-ctrl.c
1129 index 8be4d6786c61..14a9d18306cb 100644
1130 --- a/drivers/slimbus/qcom-ngd-ctrl.c
1131 +++ b/drivers/slimbus/qcom-ngd-ctrl.c
1132 @@ -1467,7 +1467,7 @@ static int qcom_slim_ngd_remove(struct platform_device *pdev)
1133 return 0;
1134 }
1135
1136 -static int qcom_slim_ngd_runtime_idle(struct device *dev)
1137 +static int __maybe_unused qcom_slim_ngd_runtime_idle(struct device *dev)
1138 {
1139 struct qcom_slim_ngd_ctrl *ctrl = dev_get_drvdata(dev);
1140
1141 @@ -1477,8 +1477,7 @@ static int qcom_slim_ngd_runtime_idle(struct device *dev)
1142 return -EAGAIN;
1143 }
1144
1145 -#ifdef CONFIG_PM
1146 -static int qcom_slim_ngd_runtime_suspend(struct device *dev)
1147 +static int __maybe_unused qcom_slim_ngd_runtime_suspend(struct device *dev)
1148 {
1149 struct qcom_slim_ngd_ctrl *ctrl = dev_get_drvdata(dev);
1150 int ret = 0;
1151 @@ -1491,7 +1490,6 @@ static int qcom_slim_ngd_runtime_suspend(struct device *dev)
1152
1153 return ret;
1154 }
1155 -#endif
1156
1157 static const struct dev_pm_ops qcom_slim_ngd_dev_pm_ops = {
1158 SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
1159 diff --git a/drivers/staging/olpc_dcon/Kconfig b/drivers/staging/olpc_dcon/Kconfig
1160 index c91a56f77bcb..192cc8d0853f 100644
1161 --- a/drivers/staging/olpc_dcon/Kconfig
1162 +++ b/drivers/staging/olpc_dcon/Kconfig
1163 @@ -2,6 +2,7 @@ config FB_OLPC_DCON
1164 tristate "One Laptop Per Child Display CONtroller support"
1165 depends on OLPC && FB
1166 depends on I2C
1167 + depends on BACKLIGHT_LCD_SUPPORT
1168 depends on (GPIO_CS5535 || GPIO_CS5535=n)
1169 select BACKLIGHT_CLASS_DEVICE
1170 help
1171 diff --git a/fs/aio.c b/fs/aio.c
1172 index 04c4d6218978..44551d96eaa4 100644
1173 --- a/fs/aio.c
1174 +++ b/fs/aio.c
1175 @@ -45,6 +45,7 @@
1176
1177 #include <asm/kmap_types.h>
1178 #include <linux/uaccess.h>
1179 +#include <linux/nospec.h>
1180
1181 #include "internal.h"
1182
1183 @@ -1038,6 +1039,7 @@ static struct kioctx *lookup_ioctx(unsigned long ctx_id)
1184 if (!table || id >= table->nr)
1185 goto out;
1186
1187 + id = array_index_nospec(id, table->nr);
1188 ctx = rcu_dereference(table->table[id]);
1189 if (ctx && ctx->user_id == ctx_id) {
1190 if (percpu_ref_tryget_live(&ctx->users))
1191 diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
1192 index 0979609d6eba..82a13221775e 100644
1193 --- a/fs/fuse/dir.c
1194 +++ b/fs/fuse/dir.c
1195 @@ -1439,7 +1439,7 @@ static int fuse_dir_open(struct inode *inode, struct file *file)
1196
1197 static int fuse_dir_release(struct inode *inode, struct file *file)
1198 {
1199 - fuse_release_common(file, FUSE_RELEASEDIR);
1200 + fuse_release_common(file, true);
1201
1202 return 0;
1203 }
1204 diff --git a/fs/fuse/file.c b/fs/fuse/file.c
1205 index a0ffed34b85d..fbd6978479cb 100644
1206 --- a/fs/fuse/file.c
1207 +++ b/fs/fuse/file.c
1208 @@ -87,12 +87,12 @@ static void fuse_release_end(struct fuse_conn *fc, struct fuse_req *req)
1209 iput(req->misc.release.inode);
1210 }
1211
1212 -static void fuse_file_put(struct fuse_file *ff, bool sync)
1213 +static void fuse_file_put(struct fuse_file *ff, bool sync, bool isdir)
1214 {
1215 if (refcount_dec_and_test(&ff->count)) {
1216 struct fuse_req *req = ff->reserved_req;
1217
1218 - if (ff->fc->no_open) {
1219 + if (ff->fc->no_open && !isdir) {
1220 /*
1221 * Drop the release request when client does not
1222 * implement 'open'
1223 @@ -245,10 +245,11 @@ static void fuse_prepare_release(struct fuse_file *ff, int flags, int opcode)
1224 req->in.args[0].value = inarg;
1225 }
1226
1227 -void fuse_release_common(struct file *file, int opcode)
1228 +void fuse_release_common(struct file *file, bool isdir)
1229 {
1230 struct fuse_file *ff = file->private_data;
1231 struct fuse_req *req = ff->reserved_req;
1232 + int opcode = isdir ? FUSE_RELEASEDIR : FUSE_RELEASE;
1233
1234 fuse_prepare_release(ff, file->f_flags, opcode);
1235
1236 @@ -270,7 +271,7 @@ void fuse_release_common(struct file *file, int opcode)
1237 * synchronous RELEASE is allowed (and desirable) in this case
1238 * because the server can be trusted not to screw up.
1239 */
1240 - fuse_file_put(ff, ff->fc->destroy_req != NULL);
1241 + fuse_file_put(ff, ff->fc->destroy_req != NULL, isdir);
1242 }
1243
1244 static int fuse_open(struct inode *inode, struct file *file)
1245 @@ -286,7 +287,7 @@ static int fuse_release(struct inode *inode, struct file *file)
1246 if (fc->writeback_cache)
1247 write_inode_now(inode, 1);
1248
1249 - fuse_release_common(file, FUSE_RELEASE);
1250 + fuse_release_common(file, false);
1251
1252 /* return value is ignored by VFS */
1253 return 0;
1254 @@ -300,7 +301,7 @@ void fuse_sync_release(struct fuse_file *ff, int flags)
1255 * iput(NULL) is a no-op and since the refcount is 1 and everything's
1256 * synchronous, we are fine with not doing igrab() here"
1257 */
1258 - fuse_file_put(ff, true);
1259 + fuse_file_put(ff, true, false);
1260 }
1261 EXPORT_SYMBOL_GPL(fuse_sync_release);
1262
1263 @@ -805,7 +806,7 @@ static void fuse_readpages_end(struct fuse_conn *fc, struct fuse_req *req)
1264 put_page(page);
1265 }
1266 if (req->ff)
1267 - fuse_file_put(req->ff, false);
1268 + fuse_file_put(req->ff, false, false);
1269 }
1270
1271 static void fuse_send_readpages(struct fuse_req *req, struct file *file)
1272 @@ -1459,7 +1460,7 @@ static void fuse_writepage_free(struct fuse_conn *fc, struct fuse_req *req)
1273 __free_page(req->pages[i]);
1274
1275 if (req->ff)
1276 - fuse_file_put(req->ff, false);
1277 + fuse_file_put(req->ff, false, false);
1278 }
1279
1280 static void fuse_writepage_finish(struct fuse_conn *fc, struct fuse_req *req)
1281 @@ -1616,7 +1617,7 @@ int fuse_write_inode(struct inode *inode, struct writeback_control *wbc)
1282 ff = __fuse_write_file_get(fc, fi);
1283 err = fuse_flush_times(inode, ff);
1284 if (ff)
1285 - fuse_file_put(ff, 0);
1286 + fuse_file_put(ff, false, false);
1287
1288 return err;
1289 }
1290 @@ -1930,7 +1931,7 @@ static int fuse_writepages(struct address_space *mapping,
1291 err = 0;
1292 }
1293 if (data.ff)
1294 - fuse_file_put(data.ff, false);
1295 + fuse_file_put(data.ff, false, false);
1296
1297 kfree(data.orig_pages);
1298 out:
1299 diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
1300 index f78e9614bb5f..cec8b8e74969 100644
1301 --- a/fs/fuse/fuse_i.h
1302 +++ b/fs/fuse/fuse_i.h
1303 @@ -749,7 +749,7 @@ void fuse_sync_release(struct fuse_file *ff, int flags);
1304 /**
1305 * Send RELEASE or RELEASEDIR request
1306 */
1307 -void fuse_release_common(struct file *file, int opcode);
1308 +void fuse_release_common(struct file *file, bool isdir);
1309
1310 /**
1311 * Send FSYNC or FSYNCDIR request
1312 diff --git a/fs/iomap.c b/fs/iomap.c
1313 index ec15cf2ec696..37da7a61a6c5 100644
1314 --- a/fs/iomap.c
1315 +++ b/fs/iomap.c
1316 @@ -117,6 +117,12 @@ iomap_page_create(struct inode *inode, struct page *page)
1317 atomic_set(&iop->read_count, 0);
1318 atomic_set(&iop->write_count, 0);
1319 bitmap_zero(iop->uptodate, PAGE_SIZE / SECTOR_SIZE);
1320 +
1321 + /*
1322 + * migrate_page_move_mapping() assumes that pages with private data have
1323 + * their count elevated by 1.
1324 + */
1325 + get_page(page);
1326 set_page_private(page, (unsigned long)iop);
1327 SetPagePrivate(page);
1328 return iop;
1329 @@ -133,6 +139,7 @@ iomap_page_release(struct page *page)
1330 WARN_ON_ONCE(atomic_read(&iop->write_count));
1331 ClearPagePrivate(page);
1332 set_page_private(page, 0);
1333 + put_page(page);
1334 kfree(iop);
1335 }
1336
1337 diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c
1338 index 3bbde0a9f48f..b2aadd3e1fec 100644
1339 --- a/fs/overlayfs/dir.c
1340 +++ b/fs/overlayfs/dir.c
1341 @@ -652,6 +652,18 @@ static int ovl_symlink(struct inode *dir, struct dentry *dentry,
1342 return ovl_create_object(dentry, S_IFLNK, 0, link);
1343 }
1344
1345 +static int ovl_set_link_redirect(struct dentry *dentry)
1346 +{
1347 + const struct cred *old_cred;
1348 + int err;
1349 +
1350 + old_cred = ovl_override_creds(dentry->d_sb);
1351 + err = ovl_set_redirect(dentry, false);
1352 + revert_creds(old_cred);
1353 +
1354 + return err;
1355 +}
1356 +
1357 static int ovl_link(struct dentry *old, struct inode *newdir,
1358 struct dentry *new)
1359 {
1360 @@ -672,7 +684,7 @@ static int ovl_link(struct dentry *old, struct inode *newdir,
1361 goto out_drop_write;
1362
1363 if (ovl_is_metacopy_dentry(old)) {
1364 - err = ovl_set_redirect(old, false);
1365 + err = ovl_set_link_redirect(old);
1366 if (err)
1367 goto out_drop_write;
1368 }
1369 diff --git a/fs/overlayfs/export.c b/fs/overlayfs/export.c
1370 index 8fa37cd7818a..54e5d17d7f3e 100644
1371 --- a/fs/overlayfs/export.c
1372 +++ b/fs/overlayfs/export.c
1373 @@ -754,9 +754,8 @@ static struct dentry *ovl_lower_fh_to_d(struct super_block *sb,
1374 goto out;
1375 }
1376
1377 - /* Otherwise, get a connected non-upper dir or disconnected non-dir */
1378 - if (d_is_dir(origin.dentry) &&
1379 - (origin.dentry->d_flags & DCACHE_DISCONNECTED)) {
1380 + /* Find origin.dentry again with ovl_acceptable() layer check */
1381 + if (d_is_dir(origin.dentry)) {
1382 dput(origin.dentry);
1383 origin.dentry = NULL;
1384 err = ovl_check_origin_fh(ofs, fh, true, NULL, &stack);
1385 @@ -769,6 +768,7 @@ static struct dentry *ovl_lower_fh_to_d(struct super_block *sb,
1386 goto out_err;
1387 }
1388
1389 + /* Get a connected non-upper dir or disconnected non-dir */
1390 dentry = ovl_get_dentry(sb, NULL, &origin, index);
1391
1392 out:
1393 diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c
1394 index cd58939dc977..7a85e609fc27 100644
1395 --- a/fs/userfaultfd.c
1396 +++ b/fs/userfaultfd.c
1397 @@ -1566,7 +1566,6 @@ static int userfaultfd_unregister(struct userfaultfd_ctx *ctx,
1398 cond_resched();
1399
1400 BUG_ON(!vma_can_userfault(vma));
1401 - WARN_ON(!(vma->vm_flags & VM_MAYWRITE));
1402
1403 /*
1404 * Nothing to do: this vma is already registered into this
1405 @@ -1575,6 +1574,8 @@ static int userfaultfd_unregister(struct userfaultfd_ctx *ctx,
1406 if (!vma->vm_userfaultfd_ctx.ctx)
1407 goto skip;
1408
1409 + WARN_ON(!(vma->vm_flags & VM_MAYWRITE));
1410 +
1411 if (vma->vm_start > start)
1412 start = vma->vm_start;
1413 vma_end = min(end, vma->vm_end);
1414 diff --git a/init/Kconfig b/init/Kconfig
1415 index 1e234e2f1cba..317d5ccb5191 100644
1416 --- a/init/Kconfig
1417 +++ b/init/Kconfig
1418 @@ -415,6 +415,11 @@ config IRQ_TIME_ACCOUNTING
1419
1420 If in doubt, say N here.
1421
1422 +config HAVE_SCHED_AVG_IRQ
1423 + def_bool y
1424 + depends on IRQ_TIME_ACCOUNTING || PARAVIRT_TIME_ACCOUNTING
1425 + depends on SMP
1426 +
1427 config BSD_PROCESS_ACCT
1428 bool "BSD Process Accounting"
1429 depends on MULTIUSER
1430 diff --git a/kernel/sched/core.c b/kernel/sched/core.c
1431 index 2beda4b726e2..13ddfa46d741 100644
1432 --- a/kernel/sched/core.c
1433 +++ b/kernel/sched/core.c
1434 @@ -135,9 +135,8 @@ static void update_rq_clock_task(struct rq *rq, s64 delta)
1435 * In theory, the compile should just see 0 here, and optimize out the call
1436 * to sched_rt_avg_update. But I don't trust it...
1437 */
1438 -#if defined(CONFIG_IRQ_TIME_ACCOUNTING) || defined(CONFIG_PARAVIRT_TIME_ACCOUNTING)
1439 - s64 steal = 0, irq_delta = 0;
1440 -#endif
1441 + s64 __maybe_unused steal = 0, irq_delta = 0;
1442 +
1443 #ifdef CONFIG_IRQ_TIME_ACCOUNTING
1444 irq_delta = irq_time_read(cpu_of(rq)) - rq->prev_irq_time;
1445
1446 @@ -177,7 +176,7 @@ static void update_rq_clock_task(struct rq *rq, s64 delta)
1447
1448 rq->clock_task += delta;
1449
1450 -#ifdef HAVE_SCHED_AVG_IRQ
1451 +#ifdef CONFIG_HAVE_SCHED_AVG_IRQ
1452 if ((irq_delta + steal) && sched_feat(NONTASK_CAPACITY))
1453 update_irq_load_avg(rq, irq_delta + steal);
1454 #endif
1455 diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
1456 index 1162552dc3cc..eabbf6b10b44 100644
1457 --- a/kernel/sched/fair.c
1458 +++ b/kernel/sched/fair.c
1459 @@ -7361,7 +7361,7 @@ static inline bool others_have_blocked(struct rq *rq)
1460 if (READ_ONCE(rq->avg_dl.util_avg))
1461 return true;
1462
1463 -#if defined(CONFIG_IRQ_TIME_ACCOUNTING) || defined(CONFIG_PARAVIRT_TIME_ACCOUNTING)
1464 +#ifdef CONFIG_HAVE_SCHED_AVG_IRQ
1465 if (READ_ONCE(rq->avg_irq.util_avg))
1466 return true;
1467 #endif
1468 diff --git a/kernel/sched/pelt.c b/kernel/sched/pelt.c
1469 index 35475c0c5419..48a126486435 100644
1470 --- a/kernel/sched/pelt.c
1471 +++ b/kernel/sched/pelt.c
1472 @@ -358,7 +358,7 @@ int update_dl_rq_load_avg(u64 now, struct rq *rq, int running)
1473 return 0;
1474 }
1475
1476 -#if defined(CONFIG_IRQ_TIME_ACCOUNTING) || defined(CONFIG_PARAVIRT_TIME_ACCOUNTING)
1477 +#ifdef CONFIG_HAVE_SCHED_AVG_IRQ
1478 /*
1479 * irq:
1480 *
1481 diff --git a/kernel/sched/pelt.h b/kernel/sched/pelt.h
1482 index d2894db28955..7e56b489ff32 100644
1483 --- a/kernel/sched/pelt.h
1484 +++ b/kernel/sched/pelt.h
1485 @@ -6,7 +6,7 @@ int __update_load_avg_cfs_rq(u64 now, int cpu, struct cfs_rq *cfs_rq);
1486 int update_rt_rq_load_avg(u64 now, struct rq *rq, int running);
1487 int update_dl_rq_load_avg(u64 now, struct rq *rq, int running);
1488
1489 -#if defined(CONFIG_IRQ_TIME_ACCOUNTING) || defined(CONFIG_PARAVIRT_TIME_ACCOUNTING)
1490 +#ifdef CONFIG_HAVE_SCHED_AVG_IRQ
1491 int update_irq_load_avg(struct rq *rq, u64 running);
1492 #else
1493 static inline int
1494 diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
1495 index 6c25bbe87bd3..b63172288f7b 100644
1496 --- a/kernel/sched/sched.h
1497 +++ b/kernel/sched/sched.h
1498 @@ -859,8 +859,7 @@ struct rq {
1499
1500 struct sched_avg avg_rt;
1501 struct sched_avg avg_dl;
1502 -#if defined(CONFIG_IRQ_TIME_ACCOUNTING) || defined(CONFIG_PARAVIRT_TIME_ACCOUNTING)
1503 -#define HAVE_SCHED_AVG_IRQ
1504 +#ifdef CONFIG_HAVE_SCHED_AVG_IRQ
1505 struct sched_avg avg_irq;
1506 #endif
1507 u64 idle_stamp;
1508 @@ -2215,7 +2214,7 @@ static inline unsigned long cpu_util_rt(struct rq *rq)
1509 }
1510 #endif
1511
1512 -#ifdef HAVE_SCHED_AVG_IRQ
1513 +#ifdef CONFIG_HAVE_SCHED_AVG_IRQ
1514 static inline unsigned long cpu_util_irq(struct rq *rq)
1515 {
1516 return rq->avg_irq.util_avg;
1517 diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
1518 index 77734451cb05..e23eb9fc77aa 100644
1519 --- a/kernel/trace/ftrace.c
1520 +++ b/kernel/trace/ftrace.c
1521 @@ -5460,6 +5460,7 @@ void ftrace_destroy_filter_files(struct ftrace_ops *ops)
1522 if (ops->flags & FTRACE_OPS_FL_ENABLED)
1523 ftrace_shutdown(ops, 0);
1524 ops->flags |= FTRACE_OPS_FL_DELETED;
1525 + ftrace_free_filter(ops);
1526 mutex_unlock(&ftrace_lock);
1527 }
1528
1529 diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c
1530 index 84a65173b1e9..5574e862de8d 100644
1531 --- a/kernel/trace/trace_events_filter.c
1532 +++ b/kernel/trace/trace_events_filter.c
1533 @@ -570,11 +570,13 @@ predicate_parse(const char *str, int nr_parens, int nr_preds,
1534 }
1535 }
1536
1537 + kfree(op_stack);
1538 + kfree(inverts);
1539 return prog;
1540 out_free:
1541 kfree(op_stack);
1542 - kfree(prog_stack);
1543 kfree(inverts);
1544 + kfree(prog_stack);
1545 return ERR_PTR(ret);
1546 }
1547
1548 @@ -1718,6 +1720,7 @@ static int create_filter(struct trace_event_call *call,
1549 err = process_preds(call, filter_string, *filterp, pe);
1550 if (err && set_str)
1551 append_filter_err(pe, *filterp);
1552 + create_filter_finish(pe);
1553
1554 return err;
1555 }
1556 diff --git a/kernel/trace/trace_events_trigger.c b/kernel/trace/trace_events_trigger.c
1557 index 2152d1e530cb..cd12ecb66eb9 100644
1558 --- a/kernel/trace/trace_events_trigger.c
1559 +++ b/kernel/trace/trace_events_trigger.c
1560 @@ -732,8 +732,10 @@ int set_trigger_filter(char *filter_str,
1561
1562 /* The filter is for the 'trigger' event, not the triggered event */
1563 ret = create_event_filter(file->event_call, filter_str, false, &filter);
1564 - if (ret)
1565 - goto out;
1566 + /*
1567 + * If create_event_filter() fails, filter still needs to be freed.
1568 + * Which the calling code will do with data->filter.
1569 + */
1570 assign:
1571 tmp = rcu_access_pointer(data->filter);
1572
1573 diff --git a/scripts/spdxcheck.py b/scripts/spdxcheck.py
1574 index 5056fb3b897d..e559c6294c39 100755
1575 --- a/scripts/spdxcheck.py
1576 +++ b/scripts/spdxcheck.py
1577 @@ -168,6 +168,7 @@ class id_parser(object):
1578 self.curline = 0
1579 try:
1580 for line in fd:
1581 + line = line.decode(locale.getpreferredencoding(False), errors='ignore')
1582 self.curline += 1
1583 if self.curline > maxlines:
1584 break
1585 @@ -249,12 +250,13 @@ if __name__ == '__main__':
1586
1587 try:
1588 if len(args.path) and args.path[0] == '-':
1589 - parser.parse_lines(sys.stdin, args.maxlines, '-')
1590 + stdin = os.fdopen(sys.stdin.fileno(), 'rb')
1591 + parser.parse_lines(stdin, args.maxlines, '-')
1592 else:
1593 if args.path:
1594 for p in args.path:
1595 if os.path.isfile(p):
1596 - parser.parse_lines(open(p), args.maxlines, p)
1597 + parser.parse_lines(open(p, 'rb'), args.maxlines, p)
1598 elif os.path.isdir(p):
1599 scan_git_subtree(repo.head.reference.commit.tree, p)
1600 else: