]> Git Repo - qemu.git/log
qemu.git
5 years agoqos-test: eepro100 test node
Emanuele Giuseppe Esposito [Fri, 17 Aug 2018 14:13:25 +0000 (16:13 +0200)]
qos-test: eepro100 test node

Convert tests/eepro100-test to a driver node; currently it runs
the PCI nop test only, therefore we're not placing it in tests/libqos.
For now, all nodes share the same constructor and destructor.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: es1370 test node
Emanuele Giuseppe Esposito [Fri, 17 Aug 2018 14:03:36 +0000 (16:03 +0200)]
qos-test: es1370 test node

Convert tests/es1370-test to a driver node; currently it runs
the PCI nop test only, therefore we're not placing it in tests/libqos.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: vmxnet3 test node
Emanuele Giuseppe Esposito [Fri, 17 Aug 2018 13:52:52 +0000 (15:52 +0200)]
qos-test: vmxnet3 test node

Convert tests/vmxnet3-test to a driver node; currently it runs
the PCI nop test only, therefore we're not placing it in tests/libqos.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: usb-hcd-ohci test node
Emanuele Giuseppe Esposito [Fri, 17 Aug 2018 13:47:17 +0000 (15:47 +0200)]
qos-test: usb-hcd-ohci test node

Convert tests/usb-hcd-ohci-test to a driver node; currently it runs
the PCI nop test only, therefore we're not placing it in tests/libqos.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: spapr-phb test node
Emanuele Giuseppe Esposito [Fri, 17 Aug 2018 11:35:12 +0000 (13:35 +0200)]
qos-test: spapr-phb test node

Convert tests/spapr-phb-test to a qgraph test node,
spapr-phb-test. This test adds another
spapr-pci-host-bridge device in the
ppc64/pseries machine

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: pcnet test node
Emanuele Giuseppe Esposito [Fri, 17 Aug 2018 11:22:12 +0000 (13:22 +0200)]
qos-test: pcnet test node

Convert tests/pcnet-test to a driver node; currently it runs
the PCI nop test only, therefore we're not placing it in tests/libqos.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: nvme test node
Emanuele Giuseppe Esposito [Fri, 17 Aug 2018 11:16:07 +0000 (13:16 +0200)]
qos-test: nvme test node

Convert tests/nvme-test to a driver node; the code to discover the PCI
device is replaced by generic qgraph code, therefore we're not placing it in tests/libqos.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: ne2k_pci test node
Emanuele Giuseppe Esposito [Fri, 17 Aug 2018 11:04:12 +0000 (13:04 +0200)]
qos-test: ne2k_pci test node

Convert tests/ne2000-test to a driver node; currently it runs
the PCI nop test only, therefore we're not placing it in tests/libqos.

The actual device consumed by the test is ne2k_pci.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: ipoctal232 test node
Emanuele Giuseppe Esposito [Fri, 17 Aug 2018 10:48:27 +0000 (12:48 +0200)]
qos-test: ipoctal232 test node

Convert tests/ipoctal232-test to a driver node; currently it runs
the PCI nop test only, therefore we're not placing it in tests/libqos.

This test creates a tpci200 node that produces an interface ipack
consumed by the ipoctal232 device.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: tpci200 test node
Emanuele Giuseppe Esposito [Fri, 17 Aug 2018 12:04:33 +0000 (14:04 +0200)]
qos-test: tpci200 test node

Convert tests/tpci200-test to a driver node; currently it runs
the PCI nop test only, but it also produces the ipack interface.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: ac97 test node
Emanuele Giuseppe Esposito [Fri, 17 Aug 2018 10:01:59 +0000 (12:01 +0200)]
qos-test: ac97 test node

Convert tests/ac97-test to a driver node; currently it runs
the PCI nop test only, therefore we're not placing it in tests/libqos.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests: move virtio entirely to qos-test
Paolo Bonzini [Fri, 5 Oct 2018 13:02:44 +0000 (15:02 +0200)]
tests: move virtio entirely to qos-test

The only remaining test that needs libqos-virtio-obj-y is drive_del-test,
which really only needs a function.  Move that function to the test
and remove libqos-virtio-obj-y.

Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: remove pre-qgraph QVirtioPCIDevice API
Paolo Bonzini [Thu, 15 Nov 2018 11:28:38 +0000 (12:28 +0100)]
tests/libqos: remove pre-qgraph QVirtioPCIDevice API

Remove the qvirtio_pci_device_find* and qvirtio_pci_device_free
APIs, now that they do not have any users.

Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: virtio-scsi test node
Emanuele Giuseppe Esposito [Tue, 31 Jul 2018 09:19:06 +0000 (11:19 +0200)]
qos-test: virtio-scsi test node

Convert tests/virtio-scsi-test in qgraph test node,
virtio-scsi-test. This test consumes a virtio-scsi interface
and checks that its function return the expected values.

Some functions are implemented only for virtio-scsi-pci, so they
don't consume virtio-scsi, but virtio-scsi-pci

Note that this test does not allocate any virtio-scsi structure,
it's all done by the qtest walking graph mechanism

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: virtio-scsi driver and interface nodes
Emanuele Giuseppe Esposito [Tue, 31 Jul 2018 09:17:38 +0000 (11:17 +0200)]
tests/libqos: virtio-scsi driver and interface nodes

Add qgraph nodes for virtio-scsi-pci and virtio-scsi-device.
Both nodes produce virtio-scsi, but virtio-scsi-pci receives
a pci-bus and uses virtio-pci QOSGraphObject and its functions,
while virtio-scsi-device receives a virtio and implements
its own functions

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: vhost-user test node
Paolo Bonzini [Thu, 15 Nov 2018 09:08:28 +0000 (10:08 +0100)]
qos-test: vhost-user test node

Convert tests/virtio-net-test in qgraph test node,
virtio-net-test. This test consumes a virtio-net interface
and checks that its function return the expected values.

Note that this test does not allocate any virtio-net structure,
it's all done by the qtest walking graph mechanism.  Nevertheless,
vhost-user-test is a bit more complex than the other tests, because
it requires more complicated setup of back-ends and thus almost each
test has a slightly different opts.before function.

Signed-off-by: Paolo Bonzini <[email protected]>
5 years agovhost-user-test: always use 256 MiB of guest memory
Paolo Bonzini [Thu, 15 Nov 2018 09:50:15 +0000 (10:50 +0100)]
vhost-user-test: always use 256 MiB of guest memory

Some tests are using a small amount of RAM for the guest (2 MiB) in order to
save host memory, others are using 512 MiB.

However, pSeries machines only support multiples of 256 MiB.  Using 256
MiB of memory does not use more host memory than now, even for the
migration test that starts two guests, and it allows running the test on
pSeries too.

This of course is not optimal, it would be nice to let the qgraph machine object
judge how much memory to provide.  This is left for future work, together
with a more generic framework that wraps the QEMU command line.

Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: support multiqueue for virtio-net
Paolo Bonzini [Mon, 22 Oct 2018 10:37:21 +0000 (12:37 +0200)]
tests/libqos: support multiqueue for virtio-net

Initialize the additional virtqueues if they are supported.
This is needed to switch vhost-user-test's multiqueue test
to the virtio-net qgraph.

Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: virtio-net test node
Emanuele Giuseppe Esposito [Mon, 30 Jul 2018 20:22:20 +0000 (22:22 +0200)]
qos-test: virtio-net test node

Convert tests/virtio-net-test in qgraph test node,
virtio-net-test. This test consumes a virtio-net interface
and checks that its function return the expected values.

Some functions are implemented only for virtio-net-pci, so they
don't consume virtio-net, but virtio-net-pci

