qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] 24f797: es1370: more fixes for ADC_FRAMEADR a


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] 24f797: es1370: more fixes for ADC_FRAMEADR and ADC_FRAMEC...
Date: Sun, 21 Oct 2018 05:59:22 -0700

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 24f7973b67dd6036f0c193a92d265722911a620a
      
https://github.com/qemu/qemu/commit/24f7973b67dd6036f0c193a92d265722911a620a
  Author: Paolo Bonzini <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/audio/es1370.c

  Log Message:
  -----------
  es1370: more fixes for ADC_FRAMEADR and ADC_FRAMECNT

They are not consecutive with DAC1_FRAME* and DAC2_FRAME*; Coverity
still complains about es1370_read, while es1370_write was fixed in
commit cf9270e5220671f49cc238deaf6136669cc07ae1.

Fixes: 154c1d1f960c5147a3f8ef00907504112f271cd8
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 05ff8dc32fa124e7bbf77a257f863f3685c7be9d
      
https://github.com/qemu/qemu/commit/05ff8dc32fa124e7bbf77a257f863f3685c7be9d
  Author: Artem Pisarenko <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M include/qemu/timer.h
    M slirp/ip6_icmp.c
    M ui/input.c
    M util/qemu-timer.c

  Log Message:
  -----------
  Revert some patches from recent [PATCH v6] "Fixing record/replay and adding 
reverse debugging"

That patch series introduced new virtual clock type for use in external
subsystems. It breaks desired behavior in non-record/replay usage
scenarios due to a small change to existing behavior.  Processing of
virtual timers belonging to new clock type is kicked off to the main
loop, which makes these timers asynchronous with vCPU thread and,
in icount mode, with whole guest execution. This breaks expected
determinism in non-record/replay icount mode of emulation where these
"external subsystems" are isolated from the host (i.e. they are
external only to guest core, not to the entire emulation environment).

Example for slirp ("user" backend for network device):
User runs qemu in icount mode with rtc clock=vm without any external
communication interfaces but with "-netdev user,restrict=on". It expects
deterministic execution, because network services are emulated inside
qemu and isolated from host. There are no reasons to get reply from DHCP
server with different delay or something like that.

The next patches revert reimplements the same changes in a better way.
This reverts commit 87f4fe7653baf55b5c2f2753fe6003f473c07342.
This reverts commit 775a412bf83f6bc0c5c02091ee06cf649b34c593.
This reverts commit 9888091404a702d7ec79d51b088d994b9fc121bd.

Signed-off-by: Artem Pisarenko <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 89a603a0c80ae3d6a8711571550b2ae9a01ea909
      
https://github.com/qemu/qemu/commit/89a603a0c80ae3d6a8711571550b2ae9a01ea909
  Author: Artem Pisarenko <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M include/block/aio.h
    M include/qemu/timer.h
    M tests/ptimer-test-stubs.c
    M util/qemu-timer.c

  Log Message:
  -----------
  qemu-timer: introduce timer attributes

Attributes are simple flags, associated with individual timers for their
whole lifetime.  They intended to be used to mark individual timers for
special handling when they fire.

New/init functions family in timer interface updated and refactored (new
'attribute' argument added, timer_list replaced with timer_list_group+type
combinations, comments improved to avoid info duplication).  Also existing
aio interface extended with attribute-enabled variants of functions,
which create/initialize timers.

Signed-off-by: Artem Pisarenko <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: e81f86790f561437b70549aff05433731b464e62
      
https://github.com/qemu/qemu/commit/e81f86790f561437b70549aff05433731b464e62
  Author: Artem Pisarenko <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M include/qemu/timer.h
    M slirp/ip6_icmp.c
    M ui/input.c
    M util/qemu-timer.c

  Log Message:
  -----------
  qemu-timer: avoid checkpoints for virtual clock timers in external subsystems

Adds EXTERNAL attribute definition to qemu timers subsystem and assigns
it to virtual clock timers, used in slirp (ICMP IPv6) and ui (key queue).
Virtual clock processing in rr mode can use this attribute instead of a
separate clock type.

Fixes: 87f4fe7653baf55b5c2f2753fe6003f473c07342
Fixes: 775a412bf83f6bc0c5c02091ee06cf649b34c593
Fixes: 9888091404a702d7ec79d51b088d994b9fc121bd
Signed-off-by: Artem Pisarenko <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: b31c003895b030bea1319037d6bec976d47d9020
      
https://github.com/qemu/qemu/commit/b31c003895b030bea1319037d6bec976d47d9020
  Author: Paolo Bonzini <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M target/i386/kvm.c

  Log Message:
  -----------
  target-i386: kvm: do not initialize padding fields

The exception.pad field is going to be renamed to pending in an upcoming
header file update.  Remove the unnecessary initialization; it was
introduced to please valgrind (commit 7e680753cfa2) but they were later
rendered unnecessary by commit 076796f8fd27f4d, which added the "= {}"
initializer to the declaration of "events".  Therefore the patch does
not change behavior in any way.

Reviewed-by: Peter Maydell <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 966f2ec3ac854275c2ab0747785a4a91ef832eaf
      
https://github.com/qemu/qemu/commit/966f2ec3ac854275c2ab0747785a4a91ef832eaf
  Author: Paolo Bonzini <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M linux-headers/asm-powerpc/kvm.h
    M linux-headers/asm-x86/kvm.h
    M linux-headers/linux/kvm.h

  Log Message:
  -----------
  linux-headers: update to 4.20-rc1

This brings in eVMCS and coalesced PIO support, as well as other features we do
not support yet.

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: e6d34aeea6aad52b01956d9cc29e81887939b9ea
      
https://github.com/qemu/qemu/commit/e6d34aeea6aad52b01956d9cc29e81887939b9ea
  Author: Peng Hao <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M accel/kvm/kvm-all.c
    M include/exec/memory.h
    M memory.c

  Log Message:
  -----------
  target-i386 : add coalesced_pio API

the primary API realization.

Signed-off-by: Peng Hao <address@hidden>
Reviewed-by: Eduardo Habkost <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: f98167ea069190f738c1e79188b4b2325ca08006
      
https://github.com/qemu/qemu/commit/f98167ea069190f738c1e79188b4b2325ca08006
  Author: Peng Hao <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/timer/mc146818rtc.c

  Log Message:
  -----------
  target-i386: add rtc 0x70 port as coalesced_pio

Signed-off-by: Peng Hao <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 37abf8d234d41a7cda986c594c9107c9edddb7d9
      
https://github.com/qemu/qemu/commit/37abf8d234d41a7cda986c594c9107c9edddb7d9
  Author: Peng Hao <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/pci-host/piix.c

  Log Message:
  -----------
  target-i386: add i440fx 0xcf8 port as coalesced_pio

Signed-off-by: Peng Hao <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: a8de0115008184788525a0fab5cb74368be808a4
      
https://github.com/qemu/qemu/commit/a8de0115008184788525a0fab5cb74368be808a4
  Author: Peng Hao <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/pci-host/q35.c

  Log Message:
  -----------
  target-i386: add q35 0xcf8 port as coalesced_pio

Signed-off-by: Peng Hao <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: ca9759c2a92f528f256fef0e3922416f7bb47bf9
      
https://github.com/qemu/qemu/commit/ca9759c2a92f528f256fef0e3922416f7bb47bf9
  Author: Pavel Dovgalyuk <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M replay/replay-events.c
    M replay/replay.c

  Log Message:
  -----------
  replay: don't process events at virtual clock checkpoint

As QEMU becomes more multi-threaded and non-synchronized, checkpoints
move from thread to thread. And the event queue that processed at checkpoints
should belong to the same thread in both record and replay executions.
This patch disables asynchronous event processing at virtual clock
checkpoint, because it may be invoked in different threads at record and
replay. This patch is temporary fix until the checkpoints are completely
refactored.

Signed-off-by: Pavel Dovgalyuk <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 6b7a98303b53b0cd94c2755b1f5c0734bbaa5347
      
https://github.com/qemu/qemu/commit/6b7a98303b53b0cd94c2755b1f5c0734bbaa5347
  Author: Vitaly Kuznetsov <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M target/i386/cpu.c
    M target/i386/cpu.h
    M target/i386/hyperv-proto.h
    M target/i386/kvm.c

  Log Message:
  -----------
  i386/kvm: add support for Hyper-V IPI send

Hyper-V PV IPI support is merged to KVM, enable the feature in Qemu. When
enabled, this allows Windows guests to send IPIs to other vCPUs with a
single hypercall even when there are >64 vCPUs in the request.

Signed-off-by: Vitaly Kuznetsov <address@hidden>
Reviewed-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: b4e1af8961bf9b0d415abdf3e4908168daea6059
      
https://github.com/qemu/qemu/commit/b4e1af8961bf9b0d415abdf3e4908168daea6059
  Author: Roman Bolshakov <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M target/i386/hvf/x86_decode.c
    M target/i386/hvf/x86_decode.h

  Log Message:
  -----------
  i386: hvf: Fix register refs if REX is present

