]> Git Repo - qemu.git/log
qemu.git
5 years agosemihosting: add qemu_semihosting_console_inc for SYS_READC
Keith Packard [Mon, 4 Nov 2019 20:42:30 +0000 (12:42 -0800)]
semihosting: add qemu_semihosting_console_inc for SYS_READC

Provides a blocking call to read a character from the console using
semihosting.chardev, if specified. This takes some careful command
line options to use stdio successfully as the serial ports, monitor
and semihost all want to use stdio. Here's a sample set of command
line options which share stdio between semihost, monitor and serial
ports:

qemu \
-chardev stdio,mux=on,id=stdio0 \
-serial chardev:stdio0 \
-semihosting-config enable=on,chardev=stdio0 \
-mon chardev=stdio0,mode=readline

This creates a chardev hooked to stdio and then connects all of the
subsystems to it. A shorter mechanism would be good to hear about.

Signed-off-by: Keith Packard <[email protected]>
Message-Id: <20191104204230[email protected]>
[AJB: fixed up deadlock, minor commit title reword]
Signed-off-by: Alex Bennée <[email protected]>
Cc: Paolo Bonzini <[email protected]>
Reviewed-by: Keith Packard <[email protected]>
Tested-by: Keith Packard <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
5 years agotarget/arm: only update pc after semihosting completes
Alex Bennée [Tue, 17 Dec 2019 15:08:57 +0000 (15:08 +0000)]
target/arm: only update pc after semihosting completes

Before we introduce blocking semihosting calls we need to ensure we
can restart the system on semi hosting exception. To be able to do
this the EXCP_SEMIHOST operation should be idempotent until it finally
completes. Practically this means ensureing we only update the pc
after the semihosting call has completed.

Signed-off-by: Alex Bennée <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Reviewed-by: Keith Packard <[email protected]>
Tested-by: Keith Packard <[email protected]>
5 years agotarget/arm: remove unused EXCP_SEMIHOST leg
Alex Bennée [Tue, 17 Dec 2019 15:06:38 +0000 (15:06 +0000)]
target/arm: remove unused EXCP_SEMIHOST leg

All semihosting exceptions are dealt with earlier in the common code
so we should never get here.

Signed-off-by: Alex Bennée <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Reviewed-by: Keith Packard <[email protected]>
Tested-by: Keith Packard <[email protected]>
5 years agotesting: don't nest build for fp-test
Alex Bennée [Tue, 7 Jan 2020 17:55:52 +0000 (17:55 +0000)]
testing: don't nest build for fp-test

Re-calling the main make is counter-productive and really messes up
with parallel builds. Just ensure we have built the pre-requisites
before we build the fp-test bits. If the user builds manually just
complain if the parent build hasn't got the bits we need.

Signed-off-by: Alex Bennée <[email protected]>
Reviewed-by: Emilio G. Cota <[email protected]>
5 years agotravis.yml: install homebrew python for OS X
Alex Bennée [Tue, 7 Jan 2020 13:38:28 +0000 (13:38 +0000)]
travis.yml: install homebrew python for OS X

Our python3 requirements now outstrip those of the build. While we are
at it we can move more of the special casing for Mac into the one
build we have.

Signed-off-by: Alex Bennée <[email protected]>
5 years agotravis.yml: duplicate before_script for MacOSX
Alex Bennée [Wed, 8 Jan 2020 10:58:58 +0000 (10:58 +0000)]
travis.yml: duplicate before_script for MacOSX

Rather than keep the hack in the global code lets "Think Different"
and have a special copy for MacOSX.

Signed-off-by: Alex Bennée <[email protected]>
5 years agotravis.yml: Detach build and test steps
Wainer dos Santos Moschetta [Mon, 30 Dec 2019 18:43:27 +0000 (15:43 -0300)]
travis.yml: Detach build and test steps

Currently build and test commands are a single step in a
Travis's `script` block. In order to see the output
of the tests one needs to scroll down the log to find where
the build messages ended and the limit is not clear. If
they were in different steps then Travis would print the
result build command, which can be easily grep'ed.

So this change is made to detach those commands
to ease the visualization of the output.

Note that all steps on the `script` block is executed regardless
if one previous has failed. To overcome it, let's save the
return code of the build then check whether succeed or failed on
the test step.

Signed-off-by: Wainer dos Santos Moschetta <[email protected]>
Signed-off-by: Alex Bennée <[email protected]>
Message-Id: <20191230184327[email protected]>

5 years agotravis.yml: avocado: Print logs of non-pass tests only
Wainer dos Santos Moschetta [Mon, 30 Dec 2019 18:43:26 +0000 (15:43 -0300)]
travis.yml: avocado: Print logs of non-pass tests only

The acceptance tests build on Travis is configured to print
the entire Avocado's job log in case any test fail. Usually one is
interested on failed tests only though. So this change the Travis
configuration in order to show the log of tests which status is
different from 'PASS' and 'SKIP' only. Note that 'CANCEL'-ed tests
will have the log printed too because it can help to debug some
condition on CI environment which is not being fulfilled.

Signed-off-by: Wainer dos Santos Moschetta <[email protected]>
Signed-off-by: Alex Bennée <[email protected]>
Message-Id: <20191230184327[email protected]>

5 years agofreebsd: use python37
Gerd Hoffmann [Mon, 6 Jan 2020 12:37:46 +0000 (13:37 +0100)]
freebsd: use python37

FreeBSD seems to use python37 by default now, which breaks the build
script.  Add python to the package list, to explicitly pick the version,
and also adapt the configure command line.

Signed-off-by: Gerd Hoffmann <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Tested-by: Philippe Mathieu-Daudé <[email protected]>
Signed-off-by: Alex Bennée <[email protected]>
Message-Id: <20200106123746[email protected]>

5 years agotests/vm: update openbsd to release 6.6
Gerd Hoffmann [Fri, 18 Oct 2019 10:24:43 +0000 (12:24 +0200)]
tests/vm: update openbsd to release 6.6

Signed-off-by: Gerd Hoffmann <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Tested-by: Philippe Mathieu-Daudé <[email protected]>
Signed-off-by: Alex Bennée <[email protected]>
Message-Id: <20191018102443[email protected]>

5 years agohw/i386/x86-iommu: Add missing stubs
Philippe Mathieu-Daudé [Fri, 20 Dec 2019 15:42:25 +0000 (16:42 +0100)]
hw/i386/x86-iommu: Add missing stubs

In commit 6c730e4af9 we introduced a stub to build the MicroVM
machine without Intel IOMMU. This stub is incomplete for the
other PC machines. Add the missing stubs.

Fixes: 6c730e4af9
Reported-by: Travis-CI
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
Tested-by: Wainer dos Santos Moschetta <[email protected]>
Signed-off-by: Alex Bennée <[email protected]>
Message-Id: <20191220154225[email protected]>

5 years agoMerge remote-tracking branch 'remotes/vivier/tags/q800-for-5.0-pull-request' into...
Peter Maydell [Tue, 7 Jan 2020 17:08:21 +0000 (17:08 +0000)]
Merge remote-tracking branch 'remotes/vivier/tags/q800-for-5.0-pull-request' into staging

m68k: fix CACR valid bits
q800: add a fake mac rom reset (used by linux)
      fix and improve PRAM emulation

# gpg: Signature made Tue 07 Jan 2020 13:25:50 GMT
# gpg:                using RSA key CD2F75DDC8E3A4DC2E4F5173F30C38BD3F2FBE3C
# gpg:                issuer "[email protected]"
# 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/vivier/tags/q800-for-5.0-pull-request:
  target/m68k: only change valid bits in CACR
  q800: implement mac rom reset function for BIOS-less mode
  q800: add a block backend to the PRAM
  q800: fix mac_via RTC PRAM commands

Signed-off-by: Peter Maydell <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging
Peter Maydell [Tue, 7 Jan 2020 16:25:00 +0000 (16:25 +0000)]
Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging

virtio, pci, pc: fixes, features

Bugfixes all over the place.
HMAT support.
New flags for vhost-user-blk utility.
Auto-tuning of seg max for virtio storage.

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