Note that this test does not allocate any virtio-net structure,
it's all done by the qtest walking graph mechanism

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: virtio-net driver and interface nodes
Emanuele Giuseppe Esposito [Mon, 30 Jul 2018 20:21:42 +0000 (22:21 +0200)]
tests/libqos: virtio-net driver and interface nodes

Add qgraph nodes for virtio-net-pci and virtio-net-device.
Both nodes produce virtio-net, but virtio-net-pci receives
a pci-bus and overrides virtio-pci QOSGraphObject and its functions,
while virtio-net-device receives a virtio and implements
its own functions

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: virtio-blk test node
Paolo Bonzini [Thu, 29 Nov 2018 11:51:08 +0000 (12:51 +0100)]
qos-test: virtio-blk test node

Convert tests/virtio-blk-test in qgraph test node,
virtio-blk-test. This test consumes a virtio-blk interface
and checks that its function return the expected values.

Some functions are implemented only for virtio-blk-pci, so they
don't consume virtio-blk, but virtio-blk-pci

Note that this test does not allocate any virtio-blk structure,
it's all done by the qtest walking graph mechanism.  The allocator
is also provided by qgraph; remove malloc-generic.c and malloc-generic.h
which are not used anymore.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: virtio-blk driver and interface nodes
Emanuele Giuseppe Esposito [Thu, 26 Jul 2018 09:25:02 +0000 (11:25 +0200)]
tests/libqos: virtio-blk driver and interface nodes

Add qgraph nodes for virtio-blk-pci and virtio-blk-device.
Both nodes produce virtio-blk, but virtio-blk-pci receives
a pci-bus and uses virtio-pci QOSGraphObject and functions,
while virtio-blk-device receives a virtio and implements
its own functions

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: virtio-rng test node
Emanuele Giuseppe Esposito [Thu, 26 Jul 2018 09:24:50 +0000 (11:24 +0200)]
qos-test: virtio-rng test node

Convert tests/virtio-rng-test in qgraph test node,
virtio-rng-test. This test consumes a virtio-rng interface
and checks that its function return the expected values.

Some functions are implemented only for virtio-rng-pci, so they
don't consume virtio-rng, but virtio-rng-pci

Note that this test does not allocate any virtio-rng structure,
it's all done by the qtest walking graph mechanism

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: virtio-rng driver and interface nodes
Emanuele Giuseppe Esposito [Wed, 25 Jul 2018 21:55:38 +0000 (23:55 +0200)]
tests/libqos: virtio-rng driver and interface nodes

Add qgraph nodes for virtio-rng-pci and virtio-rng-device.
Both nodes produce virtio-rng, but virtio-rng-pci receives
a pci-bus and uses virtio-pci QOSGraphObject and functions,
while virtio-rng-device receives a virtio and implements
its own functions

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/qgraph: remove virtio-balloon-test
Emanuele Giuseppe Esposito [Wed, 25 Jul 2018 21:39:36 +0000 (23:39 +0200)]
tests/qgraph: remove virtio-balloon-test

The tests/virtio-balloon-test is covered by generic virtio tests,
so remove it.

Signed-off-by: Paolo Bonzini <[email protected]>
Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
5 years agotests/libqos: virtio-balloon driver and interface nodes
Emanuele Giuseppe Esposito [Wed, 25 Jul 2018 21:39:13 +0000 (23:39 +0200)]
tests/libqos: virtio-balloon driver and interface nodes

Add qgraph nodes for virtio-balloon-pci and virtio-balloon-device.
Both nodes produce virtio-balloon, but virtio-balloon-pci receives
a pci-bus and uses virtio-pci QOSGraphObject and functions,
while virtio-balloon-device receives a virtio and implements
its own functions

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: virtio-9p test node
Emanuele Giuseppe Esposito [Fri, 20 Jul 2018 13:42:11 +0000 (15:42 +0200)]
qos-test: virtio-9p test node

Convert tests/virtio-9p-test into a qgraph test node.
This test consumes a virtio-9p interface and checks that its functions
return the expected values.

Note that this test does not allocate any virtio-9p structure,
it's all done by the qtest walking graph mechanism

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: virtio-9p driver and interface nodes
Emanuele Giuseppe Esposito [Fri, 20 Jul 2018 13:41:46 +0000 (15:41 +0200)]
tests/libqos: virtio-9p driver and interface nodes

Add qgraph nodes for virtio-9p-pci and virtio-9p-device.
Both nodes produce virtio-9p, but virtio-9p-pci receives
a pci-bus and overrides virtio-pci QOSGraphObject and its functions,
while virtio-9p-device receives a virtio and implements
its own functions

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: virtio-console and virtio-serial test node
Emanuele Giuseppe Esposito [Wed, 18 Jul 2018 15:18:46 +0000 (17:18 +0200)]
qos-test: virtio-console and virtio-serial test node

Convert tests/virtio-console-test and tests/virtio-serial-test
in qgraph test node. This test consumes a virtio-serial interface
and checks that its function return the expected values.

Note that this test does not allocate any virtio-console or
virtio-serial structure, it's all done by the qtest walking graph mechanism

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: virtio-serial driver and interface nodes
Emanuele Giuseppe Esposito [Tue, 24 Jul 2018 17:40:14 +0000 (19:40 +0200)]
tests/libqos: virtio-serial driver and interface nodes

Add qgraph nodes for virtio-serial-pci and virtio-serial-device.
Both nodes produce virtio-serial, but virtio-serial-pci receives
a pci-bus and uses virtio-pci QOSGraphObject and functions,
while virtio-serial-device receives a virtio-bus and implements
its own functions

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/qgraph: add generic virtio testcases
Paolo Bonzini [Fri, 5 Oct 2018 17:00:19 +0000 (19:00 +0200)]
tests/qgraph: add generic virtio testcases

Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: arm/virt machine node
Emanuele Giuseppe Esposito [Wed, 18 Jul 2018 14:32:49 +0000 (16:32 +0200)]
tests/libqos: arm/virt machine node

Add arm/virt machine to the graph. This machine contains virtio-mmio, so
its constructor must take care of setting it properly when called.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: virtio-mmio driver and interface nodes
Emanuele Giuseppe Esposito [Thu, 19 Jul 2018 13:14:44 +0000 (15:14 +0200)]
tests/libqos: virtio-mmio driver and interface nodes

Add virtio-mmio node in qgraph framework.
virtio-mmio produces virtio-bus, the interface consumed by all virtio-*-device
nodes.

Being a memory-mapped device, it doesn't have to provide a constructor
to qgraph, since it's always "contained" inside some other nodes.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Reviewed-by: Laurent Vivier <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: remove global_qtest from virtio endianness checks
Paolo Bonzini [Sun, 7 Oct 2018 07:37:44 +0000 (09:37 +0200)]
tests/libqos: remove global_qtest from virtio endianness checks

This is needed to support migration tests with qgraph.

Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: virtio-pci driver and interface nodes
Emanuele Giuseppe Esposito [Wed, 18 Jul 2018 14:02:41 +0000 (16:02 +0200)]
tests/libqos: virtio-pci driver and interface nodes

Add QOSGraphObject to QVirtioPCIDevice structure, with a basic
constructor. virtio-pci is not present in qgraph, since it
will be used as starting point by its subclasses (virtio-*-pci)

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: e1000e test node
Emanuele Giuseppe Esposito [Fri, 20 Jul 2018 13:35:56 +0000 (15:35 +0200)]
qos-test: e1000e test node

Convert tests/e1000e-test in qgraph test node, e1000e-test. This test
consumes an e1000e interface and checks that its function return the
expected values.

Note that this test does not allocate any e1000e structure, it's all done by the
qtest walking graph mechanism

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: e1000e driver and interface nodes
Emanuele Giuseppe Esposito [Fri, 20 Jul 2018 13:35:36 +0000 (15:35 +0200)]
tests/libqos: e1000e driver and interface nodes