According to Intel(R)64 and IA-32 Architectures Software Developer's
Manual, the following one-byte registers should be fetched when REX
prefix is present (sorted by reg encoding index):
AL, CL, DL, BL, SPL, BPL, SIL, DIL, R8L - R15L

The first 8 are fetched if REX.R is zero, the last 8 if non-zero.

The following registers should be fetched for instructions without REX
prefix (also sorted by reg encoding index):
AL, CL, DL, BL, AH, CH, DH, BH

Current emulation code doesn't handle accesses to SPL, BPL, SIL, DIL
when REX is present, thefore an instruction 40883e "mov %dil,(%rsi)" is
decoded as "mov %bh,(%rsi)".

That caused an infinite loop in vp_reset:
https://lists.gnu.org/archive/html/qemu-devel/2018-10/msg03293.html

Signed-off-by: Roman Bolshakov <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 92cc3aaa1fb4165a6236a2265c6be4ea531d0988
      
https://github.com/qemu/qemu/commit/92cc3aaa1fb4165a6236a2265c6be4ea531d0988
  Author: Roman Bolshakov <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M include/sysemu/hvf.h
    M target/i386/hvf/hvf.c

  Log Message:
  -----------
  i386: hvf: Remove hvf_disabled

accel_init_machine sets *(acc->allowed) to true if acc->init_machine(ms)
succeeds. There's no need to have both hvf_allowed and hvf_disabled.

Signed-off-by: Roman Bolshakov <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 238d1240d921e6624f4c6d2f063b5c1750d55210
      
https://github.com/qemu/qemu/commit/238d1240d921e6624f4c6d2f063b5c1750d55210
  Author: Artem Pisarenko <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M qemu-options.hx

  Log Message:
  -----------
  vl: improve/fix documentation related to RTC function

Documentation describing -rtc option updated to better match current
implementation and highlight some important specifics.

Signed-off-by: Artem Pisarenko <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 7e166ebd8c7bade39002b0a81a1795775af21dde
      
https://github.com/qemu/qemu/commit/7e166ebd8c7bade39002b0a81a1795775af21dde
  Author: Artem Pisarenko <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M vl.c

  Log Message:
  -----------
  vl: refactor -rtc option references

Improve code readability and prepare for fixing bug #1797033

Signed-off-by: Artem Pisarenko <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: eb6a52099160f1a6e66d7ee042bbf7fb5dba67d6
      
https://github.com/qemu/qemu/commit/eb6a52099160f1a6e66d7ee042bbf7fb5dba67d6
  Author: Artem Pisarenko <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M vl.c

  Log Message:
  -----------
  Fixes RTC bug with base datetime shifts in clock=vm

This makes all current "-rtc" option parameters combinations produce
fixed/unambiguous RTC timedate reference for hardware emulation
frontends.
It restores determinism of guest execution when used with clock=vm and
specified base <datetime> value.

Buglink: https://bugs.launchpad.net/qemu/+bug/1797033
Signed-off-by: Artem Pisarenko <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: ac0989f53dd08ba7831130396f794b3e3bdf2d1a
      
https://github.com/qemu/qemu/commit/ac0989f53dd08ba7831130396f794b3e3bdf2d1a
  Author: Artem Pisarenko <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M qapi/misc.json
    M vl.c

  Log Message:
  -----------
  vl, qapi: offset calculation in RTC_CHANGE event reverted

Return value of qemu_timedate_diff(), used for calculation offset in
QAPI 'RTC_CHANGE' event, restored to keep compatibility. Since it
wasn't documented that difference is relative to host clock
advancement, this change also adds important note to 'RTC_CHANGE'
event description to highlight established implementation specifics.

Signed-off-by: Artem Pisarenko <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 8b5e6caf01f778a257721cae499392e8f1d55ddb
      
https://github.com/qemu/qemu/commit/8b5e6caf01f778a257721cae499392e8f1d55ddb
  Author: Igor Mammedov <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/core/hotplug.c
    M hw/core/qdev.c
    M hw/scsi/virtio-scsi.c
    M include/hw/hotplug.h

  Log Message:
  -----------
  call HotplugHandler->plug() as the last step in device realization

When [2] was fixed it was agreed that adding and calling post_plug()
callback after device_reset() was low risk approach to hotfix issue
right before release. So it was merged instead of moving already
existing plug() callback after device_reset() is called which would
be more risky and require all plug() callbacks audit.

