sdk/emulator/qemu.git
13 years agoguest agent: add guest agent RPCs/commands
Michael Roth [Tue, 19 Jul 2011 20:41:55 +0000 (15:41 -0500)]
guest agent: add guest agent RPCs/commands

This adds the initial set of QMP/QAPI commands provided by the guest
agent:

guest-sync
guest-ping
guest-info
guest-shutdown
guest-file-open
guest-file-read
guest-file-write
guest-file-seek
guest-file-flush
guest-file-close
guest-fsfreeze-freeze
guest-fsfreeze-thaw
guest-fsfreeze-status

The input/output specification for these commands are documented in the
schema.

Example usage:

  host:
    qemu -device virtio-serial \
         -chardev socket,path=/tmp/vs0.sock,server,nowait,id=qga0 \
         -device virtserialport,chardev=qga0,name=org.qemu.quest_agent.0
         ...

    echo "{'execute':'guest-info'}" | socat stdio unix-connect:/tmp/qga0.sock

  guest:
    qemu-ga -m virtio-serial -p /dev/virtio-ports/org.qemu.guest_agent.0 \
            -p /var/run/qemu-guest-agent.pid -d

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoguest agent: qemu-ga daemon
Michael Roth [Wed, 20 Jul 2011 20:19:37 +0000 (15:19 -0500)]
guest agent: qemu-ga daemon

This is the actual guest daemon, it listens for requests over a
virtio-serial/isa-serial/unix socket channel and routes them through
to dispatch routines, and writes the results back to the channel in
a manner similar to QMP.

A shorthand invocation:

  qemu-ga -d

Is equivalent to:

  qemu-ga -m virtio-serial -p /dev/virtio-ports/org.qemu.guest_agent.0 \
          -f /var/run/qemu-ga.pid -d

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoguest agent: command state class
Michael Roth [Tue, 19 Jul 2011 20:41:53 +0000 (15:41 -0500)]
guest agent: command state class

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoqerror: add QERR_JSON_PARSE_ERROR to qerror.c
Michael Roth [Tue, 19 Jul 2011 20:41:52 +0000 (15:41 -0500)]
qerror: add QERR_JSON_PARSE_ERROR to qerror.c

Missing from previous addition of error to qerror.h. Needed for
qerror_format() and friends.

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoqapi: add QAPI code generation documentation
Michael Roth [Tue, 19 Jul 2011 19:50:46 +0000 (14:50 -0500)]
qapi: add QAPI code generation documentation

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoqapi: add test-qmp-commands, tests for gen. marshalling/dispatch code
Michael Roth [Tue, 19 Jul 2011 19:50:45 +0000 (14:50 -0500)]
qapi: add test-qmp-commands, tests for gen. marshalling/dispatch code

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoqapi: add test-visitor, tests for gen. visitor code
Michael Roth [Tue, 19 Jul 2011 19:50:44 +0000 (14:50 -0500)]
qapi: add test-visitor, tests for gen. visitor code

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoqapi: test schema used for unit tests
Michael Roth [Tue, 19 Jul 2011 19:50:43 +0000 (14:50 -0500)]
qapi: test schema used for unit tests

This is how QMP commands/parameters/types would be defined. We use a
subset of that functionality here to implement functions/types for unit
testing.

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoqapi: add qapi-commands.py code generator
Michael Roth [Tue, 19 Jul 2011 19:50:42 +0000 (14:50 -0500)]
qapi: add qapi-commands.py code generator

This is the code generator for qapi command marshaling/dispatch.
Currently only generators for synchronous qapi/qmp functions are
supported. This script generates the following files:

  $(prefix)qmp-marshal.c: command marshal/dispatch functions for each
                          QMP command defined in the schema. Functions
                          generated by qapi-visit.py are used to
                          convert qobjects recieved from the wire into
                          function parameters, and uses the same
                          visiter functions to convert native C return
                          values to qobjects from transmission back
                          over the wire.

  $(prefix)qmp-commands.h: Function prototypes for the QMP commands
                           specified in the schema.

$(prefix) is used in the same manner as with qapi-types.py

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoqapi: add qapi-visit.py code generator
Michael Roth [Tue, 19 Jul 2011 19:50:41 +0000 (14:50 -0500)]
qapi: add qapi-visit.py code generator

This is the code generator for qapi visiter functions used to
marshal/unmarshal/dealloc qapi types. It generates the following 2
files:

  $(prefix)qapi-visit.c: visiter function for a particular c type, used
                         to automagically convert qobjects into the
                         corresponding C type and vice-versa, and well
                         as for deallocation memory for an existing C
                         type

  $(prefix)qapi-visit.h: declarations for previously mentioned visiter
                         functions

$(prefix) is used as decribed for qapi-types.py

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoqapi: add qapi-types.py code generator
Michael Roth [Tue, 19 Jul 2011 19:50:40 +0000 (14:50 -0500)]
qapi: add qapi-types.py code generator

This is the code generator for qapi types. It will generation the
following files:

  $(prefix)qapi-types.h - C types corresponding to types defined in
                          the schema you pass in
  $(prefix)qapi-types.c - Cleanup functions for the above C types

