OSDN Git Service

qmiga/qemu.git
2 years agodma: Let dma_memory_set() take MemTxAttrs argument
Philippe Mathieu-Daudé [Thu, 3 Sep 2020 08:28:32 +0000 (10:28 +0200)]
dma: Let dma_memory_set() take MemTxAttrs argument

Let devices specify transaction attributes when calling
dma_memory_set().

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Li Qiang <liq3ea@gmail.com>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20211223115554.3155328-3-philmd@redhat.com>

2 years agodma: Let dma_memory_valid() take MemTxAttrs argument
Philippe Mathieu-Daudé [Thu, 3 Sep 2020 07:28:49 +0000 (09:28 +0200)]
dma: Let dma_memory_valid() take MemTxAttrs argument

Let devices specify transaction attributes when calling
dma_memory_valid().

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Li Qiang <liq3ea@gmail.com>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20211223115554.3155328-2-philmd@redhat.com>

2 years agohw/scsi/megasas: Use uint32_t for reply queue head/tail values
Philippe Mathieu-Daudé [Fri, 17 Dec 2021 21:43:05 +0000 (22:43 +0100)]
hw/scsi/megasas: Use uint32_t for reply queue head/tail values

While the reply queue values fit in 16-bit, they are accessed
as 32-bit:

  661:    s->reply_queue_head = ldl_le_pci_dma(pcid, s->producer_pa);
  662:    s->reply_queue_head %= MEGASAS_MAX_FRAMES;
  663:    s->reply_queue_tail = ldl_le_pci_dma(pcid, s->consumer_pa);
  664:    s->reply_queue_tail %= MEGASAS_MAX_FRAMES;

Having:

  41:#define MEGASAS_MAX_FRAMES 2048         /* Firmware limit at 65535 */

In order to update the ld/st*_pci_dma() API to pass the address
of the value to access, it is simpler to have the head/tail declared
as 32-bit values. Replace the uint16_t by uint32_t, wasting 4 bytes in
the MegasasState structure.

Acked-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20211223115554.3155328-20-philmd@redhat.com>

2 years agoMerge tag 'pull-jobs-2021-12-29' of https://src.openvz.org/scm/~vsementsov/qemu into...
Richard Henderson [Wed, 29 Dec 2021 22:33:22 +0000 (14:33 -0800)]
Merge tag 'pull-jobs-2021-12-29' of https://src.openvz.org/scm/~vsementsov/qemu into staging

Jobs patches:
 - small fix of job_create()
 - refactoring: drop BlockJob.blk field

# gpg: Signature made Wed 29 Dec 2021 11:11:25 AM PST
# gpg:                using RSA key 8B9C26CDB2FD147C880E86A1561F24C1F19F79FB
# gpg: Good signature from "Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>" [unknown]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 8B9C 26CD B2FD 147C 880E  86A1 561F 24C1 F19F 79FB

* tag 'pull-jobs-2021-12-29' of https://src.openvz.org/scm/~vsementsov/qemu:
  blockjob: drop BlockJob.blk field
  test-bdrv-drain: don't use BlockJob.blk
  block/stream: add own blk
  test-blockjob-txn: don't abuse job->blk
  blockjob: implement and use block_job_get_aio_context
  job.c: add missing notifier initialization

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agoblockjob: drop BlockJob.blk field
Vladimir Sementsov-Ogievskiy [Thu, 6 May 2021 14:13:57 +0000 (17:13 +0300)]
blockjob: drop BlockJob.blk field

It's unused now (except for permission handling)[*]. The only reasonable
user of it was block-stream job, recently updated to use own blk. And
other block jobs prefer to use own source node related objects.

So, the arguments of dropping the field are:

 - block jobs prefer not to use it
 - block jobs usually has more then one node to operate on, and better
   to operate symmetrically (for example has both source and target
   blk's in specific block-job state structure)

*: BlockJob.blk is used to keep some permissions. We simply move
permissions to block-job child created in block_job_create() together
with blk.

In mirror, we just should not care anymore about restoring state of
blk. Most probably this code could be dropped long ago, after dropping
bs->job pointer. Now it finally goes away together with BlockJob.blk
itself.

iotest 141 output is updated, as "bdrv_has_blk(bs)" check in
qmp_blockdev_del() doesn't fail (we don't have blk now). Still, new
error message looks even better.

In iotest 283 we need to add a job id, otherwise "Invalid job ID"
happens now earlier than permission check (as permissions moved from
blk to block-job node).

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Nikita Lapshin <nikita.lapshin@virtuozzo.com>
2 years agotest-bdrv-drain: don't use BlockJob.blk
Vladimir Sementsov-Ogievskiy [Thu, 6 May 2021 14:13:56 +0000 (17:13 +0300)]
test-bdrv-drain: don't use BlockJob.blk

We are going to drop BlockJob.blk in further commit. For tests it's
enough to simply pass bs pointer.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Nikita Lapshin <nikita.lapshin@virtuozzo.com>
2 years agoblock/stream: add own blk
Vladimir Sementsov-Ogievskiy [Thu, 6 May 2021 14:13:55 +0000 (17:13 +0300)]
block/stream: add own blk

block-stream is the only block-job, that reasonably use BlockJob.blk.
We are going to drop BlockJob.blk soon. So, let block-stream have own
blk.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Nikita Lapshin <nikita.lapshin@virtuozzo.com>
2 years agotest-blockjob-txn: don't abuse job->blk
Vladimir Sementsov-Ogievskiy [Thu, 6 May 2021 14:13:54 +0000 (17:13 +0300)]
test-blockjob-txn: don't abuse job->blk

Here we use job->blk to drop our own reference in job cleanup. Let's do
simpler: drop our reference immediately after job creation.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Nikita Lapshin <nikita.lapshin@virtuozzo.com>
2 years agoblockjob: implement and use block_job_get_aio_context
Vladimir Sementsov-Ogievskiy [Thu, 6 May 2021 14:13:53 +0000 (17:13 +0300)]
blockjob: implement and use block_job_get_aio_context

We are going to drop BlockJob.blk. So let's retrieve block job context
from underlying job instead of main node.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Nikita Lapshin <nikita.lapshin@virtuozzo.com>
2 years agojob.c: add missing notifier initialization
Emanuele Giuseppe Esposito [Wed, 3 Nov 2021 16:21:55 +0000 (12:21 -0400)]
job.c: add missing notifier initialization

It seems that on_idle list is not properly initialized like
the other notifiers.

Fixes: 34dc97b9a0e ("blockjob: Wake up BDS when job becomes idle")
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
2 years agoMerge tag 'pull-pa-20211223' of https://gitlab.com/rth7680/qemu into staging
Richard Henderson [Fri, 24 Dec 2021 01:53:36 +0000 (17:53 -0800)]
Merge tag 'pull-pa-20211223' of https://gitlab.com/rth7680/qemu into staging

Fix target/hppa #635

# gpg: Signature made Thu 23 Dec 2021 05:47:41 PM PST
# gpg:                using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F
# gpg:                issuer "richard.henderson@linaro.org"
# gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org>" [unknown]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 7A48 1E78 868B 4DB6 A85A  05C0 64DF 38E8 AF7E 215F

* tag 'pull-pa-20211223' of https://gitlab.com/rth7680/qemu:
  target/hppa: Fix deposit assert from trans_shrpw_imm

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotarget/hppa: Fix deposit assert from trans_shrpw_imm
Richard Henderson [Mon, 13 Dec 2021 17:38:38 +0000 (09:38 -0800)]
target/hppa: Fix deposit assert from trans_shrpw_imm

Because sa may be 0,

    tcg_gen_deposit_reg(dest, t0, cpu_gr[a->r1], 32 - sa, sa);

may attempt a zero-width deposit at bit 32, which will assert
for TARGET_REGISTER_BITS == 32.

Use the newer extract2 when possible, which itself includes the
rotri special case; otherwise mirror the code from trans_shrpw_sar,
using concat and shri.

Cc: qemu-stable@nongnu.org
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/635
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agoMerge tag 'for-upstream-mtest' of https://gitlab.com/bonzini/qemu into staging
Richard Henderson [Thu, 23 Dec 2021 19:35:48 +0000 (11:35 -0800)]
Merge tag 'for-upstream-mtest' of https://gitlab.com/bonzini/qemu into staging

Replace tap-driver.pl with "meson test".

# gpg: Signature made Thu 23 Dec 2021 01:06:34 AM PST
# gpg:                using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
# gpg:                issuer "pbonzini@redhat.com"
# gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [unknown]
# gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>" [unknown]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# 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

* tag 'for-upstream-mtest' of https://gitlab.com/bonzini/qemu:
  build: use "meson test" as the test harness

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agoMerge tag 'pull-nbd-2021-12-22-v2' of https://src.openvz.org/scm/~vsementsov/qemu...
Richard Henderson [Thu, 23 Dec 2021 15:56:01 +0000 (07:56 -0800)]
Merge tag 'pull-nbd-2021-12-22-v2' of https://src.openvz.org/scm/~vsementsov/qemu into staging

nbd: reconnect-on-open feature
  v2: simple fix for mypy and pylint complains on patch 04

# gpg: Signature made Thu 23 Dec 2021 12:45:20 AM PST
# gpg:                using RSA key 8B9C26CDB2FD147C880E86A1561F24C1F19F79FB
# gpg: Good signature from "Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>" [unknown]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 8B9C 26CD B2FD 147C 880E  86A1 561F 24C1 F19F 79FB

* tag 'pull-nbd-2021-12-22-v2' of https://src.openvz.org/scm/~vsementsov/qemu:
  iotests: add nbd-reconnect-on-open test
  iotests.py: add qemu_io_popen()
  iotests.py: add and use qemu_io_wrap_args()
  iotests.py: add qemu_tool_popen()
  nbd/client-connection: improve error message of cancelled attempt
  nbd/client-connection: nbd_co_establish_connection(): return real error
  nbd: allow reconnect on open, with corresponding new options

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agobuild: use "meson test" as the test harness
Paolo Bonzini [Thu, 11 Feb 2021 11:15:12 +0000 (06:15 -0500)]
build: use "meson test" as the test harness

"meson test" starting with version 0.57 is just as capable and easy to
use as QEMU's own TAP driver.  All existing options for "make check"
work.  The only required code change involves how to mark "slow" tests;
they need to belong to an additional "slow" suite.

The rules for .tap output are replaced by JUnit XML; GitLab is able
to parse that output and present it in the CI pipeline report.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2 years agoiotests: add nbd-reconnect-on-open test
Vladimir Sementsov-Ogievskiy [Mon, 6 Sep 2021 19:06:54 +0000 (22:06 +0300)]
iotests: add nbd-reconnect-on-open test

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Nikita Lapshin <nikita.lapshin@virtuozzo.com>
2 years agoiotests.py: add qemu_io_popen()
Vladimir Sementsov-Ogievskiy [Thu, 14 Oct 2021 17:02:06 +0000 (19:02 +0200)]
iotests.py: add qemu_io_popen()

Add qemu-io Popen constructor wrapper. To be used in the following new
test commit.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Nikita Lapshin <nikita.lapshin@virtuozzo.com>
2 years agoiotests.py: add and use qemu_io_wrap_args()
Vladimir Sementsov-Ogievskiy [Thu, 14 Oct 2021 17:01:14 +0000 (19:01 +0200)]
iotests.py: add and use qemu_io_wrap_args()

For qemu_io* functions support --image-opts argument, which conflicts
with -f argument from qemu_io_args.

For QemuIoInteractive use new wrapper as well, which allows relying on
default format.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Nikita Lapshin <nikita.lapshin@virtuozzo.com>
2 years agoiotests.py: add qemu_tool_popen()
Vladimir Sementsov-Ogievskiy [Mon, 6 Sep 2021 19:06:51 +0000 (22:06 +0300)]
iotests.py: add qemu_tool_popen()

Split qemu_tool_popen() from qemu_tool_pipe_and_status() to be used
separately.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Nikita Lapshin <nikita.lapshin@virtuozzo.com>
2 years agoMerge tag 'pull-block-2021-12-22' of https://gitlab.com/hreitz/qemu into staging
Richard Henderson [Wed, 22 Dec 2021 18:01:11 +0000 (10:01 -0800)]
Merge tag 'pull-block-2021-12-22' of https://gitlab.com/hreitz/qemu into staging

Block patches:
- Added support to the iotests for running tests in several parallel
  jobs (using the new -j parameter)

# gpg: Signature made Wed 22 Dec 2021 08:38:55 AM PST
# gpg:                using RSA key CB62D7A0EE3829E45F004D34A1FA40D098019CDF
# gpg:                issuer "hreitz@redhat.com"
# gpg: Good signature from "Hanna Reitz <hreitz@redhat.com>" [unknown]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: CB62 D7A0 EE38 29E4 5F00  4D34 A1FA 40D0 9801 9CDF

* tag 'pull-block-2021-12-22' of https://gitlab.com/hreitz/qemu:
  iotests: check: multiprocessing support
  iotests/testrunner.py: move updating last_elapsed to run_tests
  iotests/testrunner.py: add doc string for run_test()

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agoiotests: check: multiprocessing support
Vladimir Sementsov-Ogievskiy [Fri, 3 Dec 2021 12:22:23 +0000 (13:22 +0100)]
iotests: check: multiprocessing support

Add -j <JOBS> parameter, to run tests in several jobs simultaneously.
For realization - simply utilize multiprocessing.Pool class.

Notes:

1. Of course, tests can't run simultaneously in same TEST_DIR. So,
   use subdirectories TEST_DIR/testname/ and SOCK_DIR/testname/
   instead of simply TEST_DIR and SOCK_DIR

2. multiprocessing.Pool.starmap function doesn't support passing
   context managers, so we can't simply pass "self". Happily, we need
   self only for read-only access, and it just works if it is defined
   in global space. So, add a temporary link TestRunner.shared_self
   during run_tests().

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20211203122223.2780098-4-vsementsov@virtuozzo.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Tested-by: John Snow <jsnow@redhat.com>
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
2 years agoiotests/testrunner.py: move updating last_elapsed to run_tests
Vladimir Sementsov-Ogievskiy [Fri, 3 Dec 2021 12:22:22 +0000 (13:22 +0100)]
iotests/testrunner.py: move updating last_elapsed to run_tests

We are going to use do_run_test() in multiprocessing environment, where
we'll not be able to change original runner object.

Happily, the only thing we change is that last_elapsed and it's simple
to do it in run_tests() instead. All other accesses to self in
do_runt_test() and in run_test() are read-only.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20211203122223.2780098-3-vsementsov@virtuozzo.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Tested-by: John Snow <jsnow@redhat.com>
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
2 years agoiotests/testrunner.py: add doc string for run_test()
Vladimir Sementsov-Ogievskiy [Fri, 3 Dec 2021 12:22:21 +0000 (13:22 +0100)]
iotests/testrunner.py: add doc string for run_test()

We are going to modify these methods and will add more documentation in
further commit. As a preparation add basic documentation.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20211203122223.2780098-2-vsementsov@virtuozzo.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Tested-by: John Snow <jsnow@redhat.com>
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
2 years agoMerge tag 'pull-request-2021-12-22' of https://gitlab.com/thuth/qemu into staging
Richard Henderson [Wed, 22 Dec 2021 15:23:05 +0000 (07:23 -0800)]
Merge tag 'pull-request-2021-12-22' of https://gitlab.com/thuth/qemu into staging

* Fixes for the virtio-net-failover test
* Silence warnings in the boot-serial-test
* Make qtests more flexible wrt missing machines and devices

# gpg: Signature made Wed 22 Dec 2021 01:20:18 AM PST
# gpg:                using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5
# gpg:                issuer "thuth@redhat.com"
# gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [unknown]
# gpg:                 aka "Thomas Huth <thuth@redhat.com>" [unknown]
# gpg:                 aka "Thomas Huth <th.huth@posteo.de>" [unknown]
# gpg:                 aka "Thomas Huth <huth@tuxfamily.org>" [unknown]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 27B8 8847 EEE0 2501 18F3  EAB9 2ED9 D774 FE70 2DB5

* tag 'pull-request-2021-12-22' of https://gitlab.com/thuth/qemu:
  tests/qtest/virtio-net-failover: Use g_file_open_tmp() to create temporary file
  tests/qtest/boot-order-test: Check whether machines are available
  tests/qtest/cdrom-test: Check whether devices are available before using them
  tests/qtest: Improve endianness-test to work with missing machines and devices
  tests/qtest: Add a function that checks whether a device is available
  MAINTAINERS: Update COLO Proxy section
  tests/qtest: Make the filter tests independent from a specific NIC
  tests/qtest/boot-serial-test: Silence the warning about deprecated sga device
  failover: Silence warning messages during qtest

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotests/qtest/virtio-net-failover: Use g_file_open_tmp() to create temporary file
Thomas Huth [Wed, 22 Dec 2021 08:30:54 +0000 (09:30 +0100)]
tests/qtest/virtio-net-failover: Use g_file_open_tmp() to create temporary file

g_test_rand_int() must not be called before g_test_init(), otherwise
the glib will show a "g_rand_int: assertion 'rand != NULL' failed"
message in the log. So we could change the order here, but actually,
it's safer to use g_file_open_tmp() anyway, so let's use that function
now instead.

Reported-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20211222083652.776592-1-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
2 years agotests/qtest/boot-order-test: Check whether machines are available
Thomas Huth [Mon, 20 Dec 2021 08:10:54 +0000 (09:10 +0100)]
tests/qtest/boot-order-test: Check whether machines are available

Machines might not always be compiled into the QEMU binary, so
we should skip the test instead of failing if it is not available.

Message-Id: <20211220081054.151515-5-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
2 years agotests/qtest/cdrom-test: Check whether devices are available before using them
Thomas Huth [Mon, 20 Dec 2021 08:10:53 +0000 (09:10 +0100)]
tests/qtest/cdrom-test: Check whether devices are available before using them

Downstream users might want to disable legacy devices in their binaries,
so we should not blindly assume that they are available. Add some proper
checks before using them.

Message-Id: <20211220081054.151515-4-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
2 years agotests/qtest: Improve endianness-test to work with missing machines and devices
Thomas Huth [Mon, 20 Dec 2021 08:10:52 +0000 (09:10 +0100)]
tests/qtest: Improve endianness-test to work with missing machines and devices

The users might have built QEMU with less machines or without the
i82378 superio device. Add some checks to the endianess-test so that
it is able to deal with such stripped down QEMU versions, too.

Message-Id: <20211220081054.151515-3-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
2 years agotests/qtest: Add a function that checks whether a device is available
Thomas Huth [Mon, 20 Dec 2021 08:10:51 +0000 (09:10 +0100)]
tests/qtest: Add a function that checks whether a device is available

Devices might not always be compiled into the QEMU target binaries.
We already have the libqos framework that is good for handling such
situations, but some of the qtests are not a real good fit for the
libqos framework. Let's add a qtest_has_device() function for such
tests instead.

Message-Id: <20211220081054.151515-2-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
2 years agoMAINTAINERS: Update COLO Proxy section
Zhang Chen [Tue, 21 Dec 2021 08:04:00 +0000 (16:04 +0800)]
MAINTAINERS: Update COLO Proxy section

Signed-off-by: Zhang Chen <chen.zhang@intel.com>
Message-Id: <20211221080400.1492980-1-chen.zhang@intel.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
2 years agotests/qtest: Make the filter tests independent from a specific NIC
Thomas Huth [Mon, 20 Dec 2021 10:30:25 +0000 (11:30 +0100)]
tests/qtest: Make the filter tests independent from a specific NIC

These filter tests need a NIC, no matter which one, so they use a common
NIC by default. However, these common NIC models might not always have
been compiled into the QEMU target binary, so assuming that a certain NIC
is available is a bad idea. Since the exact type of NIC does not really
matter for these tests, let's switch to "-nic" instead of "-netdev" so
that QEMU can simply pick a default NIC for us.
This way we can now run the tests on other targets that have a default
machine with an on-board/default NIC, too.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20211220103025.311759-1-thuth@redhat.com>
Reviewed-by: Zhang Chen <chen.zhang@intel.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
2 years agotests/qtest/boot-serial-test: Silence the warning about deprecated sga device
Thomas Huth [Mon, 20 Dec 2021 16:40:42 +0000 (17:40 +0100)]
tests/qtest/boot-serial-test: Silence the warning about deprecated sga device

When running the qtests, there are currently a bunch of warnings about
the deprecated sga device during the boot-serial-test. Switch to
"-M graphics=off" to silence these warnings.

Message-Id: <20211220164042.397028-1-thuth@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
2 years agofailover: Silence warning messages during qtest
Laurent Vivier [Mon, 20 Dec 2021 14:53:14 +0000 (15:53 +0100)]
failover: Silence warning messages during qtest

virtio-net-failover test tries several device combinations that produces
some expected warnings.
These warning can be confusing, so we disable them during the qtest
sequence.

Reported-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Message-Id: <20211220145314.390697-1-lvivier@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
[thuth: Fix memory leak by using error_free()]
Signed-off-by: Thomas Huth <thuth@redhat.com>
2 years agoMerge tag 'pull-loong-20211221-2' of https://gitlab.com/rth7680/qemu into staging
Richard Henderson [Tue, 21 Dec 2021 21:30:35 +0000 (13:30 -0800)]
Merge tag 'pull-loong-20211221-2' of https://gitlab.com/rth7680/qemu into staging

Initial commit of tcg/loongarch64

# gpg: Signature made Tue 21 Dec 2021 01:19:00 PM PST
# gpg:                using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F
# gpg:                issuer "richard.henderson@linaro.org"
# gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org>" [unknown]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 7A48 1E78 868B 4DB6 A85A  05C0 64DF 38E8 AF7E 215F

* tag 'pull-loong-20211221-2' of https://gitlab.com/rth7680/qemu: (30 commits)
  configure, meson.build: Mark support for loongarch64 hosts
  linux-user: Implement CPU-specific signal handler for loongarch64 hosts
  common-user: Add safe syscall handling for loongarch64 hosts
  tcg/loongarch64: Register the JIT
  tcg/loongarch64: Implement tcg_target_init
  tcg/loongarch64: Implement exit_tb/goto_tb
  tcg/loongarch64: Implement tcg_target_qemu_prologue
  tcg/loongarch64: Add softmmu load/store helpers, implement qemu_ld/qemu_st ops
  tcg/loongarch64: Implement simple load/store ops
  tcg/loongarch64: Implement tcg_out_call
  tcg/loongarch64: Implement setcond ops
  tcg/loongarch64: Implement br/brcond ops
  tcg/loongarch64: Implement mul/mulsh/muluh/div/divu/rem/remu ops
  tcg/loongarch64: Implement add/sub ops
  tcg/loongarch64: Implement shl/shr/sar/rotl/rotr ops
  tcg/loongarch64: Implement clz/ctz ops
  tcg/loongarch64: Implement bswap{16,32,64} ops
  tcg/loongarch64: Implement deposit/extract ops
  tcg/loongarch64: Implement not/and/or/xor/nor/andc/orc ops
  tcg/loongarch64: Implement sign-/zero-extension ops
  ...

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agoconfigure, meson.build: Mark support for loongarch64 hosts
WANG Xuerui [Tue, 21 Dec 2021 05:41:04 +0000 (13:41 +0800)]
configure, meson.build: Mark support for loongarch64 hosts