Looking at the current plug() callbacks, it doesn't seem that moving
plug() callback after device_reset() is breaking anything, so here
goes agreed upon [3] proper fix which essentially reverts [1][2]
and moves plug() callback after device_reset().
This way devices always comes to plug() stage, after it's been fully
initialized (including being reset), which fixes race condition [2]
without need for an extra post_plug() callback.

 1. (25e897881 "qdev: add HotplugHandler->post_plug() callback")
 2. (8449bcf94 "virtio-scsi: fix hotplug ->reset() vs event race")
 3. https://www.mail-archive.com/address@hidden/msg549915.html

Signed-off-by: Igor Mammedov <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Stefan Hajnoczi <address@hidden>
Tested-by: Pierre Morel<address@hidden>
Acked-by: Pierre Morel<address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: a519e3894436501c5c6da5e82f6b867d2c05afb5
      
https://github.com/qemu/qemu/commit/a519e3894436501c5c6da5e82f6b867d2c05afb5
  Author: Li Qiang <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/misc/edu.c

  Log Message:
  -----------
  hw: edu: drop DO_UPCAST

Signed-off-by: Li Qiang <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: e6aa5ba4ac423dd282c831402110970ee278392e
      
https://github.com/qemu/qemu/commit/e6aa5ba4ac423dd282c831402110970ee278392e
  Author: Paolo Bonzini <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/scsi/scsi-disk.c

  Log Message:
  -----------
  scsi-disk: fix double completion of failing passthrough requests

If a command fails with a sense that scsi_sense_buf_to_errno converts to
ECANCELED/EAGAIN/ENOTCONN or with a unit attention, scsi_req_complete is
called twice.  This caused a crash.

Reported-by: Wangguang <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 40dce4ee61c68395f6d463fae792f61b7c003bce
      
https://github.com/qemu/qemu/commit/40dce4ee61c68395f6d463fae792f61b7c003bce
  Author: Paolo Bonzini <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/scsi/scsi-disk.c

  Log Message:
  -----------
  scsi-disk: fix rerror/werror=ignore

rerror=ignore was returning true from scsi_handle_rw_error but the callers were 
not
calling scsi_req_complete when rerror=ignore returns true (this is the correct 
thing
to do when true is returned after executing a passthrough command).  Fix this by
calling it in scsi_handle_rw_error.

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 1ba5c3a95443a4c52baaf5339fda1b88c09f3203
      
https://github.com/qemu/qemu/commit/1ba5c3a95443a4c52baaf5339fda1b88c09f3203
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/misc/hyperv_testdev.c

  Log Message:
  -----------
  hyperv_testdev: refactor for better maintainability

Make hyperv_testdev slightly easier to follow and enhance in future.
For that, put the hyperv sint routes (wrapped in a helper structure) on
a linked list rather than a fixed-size array.  Besides, this way
HvSintRoute can be treated as an opaque structure, allowing for easier
refactoring of the core Hyper-V SynIC code in followup pathches.

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: cc4669f06539679f2ed256b37dd741580add1ff9
      
https://github.com/qemu/qemu/commit/cc4669f06539679f2ed256b37dd741580add1ff9
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/misc/hyperv_testdev.c

  Log Message:
  -----------
  hyperv_testdev: drop unnecessary includes

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 42e4b0e1fb7f3ac793fe48adf2f1ad95b5782a6b
      
https://github.com/qemu/qemu/commit/42e4b0e1fb7f3ac793fe48adf2f1ad95b5782a6b
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M target/i386/hyperv.c

  Log Message:
  -----------
  hyperv: cosmetic: g_malloc -> g_new

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: bd4ed63caafe0bd14393db0d7ef3a70860ec6f2d
      
https://github.com/qemu/qemu/commit/bd4ed63caafe0bd14393db0d7ef3a70860ec6f2d
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M target/i386/hyperv.c

  Log Message:
  -----------
  hyperv: synic: only setup ack notifier if there's a callback

There's no point setting up an sint ack notifier if no callback is
specified.

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: b56920245c1f708976b6f1bf8ddc4a1e9bd33059
      
https://github.com/qemu/qemu/commit/b56920245c1f708976b6f1bf8ddc4a1e9bd33059
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/misc/hyperv_testdev.c
    M target/i386/hyperv.c
    M target/i386/hyperv.h

  Log Message:
  -----------
  hyperv: allow passing arbitrary data to sint ack callback

Make sint ack callback accept an opaque pointer, that is stored on
sint_route at creation time.

This allows for more convenient interaction with the callback.

Besides, nothing outside hyperv.c should need to know the layout of
HvSintRoute fields any more so its declaration can be removed from the
header.

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 09cfb2f6350512eb3ef7e9e2136daabbcf265880
      
https://github.com/qemu/qemu/commit/09cfb2f6350512eb3ef7e9e2136daabbcf265880
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M target/i386/hyperv.c

  Log Message:
  -----------
  hyperv: address HvSintRoute by X86CPU pointer

