qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL v2 00/60] Misc patches for soft freeze
@ 2018-06-29  9:51 Paolo Bonzini
  2018-06-29  9:51 ` [Qemu-devel] [PULL 52/60] i386/cpu: make -cpu host support monitor/mwait Paolo Bonzini
  2018-06-29 10:30 ` [Qemu-devel] [PULL v2 00/60] Misc patches for soft freeze Peter Maydell
  0 siblings, 2 replies; 6+ messages in thread
From: Paolo Bonzini @ 2018-06-29  9:51 UTC (permalink / raw)
  To: qemu-devel

The following changes since commit 4a83bf2f339d4b63ecd5ef48b9816c3b7ee24553:

  Merge remote-tracking branch 'remotes/juanquintela/tags/migration/20180627' into staging (2018-06-28 15:31:42 +0100)

are available in the git repository at:


  git://github.com/bonzini/qemu.git tags/for-upstream

for you to fetch changes up to f5a4d8d963a7f87c474a8b16d508321d4e75833c:

  tests/boot-serial: Do not delete the output file in case of errors (2018-06-29 11:47:57 +0200)

----------------------------------------------------------------
* "info mtree" improvements (Alexey)
* fake VPD block limits for SCSI passthrough (Daniel Barboza)
* chardev and main loop fixes (Daniel Berrangé, Sergio, Stefan)
* help fixes (Eduardo)
* pc-dimm refactoring (David)
* tests improvements and fixes (Emilio, Thomas)
* SVM emulation fixes (Jan)
* MemoryRegionCache fix (Eric)
* WHPX improvements (Justin)
* ESP cleanup (Mark)
* -overcommit option (Michael)
* qemu-pr-helper fixes (me)
* "info pic" improvements for x86 (Peter)
* x86 TCG emulation fixes (Richard)
* KVM slot handling fix (Shannon)
* Next round of deprecation (Thomas)
* Windows dump format support (Viktor)

----------------------------------------------------------------
Alexey Kardashevskiy (1):
      memory/hmp: Print owners/parents in "info mtree"

Daniel Henrique Barboza (3):
      hw/scsi: cleanups before VPD BL emulation
      hw/scsi: centralize SG_IO calls into single function
      hw/scsi: add VPD Block Limits emulation

Daniel P. Berrangé (1):
      chardev: don't splatter terminal settings on exit if not previously set

David Hildenbrand (15):
      memory-device: turn alignment assert into check
      exec: check that alignment is a power of two
      pc-dimm: remove leftover "struct pc_dimms_capacity"
      pc: rename pc_dimm_(plug|unplug|...)* into pc_memory_(plug|unplug|...)*
      pc-dimm: rename pc_dimm_memory_* to pc_dimm_*
      pc-dimm: remove pc_dimm_get_free_slot() from header
      pc: factor out pc specific dimm checks into pc_memory_pre_plug()
      nvdimm: no need to overwrite get_vmstate_memory_region()
      hostmem: drop error variable from host_memory_backend_get_memory()
      pc-dimm: merge get_(vmstate_)memory_region()
      nvdimm: convert "unarmed" into a static property
      nvdimm: convert nvdimm_mr into a pointer
      nvdimm: make get_memory_region() perform checks and initialization
      pc-dimm: get_memory_region() will not fail after realize
      numa: report all DIMM/NVDIMMs as plugged memory

Eduardo Habkost (1):
      qemu-options: Add missing newline to -accel help text

Emilio G. Cota (1):
      tests/atomic_add-bench: add -m option to use mutexes

Eric Auger (1):
      exec: Fix MAP_RAM for cached access

Jan Kiszka (3):
      target-i386: Add NMI interception to SVM
      target-i386: Allow interrupt injection after STGI
      target-i386: Mark cpu_vmexit noreturn

Justin Terry (VM) (2):
      WHPX workaround bug in OSVW handling
      WHPX: register for unrecognized MSR exits

Mark Cave-Ayland (2):
      hw/mips/jazz: create ESP device directly via qdev
      esp: remove legacy esp_init() function

Michael S. Tsirkin (2):
      kvm: support -overcommit cpu-pm=on|off
      i386/cpu: make -cpu host support monitor/mwait

Paolo Bonzini (10):
      move public invalidate APIs out of translate-all.{c,h}, clean up
      whpx: commit missing file
      QemuMutex: support --enable-debug-mutex
      osdep: work around Coverity parsing errors
      pr-helper: fix --socket-path default in help
      pr-helper: fix assertion failure on failed multipath PERSISTENT RESERVE IN
      pr-manager-helper: avoid SIGSEGV when writing to the socket fail
      pr-manager: put stubs in .c file
      pr-manager: add query-pr-managers QMP command
      pr-manager-helper: report event on connection/disconnection

