Paolo Bonzini [Tue, 20 Mar 2012 09:49:19 +0000 (10:49 +0100)]
main-loop: interrupt wait when data arrives on a socket
Right now, the main loop is not interrupted when data arrives on a
socket. To fix this, register each socket to interrupt the main loop
with WSAEventSelect. This does not replace select, it only communicates
a change in socket state that requires a select call.
Since the interrupt fires only once per recv call, or only once
after a send call returns EWOULDBLOCK we can activate it on all events
unconditionally. If QEMU is momentarily uninterested on some condition,
the main loop will not busy wait. Instead, it may get one extra wakeup,
but then it will ignore the condition until progress occurs and/or
qemu_set_fd_handler is called to set a callback. At this point the
condition will be tested via select and the callback will be invoked
even if it is still disabled on the event.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Paolo Bonzini [Tue, 20 Mar 2012 09:49:18 +0000 (10:49 +0100)]
main-loop: disable fd_set-based glib integration under w32
Using select with glib pollfds is wrong under w32. Restrict
the code to the POSIX case.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Paolo Bonzini [Tue, 20 Mar 2012 09:49:17 +0000 (10:49 +0100)]
main loop: use msec-based timeout in glib_select_fill
The timeval-based timeout is not needed until we actually invoke select,
so compute it only then. Also group the two calls that modify the
timeout, glib_select_fill and os_host_main_loop_wait.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Andreas Färber [Wed, 4 Apr 2012 23:29:40 +0000 (01:29 +0200)]
target-sparc: QOM'ify CPU
Embed CPUSPARCState as first member of SPARCCPU.
Drop cpu_sparc_close() in favor of object_delete() and a finalizer.
Let cpu_state_reset() call cpu_reset().
Make TYPE_SPARC_CPU non-abstract for now.
Distinguish between "sparc-cpu" and "sparc64-cpu".
Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Andreas Färber [Wed, 4 Apr 2012 23:29:39 +0000 (01:29 +0200)]
target-sparc: Rename cpu_init.c
Align QOM'ified targets, with a view to simplify Makefile.target.
Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Blue Swirl [Wed, 4 Apr 2012 20:45:03 +0000 (20:45 +0000)]
Merge branch 's390-for-upstream' of git://repo.or.cz/qemu/agraf
* 's390-for-upstream' of git://repo.or.cz/qemu/agraf:
target-s390x: Update s390x_{tod,cpu}_timer() to use S390CPU
target-s390x: QOM'ify CPU init
target-s390x: QOM'ify CPU reset
target-s390x: QOM'ify CPU
Artyom Tarasenko [Tue, 3 Apr 2012 15:49:05 +0000 (17:49 +0200)]
Improve interrupt handling priority
The vector interrupt has higher priority than interrupt_level_n.
Also check only interrupt_level_n concurency when TL > 0, the traps of
other types may be nested.
Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Artyom Tarasenko [Tue, 3 Apr 2012 15:49:04 +0000 (17:49 +0200)]
Fix vector interrupt handling
Don't produce stray irq 5, don't overwrite ivec_data if still busy with
processing of the previous interrupt.
Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Andreas Färber [Mon, 2 Apr 2012 12:00:43 +0000 (14:00 +0200)]
target-s390x: Update s390x_{tod,cpu}_timer() to use S390CPU
In place of CPUS390XState pass S390CPU as opaque from the new initfn.
cpu_interrupt() is anticipated to take a CPUState in the future.
Signed-off-by: Andreas Färber <afaerber@suse.de>
Tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
Andreas Färber [Mon, 2 Apr 2012 11:56:29 +0000 (13:56 +0200)]
target-s390x: QOM'ify CPU init
Move code from cpu_s390x_init() into an initfn.
Signed-off-by: Andreas Färber <afaerber@suse.de>
Tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
Andreas Färber [Mon, 2 Apr 2012 11:31:59 +0000 (13:31 +0200)]
target-s390x: QOM'ify CPU reset
Move code from cpu_state_reset() to s390_cpu_reset().
Signed-off-by: Andreas Färber <afaerber@suse.de>
Tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
Andreas Färber [Mon, 2 Apr 2012 09:39:23 +0000 (11:39 +0200)]
target-s390x: QOM'ify CPU
Embed CPUS390XState as first member of S390CPU.
Since -cpu is being ignored, make TYPE_S390_CPU non-abstract.
Signed-off-by: Andreas Färber <afaerber@suse.de>
Tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
Paolo Bonzini [Wed, 28 Mar 2012 14:34:12 +0000 (16:34 +0200)]
qdev: put all devices under /machine
Avoid cluttering too much the QOM root.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Paolo Bonzini [Tue, 27 Mar 2012 16:38:47 +0000 (18:38 +0200)]
qdev: give all devices a canonical path
A strong limitation of QOM right now is that unconverted ports
(e.g. all...) do not give a canonical path to devices that are
part of the board. This in turn makes it impossible to replace
PROP_PTR with a QOM link for example.
Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Paolo Bonzini [Tue, 27 Mar 2012 16:38:46 +0000 (18:38 +0200)]
qdev: add children before qdev_init
We want the composition tree to to be in order by the time we call
qdev_init, so that a single set of the toplevel realize property can
propagate all the way down the composition tree.
This is not the case so far. Unfortunately, this is incompatible
with calling qdev_init in the constructor wrappers for devices,
so for now we need to unattach some devices that are created through
those wrappers. This will be fixed by removing qdev_init and instead
setting the toplevel realize property after machine init.
Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Paolo Bonzini [Tue, 27 Mar 2012 16:38:45 +0000 (18:38 +0200)]
qom: add container_get
This is QOM "mkdir -p". It is useful when referring to
container objects such as "/machine".
Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Mon, 2 Apr 2012 14:46:45 +0000 (09:46 -0500)]
Merge remote-tracking branch 'kiszka/queues/slirp' into staging
* kiszka/queues/slirp:
slirp: Signal free input buffer space to io-thread
w32/slirp: Undefine error constants before their redefinition
slirp: use socket_set_nonblock
slirp: clean up conflicts with system headers
Anthony Liguori [Mon, 2 Apr 2012 14:44:35 +0000 (09:44 -0500)]
Merge remote-tracking branch 'stefanha/tracing' into staging
* stefanha/tracing:
tracetool: dtrace: handle in and next reserved words
tracetool: dtrace disabled-events fix
Makefile.target: code stp dependency on trace-events
Anthony Liguori [Sun, 1 Apr 2012 19:18:30 +0000 (14:18 -0500)]
serial: clear LSR.TEMT when populating the TSR
We never actually clear the TEMT (transmit sending register empty) flag when
populating the TSR. We set the flag, but since it's never cleared, setting it
is sort of pointless..
I found this with a unit test case.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Sun, 1 Apr 2012 19:03:21 +0000 (14:03 -0500)]
serial: fix retry logic
I'm not sure if the retry logic has ever worked when not using FIFO mode. I
found this while writing a test case although code inspection confirms it is
definitely broken.
The TSR retry logic will never actually happen because it is guarded by an
'if (s->tsr_rety > 0)' but this is the only place that can ever make the
variable greater than zero. That effectively makes the retry logic an 'if (0)'.
I believe this is a typo and the intention was >= 0. Once this is fixed though,
I see double transmits with my test case. This is because in the non FIFO
case, serial_xmit may get invoked while LSR.THRE is still high because the
character was processed but the retransmit timer was still active.
We can handle this by simply checking for LSR.THRE and returning early. It's
possible that the FIFO paths also need some attention.
Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Fri, 30 Mar 2012 19:04:04 +0000 (14:04 -0500)]
qtest: use qemu_gettimeofday()
On linux, qemu_timeval will always be two long ints. On windows, we use our
own struct definition. This should fix win64.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Michael Walle [Sat, 31 Mar 2012 17:55:25 +0000 (19:55 +0200)]
milkymist-vgafb: add missing register
This bug existed since the first commit. Fortunately, the affected
registers have no functionality in qemu. This will only prevent the
following warning:
milkymist_vgafb: write access to unknown register 0x00000034
Signed-off-by: Michael Walle <michael@walle.cc>
Michael Walle [Sat, 31 Mar 2012 17:54:20 +0000 (19:54 +0200)]
target-lm32: add simple disassembler
Because binutils disassembler is based on libopcode, this is a rewrite from
scratch.
Signed-off-by: Michael Walle <michael@walle.cc>
Michael Walle [Sat, 31 Mar 2012 17:54:09 +0000 (19:54 +0200)]
milkymist-sysctl: support for new core version
The new version introduces the following new registers:
- SoC clock frequency: read-only of system clock used on the SoC
- debug scratchpad: 8 bit scratchpad register
- debug write lock: write once register, without any function on QEMU
Signed-off-by: Michael Walle <michael@walle.cc>
Michael Walle [Sat, 31 Mar 2012 17:54:05 +0000 (19:54 +0200)]
target-lm32: init tcg only if available
Once qtest support for target-lm32 arrives, tcg may be disabled.
Signed-off-by: Michael Walle <michael@walle.cc>
Michael Walle [Sat, 31 Mar 2012 17:53:51 +0000 (19:53 +0200)]
tests: fix out-of-tree building for lm32 target
Signed-off-by: Michael Walle <michael@walle.cc>
Blue Swirl [Sat, 31 Mar 2012 12:10:07 +0000 (12:10 +0000)]
Merge branch 'arm-devs.for-upstream' of git://git.linaro.org/people/pmaydell/qemu-arm
* 'arm-devs.for-upstream' of git://git.linaro.org/people/pmaydell/qemu-arm:
pl031: switch clock base to rtc_clock
pl031: rearm alarm timer upon load
arm: switch real-time clocks to rtc_clock
omap: switch omap_lpg to vm_clock
rtc: add -rtc clock=rt
Blue Swirl [Sat, 31 Mar 2012 12:09:06 +0000 (12:09 +0000)]
Merge branch 'qom-cpu-unicore32.v3' of git://github.com/afaerber/qemu-cpu
* 'qom-cpu-unicore32.v3' of git://github.com/afaerber/qemu-cpu:
target-unicore32: Move CPU-dependent init into initfn
target-unicore32: QOM'ify CPU
target-unicore32: License future contributions under GPLv2+
target-unicore32: Relicense to GPLv2+
MAINTAINERS: Add entry for UniCore32
Blue Swirl [Sat, 31 Mar 2012 12:06:10 +0000 (12:06 +0000)]
Merge branch 'target-arm.for-upstream' of git://git.linaro.org/people/pmaydell/qemu-arm
* 'target-arm.for-upstream' of git://git.linaro.org/people/pmaydell/qemu-arm:
ARM: Permit any ARMv6K CPU to read the MVFR0 and MVFR1 VFP registers.
target-arm: Minimalistic CPU QOM'ification
target-arm: Drop cpu_arm_close()
Gerd Hoffmann [Thu, 29 Mar 2012 08:55:18 +0000 (10:55 +0200)]
buildfix: check for old pod2man versions
Older pod2man don't have a --utf8 switch, check for this in conffigure
and use it only when present. Fixes build on RHEL-5.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Stefan Weil [Tue, 27 Mar 2012 17:23:53 +0000 (19:23 +0200)]
Fix conversion from lower to upper case with Turkish locale
Some locale settings let make fail or create wrong results
because tr '[:lower:]' '[:upper:]' which is used to convert
from lower to upper case depends on the locale.
With locale tr_TR.UTF-8, lower case 'i' is not converted to 'I'.
This results in wrong entries in config-host.h like these ones:
#define CONFIG_QEMU_PREFiX "/usr/local"
#define CONFIG_QEMU_BiNDiR "/usr/local/bin"
This problem was reported by Emre Ersin.
The same problem occurs when configure creates the target specific
files config-target.mak. They get wrong declarations:
TARGET_CRiS=y
TARGET_i386=y
TARGET_MiCROBLAZE=y
TARGET_MiPS64=y
TARGET_MiPS=y
TARGET_UNiCORE32=y
It is sufficient to restrict the conversion to the characters a-z.
Using this explicit range avoids the dependency on the locale
settings and is also shorter.
v2:
POSIX says that 'tr a-z' is unspecified outside of the POSIX
locale, so we must set LC_ALL=C to make sure that we are using
POSIX (hint from Eric Blake, thanks).
Signed-off-by: Stefan Weil <sw@weilnetz.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Blue Swirl [Fri, 30 Mar 2012 17:42:27 +0000 (17:42 +0000)]
qtest: avoid a warning with RTC test
Avoid this warning on OpenBSD:
CC tests/rtc-test.o
/src/qemu/tests/rtc-test.c: In function 'check_time':
/src/qemu/tests/rtc-test.c:171: warning: format '%ld' expects type 'long int', but argument 2 has type 'time_t'
/src/qemu/tests/rtc-test.c:173: warning: format '%ld' expects type 'long int', but argument 2 has type 'time_t'
Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Anthony Liguori [Fri, 30 Mar 2012 17:53:54 +0000 (12:53 -0500)]
qtest: fix 32-bit build
time_t appears to be an unsigned long so use %ld.
Reported-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Jan Kiszka [Fri, 30 Mar 2012 17:29:08 +0000 (19:29 +0200)]
slirp: Signal free input buffer space to io-thread
This massively accelerates slirp reception speed: If data arrives
faster than the guest can read it from the input buffer, the file
descriptor for the corresponding socket was taken out of the fdset for
select. However, the event of the guest reading enough data from the
buffer was not signaled. Thus, the io-thread only noticed this change
on the next time-driven poll. Fix this by kicking the io-thread as
required.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Blue Swirl [Fri, 30 Mar 2012 17:39:33 +0000 (17:39 +0000)]
qtest: fix out of tree build
Trace objects are also needed if tracing is enabled.
Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Anthony Liguori [Wed, 28 Mar 2012 13:42:07 +0000 (15:42 +0200)]
qtest: add rtc-test test-case
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Wed, 28 Mar 2012 13:42:06 +0000 (15:42 +0200)]
rtc: split out macros into a header file and use in test case
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Wed, 28 Mar 2012 13:42:05 +0000 (15:42 +0200)]
qtest: add C version of test infrastructure
This also includes a qtest wrapper script to make it easier to launch qtest
tests directly.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Paolo Bonzini [Wed, 28 Mar 2012 13:42:04 +0000 (15:42 +0200)]
qtest: add clock management
This patch combines qtest and -icount together to turn the vm_clock
into a source that can be fully managed by the client. To this end new
commands clock_step and clock_set are added. Hooking them with libqtest
is left as an exercise to the reader.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Paolo Bonzini [Wed, 28 Mar 2012 13:42:03 +0000 (15:42 +0200)]
qtest: IRQ interception infrastructure
Since /i440fx/piix3 is being removed from the composition tree, the
IO-APIC is placed under /i440fx. This is wrong and should be changed
as soon as the /i440fx/piix3 path is put back.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Anthony Liguori [Wed, 28 Mar 2012 13:42:02 +0000 (15:42 +0200)]
qtest: add test framework
The idea behind qtest is pretty simple. Instead of executing a CPU via TCG or
KVM, rely on an external process to send events to the device model that the CPU
would normally generate.
qtest presents itself as an accelerator. In addition, a new option is added to
establish a qtest server (-qtest) that takes a character device. This is what
allows the external process to send CPU events to the device model.
qtest uses a simple line based protocol to send the events. Documentation of
that protocol is in qtest.c.
I considered reusing the monitor for this job. Adding interrupts would be a bit
difficult. In addition, logging would also be difficult.
qtest has extensive logging support. All protocol commands are logged with
time stamps using a new command line option (-qtest-log). Logging is important
since ultimately, this is a feature for debugging.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Paolo Bonzini [Wed, 28 Mar 2012 13:42:01 +0000 (15:42 +0200)]
test makefile overhaul
This introduces new test reporting infrastructure based on
gtester and gtester-report.
Also, all existing tests are moved to tests/, and tests/Makefile
is reorganized to factor out the commonalities in the rules.
Signed-off-by: Anthony Liguori <aliguori@linux.vnet.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Alon Levy [Thu, 29 Mar 2012 21:35:36 +0000 (23:35 +0200)]
tracetool: dtrace: handle in and next reserved words
Signed-off-by: Alon Levy <alevy@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Lee Essen [Tue, 20 Mar 2012 17:02:40 +0000 (17:02 +0000)]
tracetool: dtrace disabled-events fix
If there are "disabled" entries in the trace-events file then
linetod_nop() is called if the backend is dtrace, it's currently
not present. Also equivalent fix for stap.
Signed-off-by: Lee Essen <lee.essen@nowonline.co.uk>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Alon Levy [Sun, 18 Mar 2012 07:47:15 +0000 (08:47 +0100)]
Makefile.target: code stp dependency on trace-events
Signed-off-by: Alon Levy <alevy@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Paolo Bonzini [Fri, 30 Mar 2012 10:31:23 +0000 (10:31 +0000)]
pl031: switch clock base to rtc_clock
This lets the user specify the desired semantics. By default, the RTC
will follow adjustments from the host's NTP client, and will remain in
sync when the virtual machine is stopped. The previous behavior, which
provides determinism with both icount and qtest, remains available with
"-rtc clock=vm".
pl031 supports migration, so we need to convert the time base from
rtc_clock to vm_clock and back for backwards compatibility. (The
rtc_clock may not be synchronized on the two machines, especially with
savevm/loadvm, so the conversion is needed anyway. And since any time
base will do, why not pick the one base that is backwards compatible).
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Paolo Bonzini [Fri, 30 Mar 2012 10:31:22 +0000 (10:31 +0000)]
pl031: rearm alarm timer upon load
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Paolo Bonzini [Fri, 30 Mar 2012 10:31:22 +0000 (10:31 +0000)]
arm: switch real-time clocks to rtc_clock
This lets the user specify the desired semantics. By default, the RTC
will follow adjustments from the host's NTP client. "-rtc clock=vm" will
improve determinism with both icount and qtest. Finally, the previous
behavior is available with "-rtc clock=rt".
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Paolo Bonzini [Fri, 30 Mar 2012 10:31:22 +0000 (10:31 +0000)]
omap: switch omap_lpg to vm_clock
The output of the pulse generator needs to be deterministic when
running in -icount mode, and to remain constant whenever the VM is
stopped. So the right clock to use is vm_clock.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Paolo Bonzini [Fri, 30 Mar 2012 10:31:21 +0000 (10:31 +0000)]
rtc: add -rtc clock=rt
This will let people use backwards-compatible semantics for devices that
will be affected by the following patches.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Andrew Towers [Thu, 29 Mar 2012 02:41:08 +0000 (02:41 +0000)]
ARM: Permit any ARMv6K CPU to read the MVFR0 and MVFR1 VFP registers.
This patch replaces the ARM_FEATURE_VFP3 test when reading MVFR registers
with a test for a new feature flag ARM_FEATURE_MVFR, and sets this feature
for all ARMv6K cores (ARM1156 is not a v6K core, yet supports MVFR; qemu
does not support ARM1156 at this time.)
MVFR0 and MVFR1 were introduced in ARM1136JF-S r1p0 (ARMv6K, VFPv2) and are
present in ARM1156T2F-S (non-v6K), ARM1176JZF-S, ARM11MPCore and newer cores.
Reference: ARM DDI 0211H, 0290G, 0301H, 0360E.
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0211h/Ffbefjag.html
Without this change, the linux kernel will not boot with VFP support enabled
under ARM1176 system emulation, due to the unconditional use of MVFR1 at the
end of vfp_init() in arch/arm/vfp/vfpmodule.c:
VFP support v0.3: implemetor 41 architecture 1 part 20 variant b rev 5
Internal error: Oops - undefined instruction: 0 [#1]
Signed-off-by: Andrew Towers <atowers@gmail.com>
Reviewed-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Andreas Färber [Thu, 29 Mar 2012 16:03:18 +0000 (18:03 +0200)]
target-unicore32: Move CPU-dependent init into initfn
Instead of setting values in a CPUID switch, do so in initfn functions.
Signed-off-by: Andreas Färber <afaerber@suse.de>
Acked-by: Guan Xuetao <gxt@mprc.pku.edu.cn>
Andreas Färber [Tue, 14 Feb 2012 00:16:17 +0000 (01:16 +0100)]
target-unicore32: QOM'ify CPU
Embed CPUUniCore32State as first member of UniCore32CPU.
Contributed under GPLv2+.
Signed-off-by: Andreas Färber <afaerber@suse.de>
Acked-by: Guan Xuetao <gxt@mprc.pku.edu.cn>
Andreas Färber [Thu, 15 Mar 2012 14:02:14 +0000 (15:02 +0100)]
target-unicore32: License future contributions under GPLv2+
This is to limit relicensing obstacles to the pending IBM investigation.
Signed-off-by: Andreas Färber <afaerber@suse.de>
Acked-by: Guan Xuetao <gxt@mprc.pku.edu.cn>
Andreas Färber [Tue, 13 Mar 2012 15:48:19 +0000 (16:48 +0100)]
target-unicore32: Relicense to GPLv2+
Adopt the license text suggested by Guan Xue-tao (with a minor
simplification) for all target-unicore/ files except helper.c.
To helper.c Anthony Liguori contributed a qemu_malloc() -> g_malloc()
conversion, still pending IBM relicensing approval, so that remains
GPLv2 for now.
By relicensing all possible parts now, we avoid having to formally
relicense new, e.g., QOM code.
Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Guan Xuetao <gxt@mprc.pku.edu.cn>
Signed-off-by: Stefan Weil <sw@weilnetz.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Dor Laor <dlaor@redhat.com>
Andreas Färber [Tue, 13 Mar 2012 23:45:43 +0000 (00:45 +0100)]
MAINTAINERS: Add entry for UniCore32
Signed-off-by: Andreas Färber <afaerber@suse.de>
Acked-by: Guan Xuetao <gxt@mprc.pku.edu.cn>
Anthony Liguori [Thu, 29 Mar 2012 18:32:41 +0000 (13:32 -0500)]
Merge remote-tracking branch 'origin/master' into staging
* origin/master:
qemu tcg: Remove one entry of INDEX_op_ld_i64 from ppc_op_defs
Andreas Färber [Thu, 29 Mar 2012 04:50:31 +0000 (04:50 +0000)]
target-arm: Minimalistic CPU QOM'ification
Introduce only one non-abstract type TYPE_ARM_CPU and do not touch
cp15 registers to not interfere with Peter's ongoing remodelling.
Embed CPUARMState as first (additional) field of ARMCPU.
Let CPUClass::reset() call cpu_state_reset() for now.
Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Andreas Färber [Thu, 29 Mar 2012 04:50:30 +0000 (04:50 +0000)]
target-arm: Drop cpu_arm_close()
It's unused, so no need to QOM'ify it later.
Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Li Zhang [Thu, 29 Mar 2012 03:29:02 +0000 (14:29 +1100)]
qemu tcg: Remove one entry of INDEX_op_ld_i64 from ppc_op_defs
There two entries of INDEX_op_ld_i64 in the ppc_op_defs. That causes an
assertion failure in tcg_add_target_add_op_defs() when --enable-debug is
used on a ppc64 backend (that's ppc64 host, not target).
Signed-off-by: Li Zhang <zhlcindy@linux.vnet.ibm.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: malc <av1474@comtv.ru>
Jan Kiszka [Wed, 28 Mar 2012 19:03:42 +0000 (21:03 +0200)]
w32/slirp: Undefine error constants before their redefinition
Less warnings for your console.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Paolo Bonzini [Thu, 22 Mar 2012 00:02:52 +0000 (01:02 +0100)]
slirp: use socket_set_nonblock
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Paolo Bonzini [Thu, 22 Mar 2012 00:02:51 +0000 (01:02 +0100)]
slirp: clean up conflicts with system headers
Right now, slirp/slirp.h cannot include some system headers and,
indirectly, qemu_socket.h. Clean this up, and remove a duplicate
prototype that was introduced because of that.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Anthony Liguori [Wed, 28 Mar 2012 17:46:39 +0000 (12:46 -0500)]
Merge remote-tracking branch 'sstabellini/disk_io' into staging
* sstabellini/disk_io:
xen_disk: when using AIO flush after the operation is completed
xen_disk: open disk with BDRV_O_NOCACHE | BDRV_O_CACHE_WB | BDRV_O_NATIVE_AIO
Anthony Liguori [Wed, 28 Mar 2012 17:46:11 +0000 (12:46 -0500)]
Merge remote-tracking branch 'sstabellini/xen-fixes' into staging
* sstabellini/xen-fixes:
xen_disk: detach the blkdev before bdrv_delete
xen_console: ignore console disconnect events from console/0
Anthony Liguori [Wed, 28 Mar 2012 17:45:22 +0000 (12:45 -0500)]
Merge remote-tracking branch 'qmp/queue/qmp' into staging
* qmp/queue/qmp:
qmp: document strict parsing
qmp: parse commands in strict mode
qmp: add and use q type specifier
qapi: add strict mode to input visitor
qapi: place outermost object on qiv stack
qapi: untangle next_list
qapi: allow freeing partially-allocated objects
qapi: shortcut visits on errors
qapi: fix memory leak on error
qapi: fail hard on stack imbalance
qapi: add a test case for type errors
qapi: add struct-errors test case to test-qmp-output-visitor
qapi: fix double free in qmp_output_visitor_cleanup()
Anthony Liguori [Wed, 28 Mar 2012 17:44:04 +0000 (12:44 -0500)]
Merge remote-tracking branch 'alon/libcacard' into staging
* alon/libcacard:
libcacard/vcard_emul_nss: add warning for old coolkey
libcacard/vcard_emul_nss: handle no readers at startup
libcacard/vcard_emul_nss: don't stop thread when there are no slots
Blue Swirl [Sun, 18 Mar 2012 11:31:23 +0000 (11:31 +0000)]
sparc: pass page aligned addresses to tlb_set_page
Mask incoming page address early so that resolved addresses
are page aligned. Remove further address masking.
Tested-by: Artyom Tarasenko <atar4qemu@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Stefano Stabellini [Tue, 27 Mar 2012 16:03:07 +0000 (16:03 +0000)]
xen_disk: detach the blkdev before bdrv_delete
We need to detach the blkdev from the BlockDriverState before calling
bdrv_delete.
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Stefano Stabellini [Tue, 27 Mar 2012 16:02:21 +0000 (16:02 +0000)]
xen_console: ignore console disconnect events from console/0
The first console has a different location compared to other PV devices
(console, rather than device/console/0) and doesn't obey the xenstore
state protocol. We already special case the first console in con_init
and con_initialise, we should also do it in con_disconnect.
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Paolo Bonzini [Thu, 22 Mar 2012 21:39:39 +0000 (22:39 +0100)]
qmp: document strict parsing
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Paolo Bonzini [Thu, 22 Mar 2012 11:51:12 +0000 (12:51 +0100)]
qmp: parse commands in strict mode
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Paolo Bonzini [Thu, 22 Mar 2012 11:51:11 +0000 (12:51 +0100)]
qmp: add and use q type specifier
"O" is being used by the transaction and qom-set commands to mean "any
QObject", but it really means "do not validate the argument list".
Add a new specifier with the correct meaning.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Paolo Bonzini [Thu, 22 Mar 2012 11:51:10 +0000 (12:51 +0100)]
qapi: add strict mode to input visitor
While QMP in general is designed so that it is possible to ignore
unknown arguments, in the case of the QMP server it is better to
reject them to detect bad clients. In fact, we're already doing
this at the top level in the argument checker. To extend this to
complex structures, add a mode to the input visitor where it checks
for unvisited keys and raises an error if it finds one.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Paolo Bonzini [Thu, 22 Mar 2012 11:51:09 +0000 (12:51 +0100)]
qapi: place outermost object on qiv stack
This is a slight change in the implementation of QMPInputVisitor
that helps when adding strict mode.
Const QObjects cannot be inc/decref-ed, and that's why QMPInputVisitor
relies heavily on weak references to inner objects. I'm not removing
the weak references now, but since refcount+const is a lost battle in C
(C++ has "mutable") I think removing const is fine in this case.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Paolo Bonzini [Thu, 22 Mar 2012 21:38:40 +0000 (22:38 +0100)]
qapi: untangle next_list
Right now, the semantics of next_list are complicated. The caller must:
* call start_list
* call next_list for each element *including the first*
* on the first call to next_list, the second argument should point to
NULL and the result is the head of the list. On subsequent calls,
the second argument should point to the last node (last result of
next_list) and next_list itself tacks the element at the tail of the
list.
This works for both input and output visitor, but having the visitor
write memory when it is only reading the list is ugly. Plus, relying
on *list to detect the first call is tricky and undocumented.
We can initialize so->entry in next_list instead of start_list, leaving
it NULL in start_list. This way next_list sees clearly whether it is
on the first call---as a bonus, it discriminates the cases based on
internal state of the visitor rather than external state. We can
also pull the assignment of the list head from generated code up to
next_list.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Paolo Bonzini [Thu, 22 Mar 2012 11:51:07 +0000 (12:51 +0100)]
qapi: allow freeing partially-allocated objects
Objects going through the dealloc visitor can be only partially allocated.
Detect the situation and avoid a segfault. This also helps with the
input visitor, when there are errors.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Paolo Bonzini [Thu, 22 Mar 2012 11:51:06 +0000 (12:51 +0100)]
qapi: shortcut visits on errors
We can exit very soon if we enter a visitor with a preexisting error.
This simplifies some cases because we will not have to deal with
obj being non-NULL while *obj is NULL.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Paolo Bonzini [Thu, 22 Mar 2012 11:51:05 +0000 (12:51 +0100)]
qapi: fix memory leak on error
QmpInputVisitor would leak the malloced struct if the stack was
overflowed. This can be easily fixed using error_propagate.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Paolo Bonzini [Thu, 22 Mar 2012 11:51:04 +0000 (12:51 +0100)]
qapi: fail hard on stack imbalance
QmpOutputVisitor will segfault if an imbalanced end function is
called. So we can abort in QmpInputVisitor too.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Paolo Bonzini [Thu, 22 Mar 2012 11:51:03 +0000 (12:51 +0100)]
qapi: add a test case for type errors
There is no test case for parse errors, add one.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Paolo Bonzini [Tue, 20 Mar 2012 10:22:49 +0000 (11:22 +0100)]
qapi: add struct-errors test case to test-qmp-output-visitor
This test case verifies that invalid native enums are caught, and causes
qapi to tear down the QObject tree under construction, exercising the
previous patch.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Laszlo Ersek [Tue, 20 Mar 2012 10:22:48 +0000 (11:22 +0100)]
qapi: fix double free in qmp_output_visitor_cleanup()
Stack entries in QmpOutputVisitor are navigation links (weak references),
except the bottom (ie. least recently added) entry, which owns the root
QObject [1]. Make qmp_output_visitor_cleanup() drop the stack entries,
then release the QObject tree by the root.
Attempting to serialize an invalid enum inside a dictionary is an example
for triggering the double free.
[1] http://lists.nongnu.org/archive/html/qemu-devel/2012-03/msg03276.html
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Anthony Liguori [Mon, 26 Mar 2012 20:17:51 +0000 (15:17 -0500)]
Merge remote-tracking branch 'mdroth/qga-pull-3-26-12' into staging
* mdroth/qga-pull-3-26-12:
qemu-ga: fix bsd build, and re-org linux-specific implementations
Anthony Liguori [Mon, 26 Mar 2012 20:08:26 +0000 (15:08 -0500)]
Merge remote-tracking branch 'stefanha/trivial-patches' into staging
* stefanha/trivial-patches:
trace-events: Fix broken build caused by wrong format specifier
test: add test-qmp-commands to make check
qapi: remove print statements from test-qmp-commands
test: remove qemu-ga reference
vl.c: fix '-cpu ?' segfault
Anthony Liguori [Mon, 26 Mar 2012 20:08:15 +0000 (15:08 -0500)]
Merge remote-tracking branch 'spice/spice.v51' into staging
* spice/spice.v51:
ui/spice-display: use uintptr_t when casting qxl physical addresses
ui/spice-display.c: Fix compilation warnings on 32 bit hosts
Michael Roth [Wed, 21 Mar 2012 15:10:46 +0000 (10:10 -0500)]
test: remove qemu-ga reference
This was added by mistake a while back.
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Miroslav Rezanina [Wed, 21 Mar 2012 12:46:54 +0000 (13:46 +0100)]
Man page: Add -global description
There's only TODO information in qemu man page for -global option. This is a basic description of this option with simple example.
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
v4:
- break long line
v3:
- add use case description
- use prop instead of property
v2:
- Use better value in example
Patch:
--
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Federico Simoncelli [Tue, 20 Mar 2012 13:54:35 +0000 (13:54 +0000)]
qapi: add c_fun to escape function names
Signed-off-by: Federico Simoncelli <fsimonce@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Alon Levy [Thu, 22 Mar 2012 18:00:36 +0000 (20:00 +0200)]
libcacard/vcard_emul_nss: add warning for old coolkey
Older coolkey versions (before the future fix of RHBZ 802435) have
a fake card reader created if no reader is detected during module
initialization. Warn libcacard users if the faulty coolkey is detected
by checking for the fake reader name "E-Gate 0 0".
Signed-off-by: Alon Levy <alevy@redhat.com>
Alon Levy [Thu, 22 Mar 2012 17:58:58 +0000 (19:58 +0200)]
libcacard/vcard_emul_nss: handle no readers at startup
When starting with no readers, coolkey should show no slots (with
RHBZ 806038 fixed). Fix initialization to launch the event handling
thread for each module that isn't the internal module regardless of the
number of slots detected for it at initialization time, since slot
number may start as 0 and is dynamic.
RHBZ: 802435
Signed-off-by: Alon Levy <alevy@redhat.com>
Alon Levy [Thu, 22 Mar 2012 17:44:49 +0000 (19:44 +0200)]
libcacard/vcard_emul_nss: don't stop thread when there are no slots
Signed-off-by: Alon Levy <alevy@redhat.com>
Stefan Weil [Sat, 24 Mar 2012 07:13:34 +0000 (08:13 +0100)]
trace-events: Fix broken build caused by wrong format specifier
mem is an uint64_t value, so %lx was wrong.
Signed-off-by: Stefan Weil <sw@weilnetz.de>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Michael Roth [Tue, 20 Mar 2012 00:18:26 +0000 (19:18 -0500)]
test: add test-qmp-commands to make check
All the deps are here but the test was never added to the list of tests
for make check
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Michael Roth [Tue, 20 Mar 2012 00:18:25 +0000 (19:18 -0500)]
qapi: remove print statements from test-qmp-commands
This is necessary for nicer make check integration.
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Michael Roth [Wed, 21 Mar 2012 15:10:46 +0000 (10:10 -0500)]
test: remove qemu-ga reference
This was added by mistake a while back.
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Eduardo Habkost [Wed, 21 Mar 2012 12:33:40 +0000 (09:33 -0300)]
vl.c: fix '-cpu ?' segfault
Fix stupid copy&paste mistake at commit
ecf40beae7dcbb057d4f115207f9d8276832a774: I moved code around but kept
"optarg" on the cpu_list() call.
Reported-by: Jiri Denemark <jdenemar@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Michael Roth [Sun, 25 Mar 2012 18:59:41 +0000 (13:59 -0500)]
qemu-ga: fix bsd build, and re-org linux-specific implementations
Richard Henderson [Sat, 24 Mar 2012 17:47:39 +0000 (10:47 -0700)]
tcg-sparc: Add debug_frame support.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Richard Henderson [Sat, 24 Mar 2012 17:47:38 +0000 (10:47 -0700)]
tcg-hppa: Add debug_frame support.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>