tests: Add virtio-scsi qtest

Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
tests: Add virtio-serial qtest

Signed-off-by: Andreas Färber <afaerber@suse.de>
tests: Add virtio-console qtest

Signed-off-by: Andreas Färber <afaerber@suse.de>
virtio-console: QOM cast cleanup for VirtConsole

Introduce type constant, cast macro and rename parent field.

Signed-off-by: Andreas Färber <afaerber@suse.de>
virtio-serial-port: Convert to QOM realize/unrealize

Signed-off-by: Andreas Färber <afaerber@suse.de>
tests: Add spapr-pci-host-bridge qtest

This adds a test whether sPAPR PHB can be added via the command line.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Andreas Färber <afaerber@suse.de>
qdev: Prepare realize/unrealize hooks for BusState

Add a "realized" property calling realize/unrealize hooks as for devices.

Signed-off-by: Bandan Das <bsd@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
qdev: Realize buses on device realization

Integrate (un)realization of child buses with realization/unrealization
of the device hosting them. Code in device_unparent() is reordered for
unrealization of buses to work as part of device unrealization.

That way no changes need to be made to bus instantiation.

Signed-off-by: Bandan Das <bsd@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
pci: Move VMState registration/unregistration to QOM realize/unrealize

Use the realize and unrealize hooks to register and unregister
vmstate_pcibus respectively.

Relocate some stuff to avoid forward declarations.

Signed-off-by: Bandan Das <bsd@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
[AF: Keep using PCI_BUS() cast macro]
Signed-off-by: Andreas Färber <afaerber@suse.de>
libqtest: Fix possible deadlock in qtest initialization

'socket_accept' waits for QEMU to init its unix socket.
If QEMU encounters an error during command line parsing,
it can exit before initializing the communication channel.

Using a timeout for sockets fixes the issue.

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
Revert "KVM: Split QEMUMachine typedef into separate header"

This reverts commit 9c06a1f79f959fffd09bfb7efc3d76051a6cd2da.
The new header sysemu/qemumachine.h is undesired.

Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
Move QEMUMachine typedef to qemu/typedefs.h

As reported in commit 9c06a1f79f959fffd09bfb7efc3d76051a6cd2da, xen.h is
not self-contained with regards to its use of QEMUMachine. Fix this.

Reported-by: Alexander Graf <agraf@suse.de>
Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
pseries: Update SLOF firmware image to qemu-slof-20140304

The changelog is:
  > version: update to 20140304
  > Introduce dummy console device
  > vio-vscsi: Fix CRQ allocation alignment
  > version: update to 20140204
  > virtio-9p: disable unused structure
  > Make "boot net:dhcp" boot from IPv4 only
  > Fix virtio device shutdown
  > Change shutdown method name for virtio-scsi
  > Add support for 64bit LE ABI v1 and v2 support
  > Change representation of string environment variable
  > cas: return error when unknown node found
  > version: update
  > Reset obp-tftp arguments before parsing
  > Enable seamless netboot on IPv6 network
  > Fix shutdown for virtio devices
  > Fix zero checksum in UDP header
  > Handle router advertisement message properly
  > [oex]hci_exit: Check before freeing/unmapping memory
  > Work around missing sc 1 traps on pHyp
  > fix print_version() to return where it came from
  > usb-xhci: memory freeing and using returns as bool uniformly
  > Output banner and initial display output in VNC window
  > use VERSION file to generate FW version
  > cas: remove warning
  > Add support for loading little endian ELF binaries.
  > Add bswap_{16,32,64}p
  > dhcpv6 and other minor net-snk fixes
  > Fix missing drop in virtio-fs setup-alias
  > Find next available alias name
  > SLOF does not exit if given 1KB disk
  > boot: enable support for bootindex
  > pci-properties: add properties to enable hotplug for spapr
  > e1000: remember node handle
  > Increase quiesce tokens array size
  > virtio: timeout after 5sec
  > Enable IPv6 support in dns
  > usb-ohci: fix warnings
  > Add ipv6 support in net-snk
  > ipv4: fix frame overwriting following arp_send_request
  > e1000: fix SLOF_dma_map_out arguments
  > Maintain single global packet buffer for tftp
  > Increase virtio-net receive queue size
  > Increase veth receive queue size
  > Fix dprintf macros at various points
  > usb-ohci: rewrite done_head processing code
  > boot: add net in default boot order
  > block 0 address in the allocator
  > scsi: make-media-alias fix
  > usb-xhci: add xhci host controller support
  > usb-xhci: add xhci support
  > Avoid veth read/write calls with zero length buffer
  > boot: include other aliases
  > usb-core: disable xhci

Cc: Andreas Färber <afaerber@suse.de>
Cc: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
xics-kvm: Fix reset function