* remotes/mst/tags/for_upstream: (32 commits)
  intel_iommu: add present bit check for pasid table entries
  intel_iommu: a fix to vtd_find_as_from_bus_num()
  virtio-net: delete also control queue when TX/RX deleted
  virtio: reset region cache when on queue deletion
  virtio-mmio: update queue size on guest write
  tests: add virtio-scsi and virtio-blk seg_max_adjust test
  virtio: make seg_max virtqueue size dependent
  hw: fix using 4.2 compat in 5.0 machine types for i440fx/q35
  vhost-user-scsi: reset the device if supported
  vhost-user: add VHOST_USER_RESET_DEVICE to reset devices
  hw/pci/pci_host: Let pci_data_[read/write] use unsigned 'size' argument
  hw/pci/pci_host: Remove redundant PCI_DPRINTF()
  virtio-mmio: Clear v2 transport state on soft reset
  ACPI: add expected files for HMAT tests (acpihmat)
  tests/bios-tables-test: add test cases for ACPI HMAT
  tests/numa: Add case for QMP build HMAT
  hmat acpi: Build Memory Side Cache Information Structure(s)
  hmat acpi: Build System Locality Latency and Bandwidth Information Structure(s)
  hmat acpi: Build Memory Proximity Domain Attributes Structure(s)
  numa: Extend CLI to provide memory side cache information
  ...

Signed-off-by: Peter Maydell <[email protected]>
5 years agotests/iothread: Always connect iothread GSource to a GMainContext
Peter Maydell [Mon, 6 Jan 2020 14:45:52 +0000 (14:45 +0000)]
tests/iothread: Always connect iothread GSource to a GMainContext

On older versions of glib (anything prior to glib commit 0f056ebe
from May 2019), the implementation of g_source_ref() and
g_source_unref() is not threadsafe for a GSource which is not
attached to a GMainContext.

QEMU's real iothread.c implementation always attaches its
iothread->ctx's GSource to a GMainContext created for that iothread,
so it is OK, but the simple test framework implementation in
tests/iothread.c was not doing this.  This was causing intermittent
assertion failures in the test-aio-multithread subtest
"/aio/multi/mutex/contended" test on the BSD hosts.  (It's unclear
why only BSD seems to have been affected -- perhaps a combination of
the specific glib version being used in the VMs and their happening
to run on a host with a lot of CPUs).

Borrow the iothread_init_gcontext() from the real iothread.c
and add the corresponding cleanup code and the calls to
g_main_context_push/pop_thread_default() so we actually use
the GMainContext we create.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Marc-André Lureau <[email protected]>
Reviewed-by: Peter Xu <[email protected]>
Message-id: 20200106144552[email protected]

5 years agotarget/m68k: only change valid bits in CACR
Laurent Vivier [Fri, 20 Dec 2019 17:24:15 +0000 (18:24 +0100)]
target/m68k: only change valid bits in CACR

This is used by netBSD (and MacOS ROM) to detect the MMU type

Signed-off-by: Laurent Vivier <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Message-Id: <20191220172415[email protected]>
[lv: add a comment before m680x0_cpu_common()]
Signed-off-by: Laurent Vivier <[email protected]>
5 years agoq800: implement mac rom reset function for BIOS-less mode
Jason A. Donenfeld [Thu, 2 Jan 2020 12:01:50 +0000 (13:01 +0100)]
q800: implement mac rom reset function for BIOS-less mode

On Linux, calling `reboot(RB_AUTOBOOT);` will result in
arch/m68k/mac/misc.c's mac_reset function being called. That in turn
looks at the rombase (or uses 0x40800000 is there's no rombase), adds
0xa, and jumps to that address. At the moment, there's nothing there, so
the kernel just crashes when trying to reboot. So, this commit adds a
very simple implementation at that location, which just writes to via2
to power down. We also correct the value of ROMBASE while we're at it.

Signed-off-by: Jason A. Donenfeld <[email protected]>
Reviewed-by: Laurent Vivier <[email protected]>
Message-Id: <20200102120150[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>
5 years agoq800: add a block backend to the PRAM
Laurent Vivier [Thu, 19 Dec 2019 20:14:39 +0000 (21:14 +0100)]
q800: add a block backend to the PRAM

This allows to save and restore the content of the PRAM.
It may be useful if we want to check the configuration or to change it.

The backend is added using mtd interface, for instance:

    ... -drive file=pram.img,format=raw,if=mtd ...

where pram.img is the file where the data will be stored, its size must
be 256 bytes.

Signed-off-by: Laurent Vivier <[email protected]>
Message-Id: <20191219201439[email protected]>

5 years agoq800: fix mac_via RTC PRAM commands
Laurent Vivier [Thu, 19 Dec 2019 20:14:38 +0000 (21:14 +0100)]
q800: fix mac_via RTC PRAM commands

The command byte is not decoded correctly.

This patch reworks the RTC/PRAM interface and fixes the problem.
It adds a comment before the function to explain how are encoded commands
and some trace-events to ease debugging.

Bug: https://bugs.launchpad.net/qemu/+bug/1856549
Fixes: 6dca62a000 ("hw/m68k: add VIA support")
Signed-off-by: Laurent Vivier <[email protected]>
Reviewed-by: Mark Cave-Ayland <[email protected]>
Message-Id: <20191219201439[email protected]>

5 years agoMerge remote-tracking branch 'remotes/awilliam/tags/vfio-fixes-20200106.0' into staging
Peter Maydell [Tue, 7 Jan 2020 11:09:54 +0000 (11:09 +0000)]
Merge remote-tracking branch 'remotes/awilliam/tags/vfio-fixes-20200106.0' into staging

VFIO fixes 2020-01-06

 - Fix irqchip notifier de-registration if not registered (Peter Xu)

# gpg: Signature made Mon 06 Jan 2020 21:58:17 GMT
# gpg:                using RSA key 239B9B6E3BB08B22
# gpg: Good signature from "Alex Williamson <[email protected]>" [full]
# gpg:                 aka "Alex Williamson <[email protected]>" [full]
# gpg:                 aka "Alex Williamson <[email protected]>" [full]
# gpg:                 aka "Alex Williamson <[email protected]>" [full]
# Primary key fingerprint: 42F6 C04E 540B D1A9 9E7B  8A90 239B 9B6E 3BB0 8B22

* remotes/awilliam/tags/vfio-fixes-20200106.0:
  vfio/pci: Don't remove irqchip notifier if not registered

Signed-off-by: Peter Maydell <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/xtensa/tags/20200106-xtensa' into staging
Peter Maydell [Tue, 7 Jan 2020 10:31:07 +0000 (10:31 +0000)]
Merge remote-tracking branch 'remotes/xtensa/tags/20200106-xtensa' into staging

target/xtensa improvements for v5.0:

- fix ps.ring use in MPU configs;
- use MPU background map from the configuration overlay.

# gpg: Signature made Mon 06 Jan 2020 20:00:33 GMT
# gpg:                using RSA key 2B67854B98E5327DCDEB17D851F9CC91F83FA044
# gpg:                issuer "[email protected]"
# gpg: Good signature from "Max Filippov <[email protected]>" [unknown]
# gpg:                 aka "Max Filippov <[email protected]>" [full]
# gpg:                 aka "Max Filippov <[email protected]>" [full]
# Primary key fingerprint: 2B67 854B 98E5 327D CDEB  17D8 51F9 CC91 F83F A044

* remotes/xtensa/tags/20200106-xtensa:
  target/xtensa: use MPU background map from core configuration
  target/xtensa: import xtensa/config/core-isa.h
  target/xtensa: fix ps.ring use in MPU configs

Signed-off-by: Peter Maydell <[email protected]>
5 years agovfio/pci: Don't remove irqchip notifier if not registered
Peter Xu [Mon, 6 Jan 2020 20:34:45 +0000 (13:34 -0700)]
vfio/pci: Don't remove irqchip notifier if not registered

The kvm irqchip notifier is only registered if the device supports
INTx, however it's unconditionally removed.  If the assigned device
does not support INTx, this will cause QEMU to crash when unplugging
the device from the system.  Change it to conditionally remove the
notifier only if the notify hook is setup.

CC: Eduardo Habkost <[email protected]>
CC: David Gibson <[email protected]>
CC: Alex Williamson <[email protected]>
Cc: [email protected] # v4.2
Reported-by: [email protected]
Debugged-by: Eduardo Habkost <[email protected]>
Fixes: c5478fea27ac ("vfio/pci: Respond to KVM irqchip change notifier")
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1782678
Signed-off-by: Peter Xu <[email protected]>
Reviewed-by: David Gibson <[email protected]>
Reviewed-by: Greg Kurz <[email protected]>
Signed-off-by: Alex Williamson <[email protected]>
5 years agotarget/xtensa: use MPU background map from core configuration
Max Filippov [Sun, 8 Dec 2019 06:27:23 +0000 (22:27 -0800)]
target/xtensa: use MPU background map from core configuration

Configuration overlay may define MPU background map. Import
core-matmap.h from the overlay and use XCHAL_MPU_BACKGROUND_MAP macro
if it's defined.

Signed-off-by: Max Filippov <[email protected]>
5 years agotarget/xtensa: import xtensa/config/core-isa.h
Max Filippov [Sun, 8 Dec 2019 09:54:43 +0000 (01:54 -0800)]
target/xtensa: import xtensa/config/core-isa.h

Import core-isa.h from its canonical place in the configuration overlay.
Drop --xform option from the tar command line.

Signed-off-by: Max Filippov <[email protected]>
5 years agotarget/xtensa: fix ps.ring use in MPU configs
Max Filippov [Mon, 4 Nov 2019 08:01:27 +0000 (00:01 -0800)]
target/xtensa: fix ps.ring use in MPU configs

Allow ps.ring modification by wsr.ps/xsr.ps and use ps.ring value in
xtensa_get_[c]ring on configurations with MPU.

Signed-off-by: Max Filippov <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/elmarco/tags/dbus-vmstate7-pull-request' into...
Peter Maydell [Mon, 6 Jan 2020 18:22:42 +0000 (18:22 +0000)]
Merge remote-tracking branch 'remotes/elmarco/tags/dbus-vmstate7-pull-request' into staging

Add dbus-vmstate

Hi,

With external processes or helpers participating to the VM support, it
becomes necessary to handle their migration. Various options exist to
transfer their state:
1) as the VM memory, RAM or devices (we could say that's how
   vhost-user devices can be handled today, they are expected to
   restore from ring state)
2) other "vmstate" (as with TPM emulator state blobs)
3) left to be handled by management layer

