mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-06 14:31:46 +00:00
xen: introduce xen_vcpu_id mapping
It may happen that Xen's and Linux's ideas of vCPU id diverge. In particular, when we crash on a secondary vCPU we may want to do kdump and unlike plain kexec where we do migrate_to_reboot_cpu() we try booting on the vCPU which crashed. This doesn't work very well for PVHVM guests as we have a number of hypercalls where we pass vCPU id as a parameter. These hypercalls either fail or do something unexpected. To solve the issue introduce percpu xen_vcpu_id mapping. ARM and PV guests get direct mapping for now. Boot CPU for PVHVM guest gets its id from CPUID. With secondary CPUs it is a bit more trickier. Currently, we initialize IPI vectors before these CPUs boot so we can't use CPUID. Use ACPI ids from MADT instead. Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> Signed-off-by: David Vrabel <david.vrabel@citrix.com>
This commit is contained in:
parent
3e9e57fad3
commit
88e957d6e4
3 changed files with 38 additions and 1 deletions
|
@ -9,6 +9,12 @@
|
|||
|
||||
DECLARE_PER_CPU(struct vcpu_info *, xen_vcpu);
|
||||
|
||||
DECLARE_PER_CPU(int, xen_vcpu_id);
|
||||
static inline int xen_vcpu_nr(int cpu)
|
||||
{
|
||||
return per_cpu(xen_vcpu_id, cpu);
|
||||
}
|
||||
|
||||
void xen_arch_pre_suspend(void);
|
||||
void xen_arch_post_suspend(int suspend_cancelled);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue