sdk/emulator/qemu.git
13 years agousb-linux: track aurbs in list
Gerd Hoffmann [Mon, 16 May 2011 07:13:05 +0000 (09:13 +0200)]
usb-linux: track aurbs in list

This patch adds code to track all async urbs in a linked list,
so we can find them without having to pass around a opaque
pointer to them.  Prerequisite for the cleanups.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
13 years agousb-linux: add hostport property
Gerd Hoffmann [Tue, 10 May 2011 10:07:42 +0000 (12:07 +0200)]
usb-linux: add hostport property

This patch adds a hostport property which allows to specify the host usb
devices to pass through by bus number and physical port.  This means you
can basically hand over one (or more) of the usb plugs on your host to
the guest and whatever device is plugged in there will show up in the
guest.

Usage:

  -device usb-host,hostbus=1,hostport=1

You can figure the port numbers by plugging in some usb device, then
find it in "info usbhost" and pick bus and port specified there.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
13 years agousb-linux: fix device path aka physical port handling
Gerd Hoffmann [Tue, 10 May 2011 09:43:57 +0000 (11:43 +0200)]
usb-linux: fix device path aka physical port handling

The device path isn't just a number.  It specifies the physical port
the device is connected to and in case the device is connected via
usb hub you'll have two numbers there, like this: "5.1".  The first
specifies the root port where the hub is plugged into, the second
specifies the port number of the hub where the device is plugged in.
With multiple hubs chained the string can become longer.