1) is not practical, since an external processes may legitimatelly
need arbitrary state date to back a device or a service, or may not
even have an associated device.

2) needs ad-hoc code for each helper, but is simple and working

3) is complicated for management layer, QEMU has the migration timing

The proposed "dbus-vmstate" object will connect to a given D-Bus
address, and save/load from org.qemu.VMState1 owners on migration.

Thus helpers can easily have their state migrated with QEMU, without
implementing ad-hoc support (such as done for TPM emulation)

D-Bus is ubiquitous on Linux (it is systemd IPC), and can be made to
work on various other OSes. There are several implementations and good
bindings for various languages.  (the tests/dbus-vmstate-test.c is a
good example of how simple the implementation of services can be, even
in C)

dbus-vmstate is put into use by the libvirt series "[PATCH 00/23] Use
a slirp helper process".

v2:
 - fix build with broken mingw-glib

# gpg: Signature made Mon 06 Jan 2020 14:43:35 GMT
# gpg:                using RSA key 87A9BD933F87C606D276F62DDAE8E10975969CE5
# gpg:                issuer "[email protected]"
# gpg: Good signature from "Marc-André Lureau <[email protected]>" [full]
# gpg:                 aka "Marc-André Lureau <[email protected]>" [full]
# Primary key fingerprint: 87A9 BD93 3F87 C606 D276  F62D DAE8 E109 7596 9CE5

* remotes/elmarco/tags/dbus-vmstate7-pull-request:
  tests: add dbus-vmstate-test
  tests: add migration-helpers unit
  dockerfiles: add dbus-daemon to some of latest distributions
  configure: add GDBUS_CODEGEN
  Add dbus-vmstate object
  util: add dbus helper unit
  docs: start a document to describe D-Bus usage
  vmstate: replace DeviceState with VMStateIf
  vmstate: add qom interface to get id

Signed-off-by: Peter Maydell <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/maxreitz/tags/pull-block-2020-01-06' into staging
Peter Maydell [Mon, 6 Jan 2020 17:44:22 +0000 (17:44 +0000)]
Merge remote-tracking branch 'remotes/maxreitz/tags/pull-block-2020-01-06' into staging

Block patches:
- Minor fixes and tests from the freeze period (too minor to be included
  in 4.2)
- Allow many bash iotests to test qcow2's external data file feature
- Add compress filter driver
- Fix Python iotests after 6f6e1698a6
- Fix for the backup job

# gpg: Signature made Mon 06 Jan 2020 14:33:06 GMT
# gpg:                using RSA key 91BEB60A30DB3E8857D11829F407DB0061D5CF40
# gpg:                issuer "[email protected]"
# gpg: Good signature from "Max Reitz <[email protected]>" [full]
# Primary key fingerprint: 91BE B60A 30DB 3E88 57D1  1829 F407 DB00 61D5 CF40

* remotes/maxreitz/tags/pull-block-2020-01-06: (34 commits)
  backup-top: Begin drain earlier
  tests/qemu-iotests: Update tests to recent desugarized -accel option
  tests/qemu-iotests: add case to write compressed data of multiple clusters
  qcow2: Allow writing compressed data of multiple clusters
  block: introduce compress filter driver
  iotests: Allow check -o data_file
  iotests: Disable data_file where it cannot be used
  iotests: Make 198 work with data_file
  iotests: Make 137 work with data_file
  iotests: Make 110 work with data_file
  iotests: Make 091 work with data_file
  iotests: Avoid cp/mv of test images
  iotests: Use _rm_test_img for deleting test images
  iotests: Avoid qemu-img create
  iotests: Drop IMGOPTS use in 267
  iotests: Replace IMGOPTS='' by --no-opts
  iotests: Replace IMGOPTS= by -o
  iotests: Inject space into -ocompat=0.10 in 051
  iotests: Add -o and --no-opts to _make_test_img
  iotests: Let _make_test_img parse its parameters
  ...

Signed-off-by: Peter Maydell <[email protected]>
5 years agointel_iommu: add present bit check for pasid table entries
Liu Yi L [Fri, 3 Jan 2020 13:28:06 +0000 (21:28 +0800)]
intel_iommu: add present bit check for pasid table entries

The present bit check for pasid entry (pe) and pasid directory
entry (pdire) were missed in previous commits as fpd bit check
doesn't require present bit as "Set". This patch adds the present
bit check for callers which wants to get a valid pe/pdire.