Use X86CPU pointer to refer to the respective HvSintRoute instead of
vp_index.  This is more convenient and also paves the way for future
enhancements.

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 3d3e6e85c3ebd5cd551133af9bace084360307a3
      
https://github.com/qemu/qemu/commit/3d3e6e85c3ebd5cd551133af9bace084360307a3
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/misc/hyperv_testdev.c
    M target/i386/hyperv.c
    M target/i386/hyperv.h

  Log Message:
  -----------
  hyperv: make HvSintRoute reference-counted

Multiple entities (e.g. VMBus devices) can use the same SINT route.  To
make their lives easier in maintaining SINT route ownership, make it
reference-counted.  Adjust the respective API names accordingly.

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 2486cb8eba919980091c754256cd014342738a6a
      
https://github.com/qemu/qemu/commit/2486cb8eba919980091c754256cd014342738a6a
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/misc/hyperv_testdev.c
    M target/i386/hyperv.c
    M target/i386/hyperv.h

  Log Message:
  -----------
  hyperv: rename kvm_hv_sint_route_set_sint

There's nothing kvm-specific in it so follow the suite and replace
"kvm_hv" prefix with "hyperv".

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 5116122af70357d895ecc61c0211dbf786226081
      
https://github.com/qemu/qemu/commit/5116122af70357d895ecc61c0211dbf786226081
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    A include/hw/hyperv/hyperv-proto.h
    M target/i386/hyperv-proto.h

  Log Message:
  -----------
  hyperv: split hyperv-proto.h into x86 and arch-independent parts

Some parts of the Hyper-V hypervisor-guest interface appear to be
target-independent, so move them into a proper header.

Not that Hyper-V ARM64 emulation is around the corner but it seems more
conveninent to have most of Hyper-V and VMBus target-independent, and
allows to avoid conflicts with inclusion of arch-specific headers down
the road in VMBus implementation.

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 51f0ac63812abf41d3a9284a272c6275d7318705
      
https://github.com/qemu/qemu/commit/51f0ac63812abf41d3a9284a272c6275d7318705
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M target/i386/hyperv.c
    M target/i386/hyperv.h

  Log Message:
  -----------
  hyperv: make hyperv_vp_index inline

Also make the inverse function, hyperv_find_vcpu, static as it's not
used outside hyperv.c

This paves the way to making hyperv.c built optionally.

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 701189e31140a7c82ec02a7f4ca632cfd6a8559d
      
https://github.com/qemu/qemu/commit/701189e31140a7c82ec02a7f4ca632cfd6a8559d
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/Makefile.objs
    A hw/hyperv/Makefile.objs
    A hw/hyperv/hyperv.c
    A hw/hyperv/hyperv_testdev.c
    M hw/misc/Makefile.objs
    R hw/misc/hyperv_testdev.c
    A include/hw/hyperv/hyperv.h
    M target/i386/hyperv.c
    M target/i386/hyperv.h
    M target/i386/kvm.c

  Log Message:
  -----------
  hyperv: factor out arch-independent API into hw/hyperv

A significant part of hyperv.c is not actually tied to x86, and can
be moved to hw/.

This will allow to maintain most of Hyper-V and VMBus
target-independent, and to avoid conflicts with inclusion of
arch-specific headers down the road in VMBus implementation.

Also this stuff can now be opt-out with CONFIG_HYPERV.

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 02ef67240b4cd4a33e8e4d118fc827e6678b7d80
      
https://github.com/qemu/qemu/commit/02ef67240b4cd4a33e8e4d118fc827e6678b7d80
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    A default-configs/hyperv.mak
    M default-configs/i386-softmmu.mak

  Log Message:
  -----------
  default-configs: collect CONFIG_HYPERV* in hyperv.mak

Accumulate HYPERV config options in a dedicated file.  There are only
two so far; more will be added later.

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 8417442a34f78f1e1dda87aff27c8a42124f4d42
      
https://github.com/qemu/qemu/commit/8417442a34f78f1e1dda87aff27c8a42124f4d42
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M target/i386/Makefile.objs
    A target/i386/hyperv-stub.c
    M target/i386/hyperv.h

  Log Message:
  -----------
  i386: add hyperv-stub for CONFIG_HYPERV=n

This will allow to build slightly leaner QEMU that supports some HyperV
features of KVM (e.g. SynIC timers, PV spinlocks, APIC assists, etc.)
but nothing else on the QEMU side.

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 729ce7e1b6b6e035012544f51878d1ef5864bf39
      