This patch renames devpath to port and makes it a string.   It also
adapts the sysfs parsing code accordingly.  The parser code is also more
strict now and skips the root hubs (which can't be assigned anyway).

The "info usbhost" monitor command now prints bus number, (os-assigned)
device address and physical port for each device.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
13 years agousb-linux: use usb_generic_handle_packet()
Hans de Goede [Wed, 2 Feb 2011 16:36:29 +0000 (17:36 +0100)]
usb-linux: use usb_generic_handle_packet()

Make the linux usb host passthrough code use the usb_generic_handle_packet()
function, rather then the curent DYI code. This removes 200 lines of almost
identical code.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
13 years agousb: Pass the packet to the device's handle_control callback
Hans de Goede [Wed, 2 Feb 2011 15:33:13 +0000 (16:33 +0100)]
usb: Pass the packet to the device's handle_control callback

This allows using the generic usb_generic_handle_packet function from
device code which does ASYNC control requests (such as the linux host
pass through code).

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
13 years agoBug #757654: UHCI fails to signal stall response patch
Jan Vesely [Mon, 9 May 2011 10:16:50 +0000 (12:16 +0200)]
Bug #757654: UHCI fails to signal stall response patch

UHCI host controller status register indicates error and
an interrupt is triggered on BABBLE and STALL errors.

Signed-off-by: Jan Vesely <jano.vesely@gmail.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
13 years agousb: add support for "grouped" interfaces and the Interface Association Descriptor
Brad Hards [Sun, 3 Apr 2011 05:33:21 +0000 (15:33 +1000)]
usb: add support for "grouped" interfaces and the Interface Association Descriptor

This is used for some devices that have multiple interfaces that form a logic
device. An example is Video Class, which has a Control interface and a
Streaming interface. There can be additional interfaces on the same (physical)
devices (e.g. a microphone), and Interface Association Descriptor handles this
case.

Signed-off-by: Brad Hards <bradh@frogmouth.net>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
13 years agousb: remove fallback to bNumInterfaces if no .nif
Brad Hards [Sun, 3 Apr 2011 05:33:20 +0000 (15:33 +1000)]
usb: remove fallback to bNumInterfaces if no .nif

All callers have been updated.

Signed-off-by: Brad Hards <bradh@frogmouth.net>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
13 years agousb: update config descriptors to identify number of interfaces
Brad Hards [Sun, 3 Apr 2011 05:33:19 +0000 (15:33 +1000)]
usb: update config descriptors to identify number of interfaces

Previously we relied on the .bNumInterfaces, but that won't always be
accurate after the introduction of grouped interfaces.

Signed-off-by: Brad Hards <bradh@frogmouth.net>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
13 years agousb: Add Interface Association Descriptor descriptor type
Brad Hards [Sun, 3 Apr 2011 05:33:18 +0000 (15:33 +1000)]
usb: Add Interface Association Descriptor descriptor type

Signed-off-by: Brad Hards <bradh@frogmouth.net>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
13 years agoMerge remote-tracking branch 'kraxel/CVE-2011-1751' into staging
Anthony Liguori [Wed, 25 May 2011 12:04:13 +0000 (07:04 -0500)]
Merge remote-tracking branch 'kraxel/CVE-2011-1751' into staging

13 years agoconfigure: Document --disable-slirp option in --help
Peter Maydell [Mon, 23 May 2011 09:13:47 +0000 (10:13 +0100)]
configure: Document --disable-slirp option in --help

The --disable-slirp option was undocumented; add it to configure's
--help output.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm/exec.h: Remove unused #define of M0
Peter Maydell [Mon, 23 May 2011 15:04:42 +0000 (16:04 +0100)]
target-arm/exec.h: Remove unused #define of M0

Remove a preprocessor #define which is never used.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Signal InvalidOp for Neon GE and GT compares of QNaN
Peter Maydell [Thu, 19 May 2011 13:46:16 +0000 (14:46 +0100)]
target-arm: Signal InvalidOp for Neon GE and GT compares of QNaN

If the input to a Neon float comparison is a quiet NaN, the ARM ARM
specifies that we should raise InvalidOp if the comparison is GE or GT
but not for EQ. (Signaling NaNs raise InvalidOp regardless). This means
only EQ should use the _quiet version of the comparison function.

We implement this by cleaning up the comparison helpers to call the
appopriate versions of the softfloat simple comparison functions
(float32_le and friends) rather than the generic float32_compare functions.
This makes them simple enough that they are clearer opencoded rather
than macroised.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Use correct float status for Neon int-float conversions
Peter Maydell [Thu, 19 May 2011 13:46:19 +0000 (14:46 +0100)]
target-arm: Use correct float status for Neon int-float conversions

The Neon versions of int-float conversions must use the "standard FPSCR"
rather than the default FPSCR. Implement this by having the helper
functions take a pointer to the appropriate float_status value rather
than simply taking a pointer to the entire CPUState, and making
translate.c pass a pointer to vfp.fp_status or vfp.standard_fp_status
appropriately for whether the instruction being translated is Neon
or VFP.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Signal Underflow when denormal flushed to zero on output
Peter Maydell [Thu, 19 May 2011 13:46:18 +0000 (14:46 +0100)]
target-arm: Signal Underflow when denormal flushed to zero on output

On ARM the architecture mandates that when an output denormal is flushed to
zero we must set the FPSCR UFC (underflow) bit, so map softfloat's
float_flag_output_denormal accordingly.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agosoftfloat: Add new flag for when denormal result is flushed to zero
Peter Maydell [Thu, 19 May 2011 13:46:17 +0000 (14:46 +0100)]
softfloat: Add new flag for when denormal result is flushed to zero

Add a new float_flag_output_denormal which is set when the result
of a floating point operation would be denormal but is flushed to
zero because we are in flush_to_zero mode. This is necessary because
some architectures signal this condition as an underflow and others
signal it as an inexact result.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Signal InputDenormal for VRECPE, VRSQRTE, VRECPS, VRSQRTS
Peter Maydell [Thu, 19 May 2011 13:46:15 +0000 (14:46 +0100)]
target-arm: Signal InputDenormal for VRECPE, VRSQRTE, VRECPS, VRSQRTS

The helpers for VRECPE.F32, VSQRTE.F32, VRECPS and VRSQRTS handle denormals
as special cases, so we must set the InputDenormal exception flag ourselves.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Don't set FP exceptions in recip, recip_sqrt estimate fns
Peter Maydell [Thu, 19 May 2011 13:46:14 +0000 (14:46 +0100)]
target-arm: Don't set FP exceptions in recip, recip_sqrt estimate fns

The functions which do the core estimation algorithms for the VRSQRTE
and VRECPE instructions should not set floating point exception flags,
so use a local fp status for doing these calculations.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotcg: don't keep dead outputs in registers
Aurelien Jarno [Tue, 17 May 2011 16:25:45 +0000 (18:25 +0200)]
tcg: don't keep dead outputs in registers

If an op with dead outputs is not removed, because it has side effects
or has multiple output and only one dead, mark the registers as dead
instead of saving them. This avoid a few register spills on TCG targets
with low register count, especially with div2 and mul2 ops, or when a
qemu_ld* result is not used (prefetch emulation for example).

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotcg: mark dead output argument in op_dead_args
Aurelien Jarno [Tue, 17 May 2011 16:25:45 +0000 (18:25 +0200)]
tcg: mark dead output argument in op_dead_args

If an op is not removed and has dead output arguments, mark it
in op_dead_args similarly to what is done for input arguments.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotcg: replace op_dead_iargs by op_dead_args
Aurelien Jarno [Tue, 17 May 2011 16:25:45 +0000 (18:25 +0200)]
tcg: replace op_dead_iargs by op_dead_args

Allow all args to be dead by replacing the input specific op_dead_iargs
variable by op_dead_args. Note this is a purely mechanical change.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoMerge branch 'trivial-patches' of git://repo.or.cz/qemu/stefanha
Aurelien Jarno [Mon, 23 May 2011 20:36:17 +0000 (22:36 +0200)]
Merge branch 'trivial-patches' of git://repo.or.cz/qemu/stefanha

* 'trivial-patches' of git://repo.or.cz/qemu/stefanha:
  Fix typos in comments (chek -> check)
  hw/sd.c: Don't complain about SDIO commands CMD52/CMD53
  hw/realview.c: Remove duplicate #include line
  piix_pci: fix piix3_set_irq_pic()

13 years agoMerge branch 'ppc-next' of git://repo.or.cz/qemu/agraf
Aurelien Jarno [Mon, 23 May 2011 20:35:37 +0000 (22:35 +0200)]
Merge branch 'ppc-next' of git://repo.or.cz/qemu/agraf

* 'ppc-next' of git://repo.or.cz/qemu/agraf:
  Fix a bug in mtsr/mtsrin emulation on ppc64
  pSeries: Clean up write-only variables
  w32: Fix compilation and replace non-portable usage of ulong

13 years agoMerge branch 's390-next' of git://repo.or.cz/qemu/agraf
Aurelien Jarno [Mon, 23 May 2011 20:33:39 +0000 (22:33 +0200)]
Merge branch 's390-next' of git://repo.or.cz/qemu/agraf

* 's390-next' of git://repo.or.cz/qemu/agraf:
  s390x: complain when allocating ram fails
  s390x: fix memory detection for guests > 64GB
  s390x: change mapping base to allow guests > 2GB
  s390x: Fix debugging for unknown sigp order codes
  s390x: build s390x by default
  s390x: remove compatibility cc field
  s390x: Adjust GDB stub
  s390x: translate engine for s390x CPU
  s390x: Adjust internal kvm code
  s390x: Implement opcode helpers
  s390x: helper functions for system emulation
  s390x: Shift variables in CPUState for memset(0)
  s390x: keep hint on virtio managing size
  s390x: make kvm exported functions conditional on kvm
  s390x: s390x-linux-user support
  tcg: extend max tcg opcodes when using 64-on-32bit
  s390x: fix smp support for kvm

13 years agoFix typos in comments (chek -> check)
Stefan Weil [Sat, 30 Apr 2011 20:49:26 +0000 (22:49 +0200)]
Fix typos in comments (chek -> check)

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
13 years agohw/sd.c: Don't complain about SDIO commands CMD52/CMD53
Peter Maydell [Fri, 20 May 2011 09:11:53 +0000 (10:11 +0100)]
hw/sd.c: Don't complain about SDIO commands CMD52/CMD53

The SDIO specification introduces new commands 52 and 53.
Handle as illegal command but do not complain on stderr,
as SDIO-aware OSes (including Linux) may legitimately use
these in their probing for presence of an SDIO card.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
13 years agohw/realview.c: Remove duplicate #include line
Peter Maydell [Thu, 19 May 2011 15:21:57 +0000 (16:21 +0100)]
hw/realview.c: Remove duplicate #include line

Remove a duplicate #include of sysbus.h.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
13 years agopiix_pci: fix piix3_set_irq_pic()
TeLeMan [Mon, 16 May 2011 11:50:55 +0000 (19:50 +0800)]
piix_pci: fix piix3_set_irq_pic()

If pic_irq is greater than 7, the irq level is always 0 on 32bits.

Signed-off-by: TeLeMan <geleman@gmail.com>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
13 years agoDelete unused tb_invalidate_page_range
Blue Swirl [Sat, 14 May 2011 11:55:30 +0000 (11:55 +0000)]
Delete unused tb_invalidate_page_range

tb_invalidate_page_range() was intended to be used to invalidate an
area of a TB which the guest explicitly flushes from i-cache. However,
QEMU detects writes to code areas where TBs have been generated, so
his has never been useful.

Delete the function, adjust callers.

Reviewed-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoFix a bug in mtsr/mtsrin emulation on ppc64
David Gibson [Fri, 20 May 2011 03:34:59 +0000 (13:34 +1000)]
Fix a bug in mtsr/mtsrin emulation on ppc64

Early ppc64 CPUs include a hack to partially simulate the ppc32 segment
registers, by translating writes to them into writes to the SLB.  This is
not used by any current Linux kernel, but it is used by the openbios used
in the qemu mac99 model.

Commit 81762d6dd0d430d87024f2c83e9c4dcc4329fb7d, cleaning up the SLB
handling introduced a bug in this code, breaking the openbios currently in
qemu.  Specifically, there was an off by one error bitshuffling the
register format used by mtsr into the format needed for the SLB load,
causing the flag bits to end up in the wrong place.  This caused the
storage keys to be wrong under openbios, meaning that the translation code
incorrectly thought a legitimate access was a permission violation.

This patch fixes the bug, at the same time it fixes some build bug in the
MMU debugging code (only exposed when DEBUG_MMU is enabled).

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agopSeries: Clean up write-only variables
David Gibson [Tue, 17 May 2011 06:47:04 +0000 (16:47 +1000)]
pSeries: Clean up write-only variables

A few pieces of the pSeries emulation code have variables which are set
but never used, which causes warnings on gcc 4.6.  This patch removes
these instances.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agow32: Fix compilation and replace non-portable usage of ulong
Stefan Weil [Sat, 14 May 2011 23:38:04 +0000 (23:38 +0000)]
w32: Fix compilation and replace non-portable usage of ulong

ulong is undefined for w32 (and maybe other) compilations.
Replace it by uintptr_t (which also fixes compilation for w64
and is a better choice for pointer to integer conversions).

Cc: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agos390x: complain when allocating ram fails
Alexander Graf [Fri, 20 May 2011 15:33:28 +0000 (17:33 +0200)]
s390x: complain when allocating ram fails

While trying out the > 64GB guest RAM patch, I hit some virtual address
limitations of my host system, which resulted in mmap failing. Unfortunately,
qemu didn't tell me about this failure, but just used the NULL pointer
happily, resulting in either segmentation faults or other fun errors.

To spare other users from tracing this down, let's print a nice message
instead so the user can figure out what's wrong from there.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agos390x: fix memory detection for guests > 64GB
Christian Borntraeger [Thu, 12 May 2011 08:50:44 +0000 (10:50 +0200)]
s390x: fix memory detection for guests > 64GB

the s390 memory detection has a 16bit field that specifies the amount of
increments. This patch adopts the memory size to always fit into that
scheme. This also fixes virtio detection for these guests, since the
descriptor page is located after the main memory.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agos390x: change mapping base to allow guests > 2GB
Christian Borntraeger [Tue, 10 May 2011 12:49:10 +0000 (14:49 +0200)]
s390x: change mapping base to allow guests > 2GB

the current s390x qemu memory layout is

0x1000000: guest start
0x80000000: qemu binary

which limits the amount of available memory to <2GB.
This patch moves the guest pages to 32GB to not collide with the binary
and to leave some space for the program break of qemu.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agos390x: Fix debugging for unknown sigp order codes
Christian Borntraeger [Wed, 4 May 2011 08:30:12 +0000 (10:30 +0200)]
s390x: Fix debugging for unknown sigp order codes

On unknown sigp order codes we print a debug message. This patch
fixes the output, since we want to see the order_code and not
the register numbers.
Patch applies on agraf tree.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agos390x: build s390x by default
Alexander Graf [Wed, 23 Mar 2011 07:23:47 +0000 (08:23 +0100)]
s390x: build s390x by default

This patch enables building of s390x-softmmu and s390x-linux-user
targets by default.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agos390x: remove compatibility cc field
Alexander Graf [Wed, 13 Apr 2011 11:30:00 +0000 (13:30 +0200)]
s390x: remove compatibility cc field

Remove the now unused cc field that was only required to not break
bisectability.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agos390x: Adjust GDB stub
Alexander Graf [Wed, 23 Mar 2011 09:58:07 +0000 (10:58 +0100)]
s390x: Adjust GDB stub

We have successfully lazilized cc computation, so we need to manually
trigger its calculation when gdb wants to fetch it. We also changed the
variable name, so writing it writes into a different field now.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agos390x: translate engine for s390x CPU
Alexander Graf [Wed, 23 Mar 2011 09:58:07 +0000 (10:58 +0100)]
s390x: translate engine for s390x CPU

This is the main meat part of the patch set. It implements emulation for an
s390x CPU.

The code does all the optimizations that are common for TCG code:

 - direct branches
 - cc optimization
 - unrolling of simple microcode loops

I'm still open for suggestions on speedups of course :).

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agos390x: Adjust internal kvm code
Alexander Graf [Wed, 23 Mar 2011 09:58:07 +0000 (10:58 +0100)]
s390x: Adjust internal kvm code

We're now finally emulating an s390x CPU, so we can move quite some logic
from the kvm code out into generic CPU code.

This patch does this and adjusts the interfaces according to what the code
around now expects to be able to call.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agos390x: Implement opcode helpers
Alexander Graf [Wed, 23 Mar 2011 09:58:07 +0000 (10:58 +0100)]
s390x: Implement opcode helpers

There are some instructions that can't (or shouldn't) be expressed by pure
tcg code. For those, we call into externally compiled C functions.

