All of lore.kernel.org
 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 V3 16/44] x86/idt: Remove tracing idt completely
Date: Mon, 28 Aug 2017 08:47:31 +0200	[thread overview]
Message-ID: <20170828064957.378851687@linutronix.de> (raw)
In-Reply-To: <20170828064715.802987421@linutronix.de>

[-- Attachment #1: x86-idt--Remove-tracing-idt-completely.patch --]
[-- Type: text/plain, Size: 9197 bytes --]

No more users of the tracing idt. All exception tracepoints have been moved
into the regular handlers. Get rid of the mess which shouldn't have been
created in the first place.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
 arch/x86/entry/entry_32.S      |   12 +-----
 arch/x86/entry/entry_64.S      |   13 ------
 arch/x86/include/asm/desc.h    |   82 +++--------------------------------------
 arch/x86/include/asm/hw_irq.h  |   20 ----------
 arch/x86/include/asm/segment.h |    3 -
 arch/x86/kernel/tracepoint.c   |   43 ---------------------
 arch/x86/kernel/traps.c        |    6 ---
 7 files changed, 9 insertions(+), 170 deletions(-)

--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -673,16 +673,8 @@ ENTRY(name)				\
 	jmp	ret_from_intr;		\
 ENDPROC(name)
 
-
-#ifdef CONFIG_TRACING
-# define TRACE_BUILD_INTERRUPT(name, nr)	BUILD_INTERRUPT3(trace_##name, nr, smp_trace_##name)
-#else
-# define TRACE_BUILD_INTERRUPT(name, nr)
-#endif
-
 #define BUILD_INTERRUPT(name, nr)		\
 	BUILD_INTERRUPT3(name, nr, smp_##name);	\
-	TRACE_BUILD_INTERRUPT(name, nr)
 
 /* The include is where all of the SMP etc. interrupts come from */
 #include <asm/entry_arch.h>
@@ -880,14 +872,14 @@ ENTRY(xen_failsafe_callback)
 ENDPROC(xen_failsafe_callback)
 
 BUILD_INTERRUPT3(xen_hvm_callback_vector, HYPERVISOR_CALLBACK_VECTOR,
-		xen_evtchn_do_upcall)
+		 xen_evtchn_do_upcall)
 
 #endif /* CONFIG_XEN */
 
 #if IS_ENABLED(CONFIG_HYPERV)
 
 BUILD_INTERRUPT3(hyperv_callback_vector, HYPERVISOR_CALLBACK_VECTOR,
-	hyperv_vector_handler)
+		 hyperv_vector_handler)
 
 #endif /* CONFIG_HYPERV */
 
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -748,18 +748,6 @@ ENTRY(\sym)
 END(\sym)
 .endm
 
-#ifdef CONFIG_TRACING
-#define trace(sym) trace_##sym
-#define smp_trace(sym) smp_trace_##sym
-
-.macro trace_apicinterrupt num sym
-apicinterrupt3 \num trace(\sym) smp_trace(\sym)
-.endm
-#else
-.macro trace_apicinterrupt num sym do_sym
-.endm
-#endif
-
 /* Make sure APIC interrupt handlers end up in the irqentry section: */
 #if defined(CONFIG_FUNCTION_GRAPH_TRACER) || defined(CONFIG_KASAN)
 # define PUSH_SECTION_IRQENTRY	.pushsection .irqentry.text, "ax"
@@ -772,7 +760,6 @@ apicinterrupt3 \num trace(\sym) smp_trac
 .macro apicinterrupt num sym do_sym
 PUSH_SECTION_IRQENTRY
 apicinterrupt3 \num \sym \do_sym
-trace_apicinterrupt \num \sym
 POP_SECTION_IRQENTRY
 .endm
 
--- a/arch/x86/include/asm/desc.h
+++ b/arch/x86/include/asm/desc.h
@@ -421,35 +421,7 @@ static inline void set_nmi_gate(int gate
 }
 #endif
 