https://github.com/qemu/qemu/commit/729ce7e1b6b6e035012544f51878d1ef5864bf39
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M target/i386/kvm.c

  Log Message:
  -----------
  hyperv:synic: split capability testing and setting

Put a bit more consistency into handling KVM_CAP_HYPERV_SYNIC capability,
by checking its availability and determining the feasibility of hv-synic
property first, and enabling it later.

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 606c34bfd57a0ecda67b395bea022bb307a5384e
      
https://github.com/qemu/qemu/commit/606c34bfd57a0ecda67b395bea022bb307a5384e
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/hyperv/hyperv.c
    M include/hw/hyperv/hyperv.h
    M target/i386/hyperv-stub.c
    M target/i386/hyperv.c
    M target/i386/hyperv.h
    M target/i386/kvm.c
    M target/i386/machine.c

  Log Message:
  -----------
  hyperv: qom-ify SynIC

Make Hyper-V SynIC a device which is attached as a child to a CPU.  For
now it only makes SynIC visibile in the qom hierarchy, and maintains its
internal fields in sync with the respecitve msrs of the parent cpu (the
fields will be used in followup patches).

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 9b4cf107b09d18ac30f46fd1c4de8585ccba030c
      
https://github.com/qemu/qemu/commit/9b4cf107b09d18ac30f46fd1c4de8585ccba030c
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M include/hw/i386/pc.h
    M target/i386/cpu.c
    M target/i386/cpu.h
    M target/i386/kvm.c

  Log Message:
  -----------
  hyperv: only add SynIC in compatible configurations

Certain configurations do not allow SynIC to be used in QEMU.  In
particular,

- when hyperv_vpindex is off, SINT routes can't be used as they refer to
  the destination vCPU by vp_index

- older KVM (which doesn't expose KVM_CAP_HYPERV_SYNIC2) zeroes out
  SynIC message and event pages on every msr load, breaking migration

OTOH in-KVM users of SynIC -- SynIC timers -- do work in those
configurations, and we shouldn't stop the guest from using them.

To cover both scenarios, introduce an X86CPU property that makes CPU
init code to skip creation of the SynIC object (and thus disables any
SynIC use in QEMU) but keeps the KVM part of the SynIC working.
The property is clear by default but is set via compat logic for older
machine types.

As a result, when hv_synic and a modern machine type are specified, QEMU
will refuse to run unless vp_index is on and the kernel is recent
enough.  OTOH with an older machine type QEMU will run fine with
hv_synic=on against an older kernel and/or without vp_index enabled but
will disallow the in-QEMU uses of SynIC (in e.g. VMBus).

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 267e071bd6d675c15e7ffbf8aaf44d488ebd5c83
      
https://github.com/qemu/qemu/commit/267e071bd6d675c15e7ffbf8aaf44d488ebd5c83
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/hyperv/hyperv.c
    M target/i386/hyperv.c

  Log Message:
  -----------
  hyperv: make overlay pages for SynIC

Per Hyper-V spec, SynIC message and event flag pages are to be
implemented as so called overlay pages.  That is, they are owned by the
hypervisor and, when mapped into the guest physical address space,
overlay the guest physical pages such that

1) the overlaid guest page becomes invisible to the guest CPUs until the
   overlay page is turned off
2) the contents of the overlay page is preserved when it's turned off
   and back on, even at a different address; it's only zeroed at vcpu
   reset

This particular nature of SynIC message and event flag pages is ignored
in the current code, and guest physical pages are used directly instead.
This happens to (mostly) work because the actual guests seem not to
depend on the features listed above.

This patch implements those pages as the spec mandates.

Since the extra RAM regions, which introduce migration incompatibility,
are only added at SynIC object creation which only happens when
hyperv_synic_kvm_only == false, no extra compat logic is necessary.

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 4cbaf3c13300b79d0386b567630f8e9c91ac5099
      
https://github.com/qemu/qemu/commit/4cbaf3c13300b79d0386b567630f8e9c91ac5099
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/hyperv/hyperv.c
    M include/hw/hyperv/hyperv.h

  Log Message:
  -----------
  hyperv: add synic message delivery

Add infrastructure to deliver SynIC messages to the SynIC message page.

Note that KVM may also want to deliver (SynIC timer) messages to the
same message slot.

The problem is that the access to a SynIC message slot is controlled by
the value of its .msg_type field which indicates if the slot is being
owned by the hypervisor (zero) or by the guest (non-zero).

This leaves no room for synchronizing multiple concurrent producers.

The simplest way to deal with this for both KVM and QEMU is to only
deliver messages in the vcpu thread.  KVM already does this; this patch
makes it for QEMU, too.