Example output of `uname -a` on an initial Gentoo LA64 port, running
the upstream submission version of Linux (with some very minor patches
not influencing output here):

> Linux <hostname> 5.14.0-10342-g37a00851b145 #5 SMP PREEMPT Tue Aug 10 12:56:24 PM CST 2021 loongarch64 GNU/Linux

And the same on the vendor-supplied Loongnix 20 system, with an early
in-house port of Linux, and using the old-world ABI:

> Linux <hostname> 4.19.167-rc5.lnd.1-loongson-3 #1 SMP Sat Apr 17 07:32:32 UTC 2021 loongarch64 loongarch64 loongarch64 GNU/Linux

So a name of "loongarch64" matches both, fortunately.

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-31-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agolinux-user: Implement CPU-specific signal handler for loongarch64 hosts
WANG Xuerui [Tue, 21 Dec 2021 05:41:03 +0000 (13:41 +0800)]
linux-user: Implement CPU-specific signal handler for loongarch64 hosts

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-30-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agocommon-user: Add safe syscall handling for loongarch64 hosts
WANG Xuerui [Tue, 21 Dec 2021 05:41:02 +0000 (13:41 +0800)]
common-user: Add safe syscall handling for loongarch64 hosts

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20211221054105.178795-29-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Register the JIT
WANG Xuerui [Tue, 21 Dec 2021 05:41:01 +0000 (13:41 +0800)]
tcg/loongarch64: Register the JIT

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20211221054105.178795-28-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement tcg_target_init
WANG Xuerui [Tue, 21 Dec 2021 05:41:00 +0000 (13:41 +0800)]
tcg/loongarch64: Implement tcg_target_init

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20211221054105.178795-27-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement exit_tb/goto_tb
WANG Xuerui [Tue, 21 Dec 2021 05:40:59 +0000 (13:40 +0800)]
tcg/loongarch64: Implement exit_tb/goto_tb

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20211221054105.178795-26-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement tcg_target_qemu_prologue
WANG Xuerui [Tue, 21 Dec 2021 05:40:58 +0000 (13:40 +0800)]
tcg/loongarch64: Implement tcg_target_qemu_prologue

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20211221054105.178795-25-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Add softmmu load/store helpers, implement qemu_ld/qemu_st ops
WANG Xuerui [Tue, 21 Dec 2021 05:40:57 +0000 (13:40 +0800)]
tcg/loongarch64: Add softmmu load/store helpers, implement qemu_ld/qemu_st ops

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20211221054105.178795-24-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement simple load/store ops
WANG Xuerui [Tue, 21 Dec 2021 05:40:56 +0000 (13:40 +0800)]
tcg/loongarch64: Implement simple load/store ops

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-23-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement tcg_out_call
WANG Xuerui [Tue, 21 Dec 2021 05:40:55 +0000 (13:40 +0800)]
tcg/loongarch64: Implement tcg_out_call

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20211221054105.178795-22-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement setcond ops
WANG Xuerui [Tue, 21 Dec 2021 05:40:54 +0000 (13:40 +0800)]
tcg/loongarch64: Implement setcond ops

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20211221054105.178795-21-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement br/brcond ops
WANG Xuerui [Tue, 21 Dec 2021 05:40:53 +0000 (13:40 +0800)]
tcg/loongarch64: Implement br/brcond ops

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-20-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement mul/mulsh/muluh/div/divu/rem/remu ops
WANG Xuerui [Tue, 21 Dec 2021 05:40:52 +0000 (13:40 +0800)]
tcg/loongarch64: Implement mul/mulsh/muluh/div/divu/rem/remu ops

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-19-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement add/sub ops
WANG Xuerui [Tue, 21 Dec 2021 05:40:51 +0000 (13:40 +0800)]
tcg/loongarch64: Implement add/sub ops

