Linux 4.4.27-rt38-rc1
Subsystems (7)
Steven Rostedt
maintainercover Linux 4.4.27-rt38-rc1
Dear RT Folks,
This is the RT stable review cycle of patch 4.4.27-rt38-rc1.
Please scream at me if I messed something up. Please test the patches too.
The -rc release will be uploaded to kernel.org and will be deleted when the final release is out. This is just a review release (or release candidate).
The pre-releases will not be pushed to the git repository, only the final release is.
If all goes well, this patch will be converted to the next main release on 11/2/2016.
Enjoy,
-- Steve
To build 4.4.27-rt38-rc1 directly, the following patches should be applied:
http://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz
http://www.kernel.org/pub/linux/kernel/v4.x/patch-4.4.27.xz
http://www.kernel.org/pub/linux/kernel/projects/rt/4.4/patch-4.4.27-rt38-rc1.patch.xz
You can also build from 4.4.27-rt37 by applying the incremental patch:
http://www.kernel.org/pub/linux/kernel/projects/rt/4.4/incr/patch-4.4.27-rt37-rt38-rc1.patch.xz
Changes from 4.4.27-rt37:
---
Mike Galbraith (1):
ftrace: Fix trace header alignment
Sebastian Andrzej Siewior (4):
kernel/futex: don't deboost too early
zsmalloc: turn that get_cpu_light() into a local_lock() x86/apic: get rid of "warning: 'acpi_ioapic_lock' defined but not used"
kbuild: add -fno-PIE
Steven Rostedt (Red Hat) (1):
Linux 4.4.27-rt38-rc1
----
Makefile | 2 +- arch/x86/kernel/acpi/boot.c | 2 ++ include/linux/spinlock.h | 6 +++++ include/linux/spinlock_rt.h | 2 ++ kernel/futex.c | 2 +- kernel/locking/rtmutex.c | 53 +++++++++++++++++++++++++++++++++++++++------ kernel/trace/trace.c | 32 +++++++++++++-------------- localversion-rt | 2 +- mm/zsmalloc.c | 6 +++-- 9 files changed, 79 insertions(+), 28 deletions(-)
Steven Rostedt
maintainerPATCH 1/6 kernel/futex: dont deboost too early
4.4.27-rt38-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: Sebastian Andrzej Siewior <[email protected]>
The sequence:
T1 holds futex
T2 blocks on futex and boosts T1
T1 unlocks futex and holds hb->lock
T1 unlocks rt mutex, so T1 has no more pi waiters
T3 blocks on hb->lock and adds itself to the pi waiters list of T1 T1 unlocks hb->lock and deboosts itself
T4 preempts T1 so the wakeup of T2 gets delayed
As a workaround I attempt here do unlock the hb->lock without a deboost and perform the deboost after the wake up of the waiter.
--- include/linux/spinlock.h | 6 +++++ include/linux/spinlock_rt.h | 2 ++ kernel/futex.c | 2 +- kernel/locking/rtmutex.c | 53 +++++++++++++++++++++++++++++++++++++++------ 4 files changed, 55 insertions(+), 8 deletions(-)
include/linux/spinlock.h +6 -0
@@ -355,6 +355,12 @@ static __always_inline void spin_unlock(spinlock_t *lock)raw_spin_unlock (&lock->rlock); } +static __always_inline int spin_unlock_no_deboost(spinlock_t *lock) +{ +raw_spin_unlock (&lock->rlock); +return 0 ; +} + static __always_inline void spin_unlock_bh(spinlock_t *lock) {raw_spin_unlock_bh (&lock->rlock);
include/linux/spinlock_rt.h +2 -0
@@ -26,6 +26,7 @@ extern void __lockfunc rt_spin_lock(spinlock_t *lock);extern unsigned long __lockfunc rt_spin_lock_trace_flags (spinlock_t *lock); extern void __lockfunc rt_spin_lock_nested(spinlock_t *lock, int subclass); extern void __lockfunc rt_spin_unlock(spinlock_t *lock); +extern int __lockfunc rt_spin_unlock_no_deboost(spinlock_t *lock); extern void __lockfunc rt_spin_unlock_wait(spinlock_t *lock); extern int __lockfunc rt_spin_trylock_irqsave(spinlock_t *lock, unsigned long *flags); extern int __lockfunc rt_spin_trylock_bh(spinlock_t *lock);
@@ -112,6 +113,7 @@ static inline unsigned long spin_lock_trace_flags(spinlock_t *lock)#define spin_lock_nest_lock (lock, nest_lock) spin_lock_nested(lock, 0)#define spin_unlock (lock) rt_spin_unlock(lock) +#define spin_unlock_no_deboost (lock) rt_spin_unlock_no_deboost(lock)#define spin_unlock_bh (lock) \ do { \
kernel/futex.c +1 -1
@@ -1288,7 +1288,7 @@ static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_q *this,* deboost first (and lose our higher priority), then the task might get * scheduled away before the wake up can take place. */ -spin_unlock (&hb->lock); + deboost |=spin_unlock_no_deboost (&hb->lock);wake_up_q (&wake_q);wake_up_q_sleeper (&wake_sleeper_q);if (deboost)
kernel/locking/rtmutex.c +46 -7
85 lines not on this page · raw message
Signature · 1 line
2.9.3
Steven Rostedt
maintainerPATCH 2/6 ftrace: Fix trace header alignment
In reply to Steven Rostedt4.4.27-rt38-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: Mike Galbraith <[email protected]>
Line up helper arrows to the right column.
--- kernel/trace/trace.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-)
kernel/trace/trace.c +16 -16
@@ -2559,17 +2559,17 @@ get_total_entries(struct trace_buffer *buf,static void print_lat_help_header (struct seq_file *m) { -seq_puts (m,"# _--------=> CPU# \n" -"# / _-------=> irqs-off \n" -"# | / _------=> need-resched \n" -"# || / _-----=> need-resched_lazy \n" -"# ||| / _----=> hardirq/softirq \n" -"# |||| / _---=> preempt-depth \n" -"# ||||| / _--=> preempt-lazy-depth\n" -"# |||||| / _-=> migrate-disable \n" -"# ||||||| / delay \n" -"# cmd pid |||||||| time | caller \n" -"# \\ / |||||||| \\ | / \n" ); +seq_puts (m,"# _--------=> CPU# \n" +"# / _-------=> irqs-off \n" +"# | / _------=> need-resched \n" +"# || / _-----=> need-resched_lazy \n" +"# ||| / _----=> hardirq/softirq \n" +"# |||| / _---=> preempt-depth \n" +"# ||||| / _--=> preempt-lazy-depth\n" +"# |||||| / _-=> migrate-disable \n" +"# ||||||| / delay \n" +"# cmd pid |||||||| time | caller \n" +"# \\ / |||||||| \\ | / \n" ); }static void print_event_info (struct trace_buffer *buf,struct seq_file *m)
@@ -2598,11 +2598,11 @@ static void print_func_help_header_irq(struct trace_buffer *buf, struct seq_file"# |/ _-----=> need-resched_lazy\n" "# || / _---=> hardirq/softirq\n" "# ||| / _--=> preempt-depth\n" -"# |||| /_--=> preempt-lazy-depth\n" -"# ||||| _-=> migrate-disable \n" -"# ||||| / delay\n" -"# TASK-PID CPU# |||||| TIMESTAMP FUNCTION\n" - "# | | | |||||| | |\n"); +"# |||| / _-=> preempt-lazy-depth\n" +"# ||||| / _-=> migrate-disable \n" +"# |||||| / delay\n" +"# TASK-PID CPU# ||||||| TIMESTAMP FUNCTION\n" + "# | | | ||||||| | |\n"); }void
Signature · 1 line
2.9.3
Steven Rostedt
maintainerPATCH 3/6 zsmalloc: turn that get_cpu_light() into a local_lock()
In reply to Steven Rostedt4.4.27-rt38-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: Sebastian Andrzej Siewior <[email protected]>
We might get preempted, grab the same ressource again and then corrupt the memory.
--- mm/zsmalloc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
mm/zsmalloc.c +4 -2
@@ -64,6 +64,7 @@#include <linux/debugfs.h> #include <linux/zsmalloc.h> #include <linux/zpool.h> +#include <linux/locallock.h> /* * This must be power of 2 and greater than of equal to sizeof(link_free).
@@ -403,6 +404,7 @@ static unsigned int get_maxobj_per_zspage(int size, int pages_per_zspage)/* per-cpu VM mapping areas for zspage accesses that cross page boundaries */ static DEFINE_PER_CPU(struct mapping_area, zs_map_area); +static DEFINE_LOCAL_IRQ_LOCK (zs_map_area_lock);static int is_first_page (struct page *page) {
@@ -1289,7 +1291,7 @@ void *zs_map_object(struct zs_pool *pool, unsigned long handle, class = pool->size_class[class_idx]; off =obj_idx_to_offset (page, obj_idx, class->size); - area =per_cpu_ptr (&zs_map_area,get_cpu_light ()); + area = &get_locked_var (zs_map_area_lock, zs_map_area); area->vm_mm = mm;if (off + class->size <=PAGE_SIZE ) {/* this object is contained entirely within a page */
@@ -1342,7 +1344,7 @@ void zs_unmap_object(struct zs_pool *pool, unsigned long handle)__zs_unmap_object (area, pages, off, class->size); } -put_cpu_light (); +put_locked_var (zs_map_area_lock, zs_map_area);unpin_tag (handle); }EXPORT_SYMBOL_GPL (zs_unmap_object);
Signature · 1 line
2.9.3
Steven Rostedt
maintainerPATCH 4/6 x86/apic: get rid of "warning: acpi_ioapic_lock defined but not used"
In reply to Steven Rostedt4.4.27-rt38-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: Sebastian Andrzej Siewior <[email protected]>
kbuild test robot reported this against the -RT tree:
| In file included from include/linux/mutex.h:30:0,
| from include/linux/notifier.h:13,
| from include/linux/memory_hotplug.h:6,
| from include/linux/mmzone.h:777,
| from include/linux/gfp.h:5,
| from include/linux/slab.h:14,
| from include/linux/resource_ext.h:19,
| from include/linux/acpi.h:26,
| from arch/x86/kernel/acpi/boot.c:27:
|>> arch/x86/kernel/acpi/boot.c:90:21: warning: 'acpi_ioapic_lock' defined but not used [-Wunused-variable]
| static DEFINE_MUTEX(acpi_ioapic_lock);
| ^
| include/linux/mutex_rt.h:27:15: note: in definition of macro 'DEFINE_MUTEX'
| struct mutex mutexname = __MUTEX_INITIALIZER(mutexname)
^~~~~~~~~which is also true (as in non-used) for !RT but the compiler does not emit a warning.
--- arch/x86/kernel/acpi/boot.c | 2 ++ 1 file changed, 2 insertions(+)
arch/x86/kernel/acpi/boot.c +2 -0
@@ -87,7 +87,9 @@ static u64 acpi_lapic_addr __initdata = APIC_DEFAULT_PHYS_BASE;* ->ioapic_mutex * ->ioapic_lock */ +#ifdef CONFIG_X86_IO_APIC static DEFINE_MUTEX (acpi_ioapic_lock); +#endif /* -------------------------------------------------------------------------- Boot-time Configuration
Signature · 1 line
2.9.3
Steven Rostedt
maintainerPATCH 5/6 kbuild: add -fno-PIE
In reply to Steven Rostedt4.4.27-rt38-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: Sebastian Andrzej Siewior <[email protected]>
Debian started to build the gcc with -fPIE by default so the kernel build ends before it starts properly with:
|kernel/bounds.c:1:0: error: code model kernel does not support PIC mode
--- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Makefile +1 -1
@@ -394,7 +394,7 @@ KBUILD_CPPFLAGS := -D__KERNEL__ KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ -fno-strict-aliasing -fno-common \ -Werror-implicit-function-declaration \ - -Wno-format-security \ + -Wno-format-security -fno-PIE \ -std=gnu89 KBUILD_AFLAGS_KERNEL :=
Signature · 1 line
2.9.3
Steven Rostedt
maintainerPATCH 6/6 Linux 4.4.27-rt38-rc1
In reply to Steven Rostedt4.4.27-rt38-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: "Steven Rostedt (Red Hat)" <[email protected]>
--- localversion-rt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
localversion-rt +1 -1
@@ -1 +1 @@ --rt37 +-rt38-rc1
Signature · 1 line
2.9.3