All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Weinberger <richard.weinberger@gmail.com>
To: Andy Lutomirski <luto@kernel.org>
Cc: "x86@kernel.org" <x86@kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	"Frédéric Weisbecker" <fweisbec@gmail.com>,
	"Rik van Riel" <riel@redhat.com>,
	"Oleg Nesterov" <oleg@redhat.com>,
	"Denys Vlasenko" <vda.linux@googlemail.com>,
	"Borislav Petkov" <bp@alien8.de>,
	"Kees Cook" <keescook@chromium.org>,
	"Brian Gerst" <brgerst@gmail.com>,
	"Paul McKenney" <paulmck@linux.vnet.ibm.com>
Subject: Re: [PATCH v4 00/17] x86: Rewrite exit-to-userspace code
Date: Mon, 29 Jun 2015 21:46:33 +0200	[thread overview]
Message-ID: <CAFLxGvzDq4NE2CEnCA=ymSw+oq=xw7pTWER_peNftFqHaxAJKg@mail.gmail.com> (raw)
In-Reply-To: <cover.1435602481.git.luto@kernel.org>

Andy,

On Mon, Jun 29, 2015 at 9:33 PM, Andy Lutomirski <luto@kernel.org> wrote:
> This is the first big batch of x86 asm-to-C conversion patches.
>
> The exit-to-usermode code is copied in several places and is written
> in a nasty combination of asm and C.  It's not at all clear what
> it's supposed to do, and the way it's structured makes it very hard
> to work with.  For example, it's not even clear why syscall exit
> hooks are called only once per syscall right now.  (It seems to be a
> side effect of the way that rdi and rdx are handled in the asm loop,
> and it seems reliable, but it's still pointlessly complicated.)  The
> existing code also makes context tracking overly complicated and
> hard to understand.  Finally, it's nearly impossible for anyone to
> change what happens on exit to usermode, since the existing code is
> so fragile.
>
> I tried to clean it up incrementally, but I decided it was too hard.
> Instead, this series just replaces the code.  It seems to work.
>
> Context tracking in particular works very differently now.  The
> low-level entry code checks that we're in CONTEXT_USER and switches
> to CONTEXT_KERNEL.  The exit code does the reverse.  There is no
> need to track what CONTEXT_XYZ state we came from, because we
> already know.  Similarly, SCHEDULE_USER is gone, since we can
> reschedule if needed by simply calling schedule() from C code.
>
> The main things that are missing are that I haven't done the 32-bit
> parts (anyone want to help?) and therefore I haven't deleted the old
> C code.  I also think this may break UML for trivial reasons.
>
> IRQ context tracking is still messy.  One the cleanup progresses
> to the point that we can enter CONTEXT_KERNEL in syscalls before
> enabling interrupts, we can fully clean up IRQ context tracking.
>
> Once these land, I'll send some more :)
>
> Note: we might want to backport patches 1 and 2.
>
> Changes from v3:
>  - Add the syscall_arg_fault_32 test.
>  - Fix a pre-existing bad syscall arg buglet.
>  - Fix an asm glitch due to a bad rebase.
>  - Fix a CONFIG_PROVE_LOCKDEP warning.
> Borislav: the end result of this series differs from the v3.91 that I
> only in the removal of a single trailing tab.  The badarg patch is in
> a different place now, though, since we might want to backport it.
>
> Changes from v2: Misplaced the actual list -- sorry.
>
> Changes from v1:
>  - Fix bisection failure by squashing the 64-bit native and compat syscall
>    conversions together.  The intermediate state didn't built, and fixing
>    it isn't worthwhile (the results will be harder to understand).
>  - Replace context_tracking_assert_state with CT_WARN_ON and ct_state.
>  - The last two patches are now.  I incorrectly thought that we weren't
>    ready for them yet on 32-bit kernels, but I was wrong.
>
> Andy Lutomirski (16):
>   selftests/x86: Add a test for 32-bit fast syscall arg faults
>   x86/entry/64/compat: Fix bad fast syscall arg failure path
>   context_tracking: Add ct_state and CT_WARN_ON
>   notifiers: Assert that RCU is watching in notify_die
>   x86: Move C entry and exit code to arch/x86/entry/common.c
>   x86/traps: Assert that we're in CONTEXT_KERNEL in exception entries
>   x86/entry: Add enter_from_user_mode and use it in syscalls
>   x86/entry: Add new, comprehensible entry and exit hooks
>   x86/entry/64: Really create an error-entry-from-usermode code path
>   x86/entry/64: Migrate 64-bit and compat syscalls to new exit hooks
>   x86/asm/entry/64: Save all regs on interrupt entry
>   x86/asm/entry/64: Simplify irq stack pt_regs handling
>   x86/asm/entry/64: Migrate error and interrupt exit work to C
>   x86/entry: Remove exception_enter from most trap handlers
>   x86/entry: Remove SCHEDULE_USER and asm/context-tracking.h
>   x86/irq: Document how IRQ context tracking works and add an assertion
>
> Ingo Molnar (1):
>   uml: Fix do_signal() prototype

Do you have a git tree for that?

-- 
Thanks,
//richard

  parent reply	other threads:[~2015-06-29 19:46 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-29 19:33 [PATCH v4 00/17] x86: Rewrite exit-to-userspace code Andy Lutomirski
2015-06-29 19:33 ` [PATCH v4 01/17] selftests/x86: Add a test for 32-bit fast syscall arg faults Andy Lutomirski
2015-06-29 19:33 ` [PATCH v4 02/17] x86/entry/64/compat: Fix bad fast syscall arg failure path Andy Lutomirski
2015-06-30 10:58   ` Borislav Petkov
2015-06-30 11:06     ` Ingo Molnar
2015-06-30 16:04     ` Andy Lutomirski
2015-07-01  7:43       ` Ingo Molnar
2015-06-29 19:33 ` [PATCH v4 03/17] uml: Fix do_signal() prototype Andy Lutomirski
2015-06-29 20:47   ` Richard Weinberger
2015-06-29 19:33 ` [PATCH v4 04/17] context_tracking: Add ct_state and CT_WARN_ON Andy Lutomirski
2015-06-30 12:20   ` Borislav Petkov
2015-06-30 12:53     ` Ingo Molnar
2015-06-29 19:33 ` [PATCH v4 05/17] notifiers: Assert that RCU is watching in notify_die Andy Lutomirski
2015-06-29 19:33 ` [PATCH v4 06/17] x86: Move C entry and exit code to arch/x86/entry/common.c Andy Lutomirski
2015-06-30 16:32   ` Borislav Petkov
2015-06-29 19:33 ` [PATCH v4 07/17] x86/traps: Assert that we're in CONTEXT_KERNEL in exception entries Andy Lutomirski
2015-06-30 17:01   ` Borislav Petkov
2015-06-30 17:08     ` Andy Lutomirski
2015-06-30 17:15       ` Borislav Petkov
2015-06-29 19:33 ` [PATCH v4 08/17] x86/entry: Add enter_from_user_mode and use it in syscalls Andy Lutomirski
2015-07-01 10:24   ` Borislav Petkov
2015-06-29 19:33 ` [PATCH v4 09/17] x86/entry: Add new, comprehensible entry and exit hooks Andy Lutomirski
2015-07-02  9:48   ` Borislav Petkov
2015-07-02 16:03     ` Andy Lutomirski
2015-07-02 16:25       ` Borislav Petkov
2015-06-29 19:33 ` [PATCH v4 10/17] x86/entry/64: Really create an error-entry-from-usermode code path Andy Lutomirski
2015-07-02 10:25   ` Borislav Petkov
2015-07-02 15:33     ` Andy Lutomirski
2015-07-02 16:29       ` Borislav Petkov
2015-06-29 19:33 ` [PATCH v4 11/17] x86/entry/64: Migrate 64-bit and compat syscalls to new exit hooks Andy Lutomirski
2015-07-02 10:49   ` Borislav Petkov
2015-07-02 15:56     ` Andy Lutomirski
2015-07-02 16:56   ` Denys Vlasenko
2015-06-29 19:33 ` [PATCH v4 12/17] x86/asm/entry/64: Save all regs on interrupt entry Andy Lutomirski
2015-07-02 10:52   ` Borislav Petkov
2015-07-02 15:33     ` Andy Lutomirski
2015-06-29 19:33 ` [PATCH v4 13/17] x86/asm/entry/64: Simplify irq stack pt_regs handling Andy Lutomirski
2015-06-29 19:33 ` [PATCH v4 14/17] x86/asm/entry/64: Migrate error and interrupt exit work to C Andy Lutomirski
2015-07-02 12:09   ` Borislav Petkov
2015-07-02 16:09     ` Andy Lutomirski
2015-07-02 16:33       ` Borislav Petkov
2015-07-03  6:33       ` Ingo Molnar
2015-07-03 16:27         ` Andy Lutomirski
2015-07-03 16:29           ` Andy Lutomirski
2015-07-03 14:37       ` Denys Vlasenko
2015-07-03 16:24         ` Andy Lutomirski
2015-07-04  8:12           ` Ingo Molnar
2015-06-29 19:33 ` [PATCH v4 15/17] x86/entry: Remove exception_enter from most trap handlers Andy Lutomirski
2015-06-29 19:33 ` [PATCH v4 16/17] x86/entry: Remove SCHEDULE_USER and asm/context-tracking.h Andy Lutomirski
2015-06-29 19:33 ` [PATCH v4 17/17] x86/irq: Document how IRQ context tracking works and add an assertion Andy Lutomirski
2015-06-29 19:46 ` Richard Weinberger [this message]
2015-06-29 20:14   ` [PATCH v4 00/17] x86: Rewrite exit-to-userspace code Andy Lutomirski
2015-07-02 16:45 ` Borislav Petkov
2015-07-03  6:34   ` Ingo Molnar

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='CAFLxGvzDq4NE2CEnCA=ymSw+oq=xw7pTWER_peNftFqHaxAJKg@mail.gmail.com' \
    --to=richard.weinberger@gmail.com \
    --cc=bp@alien8.de \
    --cc=brgerst@gmail.com \
    --cc=fweisbec@gmail.com \
    --cc=keescook@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=oleg@redhat.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=riel@redhat.com \
    --cc=vda.linux@googlemail.com \
    --cc=x86@kernel.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 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.