Peter Xu (7):
      qemu-thread: introduce qemu-thread-common.h
      configure: enable debug-mutex if debug enabled
      doc: another fix to "info pic"
      ioapic: support "info pic"
      ioapic: some proper indents when dump info
      ioapic: support "info irq"
      hmp: obsolete "info ioapic"

Richard Henderson (1):
      target/i386: Fix BLSR and BLSI

Sergio Lopez (1):
      hw/char/serial: Only retry if qemu_chr_fe_write returns 0

Shannon Zhao (1):
      kvm: Delete the slot if and only if the KVM_MEM_READONLY flag is changed

Stefan Hajnoczi (1):
      main-loop: document IOCanReadHandler

Thomas Huth (3):
      Replace '-enable-kvm' with '-accel kvm' in docs and help texts
      Deprecate the -enable-hax option
      tests/boot-serial: Do not delete the output file in case of errors

Viktor Prutyanov (4):
      dump: add Windows dump format to dump-guest-memory
      dump: use system context in Windows dump
      dump: add fallback KDBG using in Windows dump
      dump: add Windows live system dump

 Makefile.target                   |   1 +
 accel/kvm/kvm-all.c               |  17 +-
 accel/tcg/translate-all.c         |  28 +--
 accel/tcg/translate-all.h         |   1 -
 backends/hostmem.c                |   3 +-
 chardev/char-stdio.c              |   6 +-
 configure                         |  11 +
 docs/COLO-FT.txt                  |   8 +-
 docs/can.txt                      |   4 +-
 docs/multi-thread-compression.txt |   2 +-
 docs/multiseat.txt                |   2 +-
 docs/specs/tpm.txt                |   8 +-
 dump.c                            |  24 ++-
 exec.c                            |  39 +++-
 hmp-commands-info.hx              |   9 +-
 hmp-commands.hx                   |  13 +-
 hmp.c                             |   9 +-
 hw/block/dataplane/virtio-blk.c   |   4 +-
 hw/char/serial.c                  |   2 +-
 hw/i386/kvm/ioapic.c              |  11 +-
 hw/i386/pc.c                      |  73 +++----
 hw/intc/ioapic.c                  |  12 +-
 hw/intc/ioapic_common.c           |  47 ++++-
 hw/mem/memory-device.c            |   8 +-
 hw/mem/nvdimm.c                   |  93 +++++----
 hw/mem/pc-dimm.c                  |  35 ++--
 hw/mips/mips_jazz.c               |  19 +-
 hw/misc/ivshmem.c                 |   3 +-
 hw/ppc/spapr.c                    |  18 +-
 hw/scsi/esp.c                     |  30 ---
 hw/scsi/scsi-disk.c               | 427 +++++++++++++++++++-------------------
 hw/scsi/scsi-generic.c            | 246 ++++++++++++++++------
 hw/scsi/virtio-scsi-dataplane.c   |   4 +-
 include/exec/exec-all.h           |   8 +-
 include/exec/memory.h             |   2 +-
 include/exec/ram_addr.h           |   2 +
 include/hw/i386/ioapic_internal.h |   3 +
 include/hw/i386/pc.h              |   3 -
 include/hw/mem/nvdimm.h           |   2 +-
 include/hw/mem/pc-dimm.h          |  17 +-
 include/hw/scsi/esp.h             |   5 -
 include/hw/scsi/scsi.h            |   6 +-
 include/qemu/main-loop.h          |  14 ++
 include/qemu/osdep.h              |  15 ++
 include/qemu/thread-posix.h       |   4 +
 include/qemu/thread-win32.h       |   4 +
 include/scsi/pr-manager.h         |  11 +-
 include/sysemu/hostmem.h          |   3 +-
 include/sysemu/kvm_int.h          |   1 +
 include/sysemu/sysemu.h           |   1 +
 linux-user/mmap.c                 |   1 -
 memory.c                          |  72 ++++++-
 memory_ldst.inc.c                 |  47 ++---
 monitor.c                         |   4 +-
 numa.c                            |   9 +-
 qapi/block.json                   |  52 +++++
 qapi/misc.json                    |   5 +-
 qemu-doc.texi                     |   5 +
 qemu-options.hx                   |  28 ++-
 scsi/Makefile.objs                |   1 +
 scsi/pr-manager-helper.c          |  28 +++
 scsi/pr-manager-stub.c            |  30 +++
 scsi/pr-manager.c                 |  45 ++++
 scsi/qemu-pr-helper.c             |  21 +-
 target/i386/cpu.c                 |  32 ++-
 target/i386/cpu.h                 |  13 +-
 target/i386/kvm.c                 |  32 +++
 target/i386/monitor.c             |   8 +-
 target/i386/seg_helper.c          |   1 +
 target/i386/svm_helper.c          |   1 +
 target/i386/translate.c           |  29 +--
 target/i386/whp-dispatch.h        |  56 +++++
 target/i386/whpx-all.c            |  54 ++++-
 target/xtensa/op_helper.c         |   9 +-
 tests/atomic_add-bench.c          |  19 +-
 tests/boot-serial-test.c          |  17 +-
 trace/control-target.c            |   1 -
 util/qemu-thread-common.h         |  55 +++++
 util/qemu-thread-posix.c          |  19 +-
 util/qemu-thread-win32.c          |  17 +-
 vl.c                              |  33 ++-
 win_dump.c                        | 385 ++++++++++++++++++++++++++++++++++
 win_dump.h                        | 176 ++++++++++++++++
 83 files changed, 1931 insertions(+), 692 deletions(-)
 create mode 100644 scsi/pr-manager-stub.c
 create mode 100644 target/i386/whp-dispatch.h
 create mode 100644 util/qemu-thread-common.h
 create mode 100644 win_dump.c
 create mode 100644 win_dump.h