Add qgraph nodes for virtio-e1000e.
It consumes a pci-bus, and it's directly used by tests
(e1000e is pci based).

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: has_buggy_msi flag
Emanuele Giuseppe Esposito [Thu, 9 Aug 2018 10:44:56 +0000 (12:44 +0200)]
tests/libqos: has_buggy_msi flag

The Qgraph framework makes any test using
pci bus run the same function using pci-pci and
pci-spapr bus. However, some tests are not ready to use
the spapr bus, due to a MSI bug. Until it does not get
fixed, this flag allows them to skip the test

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/qgraph: ppc64/pseries machine node
Emanuele Giuseppe Esposito [Tue, 10 Jul 2018 13:38:43 +0000 (15:38 +0200)]
tests/qgraph: ppc64/pseries machine node

Add pseries  machine for the ppc64 QEMU binary. This machine contains a
spapr-pci-host-bridge driver, that contains itself a pci-bus-spapr
that produces the pci-bus interface.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: pci-spapr driver and interface nodes
Emanuele Giuseppe Esposito [Tue, 10 Jul 2018 14:09:26 +0000 (16:09 +0200)]
tests/libqos: pci-spapr driver and interface nodes

Add pci-bus-spapr node, that produces pci-bus. Move QPCIBusSPAPR struct
declaration in its header (since it will be needed by other drivers)
and introduce a setter method for drivers that do not need to allocate
but have to initialize QPCIBusSPAPR.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/qgraph: add generic PCI testcases
Paolo Bonzini [Fri, 5 Oct 2018 17:00:19 +0000 (19:00 +0200)]
tests/qgraph: add generic PCI testcases

Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoqos-test: sdhci test node
Emanuele Giuseppe Esposito [Wed, 11 Jul 2018 12:40:25 +0000 (14:40 +0200)]
qos-test: sdhci test node

Convert tests/sdhci-test in first qgraph test node, sdhci-test. This test
consumes an sdhci interface and checks that its function return the
expected values.

Note that this test does not allocate any sdhci structure, it's all done by the
qtest walking graph mechanism

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: aarch64/xlnx-zcu102 machine node
Emanuele Giuseppe Esposito [Mon, 13 Aug 2018 14:31:53 +0000 (16:31 +0200)]
tests/libqos: aarch64/xlnx-zcu102 machine node

Add xlnx-zcu102 machine to the graph. This machine contains generic-sdhci, so
its constructor must take care of setting it properly when called.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: arm/xilinx-zynq-a9 machine node
Emanuele Giuseppe Esposito [Mon, 13 Aug 2018 14:25:43 +0000 (16:25 +0200)]
tests/libqos: arm/xilinx-zynq-a9 machine node

Add xilinx-zynq-a9 machine to the graph. This machine contains generic-sdhci, so
its constructor must take care of setting it properly when called.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: arm/sabrelite machine node
Emanuele Giuseppe Esposito [Mon, 13 Aug 2018 14:20:07 +0000 (16:20 +0200)]
tests/libqos: arm/sabrelite machine node

Add arm/sabrelite machine to the graph. This machine contains generic-sdhci, so
its constructor must take care of setting it properly when called.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: arm/smdkc210 machine node
Emanuele Giuseppe Esposito [Mon, 13 Aug 2018 14:13:54 +0000 (16:13 +0200)]
tests/libqos: arm/smdkc210 machine node

Add arm/smdkc210 machine machine to the graph. This machine contains generic-sdhci, so
its constructor must take care of setting it properly when called.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: arm/raspi2 machine node
Emanuele Giuseppe Esposito [Tue, 3 Jul 2018 14:52:20 +0000 (16:52 +0200)]
tests/libqos: arm/raspi2 machine node

Add arm/raspi2 machine to the graph. This machine contains a generic-sdhci, so
its constructor must take care of setting it properly when called.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: sdhci driver and interface nodes
Emanuele Giuseppe Esposito [Tue, 3 Jul 2018 14:51:58 +0000 (16:51 +0200)]
tests/libqos: sdhci driver and interface nodes

Add qgraph nodes for sdhci-pci and generic-sdhci (memory mapped) drivers.
Both drivers implement (produce) the same interface sdhci, that provides the
readw - readq - writeq functions.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: x86_64/pc machine node
Emanuele Giuseppe Esposito [Tue, 3 Jul 2018 14:53:35 +0000 (16:53 +0200)]
tests/libqos: x86_64/pc machine node

Add pc machine for the x86_64 QEMU binary. This machine contains an i440FX-pcihost
driver, that contains itself a pci-bus-pc that produces the pci-bus interface.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: pci-pc driver and interface nodes
Emanuele Giuseppe Esposito [Tue, 3 Jul 2018 14:53:10 +0000 (16:53 +0200)]
tests/libqos: pci-pc driver and interface nodes

Add pci-bus-pc node, move QPCIBusPC struct declaration in its header
(since it will be needed by other drivers) and introduce a setter method
for drivers that do not need to allocate but have to initialize QPCIBusPC.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests: qgraph API for the qtest driver framework
Emanuele Giuseppe Esposito [Wed, 13 Jun 2018 15:07:21 +0000 (17:07 +0200)]
tests: qgraph API for the qtest driver framework

Add qgraph API that allows to add/remove nodes and edges from the graph,
implementation of Depth First Search to discover the paths and basic unit
test to check correctness of the API.
Included also a main executable that takes care of starting the framework,
create the nodes, set the available drivers/machines, discover the path and
run tests.

graph.h provides the public API to manage the graph nodes/edges
graph_extra.h provides a more private API used successively by the gtest integration part
qos-test.c provides the main executable

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
[Paolo's changes compared to the Google Summer of Code submission:
 * added subprocess to test options
 * refactored object creation to support live migration tests
 * removed driver .before callback (unused)
 * removed test .after callbacks (replaced by GTest destruction queue)]
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: embed allocators instead of malloc-ing them separately
Paolo Bonzini [Thu, 29 Nov 2018 11:37:04 +0000 (12:37 +0100)]
tests/libqos: embed allocators instead of malloc-ing them separately

qgraph will embed these objects instead of allocating them in a separate
object.  Expose a new API "generic_alloc_init" and "generic_alloc_destroy"
for that, and rename the existing API with s/init/new/ and s/uninit/free/.

Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: rename qpci_init_pc and qpci_init_spapr functions
Emanuele Giuseppe Esposito [Thu, 19 Jul 2018 11:50:27 +0000 (13:50 +0200)]
tests/libqos: rename qpci_init_pc and qpci_init_spapr functions

Rename qpci_init_pc in qpci_pc_new and qpci_init_spapr in qpci_spapr_new,
since these function actually allocate a new pci struct and initialize it
(compare to object_new and object_initialize).
Changed QOSOps field name from qpci_init to qpci_new.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Reviewed-by: Laurent Vivier <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agotests/libqos: introduce virtio_start_device
Emanuele Giuseppe Esposito [Wed, 25 Jul 2018 14:25:43 +0000 (16:25 +0200)]
tests/libqos: introduce virtio_start_device

This function is intended to group all the qvirtio_* functions that
start the qvirtio devices.
Applied in all tests using this combination of functions.

Signed-off-by: Emanuele Giuseppe Esposito <[email protected]>
Reviewed-by: Laurent Vivier <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agochardev-socket: do not blindly reset handlers when switching GMainContext
Paolo Bonzini [Wed, 20 Feb 2019 14:33:27 +0000 (15:33 +0100)]
chardev-socket: do not blindly reset handlers when switching GMainContext

If the socket is connecting or connected, tcp_chr_update_read_handler will
be called but it should not set the NetListener's callbacks again.
Otherwise, tcp_chr_accept is invoked while the socket is in connected
state and you get an assertion failure.

