Re: [patch V6 13/37] x86/entry: Switch page fault exception to IDTENTRY_RAW

From: Andy Lutomirski
Date: Tue May 19 2020 - 16:12:52 EST


On Fri, May 15, 2020 at 5:10 PM Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote:
>
>
> Convert page fault exceptions to IDTENTRY_RAW:
> - Implement the C entry point with DEFINE_IDTENTRY_RAW
> - Add the CR2 read into the exception handler
> - Add the idtentry_enter/exit_cond_rcu() invocations in
> in the regular page fault handler and use the regular
> idtentry_enter/exit() for the async PF part.
> - Emit the ASM stub with DECLARE_IDTENTRY_RAW
> - Remove the ASM idtentry in 64bit
> - Remove the CR2 read from 64bit
> - Remove the open coded ASM entry code in 32bit
> - Fixup the XEN/PV code
> - Remove the old prototypes
>

Acked-by: Andy Lutomirski <luto@xxxxxxxxxx>

although if you make the irq_enter_cond_rcu() mode unconditional, then
this comment can go away too:

> + /*
> + * Entry handling for valid #PF from kernel mode is slightly
> + * different: RCU is already watching and rcu_irq_enter() must not
> + * be invoked because a kernel fault on a user space address might
> + * sleep.
> + *
> + * In case the fault hit a RCU idle region the conditional entry
> + * code reenabled RCU to avoid subsequent wreckage which helps
> + * debugability.
> + */
> + rcu_exit = idtentry_enter_cond_rcu(regs);

--Andy