瀏覽代碼

Merge branch 'x86/urgent' into x86/asm, to refresh the tree

Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar 9 年之前
父節點
當前提交
ffc5fce9a9
共有 4 個文件被更改,包括 11 次插入9 次删除
  1. 2 1
      arch/x86/kernel/apic/vector.c
  2. 0 6
      arch/x86/kernel/head_32.S
  3. 3 2
      arch/x86/mm/setup_nx.c
  4. 6 0
      arch/x86/xen/spinlock.c

+ 2 - 1
arch/x86/kernel/apic/vector.c

@@ -256,7 +256,8 @@ static void clear_irq_vector(int irq, struct apic_chip_data *data)
 	struct irq_desc *desc;
 	int cpu, vector;
 
-	BUG_ON(!data->cfg.vector);
+	if (!data->cfg.vector)
+		return;
 
 	vector = data->cfg.vector;
 	for_each_cpu_and(cpu, data->domain, cpu_online_mask)

+ 0 - 6
arch/x86/kernel/head_32.S

@@ -389,12 +389,6 @@ default_entry:
 	/* Make changes effective */
 	wrmsr
 
-	/*
-	 * And make sure that all the mappings we set up have NX set from
-	 * the beginning.
-	 */
-	orl $(1 << (_PAGE_BIT_NX - 32)), pa(__supported_pte_mask + 4)
-
 enable_paging:
 
 /*

+ 3 - 2
arch/x86/mm/setup_nx.c

@@ -32,8 +32,9 @@ early_param("noexec", noexec_setup);
 
 void x86_configure_nx(void)
 {
-	/* If disable_nx is set, clear NX on all new mappings going forward. */
-	if (disable_nx)
+	if (boot_cpu_has(X86_FEATURE_NX) && !disable_nx)
+		__supported_pte_mask |= _PAGE_NX;
+	else
 		__supported_pte_mask &= ~_PAGE_NX;
 }
 

+ 6 - 0
arch/x86/xen/spinlock.c

@@ -27,6 +27,12 @@ static bool xen_pvspin = true;
 
 static void xen_qlock_kick(int cpu)
 {
+	int irq = per_cpu(lock_kicker_irq, cpu);
+
+	/* Don't kick if the target's kicker interrupt is not initialized. */
+	if (irq == -1)
+		return;
+
 	xen_send_IPI_one(cpu, XEN_SPIN_UNLOCK_VECTOR);
 }