The neg_i{32,64} ops is fully expressible with sub, so omitted for
simplicity.

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-18-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement shl/shr/sar/rotl/rotr ops
WANG Xuerui [Tue, 21 Dec 2021 05:40:50 +0000 (13:40 +0800)]
tcg/loongarch64: Implement shl/shr/sar/rotl/rotr ops

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-17-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement clz/ctz ops
WANG Xuerui [Tue, 21 Dec 2021 05:40:49 +0000 (13:40 +0800)]
tcg/loongarch64: Implement clz/ctz ops

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20211221054105.178795-16-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement bswap{16,32,64} ops
WANG Xuerui [Tue, 21 Dec 2021 05:40:48 +0000 (13:40 +0800)]
tcg/loongarch64: Implement bswap{16,32,64} ops

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-15-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement deposit/extract ops
WANG Xuerui [Tue, 21 Dec 2021 05:40:47 +0000 (13:40 +0800)]
tcg/loongarch64: Implement deposit/extract ops

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-14-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement not/and/or/xor/nor/andc/orc ops
WANG Xuerui [Tue, 21 Dec 2021 05:40:46 +0000 (13:40 +0800)]
tcg/loongarch64: Implement not/and/or/xor/nor/andc/orc ops

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-13-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement sign-/zero-extension ops
WANG Xuerui [Tue, 21 Dec 2021 05:40:45 +0000 (13:40 +0800)]
tcg/loongarch64: Implement sign-/zero-extension ops

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-12-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement goto_ptr
WANG Xuerui [Tue, 21 Dec 2021 05:40:44 +0000 (13:40 +0800)]
tcg/loongarch64: Implement goto_ptr

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-11-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement tcg_out_mov and tcg_out_movi
WANG Xuerui [Tue, 21 Dec 2021 05:40:43 +0000 (13:40 +0800)]
tcg/loongarch64: Implement tcg_out_mov and tcg_out_movi

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-10-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement the memory barrier op
WANG Xuerui [Tue, 21 Dec 2021 05:40:42 +0000 (13:40 +0800)]
tcg/loongarch64: Implement the memory barrier op

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-9-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Implement necessary relocation operations
WANG Xuerui [Tue, 21 Dec 2021 05:40:41 +0000 (13:40 +0800)]
tcg/loongarch64: Implement necessary relocation operations

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-8-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Define the operand constraints
WANG Xuerui [Tue, 21 Dec 2021 05:40:40 +0000 (13:40 +0800)]
tcg/loongarch64: Define the operand constraints

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-7-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Add register names, allocation order and input/output sets
WANG Xuerui [Tue, 21 Dec 2021 05:40:39 +0000 (13:40 +0800)]
tcg/loongarch64: Add register names, allocation order and input/output sets

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20211221054105.178795-6-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Add generated instruction opcodes and encoding helpers
WANG Xuerui [Tue, 21 Dec 2021 05:40:38 +0000 (13:40 +0800)]
tcg/loongarch64: Add generated instruction opcodes and encoding helpers

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Acked-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20211221054105.178795-5-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agotcg/loongarch64: Add the tcg-target.h file
WANG Xuerui [Tue, 21 Dec 2021 05:40:37 +0000 (13:40 +0800)]
tcg/loongarch64: Add the tcg-target.h file

Support for all optional TCG ops are initially marked disabled; the bits
are to be set in individual commits later.

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-4-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agoMAINTAINERS: Add tcg/loongarch64 entry with myself as maintainer
WANG Xuerui [Tue, 21 Dec 2021 05:40:36 +0000 (13:40 +0800)]
MAINTAINERS: Add tcg/loongarch64 entry with myself as maintainer

I ported the initial code, so I should maintain it of course.

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-3-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agoelf: Add machine type value for LoongArch
WANG Xuerui [Tue, 21 Dec 2021 05:40:35 +0000 (13:40 +0800)]
elf: Add machine type value for LoongArch

This is already officially allocated as recorded in GNU binutils
repo [1], and the description is updated in [2]. Add to enable further
work.

[1]: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=4cf2ad720078a9f490dd5b5bc8893a926479196e
[2]: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=01a8c731aacbdbed0eb5682d13cc074dc7e25fb3

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20211221054105.178795-2-git@xen0n.name>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agoMerge tag 'dbus-pull-request' of https://gitlab.com/marcandre.lureau/qemu into staging
Richard Henderson [Tue, 21 Dec 2021 16:00:26 +0000 (08:00 -0800)]
Merge tag 'dbus-pull-request' of https://gitlab.com/marcandre.lureau/qemu into staging

Add D-Bus display backend

# gpg: Signature made Mon 20 Dec 2021 10:57:18 PM PST
# gpg:                using RSA key 87A9BD933F87C606D276F62DDAE8E10975969CE5
# gpg:                issuer "marcandre.lureau@redhat.com"
# gpg: Good signature from "Marc-André Lureau <marcandre.lureau@redhat.com>" [unknown]
# gpg:                 aka "Marc-André Lureau <marcandre.lureau@gmail.com>" [unknown]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 87A9 BD93 3F87 C606 D276  F62D DAE8 E109 7596 9CE5

* tag 'dbus-pull-request' of https://gitlab.com/marcandre.lureau/qemu: (36 commits)
  MAINTAINERS: update D-Bus section
  ui/dbus: register D-Bus VC handler
  ui/dbus: add chardev backend & interface
  option: add g_auto for QemuOpts
  chardev: make socket derivable
  chardev: teach socket to accept no addresses
  ui/dbus: add clipboard interface
  audio: add "dbus" audio backend
  tests: start dbus-display-test
  tests/qtests: add qtest_qmp_add_client()
  ui/dbus: add p2p=on/off option
  ui: add a D-Bus display backend
  build-sys: set glib dependency version
  docs: add dbus-display documentation
  docs: move D-Bus VMState documentation to source XML
  backends: move dbus-vmstate1.xml to backends/
  docs/sphinx: add sphinx modules to include D-Bus documentation
  scripts: teach modinfo to skip non-C sources
  console: save current scanout details
  ui: move qemu_spice_fill_device_address to ui/util.c
  ...

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2 years agonbd/client-connection: improve error message of cancelled attempt
Vladimir Sementsov-Ogievskiy [Mon, 6 Sep 2021 19:06:50 +0000 (22:06 +0300)]
nbd/client-connection: improve error message of cancelled attempt

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
2 years agonbd/client-connection: nbd_co_establish_connection(): return real error
Vladimir Sementsov-Ogievskiy [Mon, 6 Sep 2021 19:06:49 +0000 (22:06 +0300)]
nbd/client-connection: nbd_co_establish_connection(): return real error

The only caller of nbd_do_establish_connection() that uses errp is
nbd_open(). The only way to cancel this call is through open_timer
timeout. And for this case, user will be more interested in description
of last failed connect rather than in
"Connection attempt cancelled by other operation".