This patch implements those C functions.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agos390x: helper functions for system emulation
Alexander Graf [Wed, 23 Mar 2011 09:58:07 +0000 (10:58 +0100)]
s390x: helper functions for system emulation

When running system emulation, we need to transverse through the MMU and
deliver interrupts according to the specification.

This patch implements those two pieces and in addition adjusts the CPU
initialization code to account for the new fields in CPUState.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agos390x: Shift variables in CPUState for memset(0)
Alexander Graf [Mon, 2 May 2011 08:11:40 +0000 (10:11 +0200)]
s390x: Shift variables in CPUState for memset(0)

The default reset handler does a memset(0) until right in between CPU_COMMON.
I incorrectly changed that behavior on the s390x port, so let's move the fields
in CPUState around to reflect the correct split up to which point memset(0)
zeros out everything.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agos390x: keep hint on virtio managing size
Alexander Graf [Wed, 13 Apr 2011 08:55:11 +0000 (10:55 +0200)]
s390x: keep hint on virtio managing size

The s390x virtio bus keeps management information on virtio after the top
of the guest's RAM. We need to be able to tell the guest the size of its
RAM (without virtio stuff), but also be able to trap when the guest accesses
RAM outside of its scope (including virtio stuff).

So we need a variable telling us the size of the virtio stuff, so we can
calculate the highest available RAM address from that.