Specifically,

 - add a function for posting messages, which only copies the message
   into the staging buffer if its free, and schedules a work on the
   corresponding vcpu to actually deliver it to the guest slot;

 - instead of a sint ack callback, set up the sint route with a message
   status callback.  This function is called in a bh whenever there are
   updates to the message slot status: either the vcpu made definitive
   progress delivering the message from the staging buffer (succeeded or
   failed) or the guest issued EOM; the status is passed as an argument
   to the callback.

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: f5642f8b458ba578c1ea94b9ad773e1e5c6cb615
      
https://github.com/qemu/qemu/commit/f5642f8b458ba578c1ea94b9ad773e1e5c6cb615
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/hyperv/hyperv.c
    M include/hw/hyperv/hyperv.h

  Log Message:
  -----------
  hyperv: add synic event flag signaling

Add infrastructure to signal SynIC event flags by atomically setting the
corresponding bit in the event flags page and firing a SINT if
necessary.

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: e6ea9f45b72fe83d49adda948ff397dafc00c68f
      
https://github.com/qemu/qemu/commit/e6ea9f45b72fe83d49adda948ff397dafc00c68f
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/hyperv/hyperv.c
    M include/hw/hyperv/hyperv-proto.h
    M include/hw/hyperv/hyperv.h
    M target/i386/hyperv.c

  Log Message:
  -----------
  hyperv: process SIGNAL_EVENT hypercall

Add handling of SIGNAL_EVENT hypercall.  For that, provide an interface
to associate an EventNotifier with an event connection number, so that
it's signaled when the SIGNAL_EVENT hypercall with the matching
connection ID is called by the guest.

Support for using KVM functionality for this will be added in a followup
patch.

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 8d3bc0b75318dce70928b8bde1a49e632adf5137
      
https://github.com/qemu/qemu/commit/8d3bc0b75318dce70928b8bde1a49e632adf5137
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/hyperv/hyperv.c

  Log Message:
  -----------
  hyperv: add support for KVM_HYPERV_EVENTFD

When setting up a notifier for Hyper-V event connection, try to use the
KVM-assisted one first, and fall back to userspace handling of the
hypercall if the kernel doesn't provide the requested feature.

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 76036a5fc7ca632f805748aeef416355b1d212a3
      
https://github.com/qemu/qemu/commit/76036a5fc7ca632f805748aeef416355b1d212a3
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/hyperv/hyperv.c
    M include/hw/hyperv/hyperv.h
    M target/i386/hyperv.c

  Log Message:
  -----------
  hyperv: process POST_MESSAGE hypercall

Add handling of POST_MESSAGE hypercall.  For that, add an interface to
regsiter a handler for the messages arrived from the guest on a
particular connection id (IOW set up a message connection in Hyper-V
speak).

Signed-off-by: Roman Kagan <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 6738ccfff0043b9fd6ecc823884c6f114a35a3c5
      
https://github.com/qemu/qemu/commit/6738ccfff0043b9fd6ecc823884c6f114a35a3c5
  Author: Roman Kagan <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M hw/hyperv/hyperv_testdev.c

  Log Message:
  -----------
  hyperv_testdev: add SynIC message and event testmodes

Add testmodes for SynIC messages and events.  The message or event
connection setup / teardown is initiated by the guest via new control
codes written to the test device port.  Then the test connections bounce
the respective operations back to the guest, i.e. the incoming messages
are posted or the incoming events are signaled on the configured vCPUs.

Signed-off-by: Roman Kagan <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 0c2ed83fa45aa5d80ecc7d3fff0ab38db2db5972
      
https://github.com/qemu/qemu/commit/0c2ed83fa45aa5d80ecc7d3fff0ab38db2db5972
  Author: Li Qiang <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M target/i386/kvm.c

  Log Message:
  -----------
  target/i386: kvm: just return after migrate_add_blocker failed

When migrate_add_blocker failed, the invtsc_mig_blocker is not
appended so no need to remove. This can save several instructions.

Signed-off-by: Li Qiang <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 74c0b816adfc6aa1b01b4426fdf385e32e35cbac
      
https://github.com/qemu/qemu/commit/74c0b816adfc6aa1b01b4426fdf385e32e35cbac
  Author: Paolo Bonzini <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M cpus.c
    M include/sysemu/replay.h
    M replay/replay-internal.c
    M replay/replay-internal.h
    M replay/replay-time.c
    M stubs/cpu-get-icount.c
    M stubs/replay.c

  Log Message:
  -----------
  replay: pass raw icount value to replay_save_clock

This avoids lock recursion when REPLAY_CLOCK is called inside the
timers spinlock.

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: b312532fd03413d0e6ae6767ec793a3e30f487b8
      
