]> git.proxmox.com Git - qemu.git/log
qemu.git
10 years agotarget-openrisc: Remove executable flag for every page
Sebastian Macke [Tue, 22 Oct 2013 00:12:39 +0000 (02:12 +0200)]
target-openrisc: Remove executable flag for every page

Pages should be flagged executable only if the tlb executable flag is
set or the mmu is off.

Signed-off-by: Sebastian Macke <sebastian@macke.de>
Reviewed-by: Jia Liu <proljc@gmail.com>
Signed-off-by: Jia Liu <proljc@gmail.com>
10 years agotarget-openrisc: Remove unnecessary code generated by jump instructions
Sebastian Macke [Tue, 22 Oct 2013 00:12:38 +0000 (02:12 +0200)]
target-openrisc: Remove unnecessary code generated by jump instructions

The sr_f variable is only used for the l.bf and l.bnf instructions.
For clarity the code is also rewritten using a switch statement instead
of if chaining.

Signed-off-by: Sebastian Macke <sebastian@macke.de>
Reviewed-by: Jia Liu <proljc@gmail.com>
Signed-off-by: Jia Liu <proljc@gmail.com>
10 years agotarget-openrisc: Speed up move instruction
Sebastian Macke [Tue, 22 Oct 2013 00:12:37 +0000 (02:12 +0200)]
target-openrisc: Speed up move instruction

The OpenRISC architecture does not have its own move register
instruction. Instead it uses either "l.addi rd, r0, x" or
"l.ori rd, rs, 0" or "l.or rd, rx, r0"

The l.ori instruction is automatically optimized but not the l.addi instruction.
This patch optimizes for this special case.

Signed-off-by: Sebastian Macke <sebastian@macke.de>
Reviewed-by: Jia Liu <proljc@gmail.com>
Signed-off-by: Jia Liu <proljc@gmail.com>
10 years agoMerge remote-tracking branch 'quintela/migration.next' into staging
Anthony Liguori [Tue, 19 Nov 2013 21:03:06 +0000 (13:03 -0800)]
Merge remote-tracking branch 'quintela/migration.next' into staging

# By Peter Lieven
# Via Juan Quintela
* quintela/migration.next:
  migration: drop MADVISE_DONT_NEED for incoming zero pages

Message-id: 1384878412-23521-1-git-send-email-quintela@redhat.com
Signed-off-by: Anthony Liguori <aliguori@amazon.com>
10 years agoMerge remote-tracking branch 'stefanha/block' into staging
Anthony Liguori [Tue, 19 Nov 2013 21:00:52 +0000 (13:00 -0800)]
Merge remote-tracking branch 'stefanha/block' into staging

# By Andreas Färber
# Via Stefan Hajnoczi
* stefanha/block:
  qtest: Use -display none by default

10 years agoMerge remote-tracking branch 'afaerber/tags/qom-devices-for-anthony' into staging
Anthony Liguori [Tue, 19 Nov 2013 21:00:09 +0000 (13:00 -0800)]
Merge remote-tracking branch 'afaerber/tags/qom-devices-for-anthony' into staging

QOM infrastructure fixes for 1.7

* QOM memory leak fix

# gpg: Signature made Tue 19 Nov 2013 01:58:58 AM PST using RSA key ID 3E7E013F
# gpg: Can't check signature: public key not found

# By Vlad Yasevich
# Via Andreas Färber
* afaerber/tags/qom-devices-for-anthony:
  qom: Fix memory leak in object_property_set_link()

10 years agoMerge remote-tracking branch 'rth/tcg-ia64-17' into staging
Anthony Liguori [Tue, 19 Nov 2013 21:00:02 +0000 (13:00 -0800)]
Merge remote-tracking branch 'rth/tcg-ia64-17' into staging

# By Richard Henderson
# Via Richard Henderson
* rth/tcg-ia64-17:
  tcg-ia64: Introduce tcg_opc_bswap64_i
  tcg-ia64: Introduce tcg_opc_ext_i
  tcg-ia64: Introduce tcg_opc_movi_a
  tcg-ia64: Introduce tcg_opc_mov_a
  tcg-ia64: Use A3 form of logical operations
  tcg-ia64: Use SUB_A3 and ADDS_A4 for subtraction
  tcg-ia64: Use ADDS for small addition
  tcg-ia64: Avoid unnecessary stop bit in tcg_out_alu
  tcg-ia64: Move AREG0 to R32
  tcg-ia64: Simplify brcond
  tcg-ia64: Handle constant calls
  tcg-ia64: Use shortcuts for nop insns
  tcg-ia64: Use TCGMemOp within qemu_ldst routines

Message-id: 1384811395-7097-1-git-send-email-rth@twiddle.net
Signed-off-by: Anthony Liguori <aliguori@amazon.com>
10 years agoMerge remote-tracking branch 'mst/tags/for_anthony' into staging
Anthony Liguori [Tue, 19 Nov 2013 20:59:48 +0000 (12:59 -0800)]
Merge remote-tracking branch 'mst/tags/for_anthony' into staging

pc last minute fixes for 1.8

This has a patch that drops an unused FW CFG entry.
I think it's best to include it before 1.7 to avoid
the need to maintain it in compat machine types.

There's also a doc bugfix by Amos: I'm guessing
doc fixes are still fair game even at this late stage.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
# gpg: Signature made Mon 18 Nov 2013 03:48:14 AM PST using RSA key ID D28D5469
# gpg: Can't check signature: public key not found

# By Amos Kong (1) and Igor Mammedov (1)
# Via Michael S. Tsirkin
* mst/tags/for_anthony:
  doc: fix hardcoded helper path
  pc: disable pci-info

Message-id: 1384775449-6693-1-git-send-email-mst@redhat.com
Signed-off-by: Anthony Liguori <aliguori@amazon.com>
10 years agoMerge remote-tracking branch 'mjt/trivial-patches' into staging
Anthony Liguori [Tue, 19 Nov 2013 20:59:26 +0000 (12:59 -0800)]
Merge remote-tracking branch 'mjt/trivial-patches' into staging

# By Jan Krupa (4) and others
# Via Michael Tokarev
* mjt/trivial-patches:
  hw/i386/Makefile.obj: use $(PYTHON) to run .py scripts consistently
  configure: Use -B switch only for Python versions which support it
  qga: Fix shutdown command of guest agent to work with SysV
  console: Remove unused debug code
  qga: Fix compilation for old versions of MinGW
  .travis.yml: basic compile and check recipes
  pci-assign: Fix error_report of pci-stub message
  qapi: Fix comment for create-type to match code.
  vl: fix build when configured with no graphic support
  usb: drop unused USBNetState.inpkt field
  qemu-char: add missing characters used in keymaps
  qemu-char: add support for U-prefixed symbols
  qemu-char: add Czech keymap file
  qemu-char: add Czech characters to VNC keysyms

Message-id: 1384684850-6777-1-git-send-email-mjt@msgid.tls.msk.ru
Signed-off-by: Anthony Liguori <aliguori@amazon.com>
10 years agoMerge remote-tracking branch 'kwolf/tags/for-anthony' into staging
Anthony Liguori [Tue, 19 Nov 2013 20:59:09 +0000 (12:59 -0800)]
Merge remote-tracking branch 'kwolf/tags/for-anthony' into staging

Block fixes for 1.7.0

# gpg: Signature made Fri 15 Nov 2013 09:51:25 AM PST using RSA key ID C88F2FD6
# gpg: Can't check signature: public key not found