Reviewed-by: Daniel P. Berrangé <[email protected]>
Reviewed-by: Marc-André Lureau <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/kraxel/tags/usb-20190307-pull-request' into...
Peter Maydell [Thu, 7 Mar 2019 14:06:42 +0000 (14:06 +0000)]
Merge remote-tracking branch 'remotes/kraxel/tags/usb-20190307-pull-request' into staging

usb: mtp fixes, guest-reset switch for usb-host.

# gpg: Signature made Thu 07 Mar 2019 09:53:55 GMT
# gpg:                using RSA key 4CB6D8EED3E87138
# gpg: Good signature from "Gerd Hoffmann (work) <[email protected]>" [full]
# gpg:                 aka "Gerd Hoffmann <[email protected]>" [full]
# gpg:                 aka "Gerd Hoffmann (private) <[email protected]>" [full]
# Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138

* remotes/kraxel/tags/usb-20190307-pull-request:
  Introduce new "no_guest_reset" parameter for usb-host device
  usb-mtp: prevent null dereference while deleting objects
  usb-mtp: fix some usb_mtp_write_data return paths
  usb-mtp: return incomplete transfer on a lstat failure

Signed-off-by: Peter Maydell <[email protected]>
5 years agoIntroduce new "no_guest_reset" parameter for usb-host device
Alexander Kappner [Mon, 28 Jan 2019 14:00:27 +0000 (15:00 +0100)]
Introduce new "no_guest_reset" parameter for usb-host device

With certain USB devices passed through via usb-host, a guest attempting to
reset a usb-host device can trigger a reset loop that renders the USB device
unusable. In my use case, the device was an iPhone XR that was passed through to
a Mac OS X Mojave guest. Upon connecting the device, the following happens:

1) Guest recognizes new device, sends reset to emulated USB host
2) QEMU's USB host sends reset to host kernel
3) Host kernel resets device
4) After reset, host kernel determines that some part of the device descriptor
has changed ("device firmware changed" in dmesg), so host kernel decides to
re-enumerate the device.
5) Re-enumeration causes QEMU to disconnect and reconnect the device in the
guest.
6) goto 1)

Here's from the host kernel (note the "device firmware changed" lines")

[3677704.473050] usb 1-1.3: new high-speed USB device number 53 using ehci-pci
[3677704.555594] usb 1-1.3: New USB device found, idVendor=05ac, idProduct=12a8, bcdDevice=11.08
[3677704.555599] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[3677704.555602] usb 1-1.3: Product: iPhone
[3677704.555605] usb 1-1.3: Manufacturer: Apple Inc.
[3677704.555607] usb 1-1.3: SerialNumber: [[removed]]
[3677709.401040] usb 1-1.3: reset high-speed USB device number 53 using ehci-pci
[3677709.479486] usb 1-1.3: device firmware changed
[3677709.479842] usb 1-1.3: USB disconnect, device number 53
[3677709.546039] usb 1-1.3: new high-speed USB device number 54 using ehci-pci
[3677709.627471] usb 1-1.3: New USB device found, idVendor=05ac, idProduct=12a8, bcdDevice=11.08
[3677709.627476] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[3677709.627479] usb 1-1.3: Product: iPhone
[3677709.627481] usb 1-1.3: Manufacturer: Apple Inc.
[3677709.627483] usb 1-1.3: SerialNumber: [[removed]]
[3677762.320044] usb 1-1.3: reset high-speed USB device number 54 using ehci-pci
[3677762.615630] usb 1-1.3: USB disconnect, device number 54
[3677762.787043] usb 1-1.3: new high-speed USB device number 55 using ehci-pci
[3677762.869016] usb 1-1.3: New USB device found, idVendor=05ac, idProduct=12a8, bcdDevice=11.08
[3677762.869024] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[3677762.869028] usb 1-1.3: Product: iPhone
[3677762.869032] usb 1-1.3: Manufacturer: Apple Inc.
[3677762.869035] usb 1-1.3: SerialNumber: [[removed]]
[3677815.662036] usb 1-1.3: reset high-speed USB device number 55 using ehci-pci

Here's from QEMU:

