Skip to content

Commit

Permalink
xen/arm: don't try to re-register vcpu_info on cpu_hotplug.
Browse files Browse the repository at this point in the history
Call disable_percpu_irq on CPU_DYING and enable_percpu_irq when the cpu
is coming up.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Reviewed-by: Julien Grall <julien.grall@citrix.com>
  • Loading branch information
Stefano Stabellini authored and David Vrabel committed Oct 23, 2015
1 parent 1c7a621 commit cb9644b
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions arch/arm/xen/enlighten.c
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,14 @@ static void xen_percpu_init(void)
int err;
int cpu = get_cpu();

/*
* VCPUOP_register_vcpu_info cannot be called twice for the same
* vcpu, so if vcpu_info is already registered, just get out. This
* can happen with cpu-hotplug.
*/
if (per_cpu(xen_vcpu, cpu) != NULL)
goto after_register_vcpu_info;

pr_info("Xen: initializing cpu%d\n", cpu);
vcpup = per_cpu_ptr(xen_vcpu_info, cpu);

Expand All @@ -96,6 +104,7 @@ static void xen_percpu_init(void)
BUG_ON(err);
per_cpu(xen_vcpu, cpu) = vcpup;

after_register_vcpu_info:
enable_percpu_irq(xen_events_irq, 0);
put_cpu();
}
Expand Down Expand Up @@ -124,6 +133,9 @@ static int xen_cpu_notification(struct notifier_block *self,
case CPU_STARTING:
xen_percpu_init();
break;
case CPU_DYING:
disable_percpu_irq(xen_events_irq);
break;
default:
break;
}
Expand Down

0 comments on commit cb9644b

Please sign in to comment.