# By Max Reitz (3) and others
# Via Kevin Wolf
* kwolf/tags/for-anthony:
  block: Fail if requested driver is not available
  MAINTAINERS: add block driver sub-maintainers
  qemu-img: Fix overwriting 'ret' before using
  qemu-iotests: Test qcow2 count_contiguous_clusters()
  qcow2: fix possible corruption when reading multiple clusters
  qmp: access the local QemuOptsLists for drive option
  MAINTAINERS: add block tree repo URLs
  qemu-iotests: Extend 041 for unbacked mirroring
  block/drive-mirror: Check for NULL backing_hd
  qapi-schema: Update description for NewImageMode
  block: Print its file name if backing file opening failed

Message-id: 1384537999-5972-1-git-send-email-kwolf@redhat.com
Signed-off-by: Anthony Liguori <aliguori@amazon.com>
10 years agoMerge remote-tracking branch 'stefanha/net' into staging
Anthony Liguori [Tue, 19 Nov 2013 20:58:32 +0000 (12:58 -0800)]
Merge remote-tracking branch 'stefanha/net' into staging

# By Amos Kong (1) and Sebastian Huber (1)
# Via Stefan Hajnoczi
* stefanha/net:
  virtio-net: fix the memory leak in rxfilter_notify()
  smc91c111: Fix receive starvation

Message-id: 1384532032-19057-1-git-send-email-stefanha@redhat.com
Signed-off-by: Anthony Liguori <aliguori@amazon.com>
10 years agoMerge remote-tracking branch 'agraf/tags/signed-ppc-for-upstream-1.7' into staging
Anthony Liguori [Tue, 19 Nov 2013 20:57:16 +0000 (12:57 -0800)]
Merge remote-tracking branch 'agraf/tags/signed-ppc-for-upstream-1.7' into staging

Patch queue for ppc - 2013-11-08

These are two patches that will hopefully make it into 1.7. The SLOF update
fixes -append kernel command line argument passing into the guest kernel. The
other patch makes VIO devices appear when using -device '?'.

# gpg: Signature made Thu 07 Nov 2013 07:34:54 PM PST using RSA key ID 03FEDC60
# gpg: Can't check signature: public key not found

# By Alexey Kardashevskiy
# Via Alexander Graf
* agraf/tags/signed-ppc-for-upstream-1.7:
  pseries: Update SLOF firmware image
  spapr: add vio-bus devices to categories

Message-id: 1383881766-13958-1-git-send-email-agraf@suse.de
Signed-off-by: Anthony Liguori <aliguori@amazon.com>
10 years agomigration: drop MADVISE_DONT_NEED for incoming zero pages
Peter Lieven [Thu, 24 Oct 2013 07:21:29 +0000 (09:21 +0200)]
migration: drop MADVISE_DONT_NEED for incoming zero pages

