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

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
...@@ -115,6 +115,7 @@ Code Seq# Include File Comments ...@@ -115,6 +115,7 @@ Code Seq# Include File Comments
'B' 00-1F linux/cciss_ioctl.h conflict! 'B' 00-1F linux/cciss_ioctl.h conflict!
'B' 00-0F include/linux/pmu.h conflict! 'B' 00-0F include/linux/pmu.h conflict!
'B' C0-FF advanced bbus <mailto:maassen@uni-freiburg.de> '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' all linux/soundcard.h conflict!
'C' 01-2F linux/capi.h conflict! 'C' 01-2F linux/capi.h conflict!
'C' F0-FF drivers/net/wan/cosa.h conflict! 'C' F0-FF drivers/net/wan/cosa.h conflict!
...@@ -134,6 +135,7 @@ Code Seq# Include File Comments ...@@ -134,6 +135,7 @@ Code Seq# Include File Comments
'F' 80-8F linux/arcfb.h conflict! 'F' 80-8F linux/arcfb.h conflict!
'F' DD video/sstfb.h conflict! 'F' DD video/sstfb.h conflict!
'G' 00-3F drivers/misc/sgi-gru/grulib.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-7F linux/hiddev.h conflict!
'H' 00-0F linux/hidraw.h conflict! 'H' 00-0F linux/hidraw.h conflict!
'H' 01 linux/mei.h conflict! 'H' 01 linux/mei.h conflict!
...@@ -176,6 +178,7 @@ Code Seq# Include File Comments ...@@ -176,6 +178,7 @@ Code Seq# Include File Comments
'P' 60-6F sound/sscape_ioctl.h conflict! 'P' 60-6F sound/sscape_ioctl.h conflict!
'P' 00-0F drivers/usb/class/usblp.c conflict! 'P' 00-0F drivers/usb/class/usblp.c conflict!
'P' 01-09 drivers/misc/pci_endpoint_test.c conflict! 'P' 01-09 drivers/misc/pci_endpoint_test.c conflict!
'P' 00-0F xen/privcmd.h conflict!
'Q' all linux/soundcard.h 'Q' all linux/soundcard.h
'R' 00-1F linux/random.h conflict! 'R' 00-1F linux/random.h conflict!
'R' 01 linux/rfkill.h conflict! 'R' 01 linux/rfkill.h conflict!
......
...@@ -43,20 +43,6 @@ static inline uint32_t xen_cpuid_base(void) ...@@ -43,20 +43,6 @@ static inline uint32_t xen_cpuid_base(void)
return hypervisor_cpuid_base("XenVMMXenVMM", 2); 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; struct pci_dev;
#ifdef CONFIG_XEN_PV_DOM0 #ifdef CONFIG_XEN_PV_DOM0
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <xen/events.h> #include <xen/events.h>
#include <xen/interface/memory.h> #include <xen/interface/memory.h>
#include <asm/apic.h>
#include <asm/cpu.h> #include <asm/cpu.h>
#include <asm/smp.h> #include <asm/smp.h>
#include <asm/io_apic.h> #include <asm/io_apic.h>
...@@ -242,15 +243,9 @@ static __init int xen_parse_no_vector_callback(char *arg) ...@@ -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); 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 x2apic_supported();
return false;
if (!xen_hvm_domain())
return false;
if (xen_feature(XENFEAT_hvm_pirqs) && xen_have_vector_callback)
return false;
return true;
} }
static __init void xen_hvm_guest_late_init(void) static __init void xen_hvm_guest_late_init(void)
...@@ -312,7 +307,7 @@ struct hypervisor_x86 x86_hyper_xen_hvm __initdata = { ...@@ -312,7 +307,7 @@ struct hypervisor_x86 x86_hyper_xen_hvm __initdata = {
.detect = xen_platform_hvm, .detect = xen_platform_hvm,
.type = X86_HYPER_XEN_HVM, .type = X86_HYPER_XEN_HVM,
.init.init_platform = xen_hvm_guest_init, .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.init_mem_mapping = xen_hvm_init_mem_mapping,
.init.guest_late_init = xen_hvm_guest_late_init, .init.guest_late_init = xen_hvm_guest_late_init,
.runtime.pin_vcpu = xen_pin_vcpu, .runtime.pin_vcpu = xen_pin_vcpu,
......
...@@ -1341,10 +1341,6 @@ asmlinkage __visible void __init xen_start_kernel(void) ...@@ -1341,10 +1341,6 @@ asmlinkage __visible void __init xen_start_kernel(void)
xen_acpi_sleep_register(); 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(); xen_boot_params_init_edd();
#ifdef CONFIG_ACPI #ifdef CONFIG_ACPI
......
...@@ -148,28 +148,12 @@ int xen_smp_intr_init_pv(unsigned int cpu) ...@@ -148,28 +148,12 @@ int xen_smp_intr_init_pv(unsigned int cpu)
return rc; return rc;
} }
static void __init xen_fill_possible_map(void) static void __init _get_smp_config(unsigned int early)
{
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)
{ {
int i, rc; int i, rc;
unsigned int subtract = 0; unsigned int subtract = 0;
if (!xen_initial_domain()) if (early)
return; return;
num_processors = 0; num_processors = 0;
...@@ -210,7 +194,6 @@ static void __init xen_pv_smp_prepare_boot_cpu(void) ...@@ -210,7 +194,6 @@ static void __init xen_pv_smp_prepare_boot_cpu(void)
* sure the old memory can be recycled. */ * sure the old memory can be recycled. */
make_lowmem_page_readwrite(xen_initial_gdt); make_lowmem_page_readwrite(xen_initial_gdt);
xen_filter_cpu_maps();
xen_setup_vcpu_info_placement(); xen_setup_vcpu_info_placement();
/* /*
...@@ -476,5 +459,8 @@ static const struct smp_ops xen_smp_ops __initconst = { ...@@ -476,5 +459,8 @@ static const struct smp_ops xen_smp_ops __initconst = {
void __init xen_smp_init(void) void __init xen_smp_init(void)
{ {
smp_ops = xen_smp_ops; 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;
} }
...@@ -47,7 +47,13 @@ struct ioctl_gntdev_grant_ref { ...@@ -47,7 +47,13 @@ struct ioctl_gntdev_grant_ref {
/* /*
* Inserts the grant references into the mapping table of an instance * Inserts the grant references into the mapping table of an instance
* of gntdev. N.B. This does not perform the mapping, which is deferred * of gntdev. N.B. This does not perform the mapping, which is deferred
* until mmap() is called with @index as the offset. * until mmap() is called with @index as the offset. @index should be
* considered opaque to userspace, with one exception: if no grant
* references have ever been inserted into the mapping table of this
* instance, @index will be set to 0. This is necessary to use gntdev
* with userspace APIs that expect a file descriptor that can be
* mmap()'d at offset 0, such as Wayland. If @count is set to 0, this
* ioctl will fail.
*/ */
#define IOCTL_GNTDEV_MAP_GRANT_REF \ #define IOCTL_GNTDEV_MAP_GRANT_REF \
_IOC(_IOC_NONE, 'G', 0, sizeof(struct ioctl_gntdev_map_grant_ref)) _IOC(_IOC_NONE, 'G', 0, sizeof(struct ioctl_gntdev_map_grant_ref))
......
/****************************************************************************** /******************************************************************************
* evtchn.h
*
* Interface to /dev/xen/xenbus_backend. * Interface to /dev/xen/xenbus_backend.
* *
* Copyright (c) 2011 Bastian Blank <waldi@debian.org> * Copyright (c) 2011 Bastian Blank <waldi@debian.org>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment