]> Git Repo - qemu.git/log
qemu.git
6 years agoMerge remote-tracking branch 'remotes/ehabkost/tags/x86-next-pull-request' into staging
Peter Maydell [Thu, 17 May 2018 08:57:55 +0000 (09:57 +0100)]
Merge remote-tracking branch 'remotes/ehabkost/tags/x86-next-pull-request' into staging

x86 queue, 2018-05-15

* KnightsMill CPU model
* CLDEMOTE(Demote Cache Line) cpu feature
* pc-i440fx-2.13 and pc-q35-2.13 machine-types
* Add model-specific cache information to EPYC CPU model

# gpg: Signature made Tue 15 May 2018 22:53:12 BST
# gpg:                using RSA key 2807936F984DC5A6
# gpg: Good signature from "Eduardo Habkost <[email protected]>"
# Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF  D1AA 2807 936F 984D C5A6

* remotes/ehabkost/tags/x86-next-pull-request:
  i386: Add new property to control cache info
  pc: add 2.13 machine types
  i386: Initialize cache information for EPYC family processors
  i386: Add cache information in X86CPUDefinition
  i386: Helpers to encode cache information consistently
  x86/cpu: Enable CLDEMOTE(Demote Cache Line) cpu feature
  i386: add KnightsMill cpu model

Signed-off-by: Peter Maydell <[email protected]>
6 years agoMerge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
Peter Maydell [Tue, 15 May 2018 16:02:00 +0000 (17:02 +0100)]
Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging

Block layer patches:

- Switch AIO/callback based block drivers to a byte-based interface
- Block jobs: Expose error string via query-block-jobs
- Block job cleanups and fixes
- hmp: Allow using a qdev id in block_set_io_throttle

# gpg: Signature made Tue 15 May 2018 16:33:10 BST
# gpg:                using RSA key 7F09B272C88F2FD6
# gpg: Good signature from "Kevin Wolf <[email protected]>"
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6

* remotes/kevin/tags/for-upstream: (37 commits)
  iotests: Add test for -U/force-share conflicts
  qemu-img: Use only string options in img_open_opts
  qemu-io: Use purely string blockdev options
  block: Document BDRV_REQ_WRITE_UNCHANGED support
  qemu-img: Check post-truncation size
  iotests: Add test for COR across nodes
  iotests: Copy 197 for COR filter driver
  iotests: Clean up wrap image in 197
  block: Support BDRV_REQ_WRITE_UNCHANGED in filters
  block/quorum: Support BDRV_REQ_WRITE_UNCHANGED
  block: Set BDRV_REQ_WRITE_UNCHANGED for COR writes
  block: Add BDRV_REQ_WRITE_UNCHANGED flag
  block: BLK_PERM_WRITE includes ..._UNCHANGED
  block: Add COR filter driver
  iotests: Skip 181 and 201 without userfaultfd
  iotests: Add failure matching to common.qemu
  docs: Document the new default sizes of the qcow2 caches
  qcow2: Give the refcount cache the minimum possible size by default
  specs/qcow2: Clarify that compressed clusters have the COPIED bit reset
  Fix error message about compressed clusters with OFLAG_COPIED
  ...

Signed-off-by: Peter Maydell <[email protected]>
6 years agoi386: Add new property to control cache info
Babu Moger [Mon, 14 May 2018 16:41:51 +0000 (11:41 -0500)]
i386: Add new property to control cache info

The property legacy-cache will be used to control the cache information.
If user passes "-cpu legacy-cache" then older information will
be displayed even if the hardware supports new information. Otherwise
use the statically loaded cache definitions if available.

Renamed the previous cache structures to legacy_*. If there is any change in
the cache information, then it needs to be initialized in builtin_x86_defs.

Signed-off-by: Babu Moger <[email protected]>
Tested-by: Geoffrey McRae <[email protected]>
Message-Id: <20180514164156[email protected]>
Reviewed-by: Eduardo Habkost <[email protected]>
Signed-off-by: Eduardo Habkost <[email protected]>
6 years agopc: add 2.13 machine types
Babu Moger [Mon, 14 May 2018 16:41:50 +0000 (11:41 -0500)]
pc: add 2.13 machine types

Add pc-q35-2.13 and pc-i440fx-2.13 machine types

Signed-off-by: Babu Moger <[email protected]>
Message-Id: <20180514164156[email protected]>
Reviewed-by: Eduardo Habkost <[email protected]>
Signed-off-by: Eduardo Habkost <[email protected]>
6 years agoi386: Initialize cache information for EPYC family processors
Babu Moger [Thu, 10 May 2018 20:41:44 +0000 (15:41 -0500)]
i386: Initialize cache information for EPYC family processors

Initialize pre-determined cache information for EPYC processors.

Signed-off-by: Babu Moger <[email protected]>
Tested-by: Geoffrey McRae <[email protected]>
Message-Id: <20180510204148[email protected]>
Signed-off-by: Eduardo Habkost <[email protected]>
6 years agoi386: Add cache information in X86CPUDefinition
Babu Moger [Thu, 10 May 2018 20:41:42 +0000 (15:41 -0500)]
i386: Add cache information in X86CPUDefinition

Add cache information in X86CPUDefinition and CPUX86State.

Signed-off-by: Babu Moger <[email protected]>
Tested-by: Geoffrey McRae <[email protected]>
Reviewed-by: Eduardo Habkost <[email protected]>
Message-Id: <20180510204148[email protected]>
Signed-off-by: Eduardo Habkost <[email protected]>
6 years agoi386: Helpers to encode cache information consistently
Eduardo Habkost [Thu, 10 May 2018 20:41:41 +0000 (15:41 -0500)]
i386: Helpers to encode cache information consistently

Instead of having a collection of macros that need to be used in
complex expressions to build CPUID data, define a CPUCacheInfo
struct that can hold information about a given cache.  Helper
functions will take a CPUCacheInfo struct as input to encode
CPUID leaves for a cache.

This will help us ensure consistency between cache information
CPUID leaves, and make the existing inconsistencies in CPUID info
more visible.

Signed-off-by: Eduardo Habkost <[email protected]>
Signed-off-by: Babu Moger <[email protected]>
Tested-by: Geoffrey McRae <[email protected]>
Message-Id: <20180510204148[email protected]>
Signed-off-by: Eduardo Habkost <[email protected]>
6 years agox86/cpu: Enable CLDEMOTE(Demote Cache Line) cpu feature
Jingqi Liu [Fri, 4 May 2018 03:57:33 +0000 (11:57 +0800)]
x86/cpu: Enable CLDEMOTE(Demote Cache Line) cpu feature

The CLDEMOTE instruction hints to hardware that the cache line that
contains the linear address should be moved("demoted") from
the cache(s) closest to the processor core to a level more distant
from the processor core. This may accelerate subsequent accesses
to the line by other cores in the same coherence domain,
especially if the line was written by the core that demotes the line.

Intel Snow Ridge has added new cpu feature, CLDEMOTE.
The new cpu feature needs to be exposed to guest VM.

The bit definition:
CPUID.(EAX=7,ECX=0):ECX[bit 25] CLDEMOTE

The release document ref below link:
https://software.intel.com/sites/default/files/managed/c5/15/\
architecture-instruction-set-extensions-programming-reference.pdf

Signed-off-by: Jingqi Liu <[email protected]>
Message-Id: <1525406253[email protected]>
Reviewed-by: Eduardo Habkost <[email protected]>
Signed-off-by: Eduardo Habkost <[email protected]>
6 years agoi386: add KnightsMill cpu model
Boqun Feng [Tue, 20 Mar 2018 00:08:15 +0000 (08:08 +0800)]
i386: add KnightsMill cpu model

A new cpu model called "KnightsMill" is added to model Knights Mill
processors.  Compared to "Skylake-Server" cpu model, the following
features are added:

avx512_4vnniw avx512_4fmaps avx512pf avx512er avx512_vpopcntdq

and the following features are removed:

pcid invpcid clflushopt avx512dq avx512bw clwb smap rtm mpx
xsavec xgetbv1 hle

Signed-off-by: Boqun Feng <[email protected]>
Message-Id: <20180320000821[email protected]>
Signed-off-by: Eduardo Habkost <[email protected]>
6 years agoMerge remote-tracking branch 'mreitz/tags/pull-block-2018-05-15' into queue-block
Kevin Wolf [Tue, 15 May 2018 14:19:53 +0000 (16:19 +0200)]
Merge remote-tracking branch 'mreitz/tags/pull-block-2018-05-15' into queue-block

- Copy-on-read block driver
- The qcow2 default refcount cache size has been decreased
- Various bug fixes

# gpg: Signature made Tue May 15 16:18:25 2018 CEST
# gpg:                using RSA key F407DB0061D5CF40
# gpg: Good signature from "Max Reitz <[email protected]>"
# Primary key fingerprint: 91BE B60A 30DB 3E88 57D1  1829 F407 DB00 61D5 CF40

* mreitz/tags/pull-block-2018-05-15: (21 commits)
  iotests: Add test for -U/force-share conflicts
  qemu-img: Use only string options in img_open_opts
  qemu-io: Use purely string blockdev options
  block: Document BDRV_REQ_WRITE_UNCHANGED support
  qemu-img: Check post-truncation size
  iotests: Add test for COR across nodes
  iotests: Copy 197 for COR filter driver
  iotests: Clean up wrap image in 197
  block: Support BDRV_REQ_WRITE_UNCHANGED in filters
  block/quorum: Support BDRV_REQ_WRITE_UNCHANGED
  block: Set BDRV_REQ_WRITE_UNCHANGED for COR writes
  block: Add BDRV_REQ_WRITE_UNCHANGED flag
  block: BLK_PERM_WRITE includes ..._UNCHANGED
  block: Add COR filter driver
  iotests: Skip 181 and 201 without userfaultfd
  iotests: Add failure matching to common.qemu
  docs: Document the new default sizes of the qcow2 caches
  qcow2: Give the refcount cache the minimum possible size by default
  specs/qcow2: Clarify that compressed clusters have the COPIED bit reset
  Fix error message about compressed clusters with OFLAG_COPIED
  ...

Signed-off-by: Kevin Wolf <[email protected]>
6 years agoiotests: Add test for -U/force-share conflicts
Max Reitz [Wed, 2 May 2018 20:20:51 +0000 (22:20 +0200)]
iotests: Add test for -U/force-share conflicts

Signed-off-by: Max Reitz <[email protected]>
Message-id: 20180502202051[email protected]
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
6 years agoqemu-img: Use only string options in img_open_opts
Max Reitz [Wed, 2 May 2018 20:20:50 +0000 (22:20 +0200)]
qemu-img: Use only string options in img_open_opts

img_open_opts() takes a QemuOpts and converts them to a QDict, so all
values therein are strings.  Then it may try to call qdict_get_bool(),
however, which will fail with a segmentation fault every time:

$ ./qemu-img info -U --image-opts \
    driver=file,filename=/dev/null,force-share=off
[1]    27869 segmentation fault (core dumped)  ./qemu-img info -U
--image-opts driver=file,filename=/dev/null,force-share=off

Fix this by using qdict_get_str() and comparing the value as a string.
Also, when adding a force-share value to the QDict, add it as a string
so it fits the rest of the dict.

Cc: [email protected]
Signed-off-by: Max Reitz <[email protected]>
Message-id: 20180502202051[email protected]
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
6 years agoqemu-io: Use purely string blockdev options
Max Reitz [Wed, 2 May 2018 20:20:49 +0000 (22:20 +0200)]
qemu-io: Use purely string blockdev options

Currently, qemu-io only uses string-valued blockdev options (as all are
converted directly from QemuOpts) -- with one exception: -U adds the
force-share option as a boolean.  This in itself is already a bit
questionable, but a real issue is that it also assumes the value already
existing in the options QDict would be a boolean, which is wrong.

That has the following effect:

$ ./qemu-io -r -U --image-opts \
    driver=file,filename=/dev/null,force-share=off
[1]    15200 segmentation fault (core dumped)  ./qemu-io -r -U
--image-opts driver=file,filename=/dev/null,force-share=off

Since @opts is converted from QemuOpts, the value must be a string, and
we have to compare it as such.  Consequently, it makes sense to also set
it as a string instead of a boolean.

Cc: [email protected]
Signed-off-by: Max Reitz <[email protected]>
Message-id: 20180502202051[email protected]
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
6 years agoblock: Document BDRV_REQ_WRITE_UNCHANGED support
Max Reitz [Wed, 2 May 2018 14:03:59 +0000 (16:03 +0200)]
block: Document BDRV_REQ_WRITE_UNCHANGED support

Add BDRV_REQ_WRITE_UNCHANGED to the list of flags honored during pwrite
and pwrite_zeroes, and also add a note on when you absolutely need to
support it.

Signed-off-by: Max Reitz <[email protected]>
Message-id: 20180502140359[email protected]
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
6 years agoqemu-img: Check post-truncation size
Max Reitz [Sat, 21 Apr 2018 16:39:57 +0000 (18:39 +0200)]
qemu-img: Check post-truncation size

Some block drivers (iscsi and file-posix when dealing with device files)
do not actually support truncation, even though they provide a
.bdrv_truncate() method and will happily return success when providing a
new size that does not exceed the current size.  This is because these
drivers expect the user to resize the image outside of qemu and then
provide qemu with that information through the block_resize command
(compare cb1b83e740384b4e0d950f3d7c81c02b8ce86c2e).

Of course, anyone using qemu-img resize will find that behavior useless.
So we should check the actual size of the image after the supposedly
successful truncation took place, emit an error if nothing changed and
emit a warning if the target size was not met.

Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1523065
Signed-off-by: Max Reitz <[email protected]>
Message-id: 20180421163957[email protected]
Reviewed-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
6 years agoiotests: Add test for COR across nodes
Max Reitz [Sat, 21 Apr 2018 13:29:29 +0000 (15:29 +0200)]
iotests: Add test for COR across nodes

COR across nodes (that is, you have some filter node between the
actually COR target and the node that performs the COR) cannot reliably
work together with the permission system when there is no explicit COR
node that can request the WRITE_UNCHANGED permission for its child.
This is because COR (currently) sneaks its requests by the usual
permission checks, so it can work without a WRITE* permission; but if
there is a filter node in between, that will re-issue the request, which
then passes through the usual check -- and if nobody has requested a
WRITE_UNCHANGED permission, that check will fail.

There is no real direct fix apart from hoping that there is someone who
has requested that permission; in case of just the qemu-io HMP command
(and no guest device), however, that is not the case.  The real real fix
is to implement the copy-on-read flag through an implicitly added COR
node.  Such a node can request the necessary permissions as shown in
this test.

Signed-off-by: Max Reitz <[email protected]>
Message-id: 20180421132929[email protected]
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
6 years agoiotests: Copy 197 for COR filter driver
Max Reitz [Sat, 21 Apr 2018 13:29:28 +0000 (15:29 +0200)]
iotests: Copy 197 for COR filter driver

iotest 197 tests copy-on-read using the (now old) copy-on-read flag.
Copy it to 215 and modify it to use the COR filter driver instead.

Signed-off-by: Max Reitz <[email protected]>
Message-id: 20180421132929[email protected]
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
6 years agoiotests: Clean up wrap image in 197
Max Reitz [Sat, 21 Apr 2018 13:29:27 +0000 (15:29 +0200)]
iotests: Clean up wrap image in 197

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Alberto Garcia <[email protected]>
Message-id: 20180421132929[email protected]
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
6 years agoblock: Support BDRV_REQ_WRITE_UNCHANGED in filters
Max Reitz [Sat, 21 Apr 2018 13:29:26 +0000 (15:29 +0200)]
block: Support BDRV_REQ_WRITE_UNCHANGED in filters

Update the rest of the filter drivers to support
BDRV_REQ_WRITE_UNCHANGED.  They already forward write request flags to
their children, so we just have to announce support for it.

This patch does not cover the replication driver because that currently
does not support flags at all, and because it just grabs the WRITE
permission for its children when it can, so we should be fine just
submitting the incoming WRITE_UNCHANGED requests as normal writes.

It also does not cover format drivers for similar reasons.  They all use
bdrv_format_default_perms() as their .bdrv_child_perm() implementation
so they just always grab the WRITE permission for their file children
whenever possible.  In addition, it often would be difficult to
ascertain whether incoming unchanging writes end up as unchanging writes
in their files.  So we just leave them as normal potentially changing
writes.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Alberto Garcia <[email protected]>
Message-id: 20180421132929[email protected]
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
6 years agoblock/quorum: Support BDRV_REQ_WRITE_UNCHANGED
Max Reitz [Sat, 21 Apr 2018 13:29:25 +0000 (15:29 +0200)]
block/quorum: Support BDRV_REQ_WRITE_UNCHANGED

We just need to forward it to quorum's children (except in case of a
rewrite because of corruption), but for that we first have to support
flags in child requests at all.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Alberto Garcia <[email protected]>
Message-id: 20180421132929[email protected]
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
6 years agoblock: Set BDRV_REQ_WRITE_UNCHANGED for COR writes
Max Reitz [Sat, 21 Apr 2018 13:29:24 +0000 (15:29 +0200)]
block: Set BDRV_REQ_WRITE_UNCHANGED for COR writes

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Alberto Garcia <[email protected]>
Message-id: 20180421132929[email protected]
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
6 years agoblock: Add BDRV_REQ_WRITE_UNCHANGED flag
Max Reitz [Sat, 21 Apr 2018 13:29:23 +0000 (15:29 +0200)]
block: Add BDRV_REQ_WRITE_UNCHANGED flag

This flag signifies that a write request will not change the visible
disk content.  With this flag set, it is sufficient to have the
BLK_PERM_WRITE_UNCHANGED permission instead of BLK_PERM_WRITE.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Alberto Garcia <[email protected]>
Message-id: 20180421132929[email protected]
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
6 years agoblock: BLK_PERM_WRITE includes ..._UNCHANGED
Max Reitz [Sat, 21 Apr 2018 13:29:22 +0000 (15:29 +0200)]
block: BLK_PERM_WRITE includes ..._UNCHANGED

Currently we never actually check whether the WRITE_UNCHANGED
permission has been taken for unchanging writes.  But the one check that
is commented out checks both WRITE and WRITE_UNCHANGED; and considering
that WRITE_UNCHANGED is already documented as being weaker than WRITE,
we should probably explicitly document WRITE to include WRITE_UNCHANGED.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Alberto Garcia <[email protected]>
Message-id: 20180421132929[email protected]
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
6 years agoblock: Add COR filter driver
Max Reitz [Sat, 21 Apr 2018 13:29:21 +0000 (15:29 +0200)]
block: Add COR filter driver

This adds a simple copy-on-read filter driver.  It relies on the already
existing COR functionality in the central block layer code, which may be
moved here once we no longer need it there.

Signed-off-by: Max Reitz <[email protected]>
Message-id: 20180421132929[email protected]
Reviewed-by: Alberto Garcia <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
6 years agoiotests: Skip 181 and 201 without userfaultfd
Max Reitz [Fri, 6 Apr 2018 15:17:31 +0000 (17:17 +0200)]
iotests: Skip 181 and 201 without userfaultfd

userfaultfd support depends on the host kernel, so it may not be
available.  If so, 181 and 201 should be skipped.

Signed-off-by: Max Reitz <[email protected]>
Message-id: 20180406151731[email protected]
Signed-off-by: Max Reitz <[email protected]>
6 years agoiotests: Add failure matching to common.qemu
Max Reitz [Fri, 6 Apr 2018 15:17:30 +0000 (17:17 +0200)]
iotests: Add failure matching to common.qemu

Currently, common.qemu only allows to match for results indicating
success.  The only way to fail is by provoking a timeout.  However,
sometimes we do have a defined failure output and can match for that,
which saves us from having to wait for the timeout in case of failure.
Because failure can sometimes just result in a _notrun in the test, it
is actually important to care about being able to fail quickly.

Also, sometimes we simply do not get any specific output in case of
success.  The only way to handle this currently would be to define an
error message as the string to look for, which means that actual success
results in a timeout.  This is really bad because it unnecessarily slows
down a succeeding test.

Therefore, this patch adds a new parameter $success_or_failure to
_timed_wait_for and _send_qemu_cmd.  Setting this to a non-empty string
makes both commands expect two match parameters: If the first matches,
the function succeeds.  If the second matches, the function fails.

Signed-off-by: Max Reitz <[email protected]>
Message-id: 20180406151731[email protected]
Signed-off-by: Max Reitz <[email protected]>
6 years agodocs: Document the new default sizes of the qcow2 caches
Alberto Garcia [Tue, 17 Apr 2018 12:37:05 +0000 (15:37 +0300)]
docs: Document the new default sizes of the qcow2 caches

We have just reduced the refcount cache size to the minimum unless
the user explicitly requests a larger one, so we have to update the
documentation to reflect this change.

Signed-off-by: Alberto Garcia <[email protected]>
Message-id: c5f0bde23558dd9d33b21fffc76ac9953cc19c56.1523968389[email protected]
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
6 years agoqcow2: Give the refcount cache the minimum possible size by default
Alberto Garcia [Tue, 17 Apr 2018 12:37:04 +0000 (15:37 +0300)]
qcow2: Give the refcount cache the minimum possible size by default

The L2 and refcount caches have default sizes that can be overridden
using the l2-cache-size and refcount-cache-size (an additional
parameter named cache-size sets the combined size of both caches).

Unless forced by one of the aforementioned parameters, QEMU will set
the unspecified sizes so that the L2 cache is 4 times larger than the
refcount cache.

This is based on the premise that the refcount metadata needs to be
only a fourth of the L2 metadata to cover the same amount of disk
space. This is incorrect for two reasons:

 a) The amount of disk covered by an L2 table depends solely on the
    cluster size, but in the case of a refcount block it depends on
    the cluster size *and* the width of each refcount entry.
    The 4/1 ratio is only valid with 16-bit entries (the default).

 b) When we talk about disk space and L2 tables we are talking about
    guest space (L2 tables map guest clusters to host clusters),
    whereas refcount blocks are used for host clusters (including
    L1/L2 tables and the refcount blocks themselves). On a fully
    populated (and uncompressed) qcow2 file, image size > virtual size
    so there are more refcount entries than L2 entries.

Problem (a) could be fixed by adjusting the algorithm to take into
account the refcount entry width. Problem (b) could be fixed by
increasing a bit the refcount cache size to account for the clusters
used for qcow2 metadata.

However this patch takes a completely different approach and instead
of keeping a ratio between both cache sizes it assigns as much as
possible to the L2 cache and the remainder to the refcount cache.

The reason is that L2 tables are used for every single I/O request
from the guest and the effect of increasing the cache is significant
and clearly measurable. Refcount blocks are however only used for
cluster allocation and internal snapshots and in practice are accessed
sequentially in most cases, so the effect of increasing the cache is
negligible (even when doing random writes from the guest).

So, make the refcount cache as small as possible unless the user
explicitly asks for a larger one.

Signed-off-by: Alberto Garcia <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
Message-id: 9695182c2eb11b77cb319689a1ebaa4e7c9d6591.1523968389[email protected]
Signed-off-by: Max Reitz <[email protected]>
6 years agospecs/qcow2: Clarify that compressed clusters have the COPIED bit reset
Alberto Garcia [Tue, 10 Apr 2018 16:05:04 +0000 (18:05 +0200)]
specs/qcow2: Clarify that compressed clusters have the COPIED bit reset

Compressed clusters are not supposed to have the COPIED bit set, but
this is not made explicit in the specs, so let's document it.

Signed-off-by: Alberto Garcia <[email protected]>
Message-id: 74552e1d6e858d3159cb0c0e188e80bc9248e337.1523376013[email protected]
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
6 years agoFix error message about compressed clusters with OFLAG_COPIED
Alberto Garcia [Tue, 10 Apr 2018 16:05:03 +0000 (18:05 +0200)]
Fix error message about compressed clusters with OFLAG_COPIED

Compressed clusters are not supposed to have the COPIED bit set.
"qemu-img check" detects that and prints an error message reporting
the number of the affected host cluster. This doesn't make much sense
because compressed clusters are not aligned to host clusters, so it
would be better to report the offset instead. Plus, the calculation is
wrong and it uses the raw L2 entry as if it was simply an offset.

This patch fixes the error message and reports the offset of the
compressed cluster.

Signed-off-by: Alberto Garcia <[email protected]>
Message-id: 0f687957feb72e80c740403191a47e607c2463fe.1523376013[email protected]
Signed-off-by: Max Reitz <[email protected]>
6 years agoiotests: Split 214 off of 122
Max Reitz [Fri, 6 Apr 2018 16:41:08 +0000 (18:41 +0200)]
iotests: Split 214 off of 122

Commit abd3622cc03cf41ed542126a540385f30a4c0175 added a case to 122
regarding how the qcow2 driver handles an incorrect compressed data
length value.  This does not really fit into 122, as that file is
supposed to contain qemu-img convert test cases, which this case is not.
So this patch splits it off into its own file; maybe we will even get
more qcow2-only compression tests in the future.

Also, that test case does not work with refcount_bits=1, so mark that
option as unsupported.