So, let's change behavior on cancel to return previous failure error if
available.

Do the same for non-blocking failure case. In this case we still don't
have a caller that is interested in errp. But let's be consistent.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
2 years agonbd: allow reconnect on open, with corresponding new options
Vladimir Sementsov-Ogievskiy [Mon, 6 Sep 2021 19:06:48 +0000 (22:06 +0300)]
nbd: allow reconnect on open, with corresponding new options

It is useful when start of vm and start of nbd server are not
simple to sync.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
2 years agoMAINTAINERS: update D-Bus section
Marc-André Lureau [Sat, 9 Oct 2021 20:30:30 +0000 (00:30 +0400)]
MAINTAINERS: update D-Bus section

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agoui/dbus: register D-Bus VC handler
Marc-André Lureau [Wed, 29 Sep 2021 16:32:28 +0000 (20:32 +0400)]
ui/dbus: register D-Bus VC handler

Export the default consoles over the D-Bus chardev.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agoui/dbus: add chardev backend & interface
Marc-André Lureau [Thu, 22 Jul 2021 15:43:29 +0000 (19:43 +0400)]
ui/dbus: add chardev backend & interface

Add a new chardev backend which allows D-Bus client to handle the
chardev stream & events.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agooption: add g_auto for QemuOpts
Marc-André Lureau [Mon, 26 Jul 2021 06:32:37 +0000 (10:32 +0400)]
option: add g_auto for QemuOpts

Used in the next commit.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agochardev: make socket derivable
Marc-André Lureau [Sun, 25 Jul 2021 20:03:01 +0000 (00:03 +0400)]
chardev: make socket derivable

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
2 years agochardev: teach socket to accept no addresses
Marc-André Lureau [Sun, 25 Jul 2021 19:59:12 +0000 (23:59 +0400)]
chardev: teach socket to accept no addresses

The following patches are going to use CharSocket as a base class for
sockets that are created with a given fd (without a given address).

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agoui/dbus: add clipboard interface
Marc-André Lureau [Tue, 20 Jul 2021 12:02:52 +0000 (16:02 +0400)]
ui/dbus: add clipboard interface

Expose the clipboard API over D-Bus. See the interface documentation for
further details.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agoaudio: add "dbus" audio backend
Marc-André Lureau [Tue, 9 Mar 2021 13:15:28 +0000 (17:15 +0400)]
audio: add "dbus" audio backend

Add a new -audio backend that accepts D-Bus clients/listeners to handle
playback & recording, to be exported via the -display dbus.

Example usage:
-audiodev dbus,in.mixing-engine=off,out.mixing-engine=off,id=dbus
-display dbus,audiodev=dbus

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agotests: start dbus-display-test
Marc-André Lureau [Wed, 6 Oct 2021 21:08:15 +0000 (01:08 +0400)]
tests: start dbus-display-test

Cover basic display interface usage. More cases to be added to cover
disconnections, multiple connections, corner cases. At this point, they
would be better written in Rust or Python though.

The proxy also covers reading the properties, since they are
automatically loaded at creation.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agotests/qtests: add qtest_qmp_add_client()
Marc-André Lureau [Wed, 6 Oct 2021 21:07:30 +0000 (01:07 +0400)]
tests/qtests: add qtest_qmp_add_client()

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agoui/dbus: add p2p=on/off option
Marc-André Lureau [Sat, 9 Oct 2021 20:16:57 +0000 (00:16 +0400)]
ui/dbus: add p2p=on/off option

Add an option to use direct connections instead of via the bus. Clients
are accepted with QMP add_client.

This allows to provide the D-Bus display without a bus. It also
simplifies the testing setup (some CI have issues to setup a D-Bus bus
in a container).

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agoui: add a D-Bus display backend
Marc-André Lureau [Thu, 15 Jul 2021 07:53:53 +0000 (11:53 +0400)]
ui: add a D-Bus display backend

The "dbus" display backend exports the QEMU consoles and other
UI-related interfaces over D-Bus.

By default, the connection is established on the session bus, but you
can specify a different bus with the "addr" option.

The backend takes the "org.qemu" service name, while still allowing
further instances to queue on the same name (so you can lookup all the
available instances too). It accepts any number of clients at this
point, although this is expected to evolve with options to restrict
clients, or only accept p2p via fd passing.

The interface is intentionally very close to the internal QEMU API,
and can be introspected or interacted with busctl/dfeet etc:

$ ./qemu-system-x86_64 -name MyVM -display dbus
$ busctl --user introspect org.qemu /org/qemu/Display1/Console_0

org.qemu.Display1.Console           interface -         -               -
.RegisterListener                   method    h         -               -
.SetUIInfo                          method    qqiiuu    -               -
.DeviceAddress                      property  s         "pci/0000/01.0" emits-change
.Head                               property  u         0               emits-change
.Height                             property  u         480             emits-change
.Label                              property  s         "VGA"           emits-change
.Type                               property  s         "Graphic"       emits-change
.Width                              property  u         640             emits-change
[...]

See the interfaces XML source file and Sphinx docs for the generated API
documentations.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agobuild-sys: set glib dependency version
Marc-André Lureau [Sat, 9 Oct 2021 13:37:40 +0000 (17:37 +0400)]
build-sys: set glib dependency version

Further meson configuration tests are to be added based on the glib
version. Also correct the version reporting in the config log.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
2 years agodocs: add dbus-display documentation
Marc-André Lureau [Tue, 5 Oct 2021 21:41:01 +0000 (01:41 +0400)]
docs: add dbus-display documentation

Wire up the dbus-display documentation. The interface and feature is
implemented next.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agodocs: move D-Bus VMState documentation to source XML
Marc-André Lureau [Tue, 5 Oct 2021 21:35:29 +0000 (01:35 +0400)]
docs: move D-Bus VMState documentation to source XML