Cc: [email protected]
Cc: Kevin Tian <[email protected]>
Cc: Jacob Pan <[email protected]>
Cc: Peter Xu <[email protected]>
Cc: Yi Sun <[email protected]>
Reviewed-by: Peter Xu <[email protected]>
Signed-off-by: Liu Yi L <[email protected]>
Message-Id: <1578058086[email protected]>
Reviewed-by: Peter Xu <[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agointel_iommu: a fix to vtd_find_as_from_bus_num()
Liu Yi L [Fri, 3 Jan 2020 13:28:05 +0000 (21:28 +0800)]
intel_iommu: a fix to vtd_find_as_from_bus_num()

Ensure the return value of vtd_find_as_from_bus_num() is NULL by
enforcing vtd_bus=NULL. This would help caller of vtd_find_as_from_bus_num()
to decide if any further operation on the returned vtd_bus.

Cc: [email protected]
Cc: Kevin Tian <[email protected]>
Cc: Jacob Pan <[email protected]>
Cc: Peter Xu <[email protected]>
Cc: Yi Sun <[email protected]>
Signed-off-by: Liu Yi L <[email protected]>
Signed-off-by: Yi Sun <[email protected]>
Message-Id: <1578058086[email protected]>
Reviewed-by: Peter Xu <[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agovirtio-net: delete also control queue when TX/RX deleted
Yuri Benditovich [Thu, 26 Dec 2019 04:36:49 +0000 (06:36 +0200)]
virtio-net: delete also control queue when TX/RX deleted

https://bugzilla.redhat.com/show_bug.cgi?id=1708480
If the control queue is not deleted together with TX/RX, it
later will be ignored in freeing cache resources and hot
unplug will not be completed.

Cc: [email protected]
Signed-off-by: Yuri Benditovich <[email protected]>
Message-Id: <20191226043649[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agovirtio: reset region cache when on queue deletion
Yuri Benditovich [Thu, 26 Dec 2019 04:36:48 +0000 (06:36 +0200)]
virtio: reset region cache when on queue deletion

https://bugzilla.redhat.com/show_bug.cgi?id=1708480
Fix leak of region reference that prevents complete
device deletion on hot unplug.

Cc: [email protected]
Signed-off-by: Yuri Benditovich <[email protected]>
Message-Id: <20191226043649[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agovirtio-mmio: update queue size on guest write
Denis Plotnikov [Tue, 24 Dec 2019 08:14:46 +0000 (11:14 +0300)]
virtio-mmio: update queue size on guest write

Some guests read back queue size after writing it.
Always update the on size write otherwise they might be confused.

Cc: [email protected]
Signed-off-by: Denis Plotnikov <[email protected]>
Message-Id: <20191224081446[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agotests: add virtio-scsi and virtio-blk seg_max_adjust test
Denis Plotnikov [Fri, 20 Dec 2019 14:09:05 +0000 (17:09 +0300)]
tests: add virtio-scsi and virtio-blk seg_max_adjust test

It tests proper seg_max_adjust settings for all machine types except
'none', 'isapc', 'microvm'

Signed-off-by: Denis Plotnikov <[email protected]>
Message-Id: <20191220140905[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agovirtio: make seg_max virtqueue size dependent
Denis Plotnikov [Fri, 20 Dec 2019 14:09:04 +0000 (17:09 +0300)]
virtio: make seg_max virtqueue size dependent

Before the patch, seg_max parameter was immutable and hardcoded
to 126 (128 - 2) without respect to queue size. This has two negative effects:

1. when queue size is < 128, we have Virtio 1.1 specfication violation:
   (2.6.5.3.1 Driver Requirements) seq_max must be <= queue_size.
   This violation affects the old Linux guests (ver < 4.14). These guests
   crash on these queue_size setups.

2. when queue_size > 128, as was pointed out by Denis Lunev <[email protected]>,
   seg_max restrics guest's block request length which affects guests'
   performance making them issues more block request than needed.
   https://lists.gnu.org/archive/html/qemu-devel/2017-12/msg03721.html

To mitigate this two effects, the patch adds the property adjusting seg_max
to queue size automaticaly. Since seg_max is a guest visible parameter,
the property is machine type managable and allows to choose between
old (seg_max = 126 always) and new (seg_max = queue_size - 2) behaviors.

Not to change the behavior of the older VMs, prevent setting the default
seg_max_adjust value for older machine types.

Reviewed-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Denis Plotnikov <[email protected]>
Message-Id: <20191220140905[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/kraxel/tags/audio-20200106-pull-request' into...
Peter Maydell [Mon, 6 Jan 2020 16:48:35 +0000 (16:48 +0000)]
Merge remote-tracking branch 'remotes/kraxel/tags/audio-20200106-pull-request' into staging

audio: bugfixes.

# gpg: Signature made Mon 06 Jan 2020 12:51:15 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/audio-20200106-pull-request:
  audio: fix integer overflow
  paaudio: wait until the recording stream is ready
  paaudio: try to drain the recording stream
  paaudio: drop recording stream in qpa_fini_in
  hda-codec: fix recording rate control
  hda-codec: fix playback rate control

Signed-off-by: Peter Maydell <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/elmarco/tags/screendump-pull-request' into...
Peter Maydell [Mon, 6 Jan 2020 14:51:51 +0000 (14:51 +0000)]
Merge remote-tracking branch 'remotes/elmarco/tags/screendump-pull-request' into staging

console: screendump improvements

Hi,

The following patches have been extracted from the "[PATCH v6 00/25]
monitor: add asynchronous command type", as they are
reviewable/mergeable independantly.

They introduce some internal API changes, and fix
qemu_open()/qemu_close()/unlink() misusages which should be quite
harmless.

# gpg: Signature made Fri 03 Jan 2020 09:07:51 GMT
# gpg:                using RSA key 87A9BD933F87C606D276F62DDAE8E10975969CE5
# gpg:                issuer "[email protected]"
# gpg: Good signature from "Marc-André Lureau <[email protected]>" [full]
# gpg:                 aka "Marc-André Lureau <[email protected]>" [full]
# Primary key fingerprint: 87A9 BD93 3F87 C606 D276  F62D DAE8 E109 7596 9CE5

* remotes/elmarco/tags/screendump-pull-request:
  screendump: use qemu_unlink()
  osdep: add qemu_unlink()
  screendump: replace FILE with QIOChannel and fix close()/qemu_close()
  object: add g_autoptr support
  ui: add pixman image g_autoptr support
  ppm-save: pass opened fd
  console: add graphic_hw_update_done()

Signed-off-by: Peter Maydell <[email protected]>
5 years agotests: add dbus-vmstate-test
Marc-André Lureau [Fri, 27 Sep 2019 08:39:08 +0000 (12:39 +0400)]
tests: add dbus-vmstate-test

Signed-off-by: Marc-André Lureau <[email protected]>
Reviewed-by: Daniel P. Berrangé <[email protected]>
5 years agotests: add migration-helpers unit
Marc-André Lureau [Mon, 16 Dec 2019 10:59:44 +0000 (14:59 +0400)]
tests: add migration-helpers unit

Move a few helper functions from migration-test.c to migration-helpers.c

Signed-off-by: Marc-André Lureau <[email protected]>
Reviewed-by: Daniel P. Berrangé <[email protected]>
5 years agodockerfiles: add dbus-daemon to some of latest distributions
Marc-André Lureau [Mon, 30 Sep 2019 10:05:46 +0000 (14:05 +0400)]
dockerfiles: add dbus-daemon to some of latest distributions

To get dbus-vmstate test covered.

Signed-off-by: Marc-André Lureau <[email protected]>
Reviewed-by: Daniel P. Berrangé <[email protected]>
5 years agoconfigure: add GDBUS_CODEGEN
Marc-André Lureau [Fri, 27 Sep 2019 07:34:42 +0000 (11:34 +0400)]
configure: add GDBUS_CODEGEN

gdbus-codegen generated code requires gio-unix on Unix, so add it to
GIO libs/cflags.

Signed-off-by: Marc-André Lureau <[email protected]>
Reviewed-by: Daniel P. Berrangé <[email protected]>
5 years agoAdd dbus-vmstate object
Marc-André Lureau [Mon, 16 Dec 2019 07:48:53 +0000 (11:48 +0400)]
Add dbus-vmstate object

When instantiated, this object will connect to the given D-Bus bus
"addr". During migration, it will take/restore the data from
org.qemu.VMState1 instances. See documentation for details.

Signed-off-by: Marc-André Lureau <[email protected]>
Reviewed-by: Daniel P. Berrangé <[email protected]>
5 years agoutil: add dbus helper unit
Marc-André Lureau [Fri, 27 Sep 2019 08:16:54 +0000 (12:16 +0400)]
util: add dbus helper unit

Signed-off-by: Marc-André Lureau <[email protected]>
Reviewed-by: Daniel P. Berrangé <[email protected]>
5 years agodocs: start a document to describe D-Bus usage
Marc-André Lureau [Thu, 12 Sep 2019 12:03:32 +0000 (16:03 +0400)]
docs: start a document to describe D-Bus usage

Signed-off-by: Marc-André Lureau <[email protected]>
Reviewed-by: Daniel P. Berrangé <[email protected]>
5 years agovmstate: replace DeviceState with VMStateIf
Marc-André Lureau [Wed, 28 Aug 2019 12:02:32 +0000 (16:02 +0400)]
vmstate: replace DeviceState with VMStateIf

Replace DeviceState dependency with VMStateIf on vmstate API.

Signed-off-by: Marc-André Lureau <[email protected]>
Reviewed-by: Daniel P. Berrangé <[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Acked-by: Halil Pasic <[email protected]>
5 years agovmstate: add qom interface to get id
Marc-André Lureau [Wed, 28 Aug 2019 12:00:19 +0000 (16:00 +0400)]
vmstate: add qom interface to get id

Add an interface to get the instance id, instead of depending on
Device and qdev_get_dev_path().

Signed-off-by: Marc-André Lureau <[email protected]>
Reviewed-by: Daniel P. Berrangé <[email protected]>
Acked-by: Dr. David Alan Gilbert <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/ehabkost/tags/x86-and-machine-pull-request...
Peter Maydell [Mon, 6 Jan 2020 14:08:04 +0000 (14:08 +0000)]
Merge remote-tracking branch 'remotes/ehabkost/tags/x86-and-machine-pull-request' into staging

x86 and machine queue, 2019-12-20

Bug fix:
* Resolve CPU models to v1 by default (Eduardo Habkost)

Cleanup:
* Remove incorrect numa_mem_supported checks (Igor Mammedov)

# gpg: Signature made Fri 20 Dec 2019 19:19:02 GMT
# gpg:                using RSA key 5A322FD5ABC4D3DBACCFD1AA2807936F984DC5A6
# gpg:                issuer "[email protected]"
# gpg: Good signature from "Eduardo Habkost <[email protected]>" [full]
# Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF  D1AA 2807 936F 984D C5A6

* remotes/ehabkost/tags/x86-and-machine-pull-request:
  numa: properly check if numa is supported
  numa: remove not needed check
  i386: Resolve CPU models to v1 by default

Signed-off-by: Peter Maydell <[email protected]>
5 years agobackup-top: Begin drain earlier
Max Reitz [Thu, 19 Dec 2019 18:26:38 +0000 (19:26 +0100)]
backup-top: Begin drain earlier

When dropping backup-top, we need to drain the node before freeing the
BlockCopyState.  Otherwise, requests may still be in flight and then the
assertion in shres_destroy() will fail.

(This becomes visible in intermittent failure of 056.)

Cc: [email protected]
Signed-off-by: Max Reitz <[email protected]>
Message-id: 20191219182638[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agotests/qemu-iotests: Update tests to recent desugarized -accel option
Philippe Mathieu-Daudé [Mon, 6 Jan 2020 13:09:51 +0000 (14:09 +0100)]
tests/qemu-iotests: Update tests to recent desugarized -accel option

Commit 6f6e1698a6 desugarized "-machine accel=" to a list
of "-accel" options. Since now "-machine accel" and "-accel"
became incompatible, update the iotests to the new format.

Error reported here:
https://gitlab.com/qemu-project/qemu/-/jobs/385801004#L3400

Reported-by: GitLab CI
Fixes: 6f6e1698a6 (vl: configure accelerators from -accel options)
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: 20200106130951[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agotests/qemu-iotests: add case to write compressed data of multiple clusters
Andrey Shinkevich [Mon, 2 Dec 2019 12:15:06 +0000 (15:15 +0300)]
tests/qemu-iotests: add case to write compressed data of multiple clusters

Add the case to the iotest #214 that checks possibility of writing
compressed data of more than one cluster size. The test case involves
the compress filter driver showing a sample usage of that.

Signed-off-by: Andrey Shinkevich <[email protected]>
Reviewed-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
Message-id: 1575288906[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoqcow2: Allow writing compressed data of multiple clusters
Andrey Shinkevich [Mon, 2 Dec 2019 12:15:05 +0000 (15:15 +0300)]
qcow2: Allow writing compressed data of multiple clusters

QEMU currently supports writing compressed data of the size equal to
one cluster. This patch allows writing QCOW2 compressed data that
exceed one cluster. Now, we split buffered data into separate clusters
and write them compressed using the block/aio_task API.

Suggested-by: Pavel Butsykin <[email protected]>
Suggested-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Signed-off-by: Andrey Shinkevich <[email protected]>
Reviewed-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
Message-id: 1575288906[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoblock: introduce compress filter driver
Andrey Shinkevich [Mon, 2 Dec 2019 12:15:04 +0000 (15:15 +0300)]
block: introduce compress filter driver

Allow writing all the data compressed through the filter driver.
The written data will be aligned by the cluster size.
Based on the QEMU current implementation, that data can be written to
unallocated clusters only. May be used for a backup job.

Suggested-by: Max Reitz <[email protected]>
Signed-off-by: Andrey Shinkevich <[email protected]>
Reviewed-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Message-id: 1575288906[email protected]
[mreitz: Replace NULL bdrv_get_format_name() by "(no format)"]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Allow check -o data_file
Max Reitz [Thu, 7 Nov 2019 16:37:08 +0000 (17:37 +0100)]
iotests: Allow check -o data_file

The problem with allowing the data_file option is that you want to use a
different data file per image used in the test.  Therefore, we need to
allow patterns like -o data_file='$TEST_IMG.data_file'.

Then, we need to filter it out from qemu-img map, qemu-img create, and
remove the data file in _rm_test_img.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Disable data_file where it cannot be used
Max Reitz [Thu, 7 Nov 2019 16:37:07 +0000 (17:37 +0100)]
iotests: Disable data_file where it cannot be used

Signed-off-by: Max Reitz <[email protected]>
Message-id: 20191107163708[email protected]
[mreitz: Also disable 273]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Make 198 work with data_file
Max Reitz [Thu, 7 Nov 2019 16:37:06 +0000 (17:37 +0100)]
iotests: Make 198 work with data_file

We do not care about the json:{} filenames here, so we can just filter
them out and thus make the test work both with and without external data
files.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Make 137 work with data_file
Max Reitz [Thu, 7 Nov 2019 16:37:05 +0000 (17:37 +0100)]
iotests: Make 137 work with data_file

When using an external data file, there are no refcounts for data
clusters.  We thus have to adjust the corruption test in this patch to
not be based around a data cluster allocation, but the L2 table
allocation (L2 tables are still refcounted with external data files).

Furthermore, we should not print qcow2.py's list of incompatible
features because it differs depending on whether there is an external
data file or not.

With those two changes, the test will work both with and without
external data files (once that options works with the iotests at all).

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Make 110 work with data_file
Max Reitz [Thu, 7 Nov 2019 16:37:04 +0000 (17:37 +0100)]
iotests: Make 110 work with data_file

The only difference is that the json:{} filename of the image looks
different.  We actually do not care about that filename in this test, we
are only interested in (1) that there is a json:{} filename, and (2)
whether the backing filename can be constructed.

So just filter out the json:{} data, thus making this test pass both
with and without data_file.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Make 091 work with data_file
Max Reitz [Thu, 7 Nov 2019 16:37:03 +0000 (17:37 +0100)]
iotests: Make 091 work with data_file

The image end offset as reported by qemu-img check is different when
using an external data file; we do not care about its value here, so we
can just filter it.  Incidentally, common.rc already has _check_test_img
for us which does exactly that.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Avoid cp/mv of test images
Max Reitz [Thu, 7 Nov 2019 16:37:02 +0000 (17:37 +0100)]
iotests: Avoid cp/mv of test images

This will not work with external data files, so try to get tests working
without it as far as possible.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Use _rm_test_img for deleting test images
Max Reitz [Thu, 7 Nov 2019 16:37:01 +0000 (17:37 +0100)]
iotests: Use _rm_test_img for deleting test images

Just rm will not delete external data files.  Use _rm_test_img every
time we delete a test image.

(In the process, clean up the indentation of every _cleanup() this patch
touches.)

((Also, use quotes consistently.  I am happy to see unquoted instances
like "rm -rf $TEST_DIR/..." go.))

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Avoid qemu-img create
Max Reitz [Thu, 7 Nov 2019 16:37:00 +0000 (17:37 +0100)]
iotests: Avoid qemu-img create

Use _make_test_img whenever possible.  This way, we will not ignore
user-specified image options.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Drop IMGOPTS use in 267
Max Reitz [Thu, 7 Nov 2019 16:36:59 +0000 (17:36 +0100)]
iotests: Drop IMGOPTS use in 267

Overwriting IMGOPTS means ignoring all user-supplied options, which is
not what we want.  Replace the current IMGOPTS use by a new BACKING_FILE
variable.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Replace IMGOPTS='' by --no-opts
Max Reitz [Thu, 7 Nov 2019 16:36:58 +0000 (17:36 +0100)]
iotests: Replace IMGOPTS='' by --no-opts

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Replace IMGOPTS= by -o
Max Reitz [Thu, 7 Nov 2019 16:36:57 +0000 (17:36 +0100)]
iotests: Replace IMGOPTS= by -o

Tests should not overwrite all user-supplied image options, but only add
to it (which will effectively overwrite conflicting values).  Accomplish
this by passing options to _make_test_img via -o instead of $IMGOPTS.

For some tests, there is no functional change because they already only
appended options to IMGOPTS.  For these, this patch is just a
simplification.

For others, this is a change, so they now heed user-specified $IMGOPTS.
Some of those tests do not work with all image options, though, so we
need to disable them accordingly.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Inject space into -ocompat=0.10 in 051
Max Reitz [Thu, 7 Nov 2019 16:36:56 +0000 (17:36 +0100)]
iotests: Inject space into -ocompat=0.10 in 051

It did not matter before, but now that _make_test_img understands -o, we
should use it properly here.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Add -o and --no-opts to _make_test_img
Max Reitz [Thu, 7 Nov 2019 16:36:55 +0000 (17:36 +0100)]
iotests: Add -o and --no-opts to _make_test_img

Blindly overriding IMGOPTS is suboptimal as this discards user-specified
options.  Whatever options the test needs should simply be appended.

Some tests do this (with IMGOPTS=$(_optstr_add "$IMGOPTS" "...")), but
that is cumbersome.  It’s simpler to just give _make_test_img an -o
parameter with which tests can add options.

Some tests actually must override the user-specified options, though,
for example when creating an image in a different format than the test
$IMGFMT.  For such cases, --no-opts allows clearing the current option
list.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Let _make_test_img parse its parameters
Max Reitz [Thu, 7 Nov 2019 16:36:54 +0000 (17:36 +0100)]
iotests: Let _make_test_img parse its parameters

This will allow us to add more options than just -b.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Drop compat=1.1 in 050
Max Reitz [Thu, 7 Nov 2019 16:36:53 +0000 (17:36 +0100)]
iotests: Drop compat=1.1 in 050

IMGOPTS can never be empty for qcow2, because the check scripts adds
compat=1.1 unless the user specified any compat option themselves.
Thus, this block does not do anything and can be dropped.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Replace IMGOPTS by _unsupported_imgopts
Max Reitz [Thu, 7 Nov 2019 16:36:52 +0000 (17:36 +0100)]
iotests: Replace IMGOPTS by _unsupported_imgopts

Some tests require compat=1.1 and thus set IMGOPTS='compat=1.1'
globally.  That is not how it should be done; instead, they should
simply set _unsupported_imgopts to compat=0.10 (compat=1.1 is the
default anyway).

This makes the tests heed user-specified $IMGOPTS.  Some do not work
with all image options, though, so we need to disable them accordingly.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Filter refcount_order in 036
Max Reitz [Thu, 7 Nov 2019 16:36:51 +0000 (17:36 +0100)]
iotests: Filter refcount_order in 036

This test can run just fine with other values for refcount_bits, so we
should filter the value from qcow2.py's dump-header.  In fact, we can
filter everything but the feature bits and header extensions, because
that is what the test is about.

(036 currently ignores user-specified image options, but that will be
fixed in the next patch.)

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Add _filter_json_filename
Max Reitz [Thu, 7 Nov 2019 16:36:50 +0000 (17:36 +0100)]
iotests: Add _filter_json_filename

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests/qcow2.py: Split feature fields into bits
Max Reitz [Thu, 7 Nov 2019 16:36:49 +0000 (17:36 +0100)]
iotests/qcow2.py: Split feature fields into bits

Print the feature fields as a set of bits so that filtering is easier.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests/qcow2.py: Add dump-header-exts
Max Reitz [Thu, 7 Nov 2019 16:36:48 +0000 (17:36 +0100)]
iotests/qcow2.py: Add dump-header-exts

This is useful for tests that want to whitelist fields from dump-header
(with grep) but still print all header extensions.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Message-id: 20191107163708[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: s/qocw2/qcow2/
Max Reitz [Thu, 7 Nov 2019 16:36:47 +0000 (17:36 +0100)]
iotests: s/qocw2/qcow2/

Probably due to blind copy-pasting, we have several instances of "qocw2"
in our iotests.  Fix them.

Reported-by: Maxim Levitsky <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
Message-id: 20191107163708[email protected]
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Maxim Levitsky <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
5 years agoqcow2-bitmaps: fix qcow2_can_store_new_dirty_bitmap
Vladimir Sementsov-Ogievskiy [Mon, 14 Oct 2019 11:51:25 +0000 (14:51 +0300)]
qcow2-bitmaps: fix qcow2_can_store_new_dirty_bitmap

qcow2_can_store_new_dirty_bitmap works wrong, as it considers only
bitmaps already stored in the qcow2 image and ignores persistent
BdrvDirtyBitmap objects.

So, let's instead count persistent BdrvDirtyBitmaps. We load all qcow2
bitmaps on open, so there should not be any bitmap in the image for
which we don't have BdrvDirtyBitmaps version. If it is - it's a kind of
corruption, and no reason to check for corruptions here (open() and
close() are better places for it).

Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Message-id: 20191014115126[email protected]
Reviewed-by: Max Reitz <[email protected]>
Cc: [email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agothrottle-groups: fix memory leak in throttle_group_set_limit:
PanNengyuan [Wed, 27 Nov 2019 06:20:14 +0000 (14:20 +0800)]
throttle-groups: fix memory leak in throttle_group_set_limit:

This avoid a memory leak when qom-set is called to set throttle_group
limits, here is an easy way to reproduce:

1. run qemu-iotests as follow and check the result with asan:
       ./check -qcow2 184

Following is the asan output backtrack:
Direct leak of 912 byte(s) in 3 object(s) allocated from:
    #0 0xffff8d7ab3c3 in __interceptor_calloc   (/lib64/libasan.so.4+0xd33c3)
    #1 0xffff8d4c31cb in g_malloc0   (/lib64/libglib-2.0.so.0+0x571cb)
    #2 0x190c857 in qobject_input_start_struct  /mnt/sdc/qemu-master/qemu-4.2.0-rc0/qapi/qobject-input-visitor.c:295
    #3 0x19070df in visit_start_struct   /mnt/sdc/qemu-master/qemu-4.2.0-rc0/qapi/qapi-visit-core.c:49
    #4 0x1948b87 in visit_type_ThrottleLimits   qapi/qapi-visit-block-core.c:3759
    #5 0x17e4aa3 in throttle_group_set_limits   /mnt/sdc/qemu-master/qemu-4.2.0-rc0/block/throttle-groups.c:900
    #6 0x1650eff in object_property_set     /mnt/sdc/qemu-master/qemu-4.2.0-rc0/qom/object.c:1272
    #7 0x1658517 in object_property_set_qobject   /mnt/sdc/qemu-master/qemu-4.2.0-rc0/qom/qom-qobject.c:26
    #8 0x15880bb in qmp_qom_set  /mnt/sdc/qemu-master/qemu-4.2.0-rc0/qom/qom-qmp-cmds.c:74
    #9 0x157e3e3 in qmp_marshal_qom_set  qapi/qapi-commands-qom.c:154

Reported-by: Euler Robot <[email protected]>
Signed-off-by: PanNengyuan <[email protected]>
Message-id: 1574835614[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Add test for failing mirror complete
Max Reitz [Fri, 8 Nov 2019 12:34:55 +0000 (13:34 +0100)]
iotests: Add test for failing mirror complete

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Tested-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Reviewed-by: John Snow <[email protected]>
Message-id: 20191108123455[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoiotests: Add @error to wait_until_completed
Max Reitz [Fri, 8 Nov 2019 12:34:54 +0000 (13:34 +0100)]
iotests: Add @error to wait_until_completed

Callers can use this new parameter to expect failure during the
completion process.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: John Snow <[email protected]>
Reviewed-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Message-id: 20191108123455[email protected]
Signed-off-by: Max Reitz <[email protected]>
5 years agoblkdebug: Allow taking/unsharing permissions
Max Reitz [Fri, 8 Nov 2019 12:34:53 +0000 (13:34 +0100)]
blkdebug: Allow taking/unsharing permissions

Sometimes it is useful to be able to add a node to the block graph that
takes or unshare a certain set of permissions for debugging purposes.
This patch adds this capability to blkdebug.

(Note that you cannot make blkdebug release or share permissions that it
needs to take or cannot share, because this might result in assertion
failures in the block layer.  But if the blkdebug node has no parents,
it will not take any permissions and share everything by default, so you
can then freely choose what permissions to take and share.)

Signed-off-by: Max Reitz <[email protected]>
Message-id: 20191108123455[email protected]
Reviewed-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
5 years agoblock: Use bdrv_qapi_perm_to_blk_perm()
Max Reitz [Fri, 8 Nov 2019 12:34:52 +0000 (13:34 +0100)]
block: Use bdrv_qapi_perm_to_blk_perm()

We can save some LoC in xdbg_graph_add_edge() by using
bdrv_qapi_perm_to_blk_perm().

Signed-off-by: Max Reitz <[email protected]>
Message-id: 20191108123455[email protected]
Reviewed-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
5 years agoblock: Add bdrv_qapi_perm_to_blk_perm()
Max Reitz [Fri, 8 Nov 2019 12:34:51 +0000 (13:34 +0100)]
block: Add bdrv_qapi_perm_to_blk_perm()

We need some way to correlate QAPI BlockPermission values with
BLK_PERM_* flags.  We could:

(1) have the same order in the QAPI definition as the the BLK_PERM_*
    flags are in LSb-first order.  However, then there is no guarantee
    that they actually match (e.g. when someone modifies the QAPI schema
    without thinking of the BLK_PERM_* definitions).
    We could add static assertions, but these would break what’s good
    about this solution, namely its simplicity.

(2) define the BLK_PERM_* flags based on the BlockPermission values.
    But this way whenever someone were to modify the QAPI order
    (perfectly sensible in theory), the BLK_PERM_* values would change.
    Because these values are used for file locking, this might break
    file locking between different qemu versions.

Therefore, go the slightly more cumbersome way: Add a function to
translate from the QAPI constants to the BLK_PERM_* flags.

Signed-off-by: Max Reitz <[email protected]>
Message-id: 20191108123455[email protected]
Reviewed-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
5 years agoMerge remote-tracking branch 'remotes/ehabkost/tags/python-next-pull-request' into...
Peter Maydell [Mon, 6 Jan 2020 11:39:55 +0000 (11:39 +0000)]
Merge remote-tracking branch 'remotes/ehabkost/tags/python-next-pull-request' into staging

Require Python >= 3.5 to build QEMU

Python 2 EOL is 11 days away, we will stop supporting
it in QEMU 5.0.

# gpg: Signature made Fri 20 Dec 2019 16:49:02 GMT
# gpg:                using RSA key 5A322FD5ABC4D3DBACCFD1AA2807936F984DC5A6
# gpg:                issuer "[email protected]"
# gpg: Good signature from "Eduardo Habkost <[email protected]>" [full]
# Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF  D1AA 2807 936F 984D C5A6

* remotes/ehabkost/tags/python-next-pull-request:
  configure: Require Python >= 3.5
  travis: Replace Python 3.4 build with 3.5

Signed-off-by: Peter Maydell <[email protected]>
5 years agoaudio: fix integer overflow
Volker Rümelin [Thu, 19 Dec 2019 20:34:05 +0000 (21:34 +0100)]
audio: fix integer overflow

Tell the compiler to do a 32bit * 32bit -> 64bit multiplication
because period_ticks is a 64bit variable. The overflow occurs
for audio timer periods larger than 4294967us.

Fixes: be1092afa0 "audio: fix audio timer rate conversion bug"
Signed-off-by: Volker Rümelin <[email protected]>
Message-id: 8893a235-66a8-8fbe-7d95-862e29da90b1@t-online.de
Signed-off-by: Gerd Hoffmann <[email protected]>
5 years agopaaudio: wait until the recording stream is ready
Volker Rümelin [Sat, 4 Jan 2020 09:11:22 +0000 (10:11 +0100)]
paaudio: wait until the recording stream is ready

Don't call pa_stream_peek before the recording stream is ready.

Information to reproduce the problem.

Start and stop Audacity in the guest several times because the
problem is racy.

libvirt log file:
-audiodev pa,id=audio0,server=localhost,out.latency=30000,
 out.mixing-engine=off,in.mixing-engine=off \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,
 resourcecontrol=deny \
-msg timestamp=on
: Domain id=4 is tainted: custom-argv
char device redirected to /dev/pts/1 (label charserial0)
audio: Device pcspk: audiodev default parameter is deprecated,
 please specify audiodev=audio0
audio: Device hda: audiodev default parameter is deprecated,
 please specify audiodev=audio0
pulseaudio: pa_stream_peek failed
pulseaudio: Reason: Bad state
pulseaudio: pa_stream_peek failed
pulseaudio: Reason: Bad state

Signed-off-by: Volker Rümelin <[email protected]>
Message-id: 20200104091122[email protected]
Signed-off-by: Gerd Hoffmann <[email protected]>
5 years agopaaudio: try to drain the recording stream
Volker Rümelin [Sat, 4 Jan 2020 09:11:21 +0000 (10:11 +0100)]
paaudio: try to drain the recording stream

There is no guarantee a single call to pa_stream_peek every
timer_period microseconds can read a recording stream faster
than the data gets produced at the source. Let qpa_read try to
drain the recording stream.

To reproduce the problem:

Start qemu with -audiodev pa,id=audio0,in.mixing-engine=off

On the host connect the qemu recording stream to the monitor of
a hardware output device. While the problem can also be seen
with a hardware input device, it's obvious with the monitor of
a hardware output device.

In the guest start audio recording with audacity and notice the
slow recording data rate.

Signed-off-by: Volker Rümelin <[email protected]>
Message-id: 20200104091122[email protected]
Signed-off-by: Gerd Hoffmann <[email protected]>
5 years agopaaudio: drop recording stream in qpa_fini_in
Volker Rümelin [Sat, 4 Jan 2020 09:11:20 +0000 (10:11 +0100)]
paaudio: drop recording stream in qpa_fini_in

Every call to pa_stream_peek which returns a data length > 0
should have a corresponding pa_stream_drop. A call to qpa_read
does not necessarily call pa_stream_drop immediately after a
call to pa_stream_peek. Test in qpa_fini_in if a last
pa_stream_drop is needed.

This prevents following messages in the libvirt log file after
a recording stream gets closed and a new one opened.

pulseaudio: pa_stream_drop failed
pulseaudio: Reason: Bad state
pulseaudio: pa_stream_drop failed
pulseaudio: Reason: Bad state

To reproduce start qemu with
-audiodev pa,id=audio0,in.mixing-engine=off
and in the guest start and stop Audacity several times.

Signed-off-by: Volker Rümelin <[email protected]>
Message-id: 20200104091122[email protected]
Signed-off-by: Gerd Hoffmann <[email protected]>
5 years agohda-codec: fix recording rate control
Volker Rümelin [Sat, 4 Jan 2020 09:11:19 +0000 (10:11 +0100)]
hda-codec: fix recording rate control

Apply previous commit to hda_audio_input_cb for the same
reasons.

Signed-off-by: Volker Rümelin <[email protected]>
Message-id: 20200104091122[email protected]
Signed-off-by: Gerd Hoffmann <[email protected]>
5 years agohda-codec: fix playback rate control
Volker Rümelin [Sat, 4 Jan 2020 09:11:18 +0000 (10:11 +0100)]
hda-codec: fix playback rate control

Since commit 1930616b98 "audio: make mixeng optional" the
function hda_audio_output_cb can no longer assume the function
parameter avail contains the free buffer size. With the playback
mixing-engine turned off this leads to a broken playback rate
control and playback buffer drops in regular intervals.

This patch moves down the rate calculation, so the correct
buffer fill level is used for the calculation.

Signed-off-by: Volker Rümelin <[email protected]>
Message-id: 20200104091122[email protected]
Signed-off-by: Gerd Hoffmann <[email protected]>
5 years agohw: fix using 4.2 compat in 5.0 machine types for i440fx/q35
Denis Plotnikov [Mon, 23 Dec 2019 07:28:56 +0000 (10:28 +0300)]
hw: fix using 4.2 compat in 5.0 machine types for i440fx/q35

5.0 machine type uses 4.2 compats. This seems to be incorrect, since
the latests machine type by now is 5.0 and it should use its own
compat or shouldn't use any relying on the defaults.
Seems, like this appeared because of some problems on merge/rebase.

Signed-off-by: Denis Plotnikov <[email protected]>
Message-Id: <20191223072856[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agovhost-user-scsi: reset the device if supported
Raphael Norwitz [Tue, 29 Oct 2019 21:38:03 +0000 (17:38 -0400)]
vhost-user-scsi: reset the device if supported

If the vhost-user-scsi backend supports the VHOST_USER_F_RESET_DEVICE
protocol feature, then the device can be reset when requested.

If this feature is not supported, do not try a reset as this will send
a VHOST_USER_RESET_OWNER that the backend is not expecting,
potentially putting into an inoperable state.

Signed-off-by: David Vrabel <[email protected]>
Signed-off-by: Raphael Norwitz <[email protected]>
Message-Id: <1572385083[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agovhost-user: add VHOST_USER_RESET_DEVICE to reset devices
Raphael Norwitz [Tue, 29 Oct 2019 21:38:02 +0000 (17:38 -0400)]
vhost-user: add VHOST_USER_RESET_DEVICE to reset devices

Add a VHOST_USER_RESET_DEVICE message which will reset the vhost user
backend. Disabling all rings, and resetting all internal state, ready
for the backend to be reinitialized.

A backend has to report it supports this features with the
VHOST_USER_PROTOCOL_F_RESET_DEVICE protocol feature bit. If it does
so, the new message is used instead of sending a RESET_OWNER which has
had inconsistent implementations.

Signed-off-by: David Vrabel <[email protected]>
Signed-off-by: Raphael Norwitz <[email protected]>
Message-Id: <1572385083[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agohw/pci/pci_host: Let pci_data_[read/write] use unsigned 'size' argument
Philippe Mathieu-Daudé [Mon, 16 Dec 2019 00:21:34 +0000 (01:21 +0100)]
hw/pci/pci_host: Let pci_data_[read/write] use unsigned 'size' argument

Both functions are called by MemoryRegionOps.[read/write] handlers
with unsigned 'size' argument. Both functions call
pci_host_config_[read/write]_common() which expect a uint32_t 'len'
parameter (also unsigned).
Since it is pointless (and confuse) to use a signed value, use a
unsigned type.

Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
Message-Id: <20191216002134[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agohw/pci/pci_host: Remove redundant PCI_DPRINTF()
Philippe Mathieu-Daudé [Mon, 16 Dec 2019 00:21:33 +0000 (01:21 +0100)]
hw/pci/pci_host: Remove redundant PCI_DPRINTF()

In commit 3bf4dfdd111 we introduced the pci_cfg_[read/write]
trace events in pci_host_config_[read/write]_common().
We have the following call trace:

  pci_host_data_[read/write]()
    - PCI_DPRINTF()
    - pci_data_[read/write]()
        - PCI_DPRINTF()
        - pci_host_config_[read/write]_common()
            trace_pci_cfg_[read/write]()

Since the PCI_DPRINTF() calls are redundant with the trace
events, remove them.

Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
Message-Id: <20191216002134[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agovirtio-mmio: Clear v2 transport state on soft reset
Jean-Philippe Brucker [Fri, 13 Dec 2019 09:54:10 +0000 (10:54 +0100)]
virtio-mmio: Clear v2 transport state on soft reset

At the moment when the guest writes a status of 0, we only reset the
virtio core state but not the virtio-mmio state. The virtio-mmio
specification says (v1.1 cs01, 4.2.2.1 Device Requirements:
MMIO Device Register Layout):

    Upon reset, the device MUST clear all bits in InterruptStatus and
    ready bits in the QueueReady register for all queues in the device.

The core already takes care of InterruptStatus by clearing isr, but we
still need to clear QueueReady.

It would be tempting to clean all registers, but since the specification
doesn't say anything more, guests could rely on the registers keeping
their state across reset. Linux for example, relies on this for
GuestPageSize in the legacy MMIO tranport.

Fixes: 44e687a4d9ab ("virtio-mmio: implement modern (v2) personality (virtio-1)")
Signed-off-by: Jean-Philippe Brucker <[email protected]>
Message-Id: <20191213095410.1516119[email protected]>
Reviewed-by: Sergio Lopez <[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agoACPI: add expected files for HMAT tests (acpihmat)
Michael S. Tsirkin [Thu, 19 Dec 2019 13:17:20 +0000 (08:17 -0500)]
ACPI: add expected files for HMAT tests (acpihmat)

Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agotests/bios-tables-test: add test cases for ACPI HMAT
Tao Xu [Fri, 13 Dec 2019 01:19:29 +0000 (09:19 +0800)]
tests/bios-tables-test: add test cases for ACPI HMAT

ACPI table HMAT has been introduced, QEMU now builds HMAT tables for
Heterogeneous Memory with boot option '-numa node'.

Add test cases on PC and Q35 machines with 2 numa nodes.
Because HMAT is generated when system enable numa, the
following tables need to be added for this test:
    tests/data/acpi/pc/APIC.acpihmat
    tests/data/acpi/pc/SRAT.acpihmat
    tests/data/acpi/pc/HMAT.acpihmat
    tests/data/acpi/pc/DSDT.acpihmat
    tests/data/acpi/q35/APIC.acpihmat
    tests/data/acpi/q35/SRAT.acpihmat
    tests/data/acpi/q35/HMAT.acpihmat
    tests/data/acpi/q35/DSDT.acpihmat

Acked-by: Markus Armbruster <[email protected]>
Reviewed-by: Igor Mammedov <[email protected]>
Reviewed-by: Daniel Black <[email protected]>
Reviewed-by: Jingqi Liu <[email protected]>
Suggested-by: Igor Mammedov <[email protected]>
Signed-off-by: Tao Xu <[email protected]>
Message-Id: <20191213011929[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agotests/numa: Add case for QMP build HMAT
Tao Xu [Fri, 13 Dec 2019 01:19:28 +0000 (09:19 +0800)]
tests/numa: Add case for QMP build HMAT

Check configuring HMAT usecase

Acked-by: Markus Armbruster <[email protected]>
Suggested-by: Igor Mammedov <[email protected]>
Signed-off-by: Tao Xu <[email protected]>
Message-Id: <20191213011929[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Igor Mammedov <[email protected]>
5 years agohmat acpi: Build Memory Side Cache Information Structure(s)
Liu Jingqi [Fri, 13 Dec 2019 01:19:27 +0000 (09:19 +0800)]
hmat acpi: Build Memory Side Cache Information Structure(s)

This structure describes memory side cache information for memory
proximity domains if the memory side cache is present and the
physical device forms the memory side cache.
The software could use this information to effectively place
the data in memory to maximize the performance of the system
memory that use the memory side cache.

Acked-by: Markus Armbruster <[email protected]>
Reviewed-by: Igor Mammedov <[email protected]>
Reviewed-by: Daniel Black <[email protected]>
Reviewed-by: Jonathan Cameron <[email protected]>
Signed-off-by: Liu Jingqi <[email protected]>
Signed-off-by: Tao Xu <[email protected]>
Message-Id: <20191213011929[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agohmat acpi: Build System Locality Latency and Bandwidth Information Structure(s)
Liu Jingqi [Fri, 13 Dec 2019 01:19:26 +0000 (09:19 +0800)]
hmat acpi: Build System Locality Latency and Bandwidth Information Structure(s)

This structure describes the memory access latency and bandwidth
information from various memory access initiator proximity domains.
The latency and bandwidth numbers represented in this structure
correspond to rated latency and bandwidth for the platform.
The software could use this information as hint for optimization.

Acked-by: Markus Armbruster <[email protected]>
Reviewed-by: Igor Mammedov <[email protected]>
Signed-off-by: Liu Jingqi <[email protected]>
Signed-off-by: Tao Xu <[email protected]>
Message-Id: <20191213011929[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agohmat acpi: Build Memory Proximity Domain Attributes Structure(s)
Liu Jingqi [Fri, 13 Dec 2019 01:19:25 +0000 (09:19 +0800)]
hmat acpi: Build Memory Proximity Domain Attributes Structure(s)

HMAT is defined in ACPI 6.3: 5.2.27 Heterogeneous Memory Attribute Table
(HMAT). The specification references below link:
http://www.uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf

It describes the memory attributes, such as memory side cache
attributes and bandwidth and latency details, related to the
Memory Proximity Domain. The software is
expected to use this information as hint for optimization.

This structure describes Memory Proximity Domain Attributes by memory
subsystem and its associativity with processor proximity domain as well as
hint for memory usage.

In the linux kernel, the codes in drivers/acpi/hmat/hmat.c parse and report
the platform's HMAT tables.

Acked-by: Markus Armbruster <[email protected]>
Reviewed-by: Igor Mammedov <[email protected]>
Reviewed-by: Daniel Black <[email protected]>
Reviewed-by: Jonathan Cameron <[email protected]>
Signed-off-by: Liu Jingqi <[email protected]>
Signed-off-by: Tao Xu <[email protected]>
Message-Id: <20191213011929[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
5 years agonuma: Extend CLI to provide memory side cache information
Liu Jingqi [Fri, 13 Dec 2019 01:19:24 +0000 (09:19 +0800)]
numa: Extend CLI to provide memory side cache information

Add -numa hmat-cache option to provide Memory Side Cache Information.
These memory attributes help to build Memory Side Cache Information
Structure(s) in ACPI Heterogeneous Memory Attribute Table (HMAT).
Before using hmat-cache option, enable HMAT with -machine hmat=on.

Acked-by: Markus Armbruster <[email protected]>
Signed-off-by: Liu Jingqi <[email protected]>
Signed-off-by: Tao Xu <[email protected]>
Message-Id: <20191213011929[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Igor Mammedov <[email protected]>
5 years agonuma: Extend CLI to provide memory latency and bandwidth information
Liu Jingqi [Fri, 13 Dec 2019 01:19:23 +0000 (09:19 +0800)]
numa: Extend CLI to provide memory latency and bandwidth information

Add -numa hmat-lb option to provide System Locality Latency and
Bandwidth Information. These memory attributes help to build
System Locality Latency and Bandwidth Information Structure(s)
in ACPI Heterogeneous Memory Attribute Table (HMAT). Before using
hmat-lb option, enable HMAT with -machine hmat=on.

Acked-by: Markus Armbruster <[email protected]>
Signed-off-by: Liu Jingqi <[email protected]>
Signed-off-by: Tao Xu <[email protected]>
Message-Id: <20191213011929[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Igor Mammedov <[email protected]>
This page took 0.0969139999999999 seconds and 4 git commands to generate.