[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 0/6] user-exec: cpu_resume_from_signal() clea
From: |
Riku Voipio |
Subject: |
Re: [Qemu-devel] [PATCH v2 0/6] user-exec: cpu_resume_from_signal() cleanups |
Date: |
Tue, 7 Jun 2016 10:59:30 +0300 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Mon, Jun 06, 2016 at 05:57:35PM +0100, Peter Maydell wrote:
> On 6 June 2016 at 15:55, Peter Maydell <address@hidden> wrote:
> > Ping!
>
> Thanks for the review, Sergey. Unless anybody else wants to review
> or wants to take it through their tree (Riku?), I propose to apply
> this to master sometime later this week.
Feel free to apply these yourself,
Acked-by: Riku Voipio <address@hidden>
> thanks
> -- PMM
>
> > On 17 May 2016 at 15:18, Peter Maydell <address@hidden> wrote:
> >> I was trying to reason about user-mode's handling of signal masks,
> >> and I found our current code a bit confusing, so I cleaned it up.
> >>
> >> At the moment for user-only mode cpu_resume_from_signal() takes a
> >> usercontext pointer; if this is non-NULL then it has some awkward
> >> OS and CPU specific code to set the signal mask from something
> >> inside the usercontext before doing the same kind of siglongjmp()
> >> that the softmmu cpu_resume_from_signal() does.
> >>
> >> In fact the two use cases are completely separate:
> >> * almost all calls to cpu_resume_from_signal() pass a NULL puc
> >> argument (and most of those are softmmu-only anyway)
> >> * only the code path handle_cpu_signal -> page_unprotect ->
> >> tb_invalidate_phys_page -> cpu_resume_from_signal will pass
> >> a non-NULL puc.
> >>
> >> The cleanups are:
> >> * pull the call to cpu_resume_from_signal() up through the
> >> callstack so we do the signal mask manipulation in
> >> handle_cpu_signal()
> >> * drop the OS/CPU spceific code to get a signal mask out of
> >> a usercontext, because in the specific case of handle_cpu_signal()
> >> we already have the signal mask value and can just use it
> >> * rename cpu_resume_from_signal() to cpu_loop_exit_noexc(),
> >> since all the remaining callsites are not in fact signal handlers
> >> or even called from signal handlers
> >> * get rid of an ugly TARGET_I386 ifdef in user-exec.c by moving
> >> the i386-specific code into its handle_mmu_fault hook.
> >>
> >> Changes v1->v2:
> >> * patches 1-4 are the same and already reviewed
> >> * patch 5 is new, and just adds a clarifying comment to
> >> do_interrupt_user()
> >> * patch 6 is the old patch 5, and now sets env->exception_next_eip
> >> to -1 as a clear indication that the value is not going to be used
> >> (as noted in the comment in the new patch 5)
> >>
> >> thanks
> >> -- PMM
> >>
> >>
> >> Peter Maydell (6):
> >> translate-all.c: Don't pass puc, locked to tb_invalidate_phys_page()
> >> user-exec: Push resume-from-signal code out to handle_cpu_signal()
> >> cpu-exec: Rename cpu_resume_from_signal() to cpu_loop_exit_noexc()
> >> user-exec: Don't reextract sigmask from usercontext pointer
> >> target-i386: Add comment about do_interrupt_user() next_eip argument
> >> target-i386: Move user-mode exception actions out of user-exec.c
> >>
> >> cpu-exec-common.c | 8 ++---
> >> exec.c | 2 +-
> >> hw/i386/kvmvapic.c | 2 +-
> >> include/exec/exec-all.h | 2 +-
> >> target-i386/bpt_helper.c | 2 +-
> >> target-i386/helper.c | 2 ++
> >> target-i386/seg_helper.c | 6 +++-
> >> target-lm32/helper.c | 2 +-
> >> target-s390x/helper.c | 2 +-
> >> target-xtensa/helper.c | 2 +-
> >> translate-all.c | 40 ++++++++++++---------
> >> translate-all.h | 2 +-
> >> user-exec.c | 93
> >> +++++++++++++++++++++---------------------------
> >> 13 files changed, 82 insertions(+), 83 deletions(-)
> >>
> >> --
> >> 1.9.1