While at it, also increase the maximum number of virtio pages, so we play
along well with more recent kernels that spawn a ridiculous number of virtio
console adapters.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agos390x: make kvm exported functions conditional on kvm
Alexander Graf [Fri, 15 Apr 2011 13:16:40 +0000 (15:16 +0200)]
s390x: make kvm exported functions conditional on kvm

We have some helper functions we use to directly invoke KVM
functionality from device emulation code.

This patch replaces those exported functions with static inline
stubs when not building with KVM enabled.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agos390x: s390x-linux-user support
Ulrich Hecht [Fri, 24 Jul 2009 14:57:31 +0000 (16:57 +0200)]
s390x: s390x-linux-user support

This patch adds support for running s390x binaries in the linux-user emulation
code.

Signed-off-by: Ulrich Hecht <uli@suse.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agotcg: extend max tcg opcodes when using 64-on-32bit
Alexander Graf [Wed, 13 Apr 2011 11:08:44 +0000 (13:08 +0200)]
tcg: extend max tcg opcodes when using 64-on-32bit

When running a 64 bit guest on a 32 bit host, we tend to use more TCG ops
than on a 64 bit host. Reflect that in the reserved opcode amount constant.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agos390x: fix smp support for kvm
Christian Borntraeger [Thu, 5 May 2011 07:29:57 +0000 (09:29 +0200)]
s390x: fix smp support for kvm

Currently smp support for kvm does not work. Qemu does a kvm run even on
secondary CPUs which dont have a sane state (initial psw == 0)
triggering some program faults. Architecturally these cpus are in the stopped
state, so we should not do the kvm run ioctl. (these CPUs will be started
by a SIGP restart later during the boot process)

We need to tell the loop that this cpu should not run. Jan Kiszka pointed
out that kvm_arch_process_async_events is the right place to do.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoahci: Fix non-NCQ accesses for LBA > 16bits
Alexander Graf [Thu, 19 May 2011 09:57:09 +0000 (11:57 +0200)]
ahci: Fix non-NCQ accesses for LBA > 16bits

AHCI provides two ways of reading/writing data:

 1) NCQ
 2) ATA commands with the LBA in the command FIS

In the second code path, we didn't handle any LBAs that were bigger than
16 bits, so whenever a guest that used high LBA numbers wanted to access
data, the LBA got truncated down to 16 bits, giving the guest garbage.

This patch adds support for LBAs higher than 16 bits. I've tested that it
works just fine with SeaBIOS and Linux guests. This patch also unbreaks
the often reported grub errors people have seen with AHCI.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoIgnore pci unplug requests for unpluggable devices (CVE-2011-1751)
Gerd Hoffmann [Wed, 27 Apr 2011 09:05:34 +0000 (11:05 +0200)]
Ignore pci unplug requests for unpluggable devices (CVE-2011-1751)

This patch makes qemu ignore unplug requests from the guest for pci
devices which are tagged as non-hotpluggable.  Trouble spot is the
piix4 chipset with the ISA bridge.  Requests to unplug that one will
make it go away together with all ISA bus devices, which are not
prepared to be unplugged and thus don't cleanup, leaving active
qemu timers behind in free'ed memory.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
13 years agoblock: Remove type hint, it's guest matter, doesn't belong here
Markus Armbruster [Mon, 16 May 2011 13:04:57 +0000 (15:04 +0200)]
block: Remove type hint, it's guest matter, doesn't belong here

No users of bdrv_get_type_hint() left.  bdrv_set_type_hint() can make
the media removable by side effect.  Make that explicit.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoblockdev: Store -drive option media in DriveInfo
Markus Armbruster [Mon, 16 May 2011 13:04:56 +0000 (15:04 +0200)]
blockdev: Store -drive option media in DriveInfo

