]> Git Repo - qemu.git/log
qemu.git
10 years agol2cap: fix access to freed memory
zhanghailiang [Thu, 14 Aug 2014 07:29:12 +0000 (15:29 +0800)]
l2cap: fix access to freed memory

Pointer 'ch' will be used in function 'l2cap_channel_open_req_msg' after
it was previously freed in 'l2cap_channel_open'.
Assigned it to NULL after it is freed.

Reviewed-by: Alex Bennée <[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: zhanghailiang <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>
10 years agointc: i8259: Convert Array allocation to g_new0
Peter Crosthwaite [Fri, 15 Aug 2014 08:15:44 +0000 (01:15 -0700)]
intc: i8259: Convert Array allocation to g_new0

To be more array friendly and to indicate the IRQs are initially
disconnected.

Signed-off-by: Peter Crosthwaite <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>
10 years agoppc: convert g_new(qemu_irq usages to g_new0
Peter Crosthwaite [Fri, 15 Aug 2014 08:15:10 +0000 (01:15 -0700)]
ppc: convert g_new(qemu_irq usages to g_new0

To indicate the IRQs are initially disconnected.

Signed-off-by: Peter Crosthwaite <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>
10 years agossi: xilinx_spi: Initialise CS GPIOs as NULL
Peter Crosthwaite [Fri, 15 Aug 2014 08:14:36 +0000 (01:14 -0700)]
ssi: xilinx_spi: Initialise CS GPIOs as NULL

To properly indicate they are unconnected.

Signed-off-by: Peter Crosthwaite <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>
10 years agovl: free err
Hu Tao [Fri, 15 Aug 2014 10:13:59 +0000 (18:13 +0800)]
vl: free err

err is not freed after use, thus causing memory leak. This patch fixes
it.

Signed-off-by: Hu Tao <[email protected]>
Cc: [email protected]
Signed-off-by: Michael Tokarev <[email protected]>
10 years agoqemu-options.hx: fix typo about l2tpv3
Gonglei [Thu, 14 Aug 2014 06:35:48 +0000 (14:35 +0800)]
qemu-options.hx: fix typo about l2tpv3

two duplicate destport description.

s/destport/srcport/, s/destination/source/

Signed-off-by: Gonglei <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>
10 years agovmxnet3: don't use 'Yoda conditions'
Gonglei [Mon, 11 Aug 2014 13:00:58 +0000 (21:00 +0800)]
vmxnet3: don't use 'Yoda conditions'

imitate nearby code about using '!value' or 'value == NULL'

Signed-off-by: Gonglei <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>
10 years agovl: don't use 'Yoda conditions'
Gonglei [Mon, 11 Aug 2014 13:00:57 +0000 (21:00 +0800)]
vl: don't use 'Yoda conditions'

imitate nearby code about using '!value' or 'value == NULL'

Signed-off-by: Gonglei <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>
10 years agospice: don't use 'Yoda conditions'
Gonglei [Mon, 11 Aug 2014 13:00:56 +0000 (21:00 +0800)]
spice: don't use 'Yoda conditions'

imitate nearby code about using '!value' or 'value == NULL'

Signed-off-by: Gonglei <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>
10 years agodon't use 'Yoda conditions'
Gonglei [Mon, 11 Aug 2014 13:00:55 +0000 (21:00 +0800)]
don't use 'Yoda conditions'

imitate nearby code about using '!value' or 'value == NULL'

Signed-off-by: Gonglei <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>
10 years agoisa-bus: don't use 'Yoda conditions'
Gonglei [Mon, 11 Aug 2014 13:00:54 +0000 (21:00 +0800)]
isa-bus: don't use 'Yoda conditions'

imitate nearby code about using '!value' or 'value == NULL'

Signed-off-by: Gonglei <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>
10 years agoaudio: don't use 'Yoda conditions'
Gonglei [Mon, 11 Aug 2014 13:00:53 +0000 (21:00 +0800)]
audio: don't use 'Yoda conditions'

imitate nearby code about using '!value' or 'value == NULL'

Signed-off-by: Gonglei <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>
10 years agousb: don't use 'Yoda conditions'
Gonglei [Mon, 11 Aug 2014 13:00:52 +0000 (21:00 +0800)]
usb: don't use 'Yoda conditions'

imitate nearby code about using '!value' or 'value == NULL'

Signed-off-by: Gonglei <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>
10 years agoCODING_STYLE: Section about conditional statement
Gonglei [Mon, 11 Aug 2014 13:00:51 +0000 (21:00 +0800)]
CODING_STYLE: Section about conditional statement

Yoda conditions lack readability, and QEMU has a
strict compiler configuration for checking a common
mistake like "if (dev = NULL)". Make it a written rule.

Signed-off-by: Gonglei <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>
10 years agopci-host: update uncorresponding description
Gonglei [Mon, 11 Aug 2014 08:10:26 +0000 (16:10 +0800)]
pci-host: update uncorresponding description

Signed-off-by: Gonglei <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>
10 years agopci-host: update obsolete reference about piix_pci.c
Gonglei [Mon, 11 Aug 2014 08:10:25 +0000 (16:10 +0800)]
pci-host: update obsolete reference about piix_pci.c

piix_pci.c has been renamed into piix.c at commit
c0907c9e6417cb959dfd9ef6873221536ec91351

update the obsolete reference.

Signed-off-by: Gonglei <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>
10 years agoqemu-options.hx: fix a typo of chardev
Liming Wang [Wed, 13 Aug 2014 03:20:04 +0000 (11:20 +0800)]
qemu-options.hx: fix a typo of chardev

Change host to port.

Signed-off-by: Liming Wang <[email protected]>
Reviewed-by: Gonglei <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>
10 years agomemory: Update obsolete comment about AddrRange field type
Fam Zheng [Mon, 11 Aug 2014 02:18:31 +0000 (10:18 +0800)]
memory: Update obsolete comment about AddrRange field type

We are not 64 bit any more since

08dafab4 memory: use 128-bit integers for sizes and intermediates

but the comment is forgotten to be updated.

Signed-off-by: Fam Zheng <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>
10 years agoapic: Fix reported DFR content
Jan Kiszka [Sat, 9 Aug 2014 14:05:51 +0000 (16:05 +0200)]
apic: Fix reported DFR content

IA-32 SDM, Figure 10-14: Bits 27:0 are reserved as 1.

Fixes Jailhouse hypervisor start with in-kernel irqchips off.

Signed-off-by: Jan Kiszka <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]>
10 years agoMerge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
Peter Maydell [Fri, 15 Aug 2014 13:49:50 +0000 (14:49 +0100)]
Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging

Block patches

# gpg: Signature made Fri 15 Aug 2014 14:07:42 BST using RSA key ID C88F2FD6
# gpg: Good signature from "Kevin Wolf <[email protected]>"

* remotes/kevin/tags/for-upstream: (59 commits)
  block: Catch !bs->drv in bdrv_check()
  iotests: Add test for image header overlap
  qcow2: Catch !*host_offset for data allocation
  qcow2: Return useful error code in refcount_init()
  mirror: Handle failure for potentially large allocations
  vpc: Handle failure for potentially large allocations
  vmdk: Handle failure for potentially large allocations
  vhdx: Handle failure for potentially large allocations
  vdi: Handle failure for potentially large allocations
  rbd: Handle failure for potentially large allocations
  raw-win32: Handle failure for potentially large allocations
  raw-posix: Handle failure for potentially large allocations
  qed: Handle failure for potentially large allocations
  qcow2: Handle failure for potentially large allocations
  qcow1: Handle failure for potentially large allocations
  parallels: Handle failure for potentially large allocations
  nfs: Handle failure for potentially large allocations
  iscsi: Handle failure for potentially large allocations
  dmg: Handle failure for potentially large allocations
  curl: Handle failure for potentially large allocations
  ...

Signed-off-by: Peter Maydell <[email protected]>
10 years agoblock: Catch !bs->drv in bdrv_check()
Max Reitz [Thu, 7 Aug 2014 20:47:55 +0000 (22:47 +0200)]
block: Catch !bs->drv in bdrv_check()

qemu-img check calls bdrv_check() twice if the first run repaired some
inconsistencies. If the first run however again triggered corruption
prevention (on qcow2) due to very bad inconsistencies, bs->drv may be
NULL afterwards. Thus, bdrv_check() should check whether bs->drv is set.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
10 years agoiotests: Add test for image header overlap
Max Reitz [Thu, 7 Aug 2014 20:47:54 +0000 (22:47 +0200)]
iotests: Add test for image header overlap

Add a test for an image with an unallocated image header; instead of an
assertion, this should result in the image being marked corrupt.

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
10 years agoqcow2: Catch !*host_offset for data allocation
Max Reitz [Thu, 7 Aug 2014 20:47:53 +0000 (22:47 +0200)]
qcow2: Catch !*host_offset for data allocation

qcow2_alloc_cluster_offset() uses host_offset == 0 as "no preferred
offset" for the (data) cluster range to be allocated. However, this
offset is actually valid and may be allocated on images with a corrupted
refcount table or first refcount block.

In this case, the corruption prevention should normally catch that
write anyway (because it would overwrite the image header). But since 0
is a special value here, the function assumes that nothing has been
allocated at all which it asserts against.

Because this condition is not qemu's fault but rather that of a broken
image, it shouldn't throw an assertion but rather mark the image corrupt
and show an appropriate message, which this patch does by calling the
corruption check earlier than it would be called normally (before the
assertion).

Signed-off-by: Max Reitz <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
10 years agoqcow2: Return useful error code in refcount_init()
Max Reitz [Wed, 28 May 2014 22:19:54 +0000 (00:19 +0200)]
qcow2: Return useful error code in refcount_init()

If bdrv_pread() returns an error, it is very unlikely that it was
ENOMEM. In this case, the return value should be passed along; as
bdrv_pread() will always either return the number of bytes read or a
negative value (the error code), the condition for checking whether
bdrv_pread() failed can be simplified (and clarified) as well.

Signed-off-by: Max Reitz <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
10 years agomirror: Handle failure for potentially large allocations
Kevin Wolf [Wed, 21 May 2014 16:16:21 +0000 (18:16 +0200)]
mirror: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the mirror block job.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
10 years agovpc: Handle failure for potentially large allocations
Kevin Wolf [Wed, 21 May 2014 16:08:38 +0000 (18:08 +0200)]
vpc: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the vpc block driver.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
10 years agovmdk: Handle failure for potentially large allocations
Kevin Wolf [Tue, 20 May 2014 11:56:27 +0000 (13:56 +0200)]
vmdk: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the vmdk block driver.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
10 years agovhdx: Handle failure for potentially large allocations
Kevin Wolf [Tue, 20 May 2014 11:55:50 +0000 (13:55 +0200)]
vhdx: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the vhdx block driver.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
10 years agovdi: Handle failure for potentially large allocations
Kevin Wolf [Tue, 20 May 2014 11:25:43 +0000 (13:25 +0200)]
vdi: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the vdi block driver.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
10 years agorbd: Handle failure for potentially large allocations
Kevin Wolf [Wed, 21 May 2014 16:11:48 +0000 (18:11 +0200)]
rbd: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the rbd block driver.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
10 years agoraw-win32: Handle failure for potentially large allocations
Kevin Wolf [Wed, 21 May 2014 16:05:47 +0000 (18:05 +0200)]
raw-win32: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the raw-win32 block driver.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
10 years agoraw-posix: Handle failure for potentially large allocations
Kevin Wolf [Wed, 21 May 2014 16:02:42 +0000 (18:02 +0200)]
raw-posix: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the raw-posix block driver.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
10 years agoqed: Handle failure for potentially large allocations
Kevin Wolf [Tue, 20 May 2014 11:39:57 +0000 (13:39 +0200)]
qed: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the qed block driver.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
10 years agoqcow2: Handle failure for potentially large allocations
Kevin Wolf [Tue, 20 May 2014 15:12:47 +0000 (17:12 +0200)]
qcow2: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the qcow2 block driver.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
10 years agoqcow1: Handle failure for potentially large allocations
Kevin Wolf [Tue, 20 May 2014 11:36:05 +0000 (13:36 +0200)]
qcow1: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the qcow1 block driver.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
10 years agoparallels: Handle failure for potentially large allocations
Kevin Wolf [Tue, 20 May 2014 11:32:14 +0000 (13:32 +0200)]
parallels: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the parallels block driver.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
10 years agonfs: Handle failure for potentially large allocations
Kevin Wolf [Tue, 20 May 2014 11:31:20 +0000 (13:31 +0200)]
nfs: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the nfs block driver.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
10 years agoiscsi: Handle failure for potentially large allocations
Kevin Wolf [Tue, 20 May 2014 11:30:49 +0000 (13:30 +0200)]
iscsi: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the iscsi block driver.

Signed-off-by: Kevin Wolf <[email protected]>
Acked-by: Paolo Bonzini <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
10 years agodmg: Handle failure for potentially large allocations
Kevin Wolf [Tue, 20 May 2014 11:28:14 +0000 (13:28 +0200)]
dmg: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the dmg block driver.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
10 years agocurl: Handle failure for potentially large allocations
Kevin Wolf [Tue, 20 May 2014 11:26:40 +0000 (13:26 +0200)]
curl: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the curl block driver.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
10 years agocloop: Handle failure for potentially large allocations
Kevin Wolf [Tue, 20 May 2014 11:22:38 +0000 (13:22 +0200)]
cloop: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the cloop block driver.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
10 years agobochs: Handle failure for potentially large allocations
Kevin Wolf [Tue, 20 May 2014 11:21:26 +0000 (13:21 +0200)]
bochs: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the bochs block driver.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
10 years agoblock: Handle failure for potentially large allocations
Kevin Wolf [Tue, 20 May 2014 11:16:51 +0000 (13:16 +0200)]
block: Handle failure for potentially large allocations

Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses bounce buffer allocations in block.c. While at it,
convert bdrv_commit() from plain g_malloc() to qemu_try_blockalign().

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
10 years agoblock: Introduce qemu_try_blockalign()
Kevin Wolf [Tue, 20 May 2014 10:24:05 +0000 (12:24 +0200)]
block: Introduce qemu_try_blockalign()

This function returns NULL instead of aborting when an allocation fails.

Signed-off-by: Kevin Wolf <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
10 years agoblock: iotest - update 084 to test static VDI image creation
Jeff Cody [Wed, 23 Jul 2014 21:23:01 +0000 (17:23 -0400)]
block: iotest - update 084 to test static VDI image creation

This updates the VDI corruption test to also test static VDI image
creation, as well as the default dynamic image creation.

Reviewed-by: Max Reitz <[email protected]>
Signed-off-by: Jeff Cody <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
10 years agoblock: vpc - use block layer ops in vpc_create, instead of posix calls
Jeff Cody [Wed, 23 Jul 2014 21:23:00 +0000 (17:23 -0400)]
block: vpc - use block layer ops in vpc_create, instead of posix calls

Use the block layer to create, and write to, the image file in the VPC
.bdrv_create() operation.

This has a couple of benefits: Images can now be created over protocols,
and hacks such as NOCOW are not needed in the image format driver, and
the underlying file protocol appropriate for the host OS can be relied
upon.

Reviewed-by: Max Reitz <[email protected]>
Signed-off-by: Jeff Cody <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
10 years agoblock: use the standard 'ret' instead of 'result'
Jeff Cody [Wed, 23 Jul 2014 21:22:59 +0000 (17:22 -0400)]
block: use the standard 'ret' instead of 'result'

Most QEMU code uses 'ret' for function return values. The VDI driver
uses a mix of 'result' and 'ret'.  This cleans that up, switching over
to the standard 'ret' usage.

Reviewed-by: Max Reitz <[email protected]>
Signed-off-by: Jeff Cody <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
10 years agoblock: vdi - use block layer ops in vdi_create, instead of posix calls
Jeff Cody [Wed, 23 Jul 2014 21:22:58 +0000 (17:22 -0400)]
block: vdi - use block layer ops in vdi_create, instead of posix calls

Use the block layer to create, and write to, the image file in the
VDI .bdrv_create() operation.

This has a couple of benefits: Images can now be created over protocols,
and hacks such as NOCOW are not needed in the image format driver, and
the underlying file protocol appropriate for the host OS can be relied
upon.

Also some minor cleanup for error handling.

Reviewed-by: Max Reitz <[email protected]>
Signed-off-by: Jeff Cody <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
10 years agoblock: allow bdrv_unref() to be passed NULL pointers
Jeff Cody [Wed, 23 Jul 2014 21:22:57 +0000 (17:22 -0400)]
block: allow bdrv_unref() to be passed NULL pointers

If bdrv_unref() is passed a NULL BDS pointer, it is safe to
exit with no operation.  This will allow cleanup code to blindly
call bdrv_unref() on a BDS that has been initialized to NULL.

Reviewed-by: Max Reitz <[email protected]>
Signed-off-by: Jeff Cody <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
10 years agotest-coroutine: add baseline test that times the cost of function calls
Paolo Bonzini [Wed, 6 Aug 2014 09:33:41 +0000 (11:33 +0200)]
test-coroutine: add baseline test that times the cost of function calls

This can be used to compute the cost of coroutine operations.  In the
end the cost of the function call is a few clock cycles, so it's pretty
cheap for now, but it may become more relevant as the coroutine code
is optimized.

For example, here are the results on my machine:

   Function call 100000000 iterations: 0.173884 s
   Yield 100000000 iterations: 8.445064 s
   Lifecycle 1000000 iterations: 0.098445 s
   Nesting 10000 iterations of 1000 depth each: 7.406431 s

One yield takes 83 nanoseconds, one enter takes 97 nanoseconds,
one coroutine allocation takes (roughly, since some of the allocations
in the nesting test do hit the pool) 739 nanoseconds:

   (8.445064 - 0.173884) * 10^9 / 100000000 = 82.7
   (0.098445 * 100 - 0.173884) * 10^9 / 100000000 = 96.7
   (7.406431 * 10 - 0.173884) * 10^9 / 100000000 = 738.9

Signed-off-by: Paolo Bonzini <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
10 years agoblock: VHDX endian fixes
Jeff Cody [Wed, 6 Aug 2014 19:54:58 +0000 (15:54 -0400)]
block: VHDX endian fixes

This patch contains several changes for endian conversion fixes for
VHDX, particularly for big-endian machines (multibyte values in VHDX are
all on disk in LE format).

Tests were done with existing qemu-iotests on an IBM POWER7 (8406-71Y).
This includes sample images created by Hyper-V, both with dirty logs and
without.

In addition, VHDX image files created (and written to) on a BE machine
were tested on a LE machine, and vice-versa.

Reported-by: Markus Armburster <[email protected]>
Reported-by: Paolo Bonzini <[email protected]>
Signed-off-by: Jeff Cody <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
10 years agoblock: vhdx - add error check
Jeff Cody [Wed, 6 Aug 2014 19:54:57 +0000 (15:54 -0400)]
block: vhdx - add error check

This add an error check for an invalid descriptor entry signature,
when flushing the log descriptor entries.

Signed-off-by: Jeff Cody <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
10 years agothread-pool: avoid deadlock in nested aio_poll() calls
Stefan Hajnoczi [Tue, 15 Jul 2014 14:44:26 +0000 (16:44 +0200)]
thread-pool: avoid deadlock in nested aio_poll() calls

The thread pool has a race condition if two elements complete before
thread_pool_completion_bh() runs:

  If element A's callback waits for element B using aio_poll() it will
  deadlock since pool->completion_bh is not marked scheduled when the
  nested aio_poll() runs.

Fix this by marking the BH scheduled while thread_pool_completion_bh()
is executing.  This way any nested aio_poll() loops will enter
thread_pool_completion_bh() and complete the remaining elements.

Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agothread-pool: avoid per-thread-pool EventNotifier
Stefan Hajnoczi [Tue, 15 Jul 2014 14:44:25 +0000 (16:44 +0200)]
thread-pool: avoid per-thread-pool EventNotifier

EventNotifier is implemented using an eventfd or pipe.  It therefore
consumes file descriptors, which can be limited by rlimits and should
therefore be used sparingly.

Switch from EventNotifier to QEMUBH in thread-pool.c.  Originally
EventNotifier was used because qemu_bh_schedule() was not thread-safe
yet.

Reported-by: Christian Borntraeger <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agoblock: bump coroutine pool size for drives
Stefan Hajnoczi [Mon, 7 Jul 2014 13:15:53 +0000 (15:15 +0200)]
block: bump coroutine pool size for drives

When a BlockDriverState is associated with a storage controller
DeviceState we expect guest I/O.  Use this opportunity to bump the
coroutine pool size by 64.

This patch ensures that the coroutine pool size scales with the number
of drives attached to the guest.  It should increase coroutine pool
usage (which makes qemu_coroutine_create() fast) without hogging too
much memory when fewer drives are attached.

Signed-off-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
10 years agocoroutine: make pool size dynamic
Stefan Hajnoczi [Mon, 7 Jul 2014 13:15:52 +0000 (15:15 +0200)]
coroutine: make pool size dynamic

Allow coroutine users to adjust the pool size.  For example, if the
guest has multiple emulated disk drives we should keep around more
coroutines.

Signed-off-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
10 years agoqemu-iotests: add support for Archipelago protocol
Chrysostomos Nanakos [Wed, 23 Jul 2014 14:07:33 +0000 (17:07 +0300)]
qemu-iotests: add support for Archipelago protocol

Signed-off-by: Chrysostomos Nanakos <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agoQMP: Add support for Archipelago
Chrysostomos Nanakos [Wed, 30 Jul 2014 17:59:09 +0000 (20:59 +0300)]
QMP: Add support for Archipelago

Introduce new enum BlockdevOptionsArchipelago.

@volume:              #Name of the Archipelago volume image

@mport:               #'mport' is the port number on which mapperd is
                      listening. This is optional and if not specified,
                      QEMU will make Archipelago to use the default port.

@vport:               #'vport' is the port number on which vlmcd is
                      listening. This is optional and if not specified,
                      QEMU will make Archipelago to use the default port.

@segment:             #optional The name of the shared memory segment
                      Archipelago stack is using. This is optional
                      and if not specified, QEMU will make Archipelago
                      use the default value, 'archipelago'.

Signed-off-by: Chrysostomos Nanakos <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agoblock/archipelago: Add support for creating images
Chrysostomos Nanakos [Wed, 23 Jul 2014 14:07:31 +0000 (17:07 +0300)]
block/archipelago: Add support for creating images

qemu-img archipelago:<volumename>[/mport=<mapperd_port>[:vport=<vlmcd_port>]
 [:segment=<segment_name>]] [size]

Signed-off-by: Chrysostomos Nanakos <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agoblock/archipelago: Implement bdrv_parse_filename()
Chrysostomos Nanakos [Wed, 23 Jul 2014 14:07:30 +0000 (17:07 +0300)]
block/archipelago: Implement bdrv_parse_filename()

VM Image on Archipelago volume can also be specified like this:

file=archipelago:<volumename>[/mport=<mapperd_port>[:vport=<vlmcd_port>][:
segment=<segment_name>]]

Examples:

file=archipelago:my_vm_volume
file=archipelago:my_vm_volume/mport=123
file=archipelago:my_vm_volume/mport=123:vport=1234
file=archipelago:my_vm_volume/mport=123:vport=1234:segment=my_segment

Signed-off-by: Chrysostomos Nanakos <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agoblock: Support Archipelago as a QEMU block backend
Chrysostomos Nanakos [Mon, 4 Aug 2014 14:35:32 +0000 (17:35 +0300)]
block: Support Archipelago as a QEMU block backend

VM Image on Archipelago volume is specified like this:

file.driver=archipelago,file.volume=<volumename>[,file.mport=<mapperd_port>[,
file.vport=<vlmcd_port>][,file.segment=<segment_name>]]

'archipelago' is the protocol.

'mport' is the port number on which mapperd is listening. This is optional
and if not specified, QEMU will make Archipelago to use the default port.

'vport' is the port number on which vlmcd is listening. This is optional
and if not specified, QEMU will make Archipelago to use the default port.

'segment' is the name of the shared memory segment Archipelago stack is using.
This is optional and if not specified, QEMU will make Archipelago to use the
default value, 'archipelago'.

Examples:

file.driver=archipelago,file.volume=my_vm_volume
file.driver=archipelago,file.volume=my_vm_volume,file.mport=123
file.driver=archipelago,file.volume=my_vm_volume,file.mport=123,
file.vport=1234
file.driver=archipelago,file.volume=my_vm_volume,file.mport=123,
file.vport=1234,file.segment=my_segment

Signed-off-by: Chrysostomos Nanakos <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
10 years agoqemu-img info: show nocow info
Chunyan Liu [Wed, 30 Jul 2014 02:55:06 +0000 (10:55 +0800)]
qemu-img info: show nocow info

Add nocow info in 'qemu-img info' output to show whether the file
currently has NOCOW flag set or not.

Signed-off-by: Chunyan Liu <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agovmdk: Optimize cluster allocation
Fam Zheng [Wed, 30 Jul 2014 06:39:10 +0000 (14:39 +0800)]
vmdk: Optimize cluster allocation

This drops the unnecessary bdrv_truncate() from, and also improves,
cluster allocation code path.

Before, when we need a new cluster, get_cluster_offset truncates the
image to bdrv_getlength() + cluster_size, and returns the offset of
added area, i.e. the image length before truncating.

This is not efficient, so it's now rewritten as:

  - Save the extent file length when opening.

  - When allocating cluster, use the saved length as cluster offset.

  - Don't truncate image, because we'll anyway write data there: just
    write any data at the EOF position, in descending priority:

    * New user data (cluster allocation happens in a write request).

    * Filling data in the beginning and/or ending of the new cluster, if
      not covered by user data: either backing file content (COW), or
      zero for standalone images.

One major benifit of this change is, on host mounted NFS images, even
over a fast network, ftruncate is slow (see the example below). This
change significantly speeds up cluster allocation. Comparing by
converting a cirros image (296M) to VMDK on an NFS mount point, over
1Gbe LAN:

    $ time qemu-img convert cirros-0.3.1.img /mnt/a.raw -O vmdk

    Before:
        real    0m21.796s
        user    0m0.130s
        sys     0m0.483s

    After:
        real    0m2.017s
        user    0m0.047s
        sys     0m0.190s

We also get rid of unchecked bdrv_getlength() and bdrv_truncate(), and
get a little more documentation in function comments.

Tested that this passes qemu-iotests for all VMDK subformats.

Signed-off-by: Fam Zheng <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agoqemu-iotests: Add data pattern in version3 VMDK sample image in 059
Fam Zheng [Wed, 30 Jul 2014 06:39:09 +0000 (14:39 +0800)]
qemu-iotests: Add data pattern in version3 VMDK sample image in 059

It's possible that we diverge from the specification with our
implementation.  Having a reference image in the test cases may detect
such problems when we introduce a bug that can read what it creates, but
can't handle a real VMDK.

Signed-off-by: Fam Zheng <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agoqdev-monitor: include QOM properties in -device FOO, help output
Stefan Hajnoczi [Wed, 9 Jul 2014 12:01:32 +0000 (14:01 +0200)]
qdev-monitor: include QOM properties in -device FOO, help output

Update -device FOO,help to include QOM properties in addition to qdev
properties.  Devices are gradually adding more QOM properties that are
not reflected as qdev properties.

It is important to report all device properties since management tools
like libvirt use this information (and device-list-properties QMP) to
detect the presence of QEMU features.

This patch reuses the device-list-properties QMP machinery to avoid code
duplication.

Reported-by: Cole Robinson <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Tested-by: Cole Robinson <[email protected]>
10 years agoqmp: hide "hotplugged" device property from device-list-properties
Stefan Hajnoczi [Wed, 9 Jul 2014 12:01:31 +0000 (14:01 +0200)]
qmp: hide "hotplugged" device property from device-list-properties

The "hotplugged" device property was not reported before commit
f4eb32b590bf58c1c67570775eb78beb09964fad ("qmp: show QOM properties in
device-list-properties").  Fix this difference.

Signed-off-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
10 years agodocs/multiple-iothreads.txt: add documentation on IOThread programming
Stefan Hajnoczi [Wed, 23 Jul 2014 11:55:32 +0000 (12:55 +0100)]
docs/multiple-iothreads.txt: add documentation on IOThread programming

This document explains how IOThreads and the main loop are related,
especially how to write code that can run in an IOThread.  Currently
only virtio-blk-data-plane uses these techniques.  The next obvious
target is virtio-scsi; there has also been work on virtio-net.

Signed-off-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
10 years agoxen_disk: fix possible null-ptr dereference
Gonglei (Arei) [Mon, 28 Jul 2014 06:03:45 +0000 (06:03 +0000)]
xen_disk:  fix possible null-ptr dereference

Signed-off-by: Gonglei <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agoconfigure: explicitly state version requirements to devel packages
Hu Tao [Thu, 26 Jun 2014 09:34:50 +0000 (17:34 +0800)]
configure: explicitly state version requirements to devel packages

Signed-off-by: Hu Tao <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agodocs: Make the recommendation for the backing file name position a requirement
Maria Kustova [Mon, 21 Jul 2014 11:16:33 +0000 (15:16 +0400)]
docs: Make the recommendation for the backing file name position a requirement

The current version of the qcow2 specification recommends to save the backing
file name in the end of the first cluster. It follows that the backing file
name can be saved somewhere in the image, but the first cluster, which
contradicts the current QEMU implementation.

The patch makes the backing file name required to be placed after the header
extensions in the first image cluster.

Signed-off-by: Maria Kustova <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
10 years agoblock: Avoid bdrv_get_geometry() where errors should be detected
Markus Armbruster [Thu, 26 Jun 2014 11:23:25 +0000 (13:23 +0200)]
block: Avoid bdrv_get_geometry() where errors should be detected

bdrv_get_geometry() hides errors.  Use bdrv_nb_sectors() or
bdrv_getlength() instead where that's obviously inappropriate.

Signed-off-by: Markus Armbruster <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agoqemu-img: Make img_convert() get image size just once per image
Markus Armbruster [Thu, 26 Jun 2014 11:23:24 +0000 (13:23 +0200)]
qemu-img: Make img_convert() get image size just once per image

Chiefly so I don't have to do the error checking in quadruplicate in
the next commit.  Moreover, replacing the frequently updated
bs_sectors by an array assigned just once makes the code easier to
understand.

Signed-off-by: Markus Armbruster <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agoblock: Drop superfluous aligning of bdrv_getlength()'s value
Markus Armbruster [Thu, 26 Jun 2014 11:23:23 +0000 (13:23 +0200)]
block: Drop superfluous aligning of bdrv_getlength()'s value

It returns a multiple of the sector size.

Signed-off-by: Markus Armbruster <[email protected]>
Reviewed-by: Max Reitz <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agoblock: Use bdrv_nb_sectors() where sectors, not bytes are wanted
Markus Armbruster [Thu, 26 Jun 2014 11:23:22 +0000 (13:23 +0200)]
block: Use bdrv_nb_sectors() where sectors, not bytes are wanted

Instead of bdrv_getlength().

Aside: a few of these callers don't handle errors.  I didn't
investigate whether they should.

Signed-off-by: Markus Armbruster <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agoblock: Use bdrv_nb_sectors() in img_convert()
Markus Armbruster [Thu, 26 Jun 2014 11:23:21 +0000 (13:23 +0200)]
block: Use bdrv_nb_sectors() in img_convert()

Instead of bdrv_getlength().  Replace variable output_length by
output_sectors.

Signed-off-by: Markus Armbruster <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agoblock: Use bdrv_nb_sectors() in bdrv_co_get_block_status()
Markus Armbruster [Thu, 26 Jun 2014 11:23:20 +0000 (13:23 +0200)]
block: Use bdrv_nb_sectors() in bdrv_co_get_block_status()

Instead of bdrv_getlength().

Replace variables length, length2 by total_sectors, nb_sectors2.
Bonus: use total_sectors instead of the slightly unclean
bs->total_sectors.

Signed-off-by: Markus Armbruster <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agoblock: Use bdrv_nb_sectors() in bdrv_aligned_preadv()
Markus Armbruster [Thu, 26 Jun 2014 11:23:19 +0000 (13:23 +0200)]
block: Use bdrv_nb_sectors() in bdrv_aligned_preadv()

Instead of bdrv_getlength().  Eliminate variable len.

Signed-off-by: Markus Armbruster <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agoblock: Use bdrv_nb_sectors() in bdrv_make_zero()
Markus Armbruster [Thu, 26 Jun 2014 11:23:18 +0000 (13:23 +0200)]
block: Use bdrv_nb_sectors() in bdrv_make_zero()

Instead of bdrv_getlength().

Variable target_size is initially in bytes, then changes meaning to
sectors.  Ugh.  Replace by target_sectors.

Signed-off-by: Markus Armbruster <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agoblock: New bdrv_nb_sectors()
Markus Armbruster [Thu, 26 Jun 2014 11:23:17 +0000 (13:23 +0200)]
block: New bdrv_nb_sectors()

A call to retrieve the image size converts between bytes and sectors
several times:

* BlockDriver method bdrv_getlength() returns bytes.

* refresh_total_sectors() converts to sectors, rounding up, and stores
  in total_sectors.

* bdrv_getlength() converts total_sectors back to bytes (now rounded
  up to a multiple of the sector size).

* Callers wanting sectors rather bytes convert it right back.
  Example: bdrv_get_geometry().

bdrv_nb_sectors() provides a way to omit the last two conversions.
It's exactly bdrv_getlength() with the conversion to bytes omitted.
It's functionally like bdrv_get_geometry() without its odd error
handling.

Reimplement bdrv_getlength() and bdrv_get_geometry() on top of
bdrv_nb_sectors().

The next patches will convert some users of bdrv_getlength() to
bdrv_nb_sectors().

Signed-off-by: Markus Armbruster <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Benoit Canet <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agoMerge remote-tracking branch 'remotes/mjt/tags/trivial-patches-2014-08-09' into staging
Peter Maydell [Fri, 15 Aug 2014 12:41:55 +0000 (13:41 +0100)]
Merge remote-tracking branch 'remotes/mjt/tags/trivial-patches-2014-08-09' into staging

trivial patches for 2014-08-09

# gpg: Signature made Fri 08 Aug 2014 21:36:44 BST using RSA key ID A4C3D7DB
# gpg: Good signature from "Michael Tokarev <[email protected]>"
# gpg:                 aka "Michael Tokarev <[email protected]>"
# gpg:                 aka "Michael Tokarev <[email protected]>"
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 6EE1 95D1 886E 8FFB 810D  4324 457C E0A0 8044 65C5
#      Subkey fingerprint: 6F67 E18E 7C91 C5B1 5514  66A7 BEE5 9D74 A4C3 D7DB

* remotes/mjt/tags/trivial-patches-2014-08-09:
  build-sys: Move qapi-{types, visit, event}.o into util-obj-y
  po: Add Chinese translation
  qemu-img: Check getchar() return value in read_password() for WIN32
  hw/timer: Move extern declaration from .c to .h file
  virtio: Move extern declaration to header file
  Show length mismatch error is hex
  target-i386/cpu.c: Fix two error output indentation
  l2tpv3 (configure): it is linux-specific
  hw/timer/imx_*: fix TIMER_MAX clash with system symbol

Signed-off-by: Peter Maydell <[email protected]>
10 years agopc: Get rid of pci-info leftovers
Markus Armbruster [Tue, 12 Aug 2014 14:40:17 +0000 (16:40 +0200)]
pc: Get rid of pci-info leftovers

pc_fw_cfg_guest_info() never does anything, because has_pci_info is
always false.

Introduced in commit f8c457b "pc: pass PCI hole ranges to Guests",
disabled in commit 9604f70 "pc: disable pci-info for 1.6", and hasn't
been enabled since.  Obviously a dead end.  Get of it.

Signed-off-by: Markus Armbruster <[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
10 years agoe1000: use symbolic constants to init phy ctrl & status registers
Gabriel L. Somlo [Wed, 6 Aug 2014 18:07:11 +0000 (14:07 -0400)]
e1000: use symbolic constants to init phy ctrl & status registers

Signed-off-by: Gabriel Somlo <[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
10 years agoe1000: correctly handle phy_ctrl reserved & self-clearing bits
Gabriel L. Somlo [Wed, 6 Aug 2014 18:07:10 +0000 (14:07 -0400)]
e1000: correctly handle phy_ctrl reserved & self-clearing bits

Make phyreg_writeops responsible for actually writing their
respective phy registers, rather than rely on set_mdic() to
do it on their behalf.

The only current instance of phyreg_writeops is set_phy_ctrl();
modify it to write the register on its own, while also correctly
handling reserved and self-clearing bits.

have_autoneg() does not need to check for MII_CR_RESTART_AUTO_NEG,
since the only time the flag comes into play is during set_phy_ctrl(),
and, following this patch, never actually gets written to the phy
control register.

Signed-off-by: Gabriel Somlo <[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
10 years agoivshmem: fix building when debug mode is enabled
Levente Kurusa [Mon, 4 Aug 2014 15:06:20 +0000 (17:06 +0200)]
ivshmem: fix building when debug mode is enabled

ivsmem_offset was removed, however this debug statement was not updated.
Modify the statement to fit the new mechanic.

Signed-off-by: Levente Kurusa <[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
10 years agoacpi: align RSDP
Michael S. Tsirkin [Mon, 4 Aug 2014 14:56:57 +0000 (16:56 +0200)]
acpi: align RSDP

RSDP should be aligned at a 16-byte boundary.
This would by chance at the moment, fix up acpi build
to make it robust.

Cc: [email protected]
Signed-off-by: Michael S. Tsirkin <[email protected]>
Reviewed-by: Laszlo Ersek <[email protected]>
10 years agonuma: show hex number in error message for consistency and prefix them with 0x
Hu Tao [Mon, 4 Aug 2014 08:16:09 +0000 (16:16 +0800)]
numa: show hex number in error message for consistency and prefix them with 0x

The error messages before and after patch are:

before:
qemu-system-x86_64: total memory for NUMA nodes (134217728) should equal RAM size (20000000)

after:
qemu-system-x86_64: total memory for NUMA nodes (0x8000000) should equal RAM size (0x20000000)

Cc: [email protected]
Signed-off-by: Hu Tao <[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
10 years agopc-dimm: fix up error message
Michael S. Tsirkin [Mon, 4 Aug 2014 12:21:59 +0000 (14:21 +0200)]
pc-dimm: fix up error message

- int should be printed using %d
- print actual wrong value for property

Cc: [email protected]
Signed-off-by: Michael S. Tsirkin <[email protected]>
10 years agopc-dimm: validate node property
Hu Tao [Mon, 4 Aug 2014 08:16:08 +0000 (16:16 +0800)]
pc-dimm: validate node property

If user specifies a node number that exceeds the available numa nodes in
emulated system for pc-dimm device, the device will report an invalid _PXM
to OSPM. Fix this by checking the node property value.

Cc: [email protected]
Signed-off-by: Hu Tao <[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
10 years agohw:i386: typo fix: MEMORY_HOPTLUG_DEVICE -> MEMORY_HOTPLUG_DEVICE
Hu Tao [Mon, 4 Aug 2014 08:16:07 +0000 (16:16 +0800)]
hw:i386: typo fix: MEMORY_HOPTLUG_DEVICE -> MEMORY_HOTPLUG_DEVICE

Cc: [email protected]
Signed-off-by: Hu Tao <[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
10 years agohw/audio/intel-hda: Fix MSI capability address
Jan Kiszka [Wed, 30 Jul 2014 07:02:01 +0000 (09:02 +0200)]
hw/audio/intel-hda: Fix MSI capability address

According to ICH9 spec, the MSI capability is located at 0x60. This is
important for guest drivers that do not parse the capability chain and
use absolute addresses instead.

CC: Gerd Hoffmann <[email protected]>
Signed-off-by: Jan Kiszka <[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
10 years agopc: Create 2.2 machine type
Jan Kiszka [Wed, 30 Jul 2014 07:02:00 +0000 (09:02 +0200)]
pc: Create 2.2 machine type

Yet identical to 2.1.

Signed-off-by: Jan Kiszka <[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
10 years agopci: Use bus master address space for delivering MSI/MSI-X messages
Jan Kiszka [Sun, 27 Jul 2014 07:08:29 +0000 (09:08 +0200)]
pci: Use bus master address space for delivering MSI/MSI-X messages

The spec says (and real HW confirms this) that, if the bus master bit
is 0, the device will not generate any PCI accesses. MSI and MSI-X
messages fall among these, so we should use the corresponding address
space to deliver them. This will prevent delivery if bus master support
is disabled.

Cc: [email protected]
Signed-off-by: Jan Kiszka <[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
10 years agovirtio-rng: add some trace events
Amit Shah [Mon, 4 Aug 2014 10:52:44 +0000 (16:22 +0530)]
virtio-rng: add some trace events

Add some trace events to virtio-rng for easier debugging

Signed-off-by: Amit Shah <[email protected]>
Reviewed-by: Amos Kong <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agotrace: add some tcg tracing support
Alex Bennée [Fri, 1 Aug 2014 16:08:57 +0000 (17:08 +0100)]
trace: add some tcg tracing support

This adds a couple of tcg specific trace-events which are useful for
tracing execution though tcg generated blocks. It's been tested with
lttng user space tracing but is generic enough for all systems. The tcg
events are:

  * translate_block - when a subject block is translated
  * exec_tb - when a translated block is entered
  * exec_tb_exit - when we exit the translated code
  * exec_tb_nocache - special case translations

Of course we can only trace the entrance to the first block of a chain
as each block will jump directly to the next when it can. See the -d
nochain patch to allow more complete tracing at the expense of
performance.

Signed-off-by: Alex Bennée <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agotrace: teach lttng backend to use format strings
Alex Bennée [Fri, 1 Aug 2014 16:08:56 +0000 (17:08 +0100)]
trace: teach lttng backend to use format strings

This makes the UST backend pay attention to the format string arguments
that are defined when defining payload data. With this you can now
ensure integers are reported in hex mode if you want.

Signed-off-by: Alex Bennée <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agotrace: [tcg] Include TCG-tracing header on all targets
Lluís Vilanova [Fri, 30 May 2014 12:12:25 +0000 (14:12 +0200)]
trace: [tcg] Include TCG-tracing header on all targets

Signed-off-by: Lluís Vilanova <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agotrace: [tcg] Include event definitions in "trace.h"
Lluís Vilanova [Fri, 30 May 2014 12:12:19 +0000 (14:12 +0200)]
trace: [tcg] Include event definitions in "trace.h"

Otherwise the user has to explicitly include an auto-generated header.

Signed-off-by: Lluís Vilanova <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agotrace: [tcg] Generate TCG tracing routines
Lluís Vilanova [Fri, 30 May 2014 12:12:13 +0000 (14:12 +0200)]
trace: [tcg] Generate TCG tracing routines

Generate header "trace/generated-tcg-tracers.h" with the necessary routines for
tracing events in guest code:

* trace_${event}_tcg

  Convenience wrapper that calls the translation-time tracer
  'trace_${event}_trans', and calls 'gen_helper_trace_${event}_exec to
  generate the TCG code to later trace the event at execution time.

Signed-off-by: Lluís Vilanova <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agotrace: [tcg] Include TCG-tracing helpers
Lluís Vilanova [Fri, 30 May 2014 12:12:07 +0000 (14:12 +0200)]
trace: [tcg] Include TCG-tracing helpers

Signed-off-by: Lluís Vilanova <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
10 years agotrace: [tcg] Define TCG tracing helper routine wrappers
Lluís Vilanova [Fri, 30 May 2014 12:12:01 +0000 (14:12 +0200)]
trace: [tcg] Define TCG tracing helper routine wrappers

Generates header "trace/generated-helpers-wrappers.h" with definitions for TCG
helper wrappers.

These wrappers ('gen_helper_trace_${event}_exec_wrapper') transform mixed native
and TCG argument types to TCG types and call the actual TCG helpers
('gen_helper_trace_${event}_exec_proxy').

Signed-off-by: Lluís Vilanova <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
This page took 0.084431 seconds and 4 git commands to generate.