-#ifdef CONFIG_TRACING
-extern struct desc_ptr trace_idt_descr;
-extern gate_desc trace_idt_table[];
-static inline void write_trace_idt_entry(int entry, const gate_desc *gate)
-{
-	write_idt_entry(trace_idt_table, entry, gate);
-}
-
-static inline void _trace_set_gate(int gate, unsigned type, void *addr,
-				   unsigned dpl, unsigned ist, unsigned seg)
-{
-	gate_desc s;
-
-	pack_gate(&s, type, (unsigned long)addr, dpl, ist, seg);
-	/*
-	 * does not need to be atomic because it is only done once at
-	 * setup time
-	 */
-	write_trace_idt_entry(gate, &s);
-}
-#else
-static inline void write_trace_idt_entry(int entry, const gate_desc *gate)
-{
-}
-
-#define _trace_set_gate(gate, type, addr, dpl, ist, seg)
-#endif
-
-static inline void _set_gate(int gate, unsigned type, void *addr,
+static inline void _set_gate(int gate, unsigned type, const void *addr,
 			     unsigned dpl, unsigned ist, unsigned seg)
 {
 	gate_desc s;
@@ -460,28 +432,13 @@ static inline void _set_gate(int gate, u
 	 * setup time
 	 */
 	write_idt_entry(idt_table, gate, &s);
-	write_trace_idt_entry(gate, &s);
 }
 
-/*
- * This needs to use 'idt_table' rather than 'idt', and
- * thus use the _nonmapped_ version of the IDT, as the
- * Pentium F0 0F bugfix can have resulted in the mapped
- * IDT being write-protected.
- */
-#define set_intr_gate_notrace(n, addr)					\
-	do {								\
-		BUG_ON((unsigned)n > 0xFF);				\
-		_set_gate(n, GATE_INTERRUPT, (void *)addr, 0, 0,	\
-			  __KERNEL_CS);					\
-	} while (0)
-
-#define set_intr_gate(n, addr)						\
-	do {								\
-		set_intr_gate_notrace(n, addr);				\
-		_trace_set_gate(n, GATE_INTERRUPT, (void *)trace_##addr,\
-				0, 0, __KERNEL_CS);			\
-	} while (0)
+static inline void set_intr_gate(unsigned int n, const void *addr)
+{
+	BUG_ON(n > 0xFF);
+	_set_gate(n, GATE_INTERRUPT, addr, 0, 0, __KERNEL_CS);
+}
 
 extern unsigned long used_vectors[];
 
@@ -565,31 +522,6 @@ static inline void load_debug_idt(void)
 }
 #endif
 
-#ifdef CONFIG_TRACING
-extern atomic_t trace_idt_ctr;
-static inline bool is_trace_idt_enabled(void)
-{
-	if (atomic_read(&trace_idt_ctr))
-		return true;
-
-	return false;
-}
-
-static inline void load_trace_idt(void)
-{
-	load_idt((const struct desc_ptr *)&trace_idt_descr);
-}
-#else
-static inline bool is_trace_idt_enabled(void)
-{
-	return false;
-}
-
-static inline void load_trace_idt(void)
-{
-}
-#endif
-
 /*
  * The load_current_idt() must be called with interrupts disabled
  * to avoid races. That way the IDT will always be set back to the expected
@@ -601,8 +533,6 @@ static inline void load_current_idt(void
 {
 	if (is_debug_idt_enabled())
 		load_debug_idt();
-	else if (is_trace_idt_enabled())
-		load_trace_idt();
 	else
 		load_idt((const struct desc_ptr *)&idt_descr);
 }
--- a/arch/x86/include/asm/hw_irq.h
+++ b/arch/x86/include/asm/hw_irq.h
@@ -46,26 +46,6 @@ extern asmlinkage void deferred_error_in
 extern asmlinkage void call_function_interrupt(void);
 extern asmlinkage void call_function_single_interrupt(void);
 
-#ifdef CONFIG_TRACING
-/* Interrupt handlers registered during init_IRQ */
-#define trace_reschedule_interrupt	reschedule_interrupt
-#define trace_call_function_interrupt	call_function_interrupt
-#define trace_call_function_single_interrupt	call_function_single_interrupt
-#define trace_thermal_interrupt	thermal_interrupt
-#define trace_threshold_interrupt	threshold_interrupt
-#define trace_deferred_error_interrupt	deferred_error_interrupt
-#define trace_irq_work_interrupt irq_work_interrupt
-#define trace_error_interrupt error_interrupt
-#define trace_spurious_interrupt spurious_interrupt
-#define trace_x86_platform_ipi	x86_platform_ipi
-#define trace_apic_timer_interrupt	apic_timer_interrupt
-#define trace_irq_move_cleanup_interrupt  irq_move_cleanup_interrupt
-#define trace_reboot_interrupt  reboot_interrupt
-#define trace_kvm_posted_intr_ipi kvm_posted_intr_ipi
-#define trace_kvm_posted_intr_wakeup_ipi kvm_posted_intr_wakeup_ipi
-#define trace_kvm_posted_intr_nested_ipi kvm_posted_intr_nested_ipi
-#endif /* CONFIG_TRACING */
-
 #ifdef	CONFIG_X86_LOCAL_APIC
 struct irq_data;
 struct pci_dev;
--- a/arch/x86/include/asm/segment.h
+++ b/arch/x86/include/asm/segment.h
@@ -238,9 +238,6 @@
 #ifndef __ASSEMBLY__
 
 extern const char early_idt_handler_array[NUM_EXCEPTION_VECTORS][EARLY_IDT_HANDLER_SIZE];
-#ifdef CONFIG_TRACING
-# define trace_early_idt_handler_array early_idt_handler_array
-#endif
 
 /*
  * Load a segment. Fall back on loading the zero segment if something goes
--- a/arch/x86/kernel/tracepoint.c
+++ b/arch/x86/kernel/tracepoint.c
@@ -10,58 +10,15 @@
 #include <asm/hw_irq.h>
 #include <asm/desc.h>
 
-atomic_t trace_idt_ctr = ATOMIC_INIT(0);
-struct desc_ptr trace_idt_descr = { NR_VECTORS * 16 - 1,
-				(unsigned long) trace_idt_table };
-
-/* No need to be aligned, but done to keep all IDTs defined the same way. */
-gate_desc trace_idt_table[NR_VECTORS] __page_aligned_bss;
-
 DEFINE_STATIC_KEY_FALSE(trace_irqvectors_key);
-static int trace_irq_vector_refcount;
-static DEFINE_MUTEX(irq_vector_mutex);
-
-static void set_trace_idt_ctr(int val)
-{
-	atomic_set(&trace_idt_ctr, val);
-	/* Ensure the trace_idt_ctr is set before sending IPI */
-	wmb();
-}
-
-static void switch_idt(void *arg)
-{
-	unsigned long flags;
-
-	local_irq_save(flags);
-	load_current_idt();
-	local_irq_restore(flags);
-}
 
 int trace_irq_vector_regfunc(void)
 {
 	static_branch_inc(&trace_irqvectors_key);
-
-	mutex_lock(&irq_vector_mutex);
-	if (!trace_irq_vector_refcount) {
-		set_trace_idt_ctr(1);
-		smp_call_function(switch_idt, NULL, 0);
-		switch_idt(NULL);
-	}
-	trace_irq_vector_refcount++;
-	mutex_unlock(&irq_vector_mutex);
 	return 0;
 }
 
 void trace_irq_vector_unregfunc(void)
 {
 	static_branch_dec(&trace_irqvectors_key);
-
-	mutex_lock(&irq_vector_mutex);
-	trace_irq_vector_refcount--;
-	if (!trace_irq_vector_refcount) {
-		set_trace_idt_ctr(0);
-		smp_call_function(switch_idt, NULL, 0);
-		switch_idt(NULL);
-	}
-	mutex_unlock(&irq_vector_mutex);
 }
--- a/arch/x86/kernel/traps.c
+++ b/arch/x86/kernel/traps.c
@@ -939,12 +939,8 @@ void __init early_trap_init(void)
 	 * stack.  Using the original stack works well enough at this
 	 * early stage. DEBUG_STACK will be equipped after cpu_init() in
 	 * trap_init().
-	 *
-	 * We don't need to set trace_idt_table like set_intr_gate(),
-	 * since we don't have trace_debug and it will be reset to
-	 * 'debug' in trap_init() by set_intr_gate_ist().
 	 */
-	set_intr_gate_notrace(X86_TRAP_DB, debug);
+	set_intr_gate(X86_TRAP_DB, debug);
 	/* int3 can be called from all */
 	set_system_intr_gate(X86_TRAP_BP, &int3);
 #ifdef CONFIG_X86_32

  parent reply	other threads:[~2017-08-28  7:00 UTC|newest]

Thread overview: 95+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-28  6:47 [patch V3 00/44] x86: Cleanup IDT code Thomas Gleixner
2017-08-28  6:47 ` [patch V3 01/44] x86/irq: Remove vector_used_by_percpu_irq() Thomas Gleixner
2017-08-29 11:04   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 02/44] x86/irq: Unexport used_vectors Thomas Gleixner
2017-08-29 11:04   ` [tip:x86/apic] x86/irq: Unexport used_vectors[] tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 03/44] x86/irq: Get rid of the first_system_vector bogisity Thomas Gleixner
2017-08-29 11:04   ` [tip:x86/apic] x86/irq: Get rid of the 'first_system_vector' indirection bogosity tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 04/44] x86/irq: Remove duplicated used_vectors definition Thomas Gleixner
2017-08-29 11:05   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 05/44] x86/boot: Move EISA setup to a proper place Thomas Gleixner
2017-08-29 11:05   ` [tip:x86/apic] x86/boot: Move EISA setup to a separate file tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 06/44] x86/tracing: Introduce a static key for exception tracing Thomas Gleixner
2017-08-29 11:06   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 07/44] x86/traps: Simplify pagefault tracing logic Thomas Gleixner
2017-08-29 11:06   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 08/44] x86/apic: Remove the duplicated tracing version of local_timer_interrupt Thomas Gleixner
2017-08-29 11:07   ` [tip:x86/apic] x86/apic: Remove the duplicated tracing version of local_timer_interrupt() tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 09/44] x86/apic: Use this_cpu_ptr in local_timer_interrupt Thomas Gleixner
2017-08-29 11:07   ` [tip:x86/apic] x86/apic: Use this_cpu_ptr() in local_timer_interrupt() tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 10/44] x86/irq: Get rid of duplicated trace_x86_platform_ipi() code Thomas Gleixner
2017-08-29 11:07   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 11/44] x86/apic: Remove the duplicated tracing versions of interrupts Thomas Gleixner
2017-08-29 11:08   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 12/44] x86/irqwork: Get rid of duplicated tracing interrupt code Thomas Gleixner
2017-08-29 11:08   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 13/44] x86/mce: Remove " Thomas Gleixner
2017-08-29 11:08   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 14/44] x86/smp: Remove pointless duplicated " Thomas Gleixner
2017-08-29 11:09   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 15/44] x86/smp: Use static key for reschedule interrupt tracing Thomas Gleixner
2017-08-29 11:09   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` Thomas Gleixner [this message]
2017-08-29 11:10   ` [tip:x86/apic] x86/idt: Remove the tracing IDT completely tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 17/44] x86/idt: Cleanup the i386 low level entry macros Thomas Gleixner
2017-08-29 11:10   ` [tip:x86/apic] x86/idt: Clean up " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 18/44] x86/tracing: Disentangle pagefault and resched IPI tracing key Thomas Gleixner
2017-08-29 11:10   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 19/44] x86/ipi: Make platform IPI depend on APIC Thomas Gleixner
2017-08-29 11:11   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 20/44] x86/irq_work: Make it " Thomas Gleixner
2017-08-29 11:11   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 21/44] x86/tracing: Build tracepoints only when they are used Thomas Gleixner
2017-08-29 11:12   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 22/44] x86/idt: Unify gate_struct handling for 32/64bit Thomas Gleixner
2017-08-29 11:12   ` [tip:x86/apic] x86/idt: Unify gate_struct handling for 32/64-bit kernels tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 23/44] x86/percpu: Use static initializer for GDT entry Thomas Gleixner
2017-08-29 11:13   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 24/44] x86/fpu: Use bitfield accessors for desc_struct Thomas Gleixner
2017-08-29 11:13   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 25/44] x86: Replace access to desc_struct:a/b fields Thomas Gleixner
2017-08-29 11:13   ` [tip:x86/apic] x86/asm: " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 26/44] x86/gdt: Use bitfields for initialization Thomas Gleixner
2017-08-29 11:14   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 27/44] x86/ldttss: Cleanup 32bit descriptors Thomas Gleixner
2017-08-29 11:14   ` [tip:x86/apic] x86/ldttss: Clean up 32-bit descriptors tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 28/44] x86/idt: Create file for IDT related code Thomas Gleixner
2017-08-29 11:15   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 29/44] x86/idt: Move 32bit idt_descr to C code Thomas Gleixner
2017-08-29 11:15   ` [tip:x86/apic] x86/idt: Move 32-bit " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 30/44] x86/idt: Remove unused set_trap_gate() Thomas Gleixner
2017-08-29 11:16   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 31/44] x86/idt: Consolidate IDT invalidation Thomas Gleixner
2017-08-29 11:16   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 32/44] x86/idt: Move early IDT handler setup to IDT code Thomas Gleixner
2017-08-29 11:16   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 33/44] x86/idt: Move early IDT setup out of 32bit asm Thomas Gleixner
2017-08-29 11:17   ` [tip:x86/apic] x86/idt: Move early IDT setup out of 32-bit asm tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 34/44] x86/idt: Prepare for table based init Thomas Gleixner
2017-08-29 11:17   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 35/44] x86/idt: Switch early trap init to IDT tables Thomas Gleixner
2017-08-29 11:18   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 36/44] x86/idt: Move debug stack init to table based Thomas Gleixner
2017-08-29 11:18   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 37/44] x86/idt: Move ist stack based traps to table init Thomas Gleixner
2017-08-29 11:18   ` [tip:x86/apic] x86/idt: Move IST " tip-bot for Thomas Gleixner
2017-09-01  6:28     ` Andrei Vagin
2017-09-01  8:26       ` [PATCH] x86/idt: Fix the X86_TRAP_BP gate Ingo Molnar
2017-09-01  8:59         ` Thomas Gleixner
2017-09-01  9:09         ` [tip:x86/apic] " tip-bot for Ingo Molnar
2017-09-01 14:39         ` [PATCH] " Andrei Vagin
2017-08-28  6:47 ` [patch V3 38/44] x86/idt: Move regular trap init to tables Thomas Gleixner
2017-08-29 11:19   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 39/44] x86/idt: Move APIC gate initialization " Thomas Gleixner
2017-08-29 11:19   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 40/44] x86/idt: Move interrupt gate initialization to IDT code Thomas Gleixner
2017-08-29 11:20   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 41/44] x86/idt: Remove unused functions/inlines Thomas Gleixner
2017-08-29 11:20   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 42/44] x86/idt: Deinline setup functions Thomas Gleixner
2017-08-29 11:20   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 43/44] x86/idt: Simplify alloc_intr_gate Thomas Gleixner
2017-08-28 14:35   ` KY Srinivasan
2017-08-29 11:21   ` [tip:x86/apic] x86/idt: Simplify alloc_intr_gate() tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 44/44] x86/idt: Hide set_intr_gate() Thomas Gleixner
2017-08-29 11:21   ` [tip:x86/apic] " tip-bot for 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=20170828064957.378851687@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 \
    --subject='Re: [patch V3 16/44] x86/idt: Remove tracing idt completely' \
    /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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.