From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> To: linux-kernel@vger.kernel.org Cc: rt@linutronix.de, tglx@linutronix.de, Sebastian Andrzej Siewior <bigeasy@linutronix.de>, Seth Jennings <sjenning@redhat.com>, linux-mm@kvack.org Subject: [PATCH 12/22] mm/zswap: Convert pool to hotplug state machine Date: Sun, 27 Nov 2016 00:13:40 +0100 [thread overview] Message-ID: <20161126231350.10321-13-bigeasy@linutronix.de> (raw) In-Reply-To: <20161126231350.10321-1-bigeasy@linutronix.de> Install the callbacks via the state machine. Multi state is used to address the per-pool notifier. Uppon adding of the intance the callback is invoked for all online CPUs so the manual init can go. Cc: Seth Jennings <sjenning@redhat.com> Cc: linux-mm@kvack.org Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- include/linux/cpuhotplug.h | 1 + mm/zswap.c | 99 ++++++++++++++++------------------------------ 2 files changed, 35 insertions(+), 65 deletions(-) diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h index 62f51a4e8676..c7d0d76ef0ee 100644 --- a/include/linux/cpuhotplug.h +++ b/include/linux/cpuhotplug.h @@ -66,6 +66,7 @@ enum cpuhp_state { CPUHP_TRACE_RB_PREPARE, CPUHP_MM_ZS_PREPARE, CPUHP_MM_ZSWP_MEM_PREPARE, + CPUHP_MM_ZSWP_POOL_PREPARE, CPUHP_TIMERS_DEAD, CPUHP_NOTF_ERR_INJ_PREPARE, CPUHP_MIPS_SOC_PREPARE, diff --git a/mm/zswap.c b/mm/zswap.c index b13aa5706348..067a0d62f318 100644 --- a/mm/zswap.c +++ b/mm/zswap.c @@ -118,7 +118,7 @@ struct zswap_pool { struct kref kref; struct list_head list; struct work_struct work; - struct notifier_block notifier; + struct hlist_node node; char tfm_name[CRYPTO_MAX_ALG_NAME]; }; @@ -376,77 +376,34 @@ static int zswap_dstmem_dead(unsigned int cpu) return 0; } -static int __zswap_cpu_comp_notifier(struct zswap_pool *pool, - unsigned long action, unsigned long cpu) +static int zswap_cpu_comp_prepare(unsigned int cpu, struct hlist_node *node) { + struct zswap_pool *pool = hlist_entry(node, struct zswap_pool, node); struct crypto_comp *tfm; - switch (action) { - case CPU_UP_PREPARE: - if (WARN_ON(*per_cpu_ptr(pool->tfm, cpu))) - break; - tfm = crypto_alloc_comp(pool->tfm_name, 0, 0); - if (IS_ERR_OR_NULL(tfm)) { - pr_err("could not alloc crypto comp %s : %ld\n", - pool->tfm_name, PTR_ERR(tfm)); - return NOTIFY_BAD; - } - *per_cpu_ptr(pool->tfm, cpu) = tfm; - break; - case CPU_DEAD: - case CPU_UP_CANCELED: - tfm = *per_cpu_ptr(pool->tfm, cpu); - if (!IS_ERR_OR_NULL(tfm)) - crypto_free_comp(tfm); - *per_cpu_ptr(pool->tfm, cpu) = NULL; - break; - default: - break; + if (WARN_ON(*per_cpu_ptr(pool->tfm, cpu))) + return 0; + + tfm = crypto_alloc_comp(pool->tfm_name, 0, 0); + if (IS_ERR_OR_NULL(tfm)) { + pr_err("could not alloc crypto comp %s : %ld\n", + pool->tfm_name, PTR_ERR(tfm)); + return -ENOMEM; } - return NOTIFY_OK; -} - -static int zswap_cpu_comp_notifier(struct notifier_block *nb, - unsigned long action, void *pcpu) -{ - unsigned long cpu = (unsigned long)pcpu; - struct zswap_pool *pool = container_of(nb, typeof(*pool), notifier); - - return __zswap_cpu_comp_notifier(pool, action, cpu); -} - -static int zswap_cpu_comp_init(struct zswap_pool *pool) -{ - unsigned long cpu; - - memset(&pool->notifier, 0, sizeof(pool->notifier)); - pool->notifier.notifier_call = zswap_cpu_comp_notifier; - - cpu_notifier_register_begin(); - for_each_online_cpu(cpu) - if (__zswap_cpu_comp_notifier(pool, CPU_UP_PREPARE, cpu) == - NOTIFY_BAD) - goto cleanup; - __register_cpu_notifier(&pool->notifier); - cpu_notifier_register_done(); + *per_cpu_ptr(pool->tfm, cpu) = tfm; return 0; - -cleanup: - for_each_online_cpu(cpu) - __zswap_cpu_comp_notifier(pool, CPU_UP_CANCELED, cpu); - cpu_notifier_register_done(); - return -ENOMEM; } -static void zswap_cpu_comp_destroy(struct zswap_pool *pool) +static int zswap_cpu_comp_dead(unsigned int cpu, struct hlist_node *node) { - unsigned long cpu; + struct zswap_pool *pool = hlist_entry(node, struct zswap_pool, node); + struct crypto_comp *tfm; - cpu_notifier_register_begin(); - for_each_online_cpu(cpu) - __zswap_cpu_comp_notifier(pool, CPU_UP_CANCELED, cpu); - __unregister_cpu_notifier(&pool->notifier); - cpu_notifier_register_done(); + tfm = *per_cpu_ptr(pool->tfm, cpu); + if (!IS_ERR_OR_NULL(tfm)) + crypto_free_comp(tfm); + *per_cpu_ptr(pool->tfm, cpu) = NULL; + return 0; } /********************************* @@ -527,6 +484,7 @@ static struct zswap_pool *zswap_pool_create(char *type, char *compressor) struct zswap_pool *pool; char name[38]; /* 'zswap' + 32 char (max) num + \0 */ gfp_t gfp = __GFP_NORETRY | __GFP_NOWARN | __GFP_KSWAPD_RECLAIM; + int ret; pool = kzalloc(sizeof(*pool), GFP_KERNEL); if (!pool) { @@ -551,7 +509,9 @@ static struct zswap_pool *zswap_pool_create(char *type, char *compressor) goto error; } - if (zswap_cpu_comp_init(pool)) + ret = cpuhp_state_add_instance(CPUHP_MM_ZSWP_POOL_PREPARE, + &pool->node); + if (ret) goto error; pr_debug("using %s compressor\n", pool->tfm_name); @@ -605,7 +565,7 @@ static void zswap_pool_destroy(struct zswap_pool *pool) { zswap_pool_debug("destroying", pool); - zswap_cpu_comp_destroy(pool); + cpuhp_state_remove_instance(CPUHP_MM_ZSWP_POOL_PREPARE, &pool->node); free_percpu(pool->tfm); zpool_destroy_pool(pool->zpool); kfree(pool); @@ -1212,6 +1172,13 @@ static int __init init_zswap(void) goto dstmem_fail; } + ret = cpuhp_setup_state_multi(CPUHP_MM_ZSWP_POOL_PREPARE, + "mm/zswap_pool:prepare", + zswap_cpu_comp_prepare, + zswap_cpu_comp_dead); + if (ret) + goto hp_fail; + pool = __zswap_pool_create_fallback(); if (!pool) { pr_err("pool creation failed\n"); @@ -1228,6 +1195,8 @@ static int __init init_zswap(void) return 0; pool_fail: + cpuhp_remove_state_nocalls(CPUHP_MM_ZSWP_POOL_PREPARE); +hp_fail: cpuhp_remove_state(CPUHP_MM_ZSWP_MEM_PREPARE); dstmem_fail: zswap_entry_cache_destroy(); -- 2.10.2
WARNING: multiple messages have this Message-ID (diff)
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> To: linux-kernel@vger.kernel.org Cc: rt@linutronix.de, tglx@linutronix.de, Sebastian Andrzej Siewior <bigeasy@linutronix.de>, Seth Jennings <sjenning@redhat.com>, linux-mm@kvack.org Subject: [PATCH 12/22] mm/zswap: Convert pool to hotplug state machine Date: Sun, 27 Nov 2016 00:13:40 +0100 [thread overview] Message-ID: <20161126231350.10321-13-bigeasy@linutronix.de> (raw) In-Reply-To: <20161126231350.10321-1-bigeasy@linutronix.de> Install the callbacks via the state machine. Multi state is used to address the per-pool notifier. Uppon adding of the intance the callback is invoked for all online CPUs so the manual init can go. Cc: Seth Jennings <sjenning@redhat.com> Cc: linux-mm@kvack.org Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- include/linux/cpuhotplug.h | 1 + mm/zswap.c | 99 ++++++++++++++++------------------------------ 2 files changed, 35 insertions(+), 65 deletions(-) diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h index 62f51a4e8676..c7d0d76ef0ee 100644 --- a/include/linux/cpuhotplug.h +++ b/include/linux/cpuhotplug.h @@ -66,6 +66,7 @@ enum cpuhp_state { CPUHP_TRACE_RB_PREPARE, CPUHP_MM_ZS_PREPARE, CPUHP_MM_ZSWP_MEM_PREPARE, + CPUHP_MM_ZSWP_POOL_PREPARE, CPUHP_TIMERS_DEAD, CPUHP_NOTF_ERR_INJ_PREPARE, CPUHP_MIPS_SOC_PREPARE, diff --git a/mm/zswap.c b/mm/zswap.c index b13aa5706348..067a0d62f318 100644 --- a/mm/zswap.c +++ b/mm/zswap.c @@ -118,7 +118,7 @@ struct zswap_pool { struct kref kref; struct list_head list; struct work_struct work; - struct notifier_block notifier; + struct hlist_node node; char tfm_name[CRYPTO_MAX_ALG_NAME]; }; @@ -376,77 +376,34 @@ static int zswap_dstmem_dead(unsigned int cpu) return 0; } -static int __zswap_cpu_comp_notifier(struct zswap_pool *pool, - unsigned long action, unsigned long cpu) +static int zswap_cpu_comp_prepare(unsigned int cpu, struct hlist_node *node) { + struct zswap_pool *pool = hlist_entry(node, struct zswap_pool, node); struct crypto_comp *tfm; - switch (action) { - case CPU_UP_PREPARE: - if (WARN_ON(*per_cpu_ptr(pool->tfm, cpu))) - break; - tfm = crypto_alloc_comp(pool->tfm_name, 0, 0); - if (IS_ERR_OR_NULL(tfm)) { - pr_err("could not alloc crypto comp %s : %ld\n", - pool->tfm_name, PTR_ERR(tfm)); - return NOTIFY_BAD; - } - *per_cpu_ptr(pool->tfm, cpu) = tfm; - break; - case CPU_DEAD: - case CPU_UP_CANCELED: - tfm = *per_cpu_ptr(pool->tfm, cpu); - if (!IS_ERR_OR_NULL(tfm)) - crypto_free_comp(tfm); - *per_cpu_ptr(pool->tfm, cpu) = NULL; - break; - default: - break; + if (WARN_ON(*per_cpu_ptr(pool->tfm, cpu))) + return 0; + + tfm = crypto_alloc_comp(pool->tfm_name, 0, 0); + if (IS_ERR_OR_NULL(tfm)) { + pr_err("could not alloc crypto comp %s : %ld\n", + pool->tfm_name, PTR_ERR(tfm)); + return -ENOMEM; } - return NOTIFY_OK; -} - -static int zswap_cpu_comp_notifier(struct notifier_block *nb, - unsigned long action, void *pcpu) -{ - unsigned long cpu = (unsigned long)pcpu; - struct zswap_pool *pool = container_of(nb, typeof(*pool), notifier); - - return __zswap_cpu_comp_notifier(pool, action, cpu); -} - -static int zswap_cpu_comp_init(struct zswap_pool *pool) -{ - unsigned long cpu; - - memset(&pool->notifier, 0, sizeof(pool->notifier)); - pool->notifier.notifier_call = zswap_cpu_comp_notifier; - - cpu_notifier_register_begin(); - for_each_online_cpu(cpu) - if (__zswap_cpu_comp_notifier(pool, CPU_UP_PREPARE, cpu) == - NOTIFY_BAD) - goto cleanup; - __register_cpu_notifier(&pool->notifier); - cpu_notifier_register_done(); + *per_cpu_ptr(pool->tfm, cpu) = tfm; return 0; - -cleanup: - for_each_online_cpu(cpu) - __zswap_cpu_comp_notifier(pool, CPU_UP_CANCELED, cpu); - cpu_notifier_register_done(); - return -ENOMEM; } -static void zswap_cpu_comp_destroy(struct zswap_pool *pool) +static int zswap_cpu_comp_dead(unsigned int cpu, struct hlist_node *node) { - unsigned long cpu; + struct zswap_pool *pool = hlist_entry(node, struct zswap_pool, node); + struct crypto_comp *tfm; - cpu_notifier_register_begin(); - for_each_online_cpu(cpu) - __zswap_cpu_comp_notifier(pool, CPU_UP_CANCELED, cpu); - __unregister_cpu_notifier(&pool->notifier); - cpu_notifier_register_done(); + tfm = *per_cpu_ptr(pool->tfm, cpu); + if (!IS_ERR_OR_NULL(tfm)) + crypto_free_comp(tfm); + *per_cpu_ptr(pool->tfm, cpu) = NULL; + return 0; } /********************************* @@ -527,6 +484,7 @@ static struct zswap_pool *zswap_pool_create(char *type, char *compressor) struct zswap_pool *pool; char name[38]; /* 'zswap' + 32 char (max) num + \0 */ gfp_t gfp = __GFP_NORETRY | __GFP_NOWARN | __GFP_KSWAPD_RECLAIM; + int ret; pool = kzalloc(sizeof(*pool), GFP_KERNEL); if (!pool) { @@ -551,7 +509,9 @@ static struct zswap_pool *zswap_pool_create(char *type, char *compressor) goto error; } - if (zswap_cpu_comp_init(pool)) + ret = cpuhp_state_add_instance(CPUHP_MM_ZSWP_POOL_PREPARE, + &pool->node); + if (ret) goto error; pr_debug("using %s compressor\n", pool->tfm_name); @@ -605,7 +565,7 @@ static void zswap_pool_destroy(struct zswap_pool *pool) { zswap_pool_debug("destroying", pool); - zswap_cpu_comp_destroy(pool); + cpuhp_state_remove_instance(CPUHP_MM_ZSWP_POOL_PREPARE, &pool->node); free_percpu(pool->tfm); zpool_destroy_pool(pool->zpool); kfree(pool); @@ -1212,6 +1172,13 @@ static int __init init_zswap(void) goto dstmem_fail; } + ret = cpuhp_setup_state_multi(CPUHP_MM_ZSWP_POOL_PREPARE, + "mm/zswap_pool:prepare", + zswap_cpu_comp_prepare, + zswap_cpu_comp_dead); + if (ret) + goto hp_fail; + pool = __zswap_pool_create_fallback(); if (!pool) { pr_err("pool creation failed\n"); @@ -1228,6 +1195,8 @@ static int __init init_zswap(void) return 0; pool_fail: + cpuhp_remove_state_nocalls(CPUHP_MM_ZSWP_POOL_PREPARE); +hp_fail: cpuhp_remove_state(CPUHP_MM_ZSWP_MEM_PREPARE); dstmem_fail: zswap_entry_cache_destroy(); -- 2.10.2 -- 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-11-26 23:17 UTC|newest] Thread overview: 131+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-11-26 23:13 cpu hotplug: convert more drivers (batch #6 and last) Sebastian Andrzej Siewior 2016-11-26 23:13 ` [PATCH 01/22] cpufreq/acpi-cpufreq: Convert to hotplug state machine Sebastian Andrzej Siewior 2016-11-28 5:15 ` Viresh Kumar 2016-11-28 9:49 ` Sebastian Andrzej Siewior 2016-11-28 9:51 ` [PATCH 01/22 v2] " Sebastian Andrzej Siewior 2016-11-28 9:54 ` Viresh Kumar 2016-11-28 12:46 ` Rafael J. Wysocki 2016-11-26 23:13 ` [PATCH 02/22] cpufreq/acpi-cpufreq: drop rdmsr_on_cpus() usage Sebastian Andrzej Siewior 2016-11-28 9:52 ` [PATCH 02/22 v2] " Sebastian Andrzej Siewior 2016-11-28 9:54 ` Viresh Kumar 2016-11-26 23:13 ` [PATCH 03/22] idle/intel: Remove superfluous SMP fuction call Sebastian Andrzej Siewior 2016-11-26 23:13 ` [PATCH 04/22] idle/intel: Convert to hotplug state machine Sebastian Andrzej Siewior 2016-11-28 17:29 ` Thomas Gleixner 2016-11-29 9:40 ` Sebastian Andrzej Siewior 2016-11-29 9:51 ` [PATCH 04/22 v2] " Sebastian Andrzej Siewior 2016-11-26 23:13 ` [PATCH 05/22] oprofile/nmi timer: " Sebastian Andrzej Siewior 2016-12-02 0:09 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior 2016-11-26 23:13 ` [PATCH 06/22] tracing/rb: " Sebastian Andrzej Siewior 2016-12-02 0:10 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior 2016-12-07 11:15 ` [linux-next] tracing/rb: NULL pointer dereference at trace_rb_cpu_prepare() Tetsuo Handa 2016-12-07 13:31 ` [PATCH] tracing/rb: init the CPU mask on allocation Sebastian Andrzej Siewior 2016-12-07 13:43 ` [tip:smp/hotplug] tracing/rb: Init " tip-bot for Sebastian Andrzej Siewior 2016-12-07 14:33 ` [PATCH] tracing/rb: init " Tetsuo Handa 2016-11-26 23:13 ` [PATCH 07/22] mm/vmstat: Drop get_online_cpus() from init_cpu_node_state/vmstat_cpu_dead() Sebastian Andrzej Siewior 2016-11-26 23:13 ` Sebastian Andrzej Siewior 2016-11-28 9:24 ` Michal Hocko 2016-11-28 9:24 ` Michal Hocko 2016-12-02 0:10 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior 2016-11-26 23:13 ` [PATCH 08/22] mm/vmstat: Avoid on each online CPU loops Sebastian Andrzej Siewior 2016-11-26 23:13 ` Sebastian Andrzej Siewior 2016-11-28 9:28 ` Michal Hocko 2016-11-28 9:28 ` Michal Hocko 2016-11-29 14:08 ` Thomas Gleixner 2016-11-29 14:08 ` Thomas Gleixner 2016-11-29 14:44 ` Michal Hocko 2016-11-29 14:44 ` Michal Hocko 2016-11-29 14:51 ` [PATCH 08/22 v2] " Sebastian Andrzej Siewior 2016-11-29 14:51 ` Sebastian Andrzej Siewior 2016-11-29 15:20 ` Michal Hocko 2016-11-29 15:20 ` Michal Hocko 2016-12-02 0:11 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior 2016-11-26 23:13 ` [PATCH 09/22] mm/vmstat: Convert to hotplug state machine Sebastian Andrzej Siewior 2016-11-26 23:13 ` Sebastian Andrzej Siewior 2016-11-29 14:52 ` [PATCH 09/22 v2] " Sebastian Andrzej Siewior 2016-11-29 14:52 ` Sebastian Andrzej Siewior 2016-12-02 0:11 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior 2016-11-26 23:13 ` [PATCH 10/22] mm/zsmalloc: " Sebastian Andrzej Siewior 2016-11-26 23:13 ` Sebastian Andrzej Siewior 2016-12-02 0:12 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior 2016-11-26 23:13 ` [PATCH 11/22] mm/zswap: Convert dst-mem " Sebastian Andrzej Siewior 2016-11-26 23:13 ` Sebastian Andrzej Siewior 2016-12-02 0:12 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior 2016-11-26 23:13 ` Sebastian Andrzej Siewior [this message] 2016-11-26 23:13 ` [PATCH 12/22] mm/zswap: Convert pool " Sebastian Andrzej Siewior 2016-12-02 0:13 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior 2016-11-26 23:13 ` [PATCH 13/22] iommu/vt-d: Convert " Sebastian Andrzej Siewior 2016-11-26 23:13 ` Sebastian Andrzej Siewior 2016-12-02 0:13 ` [tip:smp/hotplug] " tip-bot for Anna-Maria Gleixner 2016-11-26 23:13 ` [PATCH 14/22] mm/compaction: " Sebastian Andrzej Siewior 2016-11-26 23:13 ` Sebastian Andrzej Siewior 2016-12-02 0:14 ` [tip:smp/hotplug] " tip-bot for Anna-Maria Gleixner 2016-11-26 23:13 ` [PATCH 15/22] arm64/cpuinfo: Make hotplug notifier symmetric Sebastian Andrzej Siewior 2016-11-26 23:13 ` Sebastian Andrzej Siewior 2016-11-29 17:22 ` Suzuki K Poulose 2016-11-29 17:22 ` Suzuki K Poulose 2016-12-02 0:14 ` [tip:smp/hotplug] " tip-bot for Anna-Maria Gleixner 2016-11-26 23:13 ` [PATCH 16/22] arm64/cpuinfo: Convert to hotplug state machine Sebastian Andrzej Siewior 2016-11-26 23:13 ` Sebastian Andrzej Siewior 2016-11-29 17:26 ` Suzuki K Poulose 2016-11-29 17:26 ` Suzuki K Poulose 2016-12-02 0:15 ` [tip:smp/hotplug] " tip-bot for Anna-Maria Gleixner 2016-11-26 23:13 ` [PATCH 17/22] KVM/PPC/Book3S HV: " Sebastian Andrzej Siewior 2016-11-26 23:13 ` Sebastian Andrzej Siewior 2016-11-26 23:13 ` Sebastian Andrzej Siewior 2016-12-02 0:15 ` [tip:smp/hotplug] " tip-bot for Anna-Maria Gleixner 2016-11-26 23:13 ` [PATCH 18/22] zram: " Sebastian Andrzej Siewior 2016-12-02 0:16 ` [tip:smp/hotplug] " tip-bot for Anna-Maria Gleixner 2016-11-26 23:13 ` [PATCH 19/22] soc/fsl/qbman: " Sebastian Andrzej Siewior 2016-12-02 0:16 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior 2016-11-26 23:13 ` [PATCH 20/22] " Sebastian Andrzej Siewior 2016-12-02 0:17 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior 2016-11-26 23:13 ` [PATCH 21/22] staging/lustre/libcfs: " Sebastian Andrzej Siewior 2016-11-26 23:14 ` [lustre-devel] " Sebastian Andrzej Siewior 2016-12-02 10:18 ` [PATCH 21/22 v2] " Sebastian Andrzej Siewior 2016-12-02 10:18 ` [lustre-devel] " Sebastian Andrzej Siewior 2016-12-02 10:42 ` Greg Kroah-Hartman 2016-12-02 10:42 ` [lustre-devel] " Greg Kroah-Hartman 2016-12-02 11:00 ` [PATCH 21/22 v3] " Sebastian Andrzej Siewior 2016-12-02 11:00 ` [lustre-devel] " Sebastian Andrzej Siewior 2016-11-26 23:13 ` [PATCH 22/22] Remove obsolete cpu hotplug register / unregister functions Sebastian Andrzej Siewior 2016-12-21 19:19 [patch 00/10] cpu/hotplug: Final cleanup Thomas Gleixner 2016-12-21 19:19 ` [patch 01/10] ARM: imx: mmcd: Fix broken cpu hotplug handling Thomas Gleixner 2016-12-22 20:18 ` [tip:smp/urgent] ARM/imx/mmcd: " tip-bot for Thomas Gleixner 2016-12-25 10:02 ` tip-bot for Thomas Gleixner 2016-12-21 19:19 ` [patch 02/10] cpu/hotplug: Prevent overwriting of callbacks Thomas Gleixner 2016-12-22 11:07 ` Thomas Gleixner 2016-12-26 23:04 ` ojab 2016-12-26 23:12 ` ojab 2016-12-22 20:21 ` [tip:smp/urgent] " tip-bot for Thomas Gleixner 2016-12-25 10:04 ` tip-bot for Thomas Gleixner 2016-12-21 19:19 ` [patch 03/10] scsi/bnx2fc: Convert to hotplug state machine Thomas Gleixner 2016-12-22 20:21 ` [tip:smp/urgent] " tip-bot for Sebastian Andrzej Siewior 2016-12-25 10:05 ` tip-bot for Sebastian Andrzej Siewior 2016-12-21 19:19 ` [patch 04/10] scsi/bnx2i: " Thomas Gleixner 2016-12-22 20:22 ` [tip:smp/urgent] " tip-bot for Sebastian Andrzej Siewior 2016-12-25 10:05 ` tip-bot for Sebastian Andrzej Siewior 2016-12-21 19:19 ` [patch 05/10] staging/lustre/libcfs: " Thomas Gleixner 2016-12-21 19:29 ` [lustre-devel] " Thomas Gleixner 2016-12-22 20:22 ` [tip:smp/urgent] " tip-bot for Anna-Maria Gleixner 2016-12-25 10:06 ` tip-bot for Anna-Maria Gleixner 2016-12-21 19:19 ` [patch 06/10] cpu/hotplug: Remove obsolete cpu hotplug register/unregister functions Thomas Gleixner 2016-12-22 20:23 ` [tip:smp/urgent] " tip-bot for Thomas Gleixner 2016-12-25 10:06 ` tip-bot for Thomas Gleixner 2016-12-21 19:19 ` [patch 07/10] cpu/hotplug: Cleanup state names Thomas Gleixner 2016-12-22 20:23 ` [tip:smp/urgent] " tip-bot for Thomas Gleixner 2016-12-25 10:07 ` tip-bot for Thomas Gleixner 2016-12-21 19:19 ` [patch 08/10] coresight: etm3/4x: Consolidate hotplug state space Thomas Gleixner 2016-12-22 16:30 ` Mathieu Poirier 2016-12-22 20:24 ` [tip:smp/urgent] coresight/etm3/4x: " tip-bot for Thomas Gleixner 2016-12-25 10:07 ` tip-bot for Thomas Gleixner 2016-12-21 19:19 ` [patch 09/10] irqchip/gic: " Thomas Gleixner 2016-12-22 20:24 ` [tip:smp/urgent] " tip-bot for Thomas Gleixner 2016-12-25 10:08 ` tip-bot for Thomas Gleixner 2016-12-21 19:19 ` [patch 10/10] irqchip/armada-xp: " Thomas Gleixner 2016-12-21 20:22 ` Thomas Petazzoni 2016-12-21 20:27 ` Thomas Gleixner 2016-12-22 20:25 ` [tip:smp/urgent] " tip-bot for Thomas Gleixner 2016-12-25 10:08 ` tip-bot for Thomas Gleixner 2016-12-22 17:59 ` [patch 00/10] cpu/hotplug: Final cleanup Sam Ravnborg 2016-12-27 11:17 ` Thomas Gleixner 2016-12-27 19:41 ` Sam Ravnborg
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=20161126231350.10321-13-bigeasy@linutronix.de \ --to=bigeasy@linutronix.de \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=rt@linutronix.de \ --cc=sjenning@redhat.com \ --cc=tglx@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.