The $(prefix) is used to as a namespace to keep the generated code from
one schema/code-generation separated from others so code and be
generated from multiple schemas with clobbering previously created code.

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoqapi: add qapi.py helper libraries
Michael Roth [Tue, 19 Jul 2011 19:50:39 +0000 (14:50 -0500)]
qapi: add qapi.py helper libraries

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoqapi: add ordereddict.py helper library
Michael Roth [Tue, 19 Jul 2011 19:50:38 +0000 (14:50 -0500)]
qapi: add ordereddict.py helper library

We need this to parse dictionaries with schema ordering intact so that C
prototypes can be generated deterministically.

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoqapi: add QMP dispatch functions
Michael Roth [Tue, 19 Jul 2011 19:50:37 +0000 (14:50 -0500)]
qapi: add QMP dispatch functions

Given an object recieved via QMP, this code uses the dispatch table
provided by qmp_registry.c to call the corresponding marshalling/dispatch
function and format return values/errors for delivery to the QMP.
Currently only synchronous QMP functions are supported, but this will
also be used for async QMP functions and QMP guest proxy dispatch as
well.

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoqapi: add QMP command registration/lookup functions
Michael Roth [Tue, 19 Jul 2011 19:50:36 +0000 (14:50 -0500)]
qapi: add QMP command registration/lookup functions

Registration/lookup functions for that provide a lookup table for
dispatching QMP commands.

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoqapi: add QAPI dealloc visitor
Michael Roth [Tue, 19 Jul 2011 19:50:35 +0000 (14:50 -0500)]
qapi: add QAPI dealloc visitor

Type of Visitor class that can be passed into a qapi-generated C
type's visitor function to free() any heap-allocated data types.

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoqapi: add QMP output visitor
Michael Roth [Tue, 19 Jul 2011 19:50:34 +0000 (14:50 -0500)]
qapi: add QMP output visitor

Type of Visiter class that serves as the inverse of the input visitor:
it takes a series of native C types and uses their values to construct a
corresponding QObject. The command marshaling/dispatcher functions will
use this to convert the output of QMP functions into a QObject that can
be sent over the wire.

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoqapi: add QMP input visitor
Michael Roth [Tue, 19 Jul 2011 19:50:33 +0000 (14:50 -0500)]
qapi: add QMP input visitor

A type of Visiter class that is used to walk a qobject's
structure and assign each entry to the corresponding native C type.
Command marshaling function will use this to pull out QMP command
parameters recieved over the wire and pass them as native arguments
to the corresponding C functions.

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoqapi: add QAPI visitor core
Michael Roth [Tue, 19 Jul 2011 19:50:32 +0000 (14:50 -0500)]
qapi: add QAPI visitor core

Base definitions/includes for Visiter interface used by generated
visiter/marshalling code.

Includes a GenericList type. Our lists require an embedded element.
Since these types are generated, if you want to use them in a different
type of data structure, there's no easy way to add another embedded
element. The solution is to have non-embedded lists and that what this is.

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoqapi: add module init types for qapi
Michael Roth [Tue, 19 Jul 2011 19:50:31 +0000 (14:50 -0500)]
qapi: add module init types for qapi

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoqlist: add qlist_first()/qlist_next()
Michael Roth [Tue, 19 Jul 2011 19:50:30 +0000 (14:50 -0500)]
qlist: add qlist_first()/qlist_next()

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoAdd hard build dependency on glib
Anthony Liguori [Tue, 19 Jul 2011 19:50:29 +0000 (14:50 -0500)]
Add hard build dependency on glib

GLib is an extremely common library that has a portable thread implementation
along with tons of other goodies.

GLib and GObject have a fantastic amount of infrastructure we can leverage in
QEMU including an object oriented programming infrastructure.

Short term, it has a very nice thread pool implementation that we could leverage
in something like virtio-9p.  It also has a test harness implementation that
this series will use.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoError: Fix build when qemu-common.h is not included
Luiz Capitulino [Mon, 11 Jul 2011 18:01:57 +0000 (15:01 -0300)]
Error: Fix build when qemu-common.h is not included

Commit e4ea5e2d0e0e4c5188ab45b66f3195062ae059dc added the use of
the macro GCC_FMT_ATTR to error.h, however compiler.h is not
included by error.h

This will cause a build error when files including error.h
don't include qemu-common.h (or compiler.h). Not an issue today
because the only file including it is json-parser.h and it does
include qemu-common.h, but let's get it fixed.

Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoIntroduce compiler.h header file
Luiz Capitulino [Mon, 11 Jul 2011 17:24:44 +0000 (14:24 -0300)]
Introduce compiler.h header file

This moves compiler related macros from qemu-common.h to compiler.h.

The reason for this change is that there are simple header files that
depend only on the compiler macros, so including qemu-common.h is overkill.

Besides, qemu-common.h is bloated and will benefit from some splitting.

Please, also note that the QEMU_BUILD_BUG_ON() macro is being fixed to
not use double underscores as a prefix and the license text was added
by Vassili Karpov (malc), who is one of the authors of the new file.

Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoQMP: add snapshot-blkdev-sync command
Jes Sorensen [Mon, 11 Jul 2011 18:01:09 +0000 (20:01 +0200)]
QMP: add snapshot-blkdev-sync command

Add QMP bits for snapshot_blkdev command. This is the same as
snapshot_blkdev in the human monitor. The command is synchronous.

In the future async commands and or a break down of the functionality
into multiple commands might be added.

Also change the 'snapshot_file' argument to 'snapshot-file' in
the human monitor, so that it matches QMP.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
13 years agoUpdate OpenBIOS images for Sparc32 and Sparc64
Blue Swirl [Wed, 20 Jul 2011 22:06:33 +0000 (22:06 +0000)]
Update OpenBIOS images for Sparc32 and Sparc64

