]> Git Repo - qemu.git/log
qemu.git
5 years agoiotests/118: Add -blockdev based tests
Kevin Wolf [Tue, 30 Jul 2019 14:49:26 +0000 (16:49 +0200)]
iotests/118: Add -blockdev based tests

The code path for -device drive=<node-name> or without a drive=...
option for empty drives, which is supposed to be used with -blockdev
differs enough from the -drive based path with a user-owned
BlockBackend, so we want to test both paths at least for the basic tests
implemented by TestInitiallyFilled and TestInitiallyEmpty.

This would have caught the bug recently fixed for inserting read-only
nodes into a scsi-cd created without a drive=... option.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
5 years agoiotests/118: Create test classes dynamically
Kevin Wolf [Tue, 30 Jul 2019 14:25:55 +0000 (16:25 +0200)]
iotests/118: Create test classes dynamically

We're getting a ridiculous number of child classes of
TestInitiallyFilled and TestInitiallyEmpty that differ only in a few
attributes that we want to test in all combinations.

Instead of explicitly writing down every combination, let's use a loop
and create those classes dynamically.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
5 years agoiotests/118: Test media change for scsi-cd
Kevin Wolf [Tue, 30 Jul 2019 10:23:45 +0000 (12:23 +0200)]
iotests/118: Test media change for scsi-cd

The test covered only floppy and ide-cd. Add scsi-cd as well.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
5 years agoblock/nbd: refactor nbd connection parameters
Vladimir Sementsov-Ogievskiy [Tue, 18 Jun 2019 11:43:24 +0000 (14:43 +0300)]
block/nbd: refactor nbd connection parameters

We'll need some connection parameters to be available all the time to
implement nbd reconnect. So, let's refactor them: define additional
parameters in BDRVNBDState, drop them from function parameters, drop
nbd_client_init and separate options parsing instead from nbd_open.

Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Message-Id: <20190618114328[email protected]>
Reviewed-by: Eric Blake <[email protected]>
[eblake: Drop useless 'if' before object_unref]
Signed-off-by: Eric Blake <[email protected]>
5 years agoblock/nbd: add cmdline and qapi parameter reconnect-delay
Vladimir Sementsov-Ogievskiy [Tue, 18 Jun 2019 11:43:23 +0000 (14:43 +0300)]
block/nbd: add cmdline and qapi parameter reconnect-delay

Reconnect will be implemented in the following commit, so for now,
in semantics below, disconnect itself is a "serious error".

Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Message-Id: <20190618114328[email protected]>
[eblake: slipped from 4.1 to 4.2]
Signed-off-by: Eric Blake <[email protected]>
5 years agoblock/nbd: move from quit to state
Vladimir Sementsov-Ogievskiy [Tue, 18 Jun 2019 11:43:22 +0000 (14:43 +0300)]
block/nbd: move from quit to state

To implement reconnect we need several states for the client:
CONNECTED, QUIT and two different CONNECTING states. CONNECTING states
will be added in the following patches. This patch implements CONNECTED
and QUIT.

QUIT means, that we should close the connection and fail all current
and further requests (like old quit = true).

CONNECTED means that connection is ok, we can send requests (like old
quit = false).

For receiving loop we use a comparison of the current state with QUIT,
because reconnect will be in the same loop, so it should be looping
until the end.

Opposite, for requests we use a comparison of the current state with
CONNECTED, as we don't want to send requests in future CONNECTING
states.

Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Message-Id: <20190618114328[email protected]>
Signed-off-by: Eric Blake <[email protected]>
5 years agoblock/nbd: use non-blocking io channel for nbd negotiation
Vladimir Sementsov-Ogievskiy [Tue, 18 Jun 2019 11:43:21 +0000 (14:43 +0300)]
block/nbd: use non-blocking io channel for nbd negotiation

No reason to use blocking channel for negotiation and we'll benefit in
further reconnect feature, as qio_channel reads and writes will do
qemu_coroutine_yield while waiting for io completion.

Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Message-Id: <20190618114328[email protected]>
Signed-off-by: Eric Blake <[email protected]>
5 years agoblock/nbd: split connection_co start out of nbd_client_connect
Vladimir Sementsov-Ogievskiy [Tue, 18 Jun 2019 11:43:20 +0000 (14:43 +0300)]
block/nbd: split connection_co start out of nbd_client_connect

nbd_client_connect is going to be used from connection_co, so, let's
refactor nbd_client_connect in advance, leaving io channel
configuration all in nbd_client_connect.

Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Message-Id: <20190618114328[email protected]>
Signed-off-by: Eric Blake <[email protected]>
5 years agonbd: improve CMD_CACHE: use BDRV_REQ_PREFETCH
Vladimir Sementsov-Ogievskiy [Thu, 25 Jul 2019 10:05:50 +0000 (13:05 +0300)]
nbd: improve CMD_CACHE: use BDRV_REQ_PREFETCH

