提交 c31496db 编写于 作者: L Linus Torvalds

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
...@@ -1207,12 +1207,20 @@ asmlinkage __visible void __init xen_start_kernel(void) ...@@ -1207,12 +1207,20 @@ asmlinkage __visible void __init xen_start_kernel(void)
xen_setup_features(); xen_setup_features();
xen_setup_machphys_mapping();
/* Install Xen paravirt ops */ /* Install Xen paravirt ops */
pv_info = xen_info; pv_info = xen_info;
pv_init_ops.patch = paravirt_patch_default; pv_init_ops.patch = paravirt_patch_default;
pv_cpu_ops = xen_cpu_ops; 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; x86_platform.get_nmi_reason = xen_get_nmi_reason;
...@@ -1225,10 +1233,12 @@ asmlinkage __visible void __init xen_start_kernel(void) ...@@ -1225,10 +1233,12 @@ asmlinkage __visible void __init xen_start_kernel(void)
* Set up some pagetable state before starting to set any ptes. * Set up some pagetable state before starting to set any ptes.
*/ */
xen_setup_machphys_mapping();
xen_init_mmu_ops(); xen_init_mmu_ops();
/* Prevent unwanted bits from being set in PTEs. */ /* Prevent unwanted bits from being set in PTEs. */
__supported_pte_mask &= ~_PAGE_GLOBAL; __supported_pte_mask &= ~_PAGE_GLOBAL;
__default_kernel_pte_mask &= ~_PAGE_GLOBAL;
/* /*
* Prevent page tables from being allocated in highmem, even * Prevent page tables from being allocated in highmem, even
...@@ -1249,20 +1259,9 @@ asmlinkage __visible void __init xen_start_kernel(void) ...@@ -1249,20 +1259,9 @@ asmlinkage __visible void __init xen_start_kernel(void)
get_cpu_cap(&boot_cpu_data); get_cpu_cap(&boot_cpu_data);
x86_configure_nx(); x86_configure_nx();
xen_init_irq_ops();
/* Let's presume PV guests always boot on vCPU with id 0. */ /* Let's presume PV guests always boot on vCPU with id 0. */
per_cpu(xen_vcpu_id, 0) = 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(); idt_setup_early_handler();
xen_init_capabilities(); xen_init_capabilities();
......
...@@ -128,8 +128,6 @@ static const struct pv_irq_ops xen_irq_ops __initconst = { ...@@ -128,8 +128,6 @@ static const struct pv_irq_ops xen_irq_ops __initconst = {
void __init xen_init_irq_ops(void) 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; pv_irq_ops = xen_irq_ops;
x86_init.irqs.intr_init = xen_init_IRQ; x86_init.irqs.intr_init = xen_init_IRQ;
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册