Commit 90c9e950 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'for-linus-5.17a-rc3-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip

Pull xen fixes from Juergen Gross:

 - documentation fixes related to Xen

 - enable x2apic mode when available when running as hardware
   virtualized guest under Xen

 - cleanup and fix a corner case of vcpu enumeration when running a
   paravirtualized Xen guest

* tag 'for-linus-5.17a-rc3-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
  x86/Xen: streamline (and fix) PV CPU enumeration
  xen: update missing ioctl magic numers documentation
  Improve docs for IOCTL_GNTDEV_MAP_GRANT_REF
  xen: xenbus_dev.h: delete incorrect file name
  xen/x2apic: enable x2apic mode when supported for HVM
parents 5fdb2621 e25a8d95
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -115,6 +115,7 @@ Code Seq# Include File Comments
'B'   00-1F  linux/cciss_ioctl.h                                     conflict!
'B'   00-0F  include/linux/pmu.h                                     conflict!
'B'   C0-FF  advanced bbus                                           <mailto:maassen@uni-freiburg.de>
'B'   00-0F  xen/xenbus_dev.h                                        conflict!
'C'   all    linux/soundcard.h                                       conflict!
'C'   01-2F  linux/capi.h                                            conflict!
'C'   F0-FF  drivers/net/wan/cosa.h                                  conflict!
@@ -134,6 +135,7 @@ Code Seq# Include File Comments
'F'   80-8F  linux/arcfb.h                                           conflict!
'F'   DD     video/sstfb.h                                           conflict!
'G'   00-3F  drivers/misc/sgi-gru/grulib.h                           conflict!
'G'   00-0F  xen/gntalloc.h, xen/gntdev.h                            conflict!
'H'   00-7F  linux/hiddev.h                                          conflict!
'H'   00-0F  linux/hidraw.h                                          conflict!
'H'   01     linux/mei.h                                             conflict!
@@ -176,6 +178,7 @@ Code Seq# Include File Comments
'P'   60-6F  sound/sscape_ioctl.h                                    conflict!
'P'   00-0F  drivers/usb/class/usblp.c                               conflict!
'P'   01-09  drivers/misc/pci_endpoint_test.c                        conflict!
'P'   00-0F  xen/privcmd.h                                           conflict!
'Q'   all    linux/soundcard.h
'R'   00-1F  linux/random.h                                          conflict!
'R'   01     linux/rfkill.h                                          conflict!
+0 −14
Original line number Diff line number Diff line
@@ -43,20 +43,6 @@ static inline uint32_t xen_cpuid_base(void)
	return hypervisor_cpuid_base("XenVMMXenVMM", 2);
}

#ifdef CONFIG_XEN
extern bool __init xen_hvm_need_lapic(void);

static inline bool __init xen_x2apic_para_available(void)
{
	return xen_hvm_need_lapic();
}
#else
static inline bool __init xen_x2apic_para_available(void)
{
	return (xen_cpuid_base() != 0);
}
#endif

struct pci_dev;

#ifdef CONFIG_XEN_PV_DOM0
+4 −9
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@
#include <xen/events.h>
#include <xen/interface/memory.h>

#include <asm/apic.h>
#include <asm/cpu.h>
#include <asm/smp.h>
#include <asm/io_apic.h>
@@ -242,15 +243,9 @@ static __init int xen_parse_no_vector_callback(char *arg)
}
early_param("xen_no_vector_callback", xen_parse_no_vector_callback);

bool __init xen_hvm_need_lapic(void)
static __init bool xen_x2apic_available(void)
{
	if (xen_pv_domain())
		return false;
	if (!xen_hvm_domain())
		return false;
	if (xen_feature(XENFEAT_hvm_pirqs) && xen_have_vector_callback)
		return false;
	return true;
	return x2apic_supported();
}

static __init void xen_hvm_guest_late_init(void)
@@ -312,7 +307,7 @@ struct hypervisor_x86 x86_hyper_xen_hvm __initdata = {
	.detect                 = xen_platform_hvm,
	.type			= X86_HYPER_XEN_HVM,
	.init.init_platform     = xen_hvm_guest_init,
	.init.x2apic_available  = xen_x2apic_para_available,
	.init.x2apic_available  = xen_x2apic_available,
	.init.init_mem_mapping	= xen_hvm_init_mem_mapping,
	.init.guest_late_init	= xen_hvm_guest_late_init,
	.runtime.pin_vcpu       = xen_pin_vcpu,
+0 −4
Original line number Diff line number Diff line
@@ -1341,10 +1341,6 @@ asmlinkage __visible void __init xen_start_kernel(void)

		xen_acpi_sleep_register();

		/* Avoid searching for BIOS MP tables */
		x86_init.mpparse.find_smp_config = x86_init_noop;
		x86_init.mpparse.get_smp_config = x86_init_uint_noop;

		xen_boot_params_init_edd();

#ifdef CONFIG_ACPI
+6 −20
Original line number Diff line number Diff line
@@ -148,28 +148,12 @@ int xen_smp_intr_init_pv(unsigned int cpu)
	return rc;
}

static void __init xen_fill_possible_map(void)
{
	int i, rc;

	if (xen_initial_domain())
		return;

	for (i = 0; i < nr_cpu_ids; i++) {
		rc = HYPERVISOR_vcpu_op(VCPUOP_is_up, i, NULL);
		if (rc >= 0) {
			num_processors++;
			set_cpu_possible(i, true);
		}
	}
}

static void __init xen_filter_cpu_maps(void)
static void __init _get_smp_config(unsigned int early)
{
	int i, rc;
	unsigned int subtract = 0;

	if (!xen_initial_domain())
	if (early)
		return;

	num_processors = 0;
@@ -210,7 +194,6 @@ static void __init xen_pv_smp_prepare_boot_cpu(void)
		 * sure the old memory can be recycled. */
		make_lowmem_page_readwrite(xen_initial_gdt);

	xen_filter_cpu_maps();
	xen_setup_vcpu_info_placement();

	/*
@@ -476,5 +459,8 @@ static const struct smp_ops xen_smp_ops __initconst = {
void __init xen_smp_init(void)
{
	smp_ops = xen_smp_ops;
	xen_fill_possible_map();

	/* Avoid searching for BIOS MP tables */
	x86_init.mpparse.find_smp_config = x86_init_noop;
	x86_init.mpparse.get_smp_config = _get_smp_config;
}
Loading