Commit 0eb392ec authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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

Pull xen fixes from Juergen Gross:

 - cleanup for xen time handling

 - enable the VGA console in a Xen PVH dom0

 - cleanup in the xenfs driver

* tag 'for-linus-6.3-rc3-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
  xen: remove unnecessary (void*) conversions
  x86/PVH: obtain VGA console info in Dom0
  x86/xen/time: cleanup xen_tsc_safe_clocksource
  xen: update arch/x86/include/asm/xen/cpuid.h
parents cb80b960 7ad2c398
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -89,11 +89,21 @@
 * Sub-leaf 2: EAX: host tsc frequency in kHz
 */

#define XEN_CPUID_TSC_EMULATED               (1u << 0)
#define XEN_CPUID_HOST_TSC_RELIABLE          (1u << 1)
#define XEN_CPUID_RDTSCP_INSTR_AVAIL         (1u << 2)

#define XEN_CPUID_TSC_MODE_DEFAULT           (0)
#define XEN_CPUID_TSC_MODE_ALWAYS_EMULATE    (1u)
#define XEN_CPUID_TSC_MODE_NEVER_EMULATE     (2u)
#define XEN_CPUID_TSC_MODE_PVRDTSCP          (3u)

/*
 * Leaf 5 (0x40000x04)
 * HVM-specific features
 * Sub-leaf 0: EAX: Features
 * Sub-leaf 0: EBX: vcpu id (iff EAX has XEN_HVM_CPUID_VCPU_ID_PRESENT flag)
 * Sub-leaf 0: ECX: domain id (iff EAX has XEN_HVM_CPUID_DOMID_PRESENT flag)
 */
#define XEN_HVM_CPUID_APIC_ACCESS_VIRT (1u << 0) /* Virtualized APIC registers */
#define XEN_HVM_CPUID_X2APIC_VIRT      (1u << 1) /* Virtualized x2APIC accesses */
@@ -102,12 +112,16 @@
#define XEN_HVM_CPUID_VCPU_ID_PRESENT  (1u << 3) /* vcpu id is present in EBX */
#define XEN_HVM_CPUID_DOMID_PRESENT    (1u << 4) /* domid is present in ECX */
/*
 * Bits 55:49 from the IO-APIC RTE and bits 11:5 from the MSI address can be
 * used to store high bits for the Destination ID. This expands the Destination
 * ID field from 8 to 15 bits, allowing to target APIC IDs up 32768.
 * With interrupt format set to 0 (non-remappable) bits 55:49 from the
 * IO-APIC RTE and bits 11:5 from the MSI address can be used to store
 * high bits for the Destination ID. This expands the Destination ID
 * field from 8 to 15 bits, allowing to target APIC IDs up 32768.
 */
#define XEN_HVM_CPUID_EXT_DEST_ID      (1u << 5)
/* Per-vCPU event channel upcalls */
/*
 * Per-vCPU event channel upcalls work correctly with physical IRQs
 * bound to event channels.
 */
#define XEN_HVM_CPUID_UPCALL_VECTOR    (1u << 6)

/*
+1 −1
Original line number Diff line number Diff line
@@ -45,6 +45,6 @@ obj-$(CONFIG_PARAVIRT_SPINLOCKS)+= spinlock.o

obj-$(CONFIG_XEN_DEBUG_FS)	+= debugfs.o

obj-$(CONFIG_XEN_PV_DOM0)	+= vga.o
obj-$(CONFIG_XEN_DOM0)		+= vga.o

obj-$(CONFIG_XEN_EFI)		+= efi.o
+2 −1
Original line number Diff line number Diff line
@@ -1390,7 +1390,8 @@ asmlinkage __visible void __init xen_start_kernel(struct start_info *si)

		x86_platform.set_legacy_features =
				xen_dom0_set_legacy_features;
		xen_init_vga(info, xen_start_info->console.dom0.info_size);
		xen_init_vga(info, xen_start_info->console.dom0.info_size,
			     &boot_params.screen_info);
		xen_start_info->console.domU.mfn = 0;
		xen_start_info->console.domU.evtchn = 0;

+13 −0
Original line number Diff line number Diff line
@@ -43,6 +43,19 @@ void __init xen_pvh_init(struct boot_params *boot_params)
	x86_init.oem.banner = xen_banner;

	xen_efi_init(boot_params);

	if (xen_initial_domain()) {
		struct xen_platform_op op = {
			.cmd = XENPF_get_dom0_console,
		};
		long ret = HYPERVISOR_platform_op(&op);

		if (ret > 0)
			xen_init_vga(&op.u.dom0_console,
				     min(ret * sizeof(char),
					 sizeof(op.u.dom0_console)),
				     &boot_params->screen_info);
	}
}

void __init mem_map_via_hcall(struct boot_params *boot_params_p)
+2 −5
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <asm/pvclock.h>
#include <asm/xen/hypervisor.h>
#include <asm/xen/hypercall.h>
#include <asm/xen/cpuid.h>

#include <xen/events.h>
#include <xen/features.h>
@@ -503,11 +504,7 @@ static int __init xen_tsc_safe_clocksource(void)
	/* Leaf 4, sub-leaf 0 (0x40000x03) */
	cpuid_count(xen_cpuid_base() + 3, 0, &eax, &ebx, &ecx, &edx);

	/* tsc_mode = no_emulate (2) */
	if (ebx != 2)
		return 0;

	return 1;
	return ebx == XEN_CPUID_TSC_MODE_NEVER_EMULATE;
}

static void __init xen_time_init(void)
Loading