Use the source XML document as single reference, importing its
documentation via the dbus-doc directive.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agobackends: move dbus-vmstate1.xml to backends/
Marc-André Lureau [Tue, 5 Oct 2021 21:18:42 +0000 (01:18 +0400)]
backends: move dbus-vmstate1.xml to backends/

Although not used by the backend itself, use a common location for
documentation and sharing purposes.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agodocs/sphinx: add sphinx modules to include D-Bus documentation
Marc-André Lureau [Tue, 5 Oct 2021 21:00:35 +0000 (01:00 +0400)]
docs/sphinx: add sphinx modules to include D-Bus documentation

Add a new dbus-doc directive to import D-Bus interfaces documentation
from the introspection XML. The comments annotations follow the
gtkdoc/kerneldoc style, and should be formatted with reST.

Note: I realize after the fact that I was implementing those modules
with sphinx 4, and that we have much lower requirements. Instead of
lowering the features and code (removing type annotations etc), let's
have a warning in the documentation when the D-Bus modules can't be
used, and point to the source XML file in that case.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agoscripts: teach modinfo to skip non-C sources
Marc-André Lureau [Thu, 15 Jul 2021 07:54:13 +0000 (11:54 +0400)]
scripts: teach modinfo to skip non-C sources

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agoconsole: save current scanout details
Marc-André Lureau [Sat, 20 Feb 2021 12:23:03 +0000 (16:23 +0400)]
console: save current scanout details

Add a new DisplayScanout structure to save the current scanout details.
This allows to attach later UI backends and set the scanout.

Introduce displaychangelistener_display_console() helper function to
handle the dpy_gfx_switch/gl_scanout() & dpy_gfx_update() calls.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agoui: move qemu_spice_fill_device_address to ui/util.c
Marc-André Lureau [Mon, 15 Feb 2021 11:10:36 +0000 (15:10 +0400)]
ui: move qemu_spice_fill_device_address to ui/util.c

Other backends can use it.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agoui: split the GL context in a different object
Marc-André Lureau [Sat, 9 Oct 2021 19:48:46 +0000 (23:48 +0400)]
ui: split the GL context in a different object

This will allow to have one GL context but a variable number of
listeners.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agoui: dispatch GL events to all listeners
Marc-André Lureau [Mon, 25 Jan 2021 20:00:30 +0000 (00:00 +0400)]
ui: dispatch GL events to all listeners

For now, only one listener can receive GL events. Let's dispatch to all
listeners. (preliminary check ensure there is a single listener now
during regitration, and in next patches, compatible listeners only)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agoui: simplify gl unblock & flush
Marc-André Lureau [Thu, 11 Mar 2021 08:11:37 +0000 (12:11 +0400)]
ui: simplify gl unblock & flush

GraphicHw.gl_flushed was introduced to notify the
device (vhost-user-gpu) that the GL resources (the display scanout) are
no longer needed.

It was decoupled from QEMU own gl-blocking mechanism, but that
difference isn't helping. Instead, we can reuse QEMU gl-blocking and
notify virtio_gpu_gl_flushed() when unblocking (to unlock
vhost-user-gpu).

An extra block/unblock is added arount dpy_gl_update() so existing
backends that don't block will have the flush event handled. It will
also help when there are no backends associated.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agoui: add a gl-unblock warning timer
Marc-André Lureau [Thu, 11 Mar 2021 07:56:58 +0000 (11:56 +0400)]
ui: add a gl-unblock warning timer

Similar to the one that exists for Spice, so we can investigate if
something is locked.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agoui: make gl_block use a counter
Marc-André Lureau [Thu, 11 Mar 2021 07:45:33 +0000 (11:45 +0400)]
ui: make gl_block use a counter

Track multiple callers blocking requests.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agoui: associate GL context outside of display listener registration
Marc-André Lureau [Mon, 25 Jan 2021 11:10:36 +0000 (15:10 +0400)]
ui: associate GL context outside of display listener registration

Consoles can have an associated GL context, without listeners (they may
be added or removed later on).

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agoui: factor out qemu_console_set_display_gl_ctx()
Marc-André Lureau [Mon, 25 Jan 2021 10:53:18 +0000 (14:53 +0400)]
ui: factor out qemu_console_set_display_gl_ctx()

The next patch will make use of this function to dissociate
DisplayChangeListener from GL context.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
2 years agoui: do not delay further remote resize
Marc-André Lureau [Tue, 13 Apr 2021 16:39:11 +0000 (20:39 +0400)]
ui: do not delay further remote resize

A remote client, such as Spice, will already avoid flooding the stream
by delaying the resize requests.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agovirtio-gpu: use VIRTIO_GPU_RESOURCE_FLAG_Y_0_TOP
Marc-André Lureau [Tue, 4 May 2021 08:07:46 +0000 (12:07 +0400)]
virtio-gpu: use VIRTIO_GPU_RESOURCE_FLAG_Y_0_TOP

It's part of Linux headers for a while now.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
2 years agohw/display: report an error if virgl initialization failed
Marc-André Lureau [Thu, 1 Jul 2021 07:08:54 +0000 (11:08 +0400)]
hw/display: report an error if virgl initialization failed

Currently, virgl initialization error is silent. Make it verbose instead.

(this is likely going to bug later on, as the device isn't fully
initialized)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
2 years agoui/clipboard: add a clipboard reset serial event
Marc-André Lureau [Mon, 19 Jul 2021 15:49:56 +0000 (19:49 +0400)]
ui/clipboard: add a clipboard reset serial event

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
2 years agoui/clipboard: add qemu_clipboard_check_serial()
Marc-André Lureau [Wed, 21 Jul 2021 11:19:13 +0000 (15:19 +0400)]
ui/clipboard: add qemu_clipboard_check_serial()

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>