DriveInfo is closely tied to -drive, and like -drive, it mixes
information about host and guest part of the block device.  Unlike
DriveInfo, BlockDriverState should be about the host part only.

One of the remaining guest bits there is the "type hint".  -drive
option media sets it, and qdevs "ide-drive", "scsi-disk" and non-qdev
IF_XEN devices check it to pick HD vs. CD.

Communicate -drive option media via new DriveInfo member media_cd
instead.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoblock QMP: Deprecate query-block's "type", drop info block's "type="
Markus Armbruster [Mon, 16 May 2011 13:04:55 +0000 (15:04 +0200)]
block QMP: Deprecate query-block's "type", drop info block's "type="

query-block's specification documents response member "type" with
values "hd", "cdrom", "floppy", "unknown".

Its value is unreliable: a block device used as floppy has type
"floppy" if created with if=floppy, but type "hd" if created with
if=none.

That's because with if=none, the type is at best a declaration of
intent: the drive can be connected to any guest device.  Its type is
really the guest device's business.  Reporting it here is wrong.

No known user of QMP uses "type".  It's unlikely that any unknown
users exist, because its value is useless unless you know how the
block device was created.  But then you also know the true value.

Fixing the broken value risks breaking (hypothetical!) clients that
somehow rely on the current behavior.  Not fixing the value risks
breaking (hypothetical!) clients that rely on the value to be
accurate.  Can't entirely avoid hypothetical lossage.  Change the
value to be always "unknown".

This makes "info block" always report "type=unknown".  Pointless.
Change it to not report the type.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agodefaults: ide-cd, ide-hd and scsi-cd devices suppress default CD-ROM
Markus Armbruster [Wed, 18 May 2011 16:31:02 +0000 (18:31 +0200)]
defaults: ide-cd, ide-hd and scsi-cd devices suppress default CD-ROM

ide-hd has to suppress the default CD-ROM, or else you can't put one
on secondary master without -nodefaults.

Unlike legacy scsi-disk, scsi-cd suppresses default CD-ROM.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoscsi: Split qdev "scsi-disk" into "scsi-hd" and "scsi-cd"
Markus Armbruster [Mon, 16 May 2011 13:04:53 +0000 (15:04 +0200)]
scsi: Split qdev "scsi-disk" into "scsi-hd" and "scsi-cd"

A "scsi-disk" is either a hard disk or a CD-ROM, depending on the
associated BlockDriverState's type hint.  Unclean; disk vs. CD belongs
to the guest part, not the host part.

Have separate qdevs "scsi-hd" and "scsi-cd" to model disk vs. CD in
the guest part.

Keep scsi-disk for backward compatibility.

Don't copy scsi-disk property removable to scsi-cd.  It's not used and
always zero(!) there.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoide: Split qdev "ide-drive" into "ide-hd" and "ide-cd"
Markus Armbruster [Mon, 16 May 2011 13:04:52 +0000 (15:04 +0200)]
ide: Split qdev "ide-drive" into "ide-hd" and "ide-cd"

An "ide-drive" is either a hard disk or a CD-ROM, depending on the
associated BlockDriverState's type hint.  Unclean; disk vs. CD belongs
to the guest part, not the host part.

Have separate qdevs "ide-hd" and "ide-cd" to model disk vs. CD in
the guest part.

Keep ide-drive for backward compatibility.

"ide-disk" would perhaps be a nicer name than "ide-hd", but there's
already "scsi-disk", which is like "ide-drive", and will be likewise
split in the next commit.  {ide,scsi}-{hd,cd} is the best consistent
set of names I could find within the backward compatibility
straightjacket.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoqed: support for growing images
Stefan Hajnoczi [Mon, 16 May 2011 12:56:53 +0000 (13:56 +0100)]
qed: support for growing images

The .bdrv_truncate() operation resizes images and growing is easy to
implement in QED.  Simply check that the new size is valid and then
update the image_size header field to reflect the new size.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoqemu_img: is_not_zero() optimization
Dmitry Konishchev [Wed, 18 May 2011 11:03:59 +0000 (15:03 +0400)]
qemu_img: is_not_zero() optimization

I run qemu-img under profiler and realized, that most of CPU time is
consumed by is_not_zero() function. I had made a couple of optimizations
on it and got the following output for `time qemu-img convert -O qcow2
volume.qcow2 snapshot.qcow2`:

Original qemu-img:
real 0m56.159s
user 0m34.670s
sys  0m12.079s

Patched qemu-img:
real 0m34.805s
user 0m18.445s
sys  0m12.552s

Signed-off-by: Dmitry Konishchev <konishchev@gmail.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoqed: Periodically flush and clear need check bit
Stefan Hajnoczi [Mon, 9 May 2011 15:45:40 +0000 (16:45 +0100)]
qed: Periodically flush and clear need check bit

One strategy to limit the startup delay of consistency check when
opening image files is to ensure that the file is marked dirty for as
little time as possible.

QED currently marks the image dirty when the first allocating write
request is issued and clears the dirty bit again when the image is
cleanly closed.  In practice that means the image is marked dirty for
most of a guest's lifetime and prone to being in a dirty state upon
crash or power failure.

It is safe to clear the dirty bit after all allocating write requests
have completed and a flush has been performed.  This patch adds a timer
after the last allocating write request completes.  When the timer fires
it will flush and then clear the dirty bit.  The timer is set to 5
seconds and is cancelled upon arrival of a new allocating write request.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoqemu-tool: Stub out qemu-timer functions
Stefan Hajnoczi [Mon, 9 May 2011 15:45:39 +0000 (16:45 +0100)]
qemu-tool: Stub out qemu-timer functions

Block drivers may use timers for flushing metadata to disk or
reconnecting to a network drive.  Stub out the following functions in
qemu-tool.c:

QEMUTimer *qemu_new_timer_ns(QEMUClock *clock, int scale,
                             QEMUTimerCB *cb, void *opaque)
void qemu_free_timer(QEMUTimer *ts)
void qemu_del_timer(QEMUTimer *ts)
void qemu_mod_timer(QEMUTimer *ts, int64_t expire_time)
int64_t qemu_get_clock_ns(QEMUClock *clock)

They will result in timers never firing when linked against qemu-tool.o.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoahci: Fix crashes on duplicate BH registration
Jan Kiszka [Mon, 9 May 2011 15:48:19 +0000 (17:48 +0200)]
ahci: Fix crashes on duplicate BH registration

If ahci_dma_set_inactive is called a while there is still a pending BH
from a previous run, we will crash on the second run of
ahci_check_cmd_bh as it overwrites AHCIDevice::check_bh. Avoid this
broken and redundant duplicate registration.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoAdd documentation for qemu_progress_{init,print}()
Jes Sorensen [Mon, 9 May 2011 15:32:20 +0000 (17:32 +0200)]
Add documentation for qemu_progress_{init,print}()

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoide: Turn debug messages into assertions
Kevin Wolf [Mon, 9 May 2011 09:42:03 +0000 (11:42 +0200)]
ide: Turn debug messages into assertions

These printfs aren't really debug messages, but clearly indicate a bug if they
ever become effective. Noone uses DEBUG_IDE, let's re-enable the check
unconditionally and make it an assertion instead of printfs in the device
emulation.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
13 years agohw/xen_disk: Remove unused local variable
Stefan Weil [Sun, 8 May 2011 07:01:52 +0000 (09:01 +0200)]
hw/xen_disk: Remove unused local variable

cppcheck report:
hw/xen_disk.c:309: style:
 Variable 'len' is assigned a value that is never used

Cc: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoqemu-img.c: Remove superfluous parenthesis
Jes Sorensen [Fri, 6 May 2011 09:39:11 +0000 (11:39 +0200)]
qemu-img.c: Remove superfluous parenthesis

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoposix-aio-compat: Fix idle_threads counter
Kevin Wolf [Mon, 2 May 2011 15:32:54 +0000 (17:32 +0200)]
posix-aio-compat: Fix idle_threads counter

A thread should only be counted as idle when it really is waiting for new
requests. Without this patch, sometimes too few threads are started as busy
threads are counted as idle.

Not sure if it makes a difference in practice outside some artificial
qemu-io/qemu-img tests, but I think the change makes sense in any case.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoide: cleanup warnings
Andrea Arcangeli [Tue, 3 May 2011 20:03:39 +0000 (22:03 +0200)]
ide: cleanup warnings

Add \n.

Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13 years agoahci: Unbreak bar registration
Jan Kiszka [Sun, 8 May 2011 17:54:52 +0000 (19:54 +0200)]
ahci: Unbreak bar registration

Fix regression of 667bb59: ahci_init initializes ahci.mem, so we have to
move bar registration after it.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
13 years agow32: Fix missing declaration of ffs()
Stefan Weil [Sun, 15 May 2011 07:51:59 +0000 (09:51 +0200)]
w32: Fix missing declaration of ffs()

target-ppc/cpu.h now needs ffs(), too, so ffs() must be declared
before this file is included.

Moving the declaration from qemu-common.h to qemu-os-win32.h
(which is included in qemu-common.h early) fixes the compiler
warning for w32.

Cc: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoset $SDL_VIDEODRIVER=x11 on Linux to prevent sudo kvm from fighting for video card
Michael Tokarev [Sat, 7 May 2011 21:18:30 +0000 (01:18 +0400)]
set $SDL_VIDEODRIVER=x11 on Linux to prevent sudo kvm from fighting for video card

Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Acked-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoconfigure: List available targets in --help output
Peter Maydell [Tue, 3 May 2011 13:50:13 +0000 (14:50 +0100)]
configure: List available targets in --help output

Include the list of available targets in the --help output
for the --target-list= option.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Acked-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-mips: Fix warning caused by unused local variable
Aurelien Jarno [Sat, 14 May 2011 23:00:20 +0000 (01:00 +0200)]
target-mips: Fix warning caused by unused local variable

Fix compilation with gcc-4.6, based on a patch from Stefan
Weil <weil@mail.berlios.de>.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoconfigure: quote kvm_ppc_pvr
Aurelien Jarno [Sat, 14 May 2011 22:35:13 +0000 (00:35 +0200)]
configure: quote kvm_ppc_pvr

13 years agotarget-lm32: Remove unused local variables
Stefan Weil [Sat, 7 May 2011 20:49:33 +0000 (22:49 +0200)]
target-lm32: Remove unused local variables

cppcheck report:
target-lm32/translate.c:587: style:
    Variable 't0' is assigned a value that is never used
target-lm32/translate.c:588: style:
    Variable 'l1' is assigned a value that is never used

Remove both variables. Please check whether that is the correct solution.

Cc: Michael Walle <michael@walle.cc>
Cc: Edgar E. Iglesias <edgar.iglesias@gmail.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Acked-by: Michael Walle <michael@walle.cc>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agotarget-arm: Fix VMLA, VMLS, VNMLS, VNMLA handling of NaNs
Peter Maydell [Thu, 5 May 2011 18:35:35 +0000 (19:35 +0100)]
target-arm: Fix VMLA, VMLS, VNMLS, VNMLA handling of NaNs

Correct handling of NaNs for VFP VMLA, VMLS, VNMLS and VNMLA requires that
we implement the set of negations and additions specified by the ARM ARM;
plausible looking simplifications like turning (-A + B) into (B - A) or
computing (A + B) rather than (B + A) result in selecting the wrong NaN or
returning a NaN with the wrong sign bit.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agodoc: Add explanation that -alt-grab and -ctrl-grab affect special keys
Brad Hards [Fri, 29 Apr 2011 11:46:12 +0000 (21:46 +1000)]
doc: Add explanation that -alt-grab and -ctrl-grab affect special keys

