lkml.org 
[lkml]   [2015]   [Oct]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH v2 22/36] x86/entry: Add C code for fast system call entries
From
On Tue, Oct 6, 2015 at 1:48 AM, Andy Lutomirski <luto@kernel.org> wrote:
> This handles both SYSENTER and SYSCALL. The asm glue will take care
> of the differences.

This seems non-optimal.

> +__visible void do_fast_syscall_32(struct pt_regs *regs)

.. so this is the fast case on 32-bit, but:

> + local_irq_enable();
> + if (get_user(*(u32 *)&regs->cx,
> + (u32 __user __force *)(unsigned long)(u32)regs->sp)) {
...
> + local_irq_disable();

this is expensive. Since we now do it in C code and can easily do
this, why does the code not do this all with interrupts disabled,
which is valid for user accesses but disables page faults, and then in
the unlikely situation where that fails, we do it the slow and careful
way?

It would be nice to see this patch series not just get rid of asm
code, but also do things to optimize cases that used to be annoyingly
hard to do in user space. No?

Linus


\
 
 \ /
  Last update: 2015-10-06 10:41    [W:0.541 / U:26.344 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site