https://github.com/qemu/qemu/commit/b312532fd03413d0e6ae6767ec793a3e30f487b8
  Author: Peter Maydell <address@hidden>
  Date:   2018-10-19 (Fri, 19 Oct 2018)

  Changed paths:
    M accel/kvm/kvm-all.c
    M cpus.c
    A default-configs/hyperv.mak
    M default-configs/i386-softmmu.mak
    M hw/Makefile.objs
    M hw/audio/es1370.c
    M hw/core/hotplug.c
    M hw/core/qdev.c
    A hw/hyperv/Makefile.objs
    A hw/hyperv/hyperv.c
    A hw/hyperv/hyperv_testdev.c
    M hw/misc/Makefile.objs
    M hw/misc/edu.c
    R hw/misc/hyperv_testdev.c
    M hw/pci-host/piix.c
    M hw/pci-host/q35.c
    M hw/scsi/scsi-disk.c
    M hw/scsi/virtio-scsi.c
    M hw/timer/mc146818rtc.c
    M include/block/aio.h
    M include/exec/memory.h
    M include/hw/hotplug.h
    A include/hw/hyperv/hyperv-proto.h
    A include/hw/hyperv/hyperv.h
    M include/hw/i386/pc.h
    M include/qemu/timer.h
    M include/sysemu/hvf.h
    M include/sysemu/replay.h
    M linux-headers/asm-powerpc/kvm.h
    M linux-headers/asm-x86/kvm.h
    M linux-headers/linux/kvm.h
    M memory.c
    M qapi/misc.json
    M qemu-options.hx
    M replay/replay-events.c
    M replay/replay-internal.c
    M replay/replay-internal.h
    M replay/replay-time.c
    M replay/replay.c
    M slirp/ip6_icmp.c
    M stubs/cpu-get-icount.c
    M stubs/replay.c
    M target/i386/Makefile.objs
    M target/i386/cpu.c
    M target/i386/cpu.h
    M target/i386/hvf/hvf.c
    M target/i386/hvf/x86_decode.c
    M target/i386/hvf/x86_decode.h
    M target/i386/hyperv-proto.h
    A target/i386/hyperv-stub.c
    M target/i386/hyperv.c
    M target/i386/hyperv.h
    M target/i386/kvm.c
    M target/i386/machine.c
    M tests/ptimer-test-stubs.c
    M ui/input.c
    M util/qemu-timer.c
    M vl.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging

* RTC fixes (Artem)
* icount fixes (Artem)
* rr fixes (Pavel, myself)
* hotplug cleanup (Igor)
* SCSI fixes (myself)
* 4.20-rc1 KVM header update (myself)
* coalesced PIO support (Peng Hao)
* HVF fixes (Roman B.)
* Hyper-V refactoring (Roman K.)
* Support for Hyper-V IPI (Vitaly)

# gpg: Signature made Fri 19 Oct 2018 12:47:58 BST
# gpg:                using RSA key BFFBD25F78C7AE83
# gpg: Good signature from "Paolo Bonzini <address@hidden>"
# gpg:                 aka "Paolo Bonzini <address@hidden>"
# Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
#      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83

* remotes/bonzini/tags/for-upstream: (47 commits)
  replay: pass raw icount value to replay_save_clock
  target/i386: kvm: just return after migrate_add_blocker failed
  hyperv_testdev: add SynIC message and event testmodes
  hyperv: process POST_MESSAGE hypercall
  hyperv: add support for KVM_HYPERV_EVENTFD
  hyperv: process SIGNAL_EVENT hypercall
  hyperv: add synic event flag signaling
  hyperv: add synic message delivery
  hyperv: make overlay pages for SynIC
  hyperv: only add SynIC in compatible configurations
  hyperv: qom-ify SynIC
  hyperv:synic: split capability testing and setting
  i386: add hyperv-stub for CONFIG_HYPERV=n
  default-configs: collect CONFIG_HYPERV* in hyperv.mak
  hyperv: factor out arch-independent API into hw/hyperv
  hyperv: make hyperv_vp_index inline
  hyperv: split hyperv-proto.h into x86 and arch-independent parts
  hyperv: rename kvm_hv_sint_route_set_sint
  hyperv: make HvSintRoute reference-counted
  hyperv: address HvSintRoute by X86CPU pointer
  ...

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/31e213e30617...b312532fd034
      **NOTE:** This service has been marked for deprecation: 
https://developer.github.com/changes/2018-04-25-github-services-deprecation/

      Functionality will be removed from GitHub.com on January 31st, 2019.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]