Hi Anders,
The following is the lsk 4.4 rt merge conflicts solution. Could you like give some comments?
Thanks Alex
commit 7b324954a4d9bbef9d6acd7c329f6e1289c1d7cb Merge: 319076f 59e65b4 Author: Alex Shi alex.shi@linaro.org Date: Tue Aug 30 10:51:05 2016 +0800
Merge branch 'linux-linaro-lsk-v4.4' into linux-linaro-lsk-v4.4-rt
Conflicts: drivers/gpu/drm/i915/i915_gem_shrinker.c add cpu_chill in fs/dcache.c select USERCOPY in SLAB init/Kconfig remove VM_DEBUG in irq disable mm/memcontrol.c
diff --cc arch/arm/Kconfig index 79c4603,51f1775..f1b6e04 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@@ -33,8 -33,9 +33,9 @@@ config AR select HARDIRQS_SW_RESEND select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 - select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 + select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && !PREEMPT_RT_BASE select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 + select HAVE_ARCH_HARDENED_USERCOPY select HAVE_ARCH_SECCOMP_FILTER if (AEABI && !OABI_COMPAT) select HAVE_ARCH_TRACEHOOK select HAVE_BPF_JIT diff --cc drivers/gpu/drm/i915/i915_gem_shrinker.c index 9686fa2,c0a96f1..deb1e20 --- a/drivers/gpu/drm/i915/i915_gem_shrinker.c +++ b/drivers/gpu/drm/i915/i915_gem_shrinker.c @@@ -39,7 -39,7 +39,7 @@@ static bool mutex_is_locked_by(struct m if (!mutex_is_locked(mutex)) return false;
- #if (defined(CONFIG_SMP) || defined(CONFIG_DEBUG_MUTEXES)) && !defined(CONFIG_PREEMPT_RT_BASE) -#if defined(CONFIG_DEBUG_MUTEXES) || defined(CONFIG_MUTEX_SPIN_ON_OWNER) ++#if (defined(CONFIG_DEBUG_MUTEXES) || defined(CONFIG_MUTEX_SPIN_ON_OWNER)) && !defined(CONFIG_PREEMPT_RT_BASE) return mutex->owner == task; #else /* Since UP may be pre-empted, we cannot assume that we own the lock */ diff --cc init/Kconfig index a7c81c0,e1d1d69..085811f --- a/init/Kconfig +++ b/init/Kconfig @@@ -1720,7 -1719,7 +1720,8 @@@ choic
config SLAB bool "SLAB" + depends on !PREEMPT_RT_FULL + select HAVE_HARDENED_USERCOPY_ALLOCATOR help The regular slab allocator that is established and known to work well in all environments. It organizes cache hot objects in diff --cc mm/memcontrol.c index 99d966d,6b90d18..582869f --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@@ -5676,9 -5751,8 +5757,9 @@@ subsys_initcall(mem_cgroup_init) */ void mem_cgroup_swapout(struct page *page, swp_entry_t entry) { - struct mem_cgroup *memcg; + struct mem_cgroup *memcg, *swap_memcg; unsigned short oldid; + unsigned long flags;
VM_BUG_ON_PAGE(PageLRU(page), page); VM_BUG_ON_PAGE(page_count(page), page); @@@ -5707,13 -5793,12 +5800,13 @@@ * important here to have the interrupts disabled because it is the * only synchronisation we have for udpating the per-CPU variables. */ - VM_BUG_ON(!irqs_disabled()); + local_lock_irqsave(event_lock, flags); - #ifndef CONFIG_PREEMPT_RT_BASE - VM_BUG_ON(!irqs_disabled()); - #endif mem_cgroup_charge_statistics(memcg, page, -1); memcg_check_events(memcg, page); + local_unlock_irqrestore(event_lock, flags); + + if (!mem_cgroup_is_root(memcg)) + css_put(&memcg->css); }
/**
linaro-kernel@lists.linaro.org