Signed-off-by: Max Reitz <[email protected]>
Message-id: 20180406164108[email protected]
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Alberto Garcia <[email protected]>
Signed-off-by: Max Reitz <[email protected]>
6 years agoblockjob: Add block_job_driver()
Kevin Wolf [Fri, 19 Jan 2018 14:54:40 +0000 (15:54 +0100)]
blockjob: Add block_job_driver()

The backup block job directly accesses the driver field in BlockJob. Add
a wrapper for getting it.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
Reviewed-by: John Snow <[email protected]>
6 years agoblockjob: Introduce block_job_ratelimit_get_delay()
Kevin Wolf [Thu, 18 Jan 2018 20:19:38 +0000 (21:19 +0100)]
blockjob: Introduce block_job_ratelimit_get_delay()

This gets us rid of more direct accesses to BlockJob fields from the
job drivers.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
Reviewed-by: John Snow <[email protected]>
6 years agoblockjob: Implement block_job_set_speed() centrally
Kevin Wolf [Thu, 18 Jan 2018 19:25:40 +0000 (20:25 +0100)]
blockjob: Implement block_job_set_speed() centrally

All block job drivers support .set_speed and all of them duplicate the
same code to implement it. Move that code to blockjob.c and remove the
now useless callback.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
Reviewed-by: John Snow <[email protected]>
6 years agoblockjob: Move RateLimit to BlockJob
Kevin Wolf [Thu, 18 Jan 2018 19:20:24 +0000 (20:20 +0100)]
blockjob: Move RateLimit to BlockJob

Every block job has a RateLimit, and they all do the exact same thing
with it, so it should be common infrastructure. Move the struct field
for a start.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
Reviewed-by: John Snow <[email protected]>
6 years agoblockjob: Wrappers for progress counter access
Kevin Wolf [Thu, 18 Jan 2018 17:08:22 +0000 (18:08 +0100)]
blockjob: Wrappers for progress counter access

Block job drivers are not expected to mess with the internals of the
BlockJob object, so provide wrapper functions for one of the cases where
they still do it: Updating the progress counter.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
Reviewed-by: John Snow <[email protected]>
6 years agoblockjob: Fix assertion in block_job_finalize()
Kevin Wolf [Tue, 8 May 2018 09:55:30 +0000 (11:55 +0200)]
blockjob: Fix assertion in block_job_finalize()

Every job gets a non-NULL job->txn on creation, but it doesn't
necessarily keep it until it is decommissioned: Finalising a job removes
it from its transaction. Therefore, calling 'blockdev-job-finalize' a
second time on an already concluded job causes an assertion failure.

Remove job->txn from the assertion in block_job_finalize() to fix this.
block_job_do_finalize() still has the same assertion, but if a job is
already removed from its transaction, block_job_apply_verb() will
already error out before we run into that assertion.

Cc: [email protected]
Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
Reviewed-by: John Snow <[email protected]>
6 years agoblockjob: expose error string via query
John Snow [Tue, 8 May 2018 23:36:59 +0000 (19:36 -0400)]
blockjob: expose error string via query

When we've reached the concluded state, we need to expose the error
state if applicable. Add the new field.

This should be sufficient for determining if a job completed
successfully or not after concluding; if we want to discriminate
based on how it failed more mechanically, we can always add an
explicit return code enumeration later.

I didn't bother to make it only show up if we are in the concluded
state; I don't think it's necessary.

Cc: [email protected]
Signed-off-by: John Snow <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Alberto Garcia <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
6 years agohmp: Allow using a qdev id in block_set_io_throttle
Alberto Garcia [Fri, 9 Mar 2018 14:11:07 +0000 (16:11 +0200)]
hmp: Allow using a qdev id in block_set_io_throttle

The QMP version of this command can take a qdev ID since 7a9877a02635,
but the HMP version is still using the deprecated block device name so
there's no way to refer to a block device added like this:

  -blockdev node-name=disk0,driver=qcow2,file.driver=file,file.filename=hd.qcow2
  -device virtio-blk-pci,id=virtio-blk-pci0,drive=disk0

This patch works around this problem by using the specified name as a
qdev ID if the block device name is not found.

Signed-off-by: Alberto Garcia <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
6 years agoblock: Merge .bdrv_co_writev{,_flags} in drivers
Eric Blake [Tue, 24 Apr 2018 22:01:57 +0000 (17:01 -0500)]
block: Merge .bdrv_co_writev{,_flags} in drivers

We have too many driver callback interfaces; simplify the mess
somewhat by merging the flags parameter of .bdrv_co_writev_flags()
into .bdrv_co_writev().  Note that as long as a driver doesn't set
.supported_write_flags, the flags argument will be 0 and behavior is
identical.  Also note that the public function bdrv_co_writev() still
lacks a flags argument; so the driver signature is thus intentionally
slightly different.  But that's not the end of the world, nor the first
time that the driver interface differs slightly from the public
interface.

Ideally, we should be rewriting all of these drivers to use modern
byte-based interfaces.  But that's a more invasive patch to write
and audit, compared to the simplification done here.

Signed-off-by: Eric Blake <[email protected]>
Reviewed-by: Daniel P. Berrangé <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
6 years agoblock: Drop last of the sector-based aio callbacks
Eric Blake [Tue, 24 Apr 2018 19:25:06 +0000 (14:25 -0500)]
block: Drop last of the sector-based aio callbacks

We are gradually moving away from sector-based interfaces, towards
byte-based.  Now that all drivers with aio callbacks are using the
byte-based interfaces, we can remove the sector-based versions.

Signed-off-by: Eric Blake <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
6 years agovxhs: Switch to byte-based callbacks
Eric Blake [Tue, 24 Apr 2018 19:25:05 +0000 (14:25 -0500)]
vxhs: Switch to byte-based callbacks

We are gradually moving away from sector-based interfaces, towards
byte-based.  Make the change for the last few sector-based callbacks
in the vxhs driver.

Note that the driver was already using byte-based calls for
performing actual I/O, so this just gets rid of a round trip
of scaling; however, as I don't know if VxHS is tolerant of
non-sector AIO operations, I went with the conservative approach
of adding .bdrv_refresh_limits to override the block layer
defaults back to the pre-patch value of 512.

Signed-off-by: Eric Blake <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
6 years agorbd: Switch to byte-based callbacks
Eric Blake [Tue, 24 Apr 2018 19:25:04 +0000 (14:25 -0500)]
rbd: Switch to byte-based callbacks

We are gradually moving away from sector-based interfaces, towards
byte-based.  Make the change for the last few sector-based callbacks
in the rbd driver.

Note that the driver was already using byte-based calls for
performing actual I/O, so this just gets rid of a round trip
of scaling; however, as I don't know if RBD is tolerant of
non-sector AIO operations, I went with the conservate approach
of adding .bdrv_refresh_limits to override the block layer
defaults back to the pre-patch value of 512.

Signed-off-by: Eric Blake <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
6 years agonull: Switch to byte-based read/write
Eric Blake [Tue, 24 Apr 2018 19:25:03 +0000 (14:25 -0500)]
null: Switch to byte-based read/write

We are gradually moving away from sector-based interfaces, towards
byte-based.  Make the change for the last few sector-based callbacks
in the null-co and null-aio drivers.

Note that since the null driver does nothing on writes, it trivially
supports the BDRV_REQ_FUA flag (all writes have already landed to
the same bit-bucket without needing an extra flush call).  Also, since
the null driver does just as well with byte-based requests, we can
now avoid cycles wasted on read-modify-write by taking advantage of
the block layer now defaulting the alignment to 1 instead of 512.

Signed-off-by: Eric Blake <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
6 years agofile-win32: Switch to byte-based callbacks
Eric Blake [Tue, 24 Apr 2018 19:25:02 +0000 (14:25 -0500)]
file-win32: Switch to byte-based callbacks

We are gradually moving away from sector-based interfaces, towards
byte-based.  Make the change for the last few sector-based callbacks
in the file-win32 driver.

Note that the driver was already using byte-based calls for
performing actual I/O, so this just gets rid of a round trip
of scaling; however, as I don't know if Windows is tolerant of
non-sector AIO operations, I went with the conservative approach
of modifying .bdrv_refresh_limits to override the block layer
defaults back to the pre-patch value of 512.

Signed-off-by: Eric Blake <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
6 years agoblock: Support byte-based aio callbacks
Eric Blake [Tue, 24 Apr 2018 19:25:01 +0000 (14:25 -0500)]
block: Support byte-based aio callbacks

We are gradually moving away from sector-based interfaces, towards
byte-based.  Add new sector-based aio callbacks for read and write,
to match the fact that bdrv_aio_pdiscard is already byte-based.