-- 
1.8.3.1

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

* [Qemu-devel] [PULL 52/60] i386/cpu: make -cpu host support monitor/mwait
  2018-06-29  9:51 [Qemu-devel] [PULL v2 00/60] Misc patches for soft freeze Paolo Bonzini
@ 2018-06-29  9:51 ` Paolo Bonzini
  2018-06-29 10:30 ` [Qemu-devel] [PULL v2 00/60] Misc patches for soft freeze Peter Maydell
  1 sibling, 0 replies; 6+ messages in thread
From: Paolo Bonzini @ 2018-06-29  9:51 UTC (permalink / raw)
  To: qemu-devel; +Cc: Michael S. Tsirkin

From: "Michael S. Tsirkin" <mst@redhat.com>

When guest CPU PM is enabled, and with -cpu host, expose the host CPU
MWAIT leaf in the CPUID so guest can make good PM decisions.

Note: the result is 100% CPU utilization reported by host as host
no longer knows that the CPU is halted.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20180622192148.178309-3-mst@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 target/i386/cpu.c | 32 ++++++++++++++++++++++----------
 target/i386/cpu.h |  9 +++++++++
 target/i386/kvm.c |  9 +++++++++
 3 files changed, 40 insertions(+), 10 deletions(-)

diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index e6c2f8a..1e6a7d0 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -3959,11 +3959,11 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
         }
         break;
     case 5:
-        /* mwait info: needed for Core compatibility */
-        *eax = 0; /* Smallest monitor-line size in bytes */
-        *ebx = 0; /* Largest monitor-line size in bytes */
-        *ecx = CPUID_MWAIT_EMX | CPUID_MWAIT_IBE;
-        *edx = 0;
+        /* MONITOR/MWAIT Leaf */
+        *eax = cpu->mwait.eax; /* Smallest monitor-line size in bytes */
+        *ebx = cpu->mwait.ebx; /* Largest monitor-line size in bytes */
+        *ecx = cpu->mwait.ecx; /* flags */
+        *edx = cpu->mwait.edx; /* mwait substates */
         break;
     case 6:
         /* Thermal and Power Leaf */
@@ -4804,13 +4804,25 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
     Error *local_err = NULL;
     static bool ht_warned;
 