Currently interrupt priorities are set to 0 (highest) at the very
beginning of the guest execution which is not correct and makes the guest
produce random interrupt error messages such as:
"Interrupt 0x1001 (real) is invalid, disabling it".
This also prevents interrupt states from correct migration.

This initializes priority to 0xFF as the emulated XICS does.

Suggested-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Andreas Färber <afaerber@suse.de>
spapr-pci: Convert to QOM realize

This converts the old-style SysBusDevice::init() callback to a new-style
DeviceClass::realize() callback.

As a part of conversion, this replaces fprintf(stderr) with error_setg()
as realize() does not "return" any value, instead it puts the extended
error into **errp.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Reviewed-by: Mike Day <ncmike@ncultra.org>
Signed-off-by: Andreas Färber <afaerber@suse.de>
spapr-pci: Convert fprintf() to error_report()

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Reviewed-by: Mike Day <ncmike@ncultra.org>
Signed-off-by: Andreas Färber <afaerber@suse.de>
char: restore read callback on a reattached (hotplug) chardev

Fix a bug that was introduced in commit 386a5a1e. A removal of a device
set the chr handlers to NULL. However when the device is plugged back,
its read callback is not restored so data can't be transferred from the
host to the guest (e.g. via the virtio-serial port).

https://bugzilla.redhat.com/show_bug.cgi?id=1027181

Signed-off-by: Gal Hammer <ghammer@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
libqtest: Avoid inline varargs functions

Older versions of gcc (eg 4.6) can't handle varargs functions declared
inline for anything other than completely trivial uses, and complain:

tests/qom-test.c: In function 'qmp': tests/libqtest.h:359:60: sorry,
unimplemented: function 'qmp' can never be inlined because it uses
variable argument lists

Avoid this problem by putting the functions into libqtest.c instead
of using inline definitions in libqtest.h.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Andreas Färber <afaerber@suse.de>
Merge remote-tracking branch 'remotes/afaerber/tags/qom-devices-for-peter' into staging

QOM/QTest infrastructure fixes and device conversions

* QTest cleanups and test cases for some virtio devices
* QTest for sPAPR PCI host bridge
* qom-test now tests reading all properties beneath /machine
* QOM API leak fixes
* QOM cleanups for SSI devices
* QOM conversion of QEMUMachine
* QOM realize for buses
* sPAPR PCI bus name change

# gpg: Signature made Thu 13 Mar 2014 00:22:40 GMT using RSA key ID 3E7E013F
# gpg: Good signature from "Andreas Färber <afaerber@suse.de>"
# gpg:                 aka "Andreas Färber <afaerber@suse.com>"

* remotes/afaerber/tags/qom-devices-for-peter: (31 commits)
  libqtest: Fix possible deadlock in qtest initialization
  pci: Move VMState registration/unregistration to QOM realize/unrealize
  qdev: Realize buses on device realization
  qdev: Prepare realize/unrealize hooks for BusState
  tests: Add spapr-pci-host-bridge qtest
  virtio-serial-port: Convert to QOM realize/unrealize
  virtio-console: QOM cast cleanup for VirtConsole
  tests: Add virtio-console qtest
  tests: Add virtio-serial qtest
  tests: Add virtio-scsi qtest
  tests: Add virtio-rng qtest
  tests: Add virtio-balloon qtest
  tests: Add virtio-blk qtest
  tests: Clean up IndustryPack TPCI200 gcov paths
  qom-test: Test QOM properties
  hw/boards: Convert current_machine to MachineState
  vl: Use MachineClass instead of global QEMUMachine list
  hw/core: Introduce QEMU machine as QOM object
  qdev-monitor-test: Don't test human-readable error message
  qdev-monitor-test: Simplify using g_assert_cmpstr()
  ...

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Merge remote-tracking branch 'remotes/afaerber/tags/ppc-for-2.0' into staging

PowerPC queue for 2.0-rc0

* QEMUMachine include cleanup
* SLOF update
* XICS reset fix
* sPAPR PCI host bridge refactorings

# gpg: Signature made Thu 13 Mar 2014 02:50:51 GMT using RSA key ID 3E7E013F
# gpg: Good signature from "Andreas Färber <afaerber@suse.de>"
# gpg:                 aka "Andreas Färber <afaerber@suse.com>"

* remotes/afaerber/tags/ppc-for-2.0:
  spapr-pci: Convert fprintf() to error_report()
  spapr-pci: Convert to QOM realize
  xics-kvm: Fix reset function
  pseries: Update SLOF firmware image to qemu-slof-20140304
  Move QEMUMachine typedef to qemu/typedefs.h
  Revert "KVM: Split QEMUMachine typedef into separate header"

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>