Phillip Merensky reported that the special keys (e.g. Ctrl-Alt-f for full
screen) did not work correctly if -alt-grab is used.

BUG: 696530

Review of ui/sdl.c:sdl_refresh indicates that this is the intended behaviour,
so we should update the documentation to match the actual behaviour, as
suggested by Phillip in the bug report.

Signed-off-by: Brad Hards <bradh@frogmouth.net>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
13 years agoMerge branch 'ppc-next' of git://repo.or.cz/qemu/agraf
Aurelien Jarno [Sat, 14 May 2011 14:54:59 +0000 (16:54 +0200)]
Merge branch 'ppc-next' of git://repo.or.cz/qemu/agraf

* 'ppc-next' of git://repo.or.cz/qemu/agraf:
  PPC: Qdev'ify e500 pci
  PPC MPC7544DS: Use new TLB helper function
  PPC: Implement e500 (FSL) MMU
  PPC: Add another 64 bits to instruction feature mask
  PPC: Add GS MSR definition
  PPC: Make MPC8544DS emulation work w/o KVM
  PPC: Make MPC8544DS obey -cpu switch
  Fix off-by-one error in sizing pSeries hcall table
  ppc64: Fix out-of-tree builds
  kvm: ppc: warn user on PAGE_SIZE mismatch
  kvm: ppc: detect old headers
  monitor: add PPC BookE SPRs
  kvm: ppc: fixes for KVM_SET_SREGS on init
  ppc64: Don't try to build sPAPR RTAS on Darwin
  Place pseries vty devices at addresses more similar to existing machines
  Make pSeries 'model' property more closely resemble real hardware
  pseries: Increase maximum CPUs to 256

13 years agosparc64: fix incorrect BPcc target sign extension
Blue Swirl [Sat, 14 May 2011 07:14:57 +0000 (07:14 +0000)]
sparc64: fix incorrect BPcc target sign extension

Fix wrong number of bits used when sign extending the branch offset of BPcc
instructions.

Reported-by: Artyom Tarasenko <atar4qemu@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agosparc64: fix wrpstate and wrtl on delay slot
Blue Swirl [Tue, 26 Apr 2011 18:44:20 +0000 (18:44 +0000)]
sparc64: fix wrpstate and wrtl on delay slot

Use TCG local to work around TCG register flush due to a branch.

Thanks to Artyom Tarasenko, Igor Kovalenko and Aurelien Jarno.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
13 years agoMerge remote-tracking branch 'stefanha/trivial-patches' into staging
Anthony Liguori [Thu, 12 May 2011 13:08:12 +0000 (08:08 -0500)]
Merge remote-tracking branch 'stefanha/trivial-patches' into staging

Conflicts:
cpu-all.h

13 years agoMerge remote-tracking branch 'agraf/xen-next' into staging
Anthony Liguori [Thu, 12 May 2011 13:06:06 +0000 (08:06 -0500)]
Merge remote-tracking branch 'agraf/xen-next' into staging

13 years agoPPC: Qdev'ify e500 pci
Alexander Graf [Mon, 30 Aug 2010 22:22:28 +0000 (00:22 +0200)]
PPC: Qdev'ify e500 pci

The e500 PCI controller isn't qdev'ified yet. This leads to severe issues
when running with -drive.

To be able to use a virtio disk with an e500 VM, let's convert the PCI
controller over to qdev.

Reviewed-by: Paul Brook <paul@codesourcery.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoPPC MPC7544DS: Use new TLB helper function
Alexander Graf [Fri, 6 May 2011 08:37:56 +0000 (10:37 +0200)]
PPC MPC7544DS: Use new TLB helper function

Now that we have some nice helpers that can find us a TLB entry, let's
use that on the machine initialization code, so we don't need to know
about the internals of the TLB array.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoPPC: Implement e500 (FSL) MMU
Alexander Graf [Sat, 30 Apr 2011 21:34:58 +0000 (23:34 +0200)]
PPC: Implement e500 (FSL) MMU

Most of the code to support e500 style MMUs is already in place, but
we're missing on some of the special TLB0-TLB1 handling code and slightly
different TLB modification.

This patch adds support for the FSL style MMU.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoPPC: Add another 64 bits to instruction feature mask
Alexander Graf [Sat, 30 Apr 2011 22:00:58 +0000 (00:00 +0200)]
PPC: Add another 64 bits to instruction feature mask

To enable quick runtime detection of instruction groups to the currently
selected CPU emulation, we have a feature mask of what exactly the respective
instruction supports.

This feature mask is 64 bits long and we just successfully exceeded those 64
bits. To add more features, we need to think of something.

The easiest solution that came to my mind was to simply add another 64 bits
that we can also match on. Since the comparison is only done on start of the
qemu process to generate an internal opcode calling table, we should be fine
on any performance penalties here.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoPPC: Add GS MSR definition
Alexander Graf [Sat, 30 Apr 2011 21:34:56 +0000 (23:34 +0200)]
PPC: Add GS MSR definition

The BookE specification defines MSR bit 28 as Guest State. Add it
to the list of MSR macros.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoPPC: Make MPC8544DS emulation work w/o KVM
Alexander Graf [Sat, 30 Apr 2011 21:34:53 +0000 (23:34 +0200)]
PPC: Make MPC8544DS emulation work w/o KVM

The MPC8544DS board emulation was only used with KVM so far, so some
parts of the code didn't provide proper values for non-KVM execution.

This patch makes the machine work without KVM enabled. To actually use
this, you also need proper e500v2 MMU emulation.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoPPC: Make MPC8544DS obey -cpu switch
Alexander Graf [Sat, 30 Apr 2011 21:05:03 +0000 (23:05 +0200)]
PPC: Make MPC8544DS obey -cpu switch

