Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4762e252 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* '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
parents 3210d190 60c5f08e
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -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;
	}
	}
+1 −1
Original line number Original line Diff line number Diff line
@@ -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
+2 −2
Original line number Original line Diff line number Diff line
@@ -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);
+8 −4
Original line number Original line Diff line number Diff line
@@ -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
+2 −2
Original line number Original line Diff line number Diff line
@@ -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;