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

Commit c31496db authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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

Pull xen fixes from Juergen Gross:
 "Two related fixes for a boot failure of Xen PV guests"

* tag 'for-linus-4.18-rc5-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
  xen: setup pv irq ops vector earlier
  xen: remove global bit from __default_kernel_pte_mask for pv guests
parents 2da8c426 0ce0bba4
Loading
Loading
Loading
Loading
+12 −13
Original line number Diff line number Diff line
@@ -1207,12 +1207,20 @@ asmlinkage __visible void __init xen_start_kernel(void)

	xen_setup_features();

	xen_setup_machphys_mapping();

	/* Install Xen paravirt ops */
	pv_info = xen_info;
	pv_init_ops.patch = paravirt_patch_default;
	pv_cpu_ops = xen_cpu_ops;
	xen_init_irq_ops();

	/*
	 * Setup xen_vcpu early because it is needed for
	 * local_irq_disable(), irqs_disabled(), e.g. in printk().
	 *
	 * Don't do the full vcpu_info placement stuff until we have
	 * the cpu_possible_mask and a non-dummy shared_info.
	 */
	xen_vcpu_info_reset(0);

	x86_platform.get_nmi_reason = xen_get_nmi_reason;

@@ -1225,10 +1233,12 @@ asmlinkage __visible void __init xen_start_kernel(void)
	 * Set up some pagetable state before starting to set any ptes.
	 */

	xen_setup_machphys_mapping();
	xen_init_mmu_ops();

	/* Prevent unwanted bits from being set in PTEs. */
	__supported_pte_mask &= ~_PAGE_GLOBAL;
	__default_kernel_pte_mask &= ~_PAGE_GLOBAL;

	/*
	 * Prevent page tables from being allocated in highmem, even
@@ -1249,20 +1259,9 @@ asmlinkage __visible void __init xen_start_kernel(void)
	get_cpu_cap(&boot_cpu_data);
	x86_configure_nx();

	xen_init_irq_ops();

	/* Let's presume PV guests always boot on vCPU with id 0. */
	per_cpu(xen_vcpu_id, 0) = 0;

	/*
	 * Setup xen_vcpu early because idt_setup_early_handler needs it for
	 * local_irq_disable(), irqs_disabled().
	 *
	 * Don't do the full vcpu_info placement stuff until we have
	 * the cpu_possible_mask and a non-dummy shared_info.
	 */
	xen_vcpu_info_reset(0);

	idt_setup_early_handler();

	xen_init_capabilities();
+1 −3
Original line number Diff line number Diff line
@@ -128,8 +128,6 @@ static const struct pv_irq_ops xen_irq_ops __initconst = {

void __init xen_init_irq_ops(void)
{
	/* For PVH we use default pv_irq_ops settings. */
	if (!xen_feature(XENFEAT_hvm_callback_vector))
	pv_irq_ops = xen_irq_ops;
	x86_init.irqs.intr_init = xen_init_IRQ;
}