The MPC8544DS board emulation code ignored the user defined -cpu switch.
This patch enables it to only provide a sane default, not force an e500v2
CPU inside.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoFix off-by-one error in sizing pSeries hcall table
David Gibson [Tue, 10 May 2011 06:06:21 +0000 (16:06 +1000)]
Fix off-by-one error in sizing pSeries hcall table

The pSeries machine uses two tables to look up guest hcalls for emulation.
One of these is exactly one entry too small to hold all the hcalls it needs
to, leading to memory corruption.

This patch fixes the bug, and while we're at it, make both tables 'static'
since they're never used from other modules.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoppc64: Fix out-of-tree builds
Andreas Färber [Sun, 8 May 2011 11:25:56 +0000 (13:25 +0200)]
ppc64: Fix out-of-tree builds

On ppc64 host, recursion into pc-bios/spapr-rtas/ fails for
out-of-tree builds. Add missing dir and symlink.

Cc: David Gibson <david@gibson.dropbear.id.au>
Cc: Alexander Graf <agraf@suse.de>
Signed-off-by: Andreas Färber <andreas.faerber@web.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agokvm: ppc: warn user on PAGE_SIZE mismatch
Alexander Graf [Sat, 16 Apr 2011 08:15:11 +0000 (10:15 +0200)]
kvm: ppc: warn user on PAGE_SIZE mismatch

On PPC, the default PAGE_SIZE is 64kb. Unfortunately, the hardware
alignments don't match here: There are RAM and MMIO regions within
a single page when it's 64kb in size.

So the only way out for now is to tell the user that he should use 4k
PAGE_SIZE.

This patch gives the user a hint on that, telling him that failing to
register a prefix slot is most likely to be caused by mismatching PAGE_SIZE.

This way it's also more future-proof, as bigger PAGE_SIZE can easily be
supported by other machines then, as long as they stick to 64kb granularities.

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agokvm: ppc: detect old headers
Alexander Graf [Sat, 16 Apr 2011 00:00:36 +0000 (02:00 +0200)]
kvm: ppc: detect old headers

When compiling Qemu with older kernel headers, the PVR setting
mechanism isn't available yet. Unfortunately, back then I didn't add
a capability we could check against, so all we can do is add a configure
test to see if we support PVR setting. For BookE, we don't care yet.

This fixes compilation errors with KVM enabled on older kernel headers
(like 2.6.32).

Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agomonitor: add PPC BookE SPRs
Scott Wood [Fri, 29 Apr 2011 22:10:23 +0000 (17:10 -0500)]
monitor: add PPC BookE SPRs

Read them via KVM_GET_SREGS in kvm_arch_get_registers(),
and display them in "info registers".

Also get CR and PID from the existing KVM_GET_REGS.

Signed-off-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agokvm: ppc: fixes for KVM_SET_SREGS on init
Scott Wood [Mon, 11 Apr 2011 23:34:34 +0000 (18:34 -0500)]
kvm: ppc: fixes for KVM_SET_SREGS on init

Classic/server ppc has had SREGS for a while now (though I think not
always?), but it's still missing for booke.  Check the capability before
calling KVM_SET_SREGS.

Without this, booke kvm fails to boot as of commit
84b4915dd2c0eaa86c970ffc42a68ea8ba9e48b5 (kvm: Handle kvm_init_vcpu
errors).

Also, don't write random stack state into the non-PVR sregs fields --
have kvm fill it in first.

Eventually booke will have sregs and it will have its own capability to
be tested here.  However, we will want a way for platform code to request
to look like the actual CPU we're running on, especially if SoC devices
are being directly assigned.

Signed-off-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoppc64: Don't try to build sPAPR RTAS on Darwin
Andreas Färber [Sun, 1 May 2011 16:23:56 +0000 (18:23 +0200)]
ppc64: Don't try to build sPAPR RTAS on Darwin

The Darwin assembler fails to build it.

Cc: David Gibson <david@gibson.dropbear.id.au>
Cc: Alexander Graf <agraf@suse.de>
Signed-off-by: Andreas Färber <andreas.faerber@web.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoPlace pseries vty devices at addresses more similar to existing machines
David Gibson [Tue, 19 Apr 2011 01:54:52 +0000 (11:54 +1000)]
Place pseries vty devices at addresses more similar to existing machines

Currently the qemu pseries machine numbers its virtual serial devices
from 0.  However, existing pSeries machines running pHyp number them from
0x30000000.

In theory these indices are arbitrary, since everything necessary for the
kernel to find them is advertised in the device tree.  However the debian
installer, at least, incorrectly looks for a device named vty@30... to
determine whether to use the hypervisor console.

Therefore this patch moves the numbers we use to match the existing pHyp
practice, in order to workaround broken userspace apps of this type.

Signed-off-by: David Gibson <dwg@au1.ibm.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agoMake pSeries 'model' property more closely resemble real hardware
David Gibson [Tue, 19 Apr 2011 01:54:51 +0000 (11:54 +1000)]
Make pSeries 'model' property more closely resemble real hardware

Currently, the qemu emulated pseries machine puts
"qemu,emulated-pSeries-LPAR" in the device tree's root level 'model'
property.  Unfortunately this confuses some installers and ybin, which
expect this to start with "IBM" on pSeries machines.  This patch addresses
this problem, making the property more closely resemble the pattern of
existing real hardware.

Signed-off-by: David Gibson <dwg@au1.ibm.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
13 years agopseries: Increase maximum CPUs to 256
Anton Blanchard [Tue, 19 Apr 2011 01:54:50 +0000 (11:54 +1000)]
pseries: Increase maximum CPUs to 256

The original pSeries machine was limited to 32 CPUs, more or less
arbitrarily.  Particularly when we get SMT KVM guests it will be
pretty easy to exceed this.  Therefore, raise the max number of CPUs
in a pseries machine guest to 256.

Signed-off-by: Anton Blanchard <anton@au1.ibm.com>
Signed-off-by: David Gibson <dwg@au1.ibm.com>
Signed-off-by: Alexander Graf <agraf@suse.de>