libusb: error [_get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/005/022: No such file or directory
libusb: error [udev_hotplug_event] ignoring udev action bind
libusb: error [udev_hotplug_event] ignoring udev action bind
libusb: error [_open_sysfs_attr] open /sys/bus/usb/devices/5-1/bConfigurationValue failed ret=-1 errno=2
libusb: error [_get_usbfs_fd] File doesn't exist, wait 10 ms and try again

libusb: error [_get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/005/024: No such file or directory
libusb: error [udev_hotplug_event] ignoring udev action bind
libusb: error [udev_hotplug_event] ignoring udev action bind
libusb: error [_open_sysfs_attr] open /sys/bus/usb/devices/5-1/bConfigurationValue failed ret=-1 errno=2
libusb: error [_get_usbfs_fd] File doesn't exist, wait 10 ms and try again

libusb: error [_get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/005/026: No such file or directory

The result of this is that the device remains permanently unusable in the guest.
The same problem has been previously reported for an iPad:
https://stackoverflow.com/questions/52617634/how-do-i-get-qemu-usb-passthrough-to-work-for-ipad-iphone

This problem can be elegantly solved by interrupting step 2) above. Instead of
passing through the reset, QEMU simply ignores it. To allow this to be
configured on a per-device level,  a new parameter "no_guest_reset" is
introduced for the usb-host device. I can confirm that the configuration
described above (iPhone XS + Mojave guest) works flawlessly with
no_guest_reset=True specified.

Working command line for my scenario:
device_add usb-host,vendorid=0x05ac,productid=0x12a8,no_guest_reset=True,id=iphone

Best regards
Alexander

Signed-off-by: Alexander Kappner <[email protected]>
Signed-off-by: Gerd Hoffmann <[email protected]>
Message-id: 20190128140027[email protected]

[ kraxel: rename parameter to "guest-reset" ]

Signed-off-by: Gerd Hoffmann <[email protected]>
5 years agousb-mtp: prevent null dereference while deleting objects
Bandan Das [Wed, 6 Mar 2019 21:04:09 +0000 (16:04 -0500)]
usb-mtp: prevent null dereference while deleting objects

Spotted by Coverity: CID 1399144

Signed-off-by: Bandan Das <[email protected]>
Message-id: 20190306210409[email protected]
Signed-off-by: Gerd Hoffmann <[email protected]>
5 years agousb-mtp: fix some usb_mtp_write_data return paths
Bandan Das [Wed, 6 Mar 2019 21:04:08 +0000 (16:04 -0500)]
usb-mtp: fix some usb_mtp_write_data return paths

During a write, free up the "path" before getting more data.
Also, while we at it, remove the confusing usage of d->fd for
storing mkdir status

Spotted by Coverity: CID 1398642

Signed-off-by: Bandan Das <[email protected]>
Message-id: 20190306210409[email protected]
Signed-off-by: Gerd Hoffmann <[email protected]>
5 years agousb-mtp: return incomplete transfer on a lstat failure
Bandan Das [Wed, 6 Mar 2019 21:04:07 +0000 (16:04 -0500)]
usb-mtp: return incomplete transfer on a lstat failure

MTP writes objects in small chunks and at the end gets the
real file size to update the object metadata. If this fails for
any reason, return an INCOMPLETE_TRANSFER to the initiator

Spotted by Coverity: CID 1398651

Signed-off-by: Bandan Das <[email protected]>
Message-id: 20190306210409[email protected]
Signed-off-by: Gerd Hoffmann <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/ehabkost/tags/machine-next-pull-request' into...
Peter Maydell [Wed, 6 Mar 2019 18:52:19 +0000 (18:52 +0000)]
Merge remote-tracking branch 'remotes/ehabkost/tags/machine-next-pull-request' into staging

Machine queue, 2019-03-06

* qdev: Hotplug handler chaining (David Hildenbrand)
* qdev: fix qbus_is_full() (Tony Krowiak)
* hostmem: fix crash when querying empty host-nodes property via
  QMP (Igor Mammedov)

# gpg: Signature made Wed 06 Mar 2019 18:39:29 GMT
# gpg:                using RSA key 2807936F984DC5A6
# 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/machine-next-pull-request:
  qdev: Provide qdev_get_bus_hotplug_handler()
  qdev: Let machine hotplug handler to override bus hotplug handler
  qdev: Let the hotplug_handler_unplug() caller delete the device
  hostmem: fix crash when querying empty host-nodes property via QMP
  qdev/core: fix qbus_is_full()

Signed-off-by: Peter Maydell <[email protected]>
5 years agoqdev: Provide qdev_get_bus_hotplug_handler()
David Hildenbrand [Thu, 28 Feb 2019 12:28:49 +0000 (13:28 +0100)]
qdev: Provide qdev_get_bus_hotplug_handler()

Let's use a wrapper instead of looking it up manually. This function can
than be reused when we explicitly want to have the bus hotplug handler
(e.g. when the bus hotplug handler was overwritten by the machine
hotplug handler).

Reviewed-by: Igor Mammedov <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>
Message-Id: <20190228122849[email protected]>
Signed-off-by: Eduardo Habkost <[email protected]>
5 years agoqdev: Let machine hotplug handler to override bus hotplug handler
Igor Mammedov [Thu, 28 Feb 2019 12:28:48 +0000 (13:28 +0100)]
qdev: Let machine hotplug handler to override bus hotplug handler

it will allow to return another hotplug handler than the default
one for a specific bus based device type. Which is needed to handle
non trivial plug/unplug sequences that need the access to resources
configured outside of bus where device is attached.

That will allow for returned hotplug handler to orchestrate wiring
in arbitrary order, by chaining other hotplug handlers when
it's needed.

PS:
It could be used for hybrid virtio-mem and virtio-pmem devices
where it will return machine as hotplug handler which will do
necessary wiring at machine level and then pass control down
the chain to bus specific hotplug handler.

Example of top level hotplug handler override and custom plug sequence:

  some_machine_get_hotplug_handler(machine){
      if (object_dynamic_cast(OBJECT(dev), TYPE_SOME_BUS_DEVICE)) {
          return HOTPLUG_HANDLER(machine);
      }
      return NULL;
  }

  some_machine_device_plug(hotplug_dev, dev) {
      if (object_dynamic_cast(OBJECT(dev), TYPE_SOME_BUS_DEVICE)) {
          /* do machine specific initialization */
          some_machine_init_special_device(dev)

          /* pass control to bus specific handler */
          hotplug_handler_plug(dev->parent_bus->hotplug_handler, dev)
      }
  }

Reviewed-by: David Gibson <[email protected]>
Signed-off-by: Igor Mammedov <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>
Message-Id: <20190228122849[email protected]>
Signed-off-by: Eduardo Habkost <[email protected]>
5 years agoqdev: Let the hotplug_handler_unplug() caller delete the device
David Hildenbrand [Thu, 28 Feb 2019 12:28:47 +0000 (13:28 +0100)]
qdev: Let the hotplug_handler_unplug() caller delete the device

When unplugging a device, at one point the device will be destroyed
via object_unparent(). This will, one the one hand, unrealize the
removed device hierarchy, and on the other hand, destroy/free the
device hierarchy.

When chaining hotplug handlers, we want to overwrite a bus hotplug
handler by the machine hotplug handler, to be able to perform
some part of the plug/unplug and to forward the calls to the bus hotplug
handler.

For now, the bus hotplug handler would trigger an object_unparent(), not
allowing us to perform some unplug action on a device after we forwarded
the call to the bus hotplug handler. The device would be gone at that
point.

machine_unplug_handler(dev)
    /* eventually do unplug stuff */
    bus_unplug_handler(dev)
    /* dev is gone, we can't do more unplug stuff */

So move the object_unparent() to the original caller of the unplug. For
now, keep the unrealize() at the original places of the
object_unparent(). For implicitly chained hotplug handlers (e.g. pc
code calling acpi hotplug handlers), the object_unparent() has to be
done by the outermost caller. So when calling hotplug_handler_unplug()
from inside an unplug handler, nothing is to be done.

hotplug_handler_unplug(dev) -> calls machine_unplug_handler()
    machine_unplug_handler(dev) {
        /* eventually do unplug stuff */
        bus_unplug_handler(dev) -> calls unrealize(dev)
        /* we can do more unplug stuff but device already unrealized */
    }
object_unparent(dev)

In the long run, every unplug action should be factored out of the
unrealize() function into the unplug handler (especially for PCI). Then
we can get rid of the additonal unrealize() calls and object_unparent()
will properly unrealize the device hierarchy after the device has been
unplugged.

hotplug_handler_unplug(dev) -> calls machine_unplug_handler()
    machine_unplug_handler(dev) {
        /* eventually do unplug stuff */
        bus_unplug_handler(dev) -> only unplugs, does not unrealize
        /* we can do more unplug stuff */
    }
object_unparent(dev) -> will unrealize

The original approach was suggested by Igor Mammedov for the PCI
part, but I extended it to all hotplug handlers. I consider this one
step into the right direction.

To summarize:
- object_unparent() on synchronous unplugs is done by common code
-- "Caller of hotplug_handler_unplug"
- object_unparent() on asynchronous unplugs ("unplug requests") has to
  be done manually
-- "Caller of hotplug_handler_unplug"

Reviewed-by: Igor Mammedov <[email protected]>
Acked-by: Cornelia Huck <[email protected]>
Signed-off-by: David Hildenbrand <[email protected]>
Message-Id: <20190228122849[email protected]>
Reviewed-by: Greg Kurz <[email protected]>
Signed-off-by: Eduardo Habkost <[email protected]>
5 years agohostmem: fix crash when querying empty host-nodes property via QMP
Igor Mammedov [Thu, 14 Feb 2019 10:57:33 +0000 (05:57 -0500)]
hostmem: fix crash when querying empty host-nodes property via QMP

QEMU will crashes with
 qapi/qobject-output-visitor.c:210: qobject_output_complete: Assertion `qov->root && ((&qov->stack)->slh_first == ((void *)0))' failed
when trying to get value of not set hostmem's "host-nodes"
property, HostMemoryBackend::host_nodes bitmap doesn't have
any bits set in it, which leads to find_first_bit() returning
MAX_NODES and consequently to an early return from
host_memory_backend_get_host_nodes() without calling visitor.

Fix it by calling visitor even if "host-nodes" property wasn't
set before exiting from property getter to return valid empty
list.

Signed-off-by: Igor Mammedov <[email protected]>
Message-Id: <20190214105733[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Stefano Garzarella <[email protected]>
Signed-off-by: Eduardo Habkost <[email protected]>
5 years agoqdev/core: fix qbus_is_full()
Tony Krowiak [Mon, 17 Dec 2018 15:57:30 +0000 (10:57 -0500)]
qdev/core: fix qbus_is_full()

The qbus_is_full(BusState *bus) function (qdev_monitor.c) compares the max_index
value of the BusState structure with the max_dev value of the BusClass structure
to determine whether the maximum number of children has been reached for the
bus. The problem is, the max_index field of the BusState structure does not
necessarily reflect the number of devices that have been plugged into
the bus.

Whenever a child device is plugged into the bus, the bus's max_index value is
assigned to the child device and then incremented. If the child is subsequently
unplugged, the value of the max_index does not change and no longer reflects the
number of children.

When the bus's max_index value reaches the maximum number of devices
allowed for the bus (i.e., the max_dev field in the BusClass structure),
attempts to plug another device will be rejected claiming that the bus is
full -- even if the bus is actually empty.

To resolve the problem, a new 'num_children' field is being added to the
BusState structure to keep track of the number of children plugged into the
bus. It will be incremented when a child is plugged, and decremented when a
child is unplugged.

Signed-off-by: Tony Krowiak <[email protected]>
Reviewed-by: Pierre Morel<[email protected]>
Reviewed-by: Halil Pasic <[email protected]>
Message-Id: <1545062250[email protected]>
Reviewed-by: Igor Mammedov <[email protected]>
Signed-off-by: Eduardo Habkost <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/dgilbert/tags/pull-migration-20190306a' into...
Peter Maydell [Wed, 6 Mar 2019 14:50:33 +0000 (14:50 +0000)]
Merge remote-tracking branch 'remotes/dgilbert/tags/pull-migration-20190306a' into staging

Migation pull 2019-03-06

(This replaces the pull sent yesterday)

   a) 4 small fixes including the cancel problem
     that caused the ahci migration test to fail
     intermittently
   b) Yury's ignore-shared feature
   c) Juan's extra tests
   d) Wei Wang's free page hinting
   e) Some Colo fixes from Zhang Chen

Diff from yesterdays pull:
  1) A missing fix of mine (cleanup during exit)
  2) Changes from Eric/Markus on 'Create socket-address parameter'

# gpg: Signature made Wed 06 Mar 2019 11:39:53 GMT
# gpg:                using RSA key 0516331EBC5BFDE7
# gpg: Good signature from "Dr. David Alan Gilbert (RH2) <[email protected]>" [full]
# Primary key fingerprint: 45F5 C71B 4A0C B7FB 977A  9FA9 0516 331E BC5B FDE7

* remotes/dgilbert/tags/pull-migration-20190306a: (22 commits)
  qapi/migration.json: Remove a variable that doesn't exist in example
  Migration/colo.c: Make COLO node running after failover
  Migration/colo.c: Fix double close bug when occur COLO failover
  virtio-balloon: VIRTIO_BALLOON_F_FREE_PAGE_HINT
  migration/ram.c: add the free page optimization enable flag
  migration/ram.c: add a notifier chain for precopy
  migration: API to clear bits of guest free pages from the dirty bitmap
  migration: use bitmap_mutex in migration_bitmap_clear_dirty
  bitmap: bitmap_count_one_with_offset
  bitmap: fix bitmap_count_one
  tests: Add basic migration precopy tcp test
  migration: Create socket-address parameter
  tests: Add migration xbzrle test
  migration: Add capabilities validation
  tests/migration-test: Add a test for ignore-shared capability
  migration: Add an ability to ignore shared RAM blocks
  migration: Introduce ignore-shared capability
  exec: Change RAMBlockIterFunc definition
  migration/rdma: clang compilation fix
  migration: Cleanup during exit
  ...

Signed-off-by: Peter Maydell <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/vivier2/tags/trivial-branch-pull-request' into...
Peter Maydell [Wed, 6 Mar 2019 11:58:10 +0000 (11:58 +0000)]
Merge remote-tracking branch 'remotes/vivier2/tags/trivial-branch-pull-request' into staging

trivial patches pull request (20190206)

- acpi: remove unused functions/variables
- tests: remove useless architecture checks
- some typo fixes and documentation update
- flash_cfi02: fix memory leak

# gpg: Signature made Wed 06 Mar 2019 11:05:12 GMT
# gpg:                using RSA key F30C38BD3F2FBE3C
# gpg: Good signature from "Laurent Vivier <[email protected]>" [full]
# gpg:                 aka "Laurent Vivier <[email protected]>" [full]
# gpg:                 aka "Laurent Vivier (Red Hat) <[email protected]>" [full]
# Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F  5173 F30C 38BD 3F2F BE3C

* remotes/vivier2/tags/trivial-branch-pull-request:
  thunk: fix of malloc to g_new
  hostmem-file: simplify ifdef-s in file_backend_memory_alloc()
  build: Correct explanation of unnest-vars example
  bswap: Fix accessors syntax in comment
  doc: fix typos for documents in tree
  block/pflash_cfi02: Fix memory leak and potential use-after-free
  hw/acpi: remove unnecessary variable acpi_table_builtin
  hw/acpi: remove unused function acpi_table_add_builtin()
  hw/i386/pc.c: remove unused function pc_acpi_init()
  tests: Remove (mostly) useless architecture checks

Signed-off-by: Peter Maydell <[email protected]>
5 years agoqapi/migration.json: Remove a variable that doesn't exist in example
Zhang Chen [Sun, 3 Mar 2019 14:50:19 +0000 (22:50 +0800)]
qapi/migration.json: Remove a variable that doesn't exist in example

Remove the "active" variable in example for query-colo-status.
It is a doc bug from commit f56c0065

Signed-off-by: Zhang Chen <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Message-Id: <20190303145021[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agoMigration/colo.c: Make COLO node running after failover
Zhang Chen [Sun, 3 Mar 2019 14:50:17 +0000 (22:50 +0800)]
Migration/colo.c: Make COLO node running after failover

Delay to close COLO for auto start VM after failover.

Signed-off-by: Zhang Chen <[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20190303145021[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agoMigration/colo.c: Fix double close bug when occur COLO failover
Zhang Chen [Sun, 3 Mar 2019 14:50:15 +0000 (22:50 +0800)]
Migration/colo.c: Fix double close bug when occur COLO failover

In migration_incoming_state_destroy(void) will check the mis->to_src_file
to double close the mis->to_src_file when occur COLO failover.

Signed-off-by: Zhang Chen <[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20190303145021[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agovirtio-balloon: VIRTIO_BALLOON_F_FREE_PAGE_HINT
Wei Wang [Tue, 11 Dec 2018 08:24:53 +0000 (16:24 +0800)]
virtio-balloon: VIRTIO_BALLOON_F_FREE_PAGE_HINT

The new feature enables the virtio-balloon device to receive hints of
guest free pages from the free page vq.

A notifier is registered to the migration precopy notifier chain. The
notifier calls free_page_start after the migration thread syncs the dirty
bitmap, so that the free page optimization starts to clear bits of free
pages from the bitmap. It calls the free_page_stop before the migration
thread syncs the bitmap, which is the end of the current round of ram
save. The free_page_stop is also called to stop the optimization in the
case when there is an error occurred in the process of ram saving.

Note: balloon will report pages which were free at the time of this call.
As the reporting happens asynchronously, dirty bit logging must be
enabled before this free_page_start call is made. Guest reporting must be
disabled before the migration dirty bitmap is synchronized.

Signed-off-by: Wei Wang <[email protected]>
CC: Michael S. Tsirkin <[email protected]>
CC: Dr. David Alan Gilbert <[email protected]>
CC: Juan Quintela <[email protected]>
CC: Peter Xu <[email protected]>
Message-Id: <1544516693[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
  dgilbert: Dropped kernel header update, fixed up CMD_ID_* name change

5 years agomigration/ram.c: add the free page optimization enable flag
Wei Wang [Tue, 11 Dec 2018 08:24:52 +0000 (16:24 +0800)]
migration/ram.c: add the free page optimization enable flag

This patch adds the free page optimization enable flag, and a function
to set this flag. When the free page optimization is enabled, not all
the pages are needed to be sent in the bulk stage.

Why using a new flag, instead of directly disabling ram_bulk_stage when
the optimization is running?
Thanks for Peter Xu's reminder that disabling ram_bulk_stage will affect
the use of compression. Please see save_page_use_compression. When
xbzrle and compression are used, if free page optimizaion causes the
ram_bulk_stage to be disabled, save_page_use_compression will return
false, which disables the use of compression. That is, if free page
optimization avoids the sending of half of the guest pages, the other
half of pages loses the benefits of compression in the meantime. Using a
new flag to let migration_bitmap_find_dirty skip the free pages in the
bulk stage will avoid the above issue.

Signed-off-by: Wei Wang <[email protected]>
CC: Dr. David Alan Gilbert <[email protected]>
CC: Juan Quintela <[email protected]>
CC: Michael S. Tsirkin <[email protected]>
CC: Peter Xu <[email protected]>
Message-Id: <1544516693[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration/ram.c: add a notifier chain for precopy
Wei Wang [Tue, 11 Dec 2018 08:24:51 +0000 (16:24 +0800)]
migration/ram.c: add a notifier chain for precopy

This patch adds a notifier chain for the memory precopy. This enables various
precopy optimizations to be invoked at specific places.

Signed-off-by: Wei Wang <[email protected]>
CC: Dr. David Alan Gilbert <[email protected]>
CC: Juan Quintela <[email protected]>
CC: Michael S. Tsirkin <[email protected]>
CC: Peter Xu <[email protected]>
Reviewed-by: Peter Xu <[email protected]>
Message-Id: <1544516693[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration: API to clear bits of guest free pages from the dirty bitmap
Wei Wang [Tue, 11 Dec 2018 08:24:50 +0000 (16:24 +0800)]
migration: API to clear bits of guest free pages from the dirty bitmap

This patch adds an API to clear bits corresponding to guest free pages
from the dirty bitmap. Spilt the free page block if it crosses the QEMU
RAMBlock boundary.

Signed-off-by: Wei Wang <[email protected]>
CC: Dr. David Alan Gilbert <[email protected]>
CC: Juan Quintela <[email protected]>
CC: Michael S. Tsirkin <[email protected]>
CC: Peter Xu <[email protected]>
Reviewed-by: Peter Xu <[email protected]>
Message-Id: <1544516693[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration: use bitmap_mutex in migration_bitmap_clear_dirty
Wei Wang [Tue, 11 Dec 2018 08:24:49 +0000 (16:24 +0800)]
migration: use bitmap_mutex in migration_bitmap_clear_dirty

The bitmap mutex is used to synchronize threads to update the dirty
bitmap and the migration_dirty_pages counter. For example, the free
page optimization clears bits of free pages from the bitmap in an
iothread context. This patch makes migration_bitmap_clear_dirty update
the bitmap and counter under the mutex.

Signed-off-by: Wei Wang <[email protected]>
CC: Dr. David Alan Gilbert <[email protected]>
CC: Juan Quintela <[email protected]>
CC: Michael S. Tsirkin <[email protected]>
CC: Peter Xu <[email protected]>
Reviewed-by: Peter Xu <[email protected]>
Message-Id: <1544516693[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agobitmap: bitmap_count_one_with_offset
Wei Wang [Tue, 11 Dec 2018 08:24:48 +0000 (16:24 +0800)]
bitmap: bitmap_count_one_with_offset

Count the number of 1s in a bitmap starting from an offset.

Signed-off-by: Wei Wang <[email protected]>
CC: Dr. David Alan Gilbert <[email protected]>
CC: Juan Quintela <[email protected]>
CC: Michael S. Tsirkin <[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <1544516693[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agobitmap: fix bitmap_count_one
Wei Wang [Tue, 11 Dec 2018 08:24:47 +0000 (16:24 +0800)]
bitmap: fix bitmap_count_one

BITMAP_LAST_WORD_MASK(nbits) returns 0xffffffff when "nbits=0", which
makes bitmap_count_one fail to handle the "nbits=0" case. It appears to be
preferred to remain BITMAP_LAST_WORD_MASK identical to the kernel
implementation that it is ported from.

So this patch fixes bitmap_count_one to handle the nbits=0 case.

Inital Discussion Link:
https://www.mail-archive.com/[email protected]/msg554316.html
Signed-off-by: Wei Wang <[email protected]>
CC: Juan Quintela <[email protected]>
CC: Dr. David Alan Gilbert <[email protected]>
CC: Peter Xu <[email protected]>
Message-Id: <1544516693[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agotests: Add basic migration precopy tcp test
Juan Quintela [Wed, 27 Feb 2019 10:51:28 +0000 (11:51 +0100)]
tests: Add basic migration precopy tcp test

Not sharing code from precopy/unix because we have to read back the
tcp parameter.

Signed-off-by: Juan Quintela <[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Reviewed-by: Peter Xu <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Message-Id: <20190227105128[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
  dgilbert:  Fixup for clash with Yury's

5 years agomigration: Create socket-address parameter
Juan Quintela [Wed, 27 Feb 2019 10:51:27 +0000 (11:51 +0100)]
migration: Create socket-address parameter

It will be used to store the uri parameters. We want this only for
tcp, so we don't set it for other uris.  We need it to know what port
is migration running.

Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Juan Quintela <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
  dgilbert: Removed DummyStruct as suggested by Eric & Markus

--

5 years agotests: Add migration xbzrle test
Juan Quintela [Wed, 27 Feb 2019 10:51:26 +0000 (11:51 +0100)]
tests: Add migration xbzrle test

Reviewed-by: Peter Xu <[email protected]>
Signed-off-by: Juan Quintela <[email protected]>
Message-Id: <20190227105128[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
  dgilbert: Fixup for class with Yury's series

5 years agomigration: Add capabilities validation
Yury Kotov [Fri, 15 Feb 2019 17:45:48 +0000 (20:45 +0300)]
migration: Add capabilities validation

Currently we don't check which capabilities set in the source QEMU.
We just expect that the target QEMU has the same enabled capabilities.

Add explicit validation for capabilities to make sure that the target VM
has them too. This is enabled for only new capabilities to keep compatibily.

Signed-off-by: Yury Kotov <[email protected]>
Message-Id: <20190215174548[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
  dgilbert: Manual merge

5 years agotests/migration-test: Add a test for ignore-shared capability
Yury Kotov [Fri, 15 Feb 2019 17:45:47 +0000 (20:45 +0300)]
tests/migration-test: Add a test for ignore-shared capability

Signed-off-by: Yury Kotov <[email protected]>
Message-Id: <20190215174548[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
  dgilbert: Disabled the test for now, not happy on aarch64

5 years agomigration: Add an ability to ignore shared RAM blocks
Yury Kotov [Fri, 15 Feb 2019 17:45:46 +0000 (20:45 +0300)]
migration: Add an ability to ignore shared RAM blocks

If ignore-shared capability is set then skip shared RAMBlocks during the
RAM migration.
Also, move qemu_ram_foreach_migratable_block (and rename) to the
migration code, because it requires access to the migration capabilities.

Signed-off-by: Yury Kotov <[email protected]>
Message-Id: <20190215174548[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration: Introduce ignore-shared capability
Yury Kotov [Fri, 15 Feb 2019 17:45:45 +0000 (20:45 +0300)]
migration: Introduce ignore-shared capability

We want to use local migration to update QEMU for running guests.
In this case we don't need to migrate shared (file backed) RAM.
So, add a capability to ignore such blocks during live migration.

Signed-off-by: Yury Kotov <[email protected]>
Message-Id: <20190215174548[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agoexec: Change RAMBlockIterFunc definition
Yury Kotov [Fri, 15 Feb 2019 17:45:44 +0000 (20:45 +0300)]
exec: Change RAMBlockIterFunc definition

Currently, qemu_ram_foreach_* calls RAMBlockIterFunc with many
block-specific arguments. But often iter func needs RAMBlock*.
This refactoring is needed for fast access to RAMBlock flags from
qemu_ram_foreach_block's callback. The only way to achieve this now
is to call qemu_ram_block_from_host (which also enumerates blocks).

So, this patch reduces complexity of
qemu_ram_foreach_block() -> cb() -> qemu_ram_block_from_host()
from O(n^2) to O(n).

Fix RAMBlockIterFunc definition and add some functions to read
RAMBlock* fields witch were passed.

Signed-off-by: Yury Kotov <[email protected]>
Message-Id: <20190215174548[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration/rdma: clang compilation fix
Marcel Apfelbaum [Mon, 4 Mar 2019 18:49:23 +0000 (20:49 +0200)]
migration/rdma: clang compilation fix

Configuring QEMU with:
        ../configure --cc=clang --enable-rdma

Leads to compilation error:

  CC      migration/rdma.o
  CC      migration/block.o
  qemu/migration/rdma.c:3615:58: error: taking address of packed member 'rkey' of class or structure
      'RDMARegisterResult' may result in an unaligned pointer value [-Werror,-Waddress-of-packed-member]
                            (uintptr_t)host_addr, NULL, &reg_result->rkey,
                                                         ^~~~~~~~~~~~~~~~
Fix it by using a temp local variable.

Signed-off-by: Marcel Apfelbaum <[email protected]>
Message-Id: <20190304184923[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
5 years agomigration: Cleanup during exit
Dr. David Alan Gilbert [Wed, 27 Feb 2019 16:49:00 +0000 (16:49 +0000)]
migration: Cleanup during exit

Currently we cleanup the migration object as we exit main after the
main_loop finishes; however if there's a migration running things
get messy and we can end up with the migration thread still trying
to access freed structures.

We now take a ref to the object around the migration thread itself,
so the act of dropping the ref during exit doesn't cause us to lose
the state until the thread quits.

Cancelling the migration during migration also tries to get the thread
to quit.

We do this a bit earlier; so hopefully migration gets out of the way
before all the devices etc are freed.

Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Tested-by: Alex Bennée <[email protected]>
Message-Id: <20190227164900[email protected]>
Reviewed-by: Juan Quintela <[email protected]>
Reviewed-by: Alex Bennée <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
5 years agomigration/rdma: Fix qemu_rdma_cleanup null check
Dr. David Alan Gilbert [Thu, 14 Feb 2019 18:53:51 +0000 (18:53 +0000)]
migration/rdma: Fix qemu_rdma_cleanup null check

If the migration fails before the channel is open (e.g. a bad
address) we end up in the cleanup with rdma->channel==NULL.

Spotted by Coverity: CID 1398634
Fixes: fbbaacab2758cb3f32a0
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20190214185351[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Reviewed-by: Peter Xu <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
5 years agomigration: Fix cancel state
Dr. David Alan Gilbert [Tue, 19 Feb 2019 19:59:28 +0000 (19:59 +0000)]
migration: Fix cancel state

During a cancelled migration there's a race where the fd can
go into an error state before we get back around the migration loop
and migration_detect_error transitions from cancelling->failed.

Check for cancelled/cancelling and don't change the state.

Red Hat bug: https://bugzilla.redhat.com/show_bug.cgi?id=1608649

Fixes: b23c2ade250
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20190219195928[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Reviewed-by: Peter Xu <[email protected]>
Reviewed-by: Juan Quintela <[email protected]>
5 years agothunk: fix of malloc to g_new
Aarushi Mehta [Fri, 1 Mar 2019 19:41:42 +0000 (01:11 +0530)]
thunk: fix of malloc to g_new

Note that since thunking occurs throughout the lifetime of the QEMU
instance, there is no matching 'free' to correct.

Signed-off-by: Aarushi Mehta <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Message-Id: <5310bd5d152fa36c1828a7cbd19fc893739d1609[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>
5 years agohostmem-file: simplify ifdef-s in file_backend_memory_alloc()
Igor Mammedov [Thu, 14 Feb 2019 03:10:03 +0000 (11:10 +0800)]
hostmem-file: simplify ifdef-s in file_backend_memory_alloc()

cleanup file_backend_memory_alloc() by using one CONFIG_POSIX ifdef
instead of several ones within the function to make it simpler to follow.

Signed-off-by: Igor Mammedov <[email protected]>
Suggested-by: Wei Yang <[email protected]>
Reviewed-by: Wei Yang <[email protected]>
Message-Id: <20190213123858[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
Message-Id: <20190214031004[email protected]>
[lv: s/hostmem/hostmem-file/]
Signed-off-by: Laurent Vivier <[email protected]>
5 years agobuild: Correct explanation of unnest-vars example
Markus Armbruster [Wed, 13 Feb 2019 13:02:40 +0000 (14:02 +0100)]
build: Correct explanation of unnest-vars example

Cc: Fam Zheng <[email protected]>
Signed-off-by: Markus Armbruster <[email protected]>
Message-Id: <20190213130240[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>
5 years agobswap: Fix accessors syntax in comment
Greg Kurz [Tue, 26 Feb 2019 14:21:07 +0000 (15:21 +0100)]
bswap: Fix accessors syntax in comment

All accessors that have an endian infix DO have an underscore between
{size} and {endian}.

Signed-off-by: Greg Kurz <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-Id: <155119086741.1037569.12734854713022304642[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>
5 years agodoc: fix typos for documents in tree
Like Xu [Wed, 20 Feb 2019 05:27:26 +0000 (13:27 +0800)]
doc: fix typos for documents in tree

Signed-off-by: Like Xu <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Message-Id: <1550640446[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>
5 years agoblock/pflash_cfi02: Fix memory leak and potential use-after-free
Stephen Checkoway [Tue, 19 Feb 2019 15:37:27 +0000 (10:37 -0500)]
block/pflash_cfi02: Fix memory leak and potential use-after-free

Don't dynamically allocate the pflash's timer. But do use timer_del in
an unrealize function to make sure that the timer can't fire after the
pflash_t has been freed.

Signed-off-by: Stephen Checkoway <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Wei Yang <[email protected]>
Message-Id: <20190219153727[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>
5 years agohw/acpi: remove unnecessary variable acpi_table_builtin
Wei Yang [Thu, 14 Feb 2019 08:49:39 +0000 (16:49 +0800)]
hw/acpi: remove unnecessary variable acpi_table_builtin

acpi_table_builtin is now always false, it is not necessary to check it
again.

This patch just removes it.

Signed-off-by: Wei Yang <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Tested-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Igor Mammedov <[email protected]>
Message-Id: <20190214084939[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>
5 years agohw/acpi: remove unused function acpi_table_add_builtin()
Wei Yang [Thu, 14 Feb 2019 08:49:38 +0000 (16:49 +0800)]
hw/acpi: remove unused function acpi_table_add_builtin()

Function acpi_table_add_builtin() is not used anymore.

Remove the definition and declaration.

Signed-off-by: Wei Yang <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Tested-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Igor Mammedov <[email protected]>
Message-Id: <20190214084939[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>
5 years agohw/i386/pc.c: remove unused function pc_acpi_init()
Wei Yang [Thu, 14 Feb 2019 08:49:37 +0000 (16:49 +0800)]
hw/i386/pc.c: remove unused function pc_acpi_init()

Function pc_acpi_init() is not used anymore.

Remove the definition and declaration.

Signed-off-by: Wei Yang <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Tested-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Igor Mammedov <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Message-Id: <20190214084939[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>
5 years agotests: Remove (mostly) useless architecture checks
Thomas Huth [Fri, 1 Mar 2019 16:16:10 +0000 (17:16 +0100)]
tests: Remove (mostly) useless architecture checks

These checks at the beginning of some of the tests are mostly useless:
We only run the tests on x86 anyway, and g_test_message() does not
print anything unless you call g_test_init() first.

Signed-off-by: Thomas Huth <[email protected]>
Acked-by: John Snow <[email protected]>
Acked-by: Corey Minyard <[email protected]>
Message-Id: <1551456970[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>
This page took 0.095371 seconds and 4 git commands to generate.