Update Sparc32 and Sparc64 OpenBIOS images to SVN revision 1045.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoFix unassigned memory access handling
Blue Swirl [Sun, 3 Jul 2011 08:53:46 +0000 (08:53 +0000)]
Fix unassigned memory access handling

cea5f9a28faa528b6b1b117c9ab2d8828f473fef exposed bugs in unassigned memory
access handling. Fix them by always passing CPUState to the handlers.

Reported-by: Hervé Poussineau <hpoussin@reactos.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoAvoid CPU endian memory accesses in devices
Blue Swirl [Thu, 14 Jul 2011 15:22:20 +0000 (15:22 +0000)]
Avoid CPU endian memory accesses in devices

Don't compile virtio.c in hwlib, it depends on memory accesses
performed in CPU endianness.

Make loads and stores in CPU endianness unavailable to devices
and poison them to avoid further bugs.

Acked-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoSPARC64: treat UA2007 ASI_BLK_* as translating ASIs.
Tsuneo Saito [Mon, 18 Jul 2011 05:32:18 +0000 (14:32 +0900)]
SPARC64: treat UA2007 ASI_BLK_* as translating ASIs.

UA2007 ASI_BLK_* should be added in is_translating_asi().

Signed-off-by: Tsuneo Saito <tsnsaito@gmail.com>
Acked-by: Artyom Tarasenko <atar4qemu@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agocheckpatch: Fix bracing false positives on #if
Blue Swirl [Fri, 15 Jul 2011 20:09:10 +0000 (20:09 +0000)]
checkpatch: Fix bracing false positives on #if

789f88d0b21fedfd4251d56bb7a9fbfbda7a4ac7 only fixed #else,
fix also #if.

Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agotcg/mips: Fix regression caused by typo (copy + paste bug)
Stefan Weil [Wed, 20 Jul 2011 18:56:36 +0000 (20:56 +0200)]
tcg/mips: Fix regression caused by typo (copy + paste bug)

