From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> To: linux-kernel@vger.kernel.org Cc: Peter Zijlstra <peterz@infradead.org>, Ingo Molnar <mingo@redhat.com>, rt@linutronix.de, Sebastian Andrzej Siewior <bigeasy@linutronix.de>, Christoph Lameter <cl@linux.com>, Pekka Enberg <penberg@kernel.org>, David Rientjes <rientjes@google.com>, Joonsoo Kim <iamjoonsoo.kim@lge.com>, Andrew Morton <akpm@linux-foundation.org>, linux-mm@kvack.org Subject: [PATCH 04/16] slub: Convert to hotplug state machine Date: Thu, 18 Aug 2016 14:57:19 +0200 [thread overview] Message-ID: <20160818125731.27256-5-bigeasy@linutronix.de> (raw) In-Reply-To: <20160818125731.27256-1-bigeasy@linutronix.de> Install the callbacks via the state machine. Cc: Christoph Lameter <cl@linux.com> Cc: Pekka Enberg <penberg@kernel.org> Cc: David Rientjes <rientjes@google.com> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: linux-mm@kvack.org Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- include/linux/cpuhotplug.h | 1 + mm/slub.c | 65 +++++++++++++++------------------------------- 2 files changed, 22 insertions(+), 44 deletions(-) diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h index c2cf14953abc..82ee32107dff 100644 --- a/include/linux/cpuhotplug.h +++ b/include/linux/cpuhotplug.h @@ -15,6 +15,7 @@ enum cpuhp_state { CPUHP_X86_HPET_DEAD, CPUHP_X86_APB_DEAD, CPUHP_VIRT_NET_DEAD, + CPUHP_SLUB_DEAD, CPUHP_WORKQUEUE_PREP, CPUHP_POWER_NUMA_PREPARE, CPUHP_HRTIMERS_PREPARE, diff --git a/mm/slub.c b/mm/slub.c index 30e5a0f0e191..1db4d5304ceb 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -194,10 +194,6 @@ static inline bool kmem_cache_has_cpu_partial(struct kmem_cache *s) #define __OBJECT_POISON 0x80000000UL /* Poison object */ #define __CMPXCHG_DOUBLE 0x40000000UL /* Use cmpxchg_double */ -#ifdef CONFIG_SMP -static struct notifier_block slab_notifier; -#endif - /* * Tracking user of a slab. */ @@ -2288,6 +2284,25 @@ static void flush_all(struct kmem_cache *s) } /* + * Use the cpu notifier to insure that the cpu slabs are flushed when + * necessary. + */ +static int slub_cpu_dead(unsigned int cpu) +{ + struct kmem_cache *s; + unsigned long flags; + + mutex_lock(&slab_mutex); + list_for_each_entry(s, &slab_caches, list) { + local_irq_save(flags); + __flush_cpu_slab(s, cpu); + local_irq_restore(flags); + } + mutex_unlock(&slab_mutex); + return 0; +} + +/* * Check if the objects in a per cpu structure fit numa * locality expectations. */ @@ -4127,9 +4142,8 @@ void __init kmem_cache_init(void) /* Setup random freelists for each cache */ init_freelist_randomization(); -#ifdef CONFIG_SMP - register_cpu_notifier(&slab_notifier); -#endif + cpuhp_setup_state_nocalls(CPUHP_SLUB_DEAD, "SLUB_DEAD", NULL, + slub_cpu_dead); pr_info("SLUB: HWalign=%d, Order=%d-%d, MinObjects=%d, CPUs=%d, Nodes=%d\n", cache_line_size(), @@ -4193,43 +4207,6 @@ int __kmem_cache_create(struct kmem_cache *s, unsigned long flags) return err; } -#ifdef CONFIG_SMP -/* - * Use the cpu notifier to insure that the cpu slabs are flushed when - * necessary. - */ -static int slab_cpuup_callback(struct notifier_block *nfb, - unsigned long action, void *hcpu) -{ - long cpu = (long)hcpu; - struct kmem_cache *s; - unsigned long flags; - - switch (action) { - case CPU_UP_CANCELED: - case CPU_UP_CANCELED_FROZEN: - case CPU_DEAD: - case CPU_DEAD_FROZEN: - mutex_lock(&slab_mutex); - list_for_each_entry(s, &slab_caches, list) { - local_irq_save(flags); - __flush_cpu_slab(s, cpu); - local_irq_restore(flags); - } - mutex_unlock(&slab_mutex); - break; - default: - break; - } - return NOTIFY_OK; -} - -static struct notifier_block slab_notifier = { - .notifier_call = slab_cpuup_callback -}; - -#endif - void *__kmalloc_track_caller(size_t size, gfp_t gfpflags, unsigned long caller) { struct kmem_cache *s; -- 2.9.3
WARNING: multiple messages have this Message-ID (diff)
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> To: linux-kernel@vger.kernel.org Cc: Peter Zijlstra <peterz@infradead.org>, Ingo Molnar <mingo@redhat.com>, rt@linutronix.de, Sebastian Andrzej Siewior <bigeasy@linutronix.de>, Christoph Lameter <cl@linux.com>, Pekka Enberg <penberg@kernel.org>, David Rientjes <rientjes@google.com>, Joonsoo Kim <iamjoonsoo.kim@lge.com>, Andrew Morton <akpm@linux-foundation.org>, linux-mm@kvack.org Subject: [PATCH 04/16] slub: Convert to hotplug state machine Date: Thu, 18 Aug 2016 14:57:19 +0200 [thread overview] Message-ID: <20160818125731.27256-5-bigeasy@linutronix.de> (raw) In-Reply-To: <20160818125731.27256-1-bigeasy@linutronix.de> Install the callbacks via the state machine. Cc: Christoph Lameter <cl@linux.com> Cc: Pekka Enberg <penberg@kernel.org> Cc: David Rientjes <rientjes@google.com> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: linux-mm@kvack.org Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- include/linux/cpuhotplug.h | 1 + mm/slub.c | 65 +++++++++++++++------------------------------- 2 files changed, 22 insertions(+), 44 deletions(-) diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h index c2cf14953abc..82ee32107dff 100644 --- a/include/linux/cpuhotplug.h +++ b/include/linux/cpuhotplug.h @@ -15,6 +15,7 @@ enum cpuhp_state { CPUHP_X86_HPET_DEAD, CPUHP_X86_APB_DEAD, CPUHP_VIRT_NET_DEAD, + CPUHP_SLUB_DEAD, CPUHP_WORKQUEUE_PREP, CPUHP_POWER_NUMA_PREPARE, CPUHP_HRTIMERS_PREPARE, diff --git a/mm/slub.c b/mm/slub.c index 30e5a0f0e191..1db4d5304ceb 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -194,10 +194,6 @@ static inline bool kmem_cache_has_cpu_partial(struct kmem_cache *s) #define __OBJECT_POISON 0x80000000UL /* Poison object */ #define __CMPXCHG_DOUBLE 0x40000000UL /* Use cmpxchg_double */ -#ifdef CONFIG_SMP -static struct notifier_block slab_notifier; -#endif - /* * Tracking user of a slab. */ @@ -2288,6 +2284,25 @@ static void flush_all(struct kmem_cache *s) } /* + * Use the cpu notifier to insure that the cpu slabs are flushed when + * necessary. + */ +static int slub_cpu_dead(unsigned int cpu) +{ + struct kmem_cache *s; + unsigned long flags; + + mutex_lock(&slab_mutex); + list_for_each_entry(s, &slab_caches, list) { + local_irq_save(flags); + __flush_cpu_slab(s, cpu); + local_irq_restore(flags); + } + mutex_unlock(&slab_mutex); + return 0; +} + +/* * Check if the objects in a per cpu structure fit numa * locality expectations. */ @@ -4127,9 +4142,8 @@ void __init kmem_cache_init(void) /* Setup random freelists for each cache */ init_freelist_randomization(); -#ifdef CONFIG_SMP - register_cpu_notifier(&slab_notifier); -#endif + cpuhp_setup_state_nocalls(CPUHP_SLUB_DEAD, "SLUB_DEAD", NULL, + slub_cpu_dead); pr_info("SLUB: HWalign=%d, Order=%d-%d, MinObjects=%d, CPUs=%d, Nodes=%d\n", cache_line_size(), @@ -4193,43 +4207,6 @@ int __kmem_cache_create(struct kmem_cache *s, unsigned long flags) return err; } -#ifdef CONFIG_SMP -/* - * Use the cpu notifier to insure that the cpu slabs are flushed when - * necessary. - */ -static int slab_cpuup_callback(struct notifier_block *nfb, - unsigned long action, void *hcpu) -{ - long cpu = (long)hcpu; - struct kmem_cache *s; - unsigned long flags; - - switch (action) { - case CPU_UP_CANCELED: - case CPU_UP_CANCELED_FROZEN: - case CPU_DEAD: - case CPU_DEAD_FROZEN: - mutex_lock(&slab_mutex); - list_for_each_entry(s, &slab_caches, list) { - local_irq_save(flags); - __flush_cpu_slab(s, cpu); - local_irq_restore(flags); - } - mutex_unlock(&slab_mutex); - break; - default: - break; - } - return NOTIFY_OK; -} - -static struct notifier_block slab_notifier = { - .notifier_call = slab_cpuup_callback -}; - -#endif - void *__kmalloc_track_caller(size_t size, gfp_t gfpflags, unsigned long caller) { struct kmem_cache *s; -- 2.9.3 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2016-08-18 13:01 UTC|newest] Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-08-18 12:57 cpu hotplug: convert more drivers Sebastian Andrzej Siewior 2016-08-18 12:57 ` [PATCH 01/16] cpuhotplug: Remove CPU_STARTING and CPU_DYING notifier Sebastian Andrzej Siewior 2016-09-06 15:19 ` [tip:smp/hotplug] cpu/hotplug: " tip-bot for Thomas Gleixner 2016-09-06 16:37 ` tip-bot for Thomas Gleixner 2016-08-18 12:57 ` [PATCH 02/16] relayfs: Convert to hotplug state machine Sebastian Andrzej Siewior 2016-09-06 15:20 ` [tip:smp/hotplug] " tip-bot for Richard Weinberger 2016-09-06 16:38 ` tip-bot for Richard Weinberger 2016-08-18 12:57 ` [PATCH 03/16] slab: " Sebastian Andrzej Siewior 2016-08-18 12:57 ` Sebastian Andrzej Siewior 2016-08-18 17:08 ` Sebastian Andrzej Siewior 2016-08-18 17:08 ` Sebastian Andrzej Siewior 2016-08-23 12:53 ` [PATCH 03/16 v2] " Sebastian Andrzej Siewior 2016-08-23 12:53 ` Sebastian Andrzej Siewior 2016-09-06 15:21 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior 2016-09-06 16:38 ` tip-bot for Sebastian Andrzej Siewior 2016-08-18 12:57 ` Sebastian Andrzej Siewior [this message] 2016-08-18 12:57 ` [PATCH 04/16] slub: " Sebastian Andrzej Siewior 2016-09-06 15:21 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior 2016-09-06 16:38 ` tip-bot for Sebastian Andrzej Siewior 2016-08-18 12:57 ` [PATCH 05/16] mm: writeback: " Sebastian Andrzej Siewior 2016-08-18 12:57 ` Sebastian Andrzej Siewior 2016-09-06 15:22 ` [tip:smp/hotplug] mm/writeback: " tip-bot for Sebastian Andrzej Siewior 2016-09-06 16:39 ` tip-bot for Sebastian Andrzej Siewior 2016-08-18 12:57 ` [PATCH 06/16] kernel: softirq: " Sebastian Andrzej Siewior 2016-09-06 15:22 ` [tip:smp/hotplug] kernel/softirq: " tip-bot for Sebastian Andrzej Siewior 2016-09-06 16:39 ` tip-bot for Sebastian Andrzej Siewior 2016-08-18 12:57 ` [PATCH 07/16] rcu: rcutorture: " Sebastian Andrzej Siewior 2016-08-18 16:20 ` Paul E. McKenney 2016-08-18 12:57 ` [PATCH 08/16] net: mvneta: " Sebastian Andrzej Siewior 2016-09-06 15:23 ` [tip:smp/hotplug] net/mvneta: " tip-bot for Sebastian Andrzej Siewior 2016-09-06 16:40 ` tip-bot for Sebastian Andrzej Siewior 2016-08-18 12:57 ` [PATCH 09/16] md: raid5: " Sebastian Andrzej Siewior 2016-09-06 15:23 ` [tip:smp/hotplug] md/raid5: " tip-bot for Sebastian Andrzej Siewior 2016-09-06 16:40 ` tip-bot for Sebastian Andrzej Siewior 2016-08-18 12:57 ` [PATCH 10/16] cpuidle: pseries: " Sebastian Andrzej Siewior 2016-08-22 16:09 ` Daniel Lezcano 2016-08-22 19:04 ` Sebastian Andrzej Siewior 2016-08-23 14:16 ` Daniel Lezcano 2016-08-23 16:32 ` Sebastian Andrzej Siewior 2016-08-24 9:09 ` [PATCH 10/16 v2] " Sebastian Andrzej Siewior 2016-09-06 15:24 ` [tip:smp/hotplug] cpuidle/pseries: " tip-bot for Sebastian Andrzej Siewior 2016-09-06 16:41 ` tip-bot for Sebastian Andrzej Siewior 2016-08-18 12:57 ` [PATCH 11/16] cpuidle: powernv: " Sebastian Andrzej Siewior 2016-08-24 9:12 ` Sebastian Andrzej Siewior 2016-09-06 15:24 ` [tip:smp/hotplug] cpuidle/powernv: " tip-bot for Sebastian Andrzej Siewior 2016-09-06 16:41 ` tip-bot for Sebastian Andrzej Siewior 2016-08-18 12:57 ` [PATCH 12/16] cpuidle: coupled: " Sebastian Andrzej Siewior 2016-08-23 14:24 ` Daniel Lezcano 2016-08-24 9:14 ` [PATCH 12/16 v2] " Sebastian Andrzej Siewior 2016-09-06 15:25 ` [tip:smp/hotplug] cpuidle/coupled: " tip-bot for Sebastian Andrzej Siewior 2016-09-06 16:42 ` tip-bot for Sebastian Andrzej Siewior 2016-08-18 12:57 ` [PATCH 13/16] MIPS: BUS: CDMM: " Sebastian Andrzej Siewior 2016-09-06 15:25 ` [tip:smp/hotplug] MIPS/BUS/CDMM: " tip-bot for Sebastian Andrzej Siewior 2016-09-06 16:42 ` tip-bot for Sebastian Andrzej Siewior 2016-08-18 12:57 ` [PATCH 14/16] x86: kvm: " Sebastian Andrzej Siewior 2016-08-18 17:06 ` Paolo Bonzini 2016-09-06 15:25 ` [tip:smp/hotplug] x86/kvm: " tip-bot for Sebastian Andrzej Siewior 2016-09-06 16:43 ` tip-bot for Sebastian Andrzej Siewior 2016-08-18 12:57 ` [PATCH 15/16] powerpc: powermac: " Sebastian Andrzej Siewior 2016-09-06 15:26 ` [tip:smp/hotplug] powerpc/powermac: " tip-bot for Sebastian Andrzej Siewior 2016-09-06 16:43 ` tip-bot for Sebastian Andrzej Siewior 2016-08-18 12:57 ` [PATCH 16/16] powerpc: mmu nohash: " Sebastian Andrzej Siewior 2016-09-06 15:26 ` [tip:smp/hotplug] powerpc/mmu " tip-bot for Sebastian Andrzej Siewior 2016-09-06 16:44 ` tip-bot for Sebastian Andrzej Siewior 2016-08-18 13:40 ` cpu hotplug: convert more drivers Ingo Molnar
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20160818125731.27256-5-bigeasy@linutronix.de \ --to=bigeasy@linutronix.de \ --cc=akpm@linux-foundation.org \ --cc=cl@linux.com \ --cc=iamjoonsoo.kim@lge.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mingo@redhat.com \ --cc=penberg@kernel.org \ --cc=peterz@infradead.org \ --cc=rientjes@google.com \ --cc=rt@linutronix.de \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.