qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 00/73] tcg: per-cpu locks
@ 2019-03-05 15:01 Richard Henderson
  2019-03-05 16:01 ` Peter Maydell
  0 siblings, 1 reply; 3+ messages in thread
From: Richard Henderson @ 2019-03-05 15:01 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, cota

This is Emilio's v7, unchanged, so I'm not re-posting the 73 patches.

I also didn't want to add Signed-off-by to 73 patches, so I verified
that there was nothing on Emilio's branch that shouldn't be there and
then used git-merge -S --signoff.


r~


The following changes since commit 0984a157c1c053394adbf64ed7de97f1aebe6a2d:

  Merge remote-tracking branch 'remotes/jasowang/tags/net-pull-request' into staging (2019-03-05 09:33:20 +0000)

are available in the Git repository at:

  https://github.com/rth7680/qemu.git tags/pull-tcg-20190305

for you to fetch changes up to af7b762dc2dc519d12d1a36373c3e4f6e0f6d105:

  Merge branch 'cpu-lock-v7' of https://github.com/cota/qemu into staging (2019-03-05 06:41:07 -0800)

----------------------------------------------------------------
* Per-cpu locks

----------------------------------------------------------------
Emilio G. Cota (69):
      cpu: convert queued work to a QSIMPLEQ
      cpu: rename cpu->work_mutex to cpu->lock
      cpu: introduce cpu_mutex_lock/unlock
      cpu: make qemu_work_cond per-cpu
      cpu: move run_on_cpu to cpus-common
      cpu: introduce process_queued_cpu_work_locked
      cpu: make per-CPU locks an alias of the BQL in TCG rr mode
      tcg-runtime: define helper_cpu_halted_set
      ppc: convert to helper_cpu_halted_set
      cris: convert to helper_cpu_halted_set
      hppa: convert to helper_cpu_halted_set
      m68k: convert to helper_cpu_halted_set
      alpha: convert to helper_cpu_halted_set
      microblaze: convert to helper_cpu_halted_set
      cpu: define cpu_halted helpers
      tcg-runtime: convert to cpu_halted_set
      arm: convert to cpu_halted
      ppc: convert to cpu_halted
      sh4: convert to cpu_halted
      i386: convert to cpu_halted
      lm32: convert to cpu_halted
      m68k: convert to cpu_halted
      mips: convert to cpu_halted
      riscv: convert to cpu_halted
      s390x: convert to cpu_halted
      sparc: convert to cpu_halted
      xtensa: convert to cpu_halted
      gdbstub: convert to cpu_halted
      openrisc: convert to cpu_halted
      cpu-exec: convert to cpu_halted
      cpu: convert to cpu_halted
      cpu: define cpu_interrupt_request helpers
      exec: use cpu_reset_interrupt
      arm: convert to cpu_interrupt_request
      i386: convert to cpu_interrupt_request
      i386/kvm: convert to cpu_interrupt_request
      i386/hax-all: convert to cpu_interrupt_request
      i386/whpx-all: convert to cpu_interrupt_request
      i386/hvf: convert to cpu_request_interrupt
      ppc: convert to cpu_interrupt_request
      sh4: convert to cpu_interrupt_request
      cris: convert to cpu_interrupt_request
      hppa: convert to cpu_interrupt_request
      lm32: convert to cpu_interrupt_request
      m68k: convert to cpu_interrupt_request
      mips: convert to cpu_interrupt_request
      nios: convert to cpu_interrupt_request
      s390x: convert to cpu_interrupt_request
      alpha: convert to cpu_interrupt_request
      moxie: convert to cpu_interrupt_request
      sparc: convert to cpu_interrupt_request
      openrisc: convert to cpu_interrupt_request
      unicore32: convert to cpu_interrupt_request
      microblaze: convert to cpu_interrupt_request
      accel/tcg: convert to cpu_interrupt_request
      cpu: convert to interrupt_request
      cpu: call .cpu_has_work with the CPU lock held
      cpu: introduce cpu_has_work_with_iothread_lock
      ppc: convert to cpu_has_work_with_iothread_lock
      mips: convert to cpu_has_work_with_iothread_lock
      s390x: convert to cpu_has_work_with_iothread_lock
      riscv: convert to cpu_has_work_with_iothread_lock
      sparc: convert to cpu_has_work_with_iothread_lock
      xtensa: convert to cpu_has_work_with_iothread_lock
      cpu: rename all_cpu_threads_idle to qemu_tcg_rr_all_cpu_threads_idle
      cpu: protect CPU state with cpu->lock instead of the BQL
      cpus-common: release BQL earlier in run_on_cpu
      cpu: add async_run_on_cpu_no_bql
      cputlb: queue async flush jobs without the BQL

Paolo Bonzini (4):
      ppc: use cpu_reset_interrupt
      i386: use cpu_reset_interrupt
      s390x: use cpu_reset_interrupt
      openrisc: use cpu_reset_interrupt

Richard Henderson (1):
      Merge branch 'cpu-lock-v7' of https://github.com/cota/qemu into staging

 accel/tcg/tcg-runtime.h         |   2 +
 include/qom/cpu.h               | 195 ++++++++++++++++---
 target/i386/cpu.h               |   2 +-
 target/ppc/helper_regs.h        |   2 +-
 accel/tcg/cpu-exec.c            |  40 ++--
 accel/tcg/cputlb.c              |  10 +-
 accel/tcg/tcg-all.c             |  12 +-
 accel/tcg/tcg-runtime.c         |   7 +
 accel/tcg/translate-all.c       |   2 +-
 cpus-common.c                   | 129 ++++++++----
 cpus.c                          | 422 ++++++++++++++++++++++++++++++++--------
 exec.c                          |   2 +-
 gdbstub.c                       |   4 +-
 hw/arm/omap1.c                  |   4 +-
 hw/arm/pxa2xx_gpio.c            |   2 +-
 hw/arm/pxa2xx_pic.c             |   2 +-
 hw/intc/s390_flic.c             |   4 +-
 hw/mips/cps.c                   |   2 +-
 hw/misc/mips_itu.c              |   4 +-
 hw/openrisc/cputimer.c          |   2 +-
 hw/ppc/e500.c                   |   4 +-
 hw/ppc/ppc.c                    |  12 +-
 hw/ppc/ppce500_spin.c           |   6 +-
 hw/ppc/spapr_cpu_core.c         |   4 +-
 hw/ppc/spapr_hcall.c            |   4 +-
 hw/ppc/spapr_rtas.c             |   6 +-
 hw/sparc/leon3.c                |   2 +-
 hw/sparc/sun4m.c                |   8 +-
 hw/sparc64/sparc64.c            |   8 +-
 qom/cpu.c                       |  27 ++-
 stubs/cpu-lock.c                |  28 +++
 target/alpha/cpu.c              |   8 +-
 target/alpha/translate.c        |   6 +-
 target/arm/arm-powerctl.c       |   6 +-
 target/arm/cpu.c                |   8 +-
 target/arm/helper.c             |  16 +-
 target/arm/machine.c            |   2 +-
 target/arm/op_helper.c          |   2 +-
 target/cris/cpu.c               |   2 +-
 target/cris/helper.c            |   6 +-
 target/cris/translate.c         |   5 +-
 target/hppa/cpu.c               |   2 +-
 target/hppa/translate.c         |   3 +-
 target/i386/cpu.c               |   4 +-
 target/i386/hax-all.c           |  36 ++--
 target/i386/helper.c            |   8 +-
 target/i386/hvf/hvf.c           |  12 +-
 target/i386/hvf/x86hvf.c        |  38 ++--
 target/i386/kvm.c               |  82 ++++----
 target/i386/misc_helper.c       |   2 +-
 target/i386/seg_helper.c        |  13 +-
 target/i386/svm_helper.c        |   6 +-
 target/i386/whpx-all.c          |  57 +++---
 target/lm32/cpu.c               |   2 +-
 target/lm32/op_helper.c         |   4 +-
 target/m68k/cpu.c               |   2 +-
 target/m68k/op_helper.c         |   2 +-
 target/m68k/translate.c         |   9 +-
 target/microblaze/cpu.c         |   2 +-
 target/microblaze/translate.c   |   4 +-
 target/mips/cpu.c               |  11 +-
 target/mips/kvm.c               |   4 +-
 target/mips/op_helper.c         |   8 +-
 target/mips/translate.c         |   4 +-
 target/moxie/cpu.c              |   2 +-
 target/nios2/cpu.c              |   2 +-
 target/openrisc/cpu.c           |   4 +-
 target/openrisc/sys_helper.c    |   4 +-
 target/ppc/excp_helper.c        |   6 +-
 target/ppc/kvm.c                |   8 +-
 target/ppc/translate.c          |   6 +-
 target/ppc/translate_init.inc.c |  36 ++--
 target/riscv/cpu.c              |   5 +-
 target/riscv/op_helper.c        |   2 +-
 target/s390x/cpu.c              |  28 ++-
 target/s390x/excp_helper.c      |   4 +-
 target/s390x/kvm.c              |   2 +-
 target/s390x/sigp.c             |   8 +-
 target/sh4/cpu.c                |   2 +-
 target/sh4/helper.c             |   2 +-
 target/sh4/op_helper.c          |   2 +-
 target/sparc/cpu.c              |   6 +-
 target/sparc/helper.c           |   2 +-
 target/unicore32/cpu.c          |   2 +-
 target/unicore32/softmmu.c      |   2 +-
 target/xtensa/cpu.c             |   6 +-
 target/xtensa/exc_helper.c      |   2 +-
 target/xtensa/helper.c          |   2 +-
 stubs/Makefile.objs             |   1 +
 89 files changed, 1024 insertions(+), 456 deletions(-)
 create mode 100644 stubs/cpu-lock.c

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] [PULL 00/73] tcg: per-cpu locks
  2019-03-05 15:01 [Qemu-devel] [PULL 00/73] tcg: per-cpu locks Richard Henderson
@ 2019-03-05 16:01 ` Peter Maydell
  2019-03-05 17:50   ` Emilio G. Cota
  0 siblings, 1 reply; 3+ messages in thread
From: Peter Maydell @ 2019-03-05 16:01 UTC (permalink / raw)
  To: Richard Henderson; +Cc: QEMU Developers, Emilio G. Cota

On Tue, 5 Mar 2019 at 15:01, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> This is Emilio's v7, unchanged, so I'm not re-posting the 73 patches.
>
> I also didn't want to add Signed-off-by to 73 patches, so I verified
> that there was nothing on Emilio's branch that shouldn't be there and
> then used git-merge -S --signoff.

Hi; I'm afraid this doesn't build on OSX:

/Users/pm215/src/qemu-for-merges/target/i386/hvf/x86hvf.c:361:14:
error: unused variable 'interrupt_request' [-Werror,-Wunused-variable]
    uint32_t interrupt_request;
             ^
/Users/pm215/src/qemu-for-merges/target/i386/hvf/x86hvf.c:465:23:
error: incompatible pointer types passing 'X86CPU *' (aka 'struct
X86CPU *') to parameter of type 'CPUState *' (aka 'struct CPUState *')
[-Werror,-Wincompatible-pointer-types]
    return cpu_halted(cpu);
                      ^~~
/Users/pm215/src/qemu-for-merges/include/qom/cpu.h:510:45: note:
passing argument to parameter 'cpu' here
static inline uint32_t cpu_halted(CPUState *cpu)
                                            ^
2 errors generated.


thanks
-- PMM

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] [PULL 00/73] tcg: per-cpu locks
  2019-03-05 16:01 ` Peter Maydell