cppcheck reports an error:
qemu/tcg/mips/tcg-target.c:1487: error: Invalid number of character (()

The unpatched code won't compile on mips hosts starting with commit
cea5f9a28faa528b6b1b117c9ab2d8828f473fef.

Cc: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agods1225y: convert to qdev device, and use it in MIPS Jazz emulation
Hervé Poussineau [Mon, 18 Jul 2011 21:34:22 +0000 (23:34 +0200)]
ds1225y: convert to qdev device, and use it in MIPS Jazz emulation

Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agods1225y: use trace framework
Hervé Poussineau [Mon, 18 Jul 2011 21:34:21 +0000 (23:34 +0200)]
ds1225y: use trace framework

Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agods1225y: Remove protection stuff, which doesn't belong to this device
Hervé Poussineau [Mon, 18 Jul 2011 21:34:20 +0000 (23:34 +0200)]
ds1225y: Remove protection stuff, which doesn't belong to this device

Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoSPARC64: add missing break on fmovdcc
Tsuneo Saito [Mon, 18 Jul 2011 06:36:57 +0000 (15:36 +0900)]
SPARC64: add missing break on fmovdcc

"break" is missing on V9 fmovdcc (%icc).

Signed-off-by: Tsuneo Saito <tsnsaito@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoSPARC64: fix VIS1 SIMD signed compare instructions
Tsuneo Saito [Mon, 18 Jul 2011 06:00:00 +0000 (15:00 +0900)]
SPARC64: fix VIS1 SIMD signed compare instructions

The destination registers of SIMD signed compare instructions
(fcmp*<16|32>) are not FP registers but general purpose r registers.
Comparisons should be freg_rs1 CMP freg_rs2, that were reversed.

Signed-off-by: Tsuneo Saito <tsnsaito@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoMerge branch 'for-upstream' of git://git.linaro.org/people/pmaydell/qemu-arm
Blue Swirl [Wed, 20 Jul 2011 20:23:01 +0000 (20:23 +0000)]
Merge branch 'for-upstream' of git://git.linaro.org/people/pmaydell/qemu-arm

* 'for-upstream' of git://git.linaro.org/people/pmaydell/qemu-arm:
  target-arm: Fix BASEPRI, BASEPRI_MAX, and FAULTMASK access
  target-arm: Minimal implementation of performance counters
  Revert "Makefile.target: Allow target helpers to be in any *_helper.c file"
  Revert "target-arm: Use global env in neon_helper.c helpers"
  target-arm: Pass fp status pointer explicitly to neon fp helpers
  target-arm: Make VFP binop helpers take pointer to fpstatus, not CPUState
  target-arm: Add helper function to generate code to get fpstatus pointer
  Revert "target-arm: Use global env in iwmmxt_helper.c helpers"

Conflicts:
Makefile.target

13 years agoMerge remote-tracking branch 'agraf/xen-next' into staging
Anthony Liguori [Tue, 19 Jul 2011 13:04:35 +0000 (08:04 -0500)]
Merge remote-tracking branch 'agraf/xen-next' into staging

13 years agoMerge remote-tracking branch 'kraxel/usb.19' into staging
Anthony Liguori [Tue, 19 Jul 2011 13:03:20 +0000 (08:03 -0500)]
Merge remote-tracking branch 'kraxel/usb.19' into staging

13 years agoMerge remote-tracking branch 'spice/spice.v38' into staging
Anthony Liguori [Tue, 19 Jul 2011 13:02:35 +0000 (08:02 -0500)]
Merge remote-tracking branch 'spice/spice.v38' into staging

13 years agoMerge remote-tracking branch 'mst/for_anthony' into staging
Anthony Liguori [Tue, 19 Jul 2011 12:43:54 +0000 (07:43 -0500)]
Merge remote-tracking branch 'mst/for_anthony' into staging

13 years agoMerge remote-tracking branch 'riku/linux-user-for-upstream' into staging
Anthony Liguori [Tue, 19 Jul 2011 12:43:51 +0000 (07:43 -0500)]
Merge remote-tracking branch 'riku/linux-user-for-upstream' into staging

13 years agovirtio-console: Prevent abort()s in case of host chardev close
Amit Shah [Thu, 7 Jul 2011 12:05:27 +0000 (17:35 +0530)]
virtio-console: Prevent abort()s in case of host chardev close

A host chardev could close just before the guest sends some data to be
written.  This will cause an -EPIPE error.  This shouldn't be propagated
to virtio-serial-bus.

Ideally we should close the port once -EPIPE is received, but since the
chardev interface doesn't return such meaningful values to its users,
all we get is -1 for any kind of error.  Just return 0 for now and wait
for chardevs to return better error messages to act better on the return
messages.

Signed-off-by: Amit Shah <amit.shah@redhat.com>
13 years agovirtio-serial-bus: Fix trailing \n in error_report string
Amit Shah [Thu, 7 Jul 2011 12:46:13 +0000 (18:16 +0530)]
virtio-serial-bus: Fix trailing \n in error_report string

Markus fixed offenders in the file but one instance sneaked in via
another patch.  Fix it.

Signed-off-by: Amit Shah <amit.shah@redhat.com>
13 years agovirtio-console: Add some trace events
Amit Shah [Tue, 5 Jul 2011 11:07:49 +0000 (16:37 +0530)]
virtio-console: Add some trace events

Add some trace events for messages passed between the char layer and the
virtio-serial bus.

Signed-off-by: Amit Shah <amit.shah@redhat.com>
13 years agovirtio-serial-bus: Add trace events
Amit Shah [Tue, 5 Jul 2011 11:06:39 +0000 (16:36 +0530)]
virtio-serial-bus: Add trace events

Add some trace events for messages passed between the guest and host.

Signed-off-by: Amit Shah <amit.shah@redhat.com>
13 years agovirtio: fix indirect descriptor buffer overflow
Michael S. Tsirkin [Mon, 20 Jun 2011 10:42:27 +0000 (13:42 +0300)]
virtio: fix indirect descriptor buffer overflow

We were previously allowing arbitrarily-long indirect descriptors, which
could lead to a buffer overflow in qemu-kvm process.

CVE-2011-2212

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
13 years agoxen: move to new pci initializers
Michael S. Tsirkin [Sun, 26 Jun 2011 13:30:45 +0000 (16:30 +0300)]
xen: move to new pci initializers

move ids to pci info structure

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
13 years agohw/piix_pci.c: Fix PIIX3-xen to initialize ids
Anthony PERARD [Wed, 22 Jun 2011 15:58:31 +0000 (16:58 +0100)]
hw/piix_pci.c: Fix PIIX3-xen to initialize ids

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
13 years agopci_ids: tweak names to match linux/pci_ids.h
Michael S. Tsirkin [Sun, 26 Jun 2011 13:17:27 +0000 (16:17 +0300)]
pci_ids: tweak names to match linux/pci_ids.h

Sync xen names to ones used by linux. Add
xen platform device id as well.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
13 years agovhost: fix double free on device stop
Michael S. Tsirkin [Tue, 21 Jun 2011 17:34:17 +0000 (20:34 +0300)]
vhost: fix double free on device stop

vhost dev stop failed to clear the log field.
Typically not an issue as dev start overwrites this field,
but if logging gets disabled before the following start,
it doesn't so this causes a double free.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
13 years agoxen_console: fall back to qemu serial device
Alexander Graf [Sun, 3 Jul 2011 07:44:48 +0000 (09:44 +0200)]
xen_console: fall back to qemu serial device

The new xen_console protocol changed the default xen_console output device
from whatever Qemu chose to whatever xenstore choses and "pty" as fallback.

This is not how Qemu works. It has its own serial redirection semantics. So
it xenstore doesn't contain information on what to do, Qemu is the place to
ask.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoxen_console: support the new extended xenstore protocol
Stefano Stabellini [Thu, 30 Jun 2011 17:26:29 +0000 (18:26 +0100)]
xen_console: support the new extended xenstore protocol

Since CS 21994 on xen-unstable.hg and CS
466608f3a32e1f9808acdf832a5843af37e5fcec on qemu-xen-unstable.git, few
changes have been introduced to the PV console xenstore protocol, as
described by the document docs/misc/console.txt under xen-unstable.hg.

From the Qemu point of view, very few modifications are needed to
correctly support the protocol: read from xenstore the "output" node
that tell us what the output of the PV console is going to be.
In case the output is a tty, write to xenstore the device name.

Changes in v2:

- fix error paths: free malloc'ed strings and close the xenstore
connection before returning;

- remove useless snprintf in xenstore_store_pv_console_info if i == 0.

Changes in v3:

- replace xs_daemon_open/xs_daemon_close with xs_open/xs_close.

Changes in v4:

- add a compatibility implementation of xs_open/xs_close.

Changes in v5:

- fix code style.

[agraf] fix build error due to missing stub

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agocheckpatch: don't error out on },{ lines
Alexander Graf [Wed, 29 Jun 2011 06:04:27 +0000 (08:04 +0200)]
checkpatch: don't error out on },{ lines

When having code like this:

    static PCIDeviceInfo piix_ide_info[] = {
        {
            .qdev.name    = "piix3-ide",
            .qdev.size    = sizeof(PCIIDEState),
            .qdev.no_user = 1,
            .no_hotplug   = 1,
            .init         = pci_piix_ide_initfn,
            .vendor_id    = PCI_VENDOR_ID_INTEL,
            .device_id    = PCI_DEVICE_ID_INTEL_82371SB_1,
            .class_id     = PCI_CLASS_STORAGE_IDE,
        },{
            .qdev.name    = "piix4-ide",
            .qdev.size    = sizeof(PCIIDEState),
            .qdev.no_user = 1,
            .no_hotplug   = 1,
            .init         = pci_piix_ide_initfn,
            .vendor_id    = PCI_VENDOR_ID_INTEL,
            .device_id    = PCI_DEVICE_ID_INTEL_82371AB,
            .class_id     = PCI_CLASS_STORAGE_IDE,
        },{
            /* end of list */
        }
    };

checkpatch currently errors out, claiming that spaces need to follow
commas. However, this particular style of defining structs is pretty
common in qemu code and very readable. So let's declare it as supported
for the above case.

Reported-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoxen_disk: treat "aio" as "raw"
Stefano Stabellini [Thu, 30 Jun 2011 14:42:31 +0000 (15:42 +0100)]
xen_disk: treat "aio" as "raw"

Sometimes the toolstack uses "aio" without an additional format
identifier, in such cases use "raw".

Updated in v2:

- fix code style.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoqemu_ram_ptr_length: take ram_addr_t as arguments
Stefano Stabellini [Mon, 27 Jun 2011 17:26:06 +0000 (18:26 +0100)]
qemu_ram_ptr_length: take ram_addr_t as arguments

qemu_ram_ptr_length should take ram_addr_t as argument rather than
target_phys_addr_t because is doing comparisons with RAMBlock addresses.

cpu_physical_memory_map should create a ram_addr_t address to pass to
qemu_ram_ptr_length from PhysPageDesc phys_offset.

Remove code after abort() in qemu_ram_ptr_length.

Changes in v2:

- handle 0 size in qemu_ram_ptr_length;

- rename addr1 to raddr;

- initialize raddr to ULONG_MAX.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoxen_disk: cope with missing xenstore "params" node
Stefano Stabellini [Mon, 27 Jun 2011 15:10:01 +0000 (16:10 +0100)]
xen_disk: cope with missing xenstore "params" node

When disk is a cdrom and the drive is empty the "params" node in
xenstore might be missing completely: cope with it instead of
segfaulting.

Updated in v2:

- actually removed the strchr(blkdev->params, ':') that caused the
segfault;

- free all the allocated strings from xenstore before returning;

Updated in v3:

- set blkdev fields to NULL after free'ing them.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoxen: add vkbd support for PV on HVM guests
Stefano Stabellini [Fri, 24 Jun 2011 16:36:11 +0000 (17:36 +0100)]
xen: add vkbd support for PV on HVM guests

Register the vkbd backend even when running as device emulator for HVM
guests: it is useful because it doesn't need a frequent timer like usb.

Check whether the XenInput DisplayState has been set in the initialise
state, rather than the input state.
In case the DisplayState hasn't been set and there is no vfb for this
domain, then set the XenInput DisplayState to the default one.

Changed in v2:

- use qemu_free instead of free;

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoxen_console: fix memory leak
Stefano Stabellini [Fri, 24 Jun 2011 15:59:46 +0000 (16:59 +0100)]
xen_console: fix memory leak

con_init leaks the string "type", fix it.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoxen: enable console and disk backend in HVM mode
Stefano Stabellini [Fri, 24 Jun 2011 14:54:48 +0000 (15:54 +0100)]
xen: enable console and disk backend in HVM mode

Initialize the Xen console backend and the Xen disk backend even when
running in HVM mode so that PV on HVM drivers can connect to them.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoxen: Fold CONFIG_XEN_MAPCACHE into CONFIG_XEN
Jan Kiszka [Tue, 21 Jun 2011 20:59:09 +0000 (22:59 +0200)]
xen: Fold CONFIG_XEN_MAPCACHE into CONFIG_XEN

Xen won't be enabled if there is no backend support available for the
host. And that also means the map cache will work. So drop the separate
config switch and move the required stubs over to xen-stub.c.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoxen: Clean up map cache API naming
Jan Kiszka [Tue, 21 Jun 2011 20:59:08 +0000 (22:59 +0200)]
xen: Clean up map cache API naming

The map cache is a Xen thing, so its API should make this clear.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoxen: Clean up build system
Jan Kiszka [Tue, 21 Jun 2011 20:59:07 +0000 (22:59 +0200)]
xen: Clean up build system

Introduce CONFIG_XEN_BACKEND so that this new config solely controls the
target-independent backend build and CONFIG_XEN can focus on per-target
building.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoFix signal handling of SIG_IPI when io-thread is enabled
Alexandre Raymond [Wed, 15 Jun 2011 05:20:31 +0000 (01:20 -0400)]
Fix signal handling of SIG_IPI when io-thread is enabled

Both the signal thread (via sigwait()) and the cpu thread (via
a normal signal handler) were attempting to catch SIG_IPI.

This resulted in random freezes under Darwin.

This patch separates SIG_IPI from the rest of the signals handled
by the signal thread, because it is independently caught by the cpu
thread.

Signed-off-by: Alexandre Raymond <cerbere@gmail.com>
Acked-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoFix signal handling when io-thread is disabled
Alexandre Raymond [Tue, 14 Jun 2011 14:05:36 +0000 (10:05 -0400)]
Fix signal handling when io-thread is disabled

Changes since v1:
- take pthread_sigmask() out of the ifdef as it is now common
to both parts.

This fix effectively blocks, in the main thread, the signals handled
by signalfd or the compatibility signal thread.

This way, such signals are received synchronously in the main thread
through sigfd_handler() instead of triggering the signal handler
directly, asynchronously.

Signed-off-by: Alexandre Raymond <cerbere@gmail.com>
Acked-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agotcg/README: Expand advice on number of TCG ops per target insn
Peter Maydell [Wed, 22 Jun 2011 14:40:06 +0000 (15:40 +0100)]
tcg/README: Expand advice on number of TCG ops per target insn

Expand the note on the number of TCG ops generated per target insn,
to be clearer about the range of applicability of the 20 op rule
of thumb. Also add a note about the hard MAX_OP_PER_INSTR limit.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoset ELF_HWCAP for SPARC and SPARC64
Artyom Tarasenko [Thu, 14 Jul 2011 17:37:06 +0000 (19:37 +0200)]
set ELF_HWCAP for SPARC and SPARC64

setting ELF_HWCAP fixes dynamic library loading for Linux/sparc64
This patch allows loading busybox from Debian 6 initrd

Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoSparc: fix FPU and AM enable checks for translation
Blue Swirl [Thu, 14 Jul 2011 17:30:43 +0000 (17:30 +0000)]
Sparc: fix FPU and AM enable checks for translation

Translation used incorrectly CPUState fields directly to check
for FPU enable state and 32 bit address masking on Sparc64.

Fix by using TB flags instead.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoSPARC64: C99 comment fix for block-transfer ASIs
Tsuneo Saito [Thu, 14 Jul 2011 09:41:43 +0000 (18:41 +0900)]
SPARC64: C99 comment fix for block-transfer ASIs

Fixed C99 comments on block-tranfer ASIs.

Signed-off-by: Tsuneo Saito <tsnsaito@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoSPARC64: Add JPS1 ASI_BLK_AIU[PS]L ASIs for ldfa and stfa
Tsuneo Saito [Thu, 14 Jul 2011 09:41:42 +0000 (18:41 +0900)]
SPARC64: Add JPS1 ASI_BLK_AIU[PS]L ASIs for ldfa and stfa

Support JPS1 little endian block transfer ASIs.

Signed-off-by: Tsuneo Saito <tsnsaito@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoSPARC64: Add UA2007 ASI_BLK_AIU[PS]L? ASIs for stfa
Tsuneo Saito [Thu, 14 Jul 2011 09:41:41 +0000 (18:41 +0900)]
SPARC64: Add UA2007 ASI_BLK_AIU[PS]L? ASIs for stfa

Support UA2007 block store ASIs for stfa instructions.

Signed-off-by: Tsuneo Saito <tsnsaito@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoSPARC64: Add UA2007 ASI_BLK_AIU[PS]L? ASIs for ldfa
Tsuneo Saito [Thu, 14 Jul 2011 09:41:40 +0000 (18:41 +0900)]
SPARC64: Add UA2007 ASI_BLK_AIU[PS]L? ASIs for ldfa

Support UA2007 block load ASIs for ldfa instructions.

Signed-off-by: Tsuneo Saito <tsnsaito@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoSPARC64: fp_disabled checks on stfa/stdfa/stqfa
Tsuneo Saito [Thu, 14 Jul 2011 09:41:39 +0000 (18:41 +0900)]
SPARC64: fp_disabled checks on stfa/stdfa/stqfa

stfa/stdfa/stqfa instructions should raise fp_disabled exceptions
if %pstate.PEF==0 or %fprs.FEF==0.

Signed-off-by: Tsuneo Saito <tsnsaito@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoSPARC64: Implement stfa/stdfa/stqfa instrcutions properly
Tsuneo Saito [Thu, 14 Jul 2011 09:41:38 +0000 (18:41 +0900)]
SPARC64: Implement stfa/stdfa/stqfa instrcutions properly

This patch implements sparcv9 stfa/stdfa/stqfa instructions
with non block-store ASIs.

Signed-off-by: Tsuneo Saito <tsnsaito@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoSPARC64: fp_disabled checks on ldfa/lddfa/ldqfa
Tsuneo Saito [Thu, 14 Jul 2011 09:41:37 +0000 (18:41 +0900)]
SPARC64: fp_disabled checks on ldfa/lddfa/ldqfa

ldfa/lddfa/ldqfa instructions should raise fp_disabled exceptions
if %pstate.PEF==0 or %fprs.FEF==0.

Signed-off-by: Tsuneo Saito <tsnsaito@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoSPARC64: Implement ldfa/lddfa/ldqfa instructions properly
Tsuneo Saito [Thu, 14 Jul 2011 09:41:36 +0000 (18:41 +0900)]
SPARC64: Implement ldfa/lddfa/ldqfa instructions properly

This patch implements sparcv9 ldfa/lddfa/ldqfa instructions
with non block-load ASIs.

Signed-off-by: Tsuneo Saito <tsnsaito@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agolinux-user/signal.c: Rename s390 target_ucontext fields to fix ia64
Peter Maydell [Tue, 12 Jul 2011 20:27:15 +0000 (21:27 +0100)]
linux-user/signal.c: Rename s390 target_ucontext fields to fix ia64

The ia64 sys/ucontext.h defines macros 'uc_link', 'uc_sigmask' and
'uc_stack'. Rename the s390 target_ucontext struct members to tuc_*,
bringing them into line with the other targets and fixing a compile
failure on ia64 hosts caused by this clash.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
13 years agolinux-user: make MIPS and ARM eabi use same argument reordering
Riku Voipio [Tue, 12 Jul 2011 12:40:51 +0000 (15:40 +0300)]
linux-user: make MIPS and ARM eabi use same argument reordering

MIPS uses similar calling convention than ARM eabi, where when using
64-bit values some registers are skipped. This patch makes MIPS and ARM
eabi share the argument reordering code.

This affects ftruncate64, creating insane sized fails (or just failing).

Cc: Wesley W. Terpstra <terpstra@debian.org>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
13 years agolinux-user: correct syscall 123 on sh4
Riku Voipio [Tue, 12 Jul 2011 13:01:54 +0000 (16:01 +0300)]
linux-user: correct syscall 123 on sh4

As reported by Cédric VINCENT:

The syscall #123 on SH4 should be "TARGET_NR_cacheflush" instead of
"TARGET_NR_modify_ldt" [1].  The only consequence of this misnaming is
that many "Unsupported syscall" warnings are issued when emulating JIT
compilers.

Reported-by: Cédric VINCENT <cedric.vincent@st.com>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
13 years agoos-posix: set groups properly for -runas
Stefan Hajnoczi [Sat, 9 Jul 2011 09:22:07 +0000 (10:22 +0100)]
os-posix: set groups properly for -runas

Andrew Griffiths reports that -runas does not set supplementary group
IDs.  This means that gid 0 (root) is not dropped when switching to an
unprivileged user.

Add an initgroups(3) call to use the -runas user's /etc/groups
membership to update the supplementary group IDs.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Acked-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoesp: cancel current request only if some request is in flight
Hervé Poussineau [Sat, 9 Jul 2011 14:44:41 +0000 (16:44 +0200)]
esp: cancel current request only if some request is in flight

This bug was introduced in 94d3f98a3f3caddd7875f9a11776daeb84962a7b:
scsi_cancel_io was checking if some request was pending before trying
to cancel it, while scsi_req_cancel always cancels the request.

This may lead to a crash of Qemu due to dereferencing a NULL pointer,
as exhibited by NetBSD 5.1 installer on MIPS Magnum emulation.

Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agotarget-alpha, target-ppc: Remove unnecessary setjmp.h include
Peter Maydell [Mon, 4 Jul 2011 21:02:46 +0000 (22:02 +0100)]
target-alpha, target-ppc: Remove unnecessary setjmp.h include

Remove the include of setjmp.h from the cpu.h of target-alpha
and target-ppc. This is unnecessary because cpu-defs.h already
includes this header; this change brings these two targets
into line with all the rest.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoRemove unneeded setjmp.h (fix compilation on Debian "lenny")
Stefan Weil [Mon, 4 Jul 2011 18:52:38 +0000 (20:52 +0200)]
Remove unneeded setjmp.h (fix compilation on Debian "lenny")

Some versions of png.h cannot be included after setjmp.h,
even when PNG_SKIP_SETJMP_CHECK was defined.

setjmp.h was included from qemu-common.h and is not needed there.
Removing the include statement fixes compilation of ui/vnc-enc-tight.c
with CONFIG_VNC_PNG defined.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agotcg: Reload local variables after return from longjmp
Jan Kiszka [Sat, 2 Jul 2011 07:50:51 +0000 (09:50 +0200)]
tcg: Reload local variables after return from longjmp

Recent compilers look deep into cpu_exec, find longjmp as a noreturn
function and decide to smash some stack variables as they won't be used
again. This may lead to env becoming invalid after return from setjmp,
causing crashes. Fix it by reloading env from cpu_single_env in that
case.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoexec-all.h: Make MAX_OP_PER_INSTR large enough for target-arm's uses
Peter Maydell [Wed, 22 Jun 2011 14:16:32 +0000 (15:16 +0100)]
exec-all.h: Make MAX_OP_PER_INSTR large enough for target-arm's uses

The target-arm frontend's worst-case TCG ops per instr is 194 (and in
general many of the "load multiple registers" ARM instructions generate
more than 100 TCG ops). Raise MAX_OP_PER_INSTR accordingly to avoid
possible buffer overruns.

Since it doesn't make any sense for the "64 bit guest on 32 bit host"
case to have a smaller limit than the normal case, we collapse the
two cases back into each other again.

(This increase costs us about 14K in extra static buffer space and
21K of extra margin at the end of a 32MB codegen buffer.)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoexec.c: Fix calculation of code_gen_buffer_max_size
Peter Maydell [Wed, 22 Jun 2011 10:58:25 +0000 (11:58 +0100)]
exec.c: Fix calculation of code_gen_buffer_max_size

When calculating the point at which we should not try to put another
TB into the code gen buffer, we have to allow not just for OPC_MAX_SIZE
but OPC_BUF_SIZE. This is because the target translate.c will only
stop when an instruction has put it past the OPC_MAX_SIZE limit, so
we have to include the MAX_OP_PER_INSTR margin which that final insn
might have used.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agospapr: use specific endian ld/st_phys
Alexander Graf [Tue, 5 Jul 2011 16:28:10 +0000 (18:28 +0200)]
spapr: use specific endian ld/st_phys

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agos390-virtio: use specific endian ld/st_phys
Alexander Graf [Tue, 5 Jul 2011 16:28:09 +0000 (18:28 +0200)]
s390-virtio: use specific endian ld/st_phys

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoppc405_uc: use specific endian ld/st_phys
Alexander Graf [Tue, 5 Jul 2011 16:28:08 +0000 (18:28 +0200)]
ppc405_uc: use specific endian ld/st_phys

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agopl080: use specific endian ld/st_phys
Alexander Graf [Tue, 5 Jul 2011 16:28:07 +0000 (18:28 +0200)]
pl080: use specific endian ld/st_phys

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agomsix: use specific endian ld/st_phys
Alexander Graf [Tue, 5 Jul 2011 16:28:06 +0000 (18:28 +0200)]
msix: use specific endian ld/st_phys

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agomsi: use specific endian ld/st_phys
Alexander Graf [Tue, 5 Jul 2011 16:28:05 +0000 (18:28 +0200)]
msi: use specific endian ld/st_phys

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agointel-hda: use specific endian ld/st_phys
Alexander Graf [Tue, 5 Jul 2011 16:28:04 +0000 (18:28 +0200)]
intel-hda: use specific endian ld/st_phys

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agohpet: use specific endian ld/st_phys
Alexander Graf [Tue, 5 Jul 2011 16:28:03 +0000 (18:28 +0200)]
hpet: use specific endian ld/st_phys

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoexec: add endian specific phys ld/st functions
Alexander Graf [Wed, 6 Jul 2011 07:09:23 +0000 (09:09 +0200)]
exec: add endian specific phys ld/st functions

Device code some times needs to access physical memory and does that
through the ld./st._phys functions. However, these are the exact same
functions that the CPU uses to access memory, which means they will
be endianness swapped depending on the target CPU.

However, devices don't know about the CPU's endianness, but instead
access memory directly using their own interface to the memory bus,
so they need some way to read data with their native endianness.

This patch adds _le and _be functions to ld./st._phys.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agomips: rlimit codes are not the same
Wesley W. Terpstra [Tue, 12 Jul 2011 11:42:00 +0000 (14:42 +0300)]
mips: rlimit codes are not the same

The codes for get/setrlimit differ between linux target platforms.
This patch adds conversion.
This is important else programs (rsyslog, python, ...) can go into a
near infinite loop trying to close all the file descriptors from 0 to
-1.

Signed-off-by: Wesley W. Terpstra <terpstra@debian.org>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
13 years agomips: rlimit incorrectly converts values
Wesley W. Terpstra [Tue, 12 Jul 2011 11:38:22 +0000 (14:38 +0300)]
mips: rlimit incorrectly converts values

Byte swap was applied in the wrong order with testing for
RLIM_INFINITY. On mips bigendian from an amd64 system this results in
infinity being misinterpretted as 2^31-1.

This is a serious bug because it causes setrlimit stack size to kill
all child processes. This means (for example) that 'make' can run no
children. The mechanism of failure:
1. parent sets stack size rlimit to 'infinity'
2. qemu screws this value up
3. child process fetches stack size as a large (but non-infinite) value
4. qemu tries to allocate stack before execution
5. stack allocation fails (too big) and child process dies