Ideally, drivers should be converted to use coroutine callbacks
rather than aio; but that is not quite as trivial (and if we were
to do that conversion, the null-aio driver would disappear), so for
the short term, converting the signature but keeping things with
aio is easier.  However, we CAN declare that a driver that uses
the byte-based aio interfaces now defaults to byte-based
operations, and must explicitly provide a refresh_limits override
to stick with larger alignments (making the alignment issues more
obvious directly in the drivers touched in the next few patches).

Once all drivers are converted, the sector-based aio callbacks will
be removed; in the meantime, a FIXME comment is added due to a
slight inefficiency that will be touched up as part of that later
cleanup.

Simplify some instances of 'bs->drv' into 'drv' while touching this,
since the local variable already exists to reduce typing.

Signed-off-by: Eric Blake <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
6 years agoblock-backend: simplify blk_get_aio_context
Daniel Henrique Barboza [Tue, 27 Mar 2018 13:08:46 +0000 (10:08 -0300)]
block-backend: simplify blk_get_aio_context

blk_get_aio_context verifies if BlockDriverState bs is not NULL,
return bdrv_get_aio_context(bs) if true or qemu_get_aio_context()
otherwise. However, bdrv_get_aio_context from block.c already does
this verification itself, also returning qemu_get_aio_context()
if bs is NULL:

AioContext *bdrv_get_aio_context(BlockDriverState *bs)
{
    return bs ? bs->aio_context : qemu_get_aio_context();
}

This patch simplifies blk_get_aio_context to simply call
bdrv_get_aio_context instead of replicating the same logic.

Signed-off-by: Daniel Henrique Barboza <[email protected]>
Reviewed-by: Darren Kenny <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
6 years agoMerge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20180515' into...
Peter Maydell [Tue, 15 May 2018 14:07:34 +0000 (15:07 +0100)]
Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20180515' into staging

target-arm queue:
 * Fix coverity nit in int_to_float code
 * Don't set Invalid for float-to-int(MAXINT)
 * Fix fp_status_f16 tininess before rounding
 * Add various missing insns from the v8.2-FP16 extension
 * Fix sqrt_f16 exception raising
 * sdcard: Correct CRC16 offset in sd_function_switch()
 * tcg: Optionally log FPU state in TCG -d cpu logging

# gpg: Signature made Tue 15 May 2018 15:06:09 BST
# gpg:                using RSA key 3C2525ED14360CDE
# gpg: Good signature from "Peter Maydell <[email protected]>"
# gpg:                 aka "Peter Maydell <[email protected]>"
# gpg:                 aka "Peter Maydell <[email protected]>"
# Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83  15CF 3C25 25ED 1436 0CDE

* remotes/pmaydell/tags/pull-target-arm-20180515:
  tcg: Optionally log FPU state in TCG -d cpu logging
  sdcard: Correct CRC16 offset in sd_function_switch()
  target/arm: Fix sqrt_f16 exception raising
  target/arm: Implement FMOV (immediate) for fp16
  target/arm: Implement FCSEL for fp16
  target/arm: Implement FCMP for fp16
  target/arm: Implement FP data-processing (3 source) for fp16
  target/arm: Implement FP data-processing (2 source) for fp16
  target/arm: Introduce and use read_fp_hreg
  target/arm: Implement FCVT (scalar, fixed-point) for fp16
  target/arm: Implement FCVT (scalar, integer) for fp16
  target/arm: Early exit after unallocated_encoding in disas_fp_int_conv
  target/arm: Implement FMOV (general) for fp16
  target/arm: Fix fp_status_f16 tininess before rounding
  fpu/softfloat: Don't set Invalid for float-to-int(MAXINT)
  fpu/softfloat: int_to_float ensure r fully initialised

Signed-off-by: Peter Maydell <[email protected]>
6 years agotcg: Optionally log FPU state in TCG -d cpu logging
Peter Maydell [Tue, 15 May 2018 13:58:44 +0000 (14:58 +0100)]
tcg: Optionally log FPU state in TCG -d cpu logging

Usually the logging of the CPU state produced by -d cpu is sufficient
to diagnose problems, but sometimes you want to see the state of
the floating point registers as well. We don't want to enable that
by default as it adds a lot of extra data to the log; instead,
allow it to be optionally enabled via -d fpu.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 20180510130024[email protected]

6 years agosdcard: Correct CRC16 offset in sd_function_switch()
Philippe Mathieu-Daudé [Tue, 15 May 2018 13:58:44 +0000 (14:58 +0100)]
sdcard: Correct CRC16 offset in sd_function_switch()

Per the Physical Layer Simplified Spec. "4.3.10.4 Switch Function Status":

  The block length is predefined to 512 bits

and "4.10.2 SD Status":

  The SD Status contains status bits that are related to the SD Memory Card
  proprietary features and may be used for future application-specific usage.
  The size of the SD Status is one data block of 512 bit. The content of this
  register is transmitted to the Host over the DAT bus along with a 16-bit CRC.

Thus the 16-bit CRC goes at offset 64.

Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: 20180509060104[email protected]
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
6 years agotarget/arm: Fix sqrt_f16 exception raising
Alex Bennée [Tue, 15 May 2018 13:58:43 +0000 (14:58 +0100)]
target/arm: Fix sqrt_f16 exception raising

We are meant to explicitly pass fpst, not cpu_env.

Cc: [email protected]
Signed-off-by: Alex Bennée <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
Tested-by: Alex Bennée <[email protected]>
Message-id: 20180512003217[email protected]
Signed-off-by: Peter Maydell <[email protected]>
6 years agotarget/arm: Implement FMOV (immediate) for fp16
Alex Bennée [Tue, 15 May 2018 13:58:43 +0000 (14:58 +0100)]
target/arm: Implement FMOV (immediate) for fp16

All the hard work is already done by vfp_expand_imm, we just need to
make sure we pick up the correct size.

Cc: [email protected]
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Alex Bennée <[email protected]>
Tested-by: Alex Bennée <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
Message-id: 20180512003217[email protected]
[rth: Merge unallocated_encoding check with TCGMemOp conversion.]
Signed-off-by: Richard Henderson <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
6 years agotarget/arm: Implement FCSEL for fp16
Alex Bennée [Tue, 15 May 2018 13:58:43 +0000 (14:58 +0100)]
target/arm: Implement FCSEL for fp16

These were missed out from the rest of the half-precision work.

Cc: [email protected]
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Alex Bennée <[email protected]>
Tested-by: Alex Bennée <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
Message-id: 20180512003217[email protected]
[rth: Fix erroneous check vs type]
Signed-off-by: Richard Henderson <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
6 years agotarget/arm: Implement FCMP for fp16
Alex Bennée [Tue, 15 May 2018 13:58:43 +0000 (14:58 +0100)]
target/arm: Implement FCMP for fp16

These where missed out from the rest of the half-precision work.

Cc: [email protected]
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Alex Bennée <[email protected]>
Tested-by: Alex Bennée <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
Message-id: 20180512003217[email protected]
[rth: Diagnose lack of FP16 before fp_access_check]
Signed-off-by: Richard Henderson <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
6 years agotarget/arm: Implement FP data-processing (3 source) for fp16
Richard Henderson [Tue, 15 May 2018 13:58:43 +0000 (14:58 +0100)]
target/arm: Implement FP data-processing (3 source) for fp16

We missed all of the scalar fp16 fma operations.

Cc: [email protected]
Reviewed-by: Alex Bennée <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
Tested-by: Alex Bennée <[email protected]>
Message-id: 20180512003217[email protected]
Signed-off-by: Peter Maydell <[email protected]>
6 years agotarget/arm: Implement FP data-processing (2 source) for fp16
Richard Henderson [Tue, 15 May 2018 13:58:43 +0000 (14:58 +0100)]
target/arm: Implement FP data-processing (2 source) for fp16

We missed all of the scalar fp16 binary operations.

Cc: [email protected]
Reviewed-by: Alex Bennée <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
Tested-by: Alex Bennée <[email protected]>
Message-id: 20180512003217[email protected]
Signed-off-by: Peter Maydell <[email protected]>
6 years agotarget/arm: Introduce and use read_fp_hreg
Richard Henderson [Tue, 15 May 2018 13:58:43 +0000 (14:58 +0100)]
target/arm: Introduce and use read_fp_hreg

Cc: [email protected]
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
Tested-by: Alex Bennée <[email protected]>
Message-id: 20180512003217[email protected]
Signed-off-by: Peter Maydell <[email protected]>
6 years agotarget/arm: Implement FCVT (scalar, fixed-point) for fp16
Richard Henderson [Tue, 15 May 2018 13:58:43 +0000 (14:58 +0100)]
target/arm: Implement FCVT (scalar, fixed-point) for fp16

