diff options
author | Vitaly Kuznetsov <vkuznets@redhat.com> | 2016-06-30 18:56:38 +0300 |
---|---|---|
committer | David Vrabel <david.vrabel@citrix.com> | 2016-07-25 15:32:34 +0300 |
commit | ad5475f9faf5186b7f59de2c6481ee3e211f1ed7 (patch) | |
tree | dc9c373319bc1f1927ce10d8937292c17af217ed /arch/x86/xen/irq.c | |
parent | 88e957d6e47f1232ad15b21e54a44f1147ea8c1b (diff) | |
download | linux-ad5475f9faf5186b7f59de2c6481ee3e211f1ed7.tar.xz |
x86/xen: use xen_vcpu_id mapping for HYPERVISOR_vcpu_op
HYPERVISOR_vcpu_op() passes Linux's idea of vCPU id as a parameter
while Xen's idea is expected. In some cases these ideas diverge so we
need to do remapping.
Convert all callers of HYPERVISOR_vcpu_op() to use xen_vcpu_nr().
Leave xen_fill_possible_map() and xen_filter_cpu_maps() intact as
they're only being called by PV guests before perpu areas are
initialized. While the issue could be solved by switching to
early_percpu for xen_vcpu_id I think it's not worth it: PV guests will
probably never get to the point where their idea of vCPU id diverges
from Xen's.
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Diffstat (limited to 'arch/x86/xen/irq.c')
-rw-r--r-- | arch/x86/xen/irq.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/x86/xen/irq.c b/arch/x86/xen/irq.c index a1207cb6472a..33e92955e09d 100644 --- a/arch/x86/xen/irq.c +++ b/arch/x86/xen/irq.c @@ -109,7 +109,8 @@ static void xen_safe_halt(void) static void xen_halt(void) { if (irqs_disabled()) - HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL); + HYPERVISOR_vcpu_op(VCPUOP_down, + xen_vcpu_nr(smp_processor_id()), NULL); else xen_safe_halt(); } |