Signed-off-by: Wesley W. Terpstra <terpstra@debian.org>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
13 years agomips: null pointer deref should segfault
Wesley W. Terpstra [Tue, 12 Jul 2011 11:34:23 +0000 (14:34 +0300)]
mips: null pointer deref should segfault

Dereferencing a null pointer causes an exception 0xC (EXCP_AdEL)
instead of EXCP_TLBL. This should also trigger a segfault.

Signed-off-by: Wesley W. Terpstra <terpstra@debian.org>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
13 years agomips: missing syscall returns wrong errno
Wesley W. Terpstra [Tue, 12 Jul 2011 11:33:23 +0000 (14:33 +0300)]
mips: missing syscall returns wrong errno

Return -TARGET_ENOSYS instead of -ENOSYS from linux-user/main.c
   * Caused strange 'Level 2 synchronization messages' instead of
correctly reporting the syscall was missing.
   * Made glibc simply fail instead of using older syscalls

Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
Signed-off-by: Wesley W. Terpstra <terpstra@debian.org>
13 years agomips: sigaltstack args
Wesley W. Terpstra [Tue, 12 Jul 2011 11:32:31 +0000 (14:32 +0300)]
mips: sigaltstack args

The syscall sigaltstack takes two parameters, not zero. This patch
should have no impact as only values above 4 influence the runtime
behaviour. Nevertheless, it is wrong.

Signed-off-by: Wesley W. Terpstra <terpstra@debian.org>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>