Merge tag 'stable/for-linus-3.10-rc5-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen
Pull xen fixes from Konrad Rzeszutek Wilk: "Two bug-fixes for regressions: - xen/tmem stopped working after a certain combination of modprobe/swapon was used - cpu online/offlining would trigger WARN_ON." * tag 'stable/for-linus-3.10-rc5-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen: xen/tmem: Don't over-write tmem_frontswap_poolid after tmem_frontswap_init set it. xen/smp: Fixup NOHZ per cpu data when onlining an offline CPU.
This commit is contained in:
@@ -17,6 +17,7 @@
|
|||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/smp.h>
|
#include <linux/smp.h>
|
||||||
#include <linux/irq_work.h>
|
#include <linux/irq_work.h>
|
||||||
|
#include <linux/tick.h>
|
||||||
|
|
||||||
#include <asm/paravirt.h>
|
#include <asm/paravirt.h>
|
||||||
#include <asm/desc.h>
|
#include <asm/desc.h>
|
||||||
@@ -447,6 +448,13 @@ static void __cpuinit xen_play_dead(void) /* used only with HOTPLUG_CPU */
|
|||||||
play_dead_common();
|
play_dead_common();
|
||||||
HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL);
|
HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL);
|
||||||
cpu_bringup();
|
cpu_bringup();
|
||||||
|
/*
|
||||||
|
* commit 4b0c0f294 (tick: Cleanup NOHZ per cpu data on cpu down)
|
||||||
|
* clears certain data that the cpu_idle loop (which called us
|
||||||
|
* and that we return from) expects. The only way to get that
|
||||||
|
* data back is to call:
|
||||||
|
*/
|
||||||
|
tick_nohz_idle_enter();
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* !CONFIG_HOTPLUG_CPU */
|
#else /* !CONFIG_HOTPLUG_CPU */
|
||||||
|
@@ -379,10 +379,10 @@ static int xen_tmem_init(void)
|
|||||||
#ifdef CONFIG_FRONTSWAP
|
#ifdef CONFIG_FRONTSWAP
|
||||||
if (tmem_enabled && frontswap) {
|
if (tmem_enabled && frontswap) {
|
||||||
char *s = "";
|
char *s = "";
|
||||||
struct frontswap_ops *old_ops =
|
struct frontswap_ops *old_ops;
|
||||||
frontswap_register_ops(&tmem_frontswap_ops);
|
|
||||||
|
|
||||||
tmem_frontswap_poolid = -1;
|
tmem_frontswap_poolid = -1;
|
||||||
|
old_ops = frontswap_register_ops(&tmem_frontswap_ops);
|
||||||
if (IS_ERR(old_ops) || old_ops) {
|
if (IS_ERR(old_ops) || old_ops) {
|
||||||
if (IS_ERR(old_ops))
|
if (IS_ERR(old_ops))
|
||||||
return PTR_ERR(old_ops);
|
return PTR_ERR(old_ops);
|
||||||
|
Reference in New Issue
Block a user