Cc: [email protected]
Reviewed-by: Alex Bennée <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
Tested-by: Alex Bennée <[email protected]>
Message-id: 20180512003217[email protected]
Signed-off-by: Peter Maydell <[email protected]>
6 years agotarget/arm: Implement FCVT (scalar, integer) for fp16
Richard Henderson [Tue, 15 May 2018 13:58:43 +0000 (14:58 +0100)]
target/arm: Implement FCVT (scalar, integer) for fp16

Cc: [email protected]
Reviewed-by: Alex Bennée <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
Tested-by: Alex Bennée <[email protected]>
Message-id: 20180512003217[email protected]
Signed-off-by: Peter Maydell <[email protected]>
6 years agotarget/arm: Early exit after unallocated_encoding in disas_fp_int_conv
Richard Henderson [Tue, 15 May 2018 13:58:43 +0000 (14:58 +0100)]
target/arm: Early exit after unallocated_encoding in disas_fp_int_conv

No sense in emitting code after the exception.

Signed-off-by: Richard Henderson <[email protected]>
Tested-by: Alex Bennée <[email protected]>
Message-id: 20180512003217[email protected]
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
6 years agotarget/arm: Implement FMOV (general) for fp16
Richard Henderson [Tue, 15 May 2018 13:58:43 +0000 (14:58 +0100)]
target/arm: Implement FMOV (general) for fp16

Adding the fp16 moves to/from general registers.

Cc: [email protected]
Signed-off-by: Richard Henderson <[email protected]>
Tested-by: Alex Bennée <[email protected]>
Message-id: 20180512003217[email protected]
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
6 years agotarget/arm: Fix fp_status_f16 tininess before rounding
Peter Maydell [Tue, 15 May 2018 13:58:42 +0000 (14:58 +0100)]
target/arm: Fix fp_status_f16 tininess before rounding

In commit d81ce0ef2c4f105 we added an extra float_status field
fp_status_fp16 for Arm, but forgot to initialize it correctly
by setting it to float_tininess_before_rounding. This currently
will only cause problems for the new V8_FP16 feature, since the
float-to-float conversion code doesn't use it yet. The effect
would be that we failed to set the Underflow IEEE exception flag
in all the cases where we should.

Add the missing initialization.

Fixes: d81ce0ef2c4f105
Cc: [email protected]
Reviewed-by: Richard Henderson <[email protected]>
Reviewed-by: Alex Bennée <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
Message-id: 20180512004311[email protected]

6 years agofpu/softfloat: Don't set Invalid for float-to-int(MAXINT)
Peter Maydell [Tue, 15 May 2018 13:58:42 +0000 (14:58 +0100)]
fpu/softfloat: Don't set Invalid for float-to-int(MAXINT)

In float-to-integer conversion, if the floating point input
converts exactly to the largest or smallest integer that
fits in to the result type, this is not an overflow.
In this situation we were producing the correct result value,
but were incorrectly setting the Invalid flag.
For example for Arm A64, "FCVTAS w0, d0" on an input of
0x41dfffffffc00000 should produce 0x7fffffff and set no flags.

Fix the boundary case to take the right half of the if()
statements.

This fixes a regression from 2.11 introduced by the softfloat
refactoring.

Cc: [email protected]
Fixes: ab52f973a50
Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 20180510140141[email protected]

6 years agofpu/softfloat: int_to_float ensure r fully initialised
Alex Bennée [Tue, 15 May 2018 13:58:42 +0000 (14:58 +0100)]
fpu/softfloat: int_to_float ensure r fully initialised

Reported by Coverity (CID1390635). We ensure this for uint_to_float
later on so we might as well mirror that.

Signed-off-by: Alex Bennée <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
6 years agoMerge remote-tracking branch 'remotes/kraxel/tags/input-20180515-pull-request' into...
Peter Maydell [Tue, 15 May 2018 11:50:06 +0000 (12:50 +0100)]
Merge remote-tracking branch 'remotes/kraxel/tags/input-20180515-pull-request' into staging

input: ps2 fixes.

# gpg: Signature made Tue 15 May 2018 10:43:20 BST
# gpg:                using RSA key 4CB6D8EED3E87138
# gpg: Good signature from "Gerd Hoffmann (work) <[email protected]>"
# gpg:                 aka "Gerd Hoffmann <[email protected]>"
# gpg:                 aka "Gerd Hoffmann (private) <[email protected]>"
# Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138

* remotes/kraxel/tags/input-20180515-pull-request:
  ps2: Fix mouse stream corruption due to lost data
  ps2: Clear the PS/2 queue and obey disable

Signed-off-by: Peter Maydell <[email protected]>
6 years agoMerge remote-tracking branch 'remotes/kraxel/tags/ui-20180515-pull-request' into...
Peter Maydell [Tue, 15 May 2018 11:00:23 +0000 (12:00 +0100)]
Merge remote-tracking branch 'remotes/kraxel/tags/ui-20180515-pull-request' into staging

ui: qapi parser for -display cmd line.
gtk: multiple fixes.
sdl: opts bugfix.
vnc: magic cookie.

# gpg: Signature made Tue 15 May 2018 10:18:51 BST
# gpg:                using RSA key 4CB6D8EED3E87138
# gpg: Good signature from "Gerd Hoffmann (work) <[email protected]>"
# gpg:                 aka "Gerd Hoffmann <[email protected]>"
# gpg:                 aka "Gerd Hoffmann (private) <[email protected]>"
# Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138

* remotes/kraxel/tags/ui-20180515-pull-request:
  gtk: disable the F10 menubar key
  console: use linked list for QemuConsoles
  ui: document non-qapi parser cases.
  ui: switch gtk display to qapi parser
  ui: switch trivial displays to qapi parser
  ui: add qapi parser for -display
  vnc: add magic cookie to VncState
  ui/gtk: Only try to initialize EGL/X11 if GtkGlArea failed
  gtk: make it possible to hide the menu bar
  sdl2: move opts assignment into loop

Signed-off-by: Peter Maydell <[email protected]>
6 years agoMerge remote-tracking branch 'remotes/rth/tags/tgt-openrisc-pull-request' into staging
Peter Maydell [Tue, 15 May 2018 10:11:36 +0000 (11:11 +0100)]
Merge remote-tracking branch 'remotes/rth/tags/tgt-openrisc-pull-request' into staging

Convert openrisc to decodetree.py

# gpg: Signature made Mon 14 May 2018 23:25:40 BST
# gpg:                using RSA key 64DF38E8AF7E215F
# gpg: Good signature from "Richard Henderson <[email protected]>"
# Primary key fingerprint: 7A48 1E78 868B 4DB6 A85A  05C0 64DF 38E8 AF7E 215F

* remotes/rth/tags/tgt-openrisc-pull-request:
  target/openrisc: Merge disas_openrisc_insn
  target/openrisc: Convert dec_float
  target/openrisc: Convert dec_compi
  target/openrisc: Convert dec_comp
  target/openrisc: Convert dec_M
  target/openrisc: Convert dec_logic
  target/openrisc: Convert dec_mac
  target/openrisc: Convert dec_calc
  target/openrisc: Convert remainder of dec_misc insns
  target/openrisc: Convert memory insns
  target/openrisc: Convert branch insns
  target/openrisc: Start conversion to decodetree.py
  target-openrisc: Write back result before FPE exception

Signed-off-by: Peter Maydell <[email protected]>
6 years agops2: Fix mouse stream corruption due to lost data
Geoffrey McRae [Mon, 7 May 2018 13:13:12 +0000 (23:13 +1000)]
ps2: Fix mouse stream corruption due to lost data

This fixes an issue by adding bounds checking to multi-byte packets
where the PS/2 mouse data stream may become corrupted due to data being
discarded when the PS/2 ringbuffer is full.

Interrupts for Multi-byte responses are postponed until the final byte
has been queued.

These changes fix a bug where windows guests drop the mouse device
entirely requring the guest to be restarted.

Signed-off-by: Geoffrey McRae <[email protected]>
Message-Id: <20180507150310.2FEA0381924@moya.office.hostfission.com>

[ kraxel: codestyle fixes ]

Signed-off-by: Gerd Hoffmann <[email protected]>
6 years agops2: Clear the PS/2 queue and obey disable
Geoffrey McRae [Mon, 7 May 2018 13:01:46 +0000 (23:01 +1000)]
ps2: Clear the PS/2 queue and obey disable

This allows guest's to correctly reinitialize and identify the mouse
should the guest decide to re-scan or reset during mouse input events.

