linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>, Peter Anvin <hpa@zytor.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Andy Lutomirski <luto@kernel.org>, Borislav Petkov <bp@alien8.de>,
	Steven Rostedt <rostedt@goodmis.org>
Subject: [patch 27/41] x86/idt: Move early IDT handler setup to IDT code
Date: Fri, 25 Aug 2017 12:31:30 +0200	[thread overview]
Message-ID: <20170825104415.102134080@linutronix.de> (raw)
In-Reply-To: 20170825103103.287814238@linutronix.de

[-- Attachment #1: x86-idt--Move-early-idt-handler-setup-to-idt-code.patch --]
[-- Type: text/plain, Size: 2098 bytes --]

The early IDT handler setup is done in C entry code for 64 bit and in ASM
entry code for 32 bit. Move the 64bit variant to the IDT code so it can be
shared with 32bit in the next step.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
 arch/x86/include/asm/desc.h |    9 +++++++++
 arch/x86/kernel/head64.c    |    6 +-----
 arch/x86/kernel/idt.c       |   12 ++++++++++++
 3 files changed, 22 insertions(+), 5 deletions(-)

--- a/arch/x86/include/asm/desc.h
+++ b/arch/x86/include/asm/desc.h
@@ -511,6 +511,15 @@ static inline void load_current_idt(void
 		load_idt((const struct desc_ptr *)&idt_descr);
 }
 
+extern void idt_setup_early_handler(void);
+extern void idt_setup_early_traps(void);
+
+#ifdef CONFIG_X86_64
+extern void idt_setup_early_pf(void);
+#else
+static inline void idt_setup_early_pf(void) { }
+#endif
+
 extern void idt_invalidate(void *addr);
 
 #endif /* _ASM_X86_DESC_H */
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -311,8 +311,6 @@ static void __init copy_bootdata(char *r
 
 asmlinkage __visible void __init x86_64_start_kernel(char * real_mode_data)
 {
-	int i;
-
 	/*
 	 * Build-time sanity checks on the kernel image and module
 	 * area mappings. (these are purely build-time and produce no code)
@@ -345,9 +343,7 @@ asmlinkage __visible void __init x86_64_
 
 	kasan_early_init();
 
-	for (i = 0; i < NUM_EXCEPTION_VECTORS; i++)
-		set_intr_gate(i, early_idt_handler_array[i]);
-	load_idt((const struct desc_ptr *)&idt_descr);
+	idt_setup_early_handler();
 
 	copy_bootdata(__va(real_mode_data));
 
--- a/arch/x86/kernel/idt.c
+++ b/arch/x86/kernel/idt.c
@@ -26,6 +26,18 @@ const struct desc_ptr debug_idt_descr =
 #endif
 
 /**
+ * idt_setup_early_handler - Initializes the idt table with early handlers
+ */
+void __init idt_setup_early_handler(void)
+{
+	int i;
+
+	for (i = 0; i < NUM_EXCEPTION_VECTORS; i++)
+		set_intr_gate(i, early_idt_handler_array[i]);
+	load_idt((const struct desc_ptr *)&idt_descr);
+}
+
+/**
  * idt_invalidate - Invalidate interrupt descriptor table
  * @addr:	The virtual address of the 'invalid' IDT
  */

  parent reply	other threads:[~2017-08-25 10:59 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-25 10:31 [patch 00/41] x86: Cleanup IDT code Thomas Gleixner
2017-08-25 10:31 ` [patch 01/41] x86/irq: Remove vector_used_by_percpu_irq() Thomas Gleixner
2017-08-25 10:31 ` [patch 02/41] x86/irq: Unexport used_vectors Thomas Gleixner
2017-08-25 10:31 ` [patch 03/41] x86/irq: Move ifdeffery to header file Thomas Gleixner
2017-08-25 12:45   ` Thomas Gleixner
2017-08-25 10:31 ` [patch 04/41] x86/boot: Move EISA setup to a proper place Thomas Gleixner
2017-08-25 11:59   ` Thomas Gleixner
2017-08-25 10:31 ` [patch 05/41] x86/tracing: Introduce a static key for exception tracing Thomas Gleixner
2017-08-25 15:24   ` Steven Rostedt
2017-08-25 10:31 ` [patch 06/41] x86/traps: Simplify pagefault tracing logic Thomas Gleixner
2017-08-25 14:59   ` Andy Lutomirski
2017-08-25 15:10   ` Steven Rostedt
2017-08-25 15:11     ` Thomas Gleixner
2017-08-25 10:31 ` [patch 07/41] x86/apic: Remove the duplicated tracing version of local_timer_interrupt Thomas Gleixner
2017-08-25 15:29   ` Steven Rostedt
2017-08-25 10:31 ` [patch 08/41] x86/apic: Use this_cpu_ptr in local_timer_interrupt Thomas Gleixner
2017-08-25 10:31 ` [patch 09/41] x86/irq: Get rid of duplicated trace_x86_platform_ipi() code Thomas Gleixner
2017-08-25 15:41   ` Steven Rostedt
2017-08-25 10:31 ` [patch 10/41] x86/apic: Remove the duplicated tracing versions of interrupts Thomas Gleixner
2017-08-25 15:49   ` Steven Rostedt
2017-08-28  7:50     ` Peter Zijlstra
2017-08-25 10:31 ` [patch 11/41] x86/irqwork: Get rid of duplicated tracing interrupt code Thomas Gleixner
2017-08-25 15:55   ` Steven Rostedt
2017-08-25 10:31 ` [patch 12/41] x86/mce: Remove " Thomas Gleixner
2017-08-25 16:09   ` Steven Rostedt
2017-08-25 16:13     ` Thomas Gleixner
2017-08-25 10:31 ` [patch 13/41] x86/smp: Remove pointless duplicated " Thomas Gleixner
2017-08-25 18:24   ` Steven Rostedt
2017-08-25 10:31 ` [patch 14/41] x86/smp: Use static key for reschedule interrupt tracing Thomas Gleixner
2017-08-25 19:40   ` Steven Rostedt
2017-08-25 20:07     ` Thomas Gleixner
2017-08-25 21:10       ` Steven Rostedt
2017-08-25 10:31 ` [patch 15/41] x86/idt: Remove tracing idt completely Thomas Gleixner
2017-08-25 21:18   ` Steven Rostedt
2017-08-25 21:22     ` Thomas Gleixner
2017-08-25 21:29       ` Thomas Gleixner
2017-08-25 10:31 ` [patch 16/41] x86/tracing: Disentangle pagefault and resched IPI tracing key Thomas Gleixner
2017-08-25 10:31 ` [patch 17/41] x86/idt: Unify gate_struct handling for 32/64bit Thomas Gleixner
2017-08-25 10:31 ` [patch 18/41] x86/percpu: Use static initializer for GDT entry Thomas Gleixner
2017-08-25 10:31 ` [patch 19/41] x86/fpu: Use bitfield accessors for desc_struct Thomas Gleixner
2017-08-25 10:31 ` [patch 20/41] x86: Replace access to desc_struct:a/b fields Thomas Gleixner
2017-08-25 11:14   ` Juergen Gross
2017-08-25 13:56   ` Boris Ostrovsky
2017-08-25 14:02     ` Thomas Gleixner
2017-08-25 14:16       ` Steven Rostedt
2017-08-25 10:31 ` [patch 21/41] x86/gdt: Use bitfields for initialization Thomas Gleixner
2017-08-25 10:31 ` [patch 22/41] x86/ldttss: Cleanup 32bit descriptors Thomas Gleixner
2017-08-25 10:31 ` [patch 23/41] x86/idt: Create file for IDT related code Thomas Gleixner
2017-08-25 10:31 ` [patch 24/41] x86/idt: Move 32bit idt_descr to C code Thomas Gleixner
2017-08-25 10:31 ` [patch 25/41] x86/idt: Remove unused set_trap_gate() Thomas Gleixner
2017-08-25 10:31 ` [patch 26/41] x86/idt: Consolidate IDT invalidation Thomas Gleixner
2017-08-25 10:31 ` Thomas Gleixner [this message]
2017-08-25 10:31 ` [patch 28/41] x86/idt: Move early IDT setup out of 32bit asm Thomas Gleixner
2017-08-25 10:31 ` [patch 29/41] x86/idt: Prepare for table based init Thomas Gleixner
2017-08-25 10:31 ` [patch 30/41] x86/idt: Switch early trap init to IDT tables Thomas Gleixner
2017-08-25 14:57   ` Andy Lutomirski
2017-08-25 10:31 ` [patch 31/41] x86/idt: Move debug stack init to table based Thomas Gleixner
2017-08-25 10:31 ` [patch 32/41] x86/idt: Move ist stack based traps to table init Thomas Gleixner
2017-08-25 10:31 ` [patch 33/41] x86/idt: Move regular trap init to tables Thomas Gleixner
2017-08-25 10:31 ` [patch 34/41] x86/idt: Move APIC gate initialization " Thomas Gleixner
2017-08-25 10:31 ` [patch 35/41] x86/idt: Move interrupt gate initialization to IDT code Thomas Gleixner
2017-08-25 10:31 ` [patch 36/41] x86/idt: Remove unused functions/inlines Thomas Gleixner
2017-08-25 10:31 ` [patch 37/41] x86/irq: Get rid of the first_system_vector bogisity Thomas Gleixner
2017-08-25 10:31 ` [patch 38/41] x86/idt: Deinline setup functions Thomas Gleixner
2017-08-25 10:31 ` [patch 39/41] x86/idt: Simplify alloc_intr_gate Thomas Gleixner
2017-08-25 11:16   ` Juergen Gross
2017-08-25 10:31 ` [patch 40/41] x86/idt: Hide set_intr_gate() Thomas Gleixner
2017-08-25 10:56   ` Paolo Bonzini
2017-08-25 10:31 ` [patch 41/41] x86/irq: Remove duplicated used_vectors definition Thomas Gleixner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170825104415.102134080@linutronix.de \
    --to=tglx@linutronix.de \
    --cc=bp@alien8.de \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).