This helps to avoid extra io, allocations and memory copying.
We assume here that CMD_CACHE is always used with copy-on-read, as
otherwise it's a noop.

Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Message-Id: <20190725100550[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Eric Blake <[email protected]>
5 years agoblock/stream: use BDRV_REQ_PREFETCH
Vladimir Sementsov-Ogievskiy [Thu, 25 Jul 2019 10:05:49 +0000 (13:05 +0300)]
block/stream: use BDRV_REQ_PREFETCH

This helps to avoid extra io, allocations and memory copying.

Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Message-Id: <20190725100550[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
[eblake: fix comment grammar]
Signed-off-by: Eric Blake <[email protected]>
5 years agoblock: implement BDRV_REQ_PREFETCH
Vladimir Sementsov-Ogievskiy [Thu, 25 Jul 2019 10:05:48 +0000 (13:05 +0300)]
block: implement BDRV_REQ_PREFETCH

Do effective copy-on-read request when we don't need data actually. It
will be used for block-stream and NBD_CMD_CACHE.

Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Message-Id: <20190725100550[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
[eblake: comment grammar fix]
Signed-off-by: Eric Blake <[email protected]>
5 years agoqapi: Add InetSocketAddress member keep-alive
Vladimir Sementsov-Ogievskiy [Thu, 25 Jul 2019 09:49:37 +0000 (12:49 +0300)]
qapi: Add InetSocketAddress member keep-alive

It's needed to provide keepalive for nbd client to track server
availability.

Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Message-Id: <20190725094937[email protected]>
Reviewed-by: Markus Armbruster <[email protected]>
Acked-by: Daniel P. Berrangé <[email protected]>
[eblake: Fix error message typo]
Signed-off-by: Eric Blake <[email protected]>
5 years agotests/libqtest: Make qmp_assert_success() independent from global_qtest
Thomas Huth [Tue, 23 Jul 2019 19:22:39 +0000 (21:22 +0200)]
tests/libqtest: Make qmp_assert_success() independent from global_qtest

The normal libqtest library functions should never depend on global_qtest.
Pass in the test state via parameter instead. And while we're at it,
also rename this function to qtest_qmp_assert_success() to make it clear
that it is part of libqtest.

Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Message-Id: <20190813093047[email protected]>
Signed-off-by: Thomas Huth <[email protected]>
5 years agotests/libqtest: Make qtest_qmp_device_add/del independent from global_qtest
Thomas Huth [Mon, 22 Jul 2019 15:10:55 +0000 (17:10 +0200)]
tests/libqtest: Make qtest_qmp_device_add/del independent from global_qtest

Generic library functions like qtest_qmp_device_add() and _del()
should not depend on the global_qtest variable. Pass the test
state via parameter instead.

Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Message-Id: <20190813093047[email protected]>
Signed-off-by: Thomas Huth <[email protected]>
5 years agotests/libqtest: Clean up qtest_cb_for_every_machine() wrt global_qtest
Thomas Huth [Mon, 22 Jul 2019 14:34:42 +0000 (16:34 +0200)]
tests/libqtest: Clean up qtest_cb_for_every_machine() wrt global_qtest

The generic libqtest library functions should not use functions that
require the global_qtest variable.

Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Message-Id: <20190813093047[email protected]>
Signed-off-by: Thomas Huth <[email protected]>
5 years agotests/libqtest: Remove unused function hmp()
Thomas Huth [Mon, 22 Jul 2019 14:17:38 +0000 (16:17 +0200)]
tests/libqtest: Remove unused function hmp()

No test is using hmp() anymore, and since this function uses the disliked
global_qtest variable, we should also make sure that nobody adds new code
with this function again. qtest_hmp() should be used instead.

Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Message-Id: <20190813093047[email protected]>
Signed-off-by: Thomas Huth <[email protected]>
5 years agotests/libqos: Make virtio-pci code independent from global_qtest
Thomas Huth [Thu, 18 Jul 2019 15:08:51 +0000 (17:08 +0200)]
tests/libqos: Make virtio-pci code independent from global_qtest

The libqos library functions should never depend on global_qtest,
since these functions might be used in tests that track multiple
test states. So let's use the test state of the QPCIDevice instead.

Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Message-Id: <20190813093047[email protected]>
Signed-off-by: Thomas Huth <[email protected]>
5 years agotests/libqos: Make generic virtio code independent from global_qtest
Thomas Huth [Sat, 18 May 2019 08:23:24 +0000 (10:23 +0200)]
tests/libqos: Make generic virtio code independent from global_qtest

The libqos library functions should never depend on global_qtest,
since these functions might be used in tests that track multiple
test states. Pass around a pointer to the QTestState instead.

Message-Id: <20190814195920[email protected]>
Signed-off-by: Thomas Huth <[email protected]>
5 years agotests: Set read-zeroes on for null-co driver
Andrey Shinkevich [Mon, 29 Jul 2019 12:46:00 +0000 (15:46 +0300)]
tests: Set read-zeroes on for null-co driver

This patch is to reduce the number of Valgrind report messages about
using uninitialized memory with the null-co driver. It helps to filter
real memory issues and is the same work done for the iotests with the
commit ID a6862418fec4072.

Suggested-by: Kevin Wolf <[email protected]>
Signed-off-by: Andrey Shinkevich <[email protected]>
Message-Id: <1564404360[email protected]>
Signed-off-by: Thomas Huth <[email protected]>
5 years agolibqos: Account for the ctrl queue in virtio-net
Oleinik, Alexander [Mon, 5 Aug 2019 03:24:15 +0000 (03:24 +0000)]
libqos: Account for the ctrl queue in virtio-net

The number of queues is 2n+1, where n == 1 when multiqueue is disabled

Signed-off-by: Alexander Oleinik <[email protected]>
Message-Id: <20190805032400[email protected]>
[thuth: fixed "intefaces" typo]
Signed-off-by: Thomas Huth <[email protected]>
5 years agoqtest: Rename qtest.c:qtest_init()
Oleinik, Alexander [Mon, 5 Aug 2019 03:13:01 +0000 (03:13 +0000)]
qtest: Rename qtest.c:qtest_init()

Both the qtest client, libqtest.c, and server, qtest.c, used the same
name for initialization functions which can cause confusion.

Signed-off-by: Alexander Oleinik <[email protected]>
Message-Id: <20190805031240[email protected]>
Reviewed-by: John Snow <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>
5 years agoOpen 4.2 development tree
Peter Maydell [Thu, 15 Aug 2019 16:20:55 +0000 (17:20 +0100)]
Open 4.2 development tree

Signed-off-by: Peter Maydell <[email protected]>
5 years agoUpdate version for v4.1.0 release
Peter Maydell [Thu, 15 Aug 2019 12:03:37 +0000 (13:03 +0100)]
Update version for v4.1.0 release

Signed-off-by: Peter Maydell <[email protected]>
5 years agomigration: add some multifd traces
Juan Quintela [Wed, 14 Aug 2019 02:02:17 +0000 (04:02 +0200)]
migration: add some multifd traces

Signed-off-by: Juan Quintela <[email protected]>
Message-Id: <20190814020218[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration: Make global sem_sync semaphore by channel
Juan Quintela [Wed, 14 Aug 2019 02:02:14 +0000 (04:02 +0200)]
migration: Make global sem_sync semaphore by channel

This makes easy to debug things because when you want for all threads
to arrive at that semaphore, you know which one your are waiting for.

Signed-off-by: Juan Quintela <[email protected]>
Message-Id: <20190814020218[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration: Add traces for multifd terminate threads
Juan Quintela [Wed, 14 Aug 2019 02:02:13 +0000 (04:02 +0200)]
migration: Add traces for multifd terminate threads

Signed-off-by: Juan Quintela <[email protected]>
Message-Id: <20190814020218[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agoqemu-file: move qemu_{get,put}_counted_string() declarations
Marc-André Lureau [Thu, 8 Aug 2019 15:03:24 +0000 (19:03 +0400)]
qemu-file: move qemu_{get,put}_counted_string() declarations

Move migration helpers for strings under include/, so they can be used
outside of migration/

Signed-off-by: Marc-André Lureau <[email protected]>
Reviewed-by: Juan Quintela <[email protected]>
Message-Id: <20190808150325[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration/postcopy: use mis->bh instead of allocating a QEMUBH
Wei Yang [Mon, 5 Aug 2019 05:31:46 +0000 (13:31 +0800)]
migration/postcopy: use mis->bh instead of allocating a QEMUBH

For migration incoming side, it either quit in precopy or postcopy. It
is safe to use the mis->bh for both instead of allocating a dedicated
QEMUBH for postcopy.

Signed-off-by: Wei Yang <[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20190805053146[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration: rename migration_bitmap_sync_range to ramblock_sync_dirty_bitmap
Wei Yang [Thu, 8 Aug 2019 03:31:55 +0000 (11:31 +0800)]
migration: rename migration_bitmap_sync_range to ramblock_sync_dirty_bitmap

Rename for better understanding of the code.

Suggested-by: Paolo Bonzini <[email protected]>
Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190808033155[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration: update ram_counters for multifd sync packet
Ivan Ren [Tue, 30 Jul 2019 05:33:36 +0000 (13:33 +0800)]
migration: update ram_counters for multifd sync packet

Multifd sync will send MULTIFD_FLAG_SYNC flag info to destination, add
these bytes to ram_counters record.

Signed-off-by: Ivan Ren <[email protected]>
Suggested-by: Wei Yang <[email protected]>
Message-Id: <1564464816[email protected]>
Reviewed-by: Juan Quintela <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration: add speed limit for multifd migration
Ivan Ren [Tue, 30 Jul 2019 05:33:35 +0000 (13:33 +0800)]
migration: add speed limit for multifd migration

Limit the speed of multifd migration through common speed limitation
qemu file.

Signed-off-by: Ivan Ren <[email protected]>
Message-Id: <1564464816[email protected]>
Reviewed-by: Wei Yang <[email protected]>
Reviewed-by: Juan Quintela <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration: add qemu_file_update_transfer interface
Ivan Ren [Tue, 30 Jul 2019 05:33:34 +0000 (13:33 +0800)]
migration: add qemu_file_update_transfer interface

Add qemu_file_update_transfer for just update bytes_xfer for speed
limitation. This will be used for further migration feature such as
multifd migration.

Signed-off-by: Ivan Ren <[email protected]>
Reviewed-by: Wei Yang <[email protected]>
Reviewed-by: Juan Quintela <[email protected]>
Message-Id: <1564464816[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration: always initialise ram_counters for a new migration
Ivan Ren [Fri, 2 Aug 2019 10:18:41 +0000 (18:18 +0800)]
migration: always initialise ram_counters for a new migration

This patch fix a multifd migration bug in migration speed calculation, this
problem can be reproduced as follows:
1. start a vm and give a heavy memory write stress to prevent the vm be
   successfully migrated to destination
2. begin a migration with multifd
3. migrate for a long time [actually, this can be measured by transferred bytes]
4. migrate cancel
5. begin a new migration with multifd, the migration will directly run into
   migration_completion phase

Reason as follows:

Migration update bandwidth and s->threshold_size in function
migration_update_counters after BUFFER_DELAY time:

    current_bytes = migration_total_bytes(s);
    transferred = current_bytes - s->iteration_initial_bytes;
    time_spent = current_time - s->iteration_start_time;
    bandwidth = (double)transferred / time_spent;
    s->threshold_size = bandwidth * s->parameters.downtime_limit;

In multifd migration, migration_total_bytes function return
qemu_ftell(s->to_dst_file) + ram_counters.multifd_bytes.
s->iteration_initial_bytes will be initialized to 0 at every new migration,
but ram_counters is a global variable, and history migration data will be
accumulated. So if the ram_counters.multifd_bytes is big enough, it may lead
pending_size >= s->threshold_size become false in migration_iteration_run
after the first migration_update_counters.

Signed-off-by: Ivan Ren <[email protected]>
Reviewed-by: Juan Quintela <[email protected]>
Reviewed-by: Wei Yang <[email protected]>
Suggested-by: Wei Yang <[email protected]>
Message-Id: <1564741121[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration: remove unused field bytes_xfer
Wei Yang [Tue, 2 Apr 2019 00:31:06 +0000 (08:31 +0800)]
migration: remove unused field bytes_xfer

MigrationState->bytes_xfer is only set to 0 in migrate_init().

Remove this unnecessary field.

Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190402003106[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agohmp: Remove migration capabilities from "info migrate"
Wei Yang [Tue, 6 Aug 2019 00:36:45 +0000 (08:36 +0800)]
hmp: Remove migration capabilities from "info migrate"

With the growth of migration capabilities, it is not proper to display
them in "info migrate". Users are recommended to use "info
migrate_capabiltiies" to list them.

Signed-off-by: Wei Yang <[email protected]>
Suggested-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20190806003645[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration/postcopy: use QEMU_IS_ALIGNED to replace host_offset
Wei Yang [Tue, 6 Aug 2019 00:46:48 +0000 (08:46 +0800)]
migration/postcopy: use QEMU_IS_ALIGNED to replace host_offset

Use QEMU_IS_ALIGNED for the check, it would be more consistent with
other align calculations.

Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190806004648[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration/postcopy: simplify calculation of run_start and fixup_start_addr
Wei Yang [Tue, 6 Aug 2019 00:46:47 +0000 (08:46 +0800)]
migration/postcopy: simplify calculation of run_start and fixup_start_addr

The purpose of the calculation is to find a HostPage which is partially
dirty.

  * fixup_start_addr points to the start of the HostPage to discard
  * run_start points to the next HostPage to check

While in the middle stage, there would two cases for run_start:

  * aligned with HostPage means this is not partially dirty
  * not aligned means this is partially dirty

When it is aligned, no work and calculation is necessary. run_start
already points to the start of next HostPage and is ready to continue.

When it is not aligned, the calculation could be simplified with:

  * fixup_start_addr = QEMU_ALIGN_DOWN(run_start, host_ratio)
  * run_start = QEMU_ALIGN_UP(run_start, host_ratio)

By doing so, run_start always points to the next HostPage to check.
fixup_start_addr always points to the HostPage to discard.

Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190806004648[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration/postcopy: make PostcopyDiscardState a static variable
Wei Yang [Wed, 24 Jul 2019 01:07:21 +0000 (09:07 +0800)]
migration/postcopy: make PostcopyDiscardState a static variable

In postcopy-ram.c, we provide three functions to discard certain
RAMBlock range:

  * postcopy_discard_send_init()
  * postcopy_discard_send_range()
  * postcopy_discard_send_finish()

Currently, we allocate/deallocate PostcopyDiscardState for each RAMBlock
on sending discard information to destination. This is not necessary and
the same data area could be reused for each RAMBlock.

This patch defines PostcopyDiscardState a static variable. By doing so:

  1) avoid memory allocation and deallocation to the system
  2) avoid potential failure of memory allocation
  3) hide some details for their users

Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190724010721[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration: extract ram_load_precopy
Wei Yang [Thu, 25 Jul 2019 00:20:23 +0000 (08:20 +0800)]
migration: extract ram_load_precopy

After cleanup, it would be clear to audience there are two cases
ram_load:

  * precopy
  * postcopy

And it is not necessary to check postcopy_running on each iteration for
precopy.

Signed-off-by: Wei Yang <[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20190725002023[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration: return -EINVAL directly when version_id mismatch
Wei Yang [Mon, 22 Jul 2019 07:53:38 +0000 (15:53 +0800)]
migration: return -EINVAL directly when version_id mismatch

It is not reasonable to continue when version_id mismatch.

Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190722075339[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration: equation is more proper than and to check LOADVM_QUIT
Wei Yang [Thu, 18 Jul 2019 06:42:57 +0000 (14:42 +0800)]
migration: equation is more proper than and to check LOADVM_QUIT

LOADVM_QUIT allows a command to quit all layers of nested loadvm loops,
while current return value check is not that proper even it works now.

Current return value check "ret & LOADVM_QUIT" would return true if
bit[0] is 1. This would be true when ret is -1 which is used to indicate
an error of handling a command.

Since there is only one place return LOADVM_QUIT and no other
combination of return value, use "ret == LOADVM_QUIT" would be more
proper.

Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190718064257[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration: just pass RAMBlock is enough
Wei Yang [Thu, 18 Jul 2019 01:25:47 +0000 (09:25 +0800)]
migration: just pass RAMBlock is enough

RAMBlock->used_length is always passed to migration_bitmap_sync_range(),
which could be retrieved from RAMBlock.

Suggested-by: Paolo Bonzini <[email protected]>
Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190718012547[email protected]>
Reviewed-by: Peter Xu <[email protected]>
Reviewed-by: Paolo Bonzini <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration: use migration_in_postcopy() to check POSTCOPY_ACTIVE
Wei Yang [Fri, 19 Jul 2019 07:11:29 +0000 (15:11 +0800)]
migration: use migration_in_postcopy() to check POSTCOPY_ACTIVE

Use common helper function to check the state.

Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190719071129[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration/postcopy: start_postcopy could be true only when migrate_postcopy() return...
Wei Yang [Thu, 18 Jul 2019 08:37:47 +0000 (16:37 +0800)]
migration/postcopy: start_postcopy could be true only when migrate_postcopy() return true

There is only one place to set start_postcopy to true,
qmp_migrate_start_postcopy(), which make sure start_postcopy could be
set to true when migrate_postcopy() return true.

So start_postcopy is true implies the other one.

Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190718083747[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration/postcopy: PostcopyState is already set in loadvm_postcopy_handle_advise()
Wei Yang [Thu, 11 Jul 2019 08:08:16 +0000 (16:08 +0800)]
migration/postcopy: PostcopyState is already set in loadvm_postcopy_handle_advise()

PostcopyState is already set to ADVISE at the beginning of
loadvm_postcopy_handle_advise().

Remove the redundant set.

Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190711080816[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration/savevm: move non SaveStateEntry condition check out of iteration
Wei Yang [Tue, 9 Jul 2019 14:09:24 +0000 (22:09 +0800)]
migration/savevm: move non SaveStateEntry condition check out of iteration

in_postcopy and iterable_only are not SaveStateEntry specific, it would
be more proper to check them out of iteration.

Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190709140924[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration/savevm: split qemu_savevm_state_complete_precopy() into two parts
Wei Yang [Tue, 9 Jul 2019 14:09:23 +0000 (22:09 +0800)]
migration/savevm: split qemu_savevm_state_complete_precopy() into two parts

This is a preparation patch for further cleanup.

No functional change, just wrap two major part of
qemu_savevm_state_complete_precopy() into function.

Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190709140924[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration/savevm: flush file for iterable_only case
Wei Yang [Tue, 9 Jul 2019 14:09:22 +0000 (22:09 +0800)]
migration/savevm: flush file for iterable_only case

It would be proper to flush file even for iterable_only case.

Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190709140924[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration/postcopy: do_fixup is true when host_offset is non-zero
Wei Yang [Wed, 10 Jul 2019 05:08:14 +0000 (13:08 +0800)]
migration/postcopy: do_fixup is true when host_offset is non-zero

This means it is not necessary to spare an extra variable to hold this
condition. Use host_offset directly is fine.

Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190710050814[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration/postcopy: reduce one operation to calculate fixup_start_addr
Wei Yang [Wed, 10 Jul 2019 05:08:13 +0000 (13:08 +0800)]
migration/postcopy: reduce one operation to calculate fixup_start_addr

Use the same way for run_end to calculate run_start, which saves one
operation.

Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190710050814[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration/postcopy: discard_length must not be 0
Wei Yang [Thu, 27 Jun 2019 02:08:22 +0000 (10:08 +0800)]
migration/postcopy: discard_length must not be 0

Since we break the loop when there is no more page to discard, we are
sure the following process would find some page to discard.

It is not necessary to check it again.

Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190627020822[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration/postcopy: break the loop when there is no more page to discard
Wei Yang [Thu, 27 Jun 2019 02:08:21 +0000 (10:08 +0800)]
migration/postcopy: break the loop when there is no more page to discard

When one is equal or bigger then end, it means there is no page to
discard. Just break the loop in this case instead of processing it.

No functional change, just refactor it a little.

Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190627020822[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration/postcopy: the valid condition is one less then end
Wei Yang [Thu, 27 Jun 2019 02:08:20 +0000 (10:08 +0800)]
migration/postcopy: the valid condition is one less then end

If one equals end, it means we have gone through the whole bitmap.

Use a more restrict check to skip a unnecessary condition.

Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190627020822[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration: consolidate time info into populate_time_info
Wei Yang [Tue, 16 Jul 2019 00:54:11 +0000 (08:54 +0800)]
migration: consolidate time info into populate_time_info

Consolidate time information fill up into its function for better
readability.

Signed-off-by: Wei Yang <[email protected]>
Message-Id: <20190716005411[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agohw/net: fix vmxnet3 live migration
Marcel Apfelbaum [Fri, 5 Jul 2019 01:07:11 +0000 (04:07 +0300)]
hw/net: fix vmxnet3 live migration

At some point vmxnet3 live migration stopped working and git-bisect
didn't help finding a working version.
The issue is the PCI configuration space is not being migrated
successfully and MSIX remains masked at destination.

Remove the migration differentiation between PCI and PCIe since
the logic resides now inside VMSTATE_PCI_DEVICE.
Remove also the VMXNET3_COMPAT_FLAG_DISABLE_PCIE based differentiation
since at 'realize' time is decided if the device is PCI or PCIe,
then the above macro is enough.

Use the opportunity to move to the standard VMSTATE_MSIX
instead of the deprecated SaveVMHandlers.

Signed-off-by: Marcel Apfelbaum <[email protected]>
Message-Id: <20190705010711[email protected]>
Tested-by: Sukrit Bhatnagar <[email protected]>
Reviewed-by: Dmitry Fleytman <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration: Add error_desc for file channel errors
Yury Kotov [Mon, 22 Apr 2019 10:34:20 +0000 (13:34 +0300)]
migration: Add error_desc for file channel errors

Currently, there is no information about error if outgoing migration was failed
because of file channel errors.
Example (QMP session):
-> { "execute": "migrate", "arguments": { "uri": "exec:head -c 1" }}
<- { "return": {} }
...
-> { "execute": "query-migrate" }
<- { "return": { "status": "failed" }} // There is not error's description

And even in the QEMU's output there is nothing.

This patch
1) Adds errp for the most of QEMUFileOps
2) Adds qemu_file_get_error_obj/qemu_file_set_error_obj
3) And finally using of qemu_file_get_error_obj in migration.c

And now, the status for the mentioned fail will be:
-> { "execute": "query-migrate" }
<- { "return": { "status": "failed",
                 "error-desc": "Unable to write to command: Broken pipe" }}

Signed-off-by: Yury Kotov <[email protected]>
Message-Id: <20190422103420[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agoUpdate version for v4.1.0-rc5 release
Peter Maydell [Tue, 13 Aug 2019 14:38:38 +0000 (15:38 +0100)]
Update version for v4.1.0-rc5 release

Signed-off-by: Peter Maydell <[email protected]>
5 years agoriscv: roms: Fix make rules for building sifive_u bios
Bin Meng [Sat, 3 Aug 2019 06:08:04 +0000 (23:08 -0700)]
riscv: roms: Fix make rules for building sifive_u bios

Currently the make rules are wrongly using qemu/virt opensbi image
for sifive_u machine. Correct it.

Signed-off-by: Bin Meng <[email protected]>
Reviewed-by: Chih-Min Chao <[email protected]>
Reviewed-by: Alistair Francis <[email protected]>
Message-id: 1564812484[email protected]
Signed-off-by: Peter Maydell <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/dgibson/tags/ppc-for-4.1-20190813' into staging
Peter Maydell [Tue, 13 Aug 2019 10:35:30 +0000 (11:35 +0100)]
Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-4.1-20190813' into staging

ppc patch queue 2019-08-13 (last minute qemu-4.1 fixes)

Here's a very, very last minute pull request for qemu-4.1.  This fixes
two nasty bugs with the XIVE interrupt controller in "dual" mode
(where the guest decides which interrupt controller it wants to use).
One occurs when resetting the guest while I/O is active, and the other
with migration of hotplugged CPUs.

The timing here is very unfortunate.  Alas, we only spotted these bugs
very late, and I was sick last week, delaying analysis and fix even
further.

This series hasn't had nearly as much testing as I'd really like, but
I'd still like to squeeze it into qemu-4.1 if possible, since
definitely fixing two bad bugs seems like an acceptable tradeoff for
the risk of introducing different bugs.

# gpg: Signature made Tue 13 Aug 2019 07:56:42 BST
# gpg:                using RSA key 75F46586AE61A66CC44E87DC6C38CACA20D9B392
# gpg: Good signature from "David Gibson <[email protected]>" [full]
# gpg:                 aka "David Gibson (Red Hat) <[email protected]>" [full]
# gpg:                 aka "David Gibson (ozlabs.org) <[email protected]>" [full]
# gpg:                 aka "David Gibson (kernel.org) <[email protected]>" [unknown]
# Primary key fingerprint: 75F4 6586 AE61 A66C C44E  87DC 6C38 CACA 20D9 B392

* remotes/dgibson/tags/ppc-for-4.1-20190813:
  spapr/xive: Fix migration of hot-plugged CPUs
  spapr: Reset CAS & IRQ subsystem after devices

Signed-off-by: Peter Maydell <[email protected]>
5 years agospapr/xive: Fix migration of hot-plugged CPUs
Cédric Le Goater [Tue, 13 Aug 2019 06:48:53 +0000 (08:48 +0200)]
spapr/xive: Fix migration of hot-plugged CPUs

The migration sequence of a guest using the XIVE exploitation mode
relies on the fact that the states of all devices are restored before
the machine is. This is not true for hot-plug devices such as CPUs
which state come after the machine. This breaks migration because the
thread interrupt context registers are not correctly set.

Fix migration of hotplugged CPUs by restoring their context in the
'post_load' handler of the XiveTCTX model.

Fixes: 277dd3d7712a ("spapr/xive: add migration support for KVM")
Signed-off-by: Cédric Le Goater <[email protected]>
Message-Id: <20190813064853[email protected]>
Signed-off-by: David Gibson <[email protected]>
5 years agospapr: Reset CAS & IRQ subsystem after devices
David Gibson [Tue, 13 Aug 2019 05:59:18 +0000 (15:59 +1000)]
spapr: Reset CAS & IRQ subsystem after devices

This fixes a nasty regression in qemu-4.1 for the 'pseries' machine,
caused by the new "dual" interrupt controller model.  Specifically,
qemu can crash when used with KVM if a 'system_reset' is requested
while there's active I/O in the guest.

The problem is that in spapr_machine_reset() we:

1. Reset the CAS vector state
spapr_ovec_cleanup(spapr->ov5_cas);

2. Reset all devices
qemu_devices_reset()

3. Reset the irq subsystem
spapr_irq_reset();

However (1) implicitly changes the interrupt delivery mode, because
whether we're using XICS or XIVE depends on the CAS state.  We don't
properly initialize the new irq mode until (3) though - in particular
setting up the KVM devices.

During (2), we can temporarily drop the BQL allowing some irqs to be
delivered which will go to an irq system that's not properly set up.

Specifically, if the previous guest was in (KVM) XIVE mode, the CAS
reset will put us back in XICS mode.  kvm_kernel_irqchip() still
returns true, because XIVE was using KVM, however XICs doesn't have
its KVM components intialized and kernel_xics_fd == -1.  When the irq
is delivered it goes via ics_kvm_set_irq() which assert()s that
kernel_xics_fd != -1.

This change addresses the problem by delaying the CAS reset until
after the devices reset.  The device reset should quiesce all the
devices so we won't get irqs delivered while we mess around with the
IRQ.  The CAS reset and irq re-initialize should also now be under the
same BQL critical section so nothing else should be able to interrupt
it either.

We also move the spapr_irq_msi_reset() used in one of the legacy irq
modes, since it logically makes sense at the same point as the
spapr_irq_reset() (it's essentially an equivalent operation for older
machine types).  Since we don't need to switch between different
interrupt controllers for those old machine types it shouldn't
actually be broken in those cases though.

Cc: Cédric Le Goater <[email protected]>
Fixes: b2e22477 "spapr: add a 'reset' method to the sPAPR IRQ backend"
Fixes: 13db0cd9 "spapr: introduce a new sPAPR IRQ backend supporting
                 XIVE and XICS"
Signed-off-by: David Gibson <[email protected]>
5 years agodisplay/bochs: fix pcie support
Gerd Hoffmann [Mon, 12 Aug 2019 06:52:21 +0000 (08:52 +0200)]
display/bochs: fix pcie support

Set QEMU_PCI_CAP_EXPRESS unconditionally in init(), then clear it in
realize() in case the device is not connected to a PCIe bus.

This makes sure the pci config space allocation is big enough, so
accessing the PCIe extended config space doesn't overflow the pci
config space buffer.

PCI(e) config space is guest writable.  Writes are limited by
write mask (which probably is also filled with random stuff),
so the guest can only flip enabled bits.  But I suspect it
still might be exploitable, so rather serious because it might
be a host escape for the guest.  On the other hand the device
is probably not yet in widespread use.

(For a QEMU version without this commit, a mitigation for the
bug is available: use "-device bochs-display" as a conventional pci
device only.)

Cc: [email protected]
Signed-off-by: Gerd Hoffmann <[email protected]>
Message-id: 20190812065221[email protected]
Reviewed-by: Alex Williamson <[email protected]>
Reviewed-by: Paolo Bonzini <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
5 years agoUpdate version for v4.1.0-rc4 release
Peter Maydell [Tue, 6 Aug 2019 16:05:21 +0000 (17:05 +0100)]
Update version for v4.1.0-rc4 release

Signed-off-by: Peter Maydell <[email protected]>
5 years agocompat: disable edid on virtio-gpu base device
Cornelia Huck [Tue, 6 Aug 2019 11:58:19 +0000 (13:58 +0200)]
compat: disable edid on virtio-gpu base device

'edid' is a property of the virtio-gpu base device, so turning
it off on virtio-gpu-pci is not enough (it misses -ccw). Turn
it off on the base device instead.

Fixes: 0a71966253c8 ("edid: flip the default to enabled")
Signed-off-by: Cornelia Huck <[email protected]>
Reviewed-by: Gerd Hoffmann <[email protected]>
Message-id: 20190806115819[email protected]
Signed-off-by: Peter Maydell <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/maxreitz/tags/pull-block-2019-08-06' into staging
Peter Maydell [Tue, 6 Aug 2019 12:40:31 +0000 (13:40 +0100)]
Merge remote-tracking branch 'remotes/maxreitz/tags/pull-block-2019-08-06' into staging

Block patches for 4.1.0-rc4:
- Fix the backup block job when using copy offloading
- Fix the mirror block job when using the write-blocking copy mode
- Fix incremental backups after the image has been grown with the
  respective bitmap attached to it

# gpg: Signature made Tue 06 Aug 2019 12:57:07 BST
# gpg:                using RSA key 91BEB60A30DB3E8857D11829F407DB0061D5CF40
# gpg:                issuer "[email protected]"
# gpg: Good signature from "Max Reitz <[email protected]>" [full]
# Primary key fingerprint: 91BE B60A 30DB 3E88 57D1  1829 F407 DB00 61D5 CF40

* remotes/maxreitz/tags/pull-block-2019-08-06:
  block/backup: disable copy_range for compressed backup
  iotests: Test unaligned blocking mirror write
  mirror: Only mirror granularity-aligned chunks
  iotests: Test incremental backup after truncation
  util/hbitmap: update orig_size on truncate
  iotests: Test backup job with two guest writes
  backup: Copy only dirty areas

Signed-off-by: Peter Maydell <[email protected]>
5 years agoblock/backup: disable copy_range for compressed backup
Vladimir Sementsov-Ogievskiy [Tue, 30 Jul 2019 16:32:50 +0000 (19:32 +0300)]
block/backup: disable copy_range for compressed backup

Enabled by default copy_range ignores compress option. It's definitely
unexpected for user.

It's broken since introduction of copy_range usage in backup in
9ded4a011496.

Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Message-id: 20190730163251[email protected]
Reviewed-by: John Snow <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
Cc: [email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Test unaligned blocking mirror write
Max Reitz [Mon, 5 Aug 2019 11:35:26 +0000 (13:35 +0200)]
iotests: Test unaligned blocking mirror write

Signed-off-by: Max Reitz <[email protected]>
Message-id: 20190805113526[email protected]
Reviewed-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
5 years agomirror: Only mirror granularity-aligned chunks
Max Reitz [Mon, 5 Aug 2019 15:33:08 +0000 (17:33 +0200)]
mirror: Only mirror granularity-aligned chunks

In write-blocking mode, all writes to the top node directly go to the
target.  We must only mirror chunks of data that are aligned to the
job's granularity, because that is how the dirty bitmap works.
Therefore, the request alignment for writes must be the job's
granularity (in write-blocking mode).

Unfortunately, this forces all reads and writes to have the same
granularity (we only need this alignment for writes to the target, not
the source), but that is something to be fixed another time.

Cc: [email protected]
Signed-off-by: Max Reitz <[email protected]>
Message-id: 20190805153308[email protected]
Reviewed-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Fixes: d06107ade0ce74dc39739bac80de84b51ec18546
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Test incremental backup after truncation
Max Reitz [Mon, 5 Aug 2019 15:28:40 +0000 (17:28 +0200)]
iotests: Test incremental backup after truncation

Signed-off-by: Max Reitz <[email protected]>
Message-id: 20190805152840[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoutil/hbitmap: update orig_size on truncate
Vladimir Sementsov-Ogievskiy [Mon, 5 Aug 2019 12:01:20 +0000 (15:01 +0300)]
util/hbitmap: update orig_size on truncate

Without this, hbitmap_next_zero and hbitmap_next_dirty_area are broken
after truncate. So, orig_size is broken since it's introduction in
76d570dc495c56bb.

Fixes: 76d570dc495c56bb
Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Message-id: 20190805120120[email protected]
Reviewed-by: Max Reitz <[email protected]>
Cc: [email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Test backup job with two guest writes
Max Reitz [Thu, 1 Aug 2019 17:39:00 +0000 (19:39 +0200)]
iotests: Test backup job with two guest writes

Perform two guest writes to not yet backed up areas of an image, where
the former touches an inner area of the latter.

Before HEAD^, copy offloading broke this in two ways:
(1) The target image differs from the reference image (what the source
    was when the backup started).
(2) But you will not see that in the failing output, because the job
    offset is reported as being greater than the job length.  This is
    because one cluster is copied twice, and thus accounted for twice,
    but of course the job length does not increase.

Signed-off-by: Max Reitz <[email protected]>
Message-id: 20190801173900[email protected]
Reviewed-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Tested-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
5 years agobackup: Copy only dirty areas
Max Reitz [Thu, 1 Aug 2019 17:38:59 +0000 (19:38 +0200)]
backup: Copy only dirty areas

The backup job must only copy areas that the copy_bitmap reports as
dirty.  This is always the case when using traditional non-offloading
backup, because it copies each cluster separately.  When offloading the
copy operation, we sometimes copy more than one cluster at a time, but
we only check whether the first one is dirty.

Therefore, whenever copy offloading is possible, the backup job
currently produces wrong output when the guest writes to an area of
which an inner part has already been backed up, because that inner part
will be re-copied.

Fixes: 9ded4a0114968e98b41494fc035ba14f84cdf700
Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Message-id: 20190801173900[email protected]
Cc: [email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/philmd-gitlab/tags/edk2-next-20190803' into...
Peter Maydell [Mon, 5 Aug 2019 10:05:36 +0000 (11:05 +0100)]
Merge remote-tracking branch 'remotes/philmd-gitlab/tags/edk2-next-20190803' into staging

A harmless build-sys patch that fixes a regression affecting Linux
distributions packaging QEMU.

# gpg: Signature made Sat 03 Aug 2019 09:24:15 BST
# gpg:                using RSA key E3E32C2CDEADC0DE
# gpg: Good signature from "Philippe Mathieu-Daudé (F4BUG) <[email protected]>" [full]
# Primary key fingerprint: FAAB E75E 1291 7221 DCFD  6BB2 E3E3 2C2C DEAD C0DE

* remotes/philmd-gitlab/tags/edk2-next-20190803:
  Makefile: remove DESTDIR from firmware file content

Signed-off-by: Peter Maydell <[email protected]>
5 years agoMakefile: remove DESTDIR from firmware file content
Olaf Hering [Thu, 30 May 2019 19:28:11 +0000 (21:28 +0200)]
Makefile: remove DESTDIR from firmware file content

The resulting firmware files should only contain the runtime path.
Fixes commit 26ce90fde5c ("Makefile: install the edk2 firmware images
and their descriptors")

Signed-off-by: Olaf Hering <[email protected]>
Reviewed-by: Daniel P. Berrangé <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Laszlo Ersek <[email protected]>
Message-Id: <20190530192812[email protected]>
Fixes: https://bugs.launchpad.net/qemu/+bug/1838703
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
5 years agotarget/arm: Avoid bogus NSACR traps on M-profile without Security Extension
Peter Maydell [Thu, 1 Aug 2019 10:57:42 +0000 (11:57 +0100)]
target/arm: Avoid bogus NSACR traps on M-profile without Security Extension

In Arm v8.0 M-profile CPUs without the Security Extension and also in
v7M CPUs, there is no NSACR register. However, the code we have to handle
the FPU does not always check whether the ARM_FEATURE_M_SECURITY bit
is set before testing whether env->v7m.nsacr permits access to the
FPU. This means that for a CPU with an FPU but without the Security
Extension we would always take a bogus fault when trying to stack
the FPU registers on an exception entry.

We could fix this by adding extra feature bit checks for all uses,
but it is simpler to just make the internal value of nsacr 0xcff
("all non-secure accesses allowed"), since this is not guest
visible when the Security Extension is not present. This allows
us to continue to follow the Arm ARM pseudocode which takes a
similar approach. (In particular, in the v8.1 Arm ARM the register
is documented as reading as 0xcff in this configuration.)

Fixes: https://bugs.launchpad.net/qemu/+bug/1838475
Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Damien Hedde <[email protected]>
Message-id: 20190801105742[email protected]

5 years agoMerge remote-tracking branch 'remotes/elmarco/tags/slirp-CVE-2019-14378-pull-request...
Peter Maydell [Fri, 2 Aug 2019 12:06:03 +0000 (13:06 +0100)]
Merge remote-tracking branch 'remotes/elmarco/tags/slirp-CVE-2019-14378-pull-request' into staging

Slirp CVE-2019-14378 pull request

# gpg: Signature made Fri 02 Aug 2019 12:17:24 BST
# gpg:                using RSA key 87A9BD933F87C606D276F62DDAE8E10975969CE5
# gpg:                issuer "[email protected]"
# gpg: Good signature from "Marc-André Lureau <[email protected]>" [full]
# gpg:                 aka "Marc-André Lureau <[email protected]>" [full]
# Primary key fingerprint: 87A9 BD93 3F87 C606 D276  F62D DAE8 E109 7596 9CE5

* remotes/elmarco/tags/slirp-CVE-2019-14378-pull-request:
  slirp: update with CVE-2019-14378 fix

Signed-off-by: Peter Maydell <[email protected]>
5 years agoslirp: update with CVE-2019-14378 fix
Marc-André Lureau [Fri, 2 Aug 2019 11:14:56 +0000 (15:14 +0400)]
slirp: update with CVE-2019-14378 fix

Signed-off-by: Marc-André Lureau <[email protected]>
5 years agoUpdate version for v4.1.0-rc3 release
Peter Maydell [Tue, 30 Jul 2019 21:02:05 +0000 (22:02 +0100)]
Update version for v4.1.0-rc3 release

Signed-off-by: Peter Maydell <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging
Peter Maydell [Tue, 30 Jul 2019 19:53:26 +0000 (20:53 +0100)]
Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging

pci: bugfix

A last minute fix to cross-version migration.
Better late than never.

Signed-off-by: Michael S. Tsirkin <[email protected]>
# gpg: Signature made Tue 30 Jul 2019 17:07:42 BST
# gpg:                using RSA key 281F0DB8D28D5469
# gpg: Good signature from "Michael S. Tsirkin <[email protected]>" [full]
# gpg:                 aka "Michael S. Tsirkin <[email protected]>" [full]
# Primary key fingerprint: 0270 606B 6F3C DF3D 0B17  0970 C350 3912 AFBE 8E67
#      Subkey fingerprint: 5D09 FD08 71C8 F85B 94CA  8A0D 281F 0DB8 D28D 5469

* remotes/mst/tags/for_upstream:
  pcie_root_port: Disable ACS on older machines
  pcie_root_port: Allow ACS to be disabled

Signed-off-by: Peter Maydell <[email protected]>
5 years agopcie_root_port: Disable ACS on older machines
Dr. David Alan Gilbert [Tue, 30 Jul 2019 09:37:19 +0000 (10:37 +0100)]
pcie_root_port: Disable ACS on older machines

ACS got added in 4.0 unconditionally,  that broke older<->4.0 migration
where there was a PCIe root port.
Fix this by turning it off for 3.1 and older machines; note this
fixes compatibility for older QEMUs but breaks compatibility with 4.0
for older machine types.

    machine type    source qemu   dest qemu
       3.1             3.1           4.0        broken
       3.1             3.1           4.1rc2     broken
       3.1             3.1           4.1+this   OK ++
       3.1             4.0           4.1rc2     OK
       3.1             4.0           4.1+this   broken --
       4.0             4.0           4.1rc2     OK
       4.0             4.0           4.1+this   OK

So we gain and lose; the consensus seems to be treat this as a
fix for older machine types.

Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20190730093719[email protected]>
Reviewed-by: Juan Quintela <[email protected]>
Reviewed-by: Igor Mammedov <[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agopcie_root_port: Allow ACS to be disabled
Dr. David Alan Gilbert [Tue, 30 Jul 2019 09:37:18 +0000 (10:37 +0100)]
pcie_root_port: Allow ACS to be disabled

ACS was added in 4.0 unconditionally, this breaks migration
compatibility.
Allow ACS to be disabled by adding a property that's
checked by pcie_root_port.

Unfortunately pcie-root-port doesn't have any instance data,
so there's no where for that flag to live, so stuff it into
PCIESlot.

Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20190730093719[email protected]>
Reviewed-by: Igor Mammedov <[email protected]>
Reviewed-by: Juan Quintela <[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agotarget/arm: Deliver BKPT/BRK exceptions to correct exception level
Peter Maydell [Tue, 30 Jul 2019 13:25:22 +0000 (14:25 +0100)]
target/arm: Deliver BKPT/BRK exceptions to correct exception level

Most Arm architectural debug exceptions (eg watchpoints) are ignored
if the configured "debug exception level" is below the current
exception level (so for example EL1 can't arrange to get debug exceptions
for EL2 execution). Exceptions generated by the BRK or BPKT instructions
are a special case -- they must always cause an exception, so if
we're executing above the debug exception level then we
must take them to the current exception level.

This fixes a bug where executing BRK at EL2 could result in an
exception being taken at EL1 (which is strictly forbidden by the
architecture).

Fixes: https://bugs.launchpad.net/qemu/+bug/1838277
Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: 20190730132522[email protected]

5 years agoMerge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
Peter Maydell [Tue, 30 Jul 2019 15:35:17 +0000 (16:35 +0100)]
Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging

Block layer patches:

- fdc: Fix inserting read-only media in empty drive

# gpg: Signature made Tue 30 Jul 2019 16:32:14 BST
# gpg:                using RSA key 7F09B272C88F2FD6
# gpg: Good signature from "Kevin Wolf <[email protected]>" [full]
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6

* remotes/kevin/tags/for-upstream:
  iotests/118: Test inserting a read-only medium
  fdc: Fix inserting read-only media in empty drive

Signed-off-by: Peter Maydell <[email protected]>
5 years agoiotests/118: Test inserting a read-only medium
Kevin Wolf [Tue, 30 Jul 2019 14:50:52 +0000 (16:50 +0200)]
iotests/118: Test inserting a read-only medium

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
Reviewed-by: John Snow <[email protected]>
5 years agofdc: Fix inserting read-only media in empty drive
Kevin Wolf [Tue, 30 Jul 2019 13:37:08 +0000 (15:37 +0200)]
fdc: Fix inserting read-only media in empty drive

In order to insert a read-only medium (i.e. a read-only block node) to
the BlockBackend of a floppy drive, we must not have taken write
permissions on that BlockBackend, or the operation will fail with the
error message "Block node is read-only".

The device already takes care to remove all permissions when the medium
is ejected, but the state isn't correct if the drive is initially empty:
It uses blk_is_read_only() to check whether write permissions should be
taken, but this function returns false for empty BlockBackends in the
common case.

Fix floppy_drive_realize() to avoid taking write permissions if the
drive is empty.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
Reviewed-by: John Snow <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/maxreitz/tags/pull-block-2019-07-30' into staging
Peter Maydell [Tue, 30 Jul 2019 13:23:07 +0000 (14:23 +0100)]
Merge remote-tracking branch 'remotes/maxreitz/tags/pull-block-2019-07-30' into staging

Block patch for 4.1.0-rc3:
- Fix CID 1403771 in block/nvme.c

# gpg: Signature made Tue 30 Jul 2019 13:51:52 BST
# gpg:                using RSA key 91BEB60A30DB3E8857D11829F407DB0061D5CF40
# gpg:                issuer "[email protected]"
# gpg: Good signature from "Max Reitz <[email protected]>" [full]
# Primary key fingerprint: 91BE B60A 30DB 3E88 57D1  1829 F407 DB00 61D5 CF40

* remotes/maxreitz/tags/pull-block-2019-07-30:
  nvme: Limit blkshift to 12 (for 4 kB blocks)

Signed-off-by: Peter Maydell <[email protected]>
5 years agonvme: Limit blkshift to 12 (for 4 kB blocks)
Max Reitz [Tue, 30 Jul 2019 11:48:12 +0000 (13:48 +0200)]
nvme: Limit blkshift to 12 (for 4 kB blocks)

Linux does not support blocks greater than 4 kB anyway, so we might as
well limit blkshift to 12 and thus save us from some potential trouble.

Reported-by: Peter Maydell <[email protected]>
Suggested-by: Maxim Levitsky <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
Message-id: 20190730114812[email protected]
Reviewed-by: Maxim Levitsky <[email protected]>
Coverity: CID 1403771
Signed-off-by: Max Reitz <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
Peter Maydell [Tue, 30 Jul 2019 11:25:34 +0000 (12:25 +0100)]
Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging

Block layer patches:

- scsi-cd: Fix inserting read-only media in empty drive
- block/copy-on-read: Fix permissions for inactive node
- Test case fixes

# gpg: Signature made Tue 30 Jul 2019 12:21:48 BST
# gpg:                using RSA key 7F09B272C88F2FD6
# gpg: Good signature from "Kevin Wolf <[email protected]>" [full]
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6

* remotes/kevin/tags/for-upstream:
  scsi-cd: Fix inserting read-only media in empty drive
  block/copy-on-read: Fix permissions for inactive node
Fixes: add read-zeroes to 051.out
  tests/multiboot: Fix load address of test kernels

Signed-off-by: Peter Maydell <[email protected]>
5 years agoscsi-cd: Fix inserting read-only media in empty drive
Kevin Wolf [Mon, 29 Jul 2019 16:33:33 +0000 (18:33 +0200)]
scsi-cd: Fix inserting read-only media in empty drive

scsi-disks decides whether it has a read-only device by looking at
whether the BlockBackend specified as drive=... is read-only. In the
case of an anonymous BlockBackend (with a node name specified in
drive=...), this is the read-only flag of the attached node. In the case
of an empty anonymous BlockBackend, it's always read-write because
nothing prevented it from being read-write.

This is a problem because scsi-cd would take write permissions on the
anonymous BlockBackend of an empty drive created without a drive=...
option. Using blockdev-insert-medium with a read-only node fails then
with the error message "Block node is read-only".

Fix scsi_realize() so that scsi-cd devices always take read-only
permissions on their BlockBackend instead.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1733920
Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
Reviewed-by: Markus Armbruster <[email protected]>
5 years agoblock/copy-on-read: Fix permissions for inactive node
Kevin Wolf [Mon, 29 Jul 2019 10:45:14 +0000 (12:45 +0200)]
block/copy-on-read: Fix permissions for inactive node

The copy-on-read drive must not request the WRITE_UNCHANGED permission
for its child if the node is inactive, otherwise starting a migration
destination with -incoming will fail because the child cannot provide
write access yet:

  qemu-system-x86_64: -blockdev copy-on-read,file=img,node-name=cor: Block node is read-only

Earlier QEMU versions additionally ran into an abort() on the migration
source side: bdrv_inactivate_recurse() failed to update permissions.
This is silently ignored today because it was only supposed to loosen
restrictions. This is the symptom that was originally reported here:

  https://bugzilla.redhat.com/show_bug.cgi?id=1733022

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
5 years agoFixes: add read-zeroes to 051.out
Andrey Shinkevich [Thu, 25 Jul 2019 12:00:50 +0000 (15:00 +0300)]
Fixes: add read-zeroes to 051.out
The patch "iotests: Set read-zeroes on in null block driver for Valgrind"
with the commit ID a6862418fec4072 needs the change in 051.out when
compared against on the s390 system.

Fixes: a6862418fec40727b392c86dc13d9ec980efcb15
Reported-by: Christian Borntraeger <[email protected]>
Signed-off-by: Andrey Shinkevich <[email protected]>
Tested-by: Christian Borntraeger <[email protected]>
Reviewed-by: John Snow <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
5 years agotests/multiboot: Fix load address of test kernels
Kevin Wolf [Mon, 22 Jul 2019 09:26:15 +0000 (11:26 +0200)]
tests/multiboot: Fix load address of test kernels

While older toolchains produced binaries where the physical load address
of ELF segments was the same as the virtual address, newer versions seem
to choose a different physical address if it isn't specified explicitly.
The means that the test kernel doesn't use the right addresses to access
e.g. format strings any more and the whole output disappears, causing
all test cases to fail.

Fix this by specifying the physical load address of sections explicitly.

Signed-off-by: Kevin Wolf <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging
Peter Maydell [Tue, 30 Jul 2019 08:43:32 +0000 (09:43 +0100)]
Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging

virtio, pc: fixes

A couple of last minute bugfixes.

Signed-off-by: Michael S. Tsirkin <[email protected]>
# gpg: Signature made Mon 29 Jul 2019 22:13:22 BST
# gpg:                using RSA key 281F0DB8D28D5469
# gpg: Good signature from "Michael S. Tsirkin <[email protected]>" [full]
# gpg:                 aka "Michael S. Tsirkin <[email protected]>" [full]
# Primary key fingerprint: 0270 606B 6F3C DF3D 0B17  0970 C350 3912 AFBE 8E67
#      Subkey fingerprint: 5D09 FD08 71C8 F85B 94CA  8A0D 281F 0DB8 D28D 5469

* remotes/mst/tags/for_upstream:
  pc-dimm: fix crash when invalid slot number is used
  Revert "hw: report invalid disable-legacy|modern usage for virtio-1-only devs"
  Revert "Revert "globals: Allow global properties to be optional""

Signed-off-by: Peter Maydell <[email protected]>
5 years agopc-dimm: fix crash when invalid slot number is used
Igor Mammedov [Tue, 23 Jul 2019 16:08:59 +0000 (12:08 -0400)]
pc-dimm: fix crash when invalid slot number is used

QEMU will crash with:
  Segmentation fault (core dumped)
when negative slot number is used, ex:
  qemu-system-x86_64 -m 1G,maxmem=20G,slots=256 \
      -object memory-backend-ram,id=mem1,size=1G \
      -device pc-dimm,id=dimm1,memdev=mem1,slot=-2

fix it by checking that slot number is within valid range.

Signed-off-by: Igor Mammedov <[email protected]>
Message-Id: <20190723160859[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: David Gibson <[email protected]>
Reviewed-by: Li Qiang <[email protected]>
Signed-off-by: Igor Mammedov &lt;<a href="mailto:[email protected]" target="_blank">[email protected]</a>&gt;<br></blockquote><div><br></div><div>Reviewed-by: Li Qiang &lt;<a href="mailto:[email protected]">[email protected]</a>&gt;<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Reviewed-by: Pankaj Gupta <[email protected]>
5 years agoRevert "hw: report invalid disable-legacy|modern usage for virtio-1-only devs"
Dr. David Alan Gilbert [Mon, 29 Jul 2019 16:29:03 +0000 (17:29 +0100)]
Revert "hw: report invalid disable-legacy|modern usage for virtio-1-only devs"

This reverts commit f2784eed306449c3d04a71a05ed6463b8289aedf
since that accidentally removes the PCIe capabilities from virtio
devices because virtio_pci_dc_realize is called before the new 'mode'
flag is set.

Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20190729162903[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Daniel P. Berrangé <[email protected]>
Reviewed-by: Cornelia Huck <[email protected]>
5 years agoRevert "Revert "globals: Allow global properties to be optional""
Dr. David Alan Gilbert [Mon, 29 Jul 2019 16:29:02 +0000 (17:29 +0100)]
Revert "Revert "globals: Allow global properties to be optional""

This reverts commit 8fa70dbd8bb478d9483c1da3e9976a2d86b3f9a0.

Because we're about to revert it's neighbour and thus uses an optional
again.

Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20190729162903[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Cornelia Huck <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/ehabkost/tags/x86-next-pull-request' into staging
Peter Maydell [Mon, 29 Jul 2019 16:11:18 +0000 (17:11 +0100)]
Merge remote-tracking branch 'remotes/ehabkost/tags/x86-next-pull-request' into staging

x86 queue for 4.1

* Rename and fix SnowRidge CPU model (Paul Lai)

# gpg: Signature made Mon 29 Jul 2019 17:09:34 BST
# gpg:                using RSA key 5A322FD5ABC4D3DBACCFD1AA2807936F984DC5A6
# gpg:                issuer "[email protected]"
# gpg: Good signature from "Eduardo Habkost <[email protected]>" [full]
# Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF  D1AA 2807 936F 984D C5A6

* remotes/ehabkost/tags/x86-next-pull-request:
  i386: Fix Snowridge CPU model name and features

Signed-off-by: Peter Maydell <[email protected]>
5 years agoi386: Fix Snowridge CPU model name and features
Paul Lai [Tue, 16 Jul 2019 15:58:08 +0000 (08:58 -0700)]
i386: Fix Snowridge CPU model name and features

Changing the name to Snowridge from SnowRidge-Server.
There is no client model of Snowridge, so "-Server" is unnecessary.

Removing CPUID_EXT_VMX from Snowridge cpu feature list.

Signed-off-by: Paul Lai <[email protected]>
Tested-by: Tao3 Xu <[email protected]>
Message-Id: <20190716155808[email protected]>
Signed-off-by: Eduardo Habkost <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/jasowang/tags/net-pull-request' into staging
Peter Maydell [Mon, 29 Jul 2019 11:04:53 +0000 (12:04 +0100)]
Merge remote-tracking branch 'remotes/jasowang/tags/net-pull-request' into staging

# gpg: Signature made Mon 29 Jul 2019 09:30:48 BST
# gpg:                using RSA key EF04965B398D6211
# gpg: Good signature from "Jason Wang (Jason Wang on RedHat) <[email protected]>" [marginal]
# gpg: WARNING: This key is not certified with sufficiently trusted signatures!
# gpg:          It is not certain that the signature belongs to the owner.
# Primary key fingerprint: 215D 46F4 8246 689E C77F  3562 EF04 965B 398D 6211

* remotes/jasowang/tags/net-pull-request:
  net/colo-compare.c: Fix memory leak and code style issue.
  net: tap: replace snprintf with g_strdup_printf calls
  qemu-bridge-helper: move repeating code in parse_acl_file
  qemu-bridge-helper: restrict interface name to IFNAMSIZ
  e1000: don't raise interrupt in pre_save()

Signed-off-by: Peter Maydell <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/dgibson/tags/ppc-for-4.1-20190728' into staging
Peter Maydell [Mon, 29 Jul 2019 10:34:54 +0000 (11:34 +0100)]
Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-4.1-20190728' into staging

ppc patch queue (for 4.1) 2019-07-28

Here's a pull request for qemu-4.1, which I hope will be the last from
the ppc tree.  This applies a couple of last minute fixes for the XIVE
code.

# gpg: Signature made Sun 28 Jul 2019 07:42:11 BST
# gpg:                using RSA key 75F46586AE61A66CC44E87DC6C38CACA20D9B392
# gpg: Good signature from "David Gibson <[email protected]>" [full]
# gpg:                 aka "David Gibson (Red Hat) <[email protected]>" [full]
# gpg:                 aka "David Gibson (ozlabs.org) <[email protected]>" [full]
# gpg:                 aka "David Gibson (kernel.org) <[email protected]>" [unknown]
# Primary key fingerprint: 75F4 6586 AE61 A66C C44E  87DC 6C38 CACA 20D9 B392

* remotes/dgibson/tags/ppc-for-4.1-20190728:
  xics/kvm: Fix fallback to emulated XICS
  spapr/irq: Inform the user when falling back to emulated IC

Signed-off-by: Peter Maydell <[email protected]>
This page took 0.138411 seconds and 4 git commands to generate.