-    if (xcc->host_cpuid_required && !accel_uses_host_cpuid()) {
-        char *name = x86_cpu_class_get_model_name(xcc);
-        error_setg(&local_err, "CPU model '%s' requires KVM", name);
-        g_free(name);
-        goto out;
+    if (xcc->host_cpuid_required) {
+        if (!accel_uses_host_cpuid()) {
+            char *name = x86_cpu_class_get_model_name(xcc);
+            error_setg(&local_err, "CPU model '%s' requires KVM", name);
+            g_free(name);
+            goto out;
+        }
+
+        if (enable_cpu_pm) {
+            host_cpuid(5, 0, &cpu->mwait.eax, &cpu->mwait.ebx,
+                       &cpu->mwait.ecx, &cpu->mwait.edx);
+            env->features[FEAT_1_ECX] |= CPUID_EXT_MONITOR;
+        }
     }
 
+    /* mwait extended info: needed for Core compatibility */
+    /* We always wake on interrupt even if host does not have the capability */
+    cpu->mwait.ecx |= CPUID_MWAIT_EMX | CPUID_MWAIT_IBE;
+
     if (cpu->apic_id == UNASSIGNED_APIC_ID) {
         error_setg(errp, "apic-id property was not initialized properly");
         return;
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
index 16c59b7..8eaefee 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
@@ -1382,6 +1382,15 @@ struct X86CPU {
     /* if true the CPUID code directly forward host cache leaves to the guest */
     bool cache_info_passthrough;
 
+    /* if true the CPUID code directly forwards
+     * host monitor/mwait leaves to the guest */
+    struct {
+        uint32_t eax;
+        uint32_t ebx;
+        uint32_t ecx;
+        uint32_t edx;
+    } mwait;
+
     /* Features that were filtered out because of missing host capabilities */
     uint32_t filtered_features[FEATURE_WORDS];
 
diff --git a/target/i386/kvm.c b/target/i386/kvm.c
index dc991f6..c5f72d6 100644
--- a/target/i386/kvm.c
+++ b/target/i386/kvm.c
@@ -366,6 +366,15 @@ uint32_t kvm_arch_get_supported_cpuid(KVMState *s, uint32_t function,
         if (!kvm_irqchip_in_kernel()) {
             ret &= ~CPUID_EXT_X2APIC;
         }
+
+        if (enable_cpu_pm) {
+            int disable_exits = kvm_check_extension(s,
+                                                    KVM_CAP_X86_DISABLE_EXITS);
+
+            if (disable_exits & KVM_X86_DISABLE_EXITS_MWAIT) {
+                ret |= CPUID_EXT_MONITOR;
+            }
+        }
     } else if (function == 6 && reg == R_EAX) {
         ret |= CPUID_6_EAX_ARAT; /* safe to allow because of emulated APIC */
     } else if (function == 7 && index == 0 && reg == R_EBX) {
-- 
1.8.3.1

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

* Re: [Qemu-devel] [PULL v2 00/60] Misc patches for soft freeze
  2018-06-29  9:51 [Qemu-devel] [PULL v2 00/60] Misc patches for soft freeze Paolo Bonzini
  2018-06-29  9:51 ` [Qemu-devel] [PULL 52/60] i386/cpu: make -cpu host support monitor/mwait Paolo Bonzini
@ 2018-06-29 10:30 ` Peter Maydell
  2018-06-29 10:31   ` Paolo Bonzini
  1 sibling, 1 reply; 6+ messages in thread
From: Peter Maydell @ 2018-06-29 10:30 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: QEMU Developers

On 29 June 2018 at 10:51, Paolo Bonzini <pbonzini@redhat.com> wrote:
> The following changes since commit 4a83bf2f339d4b63ecd5ef48b9816c3b7ee24553:
>
>   Merge remote-tracking branch 'remotes/juanquintela/tags/migration/20180627' into staging (2018-06-28 15:31:42 +0100)
>
> are available in the git repository at:
>
>
>   git://github.com/bonzini/qemu.git tags/for-upstream
>
> for you to fetch changes up to f5a4d8d963a7f87c474a8b16d508321d4e75833c:
>
>   tests/boot-serial: Do not delete the output file in case of errors (2018-06-29 11:47:57 +0200)
>
> ----------------------------------------------------------------
> * "info mtree" improvements (Alexey)
> * fake VPD block limits for SCSI passthrough (Daniel Barboza)
> * chardev and main loop fixes (Daniel Berrangé, Sergio, Stefan)
> * help fixes (Eduardo)
> * pc-dimm refactoring (David)
> * tests improvements and fixes (Emilio, Thomas)
> * SVM emulation fixes (Jan)
> * MemoryRegionCache fix (Eric)
> * WHPX improvements (Justin)
> * ESP cleanup (Mark)
> * -overcommit option (Michael)
> * qemu-pr-helper fixes (me)
> * "info pic" improvements for x86 (Peter)
> * x86 TCG emulation fixes (Richard)
> * KVM slot handling fix (Shannon)
> * Next round of deprecation (Thomas)
> * Windows dump format support (Viktor)


This still fails in the same way:
  LINK    i386-linux-user/qemu-i386
target/i386/cpu.o: In function `x86_cpu_realizefn':
/home/petmay01/linaro/qemu-for-merges/target/i386/cpu.c:4815:
undefined reference to `enable_cpu_pm
'
collect2: error: ld returned 1 exit status

thanks
-- PMM

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

* Re: [Qemu-devel] [PULL v2 00/60] Misc patches for soft freeze
  2018-06-29 10:30 ` [Qemu-devel] [PULL v2 00/60] Misc patches for soft freeze Peter Maydell
@ 2018-06-29 10:31   ` Paolo Bonzini
  2018-06-29 11:02     ` Peter Maydell
  0 siblings, 1 reply; 6+ messages in thread
From: Paolo Bonzini @ 2018-06-29 10:31 UTC (permalink / raw)
  To: Peter Maydell; +Cc: QEMU Developers

On 29/06/2018 12:30, Peter Maydell wrote:
> 
> This still fails in the same way:
>   LINK    i386-linux-user/qemu-i386
> target/i386/cpu.o: In function `x86_cpu_realizefn':
> /home/petmay01/linaro/qemu-for-merges/target/i386/cpu.c:4815:
> undefined reference to `enable_cpu_pm
> '
> collect2: error: ld returned 1 exit status

Uhm, it worked for me.  I'll just add a stub.

Paolo

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

* Re: [Qemu-devel] [PULL v2 00/60] Misc patches for soft freeze
  2018-06-29 10:31   ` Paolo Bonzini
@ 2018-06-29 11:02     ` Peter Maydell
  2018-06-29 11:10       ` Paolo Bonzini
  0 siblings, 1 reply; 6+ messages in thread
From: Peter Maydell @ 2018-06-29 11:02 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: QEMU Developers

On 29 June 2018 at 11:31, Paolo Bonzini <pbonzini@redhat.com> wrote:
> On 29/06/2018 12:30, Peter Maydell wrote:
>>
>> This still fails in the same way:
>>   LINK    i386-linux-user/qemu-i386
>> target/i386/cpu.o: In function `x86_cpu_realizefn':
>> /home/petmay01/linaro/qemu-for-merges/target/i386/cpu.c:4815:
>> undefined reference to `enable_cpu_pm
>> '
>> collect2: error: ld returned 1 exit status
>
> Uhm, it worked for me.  I'll just add a stub.

Maybe you forgot to push something? I can't see anything
in commit 6f131f13e68d648a8e4 in that merge branch which
looks like it's trying to work around the undefined reference.

thanks
-- PMM

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

* Re: [Qemu-devel] [PULL v2 00/60] Misc patches for soft freeze
  2018-06-29 11:02     ` Peter Maydell
@ 2018-06-29 11:10       ` Paolo Bonzini
  0 siblings, 0 replies; 6+ messages in thread
From: Paolo Bonzini @ 2018-06-29 11:10 UTC (permalink / raw)
  To: Peter Maydell; +Cc: QEMU Developers

On 29/06/2018 13:02, Peter Maydell wrote:
>>> This still fails in the same way:
>>>   LINK    i386-linux-user/qemu-i386
>>> target/i386/cpu.o: In function `x86_cpu_realizefn':
>>> /home/petmay01/linaro/qemu-for-merges/target/i386/cpu.c:4815:
>>> undefined reference to `enable_cpu_pm
>>> '
>>> collect2: error: ld returned 1 exit status
>> Uhm, it worked for me.  I'll just add a stub.
> Maybe you forgot to push something? I can't see anything
> in commit 6f131f13e68d648a8e4 in that merge branch which
> looks like it's trying to work around the undefined reference.

The problematic patch is the next one.  The change was to put the new
code under "if (!kvm_enabled()) goto out;" so that it becomes dead under
linux-user, but it still depends on how much dead code removal the
compiler is allowed to do at -O0.

Paolo

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

end of thread, other threads:[~2018-06-29 11:10 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-06-29  9:51 [Qemu-devel] [PULL v2 00/60] Misc patches for soft freeze Paolo Bonzini
2018-06-29  9:51 ` [Qemu-devel] [PULL 52/60] i386/cpu: make -cpu host support monitor/mwait Paolo Bonzini
2018-06-29 10:30 ` [Qemu-devel] [PULL v2 00/60] Misc patches for soft freeze Peter Maydell
2018-06-29 10:31   ` Paolo Bonzini
2018-06-29 11:02     ` Peter Maydell
2018-06-29 11:10       ` Paolo Bonzini

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).