The madvise for zeroed out pages was introduced when every transferred
zero page was memset to zero and thus allocated. Since commit
211ea740 we check for zeroness of a target page before we memset
it to zero. Additionally we memmap target memory so it is essentially
zero initialized (except for e.g. option roms and bios which are loaded
into target memory although they shouldn't).

It was reported recently that this madvise causes a performance degradation
in some situations. As the madvise should only be called rarely and if it's called
it is likely on a busy page (it was non-zero and changed to zero during migration)
drop it completely.

Reported-By: Zhang Haoyu <haoyu.zhang@huawei.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Peter Lieven <pl@kamp.de>
Signed-off-by: Juan Quintela <quintela@redhat.com>
10 years agoqom: Fix memory leak in object_property_set_link()
Vlad Yasevich [Fri, 15 Nov 2013 17:09:47 +0000 (12:09 -0500)]
qom: Fix memory leak in object_property_set_link()

Save the result of the call to object_get_canonical_path()
so we can free it.

Cc: qemu-stable@nongnu.org
Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
Reviewed-by: Amos Kong <akong@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
10 years agoqtest: Use -display none by default
Andreas Färber [Mon, 18 Nov 2013 16:36:34 +0000 (17:36 +0100)]
qtest: Use -display none by default

This avoids each test needing to add it to suppress windows popping up.

[Commit 7ceeedd016facf8d58e14a0d1417fa7225d71072 ("blockdev-test: add
test case for drive_add duplicate IDs") and commit
43cd209803d6cffb1e1a028c9ff2fd0ff4fce954 ("qdev-monitor-test: add
device_add leak test cases") added qtest tests without specifying
-display none.

As a result, "make check" now tries to use graphics (GTK or SDL).  Since
graphics are not used by the test and inappropriate for headless "make
check" runs, add the missing -display none.

This fixes "make check" in the QEMU buildbot.
-- Stefan]

Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agovirtio-net: fix the memory leak in rxfilter_notify()
Amos Kong [Mon, 18 Nov 2013 15:32:17 +0000 (23:32 +0800)]
virtio-net: fix the memory leak in rxfilter_notify()

object_get_canonical_path() returns a gchar*, it should be freed by the
caller.

Signed-off-by: Amos Kong <akong@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Vlad Yasevich <vyasevic@redhat.com>
Reviewed-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agodoc: fix hardcoded helper path
Amos Kong [Tue, 22 Oct 2013 20:49:28 +0000 (04:49 +0800)]
doc: fix hardcoded helper path

The install directory of qemu-bridge-helper is configurable,
but we use a fixed path in the documentation.

DEFAULT_BRIDGE_HELPER macro isn't available in texi mode,
we should always use "/path/to/" prefix for dynamic paths
(e.g.: /path/to/image, /path/to/linux, etc).

Signed-off-by: Amos Kong <akong@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
10 years agotcg-ia64: Introduce tcg_opc_bswap64_i
Richard Henderson [Thu, 5 Sep 2013 23:20:40 +0000 (19:20 -0400)]
tcg-ia64: Introduce tcg_opc_bswap64_i

Acked-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
10 years agotcg-ia64: Introduce tcg_opc_ext_i
Richard Henderson [Thu, 5 Sep 2013 23:13:41 +0000 (19:13 -0400)]
tcg-ia64: Introduce tcg_opc_ext_i

Being able to "extend" from 64-bits (with a mov) simplifies
a few places where the conditional breaks the train of thought.

Acked-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
10 years agotcg-ia64: Introduce tcg_opc_movi_a
Richard Henderson [Thu, 5 Sep 2013 22:56:39 +0000 (18:56 -0400)]
tcg-ia64: Introduce tcg_opc_movi_a

Acked-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
10 years agotcg-ia64: Introduce tcg_opc_mov_a
Richard Henderson [Thu, 5 Sep 2013 22:48:42 +0000 (18:48 -0400)]
tcg-ia64: Introduce tcg_opc_mov_a

Acked-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
10 years agotcg-ia64: Use A3 form of logical operations
Richard Henderson [Thu, 5 Sep 2013 21:13:43 +0000 (17:13 -0400)]
tcg-ia64: Use A3 form of logical operations

We can and/or/xor/andcm small constants, saving one cycle.

Acked-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
10 years agotcg-ia64: Use SUB_A3 and ADDS_A4 for subtraction
Richard Henderson [Thu, 5 Sep 2013 20:44:18 +0000 (16:44 -0400)]
tcg-ia64: Use SUB_A3 and ADDS_A4 for subtraction

We can subtract from more small constants that just 0 with one insn,
and we can add the negative for most small constants.

Acked-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
10 years agotcg-ia64: Use ADDS for small addition
Richard Henderson [Thu, 5 Sep 2013 20:15:13 +0000 (16:15 -0400)]
tcg-ia64: Use ADDS for small addition

Avoids a wasted cycle loading up small constants.

Simplify the code assuming the tcg optimizer is going to work
and don't expect the first operand of the add to be constant.

Acked-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
10 years agotcg-ia64: Avoid unnecessary stop bit in tcg_out_alu
Richard Henderson [Thu, 5 Sep 2013 19:56:44 +0000 (15:56 -0400)]
tcg-ia64: Avoid unnecessary stop bit in tcg_out_alu

When performing an operation with two input registers, we'd leave
the stop bit (and thus an extra cycle) that's only needed when one
or the other input is a constant.

Acked-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
10 years agotcg-ia64: Move AREG0 to R32
Richard Henderson [Thu, 5 Sep 2013 18:45:54 +0000 (14:45 -0400)]
tcg-ia64: Move AREG0 to R32

Since the move away from the global areg0, we're no longer globally
reserving areg0.  Which means our use of R7 clobbers a call-saved
register.  Shift areg0 into the windowed registers.  Indeed, choose
the incoming parameter register that it comes to us by.

This requires moving the register holding the return address elsewhere.
Choose R33 for tidiness.

Acked-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
10 years agotcg-ia64: Simplify brcond
Richard Henderson [Thu, 5 Sep 2013 16:47:41 +0000 (12:47 -0400)]
tcg-ia64: Simplify brcond

There was a misconception that a stop bit is required between a compare
and the branch that uses the predicate set by the compare.  This lead to
the usage of an extra bundle in which to perform the compare.  The extra
bundle left room for constants to be loaded for use with the compare insn.

If we pack the compare and the branch together in the same bundle, then
there's no longer any room for non-zero constants.  At which point we
can eliminate half the function by not handling them.

Acked-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
10 years agotcg-ia64: Handle constant calls
Richard Henderson [Thu, 5 Sep 2013 16:11:27 +0000 (12:11 -0400)]
tcg-ia64: Handle constant calls

Using only indirect calls results in 3 bundles (one to load the
descriptor address), and 4 stop bits.  By looking through the
descriptor to the constants, we can perform the call with 2
bundles and only 1 stop bit.

Acked-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
10 years agotcg-ia64: Use shortcuts for nop insns
Richard Henderson [Wed, 4 Sep 2013 23:00:52 +0000 (19:00 -0400)]
tcg-ia64: Use shortcuts for nop insns

There's no need to go through the full opcode-to-insn function call
to generate nops.  This makes the source a bit more readable.

Acked-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
10 years agotcg-ia64: Use TCGMemOp within qemu_ldst routines
Richard Henderson [Wed, 4 Sep 2013 21:24:38 +0000 (17:24 -0400)]
tcg-ia64: Use TCGMemOp within qemu_ldst routines

Acked-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
10 years agohw/i386/Makefile.obj: use $(PYTHON) to run .py scripts consistently
Michael Tokarev [Sat, 16 Nov 2013 10:09:14 +0000 (14:09 +0400)]
hw/i386/Makefile.obj: use $(PYTHON) to run .py scripts consistently

$(PYTHON) is a Make variable which is set by configure.
In all other places over the tree, .py files are run from
Makefiles using this variable, except of a single leftover
in hw/i386/Makefile.obj (and a nearby place in there uses
$(PYTHON) correctly).  Fix this leftover too.

Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Cc: Luigi Rizzo <rizzo@iet.unipi.it>
Reviewed-by:: Stefan Weil <sw@weilnetz.de>

10 years agoconfigure: Use -B switch only for Python versions which support it
Stefan Weil [Thu, 14 Nov 2013 18:07:03 +0000 (19:07 +0100)]
configure: Use -B switch only for Python versions which support it

Commit 1d984a67a95d88f3e708b077dab8adeb47c38c93 added the -B switch
unconditionally. This breaks Python versions before 2.6 which don't
support that switch.

Now configure adds -B only if it is accepted by the Python interpreter.

This modification introduces a small incompatibility because -B might now
also be added when configure was called with --python=PYTHON_INTERPRETER.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
10 years agoqga: Fix shutdown command of guest agent to work with SysV
whitearchey [Wed, 6 Nov 2013 01:54:04 +0000 (10:54 +0900)]
qga: Fix shutdown command of guest agent to work with SysV

For now guest agent uses following command to shutdown system:
shutdown -P +0 "blabla"
but this syntax works only with shutdown command from systemd or upstart,
because SysV shutdown requires -h switch.

Following patch changes the command so it works with systemd, upstart and SysV

With upstart/systemd qga use one of thee commands, depending on 'mode' parameter:
  shutdown -P +0 "..."
  shutdown -H +0 "..."
  shutdown -r +0 "..."
SysV equivalents for these are:
  shutdown -h -P +0 "..."
  shutdown -h -H +0 "..."
  shutdown -h -r +0 "..."
and these retain their meaning with upstart/systemd.

According to FreeBSD manpages, shutdown does not accept -P and -H options. Commands should be:
  shutdown -p +0 "..."
  shutdown -h +0 "..."
  shutdown -r +0 "..."

shutdown in Solaris does not accept any of -hHpPr and does not accept time in "+0" format

Signed-off-by: Michael Avdienko <whitearchey@gmail.com>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
10 years agoblock: Fail if requested driver is not available
Kevin Wolf [Thu, 8 Aug 2013 15:44:52 +0000 (17:44 +0200)]
block: Fail if requested driver is not available

If an explicit driver option is present, but doesn't specify a valid
driver, then bdrv_open() should fail instead of probing the format.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Jeff Cody <jcody@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoMAINTAINERS: add block driver sub-maintainers
Stefan Hajnoczi [Wed, 13 Nov 2013 09:33:10 +0000 (10:33 +0100)]
MAINTAINERS: add block driver sub-maintainers

There are a number of contributors who maintain block drivers (image
formats and protocols).  They should be listed in the MAINTAINERS file
so that get_maintainer.pl lists them.

Note that commits are still merged through Kevin or Stefan's block tree
but the block driver sub-maintainers are usually the ones to review
patches.

Acked-by: Kevin Wolf <kwolf@redhat.com>
Acked-by: Richard W.M. Jones <rjones@redhat.com>
Acked-by: Stefan Weil <sw@weilnetz.de>
Acked-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Acked-by: Jeff Cody <jcody@redhat.com>
Acked-by: Anthony Liguori <aliguori@amazon.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
10 years agoqemu-img: Fix overwriting 'ret' before using
Fam Zheng [Wed, 13 Nov 2013 12:26:49 +0000 (20:26 +0800)]
qemu-img: Fix overwriting 'ret' before using

This patch moves ret assignment after reporting original error.

We were lucky to pass qemu-iotests 048 (qemu-img compare case) but when
I tried to run with TEST_DIR=/tmp (tmpfs), it fails with a "wrong"
mismatch offset. This fixes two bugs.

In the first if branch, setting ret to 1 before using it makes dead code
in the next line: pnum is never added to mismatch offset even if ret was
0.

In the other if branch, currently the output error is always -4:
  strerror(-4) -> Unknown error -4

Added regression test in case 048.

Signed-off-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Amos Kong <akong@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
10 years agoqemu-iotests: Test qcow2 count_contiguous_clusters()
Kevin Wolf [Wed, 13 Nov 2013 11:00:10 +0000 (12:00 +0100)]
qemu-iotests: Test qcow2 count_contiguous_clusters()

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agosmc91c111: Fix receive starvation
Sebastian Huber [Thu, 14 Nov 2013 13:53:46 +0000 (14:53 +0100)]
smc91c111: Fix receive starvation

In case the smc91c111 interface signals that it cannot receive more
packets the packets are queued and further reception will be disabled.
In case the interface is again ready to receive packets notify the upper
layer.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoqcow2: fix possible corruption when reading multiple clusters
Peter Lieven [Tue, 12 Nov 2013 12:48:07 +0000 (13:48 +0100)]
qcow2: fix possible corruption when reading multiple clusters

if multiple sectors spanning multiple clusters are read the
function count_contiguous_clusters should ensure that the
cluster type should not change between the clusters.

Especially the for-loop should break when we have one
or more normal clusters followed by a compressed cluster.

Unfortunately the wrong macro was used in the mask to
compare the flags.

This was discovered while debugging a data corruption
issue when converting a compressed qcow2 image to raw.
qemu-img reads 2MB chunks which span multiple clusters.

CC: qemu-stable@nongnu.org
Signed-off-by: Peter Lieven <pl@kamp.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
10 years agoqmp: access the local QemuOptsLists for drive option
Amos Kong [Sat, 9 Nov 2013 04:15:47 +0000 (12:15 +0800)]
qmp: access the local QemuOptsLists for drive option

Currently we have three QemuOptsList (qemu_common_drive_opts,
qemu_legacy_drive_opts, and qemu_drive_opts), only qemu_drive_opts
is added to vm_config_groups[].

This patch changes query-command-line-options to access three local
QemuOptsLists for drive option, and merge the description items
together.

Signed-off-by: Amos Kong <akong@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
10 years agoMAINTAINERS: add block tree repo URLs
Stefan Hajnoczi [Wed, 6 Nov 2013 15:06:25 +0000 (16:06 +0100)]
MAINTAINERS: add block tree repo URLs

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
10 years agoqemu-iotests: Extend 041 for unbacked mirroring
Max Reitz [Wed, 6 Nov 2013 18:50:45 +0000 (19:50 +0100)]
qemu-iotests: Extend 041 for unbacked mirroring

Add a new test case in file 041 for mirroring unbacked images in
"absolute-paths" mode. This should work, if possible, but most
importantly, qemu should never crash.

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
10 years agoblock/drive-mirror: Check for NULL backing_hd
Max Reitz [Wed, 6 Nov 2013 18:50:44 +0000 (19:50 +0100)]
block/drive-mirror: Check for NULL backing_hd

It should be possible to execute the QMP "drive-mirror" command in
"none" sync mode and "absolute-paths" mode even for block devices
lacking a backing file.

"absolute-paths" does in fact not require a backing file to be present,
as can be seen from the "top" sync mode code path. "top" basically
states that the device should indeed have a backing file - however, the
current code catches the case if it doesn't and then simply treats it as
"full" sync mode, creating a target image without a backing file (in
"absolute-paths" mode). Thus, "absolute-paths" does not imply the target
file must indeed have a backing file.

Therefore, the target file may be left unbacked in case of "none" sync
mode as well, if the specified device is not backed either. Currently,
qemu will crash trying to dereference the backing file pointer since it
assumes that it will always be non-NULL in that case ("none" with
"absolute-paths").

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
10 years agoqapi-schema: Update description for NewImageMode
Max Reitz [Thu, 7 Nov 2013 18:47:48 +0000 (19:47 +0100)]
qapi-schema: Update description for NewImageMode

If the NewImageMode is "absolute-paths" but no backing file is available
(e.g., when mirroring a device with an unbacked image), the target image
will not be backed either. This patch updates the documentation in
qapi-schema.json accordingly.

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Benoit Canet <benoit@irqsave.net>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
10 years agoblock: Print its file name if backing file opening failed
Fam Zheng [Fri, 8 Nov 2013 03:26:49 +0000 (11:26 +0800)]
block: Print its file name if backing file opening failed

If backing file doesn't exist, the error message is confusing and
misleading:

    $ qemu /tmp/a.qcow2
    qemu: could not open disk image /tmp/a.qcow2: Could not open file: No
    such file or directory

But...

    $ ls /tmp/a.qcow2
    /tmp/a.qcow2

    $ qemu-img info /tmp/a.qcow2
    image: /tmp/a.qcow2
    file format: qcow2
    virtual size: 8.0G (8589934592 bytes)
    disk size: 196K
    cluster_size: 65536
    backing file: /tmp/b.qcow2

Because...

    $ ls /tmp/b.qcow2
    ls: cannot access /tmp/b.qcow2: No such file or directory

This is not intuitive. It's better to have the missing file's name in
the error message. With this patch:

    $ qemu-io -c 'read 0 512' /tmp/a.qcow2
    qemu-io: can't open device /tmp/a.qcow2: Could not open backing
    file: Could not open '/stor/vm/arch.raw': No such file or directory
    no file open, try 'help open'

Which is a little bit better.

Signed-off-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
10 years agopc: disable pci-info
Igor Mammedov [Wed, 6 Nov 2013 12:48:40 +0000 (13:48 +0100)]
pc: disable pci-info

The BIOS that we ship in 1.7 does not use pci info
from host and so far isn't going to use it.
Taking in account problems it caused see 9604f70fdf and
to avoid future incompatibility issues, it's safest to
disable that interface by default for all machine types
including 1.7 as it was never exposed/used by guest.
And properly remove/cleanup it during 1.8 development cycle.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
10 years agoMerge remote-tracking branch 'luiz/queue/qmp' into staging
Anthony Liguori [Wed, 13 Nov 2013 19:49:27 +0000 (11:49 -0800)]
Merge remote-tracking branch 'luiz/queue/qmp' into staging

# By Luiz Capitulino (1) and Richard Henderson (1)
# Via Luiz Capitulino
* luiz/queue/qmp:
  MAINTAINERS: add git tree info for HMP, QMP and QAPI
  Adjust qapi-visit for python-2.4.3

Message-id: 1384281985-11100-1-git-send-email-lcapitulino@redhat.com
Signed-off-by: Anthony Liguori <aliguori@amazon.com>
10 years agoMerge remote-tracking branch 'mst/tags/for_anthony' into staging
Anthony Liguori [Wed, 13 Nov 2013 19:48:35 +0000 (11:48 -0800)]
Merge remote-tracking branch 'mst/tags/for_anthony' into staging

pci, pc, virtio bug fixes

This reverts PCI master abort support - we'll want it
eventually but it exposes too many core bugs to be safe for 1.7.
This also reverts a recent exec.c change that was an
attempt to work-around some of these core bugs.

Also included are small fixes in pc and virtio,
and a core loader fix for PPC bamboo.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
# gpg: Signature made Sun 10 Nov 2013 05:13:22 AM PST using RSA key ID D28D5469
# gpg: Can't check signature: public key not found

# By Michael S. Tsirkin (3) and others
# Via Michael S. Tsirkin
* mst/tags/for_anthony:
  Revert "exec: limit system memory size"
  Revert "hw/pci: partially handle pci master abort"
  loader: drop return value for rom_add_blob_fixed
  acpi-build: disable with -no-acpi
  virtio-net: only delete bh that existed
  Fix pc migration from qemu <= 1.5

Message-id: 1384159176-31662-1-git-send-email-mst@redhat.com
Signed-off-by: Anthony Liguori <aliguori@amazon.com>
10 years agoMerge remote-tracking branch 'stefanha/net' into staging
Anthony Liguori [Wed, 13 Nov 2013 19:48:02 +0000 (11:48 -0800)]
Merge remote-tracking branch 'stefanha/net' into staging

# By Dmitry Fleytman (1) and others
# Via Stefan Hajnoczi
* stefanha/net:
  virtio-net: broken RX filtering logic fixed
  net: fix qemu_flush_queued_packets() in presence of a hub
  net: disallow to specify multicast MAC address

Message-id: 1383928804-28866-1-git-send-email-stefanha@redhat.com
Signed-off-by: Anthony Liguori <aliguori@amazon.com>
10 years agoMerge remote-tracking branch 'stefanha/block' into staging
Anthony Liguori [Wed, 13 Nov 2013 19:47:44 +0000 (11:47 -0800)]
Merge remote-tracking branch 'stefanha/block' into staging

# By Jeff Cody (26) and others
# Via Stefan Hajnoczi
* stefanha/block: (37 commits)
  block: Round up total_sectors
  block: vhdx qemu-iotest - log replay of data sector
  block: qemu-iotests for vhdx, add write test support
  block: vhdx - update _make_test_img() to filter out vhdx options
  block: vhdx - add .bdrv_create() support
  block: vhdx - fix comment typos in header, fix incorrect struct fields
  block: vhdx - break out code operations to functions
  block: vhdx - move more endian translations to vhdx-endian.c
  block: vhdx - remove BAT file offset bit shifting
  block: vhdx write support
  block: vhdx - add log write support
  block: vhdx - add region overlap detection for image files
  block: vhdx - log parsing, replay, and flush support
  block: vhdx code movement - move vhdx_close() above vhdx_open()
  block: vhdx - update log guid in header, and first write tracker
  block: vhdx - break endian translation functions out
  block: vhdx - log support struct and defines
  block: vhdx code movement - VHDXMetadataEntries and BDRVVHDXState to header.
  block: vhdx - add header update capability.
  block: vhdx - minor comments and typo correction.
  ...

Message-id: 1383905551-16411-1-git-send-email-stefanha@redhat.com
Signed-off-by: Anthony Liguori <aliguori@amazon.com>
10 years agoMerge remote-tracking branch 'filippov/tags/20131108-xtensa' into staging
Anthony Liguori [Wed, 13 Nov 2013 19:47:06 +0000 (11:47 -0800)]
Merge remote-tracking branch 'filippov/tags/20131108-xtensa' into staging

Two small fixes for 1.7:

- add missing debug feature to dc233c xtensa core;
- fix qemu abort caused by gdb attempt to invalidate a breakpoint by
  virtual address for which there's no mapping.

# gpg: Signature made Thu 07 Nov 2013 09:32:19 PM PST using RSA key ID F83FA044
# gpg: Can't check signature: public key not found

# By Max Filippov
# Via Max Filippov
* filippov/tags/20131108-xtensa:
  target-xtensa: add missing DEBUG section to dc233c config
  exec: fix breakpoint_invalidate when pc may not be translated

Message-id: 1383889643-21621-1-git-send-email-jcmvbkbc@gmail.com
Signed-off-by: Anthony Liguori <aliguori@amazon.com>
10 years agoMerge remote-tracking branch 'kraxel/audio.3' into staging
Anthony Liguori [Wed, 13 Nov 2013 19:46:23 +0000 (11:46 -0800)]
Merge remote-tracking branch 'kraxel/audio.3' into staging

# By Gerd Hoffmann
# Via Gerd Hoffmann
* kraxel/audio.3:
  ossaudio: check for oss support in oss_audio_init
  Revert "ossaudio: do not enable by default"

Message-id: 1383823947-5132-1-git-send-email-kraxel@redhat.com
Signed-off-by: Anthony Liguori <aliguori@amazon.com>
10 years agoMerge remote-tracking branch 'sweil/mingw' into staging
Anthony Liguori [Wed, 13 Nov 2013 19:45:58 +0000 (11:45 -0800)]
Merge remote-tracking branch 'sweil/mingw' into staging

# By Stefan Weil
# Via Stefan Weil
* sweil/mingw:
  linux-user: Fix stat64 syscall for SPARC64
  configure: Add config.status to recreate the current configuration
  nsis: Improved support for parallel installation of 32 and 64 bit code

Message-id: 1383804909-376-1-git-send-email-sw@weilnetz.de
Signed-off-by: Anthony Liguori <aliguori@amazon.com>
10 years agoconsole: Remove unused debug code
Stefan Weil [Sun, 10 Nov 2013 14:58:19 +0000 (15:58 +0100)]
console: Remove unused debug code

The local function console_print_text_attributes is no longer used since
commit 7d6ba01c3741bc32ae252bf64a5fd3f930c2df4f.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
10 years agoqga: Fix compilation for old versions of MinGW
Stefan Weil [Sun, 10 Nov 2013 17:49:11 +0000 (18:49 +0100)]
qga: Fix compilation for old versions of MinGW

While MinGW-w64 can compile the qga code, MinGW from Debian lenny
(gcc-mingw32 4.4.2-3) shows these errors:

In file included from qga/vss-win32.c:17:
qga/vss-win32/requester.h:31:
 error: expected »=«, »,«, »;«, »asm« or »__attribute__« before »requester_init«
qga/vss-win32/requester.h:32:
 error: expected »=«, »,«, »;«, »asm« or »__attribute__« before »requester_deinit«

The macro STDAPI is unknown, so add the missing include file which
defines it.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
10 years ago.travis.yml: basic compile and check recipes
Alex Bennée [Wed, 6 Nov 2013 10:43:37 +0000 (10:43 +0000)]
.travis.yml: basic compile and check recipes

This adds a build matrix definition for travis-ci.org continuous
integration service. It is usable on any public repository hosted on
GitHub. Once you have created an account signed into Travis you can
enable it on selected projects via travis-ci.org/profile. Alternatively
you can configure the service hooks on GitHub via the repository
Settings tab,then Service Hooks and selecting Travis.

Once setup Travis will automatically test every push as well as any pull
requests submitted to that repository.

The build matrix is currently split by target architecture (see TARGETS
environment variable) because a full build of QEMU can take some time.
This way you get quick feedback for any obvious errors. The additional
environment variables exist to allow additional builds to tweak the
environment. These are:

EXTRA_CONFIG - extra terms passed to configure
EXTRA_PKGS - extra dev packages to install
TEST_CMD - default "make check", can be overridden

I've confined the additional stuff to x86/x86_64 for convenience.

As Travis supports clang the main builds are done twice (once for gcc
and once for clang). However clang is disabled for the debug/trace
builds for the purposes of brevity.

Other wrinkles:

 * The lttng user-space tracing back-end is disabled
   (it is currently horribly broken)
 * The ftrace back-end doesn't run "make check"
   (it requires a mounted debugfs to work)
 * There are two debug enabled build (with and without TCG interpreter)

Signed-off-by: Alex Bennée <alex@bennee.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
10 years agopci-assign: Fix error_report of pci-stub message
Cole Robinson [Fri, 11 Oct 2013 15:52:30 +0000 (11:52 -0400)]
pci-assign: Fix error_report of pci-stub message

Using multiple calls to error_report here means every line is
prefaced with the (potentially long) pci-assign command line
arguments.

Use a single error_printf to preserve the intended formatting.
Since this code path is always preceded by an error_report call,
we don't lose the command line reporting.

Signed-off-by: Cole Robinson <crobinso@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
10 years agoqapi: Fix comment for create-type to match code.
Fam Zheng [Fri, 1 Nov 2013 09:35:29 +0000 (17:35 +0800)]
qapi: Fix comment for create-type to match code.

Signed-off-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
10 years agovl: fix build when configured with no graphic support
Antony Pavlov [Tue, 29 Oct 2013 04:36:31 +0000 (08:36 +0400)]
vl: fix build when configured with no graphic support

The following error occurs when building with no graphic output support:

  vl.c: In function ‘main’:
  vl.c:2829:19: error: variable ‘ds’ set but not used [-Werror=unused-but-set-variable]
       DisplayState *ds;
                     ^
  cc1: all warnings being treated as errors

To reproduce this issue, just run:

  $ ./configure \
      --disable-curses \
      --disable-sdl \
      --disable-cocoa \
      --disable-gtk \
      --disable-vnc \
      --enable-werror
  $ make vl.o

Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
Reviewed-by: Stefan Weil <sw@weilnetz.de>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
10 years agousb: drop unused USBNetState.inpkt field
Stefan Hajnoczi [Tue, 29 Oct 2013 14:44:31 +0000 (15:44 +0100)]
usb: drop unused USBNetState.inpkt field

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Benoit Canet <benoit@irqsave.net>
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
10 years agoqemu-char: add missing characters used in keymaps
Jan Krupa [Wed, 16 Oct 2013 12:40:06 +0000 (14:40 +0200)]
qemu-char: add missing characters used in keymaps

This patch adds all missing characters used in regional keymap
files which already exist in QEMU. I checked for the missing
characters by going through all of the keymaps and matching that
with records in vnc_keysym.h. If the key wasn't found I looked
it up in libxkbcommon library [1]. If I understood it correctly
this is also the same place where most of the keymaps were
exported from according to the comment on the first line in those
files. I was able to find all symbols except "quotebl" used
in Netherland keymap.

I tested this update with Czech keyboard by myself. I also asked
Matej Serc to test Slovenian keyboard layout - he reported problems
with it few days ago on this mailing list. Both layouts seems
to work fine. I wasn't able to test the remaining layouts but
since this change doesn't modify any existing symbols, just adds
new ones, I don't expect any sideeffects.

[1] http://cgit.freedesktop.org/xorg/lib/libxkbcommon

Signed-off-by: Jan Krupa <jkrupa@suse.com>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
10 years agoqemu-char: add support for U-prefixed symbols
Jan Krupa [Wed, 16 Oct 2013 12:40:05 +0000 (14:40 +0200)]
qemu-char: add support for U-prefixed symbols

This patch adds support for Unicode symbols in keymap files. This
feature was already used in some keyboard layouts in QEMU generated
from XKB (e.g. Arabic) but it wasn't implemented in QEMU source code.

There is no need for check of validity of the hex string after U character
because strtol returns 0 in case the conversion was unsuccessful.

Signed-off-by: Jan Krupa <jkrupa@suse.com>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
10 years agoqemu-char: add Czech keymap file
Jan Krupa [Wed, 16 Oct 2013 12:40:04 +0000 (14:40 +0200)]
qemu-char: add Czech keymap file

This patch adds Czech keyboard layout to available keymap files
and Makefile.

Signed-off-by: Jan Krupa <jkrupa@suse.com>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
10 years agoqemu-char: add Czech characters to VNC keysyms
Jan Krupa [Wed, 16 Oct 2013 12:40:03 +0000 (14:40 +0200)]
qemu-char: add Czech characters to VNC keysyms

This patch adds missing Czech characters to the VNC keysym table.

Signed-off-by: Jan Krupa <jkrupa@suse.com>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
10 years agoMAINTAINERS: add git tree info for HMP, QMP and QAPI
Luiz Capitulino [Tue, 5 Nov 2013 21:09:37 +0000 (16:09 -0500)]
MAINTAINERS: add git tree info for HMP, QMP and QAPI

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
10 years agoAdjust qapi-visit for python-2.4.3
Richard Henderson [Thu, 31 Oct 2013 20:26:01 +0000 (13:26 -0700)]
Adjust qapi-visit for python-2.4.3

We say we support python 2.4, but python 2.4.3 does not
support the "expr if test else expr" syntax used here.

This allows QEMU to compile on RHEL 5.3, the last release for ia64.

Signed-off-by: Richard Henderson <rth@twiddle.net>
Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
10 years agoRevert "exec: limit system memory size"
Michael S. Tsirkin [Sun, 10 Nov 2013 09:54:33 +0000 (11:54 +0200)]
Revert "exec: limit system memory size"

This reverts commit 818f86b88394b7b2b59d313e51043fe15a8004db.

This was a work-around for bugs elsewhere in the system,
exposed by commit a53ae8e934cd54686875b5bcfc2f434244ee55d6:
    "hw/pci: partially handle pci master abort"
since that's reverted now, the work-around is not required for 1.7
anymore.
The proper fix is supporting full 64 bit addresses in the radix tree.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Marcel Apfelbaum <marcel.a@redhat.com>
10 years agoRevert "hw/pci: partially handle pci master abort"
Marcel Apfelbaum [Sun, 10 Nov 2013 09:49:57 +0000 (11:49 +0200)]
Revert "hw/pci: partially handle pci master abort"

This reverts commit a53ae8e934cd54686875b5bcfc2f434244ee55d6.

The patch being reverted introduced a low-priority memory region
covering all 64 bit pci address space.  This exposed the following bugs
elsewhere in the code:
 1. Some memory regions have INT64_MAX size, where the
    intent was all 64 bit address space.
    This results in a sub-page region, should be UINT64_MAX.
 2. page table rendering in exec.c ignores physical address bits
    above TARGET_PHYS_ADDR_SPACE_BITS.
    Access outside this range (e.g. from device DMA, or gdb stub)
    ends up with a wrong region.  Registering a region outside this
    range leads to page table corruption.
 3. Some regions overlap PCI hole and have same priority.
    This only works as long as no device uses the overlapping address.

It doesn't look like we can resolve all issues in time for 1.7.
Let's fix the bugs first and apply afterwards for 1.8.

Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
10 years agoloader: drop return value for rom_add_blob_fixed
Michael S. Tsirkin [Sun, 10 Nov 2013 09:53:30 +0000 (11:53 +0200)]
loader: drop return value for rom_add_blob_fixed

rom_add_blob never fails, and neither does rom_add_blob_fixed,
so there's no need to return value from it.

In fact, rom_add_blob_fixed was erroneously returning -1 unconditionally
which made the only system that checked the return value -M bamboo fail
to start.

Drop the return value and drop checks from ppc440_bamboo to
fix this failure.

Reported-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
10 years agoacpi-build: disable with -no-acpi
Michael S. Tsirkin [Thu, 7 Nov 2013 12:12:05 +0000 (14:12 +0200)]
acpi-build: disable with -no-acpi

QEMU will currently crash if started with -no-acpi flag
since acpi build code probes the PM device which isn't present
in this configuration.

To fix, don't expose ACPI tables to guest when acpi has been
disabled from command line.

Fixes LP# 1248854
https://bugs.launchpad.net/qemu/+bug/1248854

Reported-by: chao zhou <chao.zhou@intel.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
10 years agovirtio-net: only delete bh that existed
Jason Wang [Wed, 6 Nov 2013 08:58:08 +0000 (16:58 +0800)]
virtio-net: only delete bh that existed

We delete without check whether it existed during exit. This will lead NULL
pointer deference since it was created conditionally depends on guest driver
status and features. So add a check of existence before trying to delete it.

Cc: qemu-stable@nongnu.org
Signed-off-by: Jason Wang <jasowang@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
10 years agoFix pc migration from qemu <= 1.5
Cole Robinson [Tue, 5 Nov 2013 23:46:27 +0000 (18:46 -0500)]
Fix pc migration from qemu <= 1.5

The following commit introduced a migration incompatibility:

commit 568f0690fd9aa4d39d84b04c1a5dbb53a915c3fe
Author: David Gibson <david@gibson.dropbear.id.au>
Date:   Thu Jun 6 18:48:49 2013 +1000

    pci: Replace pci_find_domain() with more general pci_root_bus_path()

The issue is that i440fx savevm idstr went from 0000:00:00.0/I440FX to
0000:00.0/I440FX. Unfortunately we are stuck with the breakage for
1.6 machine types.

Add a compat property to maintain the busted idstr for the 1.6 machine
types, but revert to the old style format for 1.7+, and <= 1.5.

Tested with migration from qemu 1.5, qemu 1.6, and qemu.git.

Cc: qemu-stable@nongnu.org
Signed-off-by: Cole Robinson <crobinso@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
10 years agovirtio-net: broken RX filtering logic fixed
Dmitry Fleytman [Sun, 22 Sep 2013 15:09:13 +0000 (18:09 +0300)]
virtio-net: broken RX filtering logic fixed

Upon processing of VIRTIO_NET_CTRL_MAC_TABLE_SET command
multicast list overwrites unicast list in mac_table.
This leads to broken logic for both unicast and multicast RX filtering.

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agonet: fix qemu_flush_queued_packets() in presence of a hub
Sergey Fedorov [Tue, 5 Nov 2013 06:54:29 +0000 (10:54 +0400)]
net: fix qemu_flush_queued_packets() in presence of a hub

Do not return after net_hub_flush(). Always flush callee network client
incoming queue.

Signed-off-by: Sergey Fedorov <s.fedorov@samsung.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agonet: disallow to specify multicast MAC address
Dmitry Krivenok [Mon, 21 Oct 2013 08:08:44 +0000 (12:08 +0400)]
net: disallow to specify multicast MAC address

[Assigning a multicast MAC address to a NIC leads to confusing behavior.
Reject multicast MAC addresses so users are alerted to their error
straight away.

The "net/eth.h" in6_addr rename prevents a name collision with
<netinet/in.h> on Linux.
-- Stefan]

Signed-off-by: Dmitry V. Krivenok <krivenok.dmitry@gmail.com>
Reviewed-by: Amos Kong <kongjianjun@gmail.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: Round up total_sectors
Fam Zheng [Wed, 6 Nov 2013 11:48:06 +0000 (19:48 +0800)]
block: Round up total_sectors

Since b94a2610, bdrv_getlength() is omitted when probing image. VMDK
monolithicFlat is broken by that because a file < 512 bytes can't be
read with its total_sectors truncated to 0. This patch round up the size
to BDRV_SECTOR_SIZE, when a image size is not sector aligned.

Signed-off-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Benoit Canet <benoit@irqsave.net>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agotarget-xtensa: add missing DEBUG section to dc233c config
Max Filippov [Sun, 20 Oct 2013 00:15:23 +0000 (04:15 +0400)]
target-xtensa: add missing DEBUG section to dc233c config

This fixes missing debug feature opcodes of dc233c core variant.

Cc: qemu-stable@nongnu.org
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
10 years agoexec: fix breakpoint_invalidate when pc may not be translated
Max Filippov [Fri, 27 Sep 2013 18:29:17 +0000 (22:29 +0400)]
exec: fix breakpoint_invalidate when pc may not be translated

This fixes qemu abort with the following message:

    include/qemu/int128.h:22: int128_get64: Assertion `!a.hi' failed.

which happens due to attempt to invalidate breakpoint by virtual address
for which get_phys_page_debug couldn't find mapping.

For more details see
http://lists.nongnu.org/archive/html/qemu-devel/2013-09/msg04582.html

Cc: qemu-stable@nongnu.org
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
10 years agopseries: Update SLOF firmware image
Alexey Kardashevskiy [Tue, 15 Oct 2013 05:00:33 +0000 (16:00 +1100)]
pseries: Update SLOF firmware image

SLOF git commit is e2e8ac901e617573ea383f9cffd136146d0675a4

The main changes are:
* fixed bug with not passing arguments from -append
* client-architecture-support hypercall
* netboot
* USB stack fixes

The full list of changes:
  > client-architecture-support: fix wrong version read
  > client-architecture-support: fix redundant stack drop
  > Update device tree returned by CAS hypercall
  > fdt: introduce fdt-init
  > Add ibm,client-architecture-support method
  > Kernel parameter passed from qemu commandline ignored
  > Allow more than one client to open net devices simultaneously
  > ci: add missing close in else condition
  > Add GPT support
  > pci: fix interrupt-map for bridges
  > usb-ohci: preserve the toggleCarry bit in ED
  > usb-ohci: done_head processing fixes
  > usb-ohci: update init and rationalize timings
  > usb-msc: handle stall and other fixes
  > scsi: make probe more error resilient
  > usb-core: Add CLEAR FEATURE api
  > Implement range allocator
  > Remove bcm57xx network driver as module
  > Remove e1000 network driver as module
  > Remove virtio-net network driver as module
  > Remove veth network driver as module
  > Add missing close-dev in ping
  > Remove lodable network driver modules and related functions
  > Add bcm57xx network driver in libbcm
  > Add e1000 network driver in libe1k
  > Add virtio-net driver in libvirtio
  > Add veth driver in libveth
  > Get MAC address for client interface module
  > Add SLOF usleep wrapper
  > Add SLOF pci wrapper functions
  > Fix 'canon' client interface

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Alexander Graf <agraf@suse.de>
10 years agospapr: add vio-bus devices to categories
Alexey Kardashevskiy [Fri, 11 Oct 2013 03:08:20 +0000 (14:08 +1100)]
spapr: add vio-bus devices to categories

In order to get devices appear in output of
"./qemu-system-ppc64 -device ?",
they must be assigned to one of DEVICE_CATEGORY_XXXX.

This puts VIO devices classes to corresponding categories.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Alexander Graf <agraf@suse.de>
10 years agoblock: vhdx qemu-iotest - log replay of data sector
Jeff Cody [Wed, 30 Oct 2013 14:44:56 +0000 (10:44 -0400)]
block: vhdx qemu-iotest - log replay of data sector

This tests the replay of a data sector in a VHDX image file.

The image file is a 10G dynamic image, with 4MB block size.  The
image was created with qemu-img, and the log left unplayed by
modification of the vhdx image format driver.

It was verified under both QEMU and Hyper-V that the image file,
post log replay, matched.

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: qemu-iotests for vhdx, add write test support
Jeff Cody [Wed, 30 Oct 2013 14:44:55 +0000 (10:44 -0400)]
block: qemu-iotests for vhdx, add write test support

This removes the IMGFMT_GENERIC blocker for read-only, so existing
iotests run read/write tests for vhdx images created by qemu-img (e.g.
tests 001, 002, 003).

In addition, this updates the sample image test for the Hyper-V
created image, to verify we can write it as well.

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: vhdx - update _make_test_img() to filter out vhdx options
Jeff Cody [Wed, 30 Oct 2013 14:44:54 +0000 (10:44 -0400)]
block: vhdx - update _make_test_img() to filter out vhdx options

The non-global option output is suppresed in _make_test_img() for
output verification in the 0?? tests.  This adds suppression for
the vhdx-unique options as well.  This allows check -vhdx to run
successfully.

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: vhdx - add .bdrv_create() support
Jeff Cody [Wed, 30 Oct 2013 14:44:53 +0000 (10:44 -0400)]
block: vhdx - add .bdrv_create() support

This adds support for VHDX image creation, for images of type "Fixed"
and "Dynamic".  "Differencing" types (i.e., VHDX images with backing
files) are currently not supported.

Options for image creation include:
    * log size:
        The size of the journaling log for VHDX.  Minimum is 1MB,
        and it must be a multiple of 1MB. Invalid log sizes will be
        silently fixed by rounding up to the nearest MB.

        Default is 1MB.

    * block size:
        This is the size of a payload block.  The range is 1MB to 256MB,
        inclusive, and must be a multiple of 1MB as well.  Invalid sizes
        and multiples will be silently fixed.  If '0' is passed, then
        a sane size is chosen (depending on virtual image size).

        Default is 0 (Auto-select).

    * subformat:
        - "dynamic"
            An image without data pre-allocated.
        - "fixed"
            An image with data pre-allocated.

        Default is "dynamic"

When creating the image file, the lettered sections are created:

-----------------------------------------------------------------.
|   (A)    |   (B)    |    (C)    |     (D)       |     (E)
|  File ID |  Header1 |  Header 2 |  Region Tbl 1 |  Region Tbl 2
|          |          |           |               |
.-----------------------------------------------------------------.
0         64KB      128KB       192KB           256KB          320KB

.---- ~ ----------- ~ ------------ ~ ---------------- ~ -----------.
|     (F)     |     (G)       |    (H)    |
| Journal Log |  BAT / Bitmap |  Metadata |  .... data ......
|             |               |           |
.---- ~ ----------- ~ ------------ ~ ---------------- ~ -----------.
1MB         (var.)          (var.)      (var.)

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: vhdx - fix comment typos in header, fix incorrect struct fields
Jeff Cody [Wed, 30 Oct 2013 14:44:52 +0000 (10:44 -0400)]
block: vhdx - fix comment typos in header, fix incorrect struct fields

VHDXPage83Data and VHDXParentLocatorHeader both incorrectly had their
MSGUID fields set as arrays of 16.  This is incorrect (it stems from
an early version where those fields were uint_8 arrays).  Those fields
were, up to this patch, unused.

Also, there were a couple of typos and incorrect wording in comments,
and those have been fixed up as well.

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: vhdx - break out code operations to functions
Jeff Cody [Wed, 30 Oct 2013 14:44:51 +0000 (10:44 -0400)]
block: vhdx - break out code operations to functions

This is preperation for vhdx_create().  The ability to write headers,
and calculate the number of BAT entries will be needed within the
create() functions, so move this relevant code into helper functions.

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: vhdx - move more endian translations to vhdx-endian.c
Jeff Cody [Wed, 30 Oct 2013 14:44:50 +0000 (10:44 -0400)]
block: vhdx - move more endian translations to vhdx-endian.c

In preparation for vhdx_create(), move more endian translation
functions out to vhdx-endian.c.

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: vhdx - remove BAT file offset bit shifting
Jeff Cody [Wed, 30 Oct 2013 14:44:49 +0000 (10:44 -0400)]
block: vhdx - remove BAT file offset bit shifting

Bit shifting can be fun, but in this case it was unnecessary.  The
upper 44 bits of the 64-bit BAT entry is specifies the File Offset,
so we shifted the bits to get access to the value.

However, per the spec the value is in MB.  So we dutifully shifted back
to the left by 20 bits, to convert to a true uint64_t file offset.

This replaces those steps with just a bit mask, to get rid of the lower
20 bits instead.

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: vhdx write support
Jeff Cody [Wed, 30 Oct 2013 14:44:48 +0000 (10:44 -0400)]
block: vhdx write support

This adds support for writing to VHDX image files, using coroutines.
Writes into the BAT table goes through the VHDX log.  Currently, BAT
table writes occur when expanding a dynamic VHDX file, and allocating a
new BAT entry.

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: vhdx - add log write support
Jeff Cody [Wed, 30 Oct 2013 14:44:47 +0000 (10:44 -0400)]
block: vhdx - add log write support

This adds support for writing to the VHDX log.

For spec details, see VHDX Specification Format v1.00:
https://www.microsoft.com/en-us/download/details.aspx?id=34750

There are a few limitations to this log support:
1.) There is no caching yet
2.) The log is flushed after each entry

The primary write interface, vhdx_log_write_and_flush(), performs a log
write followed by an immediate flush of the log.

As each log entry sector is a minimum of 4KB, partial sector writes are
filled in with data from the disk write destination.

If the current file log GUID is 0, a new GUID is generated and updated
in the header.

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: vhdx - add region overlap detection for image files
Jeff Cody [Wed, 30 Oct 2013 14:44:46 +0000 (10:44 -0400)]
block: vhdx - add region overlap detection for image files

Regions in the image file cannot overlap - the log, region tables,
and metdata must all be unique and non-overlapping.

This adds region checking by means of a QLIST; there can be a variable
number of regions and metadata (there may be metadata or region tables
that we do not recognize / know about, but are not required).

This adds the capability to register a region for later checking, and
to check against registered regions for any overlap.

Also, if neither the BAT or Metadata region tables are found, return
error.

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: vhdx - log parsing, replay, and flush support
Jeff Cody [Wed, 30 Oct 2013 14:44:45 +0000 (10:44 -0400)]
block: vhdx - log parsing, replay, and flush support

This adds support for VHDX v0 logs, as specified in Microsoft's
VHDX Specification Format v1.00:
https://www.microsoft.com/en-us/download/details.aspx?id=34750

The following support is added:

* Log parsing, and validation - validate that an existing log
  is correct.

* Log search - search through an existing log, to find any valid
  sequence of entries.

* Log replay and flush - replay an existing log, and flush/clear
  the log when complete.

The VHDX log is a circular buffer, with elements (sectors) of 4KB.

A log entry is a variably-length number of sectors, that is
comprised of a header and 'descriptors', that describe each sector.

A log may contain multiple entries, know as a log sequence.  In a log
sequence, each log entry immediately follows the previous entry, with an
incrementing sequence number.  There can only ever be one active and
valid sequence in the log.

Each log entry must match the file log GUID in order to be valid (along
with other criteria).  Once we have flushed all valid log entries, we
marked the file log GUID to be zero, which indicates a buffer with no
valid entries.

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: vhdx code movement - move vhdx_close() above vhdx_open()
Jeff Cody [Wed, 30 Oct 2013 14:44:44 +0000 (10:44 -0400)]
block: vhdx code movement - move vhdx_close() above vhdx_open()

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: vhdx - update log guid in header, and first write tracker
Jeff Cody [Wed, 30 Oct 2013 14:44:43 +0000 (10:44 -0400)]
block: vhdx - update log guid in header, and first write tracker

Allow tracking of first file write in the VHDX image, as well as
the ability to update the GUID in the header.  This is in preparation
for log support.

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: vhdx - break endian translation functions out
Jeff Cody [Wed, 30 Oct 2013 14:44:42 +0000 (10:44 -0400)]
block: vhdx - break endian translation functions out

This moves the endian translation functions out from the vhdx.c source,
into a separate source file. In addition to the previously defined
endian functions, new endian translation functions for log support are
added as well.

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: vhdx - log support struct and defines
Jeff Cody [Wed, 30 Oct 2013 14:44:41 +0000 (10:44 -0400)]
block: vhdx - log support struct and defines

This adds some magic number defines, and internal structure definitions
for VHDX log replay support.  The struct VHDXLogEntries does not reflect
an on-disk data structure, and thus does not need to be packed.

Some minor code style fixes are applied as well.

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: vhdx code movement - VHDXMetadataEntries and BDRVVHDXState to header.
Jeff Cody [Wed, 30 Oct 2013 14:44:40 +0000 (10:44 -0400)]
block: vhdx code movement - VHDXMetadataEntries and BDRVVHDXState to header.

In preparation for VHDX log support, move these structures to the
header.

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: vhdx - add header update capability.
Jeff Cody [Wed, 30 Oct 2013 14:44:39 +0000 (10:44 -0400)]
block: vhdx - add header update capability.

This adds the ability to update the headers in a VHDX image, including
generating a new MS-compatible GUID.

As VHDX depends on uuid.h, VHDX is now a configurable build option.  If
VHDX support is enabled, that will also enable uuid as well.  The
default is to have VHDX enabled.

To enable/disable VHDX:  --enable-vhdx, --disable-vhdx

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock: vhdx - minor comments and typo correction.
Jeff Cody [Wed, 30 Oct 2013 14:44:38 +0000 (10:44 -0400)]
block: vhdx - minor comments and typo correction.

Just a couple of minor comments to help note where allocated
buffers are freed, and a typo fix.

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
10 years agoblock/vpc: fix virtual size for images created with disk2vhd
Peter Lieven [Mon, 21 Oct 2013 14:00:18 +0000 (16:00 +0200)]
block/vpc: fix virtual size for images created with disk2vhd

Signed-off-by: Peter Lieven <pl@kamp.de>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>