[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <78bf7499-b810-4e71-46c0-3d86f6c6d3d7@oracle.com>
Date: Thu, 14 May 2020 20:16:52 -0400
From: Boris Ostrovsky <boris.ostrovsky@...cle.com>
To: Thomas Gleixner <tglx@...utronix.de>,
LKML <linux-kernel@...r.kernel.org>
Cc: x86@...nel.org, "Paul E. McKenney" <paulmck@...nel.org>,
Andy Lutomirski <luto@...nel.org>,
Alexandre Chartre <alexandre.chartre@...cle.com>,
Frederic Weisbecker <frederic@...nel.org>,
Paolo Bonzini <pbonzini@...hat.com>,
Sean Christopherson <sean.j.christopherson@...el.com>,
Masami Hiramatsu <mhiramat@...nel.org>,
Petr Mladek <pmladek@...e.com>,
Steven Rostedt <rostedt@...dmis.org>,
Joel Fernandes <joel@...lfernandes.org>,
Juergen Gross <jgross@...e.com>,
Brian Gerst <brgerst@...il.com>,
Mathieu Desnoyers <mathieu.desnoyers@...icios.com>,
Josh Poimboeuf <jpoimboe@...hat.com>,
Will Deacon <will@...nel.org>,
Tom Lendacky <thomas.lendacky@....com>,
Wei Liu <wei.liu@...nel.org>,
Michael Kelley <mikelley@...rosoft.com>,
Jason Chen CJ <jason.cj.chen@...el.com>,
Zhao Yakui <yakui.zhao@...el.com>,
"Peter Zijlstra (Intel)" <peterz@...radead.org>
Subject: Re: [patch V5 24/38] x86/entry: Provide IDTENTRY_SYSVEC
On 5/12/20 5:01 PM, Thomas Gleixner wrote:
> +
> +/**
> + * DEFINE_IDTENTRY_SYSVEC - Emit code for system vector IDT entry points
> + * @func: Function name of the entry point
> + *
> + * idtentry_enter/exit() and irq_enter/exit_rcu() are invoked before the
> + * function body. KVM L1D flush request is set.
This is used for entry points for Xen and hyperV as well. Even though
it's harmless at the moment, do we still want to set this flag for non-KVM?
-boris
> + *
> + * Runs the function on the interrupt stack if the entry hit kernel mode
> + */
> +#define DEFINE_IDTENTRY_SYSVEC(func) \
> +static void __##func(struct pt_regs *regs); \
> + \
> +__visible noinstr void func(struct pt_regs *regs) \
> +{ \
> + idtentry_enter(regs); \
> + instrumentation_begin(); \
> + irq_enter_rcu(); \
> + kvm_set_cpu_l1tf_flush_l1d(); \
> + if (!irq_needs_irq_stack(regs)) \
> + __##func (regs); \
> + else \
> + run_on_irqstack(__##func, regs); \
> + irq_exit_rcu(); \
> + lockdep_hardirq_exit(); \
> + instrumentation_end(); \
> + idtentry_exit(regs); \
> +} \
> + \
> +static noinline void __##func(struct pt_regs *regs)
Powered by blists - more mailing lists