When the guest sends the "Identify" command, due to the PC's hardware
architecutre it is impossible to reliably determine the response from
the command amongst other streaming data, such as mouse or keyboard
events. Standard practice is for the guest to disable the device and
then issue the identify command, so this must be obeyed.

Signed-off-by: Geoffrey McRae <[email protected]>
Message-Id: <20180507150303.7486B381924@moya.office.hostfission.com>
Signed-off-by: Gerd Hoffmann <[email protected]>
6 years agoMerge remote-tracking branch 'remotes/vivier2/tags/linux-user-for-2.13-pull-request...
Peter Maydell [Tue, 15 May 2018 09:04:22 +0000 (10:04 +0100)]
Merge remote-tracking branch 'remotes/vivier2/tags/linux-user-for-2.13-pull-request' into staging

# gpg: Signature made Mon 14 May 2018 19:15:02 BST
# gpg:                using RSA key F30C38BD3F2FBE3C
# gpg: Good signature from "Laurent Vivier <[email protected]>"
# gpg:                 aka "Laurent Vivier <[email protected]>"
# gpg:                 aka "Laurent Vivier (Red Hat) <[email protected]>"
# Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F  5173 F30C 38BD 3F2F BE3C

* remotes/vivier2/tags/linux-user-for-2.13-pull-request:
  linux-user: correctly align types in thunking code
  linux-user: fix UNAME_MACHINE for sparc/sparc64
  linux-user: add sparc/sparc64 specific errno
  linux-user: fix conversion of flock/flock64 l_type field
  linux-user: update sparc/syscall_nr.h to linux header 4.16
  linux-user: fix flock/flock64 padding
  linux-user: define correct fcntl() values for sparc

Signed-off-by: Peter Maydell <[email protected]>
6 years agogtk: disable the F10 menubar key
Peter Wu [Thu, 10 May 2018 23:07:39 +0000 (01:07 +0200)]
gtk: disable the F10 menubar key

The F10 key is used in various applications, disable it unconditionally
(do not limit it to grab mode). Note that this property is deprecated
and might be removed in the future (GTK+ commit b082fb598d).

Fixes: https://bugs.launchpad.net/qemu/+bug/1726910
Signed-off-by: Peter Wu <[email protected]>
Message-id: 20180510230739[email protected]
Signed-off-by: Gerd Hoffmann <[email protected]>
6 years agoconsole: use linked list for QemuConsoles
Gerd Hoffmann [Mon, 7 May 2018 09:54:24 +0000 (11:54 +0200)]
console: use linked list for QemuConsoles

Signed-off-by: Gerd Hoffmann <[email protected]>
Message-id: 20180507095424[email protected]

6 years agoui: document non-qapi parser cases.
Gerd Hoffmann [Mon, 7 May 2018 09:55:39 +0000 (11:55 +0200)]
ui: document non-qapi parser cases.

Add comments to the cases not (yet) switched
over to parse_display_qapi().

Signed-off-by: Gerd Hoffmann <[email protected]>
Message-id: 20180507095539[email protected]

6 years agoui: switch gtk display to qapi parser
Gerd Hoffmann [Mon, 7 May 2018 09:55:38 +0000 (11:55 +0200)]
ui: switch gtk display to qapi parser

Drop the gtk option parser from parse_display(), so parse_display_qapi()
will handle it instead.

With this change the parser will accept gl=core and gl=es too, gtk
must catch the unsupported gles variant now.

Signed-off-by: Gerd Hoffmann <[email protected]>
Message-id: 20180507095539[email protected]

6 years agoui: switch trivial displays to qapi parser
Gerd Hoffmann [Mon, 7 May 2018 09:55:37 +0000 (11:55 +0200)]
ui: switch trivial displays to qapi parser

Drop the option-less display types (egl-headless, curses, none) from
parse_display(), so they'll be handled by parse_display_qapi().

Signed-off-by: Gerd Hoffmann <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Message-id: 20180507095539[email protected]

6 years agoui: add qapi parser for -display
Gerd Hoffmann [Mon, 7 May 2018 09:55:36 +0000 (11:55 +0200)]
ui: add qapi parser for -display

Add parse_display_qapi() function which parses the -display command line
using a qapi visitor for DisplayOptions.  Wire up as default catch in
parse_display().

Improves the error message for unknown display types.

Also enables json as -display argument, i.e. -display "{ 'type': 'gtk' }"

Signed-off-by: Gerd Hoffmann <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Message-id: 20180507095539[email protected]

6 years agovnc: add magic cookie to VncState
Gerd Hoffmann [Mon, 7 May 2018 10:22:54 +0000 (12:22 +0200)]
vnc: add magic cookie to VncState

Set magic cookie on initialization.  Clear on cleanup.  Sprinkle a bunch
of assert()s checking the cookie, to verify the pointer is valid.

Signed-off-by: Gerd Hoffmann <[email protected]>
Message-id: 20180507102254[email protected]

6 years agoui/gtk: Only try to initialize EGL/X11 if GtkGlArea failed
Tomeu Vizoso [Mon, 7 May 2018 13:42:37 +0000 (15:42 +0200)]
ui/gtk: Only try to initialize EGL/X11 if GtkGlArea failed

The commit referenced below changed the logic by causing the gtk-egl
backend to be initialized regardless of whether GtkGlArea initialization
succeeded. This causes eglInitialize to crash in Wayland systems without
XWayland.

This patch restores the previous logic.

Fixes: 4c70280592f5 ("ui/gtk: use GtkGlArea on wayland only")
Signed-off-by: Tomeu Vizoso <[email protected]>
Message-id: 20180507134237[email protected]
Signed-off-by: Gerd Hoffmann <[email protected]>
6 years agogtk: make it possible to hide the menu bar
Peter Wu [Thu, 10 May 2018 23:07:38 +0000 (01:07 +0200)]
gtk: make it possible to hide the menu bar

Saves some space and disables the F10 button as side-effect.

Fixes: https://bugs.launchpad.net/qemu/+bug/1726910
Signed-off-by: Peter Wu <[email protected]>
Message-Id: <20180510230739[email protected]>
Signed-off-by: Gerd Hoffmann <[email protected]>
6 years agosdl2: move opts assignment into loop
Gerd Hoffmann [Tue, 15 May 2018 05:45:01 +0000 (07:45 +0200)]
sdl2: move opts assignment into loop

So the opts pointer is set for all sdl2_consoles.

Fixes: 844fd50dbbcfc9e401895274bf4fb8da8e8d3f64
Signed-off-by: Gerd Hoffmann <[email protected]>
6 years agotarget/openrisc: Merge disas_openrisc_insn
Richard Henderson [Tue, 20 Feb 2018 19:18:07 +0000 (11:18 -0800)]
target/openrisc: Merge disas_openrisc_insn

Acked-by: Stafford Horne <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
6 years agotarget/openrisc: Convert dec_float
Richard Henderson [Tue, 20 Feb 2018 19:14:44 +0000 (11:14 -0800)]
target/openrisc: Convert dec_float

Acked-by: Stafford Horne <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
6 years agotarget/openrisc: Convert dec_compi
Richard Henderson [Tue, 20 Feb 2018 18:49:54 +0000 (10:49 -0800)]
target/openrisc: Convert dec_compi

Acked-by: Stafford Horne <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
6 years agotarget/openrisc: Convert dec_comp
Richard Henderson [Tue, 20 Feb 2018 18:41:47 +0000 (10:41 -0800)]
target/openrisc: Convert dec_comp

Acked-by: Stafford Horne <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
6 years agotarget/openrisc: Convert dec_M
Richard Henderson [Tue, 20 Feb 2018 18:28:01 +0000 (10:28 -0800)]
target/openrisc: Convert dec_M

Acked-by: Stafford Horne <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
6 years agotarget/openrisc: Convert dec_logic
Richard Henderson [Tue, 20 Feb 2018 18:20:06 +0000 (10:20 -0800)]
target/openrisc: Convert dec_logic

Acked-by: Stafford Horne <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
6 years agotarget/openrisc: Convert dec_mac
Richard Henderson [Tue, 20 Feb 2018 18:11:02 +0000 (10:11 -0800)]
target/openrisc: Convert dec_mac

Acked-by: Stafford Horne <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
6 years agotarget/openrisc: Convert dec_calc
Richard Henderson [Tue, 20 Feb 2018 18:04:14 +0000 (10:04 -0800)]
target/openrisc: Convert dec_calc

