Merge branch 'stable/bug.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen
* 'stable/bug.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen: xen/tracing: Fix tracing config option properly xen: Do not enable PV IPIs when vector callback not present xen/x86: replace order-based range checking of M2P table by linear one xen: xen-selfballoon.c needs more header files
This commit is contained in:
commit
4762e252f4
|
@ -39,7 +39,7 @@ typedef struct xpaddr {
|
||||||
((unsigned long)((u64)CONFIG_XEN_MAX_DOMAIN_MEMORY * 1024 * 1024 * 1024 / PAGE_SIZE))
|
((unsigned long)((u64)CONFIG_XEN_MAX_DOMAIN_MEMORY * 1024 * 1024 * 1024 / PAGE_SIZE))
|
||||||
|
|
||||||
extern unsigned long *machine_to_phys_mapping;
|
extern unsigned long *machine_to_phys_mapping;
|
||||||
extern unsigned int machine_to_phys_order;
|
extern unsigned long machine_to_phys_nr;
|
||||||
|
|
||||||
extern unsigned long get_phys_to_machine(unsigned long pfn);
|
extern unsigned long get_phys_to_machine(unsigned long pfn);
|
||||||
extern bool set_phys_to_machine(unsigned long pfn, unsigned long mfn);
|
extern bool set_phys_to_machine(unsigned long pfn, unsigned long mfn);
|
||||||
|
@ -87,7 +87,7 @@ static inline unsigned long mfn_to_pfn(unsigned long mfn)
|
||||||
if (xen_feature(XENFEAT_auto_translated_physmap))
|
if (xen_feature(XENFEAT_auto_translated_physmap))
|
||||||
return mfn;
|
return mfn;
|
||||||
|
|
||||||
if (unlikely((mfn >> machine_to_phys_order) != 0)) {
|
if (unlikely(mfn >= machine_to_phys_nr)) {
|
||||||
pfn = ~0;
|
pfn = ~0;
|
||||||
goto try_override;
|
goto try_override;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ obj-y := enlighten.o setup.o multicalls.o mmu.o irq.o \
|
||||||
grant-table.o suspend.o platform-pci-unplug.o \
|
grant-table.o suspend.o platform-pci-unplug.o \
|
||||||
p2m.o
|
p2m.o
|
||||||
|
|
||||||
obj-$(CONFIG_FTRACE) += trace.o
|
obj-$(CONFIG_EVENT_TRACING) += trace.o
|
||||||
|
|
||||||
obj-$(CONFIG_SMP) += smp.o
|
obj-$(CONFIG_SMP) += smp.o
|
||||||
obj-$(CONFIG_PARAVIRT_SPINLOCKS)+= spinlock.o
|
obj-$(CONFIG_PARAVIRT_SPINLOCKS)+= spinlock.o
|
||||||
|
|
|
@ -77,8 +77,8 @@ EXPORT_SYMBOL_GPL(xen_domain_type);
|
||||||
|
|
||||||
unsigned long *machine_to_phys_mapping = (void *)MACH2PHYS_VIRT_START;
|
unsigned long *machine_to_phys_mapping = (void *)MACH2PHYS_VIRT_START;
|
||||||
EXPORT_SYMBOL(machine_to_phys_mapping);
|
EXPORT_SYMBOL(machine_to_phys_mapping);
|
||||||
unsigned int machine_to_phys_order;
|
unsigned long machine_to_phys_nr;
|
||||||
EXPORT_SYMBOL(machine_to_phys_order);
|
EXPORT_SYMBOL(machine_to_phys_nr);
|
||||||
|
|
||||||
struct start_info *xen_start_info;
|
struct start_info *xen_start_info;
|
||||||
EXPORT_SYMBOL_GPL(xen_start_info);
|
EXPORT_SYMBOL_GPL(xen_start_info);
|
||||||
|
|
|
@ -1713,15 +1713,19 @@ static void __init xen_map_identity_early(pmd_t *pmd, unsigned long max_pfn)
|
||||||
void __init xen_setup_machphys_mapping(void)
|
void __init xen_setup_machphys_mapping(void)
|
||||||
{
|
{
|
||||||
struct xen_machphys_mapping mapping;
|
struct xen_machphys_mapping mapping;
|
||||||
unsigned long machine_to_phys_nr_ents;
|
|
||||||
|
|
||||||
if (HYPERVISOR_memory_op(XENMEM_machphys_mapping, &mapping) == 0) {
|
if (HYPERVISOR_memory_op(XENMEM_machphys_mapping, &mapping) == 0) {
|
||||||
machine_to_phys_mapping = (unsigned long *)mapping.v_start;
|
machine_to_phys_mapping = (unsigned long *)mapping.v_start;
|
||||||
machine_to_phys_nr_ents = mapping.max_mfn + 1;
|
machine_to_phys_nr = mapping.max_mfn + 1;
|
||||||
} else {
|
} else {
|
||||||
machine_to_phys_nr_ents = MACH2PHYS_NR_ENTRIES;
|
machine_to_phys_nr = MACH2PHYS_NR_ENTRIES;
|
||||||
}
|
}
|
||||||
machine_to_phys_order = fls(machine_to_phys_nr_ents - 1);
|
#ifdef CONFIG_X86_32
|
||||||
|
if ((machine_to_phys_mapping + machine_to_phys_nr)
|
||||||
|
< machine_to_phys_mapping)
|
||||||
|
machine_to_phys_nr = (unsigned long *)NULL
|
||||||
|
- machine_to_phys_mapping;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_X86_64
|
#ifdef CONFIG_X86_64
|
||||||
|
|
|
@ -521,8 +521,6 @@ static void __init xen_hvm_smp_prepare_cpus(unsigned int max_cpus)
|
||||||
native_smp_prepare_cpus(max_cpus);
|
native_smp_prepare_cpus(max_cpus);
|
||||||
WARN_ON(xen_smp_intr_init(0));
|
WARN_ON(xen_smp_intr_init(0));
|
||||||
|
|
||||||
if (!xen_have_vector_callback)
|
|
||||||
return;
|
|
||||||
xen_init_lock_cpu(0);
|
xen_init_lock_cpu(0);
|
||||||
xen_init_spinlocks();
|
xen_init_spinlocks();
|
||||||
}
|
}
|
||||||
|
@ -546,6 +544,8 @@ static void xen_hvm_cpu_die(unsigned int cpu)
|
||||||
|
|
||||||
void __init xen_hvm_smp_init(void)
|
void __init xen_hvm_smp_init(void)
|
||||||
{
|
{
|
||||||
|
if (!xen_have_vector_callback)
|
||||||
|
return;
|
||||||
smp_ops.smp_prepare_cpus = xen_hvm_smp_prepare_cpus;
|
smp_ops.smp_prepare_cpus = xen_hvm_smp_prepare_cpus;
|
||||||
smp_ops.smp_send_reschedule = xen_smp_send_reschedule;
|
smp_ops.smp_send_reschedule = xen_smp_send_reschedule;
|
||||||
smp_ops.cpu_up = xen_hvm_cpu_up;
|
smp_ops.cpu_up = xen_hvm_cpu_up;
|
||||||
|
|
Loading…
Reference in New Issue