]> git.proxmox.com Git - mirror_qemu.git/log
mirror_qemu.git
12 years agoReplace the VMSTOP macros with a proper state type
Luiz Capitulino [Fri, 29 Jul 2011 17:26:33 +0000 (14:26 -0300)]
Replace the VMSTOP macros with a proper state type

Today, when notifying a VM state change with vm_state_notify(),
we pass a VMSTOP macro as the 'reason' argument. This is not ideal
because the VMSTOP macros tell why qemu stopped and not exactly
what the current VM state is.

One example to demonstrate this problem is that vm_start() calls
vm_state_notify() with reason=0, which turns out to be VMSTOP_USER.

This commit fixes that by replacing the VMSTOP macros with a proper
state type called RunState.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
12 years agoMove vm_state_notify() prototype from cpus.h to sysemu.h
Luiz Capitulino [Fri, 29 Jul 2011 16:37:55 +0000 (13:37 -0300)]
Move vm_state_notify() prototype from cpus.h to sysemu.h

It's where all the state handling functions prototypes are located.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
12 years agoMerge remote-tracking branch 'qemu-kvm-tmp/memory/core' into staging
Anthony Liguori [Thu, 15 Sep 2011 18:33:03 +0000 (13:33 -0500)]
Merge remote-tracking branch 'qemu-kvm-tmp/memory/core' into staging

12 years agoMerge remote-tracking branch 'aneesh/for-upstream-4' into staging
Anthony Liguori [Thu, 15 Sep 2011 18:28:28 +0000 (13:28 -0500)]
Merge remote-tracking branch 'aneesh/for-upstream-4' into staging

12 years agoFix subtle integer overflow bug in memory API
David Gibson [Wed, 14 Sep 2011 07:02:49 +0000 (17:02 +1000)]
Fix subtle integer overflow bug in memory API

It is quite common to have a MemoryRegion with size of INT64_MAX.
When processing alias regions in render_memory_region() it's quite
easy to find a case where it will construct a temporary AddrRange with
a non-zero start, and size still of INT64_MAX.  When means attempting
to compute the end of such a range as start + size will result in
signed integer overflow.

This integer overflow means that addrrange_intersects() can
incorrectly report regions as not intersecting when they do.  For
example consider the case of address ranges {0x10000000000,
0x7fffffffffffffff} and {0x10010000000, 0x10000000} where the second
is in fact included completely in the first.

This patch rearranges addrrange_intersects() to avoid the integer
overflow, correcting this behaviour.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Avi Kivity <avi@redhat.com>
12 years agoqcow2: fix range check
Frediano Ziglio [Sat, 10 Sep 2011 08:23:56 +0000 (10:23 +0200)]
qcow2: fix range check

QCowL2Meta::offset is not cluster aligned but only sector aligned
however nb_clusters count cluster from cluster start.
This fix range check. Note that old code have no corruption issues
related to this check cause it only cause intersection to occur
when shouldn't.

Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoqcow2: align cluster_data to block to improve performance using O_DIRECT
Frediano Ziglio [Sat, 10 Sep 2011 08:59:16 +0000 (10:59 +0200)]
qcow2: align cluster_data to block to improve performance using O_DIRECT

Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoahci: Remove unused struct member
Stefan Weil [Thu, 8 Sep 2011 19:44:15 +0000 (21:44 +0200)]
ahci: Remove unused struct member

Member variable is_read is written, but never read
(contrary to its name). Remove it.

Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoqcow2: initialize metadata before inserting in cluster_allocs
Frediano Ziglio [Thu, 8 Sep 2011 11:38:42 +0000 (13:38 +0200)]
qcow2: initialize metadata before inserting in cluster_allocs

QCow2Meta structure was inserted into list before many fields are
initialized. Currently is not a problem cause all occur in a lock
but if qcow2_alloc_clusters would in a future unlock this lock
some issues could arise.
Initializing fields before inserting fix the problem.

Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoide/atapi scsi-disk: Make monitor eject -f, then change work
Markus Armbruster [Tue, 6 Sep 2011 16:59:00 +0000 (18:59 +0200)]
ide/atapi scsi-disk: Make monitor eject -f, then change work

change fails while the tray is locked by the guest.  eject -f forces
it open and removes any media.  Unfortunately, the tray closes again
instantly.  Since the lock remains as it is, there is no way to insert
another medium unless the guest voluntarily unlocks.

Fix by leaving the tray open after monitor eject.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoblock: New change_media_cb() parameter load
Markus Armbruster [Tue, 6 Sep 2011 16:58:59 +0000 (18:58 +0200)]
block: New change_media_cb() parameter load

To let device models distinguish between eject and load.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agonbd: Clean up use of block_int.h
Markus Armbruster [Tue, 6 Sep 2011 16:58:58 +0000 (18:58 +0200)]
nbd: Clean up use of block_int.h

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoblock: Reset buffer alignment on detach
Markus Armbruster [Tue, 6 Sep 2011 16:58:57 +0000 (18:58 +0200)]
block: Reset buffer alignment on detach

BlockDriverState member buffer_alignment is initially 512.  The device
model may set them, with bdrv_set_buffer_alignment().  If the device
model gets detached (hot unplug), the device's alignment is left
behind.  Only okay because device hot unplug automatically destroys
the BlockDriverState.  But that's a questionable feature, best not to
rely on it.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoblock: New bdrv_set_buffer_alignment()
Markus Armbruster [Tue, 6 Sep 2011 16:58:56 +0000 (18:58 +0200)]
block: New bdrv_set_buffer_alignment()

Device models should be able to set it without an unclean include of
block_int.h.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agohw: Trim superfluous #include "block_int.h"
Markus Armbruster [Tue, 6 Sep 2011 16:58:55 +0000 (18:58 +0200)]
hw: Trim superfluous #include "block_int.h"

Including it in device models is unclean, including it without a
reason adds insult to injury.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoblock: Move BlockConf & friends from block_int.h to block.h
Markus Armbruster [Tue, 6 Sep 2011 16:58:54 +0000 (18:58 +0200)]
block: Move BlockConf & friends from block_int.h to block.h

It's convenience stuff for block device models, so block.h isn't the
ideal home either, but better than block_int.h.

Permits moving some #include "block_int.h" from device model .h into
.c.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoblock: Show whether the virtual tray is open in info block
Markus Armbruster [Tue, 6 Sep 2011 16:58:53 +0000 (18:58 +0200)]
block: Show whether the virtual tray is open in info block

Need to ask the device, so this requires new BlockDevOps member
is_tray_open().

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoblock: Drop BlockDriverState member removable
Markus Armbruster [Tue, 6 Sep 2011 16:58:52 +0000 (18:58 +0200)]
block: Drop BlockDriverState member removable

It's a confused mess (see previous commit).  No users remain.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoblock: Clean up remaining users of "removable"
Markus Armbruster [Tue, 6 Sep 2011 16:58:51 +0000 (18:58 +0200)]
block: Clean up remaining users of "removable"

BlockDriverState member removable is a confused mess.  It is true when
an ide-cd, scsi-cd or floppy qdev is attached, or when the
BlockDriverState was created with -drive if={floppy,sd} or -drive
if={ide,scsi,xen,none},media=cdrom ("created removable"), except when
an ide-hd, scsi-hd, scsi-generic or virtio-blk qdev is attached.

Three users remain:

1. eject_device(), via bdrv_is_removable() uses it to determine
   whether a block device can eject media.

2. bdrv_info() is monitor command "info block".  QMP documentation
   says "true if the device is removable, false otherwise".  From the
   monitor user's point of view, the only sensible interpretation of
   "is removable" is "can eject media with monitor commands eject and
   change".

A block device can eject media unless a device is attached that
doesn't support it.  Switch the two users over to new
bdrv_dev_has_removable_media() that returns exactly that.

3. bdrv_getlength() uses to suppress its length cache when media can
   change (see commit 46a4e4e6).  Media change is either monitor
   command change (updates the length cache), monitor command eject
   (doesn't update the length cache, easily fixable), or physical
   media change (invalidates length cache, not so easily fixable).

I'm refraining from improving anything here, because this series is
long enough already.  Instead, I simply switch it over to
bdrv_dev_has_removable_media() as well.

This changes the behavior of the length cache and of monitor commands
eject and change in two cases:

a. drive not created removable, no device attached

   The commit makes the drive removable, and defeats the length cache.

   Example: -drive if=none

b. drive created removable, but the attached drive is non-removable,
   and doesn't call bdrv_set_removable(..., 0) (most devices don't)

   The commit makes the drive non-removable, and enables the length
   cache.

   Example: -drive if=xen,media=cdrom -M xenpv

   The other non-removable devices that don't call
   bdrv_set_removable() can't currently use a drive created removable,
   either because they aren't qdevified, or because they lack a drive
   property.  Won't stay that way.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoide/atapi: Preserve tray state on migration
Markus Armbruster [Tue, 6 Sep 2011 16:58:50 +0000 (18:58 +0200)]
ide/atapi: Preserve tray state on migration

Use a subsection, so that migration to older version still works,
provided the tray is closed and unlocked.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoscsi-disk: Fix START_STOP to fail when it can't eject
Markus Armbruster [Tue, 6 Sep 2011 16:58:49 +0000 (18:58 +0200)]
scsi-disk: Fix START_STOP to fail when it can't eject

Don't fail when tray is already open.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoide/atapi: Don't fail eject when tray is already open
Markus Armbruster [Tue, 6 Sep 2011 16:58:48 +0000 (18:58 +0200)]
ide/atapi: Don't fail eject when tray is already open

MMC-5 6.40.2.6 specifies that START STOP UNIT succeeds when the drive
already has the requested state.  cmd_start_stop_unit() fails when
asked to eject while the tray is open and locked.  Fix that.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agorbd: fix leak in qemu_rbd_open failure paths
Sage Weil [Wed, 7 Sep 2011 16:28:06 +0000 (09:28 -0700)]
rbd: fix leak in qemu_rbd_open failure paths

Fix leak of s->snap in failure path.  Simplify error paths for the whole
function.

Reported-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Sage Weil <sage@newdream.net>
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agorbd: clean up, fix style
Sage Weil [Wed, 7 Sep 2011 16:28:05 +0000 (09:28 -0700)]
rbd: clean up, fix style

No assignment in condition.  Remove duplicate ret > 0 check.

Signed-off-by: Sage Weil <sage@newdream.net>
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agorbd: allow client id to be specified in config string
Sage Weil [Wed, 7 Sep 2011 16:28:04 +0000 (09:28 -0700)]
rbd: allow client id to be specified in config string

Allow the client id to be specified in the config string via 'id=' so that
users can control who they authenticate as.  Currently they are stuck with
the default ('admin').  This is necessary for anyone using authentication
in their environment.

Signed-off-by: Sage Weil <sage@newdream.net>
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoblock: Rename bdrv_set_locked() to bdrv_lock_medium()
Markus Armbruster [Tue, 6 Sep 2011 16:58:47 +0000 (18:58 +0200)]
block: Rename bdrv_set_locked() to bdrv_lock_medium()

While there, make the locked parameter bool.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoblock: Drop medium lock tracking, ask device models instead
Markus Armbruster [Tue, 6 Sep 2011 16:58:46 +0000 (18:58 +0200)]
block: Drop medium lock tracking, ask device models instead

Requires new BlockDevOps member is_medium_locked().  Implement for IDE
and SCSI CD-ROMs.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoblock: Leave enforcing tray lock to device models
Markus Armbruster [Tue, 6 Sep 2011 16:58:45 +0000 (18:58 +0200)]
block: Leave enforcing tray lock to device models

The device model knows best when to accept the guest's eject command.
No need to detour through the block layer.

bdrv_eject() can't fail anymore.  Make it void.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoscsi-disk: Track tray locked state
Markus Armbruster [Tue, 6 Sep 2011 16:58:44 +0000 (18:58 +0200)]
scsi-disk: Track tray locked state

We already track it in BlockDriverState.  Just like tray open/close
state, we should track it in the device models instead, because it's
device state.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoide/atapi: Track tray locked state
Markus Armbruster [Tue, 6 Sep 2011 16:58:43 +0000 (18:58 +0200)]
ide/atapi: Track tray locked state

We already track it in BlockDriverState.  Just like tray open/close
state, we should track it in the device models instead, because it's
device state.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoblock: Drop tray status tracking, no longer used
Markus Armbruster [Tue, 6 Sep 2011 16:58:42 +0000 (18:58 +0200)]
block: Drop tray status tracking, no longer used

Commit 4be9762a is now completely redone.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoblock: Revert entanglement of bdrv_is_inserted() with tray status
Markus Armbruster [Tue, 6 Sep 2011 16:58:41 +0000 (18:58 +0200)]
block: Revert entanglement of bdrv_is_inserted() with tray status

Commit 4be9762a changed bdrv_is_inserted() to fail when the tray is
open.  Unfortunately, there are two different kinds of users, with
conflicting needs.

1. Device models using bdrv_eject(), currently ide-cd and scsi-cd.
They expect bdrv_is_inserted() to reflect the tray status.  Commit
4be9762a makes them happy.

2. Code that wants to know whether a BlockDriverState has media, such
as find_image_format(), bdrv_flush_all().  Commit 4be9762a makes them
unhappy.  In particular, it breaks flush on VM stop for media ejected
by the guest.

Revert the change to bdrv_is_inserted().  Check the tray status in the
device models instead.

Note on IDE: Since only ATAPI devices have a tray, and they don't
accept ATA commands since the recent commit "ide: Reject ATA commands
specific to drive kinds", checking in atapi.c suffices.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoscsi-disk: Track tray open/close state
Markus Armbruster [Tue, 6 Sep 2011 16:58:40 +0000 (18:58 +0200)]
scsi-disk: Track tray open/close state

We already track it in BlockDriverState since commit 4be9762a.  As
discussed in that commit's message, we should track it in the device
device models instead, because it's device state.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoscsi-disk: Factor out scsi_disk_emulate_start_stop()
Markus Armbruster [Tue, 6 Sep 2011 16:58:39 +0000 (18:58 +0200)]
scsi-disk: Factor out scsi_disk_emulate_start_stop()

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoide/atapi: Track tray open/close state
Markus Armbruster [Tue, 6 Sep 2011 16:58:38 +0000 (18:58 +0200)]
ide/atapi: Track tray open/close state

We already track it in BlockDriverState since commit 4be9762a.  As
discussed in that commit's message, we should track it in the device
device models instead, because it's device state.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoide/atapi: Clean up misleading name in cmd_start_stop_unit()
Markus Armbruster [Tue, 6 Sep 2011 16:58:37 +0000 (18:58 +0200)]
ide/atapi: Clean up misleading name in cmd_start_stop_unit()

"eject" is misleading; it means "eject" when start is clear, but
"load" when start is set.  Rename to loej, because that's how MMC-5
calls it, in section 6.40.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoide: Reject ATA commands specific to drive kinds
Markus Armbruster [Tue, 6 Sep 2011 16:58:36 +0000 (18:58 +0200)]
ide: Reject ATA commands specific to drive kinds

ACS-2 Table B.2 explicitly prohibits ATAPI devices from implementing
WIN_RECAL, WIN_READ_EXT, WIN_READDMA_EXT, WIN_READ_NATIVE_MAX,
WIN_MULTREAD_EXT, WIN_WRITE, WIN_WRITE_ONCE, WIN_WRITE_EXT,
WIN_WRITEDMA_EXT, WIN_MULTWRITE_EXT, WIN_WRITE_VERIFY, WIN_VERIFY,
WIN_VERIFY_ONCE, WIN_VERIFY_EXT, WIN_SPECIFY, WIN_MULTREAD,
WIN_MULTWRITE, WIN_SETMULT, WIN_READDMA, WIN_READDMA_ONCE,
WIN_WRITEDMA, WIN_WRITEDMA_ONCE, WIN_FLUSH_CACHE_EXT.  Restrict them
to IDE_HD and IDE_CFATA.

Same for CFA_WRITE_SECT_WO_ERASE, CFA_WRITE_MULTI_WO_ERASE.  Restrict
them to IDE_CFATA, like the other CFA_ commands.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoide: Use a table to declare which drive kinds accept each command
Markus Armbruster [Tue, 6 Sep 2011 16:58:35 +0000 (18:58 +0200)]
ide: Use a table to declare which drive kinds accept each command

No functional change.

It would be nice to have handler functions in the table, like commit
e1a064f9 did for ATAPI.  Left for another day.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoide: Fix ATA command READ to set ATAPI signature for CD-ROM
Markus Armbruster [Tue, 6 Sep 2011 16:58:34 +0000 (18:58 +0200)]
ide: Fix ATA command READ to set ATAPI signature for CD-ROM

Must set the ATAPI device signature, see ATA4 8.27.5.2 Outputs for
PACKET Command feature set devices, and ACS-2 7.36.6 Outputs for
PACKET feature set devices.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoqcow2: removed unused depends_on field
Frediano Ziglio [Wed, 7 Sep 2011 14:19:17 +0000 (16:19 +0200)]
qcow2: removed unused depends_on field

Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 years agoGdbstub: Fix back-trace on SPARC32
Fabien Chouteau [Thu, 8 Sep 2011 10:48:16 +0000 (12:48 +0200)]
Gdbstub: Fix back-trace on SPARC32

Gdb expects all registers windows to be flushed in ram, which is not the case
in Qemu. Therefore the back-trace generation doesn't work. This patch adds a
function to handle reads (and only read) in stack frames as if windows were
flushed.

Signed-off-by: Fabien Chouteau <chouteau@adacore.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: add regression testsuite
Max Filippov [Mon, 5 Sep 2011 23:55:57 +0000 (03:55 +0400)]
target-xtensa: add regression testsuite

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agoMAINTAINERS: add xtensa maintainer
Max Filippov [Mon, 5 Sep 2011 23:55:56 +0000 (03:55 +0400)]
MAINTAINERS: add xtensa maintainer

Add myself as target-xtensa and DC232B maintainer.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: add dc232b core and board
Max Filippov [Mon, 5 Sep 2011 23:55:55 +0000 (03:55 +0400)]
target-xtensa: add dc232b core and board

This is Diamond 232L Standard Core Rev.B (LE).

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement boolean option
Max Filippov [Mon, 5 Sep 2011 23:55:54 +0000 (03:55 +0400)]
target-xtensa: implement boolean option

See ISA, 4.3.9

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement memory protection options
Max Filippov [Mon, 5 Sep 2011 23:55:53 +0000 (03:55 +0400)]
target-xtensa: implement memory protection options

- TLB opcode group;
- region protection option (ISA, 4.6.3);
- region translation option (ISA, 4.6.4);
- MMU option (ISA, 4.6.5).

Cache control attribute bits are not used by this implementation.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: add gdb support
Max Filippov [Mon, 5 Sep 2011 23:55:52 +0000 (03:55 +0400)]
target-xtensa: add gdb support

Specific xtensa processor overlay for GDB contains register map in
the gdb/xtensa-config.c. This description is used by the GDB to e.g.
parse 'g' response packets and it may be reused in the qemu's gdbstub
(only XTREG definitions for non-pseudoregisters are needed).

Currently mainline GDB does not support operations with privileged SRs
(see http://sourceware.org/ml/gdb/2011-07/msg00075.html). This support
may be enabled, see NUM_CORE_REGS comment in the gdbstub.c

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement relocatable vectors
Max Filippov [Mon, 5 Sep 2011 23:55:51 +0000 (03:55 +0400)]
target-xtensa: implement relocatable vectors

See ISA, 4.4.3 for details.

Vector addresses recorded in core configuration are absolute values that
correspond to default VECBASE value.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement CPENABLE and PRID SRs
Max Filippov [Mon, 5 Sep 2011 23:55:50 +0000 (03:55 +0400)]
target-xtensa: implement CPENABLE and PRID SRs

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement accurate window check
Max Filippov [Mon, 5 Sep 2011 23:55:49 +0000 (03:55 +0400)]
target-xtensa: implement accurate window check

See ISA, 4.7.1.3 for details.

Window check is inserted before commands that push "used register
watermark" beyond its current level. Used register watermark is reset on
instructions that change WINDOW_BASE/WINDOW_START SRs.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement interrupt option
Max Filippov [Mon, 5 Sep 2011 23:55:48 +0000 (03:55 +0400)]
target-xtensa: implement interrupt option

See ISA, 4.4.6 (interrupt option), 4.4.7 (high priority interrupt
option) and 4.4.8 (timer interrupt option) for details.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement SIMCALL
Max Filippov [Mon, 5 Sep 2011 23:55:47 +0000 (03:55 +0400)]
target-xtensa: implement SIMCALL

Tensilica iss provides support for applications running in freestanding
environment through SIMCALL command. It is used by Tensilica libc to
access argc/argv, for file I/O, etc.

Note that simcalls that accept buffer addresses expect virtual addresses.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement unaligned exception option
Max Filippov [Mon, 5 Sep 2011 23:55:46 +0000 (03:55 +0400)]
target-xtensa: implement unaligned exception option

See ISA, 4.4.4 for details.

Correct (aligned as per ISA) address for unaligned access is generated
in case this option is not enabled.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement extended L32R
Max Filippov [Mon, 5 Sep 2011 23:55:45 +0000 (03:55 +0400)]
target-xtensa: implement extended L32R

See ISA, 4.3.3 for details.

TB flag XTENSA_TBFLAG_LITBASE is used to track enable bit of LITBASE SR.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement loop option
Max Filippov [Mon, 5 Sep 2011 23:55:44 +0000 (03:55 +0400)]
target-xtensa: implement loop option

See ISA, 4.3.2 for details.

Operations that change LEND SR value invalidate TBs at the old and at
the new LEND. LEND value at TB compilation time is considered constant
and loop instruction is generated based on this value.

Invalidation may be avoided for the TB at the old LEND address, since
looping code verifies actual LEND value.

Invalidation may be avoided for the TB at the new LEND address if
there's a way to associate LEND address with TB at compilation time and
later verify that it doesn't change.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement windowed registers
Max Filippov [Mon, 5 Sep 2011 23:55:43 +0000 (03:55 +0400)]
target-xtensa: implement windowed registers

See ISA, 4.7.1 for details.

Physical registers and currently visible window are separate fields in
CPUEnv. Only current window is accessible to TCG. On operations that
change window base helpers copy current window to and from physical
registers.

Window overflow check described in 4.7.1.3 is in separate patch.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement RST2 group (32 bit mul/div/rem)
Max Filippov [Mon, 5 Sep 2011 23:55:42 +0000 (03:55 +0400)]
target-xtensa: implement RST2 group (32 bit mul/div/rem)

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement exceptions
Max Filippov [Mon, 5 Sep 2011 23:55:41 +0000 (03:55 +0400)]
target-xtensa: implement exceptions

- mark privileged opcodes with ring check;
- make debug exception on exception handler entry.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: add PS register and access control
Max Filippov [Mon, 5 Sep 2011 23:55:40 +0000 (03:55 +0400)]
target-xtensa: add PS register and access control

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement CACHE group
Max Filippov [Mon, 5 Sep 2011 23:55:39 +0000 (03:55 +0400)]
target-xtensa: implement CACHE group

All operations in this group are no-ops, because cache ought to be
transparent to applications. However cache may be abused, then we'll
need to actually implement these opcodes.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement SYNC group
Max Filippov [Mon, 5 Sep 2011 23:55:38 +0000 (03:55 +0400)]
target-xtensa: implement SYNC group

All operations in this group are no-ops, because there are no delayed
side effects.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: mark reserved and TBD opcodes
Max Filippov [Mon, 5 Sep 2011 23:55:37 +0000 (03:55 +0400)]
target-xtensa: mark reserved and TBD opcodes

Reserved opcodes must generate illegal instruction exception. Usually
they signal emulation quality problems.
Not implemented opcodes are good to see.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement LSAI group
Max Filippov [Mon, 5 Sep 2011 23:55:36 +0000 (03:55 +0400)]
target-xtensa: implement LSAI group

- base + offset load/store operations for 1/2/4 byte values;
- cache operations (not implemented);
- multiprocessor synchronization operations.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement shifts (ST1 and RST1 groups)
Max Filippov [Mon, 5 Sep 2011 23:55:35 +0000 (03:55 +0400)]
target-xtensa: implement shifts (ST1 and RST1 groups)

- ST1: SAR (shift amount special register) manipulation, NSA(U);
- RST1: shifts, 16-bit multiplication.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement RST3 group
Max Filippov [Mon, 5 Sep 2011 23:55:34 +0000 (03:55 +0400)]
target-xtensa: implement RST3 group

- access to Special Registers (wsr, rsr);
- access to User Registers (wur, rur);
- misc. operations option (value clamp, sign extension, min, max);
- conditional moves.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: add special and user registers
Max Filippov [Mon, 5 Sep 2011 23:55:33 +0000 (03:55 +0400)]
target-xtensa: add special and user registers

Special Registers hold the majority of the state added to the processor
by the options. See ISA, 5.3 for details.

User Registers hold state added in support of designer's TIE and in some
cases of options that Tensilica provides. See ISA, 5.4 for details.

Only registers mapped in sregnames or uregnames are considered valid.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement JX/RET0/CALLX
Max Filippov [Mon, 5 Sep 2011 23:55:32 +0000 (03:55 +0400)]
target-xtensa: implement JX/RET0/CALLX

Group SNM0 (indirect jumps and calls).

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement conditional jumps
Max Filippov [Mon, 5 Sep 2011 23:55:31 +0000 (03:55 +0400)]
target-xtensa: implement conditional jumps

- BZ (comparison to zero);
- BI0 (comparison to signed immediate);
- BI1 (comparison to unsigned immediate);
- B (two registers comparison, bit sets comparison);
- BEQZ.N/BNEZ.N (narrow comparison to zero).

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: add sample board
Max Filippov [Mon, 5 Sep 2011 23:55:30 +0000 (03:55 +0400)]
target-xtensa: add sample board

Sample board and sample CPU core are used for debug and may be used for
development of custom SoC emulators.

This board has two fixed size memory regions for DTCM and ITCM and
variable length SRAM region.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement RT0 group
Max Filippov [Mon, 5 Sep 2011 23:55:29 +0000 (03:55 +0400)]
target-xtensa: implement RT0 group

NEG and ABS are the only members of RT0 group.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement narrow instructions
Max Filippov [Mon, 5 Sep 2011 23:55:28 +0000 (03:55 +0400)]
target-xtensa: implement narrow instructions

Instructions with op0 >= 8 are 2 bytes long, others are 3 bytes long.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: implement disas_xtensa_insn
Max Filippov [Mon, 5 Sep 2011 23:55:27 +0000 (03:55 +0400)]
target-xtensa: implement disas_xtensa_insn

Set up disas_xtensa_insn switch structure, mark required options on high
level groups. Implement arithmetic/bit logic/jump/call0.

Implement code generation loop with single step/breakpoint checking.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: add target to the configure script
Max Filippov [Mon, 5 Sep 2011 23:55:26 +0000 (03:55 +0400)]
target-xtensa: add target to the configure script

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agotarget-xtensa: add target stubs
Max Filippov [Mon, 5 Sep 2011 23:55:25 +0000 (03:55 +0400)]
target-xtensa: add target stubs

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agomipsnet: use trace framework
Hervé Poussineau [Sun, 4 Sep 2011 20:29:27 +0000 (22:29 +0200)]
mipsnet: use trace framework

Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agomipsnet: convert to qdev
Hervé Poussineau [Sun, 4 Sep 2011 20:29:26 +0000 (22:29 +0200)]
mipsnet: convert to qdev

Move mipsnet_init() function to mipssim machine

Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agoPCI: delete unused mem_base and pci_to_cpu_addr
Blue Swirl [Sat, 3 Sep 2011 16:41:21 +0000 (16:41 +0000)]
PCI: delete unused mem_base and pci_to_cpu_addr

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agoSparc64: remove useless variable
Blue Swirl [Sun, 4 Sep 2011 11:32:23 +0000 (11:32 +0000)]
Sparc64: remove useless variable

Remove a useless variable, spotted by clang analyzer:
/src/qemu/target-sparc/op_helper.c:3904:18: warning: unused variable 'tmp' [-Wunused-variable]
    target_ulong tmp = val;
The error message is actually incorrect since the variable is used.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agolsi53c895a: avoid a warning from clang analyzer
Blue Swirl [Sun, 4 Sep 2011 11:22:31 +0000 (11:22 +0000)]
lsi53c895a: avoid a warning from clang analyzer

Avoid this warning from clang analyzer by deleting the variable:
/src/qemu/hw/lsi53c895a.c:895:5: warning: Value stored to 'id' is never read
    id = (current_tag >> 8) & 0xf;

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agocpu-exec: remove unnecessary assignment
Blue Swirl [Sun, 4 Sep 2011 11:06:22 +0000 (11:06 +0000)]
cpu-exec: remove unnecessary assignment

Avoid this warning from clang analyzer:
/src/qemu/cpu-exec.c:97:5: warning: Value stored to 'phys_page2' is never read
    phys_page2 = -1;

Adjust the scope of the variable while at it.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agokvm: remove unnecessary assignments
Blue Swirl [Sun, 4 Sep 2011 11:03:52 +0000 (11:03 +0000)]
kvm: remove unnecessary assignments

Avoid these warnings from clang analyzer:
/src/qemu/target-i386/kvm.c:772:5: warning: Value stored to 'cwd' is never read
    cwd = swd = twd = 0;
/src/qemu/target-i386/kvm.c:772:11: warning: Although the value stored to 'swd' is used in the enclosing expression, the value is never actually read from 'swd'
    cwd = swd = twd = 0;

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agohid: fix misassignment
Blue Swirl [Sun, 4 Sep 2011 10:59:52 +0000 (10:59 +0000)]
hid: fix misassignment

The code does not have any effect as is, fix it.

Spotted by clang analyzer:
/src/qemu/hw/hid.c:99:13: warning: Value stored to 'x1' is never read
            x1 = 1;

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agoscsi-bus: remove duplicate table entries
Blue Swirl [Sun, 4 Sep 2011 10:56:51 +0000 (10:56 +0000)]
scsi-bus: remove duplicate table entries

Remove duplicate entries from SCSI command table, spotted by
clang analyzer:
/src/qemu/hw/scsi-bus.c:979:40: warning: initializer overrides prior initialization of this subobject
        [ ERASE_16                 ] = "ERASE_16",
/src/qemu/hw/scsi-bus.c:978:40: note: previous initialization is here
        [ WRITE_SAME_16            ] = "WRITE_SAME_16",
/src/qemu/hw/scsi-bus.c:984:40: warning: initializer overrides prior initialization of this subobject
        [ MAINTENANCE_IN           ] = "MAINTENANCE_IN",
/src/qemu/hw/scsi-bus.c:917:40: note: previous initialization is here
        [ MAINTENANCE_IN           ] = "MAINTENANCE_IN",
/src/qemu/hw/scsi-bus.c:985:40: warning: initializer overrides prior initialization of this subobject
        [ MAINTENANCE_OUT          ] = "MAINTENANCE_OUT",
/src/qemu/hw/scsi-bus.c:918:40: note: previous initialization is here
        [ MAINTENANCE_OUT          ] = "MAINTENANCE_OUT",

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agoqemu-io: remove unnecessary assignment
Blue Swirl [Sun, 4 Sep 2011 10:38:01 +0000 (10:38 +0000)]
qemu-io: remove unnecessary assignment

Remove an unnecessary assignment, spotted by clang analyzer:
/src/qemu/qemu-io.c:995:9: warning: Value stored to 'offset' is never read
        offset += reqs[i].qiov->size;

Acked-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agowin32: improve version.o dependency
Blue Swirl [Sun, 4 Sep 2011 09:32:55 +0000 (09:32 +0000)]
win32: improve version.o dependency

Actually, version.rc doesn't need config-host.mak but config-host.h, fix it.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agog364fb: compile in hwlib
Blue Swirl [Sun, 4 Sep 2011 20:51:28 +0000 (20:51 +0000)]
g364fb: compile in hwlib

Compile g364fb in hwlib. Two compilations less for the full build.

Acked-by: Hervé Poussineau <hpoussin@reactos.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
12 years agoMerge remote-tracking branch 'sstabellini/xen-next' into staging
Anthony Liguori [Fri, 9 Sep 2011 18:13:27 +0000 (13:13 -0500)]
Merge remote-tracking branch 'sstabellini/xen-next' into staging

12 years agoMerge remote-tracking branch 'stefanha/trivial-patches' into staging
Anthony Liguori [Fri, 9 Sep 2011 18:09:57 +0000 (13:09 -0500)]
Merge remote-tracking branch 'stefanha/trivial-patches' into staging

12 years agobuild: fix missing trace dep on GENERATED_HEADERS
Michael Roth [Wed, 7 Sep 2011 23:40:51 +0000 (18:40 -0500)]
build: fix missing trace dep on GENERATED_HEADERS

fc764105 added an include for qemu-common.h to trace/control.h, which
made all users of this header file dependent on GENERATED_HEADERS. Since
it's used by pretty much all the trace backends now, make trace-obj-y
dependent on GENERATED_HEADERS.

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
12 years agovns/tls: don't use depricated gnutls functions
Gerd Hoffmann [Wed, 7 Sep 2011 15:52:10 +0000 (17:52 +0200)]
vns/tls: don't use depricated gnutls functions

Avoid using deprecated gnutls functions with recent gnutls versions.
Fixes build failure on Fedora 16.  Keep the old way for compatibility
with old installations such as RHEL-5 (gnutls 1.4.x).

Based on a patch from Raghavendra D Prabhu <raghu.prabhu13@gmail.com>

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
12 years agoUse hex instead of binary.
Gerd Hoffmann [Wed, 7 Sep 2011 13:02:16 +0000 (15:02 +0200)]
Use hex instead of binary.

Older gcc versions don't understand 0b<bits>,
use hex representation instead.

Fixes build failure on RHEL-5.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
12 years agoDon't use g_thread_get_initialized.
Gerd Hoffmann [Wed, 7 Sep 2011 13:02:15 +0000 (15:02 +0200)]
Don't use g_thread_get_initialized.

Initialize glib threads unconditionally in main() instead
of using g_thread_get_initialized in the 9p code.

Fixes a build failure on RHEL-5, which ships glib 2.12.
g_thread_get_initialized was added in 2.20.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
12 years agoqemu_vmalloc: align properly for transparent hugepages and KVM
Avi Kivity [Mon, 5 Sep 2011 08:07:05 +0000 (11:07 +0300)]
qemu_vmalloc: align properly for transparent hugepages and KVM

To make good use of transparent hugepages, KVM requires that guest-physical
and host-virtual addresses share the low 21 bits (as opposed to just the low
12 bits normally required).

Adjust qemu_vmalloc() to honor that requirement.  Ignore it for small regions
to avoid fragmentation.

Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
12 years agocurses: fix garbling when chtype != long
Devin J. Pohly [Wed, 7 Sep 2011 19:44:36 +0000 (15:44 -0400)]
curses: fix garbling when chtype != long

Qemu currently assumes that chtype is typedef'd to unsigned long, but
this is not necessarily the case (ncurses, for instance, can configure
this at build-time).  This patch uses the predefined chtype if qemu is
configured for curses support and falls back to unsigned long otherwise.

Fixes bug 568614.

Signed-off-by: Devin J. Pohly <djpohly+launchpad@gmail.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
12 years agovirtio-balloon: Disassociate from the balloon handlers on unplug
Amit Shah [Fri, 9 Sep 2011 09:00:40 +0000 (14:30 +0530)]
virtio-balloon: Disassociate from the balloon handlers on unplug

Adding a 2nd balloon device after unplugging the first one doesn't work.
Also, the 'info balloon' command should indicate an error mentioning no
balloon device is registered after unplug.

Reproduction steps given by Shaolong Hu:

(qemu) info balloon
Device 'balloon' has not been activated by the guest
(qemu) device_add virtio-balloon-pci,id=balloon1
(qemu) info balloon
balloon: actual=4096
(qemu) balloon 2048
(qemu) info balloon
balloon: actual=2048
(qemu) device_del balloon1
(qemu) info balloon
balloon: actual=4096
(qemu) balloon 2048
(qemu) info balloon
balloon: actual=4096
(qemu) device_del balloon1
Device 'balloon1' not found
(qemu) device_add virtio-balloon-pci,id=balloon1
Another balloon device already registered
Device 'virtio-balloon-pci' could not be initialized
(qemu) device_add virtio-balloon-pci,id=balloon2
Another balloon device already registered
Device 'virtio-balloon-pci' could not be initialized

Reported-by: Shaolong Hu <shu@redhat.com>
Signed-off-by: Amit Shah <amit.shah@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
12 years agoballoon: Disassociate handlers from balloon device on unplug
Amit Shah [Fri, 9 Sep 2011 09:00:39 +0000 (14:30 +0530)]
balloon: Disassociate handlers from balloon device on unplug

When a balloon device gets unplugged, allow the balloon handlers to be
freed.

Reported-by: Shaolong Hu <shu@redhat.com>
Signed-off-by: Amit Shah <amit.shah@redhat.com>
Signed-off-by: Amit Shah <amit.shah@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
12 years agotcg/ppc64: Fix zero extension code generation bug for ppc64 host
Thomas Huth [Fri, 9 Sep 2011 05:58:37 +0000 (15:58 +1000)]
tcg/ppc64: Fix zero extension code generation bug for ppc64 host

The ppc64 code generation backend uses an rldicr (Rotate Left Double
Immediate and Clear Right) instruction to implement zero extension of
a 32 bit quantity to a 64 bit quantity (INDEX_op_ext32u_i64).  However
this is wrong - this instruction clears specified low bits of the
value, instead of high bits as we require for a zero extension.  It
should instead use an rldicl (Rotate Left Double Immediate and Clear
Left) instruction.

Presumably amongst other things, this causes the SLOF firmware image
used with -M pseries to not boot on a ppc64 host.

It appears this bug was exposed by commit
0bf1dbdcc935dfc220a93cd990e947e90706aec6 (tcg/ppc64: fix 16/32 mixup)
which enabled the use of the op_ext32u_i64 operation on the ppc64
backend.

Signed-off-by: Thomas Huth <thuth@de.ibm.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: malc <av1474@comtv.ru>
12 years agoxen-mapcache: Fix rlimit set size.
Anthony PERARD [Fri, 9 Sep 2011 12:50:18 +0000 (12:50 +0000)]
xen-mapcache: Fix rlimit set size.

Previously, the address space soft limit was set mcache_max_size. So,
before the mcache_max_size was reached by the mapcache, QEMU was killed
for overuse of the virtual address space.

This patch fix that by setting the soft limit the maximum than can have
QEMU. So the soft and hard limit are always set to RLIM_INFINITY if QEMU
is privileged.

In case QEMU is not run as root and the limit is too low, the maximum
mapcache size will be set the rlim_max - 80MB because observed that QEMU
use 75MB more than the maximum mapcache size after several empirical
tests.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
12 years agoxen: use uint64_t instead of target_ulong in cpu_ioreq_move
Stefano Stabellini [Fri, 20 May 2011 16:57:24 +0000 (16:57 +0000)]
xen: use uint64_t instead of target_ulong in cpu_ioreq_move

cpu_ioreq_move might move 8 bytes at a time so we must make sure that
the temporary variable can hold 8 bytes.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
12 years agoMove the xenfb pointer handler to the connected method
John Haxby [Fri, 17 Jun 2011 12:16:00 +0000 (12:16 +0000)]
Move the xenfb pointer handler to the connected method

Ensure that we read "request-abs-pointer" after the frontend has written
it.  This means that we will correctly set up an ansolute or relative
pointer handler correctly.

Signed-off-by: John Haxby <john.haxby@oracle.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>