Acked-by: Stafford Horne <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
6 years agotarget/openrisc: Convert remainder of dec_misc insns
Richard Henderson [Tue, 20 Feb 2018 17:15:24 +0000 (09:15 -0800)]
target/openrisc: Convert remainder of dec_misc insns

Acked-by: Stafford Horne <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
6 years agotarget/openrisc: Convert memory insns
Richard Henderson [Tue, 20 Feb 2018 16:21:12 +0000 (08:21 -0800)]
target/openrisc: Convert memory insns

Acked-by: Stafford Horne <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
6 years agotarget/openrisc: Convert branch insns
Richard Henderson [Mon, 19 Feb 2018 20:52:43 +0000 (12:52 -0800)]
target/openrisc: Convert branch insns

Acked-by: Stafford Horne <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
6 years agotarget/openrisc: Start conversion to decodetree.py
Richard Henderson [Mon, 19 Feb 2018 20:28:12 +0000 (12:28 -0800)]
target/openrisc: Start conversion to decodetree.py

Begin with the 0x08 major opcode, the system instructions.

Acked-by: Stafford Horne <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
6 years agotarget-openrisc: Write back result before FPE exception
Richard Henderson [Thu, 19 Feb 2015 04:40:38 +0000 (20:40 -0800)]
target-openrisc: Write back result before FPE exception

The architecture manual is unclear about this, but the or1ksim
does writeback before the exception.  This requires splitting
the helpers in half, with the exception raised by the second.

Acked-by: Stafford Horne <[email protected]>
Reviewed-by: Bastian Koppelmann <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
6 years agoMerge remote-tracking branch 'remotes/vivier/tags/m68k-for-2.13-pull-request' into...
Peter Maydell [Mon, 14 May 2018 18:38:41 +0000 (19:38 +0100)]
Merge remote-tracking branch 'remotes/vivier/tags/m68k-for-2.13-pull-request' into staging

# gpg: Signature made Mon 14 May 2018 19:02:18 BST
# gpg:                using RSA key F30C38BD3F2FBE3C
# gpg: Good signature from "Laurent Vivier <[email protected]>"
# gpg:                 aka "Laurent Vivier <[email protected]>"
# gpg:                 aka "Laurent Vivier (Red Hat) <[email protected]>"
# Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F  5173 F30C 38BD 3F2F BE3C

* remotes/vivier/tags/m68k-for-2.13-pull-request:
  m68k: fix floatx80_mod() (Coverity CID1390568)

Signed-off-by: Peter Maydell <[email protected]>
6 years agoMerge remote-tracking branch 'remotes/cohuck/tags/s390x-20180514' into staging
Peter Maydell [Mon, 14 May 2018 17:53:42 +0000 (18:53 +0100)]
Merge remote-tracking branch 'remotes/cohuck/tags/s390x-20180514' into staging

Some s390x fixes/cleanups, mainly in the reset area and build fixes
for recent compilers (GCC 8 and clang 6.0.0).

# gpg: Signature made Mon 14 May 2018 16:32:20 BST
# gpg:                using RSA key DECF6B93C6F02FAF
# gpg: Good signature from "Cornelia Huck <[email protected]>"
# gpg:                 aka "Cornelia Huck <[email protected]>"
# gpg:                 aka "Cornelia Huck <[email protected]>"
# gpg:                 aka "Cornelia Huck <[email protected]>"
# gpg:                 aka "Cornelia Huck <[email protected]>"
# Primary key fingerprint: C3D0 D66D C362 4FF6 A8C0  18CE DECF 6B93 C6F0 2FAF

* remotes/cohuck/tags/s390x-20180514:
  target/s390x: Fix brace Werror with clang 6.0.0
  s390x: refactor reset/reipl handling
  s390x/ccw: make sure all ccw devices are properly reset
  virtio-ccw: common reset handler
  pc-bios/s390-ccw: struct tpi_info must be declared as aligned(4)
  s390x/css: disabled subchannels cannot be status pending

Signed-off-by: Peter Maydell <[email protected]>
6 years agom68k: fix floatx80_mod() (Coverity CID1390568)
Laurent Vivier [Tue, 8 May 2018 20:39:37 +0000 (22:39 +0200)]
m68k: fix floatx80_mod() (Coverity CID1390568)

Update the variable checked by the loop condition (expDiff).
Backport the update from Previous.

Fixes: 591596b77a ("target/m68k: add fmod/frem")
Signed-off-by: Laurent Vivier <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Message-Id: <20180508203937[email protected]>

6 years agoMerge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging
Peter Maydell [Mon, 14 May 2018 16:52:46 +0000 (17:52 +0100)]
Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging

Block pull request

 * Support -drive cache.direct=off live migration for POSIX files

# gpg: Signature made Sat 12 May 2018 10:27:51 BST
# gpg:                using RSA key 9CA4ABB381AB73C8
# gpg: Good signature from "Stefan Hajnoczi <[email protected]>"
# gpg:                 aka "Stefan Hajnoczi <[email protected]>"
# Primary key fingerprint: 8695 A8BF D3F9 7CDA AC35  775A 9CA4 ABB3 81AB 73C8

* remotes/stefanha/tags/block-pull-request:
  block/file-posix: add x-check-page-cache=on|off option
  block/file-posix: implement bdrv_co_invalidate_cache() on Linux
  checkpatch: reduce MAINTAINERS update message frequency
  checkpatch: emit a warning on file add/move/delete
  checkpatch: ignore email headers better
  checkpatch: check utf-8 content from a commit log when it's missing from charset
  checkpatch: add a --strict check for utf-8 in commit logs
  blockjob: drop block_job_pause/resume_all()

Signed-off-by: Peter Maydell <[email protected]>
6 years agotarget/s390x: Fix brace Werror with clang 6.0.0
Richard Henderson [Sat, 12 May 2018 04:59:43 +0000 (21:59 -0700)]
target/s390x: Fix brace Werror with clang 6.0.0

The warning is

target/s390x/misc_helper.c:209:21: error: suggest
      braces around initialization of subobject [-Werror,-Wmissing-braces]
    SysIB sysib = { 0 };
                    ^
                    {}

While the original code is correct, and technically exactly correct
as per ISO C89, both GCC and Clang support plain empty set of braces
as an extension.

Cc: Alexander Graf <[email protected]>
Cc: David Hildenbrand <[email protected]>
Cc: Cornelia Huck <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
Message-Id: <20180512045950[email protected]>
Reviewed-by: David Hildenbrand <[email protected]>
Signed-off-by: Cornelia Huck <[email protected]>
6 years agos390x: refactor reset/reipl handling
David Hildenbrand [Tue, 24 Apr 2018 10:18:59 +0000 (12:18 +0200)]
s390x: refactor reset/reipl handling

Calling pause_all_vcpus()/resume_all_vcpus() from a VCPU thread might
not be the best idea. As pause_all_vcpus() temporarily drops the qemu
mutex, two parallel calls to pause_all_vcpus() can be active at a time,
resulting in a deadlock. (either by two VCPUs or by the main thread and a
VCPU)

Let's handle it via the main loop instead, as suggested by Paolo. If we
would have two parallel reset requests by two different VCPUs at the
same time, the last one would win.

We use the existing ipl device to handle it. The nice side effect is
that we can get rid of reipl_requested.

This change implies that all reset handling now goes via the common
path, so "no-reboot" handling is now active for all kinds of reboots.

Let's execute any CPU initialization code on the target CPU using
run_on_cpu.

Signed-off-by: David Hildenbrand <[email protected]>
Message-Id: <20180424101859[email protected]>
Acked-by: Thomas Huth <[email protected]>
Signed-off-by: Cornelia Huck <[email protected]>
6 years agos390x/ccw: make sure all ccw devices are properly reset
Cornelia Huck [Mon, 7 May 2018 13:27:57 +0000 (15:27 +0200)]
s390x/ccw: make sure all ccw devices are properly reset

Thomas reported that the subchannel for a  3270 device that ended up
in a broken state (status pending even though not enabled) did not
get out of that state even after a reboot (which involves a subsytem
reset). The reason for this is that the 3270 device did not define
a reset handler.

Let's fix this by introducing a base reset handler (set up for all
ccw devices) that resets the subchannel and have virtio-ccw call
its virtio-specific reset procedure in addition to that.

CC: [email protected]
Reported-by: Thomas Huth <[email protected]>
Suggested-by: Christian Borntraeger <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Tested-by: Thomas Huth <[email protected]>
Acked-by: Christian Borntraeger <[email protected]>
Reviewed-by: Halil Pasic <[email protected]>
Signed-off-by: Cornelia Huck <[email protected]>
This page took 0.095001 seconds and 4 git commands to generate.