diff options
author | Paul Gortmaker <paul.gortmaker@windriver.com> | 2017-06-11 19:31:00 -0400 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2017-06-11 19:31:00 -0400 |
commit | c8d13ac16a158099210aed92d88a2d3eb103a254 (patch) | |
tree | b40ebe2ea018814333b567164f74265be700d39e | |
parent | db723733e5b612dcb7e8c4e31382affdb4635e7a (diff) | |
download | longterm-queue-4.8-c8d13ac16a158099210aed92d88a2d3eb103a254.tar.gz |
drop patches with explicit 4.9+ tags
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
11 files changed, 0 insertions, 1097 deletions
diff --git a/queue/cpufreq-Bring-CPUs-up-even-if-cpufreq_online-failed.patch b/queue/cpufreq-Bring-CPUs-up-even-if-cpufreq_online-failed.patch deleted file mode 100644 index 4fddb0d..0000000 --- a/queue/cpufreq-Bring-CPUs-up-even-if-cpufreq_online-failed.patch +++ /dev/null @@ -1,77 +0,0 @@ -From c4a3fa261b16858416f1fd7db03a33d7ef5fc0b3 Mon Sep 17 00:00:00 2001 -From: Chen Yu <yu.c.chen@intel.com> -Date: Sun, 9 Apr 2017 13:45:16 +0800 -Subject: [PATCH] cpufreq: Bring CPUs up even if cpufreq_online() failed - -commit c4a3fa261b16858416f1fd7db03a33d7ef5fc0b3 upstream. - -There is a report that after commit 27622b061eb4 ("cpufreq: Convert -to hotplug state machine"), the normal CPU offline/online cycle -fails on some platforms. - -According to the ftrace result, this problem was triggered on -platforms using acpi-cpufreq as the default cpufreq driver, -and due to the lack of some ACPI freq method (eg. _PCT), -cpufreq_online() failed and returned a negative value, so the CPU -hotplug state machine rolled back the CPU online process. Actually, -from the user's perspective, the failure of cpufreq_online() should -not prevent that CPU from being brought up, although cpufreq might -not work on that CPU. - -BTW, during system startup cpufreq_online() is not invoked via CPU -online but by the cpufreq device creation process, so the APs can be -brought up even though cpufreq_online() fails in that stage. - -This patch ignores the return value of cpufreq_online/offline() and -lets the cpufreq framework deal with the failure. cpufreq_online() -itself will do a proper rollback in that case and if _PCT is missing, -the ACPI cpufreq driver will print a warning if the corresponding -debug options have been enabled. - -Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=194581 -Fixes: 27622b061eb4 ("cpufreq: Convert to hotplug state machine") -Reported-and-tested-by: Tomasz Maciej Nowak <tmn505@gmail.com> -Signed-off-by: Chen Yu <yu.c.chen@intel.com> -Acked-by: Viresh Kumar <viresh.kumar@linaro.org> -Cc: 4.9+ <stable@vger.kernel.org> # 4.9+ -Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - -diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c -index bc96d423781a..0e3f6496524d 100644 ---- a/drivers/cpufreq/cpufreq.c -+++ b/drivers/cpufreq/cpufreq.c -@@ -2398,6 +2398,20 @@ EXPORT_SYMBOL_GPL(cpufreq_boost_enabled); - *********************************************************************/ - static enum cpuhp_state hp_online; - -+static int cpuhp_cpufreq_online(unsigned int cpu) -+{ -+ cpufreq_online(cpu); -+ -+ return 0; -+} -+ -+static int cpuhp_cpufreq_offline(unsigned int cpu) -+{ -+ cpufreq_offline(cpu); -+ -+ return 0; -+} -+ - /** - * cpufreq_register_driver - register a CPU Frequency driver - * @driver_data: A struct cpufreq_driver containing the values# -@@ -2460,8 +2474,8 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data) - } - - ret = cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, "cpufreq:online", -- cpufreq_online, -- cpufreq_offline); -+ cpuhp_cpufreq_online, -+ cpuhp_cpufreq_offline); - if (ret < 0) - goto err_if_unreg; - hp_online = ret; --- -2.12.0 - diff --git a/queue/drm-etnaviv-fix-missing-unlock-on-error-in-etnaviv_g.patch b/queue/drm-etnaviv-fix-missing-unlock-on-error-in-etnaviv_g.patch deleted file mode 100644 index 4fb58a3..0000000 --- a/queue/drm-etnaviv-fix-missing-unlock-on-error-in-etnaviv_g.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 45abdf35cf82e4270328c7237e7812de960ac560 Mon Sep 17 00:00:00 2001 -From: Wei Yongjun <weiyongjun1@huawei.com> -Date: Wed, 12 Apr 2017 00:31:16 +0000 -Subject: [PATCH] drm/etnaviv: fix missing unlock on error in - etnaviv_gpu_submit() - -commit 45abdf35cf82e4270328c7237e7812de960ac560 upstream. - -Add the missing unlock before return from function etnaviv_gpu_submit() -in the error handling case. - -lst: fixed label name. - -Fixes: f3cd1b064f11 ("drm/etnaviv: (re-)protect fence allocation with -GPU mutex") -CC: stable@vger.kernel.org #4.9+ -Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com> -Signed-off-by: Lucas Stach <l.stach@pengutronix.de> - -diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c -index da48819ff2e6..b78d9239e48f 100644 ---- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c -+++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c -@@ -1317,7 +1317,7 @@ int etnaviv_gpu_submit(struct etnaviv_gpu *gpu, - if (!fence) { - event_free(gpu, event); - ret = -ENOMEM; -- goto out_pm_put; -+ goto out_unlock; - } - - gpu->event[event].fence = fence; -@@ -1357,6 +1357,7 @@ int etnaviv_gpu_submit(struct etnaviv_gpu *gpu, - hangcheck_timer_reset(gpu); - ret = 0; - -+out_unlock: - mutex_unlock(&gpu->lock); - - out_pm_put: --- -2.12.0 - diff --git a/queue/drm-i915-Avoid-rcu_barrier-from-reclaim-paths-shrink.patch b/queue/drm-i915-Avoid-rcu_barrier-from-reclaim-paths-shrink.patch deleted file mode 100644 index 0d99dd1..0000000 --- a/queue/drm-i915-Avoid-rcu_barrier-from-reclaim-paths-shrink.patch +++ /dev/null @@ -1,273 +0,0 @@ -From 3d3d18f086cdda72ee18a454db70ca72c6e3246c Mon Sep 17 00:00:00 2001 -From: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue, 21 Mar 2017 14:45:31 +0000 -Subject: [PATCH] drm/i915: Avoid rcu_barrier() from reclaim paths (shrinker) - -commit 3d3d18f086cdda72ee18a454db70ca72c6e3246c upstream. - -The rcu_barrier() takes the cpu_hotplug mutex which itself is not -reclaim-safe, and so rcu_barrier() is illegal from inside the shrinker. - -[ 309.661373] ========================================================= -[ 309.661376] [ INFO: possible irq lock inversion dependency detected ] -[ 309.661380] 4.11.0-rc1-CI-CI_DRM_2333+ #1 Tainted: G W -[ 309.661383] --------------------------------------------------------- -[ 309.661386] gem_exec_gttfil/6435 just changed the state of lock: -[ 309.661389] (rcu_preempt_state.barrier_mutex){+.+.-.}, at: [<ffffffff81100731>] _rcu_barrier+0x31/0x160 -[ 309.661399] but this lock took another, RECLAIM_FS-unsafe lock in the past: -[ 309.661402] (cpu_hotplug.lock){+.+.+.} -[ 309.661404] - - and interrupts could create inverse lock ordering between them. - -[ 309.661410] - other info that might help us debug this: -[ 309.661414] Possible interrupt unsafe locking scenario: - -[ 309.661417] CPU0 CPU1 -[ 309.661419] ---- ---- -[ 309.661421] lock(cpu_hotplug.lock); -[ 309.661425] local_irq_disable(); -[ 309.661432] lock(rcu_preempt_state.barrier_mutex); -[ 309.661441] lock(cpu_hotplug.lock); -[ 309.661446] <Interrupt> -[ 309.661448] lock(rcu_preempt_state.barrier_mutex); -[ 309.661453] - *** DEADLOCK *** - -[ 309.661460] 4 locks held by gem_exec_gttfil/6435: -[ 309.661464] #0: (sb_writers#10){.+.+.+}, at: [<ffffffff8120d83d>] vfs_write+0x17d/0x1f0 -[ 309.661475] #1: (debugfs_srcu){......}, at: [<ffffffff81320491>] debugfs_use_file_start+0x41/0xa0 -[ 309.661486] #2: (&attr->mutex){+.+.+.}, at: [<ffffffff8123a3e7>] simple_attr_write+0x37/0xe0 -[ 309.661495] #3: (&dev->struct_mutex){+.+.+.}, at: [<ffffffffa0091b4a>] i915_drop_caches_set+0x3a/0x150 [i915] -[ 309.661540] - the shortest dependencies between 2nd lock and 1st lock: -[ 309.661547] -> (cpu_hotplug.lock){+.+.+.} ops: 829 { -[ 309.661553] HARDIRQ-ON-W at: -[ 309.661560] __lock_acquire+0x5e5/0x1b50 -[ 309.661565] lock_acquire+0xc9/0x220 -[ 309.661572] __mutex_lock+0x6e/0x990 -[ 309.661576] mutex_lock_nested+0x16/0x20 -[ 309.661583] get_online_cpus+0x61/0x80 -[ 309.661590] kmem_cache_create+0x25/0x1d0 -[ 309.661596] debug_objects_mem_init+0x30/0x249 -[ 309.661602] start_kernel+0x341/0x3fe -[ 309.661607] x86_64_start_reservations+0x2a/0x2c -[ 309.661612] x86_64_start_kernel+0x173/0x186 -[ 309.661619] verify_cpu+0x0/0xfc -[ 309.661622] SOFTIRQ-ON-W at: -[ 309.661627] __lock_acquire+0x611/0x1b50 -[ 309.661632] lock_acquire+0xc9/0x220 -[ 309.661636] __mutex_lock+0x6e/0x990 -[ 309.661641] mutex_lock_nested+0x16/0x20 -[ 309.661646] get_online_cpus+0x61/0x80 -[ 309.661650] kmem_cache_create+0x25/0x1d0 -[ 309.661655] debug_objects_mem_init+0x30/0x249 -[ 309.661660] start_kernel+0x341/0x3fe -[ 309.661664] x86_64_start_reservations+0x2a/0x2c -[ 309.661669] x86_64_start_kernel+0x173/0x186 -[ 309.661674] verify_cpu+0x0/0xfc -[ 309.661677] RECLAIM_FS-ON-W at: -[ 309.661682] mark_held_locks+0x6f/0xa0 -[ 309.661687] lockdep_trace_alloc+0xb3/0x100 -[ 309.661693] kmem_cache_alloc_trace+0x31/0x2e0 -[ 309.661699] __smpboot_create_thread.part.1+0x27/0xe0 -[ 309.661704] smpboot_create_threads+0x61/0x90 -[ 309.661709] cpuhp_invoke_callback+0x9c/0x8a0 -[ 309.661713] cpuhp_up_callbacks+0x31/0xb0 -[ 309.661718] _cpu_up+0x7a/0xc0 -[ 309.661723] do_cpu_up+0x5f/0x80 -[ 309.661727] cpu_up+0xe/0x10 -[ 309.661734] smp_init+0x71/0xb3 -[ 309.661738] kernel_init_freeable+0x94/0x19e -[ 309.661743] kernel_init+0x9/0xf0 -[ 309.661748] ret_from_fork+0x2e/0x40 -[ 309.661752] INITIAL USE at: -[ 309.661757] __lock_acquire+0x234/0x1b50 -[ 309.661761] lock_acquire+0xc9/0x220 -[ 309.661766] __mutex_lock+0x6e/0x990 -[ 309.661771] mutex_lock_nested+0x16/0x20 -[ 309.661775] get_online_cpus+0x61/0x80 -[ 309.661780] __cpuhp_setup_state+0x44/0x170 -[ 309.661785] page_alloc_init+0x23/0x3a -[ 309.661790] start_kernel+0x124/0x3fe -[ 309.661794] x86_64_start_reservations+0x2a/0x2c -[ 309.661799] x86_64_start_kernel+0x173/0x186 -[ 309.661804] verify_cpu+0x0/0xfc -[ 309.661807] } -[ 309.661813] ... key at: [<ffffffff81e37690>] cpu_hotplug+0xb0/0x100 -[ 309.661817] ... acquired at: -[ 309.661821] lock_acquire+0xc9/0x220 -[ 309.661825] __mutex_lock+0x6e/0x990 -[ 309.661829] mutex_lock_nested+0x16/0x20 -[ 309.661833] get_online_cpus+0x61/0x80 -[ 309.661837] _rcu_barrier+0x9f/0x160 -[ 309.661841] rcu_barrier+0x10/0x20 -[ 309.661847] netdev_run_todo+0x5f/0x310 -[ 309.661852] rtnl_unlock+0x9/0x10 -[ 309.661856] default_device_exit_batch+0x133/0x150 -[ 309.661862] ops_exit_list.isra.0+0x4d/0x60 -[ 309.661866] cleanup_net+0x1d8/0x2c0 -[ 309.661872] process_one_work+0x1f4/0x6d0 -[ 309.661876] worker_thread+0x49/0x4a0 -[ 309.661881] kthread+0x107/0x140 -[ 309.661884] ret_from_fork+0x2e/0x40 - -[ 309.661890] -> (rcu_preempt_state.barrier_mutex){+.+.-.} ops: 179 { -[ 309.661896] HARDIRQ-ON-W at: -[ 309.661901] __lock_acquire+0x5e5/0x1b50 -[ 309.661905] lock_acquire+0xc9/0x220 -[ 309.661910] __mutex_lock+0x6e/0x990 -[ 309.661914] mutex_lock_nested+0x16/0x20 -[ 309.661919] _rcu_barrier+0x31/0x160 -[ 309.661923] rcu_barrier+0x10/0x20 -[ 309.661928] netdev_run_todo+0x5f/0x310 -[ 309.661932] rtnl_unlock+0x9/0x10 -[ 309.661936] default_device_exit_batch+0x133/0x150 -[ 309.661941] ops_exit_list.isra.0+0x4d/0x60 -[ 309.661946] cleanup_net+0x1d8/0x2c0 -[ 309.661951] process_one_work+0x1f4/0x6d0 -[ 309.661955] worker_thread+0x49/0x4a0 -[ 309.661960] kthread+0x107/0x140 -[ 309.661964] ret_from_fork+0x2e/0x40 -[ 309.661968] SOFTIRQ-ON-W at: -[ 309.661972] __lock_acquire+0x611/0x1b50 -[ 309.661977] lock_acquire+0xc9/0x220 -[ 309.661981] __mutex_lock+0x6e/0x990 -[ 309.661986] mutex_lock_nested+0x16/0x20 -[ 309.661990] _rcu_barrier+0x31/0x160 -[ 309.661995] rcu_barrier+0x10/0x20 -[ 309.661999] netdev_run_todo+0x5f/0x310 -[ 309.662003] rtnl_unlock+0x9/0x10 -[ 309.662008] default_device_exit_batch+0x133/0x150 -[ 309.662013] ops_exit_list.isra.0+0x4d/0x60 -[ 309.662017] cleanup_net+0x1d8/0x2c0 -[ 309.662022] process_one_work+0x1f4/0x6d0 -[ 309.662027] worker_thread+0x49/0x4a0 -[ 309.662031] kthread+0x107/0x140 -[ 309.662035] ret_from_fork+0x2e/0x40 -[ 309.662039] IN-RECLAIM_FS-W at: -[ 309.662043] __lock_acquire+0x638/0x1b50 -[ 309.662048] lock_acquire+0xc9/0x220 -[ 309.662053] __mutex_lock+0x6e/0x990 -[ 309.662058] mutex_lock_nested+0x16/0x20 -[ 309.662062] _rcu_barrier+0x31/0x160 -[ 309.662067] rcu_barrier+0x10/0x20 -[ 309.662089] i915_gem_shrink_all+0x33/0x40 [i915] -[ 309.662109] i915_drop_caches_set+0x141/0x150 [i915] -[ 309.662114] simple_attr_write+0xc7/0xe0 -[ 309.662119] full_proxy_write+0x4f/0x70 -[ 309.662124] __vfs_write+0x23/0x120 -[ 309.662128] vfs_write+0xc6/0x1f0 -[ 309.662133] SyS_write+0x44/0xb0 -[ 309.662138] entry_SYSCALL_64_fastpath+0x1c/0xb1 -[ 309.662142] INITIAL USE at: -[ 309.662147] __lock_acquire+0x234/0x1b50 -[ 309.662151] lock_acquire+0xc9/0x220 -[ 309.662156] __mutex_lock+0x6e/0x990 -[ 309.662160] mutex_lock_nested+0x16/0x20 -[ 309.662165] _rcu_barrier+0x31/0x160 -[ 309.662169] rcu_barrier+0x10/0x20 -[ 309.662174] netdev_run_todo+0x5f/0x310 -[ 309.662178] rtnl_unlock+0x9/0x10 -[ 309.662183] default_device_exit_batch+0x133/0x150 -[ 309.662188] ops_exit_list.isra.0+0x4d/0x60 -[ 309.662192] cleanup_net+0x1d8/0x2c0 -[ 309.662197] process_one_work+0x1f4/0x6d0 -[ 309.662202] worker_thread+0x49/0x4a0 -[ 309.662206] kthread+0x107/0x140 -[ 309.662210] ret_from_fork+0x2e/0x40 -[ 309.662214] } -[ 309.662220] ... key at: [<ffffffff81e4e1c8>] rcu_preempt_state+0x508/0x780 -[ 309.662225] ... acquired at: -[ 309.662229] check_usage_forwards+0x12b/0x130 -[ 309.662233] mark_lock+0x360/0x6f0 -[ 309.662237] __lock_acquire+0x638/0x1b50 -[ 309.662241] lock_acquire+0xc9/0x220 -[ 309.662245] __mutex_lock+0x6e/0x990 -[ 309.662249] mutex_lock_nested+0x16/0x20 -[ 309.662253] _rcu_barrier+0x31/0x160 -[ 309.662257] rcu_barrier+0x10/0x20 -[ 309.662279] i915_gem_shrink_all+0x33/0x40 [i915] -[ 309.662298] i915_drop_caches_set+0x141/0x150 [i915] -[ 309.662303] simple_attr_write+0xc7/0xe0 -[ 309.662307] full_proxy_write+0x4f/0x70 -[ 309.662311] __vfs_write+0x23/0x120 -[ 309.662315] vfs_write+0xc6/0x1f0 -[ 309.662319] SyS_write+0x44/0xb0 -[ 309.662323] entry_SYSCALL_64_fastpath+0x1c/0xb1 - -[ 309.662329] - stack backtrace: -[ 309.662335] CPU: 1 PID: 6435 Comm: gem_exec_gttfil Tainted: G W 4.11.0-rc1-CI-CI_DRM_2333+ #1 -[ 309.662342] Hardware name: Hewlett-Packard HP Compaq 8100 Elite SFF PC/304Ah, BIOS 786H1 v01.13 07/14/2011 -[ 309.662348] Call Trace: -[ 309.662354] dump_stack+0x67/0x92 -[ 309.662359] print_irq_inversion_bug.part.19+0x1a4/0x1b0 -[ 309.662365] check_usage_forwards+0x12b/0x130 -[ 309.662369] mark_lock+0x360/0x6f0 -[ 309.662374] ? print_shortest_lock_dependencies+0x1a0/0x1a0 -[ 309.662379] __lock_acquire+0x638/0x1b50 -[ 309.662383] ? __mutex_unlock_slowpath+0x3e/0x2e0 -[ 309.662388] ? trace_hardirqs_on+0xd/0x10 -[ 309.662392] ? _rcu_barrier+0x31/0x160 -[ 309.662396] lock_acquire+0xc9/0x220 -[ 309.662400] ? _rcu_barrier+0x31/0x160 -[ 309.662404] ? _rcu_barrier+0x31/0x160 -[ 309.662409] __mutex_lock+0x6e/0x990 -[ 309.662412] ? _rcu_barrier+0x31/0x160 -[ 309.662416] ? _rcu_barrier+0x31/0x160 -[ 309.662421] ? synchronize_rcu_expedited+0x35/0xb0 -[ 309.662426] ? _raw_spin_unlock_irqrestore+0x52/0x60 -[ 309.662434] mutex_lock_nested+0x16/0x20 -[ 309.662438] _rcu_barrier+0x31/0x160 -[ 309.662442] rcu_barrier+0x10/0x20 -[ 309.662464] i915_gem_shrink_all+0x33/0x40 [i915] -[ 309.662484] i915_drop_caches_set+0x141/0x150 [i915] -[ 309.662489] simple_attr_write+0xc7/0xe0 -[ 309.662494] full_proxy_write+0x4f/0x70 -[ 309.662498] __vfs_write+0x23/0x120 -[ 309.662503] ? rcu_read_lock_sched_held+0x75/0x80 -[ 309.662507] ? rcu_sync_lockdep_assert+0x2a/0x50 -[ 309.662512] ? __sb_start_write+0x102/0x210 -[ 309.662516] ? vfs_write+0x17d/0x1f0 -[ 309.662520] vfs_write+0xc6/0x1f0 -[ 309.662524] ? trace_hardirqs_on_caller+0xe7/0x200 -[ 309.662529] SyS_write+0x44/0xb0 -[ 309.662533] entry_SYSCALL_64_fastpath+0x1c/0xb1 -[ 309.662537] RIP: 0033:0x7f507eac24a0 -[ 309.662541] RSP: 002b:00007fffda8720e8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001 -[ 309.662548] RAX: ffffffffffffffda RBX: ffffffff81482bd3 RCX: 00007f507eac24a0 -[ 309.662552] RDX: 0000000000000005 RSI: 00007fffda8720f0 RDI: 0000000000000005 -[ 309.662557] RBP: ffffc9000048bf88 R08: 0000000000000000 R09: 000000000000002c -[ 309.662561] R10: 0000000000000014 R11: 0000000000000246 R12: 00007fffda872230 -[ 309.662566] R13: 00007fffda872228 R14: 0000000000000201 R15: 00007fffda8720f0 -[ 309.662572] ? __this_cpu_preempt_check+0x13/0x20 - -Fixes: 0eafec6d3244 ("drm/i915: Enable lockless lookup of request tracking via RCU") -Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100192 -Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> -Cc: Daniel Vetter <daniel.vetter@ffwll.ch> -Cc: <stable@vger.kernel.org> # v4.9+ -Link: http://patchwork.freedesktop.org/patch/msgid/20170314115019.18127-1-chris@chris-wilson.co.uk -Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> -(cherry picked from commit bd784b7cc41af7a19cfb705fa6d800e511c4ab02) -Signed-off-by: Jani Nikula <jani.nikula@intel.com> -Link: http://patchwork.freedesktop.org/patch/msgid/20170321144531.12344-1-chris@chris-wilson.co.uk - -diff --git a/drivers/gpu/drm/i915/i915_gem_shrinker.c b/drivers/gpu/drm/i915/i915_gem_shrinker.c -index 401006b4c6a3..d5d2b4c6ed38 100644 ---- a/drivers/gpu/drm/i915/i915_gem_shrinker.c -+++ b/drivers/gpu/drm/i915/i915_gem_shrinker.c -@@ -263,7 +263,7 @@ unsigned long i915_gem_shrink_all(struct drm_i915_private *dev_priv) - I915_SHRINK_BOUND | - I915_SHRINK_UNBOUND | - I915_SHRINK_ACTIVE); -- rcu_barrier(); /* wait until our RCU delayed slab frees are completed */ -+ synchronize_rcu(); /* wait for our earlier RCU delayed slab frees */ - - return freed; - } --- -2.12.0 - diff --git a/queue/mac80211-unconditionally-start-new-netdev-queues-wit.patch b/queue/mac80211-unconditionally-start-new-netdev-queues-wit.patch deleted file mode 100644 index fbac46b..0000000 --- a/queue/mac80211-unconditionally-start-new-netdev-queues-wit.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 7d65f82954dadbbe7b6e1aec7e07ad17bc6d958b Mon Sep 17 00:00:00 2001 -From: Johannes Berg <johannes.berg@intel.com> -Date: Wed, 29 Mar 2017 14:15:24 +0200 -Subject: [PATCH] mac80211: unconditionally start new netdev queues with iTXQ - support - -commit 7d65f82954dadbbe7b6e1aec7e07ad17bc6d958b upstream. - -When internal mac80211 TXQs aren't supported, netdev queues must -always started out started even when driver queues are stopped -while the interface is added. This is necessary because with the -internal TXQ support netdev queues are never stopped and packet -scheduling/dropping is done in mac80211. - -Cc: stable@vger.kernel.org # 4.9+ -Fixes: 80a83cfc434b1 ("mac80211: skip netdev queue control with software queuing") -Reported-and-tested-by: Sven Eckelmann <sven.eckelmann@openmesh.com> -Signed-off-by: Johannes Berg <johannes.berg@intel.com> - -diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c -index 40813dd3301c..5bb0c5012819 100644 ---- a/net/mac80211/iface.c -+++ b/net/mac80211/iface.c -@@ -718,7 +718,8 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up) - ieee80211_recalc_ps(local); - - if (sdata->vif.type == NL80211_IFTYPE_MONITOR || -- sdata->vif.type == NL80211_IFTYPE_AP_VLAN) { -+ sdata->vif.type == NL80211_IFTYPE_AP_VLAN || -+ local->ops->wake_tx_queue) { - /* XXX: for AP_VLAN, actually track AP queues */ - netif_tx_start_all_queues(dev); - } else if (dev) { --- -2.12.0 - diff --git a/queue/media-dvb-usb-don-t-use-stack-for-firmware-load.patch b/queue/media-dvb-usb-don-t-use-stack-for-firmware-load.patch deleted file mode 100644 index e8acae2..0000000 --- a/queue/media-dvb-usb-don-t-use-stack-for-firmware-load.patch +++ /dev/null @@ -1,133 +0,0 @@ -From 43fab9793c1f44e665b4f98035a14942edf03ddc Mon Sep 17 00:00:00 2001 -From: Mauro Carvalho Chehab <mchehab@s-opensource.com> -Date: Tue, 24 Jan 2017 08:13:11 -0200 -Subject: [PATCH] [media] dvb-usb: don't use stack for firmware load - -commit 43fab9793c1f44e665b4f98035a14942edf03ddc upstream. - -As reported by Marc Duponcheel <marc@offline.be>, firmware load on -dvb-usb is using the stack, with is not allowed anymore on default -Kernel configurations: - -[ 1025.958836] dvb-usb: found a 'WideView WT-220U PenType Receiver (based on ZL353)' in cold state, will try to load a firmware -[ 1025.958853] dvb-usb: downloading firmware from file 'dvb-usb-wt220u-zl0353-01.fw' -[ 1025.958855] dvb-usb: could not stop the USB controller CPU. -[ 1025.958856] dvb-usb: error while transferring firmware (transferred size: -11, block size: 3) -[ 1025.958856] dvb-usb: firmware download failed at 8 with -22 -[ 1025.958867] usbcore: registered new interface driver dvb_usb_dtt200u - -[ 2.789902] dvb-usb: downloading firmware from file 'dvb-usb-wt220u-zl0353-01.fw' -[ 2.789905] ------------[ cut here ]------------ -[ 2.789911] WARNING: CPU: 3 PID: 2196 at drivers/usb/core/hcd.c:1584 usb_hcd_map_urb_for_dma+0x430/0x560 [usbcore] -[ 2.789912] transfer buffer not dma capable -[ 2.789912] Modules linked in: btusb dvb_usb_dtt200u(+) dvb_usb_af9035(+) btrtl btbcm dvb_usb dvb_usb_v2 btintel dvb_core bluetooth rc_core rfkill x86_pkg_temp_thermal intel_powerclamp coretemp crc32_pclmul aesni_intel aes_x86_64 glue_helper lrw gf128mul ablk_helper cryptd drm_kms_helper syscopyarea sysfillrect pcspkr i2c_i801 sysimgblt fb_sys_fops drm i2c_smbus i2c_core r8169 lpc_ich mfd_core mii thermal fan rtc_cmos video button acpi_cpufreq processor snd_hda_codec_realtek snd_hda_codec_generic snd_hda_intel snd_hda_codec snd_hwdep snd_hda_core snd_pcm snd_timer snd crc32c_intel ahci libahci libata xhci_pci ehci_pci xhci_hcd ehci_hcd usbcore usb_common dm_mirror dm_region_hash dm_log dm_mod -[ 2.789936] CPU: 3 PID: 2196 Comm: systemd-udevd Not tainted 4.9.0-gentoo #1 -[ 2.789937] Hardware name: ASUS All Series/H81I-PLUS, BIOS 0401 07/23/2013 -[ 2.789938] ffffc9000339b690 ffffffff812bd397 ffffc9000339b6e0 0000000000000000 -[ 2.789939] ffffc9000339b6d0 ffffffff81055c86 000006300339b6a0 ffff880116c0c000 -[ 2.789941] 0000000000000000 0000000000000000 0000000000000001 ffff880116c08000 -[ 2.789942] Call Trace: -[ 2.789945] [<ffffffff812bd397>] dump_stack+0x4d/0x66 -[ 2.789947] [<ffffffff81055c86>] __warn+0xc6/0xe0 -[ 2.789948] [<ffffffff81055cea>] warn_slowpath_fmt+0x4a/0x50 -[ 2.789952] [<ffffffffa006d460>] usb_hcd_map_urb_for_dma+0x430/0x560 [usbcore] -[ 2.789954] [<ffffffff814ed5a8>] ? io_schedule_timeout+0xd8/0x110 -[ 2.789956] [<ffffffffa006e09c>] usb_hcd_submit_urb+0x9c/0x980 [usbcore] -[ 2.789958] [<ffffffff812d0ebf>] ? copy_page_to_iter+0x14f/0x2b0 -[ 2.789960] [<ffffffff81126818>] ? pagecache_get_page+0x28/0x240 -[ 2.789962] [<ffffffff8118c2a0>] ? touch_atime+0x20/0xa0 -[ 2.789964] [<ffffffffa006f7c4>] usb_submit_urb+0x2c4/0x520 [usbcore] -[ 2.789967] [<ffffffffa006feca>] usb_start_wait_urb+0x5a/0xe0 [usbcore] -[ 2.789969] [<ffffffffa007000c>] usb_control_msg+0xbc/0xf0 [usbcore] -[ 2.789970] [<ffffffffa067903d>] usb_cypress_writemem+0x3d/0x40 [dvb_usb] -[ 2.789972] [<ffffffffa06791cf>] usb_cypress_load_firmware+0x4f/0x130 [dvb_usb] -[ 2.789973] [<ffffffff8109dbbe>] ? console_unlock+0x2fe/0x5d0 -[ 2.789974] [<ffffffff8109e10c>] ? vprintk_emit+0x27c/0x410 -[ 2.789975] [<ffffffff8109e40a>] ? vprintk_default+0x1a/0x20 -[ 2.789976] [<ffffffff81124d76>] ? printk+0x43/0x4b -[ 2.789977] [<ffffffffa0679310>] dvb_usb_download_firmware+0x60/0xd0 [dvb_usb] -[ 2.789979] [<ffffffffa0679898>] dvb_usb_device_init+0x3d8/0x610 [dvb_usb] -[ 2.789981] [<ffffffffa069e302>] dtt200u_usb_probe+0x92/0xd0 [dvb_usb_dtt200u] -[ 2.789984] [<ffffffffa007420c>] usb_probe_interface+0xfc/0x270 [usbcore] -[ 2.789985] [<ffffffff8138bf95>] driver_probe_device+0x215/0x2d0 -[ 2.789986] [<ffffffff8138c0e6>] __driver_attach+0x96/0xa0 -[ 2.789987] [<ffffffff8138c050>] ? driver_probe_device+0x2d0/0x2d0 -[ 2.789988] [<ffffffff81389ffb>] bus_for_each_dev+0x5b/0x90 -[ 2.789989] [<ffffffff8138b7b9>] driver_attach+0x19/0x20 -[ 2.789990] [<ffffffff8138b33c>] bus_add_driver+0x11c/0x220 -[ 2.789991] [<ffffffff8138c91b>] driver_register+0x5b/0xd0 -[ 2.789994] [<ffffffffa0072f6c>] usb_register_driver+0x7c/0x130 [usbcore] -[ 2.789994] [<ffffffffa06a5000>] ? 0xffffffffa06a5000 -[ 2.789996] [<ffffffffa06a501e>] dtt200u_usb_driver_init+0x1e/0x20 [dvb_usb_dtt200u] -[ 2.789997] [<ffffffff81000408>] do_one_initcall+0x38/0x140 -[ 2.789998] [<ffffffff8116001c>] ? __vunmap+0x7c/0xc0 -[ 2.789999] [<ffffffff81124fb0>] ? do_init_module+0x22/0x1d2 -[ 2.790000] [<ffffffff81124fe8>] do_init_module+0x5a/0x1d2 -[ 2.790002] [<ffffffff810c96b1>] load_module+0x1e11/0x2580 -[ 2.790003] [<ffffffff810c68b0>] ? show_taint+0x30/0x30 -[ 2.790004] [<ffffffff81177250>] ? kernel_read_file+0x100/0x190 -[ 2.790005] [<ffffffff810c9ffa>] SyS_finit_module+0xba/0xc0 -[ 2.790007] [<ffffffff814f13e0>] entry_SYSCALL_64_fastpath+0x13/0x94 -[ 2.790008] ---[ end trace c78a74e78baec6fc ]--- - -So, allocate the structure dynamically. - -Cc: stable@vger.kernel.org # Kernel 4.9+ -Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com> - -diff --git a/drivers/media/usb/dvb-usb/dvb-usb-firmware.c b/drivers/media/usb/dvb-usb/dvb-usb-firmware.c -index f0023dbb7276..ab9866024ec7 100644 ---- a/drivers/media/usb/dvb-usb/dvb-usb-firmware.c -+++ b/drivers/media/usb/dvb-usb/dvb-usb-firmware.c -@@ -35,28 +35,33 @@ static int usb_cypress_writemem(struct usb_device *udev,u16 addr,u8 *data, u8 le - - int usb_cypress_load_firmware(struct usb_device *udev, const struct firmware *fw, int type) - { -- struct hexline hx; -+ struct hexline *hx; - u8 reset; - int ret,pos=0; - -+ hx = kmalloc(sizeof(*hx), GFP_KERNEL); -+ if (!hx) -+ return -ENOMEM; -+ - /* stop the CPU */ - reset = 1; - if ((ret = usb_cypress_writemem(udev,cypress[type].cpu_cs_register,&reset,1)) != 1) - err("could not stop the USB controller CPU."); - -- while ((ret = dvb_usb_get_hexline(fw,&hx,&pos)) > 0) { -- deb_fw("writing to address 0x%04x (buffer: 0x%02x %02x)\n",hx.addr,hx.len,hx.chk); -- ret = usb_cypress_writemem(udev,hx.addr,hx.data,hx.len); -+ while ((ret = dvb_usb_get_hexline(fw, hx, &pos)) > 0) { -+ deb_fw("writing to address 0x%04x (buffer: 0x%02x %02x)\n", hx->addr, hx->len, hx->chk); -+ ret = usb_cypress_writemem(udev, hx->addr, hx->data, hx->len); - -- if (ret != hx.len) { -+ if (ret != hx->len) { - err("error while transferring firmware (transferred size: %d, block size: %d)", -- ret,hx.len); -+ ret, hx->len); - ret = -EINVAL; - break; - } - } - if (ret < 0) { - err("firmware download failed at %d with %d",pos,ret); -+ kfree(hx); - return ret; - } - -@@ -70,6 +75,8 @@ int usb_cypress_load_firmware(struct usb_device *udev, const struct firmware *fw - } else - ret = -EIO; - -+ kfree(hx); -+ - return ret; - } - EXPORT_SYMBOL(usb_cypress_load_firmware); --- -2.12.0 - diff --git a/queue/parisc-Fix-get_user-for-64-bit-value-on-32-bit-kerne.patch b/queue/parisc-Fix-get_user-for-64-bit-value-on-32-bit-kerne.patch deleted file mode 100644 index 00ad5d7..0000000 --- a/queue/parisc-Fix-get_user-for-64-bit-value-on-32-bit-kerne.patch +++ /dev/null @@ -1,152 +0,0 @@ -From 3f795cef0ecdf9bc980dd058d49bdab4b19af1d3 Mon Sep 17 00:00:00 2001 -From: Helge Deller <deller@gmx.de> -Date: Sun, 16 Apr 2017 10:00:14 +0200 -Subject: [PATCH] parisc: Fix get_user() for 64-bit value on 32-bit kernel - -commit 3f795cef0ecdf9bc980dd058d49bdab4b19af1d3 upstream. - -This fixes a bug in which the upper 32-bits of a 64-bit value which is -read by get_user() was lost on a 32-bit kernel. -While touching this code, split out pre-loading of %sr2 space register -and clean up code indent. - -Cc: <stable@vger.kernel.org> # v4.9+ -Signed-off-by: Helge Deller <deller@gmx.de> - -diff --git a/arch/parisc/include/asm/uaccess.h b/arch/parisc/include/asm/uaccess.h -index 8442727f28d2..cbd4f4af8108 100644 ---- a/arch/parisc/include/asm/uaccess.h -+++ b/arch/parisc/include/asm/uaccess.h -@@ -39,10 +39,10 @@ - #define get_user __get_user - - #if !defined(CONFIG_64BIT) --#define LDD_USER(ptr) __get_user_asm64(ptr) -+#define LDD_USER(val, ptr) __get_user_asm64(val, ptr) - #define STD_USER(x, ptr) __put_user_asm64(x, ptr) - #else --#define LDD_USER(ptr) __get_user_asm("ldd", ptr) -+#define LDD_USER(val, ptr) __get_user_asm(val, "ldd", ptr) - #define STD_USER(x, ptr) __put_user_asm("std", x, ptr) - #endif - -@@ -97,63 +97,87 @@ struct exception_data { - " mtsp %0,%%sr2\n\t" \ - : : "r"(get_fs()) : ) - --#define __get_user(x, ptr) \ --({ \ -- register long __gu_err __asm__ ("r8") = 0; \ -- register long __gu_val; \ -- \ -- load_sr2(); \ -- switch (sizeof(*(ptr))) { \ -- case 1: __get_user_asm("ldb", ptr); break; \ -- case 2: __get_user_asm("ldh", ptr); break; \ -- case 4: __get_user_asm("ldw", ptr); break; \ -- case 8: LDD_USER(ptr); break; \ -- default: BUILD_BUG(); break; \ -- } \ -- \ -- (x) = (__force __typeof__(*(ptr))) __gu_val; \ -- __gu_err; \ -+#define __get_user_internal(val, ptr) \ -+({ \ -+ register long __gu_err __asm__ ("r8") = 0; \ -+ \ -+ switch (sizeof(*(ptr))) { \ -+ case 1: __get_user_asm(val, "ldb", ptr); break; \ -+ case 2: __get_user_asm(val, "ldh", ptr); break; \ -+ case 4: __get_user_asm(val, "ldw", ptr); break; \ -+ case 8: LDD_USER(val, ptr); break; \ -+ default: BUILD_BUG(); \ -+ } \ -+ \ -+ __gu_err; \ - }) - --#define __get_user_asm(ldx, ptr) \ -+#define __get_user(val, ptr) \ -+({ \ -+ load_sr2(); \ -+ __get_user_internal(val, ptr); \ -+}) -+ -+#define __get_user_asm(val, ldx, ptr) \ -+{ \ -+ register long __gu_val; \ -+ \ - __asm__("1: " ldx " 0(%%sr2,%2),%0\n" \ - "9:\n" \ - ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 9b) \ - : "=r"(__gu_val), "=r"(__gu_err) \ -- : "r"(ptr), "1"(__gu_err)); -+ : "r"(ptr), "1"(__gu_err)); \ -+ \ -+ (val) = (__force __typeof__(*(ptr))) __gu_val; \ -+} - - #if !defined(CONFIG_64BIT) - --#define __get_user_asm64(ptr) \ -+#define __get_user_asm64(val, ptr) \ -+{ \ -+ union { \ -+ unsigned long long l; \ -+ __typeof__(*(ptr)) t; \ -+ } __gu_tmp; \ -+ \ - __asm__(" copy %%r0,%R0\n" \ - "1: ldw 0(%%sr2,%2),%0\n" \ - "2: ldw 4(%%sr2,%2),%R0\n" \ - "9:\n" \ - ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 9b) \ - ASM_EXCEPTIONTABLE_ENTRY_EFAULT(2b, 9b) \ -- : "=r"(__gu_val), "=r"(__gu_err) \ -- : "r"(ptr), "1"(__gu_err)); -+ : "=&r"(__gu_tmp.l), "=r"(__gu_err) \ -+ : "r"(ptr), "1"(__gu_err)); \ -+ \ -+ (val) = __gu_tmp.t; \ -+} - - #endif /* !defined(CONFIG_64BIT) */ - - --#define __put_user(x, ptr) \ -+#define __put_user_internal(x, ptr) \ - ({ \ - register long __pu_err __asm__ ("r8") = 0; \ - __typeof__(*(ptr)) __x = (__typeof__(*(ptr)))(x); \ - \ -- load_sr2(); \ - switch (sizeof(*(ptr))) { \ -- case 1: __put_user_asm("stb", __x, ptr); break; \ -- case 2: __put_user_asm("sth", __x, ptr); break; \ -- case 4: __put_user_asm("stw", __x, ptr); break; \ -- case 8: STD_USER(__x, ptr); break; \ -- default: BUILD_BUG(); break; \ -- } \ -+ case 1: __put_user_asm("stb", __x, ptr); break; \ -+ case 2: __put_user_asm("sth", __x, ptr); break; \ -+ case 4: __put_user_asm("stw", __x, ptr); break; \ -+ case 8: STD_USER(__x, ptr); break; \ -+ default: BUILD_BUG(); \ -+ } \ - \ - __pu_err; \ - }) - -+#define __put_user(x, ptr) \ -+({ \ -+ load_sr2(); \ -+ __put_user_internal(x, ptr); \ -+}) -+ -+ - /* - * The "__put_user/kernel_asm()" macros tell gcc they read from memory - * instead of writing. This is because they do not write to any memory --- -2.12.0 - diff --git a/queue/parisc-fix-bugs-in-pa_memcpy.patch b/queue/parisc-fix-bugs-in-pa_memcpy.patch deleted file mode 100644 index f24a061..0000000 --- a/queue/parisc-fix-bugs-in-pa_memcpy.patch +++ /dev/null @@ -1,147 +0,0 @@ -From 409c1b250e30ad0e48b4d15d7319b4e18c046c4f Mon Sep 17 00:00:00 2001 -From: Mikulas Patocka <mpatocka@redhat.com> -Date: Fri, 14 Apr 2017 14:15:20 -0400 -Subject: [PATCH] parisc: fix bugs in pa_memcpy - -commit 409c1b250e30ad0e48b4d15d7319b4e18c046c4f upstream. - -The patch 554bfeceb8a22d448cd986fc9efce25e833278a1 ("parisc: Fix access -fault handling in pa_memcpy()") reimplements the pa_memcpy function. -Unfortunatelly, it makes the kernel unbootable. The crash happens in the -function ide_complete_cmd where memcpy is called with the same source -and destination address. - -This patch fixes a few bugs in pa_memcpy: - -* When jumping to .Lcopy_loop_16 for the first time, don't skip the - instruction "ldi 31,t0" (this bug made the kernel unbootable) -* Use the COND macro when comparing length, so that the comparison is - 64-bit (a theoretical issue, in case the length is greater than - 0xffffffff) -* Don't use the COND macro after the "extru" instruction (the PA-RISC - specification says that the upper 32-bits of extru result are undefined, - although they are set to zero in practice) -* Fix exception addresses in .Lcopy16_fault and .Lcopy8_fault -* Rename .Lcopy_loop_4 to .Lcopy_loop_8 (so that it is consistent with - .Lcopy8_fault) - -Cc: <stable@vger.kernel.org> # v4.9+ -Fixes: 554bfeceb8a2 ("parisc: Fix access fault handling in pa_memcpy()") -Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> -Signed-off-by: Helge Deller <deller@gmx.de> - -diff --git a/arch/parisc/lib/lusercopy.S b/arch/parisc/lib/lusercopy.S -index f01188c044ee..85c28bb80fb7 100644 ---- a/arch/parisc/lib/lusercopy.S -+++ b/arch/parisc/lib/lusercopy.S -@@ -201,7 +201,7 @@ ENTRY_CFI(pa_memcpy) - add dst,len,end - - /* short copy with less than 16 bytes? */ -- cmpib,>>=,n 15,len,.Lbyte_loop -+ cmpib,COND(>>=),n 15,len,.Lbyte_loop - - /* same alignment? */ - xor src,dst,t0 -@@ -216,7 +216,7 @@ ENTRY_CFI(pa_memcpy) - /* loop until we are 64-bit aligned */ - .Lalign_loop64: - extru dst,31,3,t1 -- cmpib,=,n 0,t1,.Lcopy_loop_16 -+ cmpib,=,n 0,t1,.Lcopy_loop_16_start - 20: ldb,ma 1(srcspc,src),t1 - 21: stb,ma t1,1(dstspc,dst) - b .Lalign_loop64 -@@ -225,6 +225,7 @@ ENTRY_CFI(pa_memcpy) - ASM_EXCEPTIONTABLE_ENTRY(20b,.Lcopy_done) - ASM_EXCEPTIONTABLE_ENTRY(21b,.Lcopy_done) - -+.Lcopy_loop_16_start: - ldi 31,t0 - .Lcopy_loop_16: - cmpb,COND(>>=),n t0,len,.Lword_loop -@@ -267,7 +268,7 @@ ENTRY_CFI(pa_memcpy) - /* loop until we are 32-bit aligned */ - .Lalign_loop32: - extru dst,31,2,t1 -- cmpib,=,n 0,t1,.Lcopy_loop_4 -+ cmpib,=,n 0,t1,.Lcopy_loop_8 - 20: ldb,ma 1(srcspc,src),t1 - 21: stb,ma t1,1(dstspc,dst) - b .Lalign_loop32 -@@ -277,7 +278,7 @@ ENTRY_CFI(pa_memcpy) - ASM_EXCEPTIONTABLE_ENTRY(21b,.Lcopy_done) - - --.Lcopy_loop_4: -+.Lcopy_loop_8: - cmpib,COND(>>=),n 15,len,.Lbyte_loop - - 10: ldw 0(srcspc,src),t1 -@@ -299,7 +300,7 @@ ENTRY_CFI(pa_memcpy) - ASM_EXCEPTIONTABLE_ENTRY(16b,.Lcopy_done) - ASM_EXCEPTIONTABLE_ENTRY(17b,.Lcopy_done) - -- b .Lcopy_loop_4 -+ b .Lcopy_loop_8 - ldo -16(len),len - - .Lbyte_loop: -@@ -324,7 +325,7 @@ ENTRY_CFI(pa_memcpy) - .Lunaligned_copy: - /* align until dst is 32bit-word-aligned */ - extru dst,31,2,t1 -- cmpib,COND(=),n 0,t1,.Lcopy_dstaligned -+ cmpib,=,n 0,t1,.Lcopy_dstaligned - 20: ldb 0(srcspc,src),t1 - ldo 1(src),src - 21: stb,ma t1,1(dstspc,dst) -@@ -362,7 +363,7 @@ ENTRY_CFI(pa_memcpy) - cmpiclr,<> 1,t0,%r0 - b,n .Lcase1 - .Lcase0: -- cmpb,= %r0,len,.Lcda_finish -+ cmpb,COND(=) %r0,len,.Lcda_finish - nop - - 1: ldw,ma 4(srcspc,src), a3 -@@ -376,7 +377,7 @@ ENTRY_CFI(pa_memcpy) - 1: ldw,ma 4(srcspc,src), a3 - ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcda_rdfault) - ldo -1(len),len -- cmpb,=,n %r0,len,.Ldo0 -+ cmpb,COND(=),n %r0,len,.Ldo0 - .Ldo4: - 1: ldw,ma 4(srcspc,src), a0 - ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcda_rdfault) -@@ -402,7 +403,7 @@ ENTRY_CFI(pa_memcpy) - 1: stw,ma t0, 4(dstspc,dst) - ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcopy_done) - ldo -4(len),len -- cmpb,<> %r0,len,.Ldo4 -+ cmpb,COND(<>) %r0,len,.Ldo4 - nop - .Ldo0: - shrpw a2, a3, %sar, t0 -@@ -436,14 +437,14 @@ ENTRY_CFI(pa_memcpy) - /* fault exception fixup handlers: */ - #ifdef CONFIG_64BIT - .Lcopy16_fault: --10: b .Lcopy_done -- std,ma t1,8(dstspc,dst) -+ b .Lcopy_done -+10: std,ma t1,8(dstspc,dst) - ASM_EXCEPTIONTABLE_ENTRY(10b,.Lcopy_done) - #endif - - .Lcopy8_fault: --10: b .Lcopy_done -- stw,ma t1,4(dstspc,dst) -+ b .Lcopy_done -+10: stw,ma t1,4(dstspc,dst) - ASM_EXCEPTIONTABLE_ENTRY(10b,.Lcopy_done) - - .exit --- -2.12.0 - diff --git a/queue/ppdev-check-before-attaching-port.patch b/queue/ppdev-check-before-attaching-port.patch deleted file mode 100644 index 338353a..0000000 --- a/queue/ppdev-check-before-attaching-port.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 6a3f3d95bd53c0e2688e42fe8c71bfa63d56b69d Mon Sep 17 00:00:00 2001 -From: Sudip Mukherjee <sudipm.mukherjee@gmail.com> -Date: Sat, 12 Nov 2016 21:22:12 +0000 -Subject: [PATCH] ppdev: check before attaching port - -commit dd5c472a60e43549d789a17a8444513eec64bd7e upstream. - -After parport starts using the device model, all pardevice drivers -should decide in their match_port callback function if they want to -attach with that particulatr port. ppdev has been converted to use the -new parport device-model code but pp_attach() tried to attach with all -the ports. -Create a new array of pointer and use that to remember the ports we -have attached. And use that information to skip attaching ports which -we have already attached. - -Tested-by: Joe Lawrence <joe.lawrence@redhat.com> -Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> - -diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c -index f8a483c67b07..04f3e3aa73b0 100644 ---- a/drivers/char/ppdev.c -+++ b/drivers/char/ppdev.c -@@ -86,6 +86,9 @@ struct pp_struct { - long default_inactivity; - }; - -+/* should we use PARDEVICE_MAX here? */ -+static struct device *devices[PARPORT_MAX]; -+ - /* pp_struct.flags bitfields */ - #define PP_CLAIMED (1<<0) - #define PP_EXCL (1<<1) -@@ -790,13 +793,29 @@ static const struct file_operations pp_fops = { - - static void pp_attach(struct parport *port) - { -- device_create(ppdev_class, port->dev, MKDEV(PP_MAJOR, port->number), -- NULL, "parport%d", port->number); -+ struct device *ret; -+ -+ if (devices[port->number]) -+ return; -+ -+ ret = device_create(ppdev_class, port->dev, -+ MKDEV(PP_MAJOR, port->number), NULL, -+ "parport%d", port->number); -+ if (IS_ERR(ret)) { -+ pr_err("Failed to create device parport%d\n", -+ port->number); -+ return; -+ } -+ devices[port->number] = ret; - } - - static void pp_detach(struct parport *port) - { -+ if (!devices[port->number]) -+ return; -+ - device_destroy(ppdev_class, MKDEV(PP_MAJOR, port->number)); -+ devices[port->number] = NULL; - } - - static struct parport_driver pp_driver = { --- -2.12.0 - diff --git a/queue/ppdev-fix-registering-same-device-name.patch b/queue/ppdev-fix-registering-same-device-name.patch deleted file mode 100644 index ccc108b..0000000 --- a/queue/ppdev-fix-registering-same-device-name.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 9a69645dde1188723d80745c1bc6ee9af2cbe2a7 Mon Sep 17 00:00:00 2001 -From: Sudip Mukherjee <sudipm.mukherjee@gmail.com> -Date: Mon, 6 Mar 2017 23:23:43 +0000 -Subject: [PATCH] ppdev: fix registering same device name - -commit 9a69645dde1188723d80745c1bc6ee9af2cbe2a7 upstream. - -Usually every parallel port will have a single pardev registered with -it. But ppdev driver is an exception. This userspace parallel port -driver allows to create multiple parrallel port devices for a single -parallel port. And as a result we were having a big warning like: -"sysfs: cannot create duplicate filename '/devices/parport0/ppdev0.0'". -And with that many parallel port printers stopped working. - -We have been using the minor number as the id field while registering -a parralel port device with a parralel port. But when there are -multiple parrallel port device for one single parallel port, they all -tried to register with the same name like 'pardev0.0' and everything -started failing. -Use an incremented index as the id instead of the minor number. - -Fixes: 8b7d3a9d903e ("ppdev: use new parport device model") -Cc: stable <stable@vger.kernel.org> # v4.9+ -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1414656 -Bugzilla: https://bugs.archlinux.org/task/52322 -Tested-by: James Feeney <james@nurealm.net> -Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> - -diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c -index 2a558c706581..3e73bcdf9e65 100644 ---- a/drivers/char/ppdev.c -+++ b/drivers/char/ppdev.c -@@ -84,11 +84,14 @@ struct pp_struct { - struct ieee1284_info state; - struct ieee1284_info saved_state; - long default_inactivity; -+ int index; - }; - - /* should we use PARDEVICE_MAX here? */ - static struct device *devices[PARPORT_MAX]; - -+static DEFINE_IDA(ida_index); -+ - /* pp_struct.flags bitfields */ - #define PP_CLAIMED (1<<0) - #define PP_EXCL (1<<1) -@@ -290,7 +293,7 @@ static int register_device(int minor, struct pp_struct *pp) - struct pardevice *pdev = NULL; - char *name; - struct pardev_cb ppdev_cb; -- int rc = 0; -+ int rc = 0, index; - - name = kasprintf(GFP_KERNEL, CHRDEV "%x", minor); - if (name == NULL) -@@ -303,20 +306,23 @@ static int register_device(int minor, struct pp_struct *pp) - goto err; - } - -+ index = ida_simple_get(&ida_index, 0, 0, GFP_KERNEL); - memset(&ppdev_cb, 0, sizeof(ppdev_cb)); - ppdev_cb.irq_func = pp_irq; - ppdev_cb.flags = (pp->flags & PP_EXCL) ? PARPORT_FLAG_EXCL : 0; - ppdev_cb.private = pp; -- pdev = parport_register_dev_model(port, name, &ppdev_cb, minor); -+ pdev = parport_register_dev_model(port, name, &ppdev_cb, index); - parport_put_port(port); - - if (!pdev) { - pr_warn("%s: failed to register device!\n", name); - rc = -ENXIO; -+ ida_simple_remove(&ida_index, index); - goto err; - } - - pp->pdev = pdev; -+ pp->index = index; - dev_dbg(&pdev->dev, "registered pardevice\n"); - err: - kfree(name); -@@ -755,6 +761,7 @@ static int pp_release(struct inode *inode, struct file *file) - - if (pp->pdev) { - parport_unregister_device(pp->pdev); -+ ida_simple_remove(&ida_index, pp->index); - pp->pdev = NULL; - pr_debug(CHRDEV "%x: unregistered pardevice\n", minor); - } --- -2.12.0 - diff --git a/queue/series b/queue/series index 5e11090..c5f5331 100644 --- a/queue/series +++ b/queue/series @@ -1,5 +1,3 @@ -ppdev-check-before-attaching-port.patch -ppdev-fix-registering-same-device-name.patch drm-vmwgfx-Type-check-lookups-of-fence-objects.patch drm-vmwgfx-NULL-pointer-dereference-in-vmw_surface_d.patch drm-vmwgfx-avoid-calling-vzalloc-with-a-0-size-in-vm.patch @@ -24,7 +22,6 @@ Kbuild-use-cc-disable-warning-consistently-for-maybe.patch orangefs-move-features-validation-to-fix-filesystem-.patch xfs-Honor-FALLOC_FL_KEEP_SIZE-when-punching-ends-of-.patch ring-buffer-Fix-return-value-check-in-test_ringbuffe.patch -mac80211-unconditionally-start-new-netdev-queues-wit.patch brcmfmac-use-local-iftype-avoiding-use-after-free-of.patch metag-usercopy-Drop-unused-macros.patch metag-usercopy-Fix-alignment-error-checking.patch @@ -135,7 +132,6 @@ drm-i915-Avoid-tweaking-evaluation-thresholds-on-Bay.patch drm-i915-Only-enable-hotplug-interrupts-if-the-displ.patch drm-i915-Drop-support-for-I915_EXEC_CONSTANTS_-execb.patch drm-i915-Stop-using-RP_DOWN_EI-on-Baytrail.patch -drm-i915-Avoid-rcu_barrier-from-reclaim-paths-shrink.patch orangefs-fix-memory-leak-of-string-new-on-exit-path.patch orangefs-Dan-Carpenter-influenced-cleanups.patch orangefs-fix-buffer-size-mis-match-between-kernel-sp.patch @@ -170,19 +166,16 @@ zsmalloc-expand-class-bit.patch orangefs-free-superblock-when-mount-fails.patch drm-nouveau-mpeg-mthd-returns-true-on-success-now.patch drm-nouveau-mmu-nv4a-use-nv04-mmu-rather-than-the-nv.patch -drm-etnaviv-fix-missing-unlock-on-error-in-etnaviv_g.patch CIFS-reconnect-thread-reschedule-itself.patch CIFS-store-results-of-cifs_reopen_file-to-avoid-infi.patch Input-xpad-add-support-for-Razer-Wildcat-gamepad.patch perf-x86-Avoid-exposing-wrong-stale-data-in-intel_pm.patch -x86-efi-Don-t-try-to-reserve-runtime-regions.patch x86-signals-Fix-lower-upper-bound-reporting-in-compa.patch x86-pmem-fix-broken-__copy_user_nocache-cache-bypass.patch x86-vdso-Ensure-vdso32_enabled-gets-set-to-valid-val.patch x86-vdso-Plug-race-between-mapping-and-ELF-header-se.patch acpi-nfit-libnvdimm-fix-interleave-set-cookie-calcul.patch ACPI-scan-Set-the-visited-flag-for-all-enumerated-de.patch -parisc-fix-bugs-in-pa_memcpy.patch efi-libstub-Skip-GOP-with-PIXEL_BLT_ONLY-format.patch efi-fb-Avoid-reconfiguration-of-BAR-that-covers-the-.patch iscsi-target-Fix-TMR-reference-leak-during-session-s.patch @@ -199,7 +192,6 @@ libnvdimm-fix-blk-free-space-accounting.patch libnvdimm-fix-reconfig_mutex-mmap_sem-and-jbd2_handl.patch can-ifi-use-correct-register-to-read-rx-status.patch pwm-rockchip-State-of-PWM-clock-should-synchronize-w.patch -cpufreq-Bring-CPUs-up-even-if-cpufreq_online-failed.patch irqchip-irq-imx-gpcv2-Fix-spinlock-initialization.patch ftrace-Fix-removing-of-second-function-probe.patch char-lack-of-bool-string-made-CONFIG_DEVPORT-always-.patch @@ -209,7 +201,6 @@ zram-do-not-use-copy_page-with-non-page-aligned-addr.patch ftrace-Fix-function-pid-filter-on-instances.patch crypto-algif_aead-Fix-bogus-request-dereference-in-c.patch crypto-ahash-Fix-EINPROGRESS-notification-callback.patch -parisc-Fix-get_user-for-64-bit-value-on-32-bit-kerne.patch ath9k-fix-NULL-pointer-dereference.patch dvb-usb-v2-avoid-use-after-free.patch ext4-fix-inode-checksum-calculation-problem-if-i_ext.patch diff --git a/queue/x86-efi-Don-t-try-to-reserve-runtime-regions.patch b/queue/x86-efi-Don-t-try-to-reserve-runtime-regions.patch deleted file mode 100644 index 56d1a62..0000000 --- a/queue/x86-efi-Don-t-try-to-reserve-runtime-regions.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 6f6266a561306e206e0e31a5038f029b6a7b1d89 Mon Sep 17 00:00:00 2001 -From: Omar Sandoval <osandov@fb.com> -Date: Wed, 12 Apr 2017 16:27:19 +0100 -Subject: [PATCH] x86/efi: Don't try to reserve runtime regions - -commit 6f6266a561306e206e0e31a5038f029b6a7b1d89 upstream. - -Reserving a runtime region results in splitting the EFI memory -descriptors for the runtime region. This results in runtime region -descriptors with bogus memory mappings, leading to interesting crashes -like the following during a kexec: - - general protection fault: 0000 [#1] SMP - Modules linked in: - CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.11.0-rc1 #53 - Hardware name: Wiwynn Leopard-Orv2/Leopard-DDR BW, BIOS LBM05 09/30/2016 - RIP: 0010:virt_efi_set_variable() - ... - Call Trace: - efi_delete_dummy_variable() - efi_enter_virtual_mode() - start_kernel() - ? set_init_arg() - x86_64_start_reservations() - x86_64_start_kernel() - start_cpu() - ... - Kernel panic - not syncing: Fatal exception - -Runtime regions will not be freed and do not need to be reserved, so -skip the memmap modification in this case. - -Signed-off-by: Omar Sandoval <osandov@fb.com> -Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk> -Cc: <stable@vger.kernel.org> # v4.9+ -Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> -Cc: Dave Young <dyoung@redhat.com> -Cc: Linus Torvalds <torvalds@linux-foundation.org> -Cc: Peter Jones <pjones@redhat.com> -Cc: Peter Zijlstra <peterz@infradead.org> -Cc: Thomas Gleixner <tglx@linutronix.de> -Cc: linux-efi@vger.kernel.org -Fixes: 8e80632fb23f ("efi/esrt: Use efi_mem_reserve() and avoid a kmalloc()") -Link: http://lkml.kernel.org/r/20170412152719.9779-2-matt@codeblueprint.co.uk -Signed-off-by: Ingo Molnar <mingo@kernel.org> - -diff --git a/arch/x86/platform/efi/quirks.c b/arch/x86/platform/efi/quirks.c -index 30031d5293c4..cdfe8c628959 100644 ---- a/arch/x86/platform/efi/quirks.c -+++ b/arch/x86/platform/efi/quirks.c -@@ -201,6 +201,10 @@ void __init efi_arch_mem_reserve(phys_addr_t addr, u64 size) - return; - } - -+ /* No need to reserve regions that will never be freed. */ -+ if (md.attribute & EFI_MEMORY_RUNTIME) -+ return; -+ - size += addr % EFI_PAGE_SIZE; - size = round_up(size, EFI_PAGE_SIZE); - addr = round_down(addr, EFI_PAGE_SIZE); --- -2.12.0 - |