diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2020-09-28 15:01:22 +0200 |
---|---|---|
committer | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2020-09-28 15:01:22 +0200 |
commit | 9acf21829c9144f0546302dea0f25a532ffa5831 (patch) | |
tree | bf292b4da2fa5bd5d5abab855b74a20ecc0709fb | |
parent | b71e968e8948b6b360d0d7c5a94d84deb6a4eab6 (diff) | |
download | linux-rt-5.9-rc7-rt10-patches.tar.gz |
[ANNOUNCE] v5.9-rc7-rt10v5.9-rc7-rt10-patches
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-rw-r--r-- | patches/0003-mm-SLxB-change-list_lock-to-raw_spinlock_t.patch | 46 | ||||
-rw-r--r-- | patches/dax-Fix-compilation-for-CONFIG_DAX-CONFIG_FS_DAX.patch | 65 | ||||
-rw-r--r-- | patches/localversion.patch | 2 | ||||
-rw-r--r-- | patches/series | 6 | ||||
-rw-r--r-- | patches/softirq-disable-softirq-stacks-for-rt.patch | 2 | ||||
-rw-r--r-- | patches/tracing-Make-the-space-reserved-for-the-pid-wider.patch | 140 |
6 files changed, 25 insertions, 236 deletions
diff --git a/patches/0003-mm-SLxB-change-list_lock-to-raw_spinlock_t.patch b/patches/0003-mm-SLxB-change-list_lock-to-raw_spinlock_t.patch index 82cd6c71f40a..a6a691365822 100644 --- a/patches/0003-mm-SLxB-change-list_lock-to-raw_spinlock_t.patch +++ b/patches/0003-mm-SLxB-change-list_lock-to-raw_spinlock_t.patch @@ -150,7 +150,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> pr_warn(" node %d: slabs: %ld/%ld, objs: %ld/%ld\n", node, total_slabs - free_slabs, total_slabs, -@@ -2102,7 +2102,7 @@ static void check_spinlock_acquired(stru +@@ -2106,7 +2106,7 @@ static void check_spinlock_acquired(stru { #ifdef CONFIG_SMP check_irq_off(); @@ -159,7 +159,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> #endif } -@@ -2110,7 +2110,7 @@ static void check_spinlock_acquired_node +@@ -2114,7 +2114,7 @@ static void check_spinlock_acquired_node { #ifdef CONFIG_SMP check_irq_off(); @@ -168,7 +168,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> #endif } -@@ -2150,9 +2150,9 @@ static void do_drain(void *arg) +@@ -2154,9 +2154,9 @@ static void do_drain(void *arg) check_irq_off(); ac = cpu_cache_get(cachep); n = get_node(cachep, node); @@ -177,10 +177,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> free_block(cachep, ac->entry, ac->avail, node, &list); - spin_unlock(&n->list_lock); + raw_spin_unlock(&n->list_lock); - slabs_destroy(cachep, &list); ac->avail = 0; + slabs_destroy(cachep, &list); } -@@ -2170,9 +2170,9 @@ static void drain_cpu_caches(struct kmem +@@ -2174,9 +2174,9 @@ static void drain_cpu_caches(struct kmem drain_alien_cache(cachep, n->alien); for_each_kmem_cache_node(cachep, node, n) { @@ -192,7 +192,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> slabs_destroy(cachep, &list); } -@@ -2194,10 +2194,10 @@ static int drain_freelist(struct kmem_ca +@@ -2198,10 +2198,10 @@ static int drain_freelist(struct kmem_ca nr_freed = 0; while (nr_freed < tofree && !list_empty(&n->slabs_free)) { @@ -205,7 +205,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> goto out; } -@@ -2210,7 +2210,7 @@ static int drain_freelist(struct kmem_ca +@@ -2214,7 +2214,7 @@ static int drain_freelist(struct kmem_ca * to the cache. */ n->free_objects -= cache->num; @@ -214,7 +214,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> slab_destroy(cache, page); nr_freed++; } -@@ -2648,7 +2648,7 @@ static void cache_grow_end(struct kmem_c +@@ -2652,7 +2652,7 @@ static void cache_grow_end(struct kmem_c INIT_LIST_HEAD(&page->slab_list); n = get_node(cachep, page_to_nid(page)); @@ -223,7 +223,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> n->total_slabs++; if (!page->active) { list_add_tail(&page->slab_list, &n->slabs_free); -@@ -2658,7 +2658,7 @@ static void cache_grow_end(struct kmem_c +@@ -2662,7 +2662,7 @@ static void cache_grow_end(struct kmem_c STATS_INC_GROWN(cachep); n->free_objects += cachep->num - page->active; @@ -232,7 +232,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> fixup_objfreelist_debug(cachep, &list); } -@@ -2824,7 +2824,7 @@ static struct page *get_first_slab(struc +@@ -2828,7 +2828,7 @@ static struct page *get_first_slab(struc { struct page *page; @@ -241,7 +241,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> page = list_first_entry_or_null(&n->slabs_partial, struct page, slab_list); if (!page) { -@@ -2851,10 +2851,10 @@ static noinline void *cache_alloc_pfmema +@@ -2855,10 +2855,10 @@ static noinline void *cache_alloc_pfmema if (!gfp_pfmemalloc_allowed(flags)) return NULL; @@ -254,7 +254,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> return NULL; } -@@ -2863,7 +2863,7 @@ static noinline void *cache_alloc_pfmema +@@ -2867,7 +2867,7 @@ static noinline void *cache_alloc_pfmema fixup_slab_list(cachep, n, page, &list); @@ -263,7 +263,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> fixup_objfreelist_debug(cachep, &list); return obj; -@@ -2922,7 +2922,7 @@ static void *cache_alloc_refill(struct k +@@ -2926,7 +2926,7 @@ static void *cache_alloc_refill(struct k if (!n->free_objects && (!shared || !shared->avail)) goto direct_grow; @@ -272,7 +272,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> shared = READ_ONCE(n->shared); /* See if we can refill from the shared array */ -@@ -2946,7 +2946,7 @@ static void *cache_alloc_refill(struct k +@@ -2950,7 +2950,7 @@ static void *cache_alloc_refill(struct k must_grow: n->free_objects -= ac->avail; alloc_done: @@ -281,7 +281,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> fixup_objfreelist_debug(cachep, &list); direct_grow: -@@ -3171,7 +3171,7 @@ static void *____cache_alloc_node(struct +@@ -3175,7 +3175,7 @@ static void *____cache_alloc_node(struct BUG_ON(!n); check_irq_off(); @@ -290,7 +290,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> page = get_first_slab(n, false); if (!page) goto must_grow; -@@ -3189,12 +3189,12 @@ static void *____cache_alloc_node(struct +@@ -3193,12 +3193,12 @@ static void *____cache_alloc_node(struct fixup_slab_list(cachep, n, page, &list); @@ -305,7 +305,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> page = cache_grow_begin(cachep, gfp_exact_node(flags), nodeid); if (page) { /* This slab isn't counted yet so don't update free_objects */ -@@ -3372,7 +3372,7 @@ static void cache_flusharray(struct kmem +@@ -3376,7 +3376,7 @@ static void cache_flusharray(struct kmem check_irq_off(); n = get_node(cachep, node); @@ -314,16 +314,16 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> if (n->shared) { struct array_cache *shared_array = n->shared; int max = shared_array->limit - shared_array->avail; -@@ -3401,7 +3401,7 @@ static void cache_flusharray(struct kmem +@@ -3405,7 +3405,7 @@ static void cache_flusharray(struct kmem STATS_SET_FREEABLE(cachep, i); } #endif - spin_unlock(&n->list_lock); + raw_spin_unlock(&n->list_lock); - slabs_destroy(cachep, &list); ac->avail -= batchcount; memmove(ac->entry, &(ac->entry[batchcount]), sizeof(void *)*ac->avail); -@@ -3830,9 +3830,9 @@ static int do_tune_cpucache(struct kmem_ + slabs_destroy(cachep, &list); +@@ -3834,9 +3834,9 @@ static int do_tune_cpucache(struct kmem_ node = cpu_to_mem(cpu); n = get_node(cachep, node); @@ -335,7 +335,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> slabs_destroy(cachep, &list); } free_percpu(prev); -@@ -3927,9 +3927,9 @@ static void drain_array(struct kmem_cach +@@ -3931,9 +3931,9 @@ static void drain_array(struct kmem_cach return; } @@ -347,7 +347,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> slabs_destroy(cachep, &list); } -@@ -4013,7 +4013,7 @@ void get_slabinfo(struct kmem_cache *cac +@@ -4017,7 +4017,7 @@ void get_slabinfo(struct kmem_cache *cac for_each_kmem_cache_node(cachep, node, n) { check_irq_on(); @@ -356,7 +356,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> total_slabs += n->total_slabs; free_slabs += n->free_slabs; -@@ -4022,7 +4022,7 @@ void get_slabinfo(struct kmem_cache *cac +@@ -4026,7 +4026,7 @@ void get_slabinfo(struct kmem_cache *cac if (n->shared) shared_avail += n->shared->avail; diff --git a/patches/dax-Fix-compilation-for-CONFIG_DAX-CONFIG_FS_DAX.patch b/patches/dax-Fix-compilation-for-CONFIG_DAX-CONFIG_FS_DAX.patch deleted file mode 100644 index d2f017c31633..000000000000 --- a/patches/dax-Fix-compilation-for-CONFIG_DAX-CONFIG_FS_DAX.patch +++ /dev/null @@ -1,65 +0,0 @@ -From: Jan Kara <jack@suse.cz> -Date: Mon, 21 Sep 2020 11:33:23 +0200 -Subject: [PATCH] dax: Fix compilation for CONFIG_DAX && !CONFIG_FS_DAX - -dax_supported() is defined whenever CONFIG_DAX is enabled. So dummy -implementation should be defined only in !CONFIG_DAX case, not in -!CONFIG_FS_DAX case. - -Fixes: e2ec51282545 ("dm: Call proper helper to determine dax support") -Cc: <stable@vger.kernel.org> -Reported-by: Geert Uytterhoeven <geert@linux-m68k.org> -Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org> -Signed-off-by: Jan Kara <jack@suse.cz> -Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> ---- - include/linux/dax.h | 17 ++++++++--------- - 1 file changed, 8 insertions(+), 9 deletions(-) - ---- a/include/linux/dax.h -+++ b/include/linux/dax.h -@@ -58,6 +58,8 @@ static inline void set_dax_synchronous(s - { - __set_dax_synchronous(dax_dev); - } -+bool dax_supported(struct dax_device *dax_dev, struct block_device *bdev, -+ int blocksize, sector_t start, sector_t len); - /* - * Check if given mapping is supported by the file / underlying device. - */ -@@ -104,6 +106,12 @@ static inline bool dax_synchronous(struc - static inline void set_dax_synchronous(struct dax_device *dax_dev) - { - } -+static inline bool dax_supported(struct dax_device *dax_dev, -+ struct block_device *bdev, int blocksize, sector_t start, -+ sector_t len) -+{ -+ return false; -+} - static inline bool daxdev_mapping_supported(struct vm_area_struct *vma, - struct dax_device *dax_dev) - { -@@ -130,8 +138,6 @@ static inline bool generic_fsdax_support - return __generic_fsdax_supported(dax_dev, bdev, blocksize, start, - sectors); - } --bool dax_supported(struct dax_device *dax_dev, struct block_device *bdev, -- int blocksize, sector_t start, sector_t len); - - static inline void fs_put_dax(struct dax_device *dax_dev) - { -@@ -158,13 +164,6 @@ static inline bool generic_fsdax_support - { - return false; - } -- --static inline bool dax_supported(struct dax_device *dax_dev, -- struct block_device *bdev, int blocksize, sector_t start, -- sector_t len) --{ -- return false; --} - - static inline void fs_put_dax(struct dax_device *dax_dev) - { diff --git a/patches/localversion.patch b/patches/localversion.patch index 02952cda4bfa..e16fb07c0a7d 100644 --- a/patches/localversion.patch +++ b/patches/localversion.patch @@ -10,4 +10,4 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- /dev/null +++ b/localversion-rt @@ -0,0 +1 @@ -+-rt9 ++-rt10 diff --git a/patches/series b/patches/series index 0f88a46c87fa..8f4523f9455a 100644 --- a/patches/series +++ b/patches/series @@ -61,9 +61,6 @@ printk-fix-ifnullfree.cocci-warnings.patch # https://lkml.kernel.org/r/20200828100022.1099682-2-npiggin@gmail.com mm-fix-exec-activate_mm-vs-TLB-shootdown-and-lazy-tl.patch -# 20200921095035.GC5862@quack2.suse.cz -dax-Fix-compilation-for-CONFIG_DAX-CONFIG_FS_DAX.patch - ############################################################ # POSTED ############################################################ @@ -79,9 +76,6 @@ io_wq-Make-io_wqe-lock-a-raw_spinlock_t.patch # 20200915074816.52zphpywj4zidspk@linutronix.de bus-mhi-Remove-include-of-rwlock_types.h.patch -# 20200904082331.dcdkrr3bkn3e4qlg@linutronix.de -tracing-Make-the-space-reserved-for-the-pid-wider.patch - ############################################################ # Ready for posting ############################################################ diff --git a/patches/softirq-disable-softirq-stacks-for-rt.patch b/patches/softirq-disable-softirq-stacks-for-rt.patch index d99dd861c9d0..ef563bec28da 100644 --- a/patches/softirq-disable-softirq-stacks-for-rt.patch +++ b/patches/softirq-disable-softirq-stacks-for-rt.patch @@ -131,7 +131,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> +#ifndef CONFIG_PREEMPT_RT void do_softirq_own_stack(void) { - run_on_irqstack_cond(__do_softirq, NULL, NULL); + run_on_irqstack_cond(__do_softirq, NULL); } +#endif --- a/include/linux/interrupt.h diff --git a/patches/tracing-Make-the-space-reserved-for-the-pid-wider.patch b/patches/tracing-Make-the-space-reserved-for-the-pid-wider.patch deleted file mode 100644 index bbaf559ebebe..000000000000 --- a/patches/tracing-Make-the-space-reserved-for-the-pid-wider.patch +++ /dev/null @@ -1,140 +0,0 @@ -From 1acd6e3972d8f27403eb915f3bffa522f2965018 Mon Sep 17 00:00:00 2001 -From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> -Date: Mon, 21 Sep 2020 20:26:24 -0400 -Subject: [PATCH] tracing: Make the space reserved for the pid wider - -For 64bit CONFIG_BASE_SMALL=0 systems PID_MAX_LIMIT is set by default to -4194304. During boot the kernel sets a new value based on number of CPUs -but no lower than 32768. It is 1024 per CPU so with 128 CPUs the default -becomes 131072 which needs six digits. -This value can be increased during run time but must not exceed the -initial upper limit. - -Systemd sometime after v241 sets it to the upper limit during boot. The -result is that when the pid exceeds five digits, the trace output is a -little hard to read because it is no longer properly padded (same like -on big iron with 98+ CPUs). - -Increase the pid padding to seven digits. - -Link: https://lkml.kernel.org/r/20200904082331.dcdkrr3bkn3e4qlg@linutronix.de - -Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> -Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> -Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> ---- - kernel/trace/trace.c | 38 +++++++++++++++++++------------------- - kernel/trace/trace_output.c | 12 ++++++------ - 2 files changed, 25 insertions(+), 25 deletions(-) - ---- a/kernel/trace/trace.c -+++ b/kernel/trace/trace.c -@@ -3782,14 +3782,14 @@ unsigned long trace_total_entries(struct - - static void print_lat_help_header(struct seq_file *m) - { -- seq_puts(m, "# _------=> CPU# \n" -- "# / _-----=> irqs-off \n" -- "# | / _----=> need-resched \n" -- "# || / _---=> hardirq/softirq \n" -- "# ||| / _--=> preempt-depth \n" -- "# |||| / delay \n" -- "# cmd pid ||||| time | caller \n" -- "# \\ / ||||| \\ | / \n"); -+ seq_puts(m, "# _------=> CPU# \n" -+ "# / _-----=> irqs-off \n" -+ "# | / _----=> need-resched \n" -+ "# || / _---=> hardirq/softirq \n" -+ "# ||| / _--=> preempt-depth \n" -+ "# |||| / delay \n" -+ "# cmd pid ||||| time | caller \n" -+ "# \\ / ||||| \\ | / \n"); - } - - static void print_event_info(struct array_buffer *buf, struct seq_file *m) -@@ -3810,26 +3810,26 @@ static void print_func_help_header(struc - - print_event_info(buf, m); - -- seq_printf(m, "# TASK-PID %s CPU# TIMESTAMP FUNCTION\n", tgid ? "TGID " : ""); -- seq_printf(m, "# | | %s | | |\n", tgid ? " | " : ""); -+ seq_printf(m, "# TASK-PID %s CPU# TIMESTAMP FUNCTION\n", tgid ? " TGID " : ""); -+ seq_printf(m, "# | | %s | | |\n", tgid ? " | " : ""); - } - - static void print_func_help_header_irq(struct array_buffer *buf, struct seq_file *m, - unsigned int flags) - { - bool tgid = flags & TRACE_ITER_RECORD_TGID; -- const char *space = " "; -- int prec = tgid ? 10 : 2; -+ const char *space = " "; -+ int prec = tgid ? 12 : 2; - - print_event_info(buf, m); - -- seq_printf(m, "# %.*s _-----=> irqs-off\n", prec, space); -- seq_printf(m, "# %.*s / _----=> need-resched\n", prec, space); -- seq_printf(m, "# %.*s| / _---=> hardirq/softirq\n", prec, space); -- seq_printf(m, "# %.*s|| / _--=> preempt-depth\n", prec, space); -- seq_printf(m, "# %.*s||| / delay\n", prec, space); -- seq_printf(m, "# TASK-PID %.*sCPU# |||| TIMESTAMP FUNCTION\n", prec, " TGID "); -- seq_printf(m, "# | | %.*s | |||| | |\n", prec, " | "); -+ seq_printf(m, "# %.*s _-----=> irqs-off\n", prec, space); -+ seq_printf(m, "# %.*s / _----=> need-resched\n", prec, space); -+ seq_printf(m, "# %.*s| / _---=> hardirq/softirq\n", prec, space); -+ seq_printf(m, "# %.*s|| / _--=> preempt-depth\n", prec, space); -+ seq_printf(m, "# %.*s||| / delay\n", prec, space); -+ seq_printf(m, "# TASK-PID %.*s CPU# |||| TIMESTAMP FUNCTION\n", prec, " TGID "); -+ seq_printf(m, "# | | %.*s | |||| | |\n", prec, " | "); - } - - void ---- a/kernel/trace/trace_output.c -+++ b/kernel/trace/trace_output.c -@@ -497,7 +497,7 @@ lat_print_generic(struct trace_seq *s, s - - trace_find_cmdline(entry->pid, comm); - -- trace_seq_printf(s, "%8.8s-%-5d %3d", -+ trace_seq_printf(s, "%8.8s-%-7d %3d", - comm, entry->pid, cpu); - - return trace_print_lat_fmt(s, entry); -@@ -588,15 +588,15 @@ int trace_print_context(struct trace_ite - - trace_find_cmdline(entry->pid, comm); - -- trace_seq_printf(s, "%16s-%-5d ", comm, entry->pid); -+ trace_seq_printf(s, "%16s-%-7d ", comm, entry->pid); - - if (tr->trace_flags & TRACE_ITER_RECORD_TGID) { - unsigned int tgid = trace_find_tgid(entry->pid); - - if (!tgid) -- trace_seq_printf(s, "(-----) "); -+ trace_seq_printf(s, "(-------) "); - else -- trace_seq_printf(s, "(%5d) ", tgid); -+ trace_seq_printf(s, "(%7d) ", tgid); - } - - trace_seq_printf(s, "[%03d] ", iter->cpu); -@@ -636,7 +636,7 @@ int trace_print_lat_context(struct trace - trace_find_cmdline(entry->pid, comm); - - trace_seq_printf( -- s, "%16s %5d %3d %d %08x %08lx ", -+ s, "%16s %7d %3d %d %08x %08lx ", - comm, entry->pid, iter->cpu, entry->flags, - entry->preempt_count, iter->idx); - } else { -@@ -917,7 +917,7 @@ static enum print_line_t trace_ctxwake_p - S = task_index_to_char(field->prev_state); - trace_find_cmdline(field->next_pid, comm); - trace_seq_printf(&iter->seq, -- " %5d:%3d:%c %s [%03d] %5d:%3d:%c %s\n", -+ " %7d:%3d:%c %s [%03d] %7d:%3d:%c %s\n", - field->prev_pid, - field->prev_prio, - S, delim, |