@ 2019-03-05 17:50   ` Emilio G. Cota
  0 siblings, 0 replies; 3+ messages in thread
From: Emilio G. Cota @ 2019-03-05 17:50 UTC (permalink / raw)
  To: Peter Maydell; +Cc: Richard Henderson, QEMU Developers

On Tue, Mar 05, 2019 at 16:01:45 +0000, Peter Maydell wrote:
> On Tue, 5 Mar 2019 at 15:01, Richard Henderson
> <richard.henderson@linaro.org> wrote:
> >
> > This is Emilio's v7, unchanged, so I'm not re-posting the 73 patches.
> >
> > I also didn't want to add Signed-off-by to 73 patches, so I verified
> > that there was nothing on Emilio's branch that shouldn't be there and
> > then used git-merge -S --signoff.
> 
> Hi; I'm afraid this doesn't build on OSX:
> 
> /Users/pm215/src/qemu-for-merges/target/i386/hvf/x86hvf.c:361:14:
> error: unused variable 'interrupt_request' [-Werror,-Wunused-variable]
>     uint32_t interrupt_request;

Fixed on "i386: convert to cpu_halted".

> /Users/pm215/src/qemu-for-merges/target/i386/hvf/x86hvf.c:465:23:
> error: incompatible pointer types passing 'X86CPU *' (aka 'struct
> X86CPU *') to parameter of type 'CPUState *' (aka 'struct CPUState *')
> [-Werror,-Wincompatible-pointer-types]
>     return cpu_halted(cpu);
>                       ^~~
> /Users/pm215/src/qemu-for-merges/include/qom/cpu.h:510:45: note:
> passing argument to parameter 'cpu' here
> static inline uint32_t cpu_halted(CPUState *cpu)
>                                             ^

Fixed on "i386/hvf: convert to cpu_request_interrupt".


I've pushed a new branch with these two patches fixed up:
  https://github.com/cota/qemu/tree/cpu-lock-v7b

$ git diff cpu-lock-v7..cpu-lock-v7b
diff --git a/target/i386/hvf/x86hvf.c b/target/i386/hvf/x86hvf.c
index 91feafeedc..c13d144fb3 100644
--- a/target/i386/hvf/x86hvf.c
+++ b/target/i386/hvf/x86hvf.c
@@ -358,7 +358,6 @@ bool hvf_inject_interrupts(CPUState *cpu_state)

     uint8_t vector;
     uint64_t intr_type;
-    uint32_t interrupt_request;
     bool have_event = true;
     if (env->interrupt_injected != -1) {
         vector = env->interrupt_injected;
@@ -462,5 +461,5 @@ int hvf_process_events(CPUState *cpu_state)
         apic_handle_tpr_access_report(cpu->apic_state, env->eip,
                                       env->tpr_access_type);
     }
-    return cpu_halted(cpu);
+    return cpu_halted(cpu_state);
 }

Thanks,

		Emilio

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-03-05 17:51 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-03-05 15:01 [Qemu-devel] [PULL 00/73] tcg: per-cpu locks Richard Henderson
2019-03-05 16:01 ` Peter Maydell
2019-03-05 17:50   ` Emilio G. Cota

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).