sdk/emulator/qemu.git
16 years agotarget-alpha: fix cmpbge instruction
aurel32 [Mon, 10 Nov 2008 11:10:14 +0000 (11:10 +0000)]
target-alpha: fix cmpbge instruction

The cmpbge instruction should compare all 8 bytes of one 64-bit value with
another.  However, we were looping with a < 7 condition which was skipping
the top byte.  So if we were doing a compare where the top byte was
important, we could get the wrong result (this notably breaks the strlen()
function with certain sized strings).

(Vince Weaver)

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5667 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agouse target_mmap() to allocate idt, gdt and ldt (Kirill A. Shutemov).
balrog [Mon, 10 Nov 2008 02:55:33 +0000 (02:55 +0000)]
use target_mmap() to allocate idt, gdt and ldt (Kirill A. Shutemov).

env->*dt.base should fit target address space, so we should use
target_mmap to allocate them.

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5666 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoCurrently trying to turn an oversized directory into a VVFAT image will
balrog [Mon, 10 Nov 2008 01:34:27 +0000 (01:34 +0000)]
Currently trying to turn an oversized directory into a VVFAT image will
result in a cryptic error (and an abort):
  qemu: block-vvfat.c:97: array_get: Assertion `index < array->next' failed.
  Aborted

Turn this into an actually useful error message:
  Directory does not fit in FAT16 (capacity 504MB)
  qemu: could not open disk image fat:$DIR/

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5665 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agox86 CPUID extended family/model (Andre Przywara).
balrog [Mon, 10 Nov 2008 01:05:01 +0000 (01:05 +0000)]
x86 CPUID extended family/model (Andre Przywara).

x86 CPUs feature extended family/model bits in CPUID leaf
0000_0001|EAX. Refer to page 10 in:
http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/25481.pdf

Those bits are necessary to model newer AMD CPUs:
-cpu qemu64,family=15,model=65,stepping=3 or
-cpu qemu64,family=16,model=4,stepping=2

Signed-off-by: Andre Przywara <andre.przywara@amd.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5664 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoUse TCG not op
blueswir1 [Sun, 9 Nov 2008 19:52:36 +0000 (19:52 +0000)]
Use TCG not op

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5663 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoUse andc, orc, nor and nand
blueswir1 [Sun, 9 Nov 2008 19:50:37 +0000 (19:50 +0000)]
Use andc, orc, nor and nand
Also fix which argument gets negated in fandnot[12] and fornot[12]

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5662 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-ppc: fix TCG argument
aurel32 [Sun, 9 Nov 2008 18:27:28 +0000 (18:27 +0000)]
target-ppc: fix TCG argument

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5661 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-ppc: Remove a few TCG temp variable leaks
aurel32 [Sun, 9 Nov 2008 17:27:36 +0000 (17:27 +0000)]
target-ppc: Remove a few TCG temp variable leaks

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5660 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-ppc: fixes for gen_op_neg()
aurel32 [Sun, 9 Nov 2008 17:27:27 +0000 (17:27 +0000)]
target-ppc: fixes for gen_op_neg()

- Rename to gen_op_arith_neg for consistency with other functions.
- Correctly free TCG temp variable.
- Fix the return value in 64-bit mode in case of overflow.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5659 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-ppc: gen_op_arith_divw() & gen_op_arith_divd fixes
aurel32 [Sun, 9 Nov 2008 17:27:19 +0000 (17:27 +0000)]
target-ppc: gen_op_arith_divw() & gen_op_arith_divd fixes

gen_op_arith_divw():
- "deoptimize" gen_op_arith_divw to make it more readable.
- Correctly free TCG temp variable

gen_op_arith_divd():
- Call the right function.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5658 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-ppc: optimize mullw and make the code more readable
aurel32 [Sun, 9 Nov 2008 17:27:11 +0000 (17:27 +0000)]
target-ppc: optimize mullw and make the code more readable

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5657 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-ppc: indentation fixes
aurel32 [Sun, 9 Nov 2008 17:27:03 +0000 (17:27 +0000)]
target-ppc: indentation fixes

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5656 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoSparc32 BSD user support
blueswir1 [Sun, 9 Nov 2008 09:31:37 +0000 (09:31 +0000)]
Sparc32 BSD user support

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5655 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoDocument bluetooth support in qemu-doc.
balrog [Sun, 9 Nov 2008 02:24:54 +0000 (02:24 +0000)]
Document bluetooth support in qemu-doc.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5654 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoAdd qemu_strndup: qemu_strdup with length limit.
balrog [Sun, 9 Nov 2008 00:28:40 +0000 (00:28 +0000)]
Add qemu_strndup: qemu_strdup with length limit.

Also optimise qemu_strdup by using memcpy - using pstrcpy is usually
suboptimal.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5653 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoAdd the -bt switch for setting up bluetooth stuff.
balrog [Sun, 9 Nov 2008 00:04:26 +0000 (00:04 +0000)]
Add the -bt switch for setting up bluetooth stuff.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5652 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoRevert r5532, r5536 and a piece of r5531.
balrog [Sat, 8 Nov 2008 23:57:26 +0000 (23:57 +0000)]
Revert r5532, r5536 and a piece of r5531.

The use of strncat and strndup was correct, pstrcpy and pstrdup wasn't.
I'll try to restore building on non-gnu OSes in a later commit.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5651 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoUse an option rom instead of boot sector for -kernel
aliguori [Sat, 8 Nov 2008 16:27:07 +0000 (16:27 +0000)]
Use an option rom instead of boot sector for -kernel

Generate an option rom instead of using a hijacked boot sector for kernel
booting.  This just requires adding a small option ROM header and a few more
instructions to the boot sector to take over the int19 vector and run our
boot code.

A disk is no longer needed when using -kernel on x86.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5650 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-alpha: fix the return value of stl_c/stq_c
aurel32 [Sat, 8 Nov 2008 09:10:39 +0000 (09:10 +0000)]
target-alpha: fix the return value of stl_c/stq_c

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5649 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-ppc: fix tcg fatal error on i386 host
aurel32 [Sat, 8 Nov 2008 08:57:45 +0000 (08:57 +0000)]
target-ppc: fix tcg fatal error on i386 host

It looks like the i386 runs out of registers for allocation due
to too many global registers allocated by the ppc target.

Here is a quick and dirty fix that seems to solve the problem.
This should be considered as temporary.

Signed-off-by: Laurent Desnogues <laurent.desnogues@gmail.com
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5648 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoUse the right format string to printf sector num with DEBUG_IDE.
balrog [Fri, 7 Nov 2008 23:05:14 +0000 (23:05 +0000)]
Use the right format string to printf sector num with DEBUG_IDE.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5647 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoFix some build issues for BSD.
blueswir1 [Fri, 7 Nov 2008 16:55:48 +0000 (16:55 +0000)]
Fix some build issues for BSD.

Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5646 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-alpha: fix locked loads/stores
aurel32 [Fri, 7 Nov 2008 14:00:24 +0000 (14:00 +0000)]
target-alpha: fix locked loads/stores

Fix reading of cpu_lock in gen_qemu_stql_c, original patch from Laurent
Desnogues.

A new flag was added to gen_store_mem to allocate local temps instead
of temps;  this flag should be set when the tcg_gen_qemu_store callback
uses brcond before using the temps or else liveness analysis will get
rid of the temps.

This also adds lock printing in cpu_dump_state which can help
debug.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5645 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-ppc: fix flags computation for tcg_gen_qemu_st
aurel32 [Fri, 7 Nov 2008 13:48:25 +0000 (13:48 +0000)]
target-ppc: fix flags computation for tcg_gen_qemu_st

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5644 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoFix interrupt exclusion via SSTEP_NOIRQ
malc [Thu, 6 Nov 2008 18:54:46 +0000 (18:54 +0000)]
Fix interrupt exclusion via SSTEP_NOIRQ

Commit #5620 revealed an issue of the SSTEP_NOIRQ masking that was
applied on all interrupt sources (including internal ones) when single
stepping through the guest. Due to that commit, we now ended up in an
infinite loop when CPU_INTERRUPT_EXIT was pending on SSTEP resume. That
was due to #5620 eating all TBs while CPU_INTERRUPT_EXIT is pending, but
SSTEP_NOIRQ preventing CPU_INTERRUPT_EXIT to be processed.

What SSTEP_NOIRQ should actually do is to block the delivery of all
external, guest visible interrupts. With the fix below applied, single
stepping now works again.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5643 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoUser qemu profiling
aurel32 [Thu, 6 Nov 2008 16:15:18 +0000 (16:15 +0000)]
User qemu profiling

- Makefile.target:  re-enable profiling for user qemu.  It seems
  profiling was (accidently?) removed by commit 3937

- syscall.c:
    * add an include to get _mcleanup prototype
    * add a call to _mcleanup for exit_group in a way
      similar to what is done for exit

(Laurent Desnogues)

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5642 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoRemove unused reg_T2 definition
aurel32 [Thu, 6 Nov 2008 16:15:08 +0000 (16:15 +0000)]
Remove unused reg_T2 definition

No longer used, remove it.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5641 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoMake sure to resume the monitor only after flushing out outstanding
aliguori [Thu, 6 Nov 2008 15:30:22 +0000 (15:30 +0000)]
Make sure to resume the monitor only after flushing out outstanding
network traffic.

This was bug was reported by Chris Lalancette.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5640 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoWin32: Fix warnings
aurel32 [Thu, 6 Nov 2008 09:38:51 +0000 (09:38 +0000)]
Win32: Fix warnings

Attached patch fixes some warnings which only happen on Windows.

Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5639 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-alpha: Fix ret instruction
aurel32 [Thu, 6 Nov 2008 09:16:57 +0000 (09:16 +0000)]
target-alpha: Fix ret instruction

Hopefully pine doesn't corrupt this patch, I've had problems recently.

For an alpha "ret" instruction, of the type
     ret $26

The return was being ignored.  This is because in translate.c
register $26 (the return address) was being over-written with the current
PC before it could be jumped to.  Thus the ret was ignored.

This patch just re-orders things so the return address is processed before
it is over-written with the current PC.

(Vince Weaver)

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5638 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoFix windows build after init_host_timer changes.
aliguori [Wed, 5 Nov 2008 21:22:34 +0000 (21:22 +0000)]
Fix windows build after init_host_timer changes.

host_alarm_timer fires in a separate thread.  The windows build current
uses SetEvent() and WaitEvent() to then notify the main thread.  This is
functionally equivalent to what we're doing in Unix with pipe().  So let's
just #ifdef the pipe() code on Windows since it doesn't build there anyway.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5637 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoRun timers from host alarm timer callback
aliguori [Wed, 5 Nov 2008 21:04:35 +0000 (21:04 +0000)]
Run timers from host alarm timer callback

This further cleans up the main loop getting it a lot closer to what a main
loop should be.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5636 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoUse qemu_set_fd_handler2() to determine when alarm timer fires.
aliguori [Wed, 5 Nov 2008 20:49:37 +0000 (20:49 +0000)]
Use qemu_set_fd_handler2() to determine when alarm timer fires.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5635 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoImprove error reporting in init_timer_alarm
aliguori [Wed, 5 Nov 2008 20:40:18 +0000 (20:40 +0000)]
Improve error reporting in init_timer_alarm

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5634 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoFix alarm_timer race with select - v3 (Jan Kiszka)
aliguori [Wed, 5 Nov 2008 20:29:45 +0000 (20:29 +0000)]
Fix alarm_timer race with select - v3 (Jan Kiszka)

Changing the default IO timeout to 5 s (#5578) made a race visible
between the alarm_timer and select() in main_loop_wait(): If the timer
fired before select was able to block, the full select() timeout could
have been applied instead of returning immediately. Since #5578, this
causes heavy problems to the Musicpal board emulation with stalls up to
5 s, but also with some older Linux guest kernels.

The following patch introduces a pipe that is written to by
host_alarm_handler and select()'ed in main_loop_wait(). This avoids
prevents that select() blocks though a timer has fired and waits for
processing.

Signed-off-by: Jan Kiszka <jan.kiszka@web.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5633 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoSM501 emulation for R2D-SH4
blueswir1 [Wed, 5 Nov 2008 20:24:35 +0000 (20:24 +0000)]
SM501 emulation for R2D-SH4

This patch adds minimum emulation of SM501 multifunction device,
whose main feature is 2D graphics.  It is one of the peripheral
of R2D, the SH4 evaluation board.  We can see TUX printed on the
QEMU console.

Signed-off-by: Shin-ichiro KAWASAKI <kawasaki@juno.dti.ne.jp>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5632 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoAllow KVM to be used on either 32-bit or 64-bit x86
aliguori [Wed, 5 Nov 2008 19:59:25 +0000 (19:59 +0000)]
Allow KVM to be used on either 32-bit or 64-bit x86

Inspired by a patch from Glauber Costa.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5631 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoUse qemu_ram_alloc
blueswir1 [Wed, 5 Nov 2008 19:25:39 +0000 (19:25 +0000)]
Use qemu_ram_alloc

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5630 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoAdd missing files to KVM commit.
aliguori [Wed, 5 Nov 2008 16:29:27 +0000 (16:29 +0000)]
Add missing files to KVM commit.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5629 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoAdd --kerneldir configure argument
aliguori [Wed, 5 Nov 2008 16:28:56 +0000 (16:28 +0000)]
Add --kerneldir configure argument

This allows a user to override the default search path and also makes cross
compilation work a bit nicer wrt KVM detection.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5628 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoAdd KVM support to QEMU
aliguori [Wed, 5 Nov 2008 16:04:33 +0000 (16:04 +0000)]
Add KVM support to QEMU

This patch adds very basic KVM support.  KVM is a kernel module for Linux that
allows userspace programs to make use of hardware virtualization support.  It
current supports x86 hardware virtualization using Intel VT-x or AMD-V.  It
also supports IA64 VT-i, PPC 440, and S390.

This patch only implements the bare minimum support to get a guest booting.  It
has very little impact the rest of QEMU and attempts to integrate nicely with
the rest of QEMU.

Even though this implementation is basic, it is significantly faster than TCG.
Booting and shutting down a Linux guest:

w/TCG:  1:32.36 elapsed  84% CPU

w/KVM:  0:31.14 elapsed  59% CPU

Right now, KVM is disabled by default and must be explicitly enabled with
 -enable-kvm.  We can enable it by default later when we have had better
testing.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5627 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoSplit CPUID from op_helper
aliguori [Wed, 5 Nov 2008 15:34:06 +0000 (15:34 +0000)]
Split CPUID from op_helper

KVM needs to call CPUID from outside of the TCG code.  This patch
splits out the CPUID logic into a separate helper that both the op
helper and KVM can call.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5626 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoAdd additional CPU flag definitions
aliguori [Wed, 5 Nov 2008 15:28:47 +0000 (15:28 +0000)]
Add additional CPU flag definitions

Some x86 CPU definitions that KVM needs

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5625 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoETRAX-FS: Make etraxfs_dmac_run local.
edgar_igl [Tue, 4 Nov 2008 20:29:29 +0000 (20:29 +0000)]
ETRAX-FS: Make etraxfs_dmac_run local.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5624 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoSet default audio timer period to a sane value (otherwise qemu becomes unusable if...
malc [Tue, 4 Nov 2008 19:15:37 +0000 (19:15 +0000)]
Set default audio timer period to a sane value (otherwise qemu becomes unusable if -icount N is specified)

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5623 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-mips: use the new rotr/rotri instructions
aurel32 [Tue, 4 Nov 2008 19:13:47 +0000 (19:13 +0000)]
target-mips: use the new rotr/rotri instructions

Acked-by: Thiemo Seufer <ths@networkno.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5622 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoETRAX-FS: Fix DMA warnings.
edgar_igl [Tue, 4 Nov 2008 19:02:00 +0000 (19:02 +0000)]
ETRAX-FS: Fix DMA warnings.

Signed-off-by: Jan Kiszka <jan.kiszka@web.de>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5621 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoAdd safety net against potential infinite loop
malc [Tue, 4 Nov 2008 14:18:13 +0000 (14:18 +0000)]
Add safety net against potential infinite loop

cpu_interrupt might be called while translating the TB, but before it
is linked into a potentially infinite loop and becomes env->current_tb.

Currently this can (and does) cause huge problems only when using
dyntick clock, with other (periodic) clocks host_alarm_handler will
eventually be executed resulting in a call to cpu_interrupt which will
reset the recursion of running TB and the damage is "only" latency.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5620 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoMention output overlaps.
pbrook [Tue, 4 Nov 2008 13:17:17 +0000 (13:17 +0000)]
Mention output overlaps.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5619 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoFix ARM default NaN.
pbrook [Tue, 4 Nov 2008 12:33:21 +0000 (12:33 +0000)]
Fix ARM default NaN.

Signed-off-by: Paul Brook <paul@codesourcery.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5618 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotc6393xb: non-accelerated FB support (Dmitry Baryshkov).
balrog [Tue, 4 Nov 2008 09:04:41 +0000 (09:04 +0000)]
tc6393xb: non-accelerated FB support (Dmitry Baryshkov).

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5617 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoTosa: dummy lcd support (Dmitry Baryshkov).
balrog [Tue, 4 Nov 2008 08:54:23 +0000 (08:54 +0000)]
Tosa: dummy lcd support (Dmitry Baryshkov).

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5616 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoscoop: GPRR reports the state of GPIO lines (Dmitry Baryshkov).
balrog [Tue, 4 Nov 2008 08:49:17 +0000 (08:49 +0000)]
scoop: GPRR reports the state of GPIO lines (Dmitry Baryshkov).

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5615 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoTosa: disable pxafb as it's not used on tosa (Dmitry Baryshkov).
balrog [Tue, 4 Nov 2008 08:47:06 +0000 (08:47 +0000)]
Tosa: disable pxafb as it's not used on tosa (Dmitry Baryshkov).

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5614 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoTosa: provide correct IRQ to tc6393xb init (Dmitry Baryshkov).
balrog [Tue, 4 Nov 2008 08:45:49 +0000 (08:45 +0000)]
Tosa: provide correct IRQ to tc6393xb init (Dmitry Baryshkov).

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5613 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoTosa: emulate LEDs (Dmitry Baryshkov).
balrog [Tue, 4 Nov 2008 08:43:54 +0000 (08:43 +0000)]
Tosa: emulate LEDs (Dmitry Baryshkov).

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5612 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotc6393xb: initial support for nand control (Dmitry Baryshkov).
balrog [Tue, 4 Nov 2008 08:42:00 +0000 (08:42 +0000)]
tc6393xb: initial support for nand control (Dmitry Baryshkov).

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5611 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoVFP fnmsc negative zero fix.
pbrook [Mon, 3 Nov 2008 19:09:29 +0000 (19:09 +0000)]
VFP fnmsc negative zero fix.

Signed-off-by: Paul Brook <paul@codesourcery.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5610 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoFix rotri_i64 typo.
pbrook [Mon, 3 Nov 2008 13:30:50 +0000 (13:30 +0000)]
Fix rotri_i64 typo.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5609 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-ppc: use the new rotr/rotri instructions
aurel32 [Mon, 3 Nov 2008 07:08:44 +0000 (07:08 +0000)]
target-ppc: use the new rotr/rotri instructions

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5608 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotcg-ops.h: add rotl/rotli and rotr/rotri TCG instructions
aurel32 [Mon, 3 Nov 2008 07:08:36 +0000 (07:08 +0000)]
tcg-ops.h: add rotl/rotli and rotr/rotri TCG instructions

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5607 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotcg-op.h: reorder _i64 instructions common to 32- and 64-bit targets
aurel32 [Mon, 3 Nov 2008 07:08:26 +0000 (07:08 +0000)]
tcg-op.h: reorder _i64 instructions common to 32- and 64-bit targets

Use the same order as the _i32 version (pure code move). Suggested by
Laurent Laurent Desnogues.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5606 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoFix RGBT 5:5:5 drawing on pxa2xx lcd (Lars Munch)
balrog [Mon, 3 Nov 2008 01:08:14 +0000 (01:08 +0000)]
Fix RGBT 5:5:5 drawing on pxa2xx lcd (Lars Munch)

This patch fixes the misinterpretaion of the transparency bit for
RGBT 5:5:5 mode on pxa2xx LCDC.

Signed-off-by: Lars Munch <lars@segv.dk>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5605 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoMore realistic max_cpus
blueswir1 [Sun, 2 Nov 2008 16:51:02 +0000 (16:51 +0000)]
More realistic max_cpus

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5604 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoFix loading of unstripped ELF PROM image
blueswir1 [Sun, 2 Nov 2008 14:44:35 +0000 (14:44 +0000)]
Fix loading of unstripped ELF PROM image

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5603 c046a42c-6fe2-441c-8c8c-71466251a162

16 years ago64-bit target subfi fix.
pbrook [Sun, 2 Nov 2008 13:26:16 +0000 (13:26 +0000)]
64-bit target subfi fix.

Signed-off-by: Paul Brook <paul@codesourcery.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5602 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoHalt the CPU using a qemu_irq
blueswir1 [Sun, 2 Nov 2008 10:51:05 +0000 (10:51 +0000)]
Halt the CPU using a qemu_irq

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5601 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-ppc: use the new subfi wrapper
aurel32 [Sun, 2 Nov 2008 08:23:14 +0000 (08:23 +0000)]
target-ppc: use the new subfi wrapper

(...and fix rldnm)

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5600 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotcg-ops.h: add a subfi wrapper
aurel32 [Sun, 2 Nov 2008 08:23:04 +0000 (08:23 +0000)]
tcg-ops.h: add a subfi wrapper

Add a subfi (subtract from immediate) wrapper, useful for the PPC target.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5599 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotcg-ops.h: _i64 TCG immediate instructions cleanup
aurel32 [Sun, 2 Nov 2008 08:22:54 +0000 (08:22 +0000)]
tcg-ops.h: _i64 TCG immediate instructions cleanup

Move addi_i64, muli_i64 and subi_i64 out of #if TCG_TARGET_REG_BITS
as both implementations are strictly identical. Use the same
optimisation (ie when imm == 0) for addi_i64 and subi_64 than the
32-bit version.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5598 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-ppc: simplify slw, srw, sld, srd
aurel32 [Sun, 2 Nov 2008 08:22:45 +0000 (08:22 +0000)]
target-ppc: simplify slw, srw, sld, srd

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5597 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-ppc: be more consistent with temp variables naming
aurel32 [Sun, 2 Nov 2008 08:22:34 +0000 (08:22 +0000)]
target-ppc: be more consistent with temp variables naming

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5596 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-ppc: fix srw on 64-bit targets
aurel32 [Sun, 2 Nov 2008 08:22:16 +0000 (08:22 +0000)]
target-ppc: fix srw on 64-bit targets

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5595 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoAvoid ld flag --warn-common on Solaris
blueswir1 [Sat, 1 Nov 2008 14:50:20 +0000 (14:50 +0000)]
Avoid ld flag --warn-common on Solaris

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5594 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoFix TCGv size mismatches
blueswir1 [Sat, 1 Nov 2008 13:44:52 +0000 (13:44 +0000)]
Fix TCGv size mismatches

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5593 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-ppc: optimize popcntb
aurel32 [Sat, 1 Nov 2008 00:54:33 +0000 (00:54 +0000)]
target-ppc: optimize popcntb

Suggested by Andrzej Zaborowski.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5592 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-ppc: convert 405 MAC instructions to TCG
aurel32 [Sat, 1 Nov 2008 00:54:23 +0000 (00:54 +0000)]
target-ppc: convert 405 MAC instructions to TCG

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5591 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-ppc: convert arithmetic functions to TCG
aurel32 [Sat, 1 Nov 2008 00:54:12 +0000 (00:54 +0000)]
target-ppc: convert arithmetic functions to TCG

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5590 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-ppc: xer access prototypes no more used & implemented
aurel32 [Sat, 1 Nov 2008 00:53:59 +0000 (00:53 +0000)]
target-ppc: xer access prototypes no more used & implemented

Revision 5500 of the qemu repository removed all code using
ppc_load_xer & ppc_store_xer as well as their implementation.

Another patch fixes it's usage in kvm-userspace for powerpc, but I think
that header can now be cleaned up, therefore this patch to qemu-devel.

Signed-off-by: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5589 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-ppc: fix XER accesses on 64-bit targets
aurel32 [Sat, 1 Nov 2008 00:53:48 +0000 (00:53 +0000)]
target-ppc: fix XER accesses on 64-bit targets

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5588 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoCVE-2008-4539: fix a heap overflow in Cirrus emulation
aurel32 [Sat, 1 Nov 2008 00:53:39 +0000 (00:53 +0000)]
CVE-2008-4539: fix a heap overflow in Cirrus emulation

The code in hw/cirrus_vga.c has changed a lot between CVE-2007-1320 has
been announced and the patch has been applied. As a consequence it has
wrongly applied and QEMU is still vulnerable to this bug if using VNC.

(noticed by Jan Niehusmann)

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5587 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agotarget-cris: access to TCG variables through GET_TCGV()
aurel32 [Sat, 1 Nov 2008 00:53:30 +0000 (00:53 +0000)]
target-cris: access to TCG variables through GET_TCGV()

Fix build with DEBUG_TCGV enabled.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5586 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoMalta & OMAP: add a name to char devices
aurel32 [Sat, 1 Nov 2008 00:53:19 +0000 (00:53 +0000)]
Malta & OMAP: add a name to char devices

(fixes regression introduced by r5575)

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5585 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoqemu-char: include hw/baum.h
aurel32 [Sat, 1 Nov 2008 00:53:09 +0000 (00:53 +0000)]
qemu-char: include hw/baum.h

Fix a warning introduced in r5580 when brlapi is enabled.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5584 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoRemove dumb_refresh
aliguori [Fri, 31 Oct 2008 20:34:40 +0000 (20:34 +0000)]
Remove dumb_refresh

It is safe not to set dpy_refresh and that's used to indicate that the display
doesn't need updates.  This saves us two wakeups per second.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5583 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoRemove extraneous inline keyword.
aliguori [Fri, 31 Oct 2008 20:00:18 +0000 (20:00 +0000)]
Remove extraneous inline keyword.

Spotted by Blue Swirl.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5582 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoMove network redirection code out of vl.c and into net.c
aliguori [Fri, 31 Oct 2008 19:10:00 +0000 (19:10 +0000)]
Move network redirection code out of vl.c and into net.c

Mostly code motion.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5581 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoMove CharDriverState code out of vl.c
aliguori [Fri, 31 Oct 2008 18:49:55 +0000 (18:49 +0000)]
Move CharDriverState code out of vl.c

The motivating goal behind this is to allow other tools to use the CharDriver
code.  This patch is pure code motion except for the Makefile changes and the
copyright/header in qemu-char.c.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5580 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoMove some declarations around in the QEMU CharDriver code
aliguori [Fri, 31 Oct 2008 18:44:40 +0000 (18:44 +0000)]
Move some declarations around in the QEMU CharDriver code

The goal of this series is to move the CharDriverState code out of vl.c and
into its own file, qemu-char.c.  This patch moves around some declarations so
the next patch can be pure code motion.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5579 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoIncrease default IO timeout from 10ms to 5s
aliguori [Fri, 31 Oct 2008 18:40:25 +0000 (18:40 +0000)]
Increase default IO timeout from 10ms to 5s

With the recent changes to the main loop, we no longer have unconditional
polling.  This means we can now sleep in select() for much longer than we
previously did.  This patch increases our select() sleep time from 10ms to 5s
which is effectively unlimited since we're going to wake up sooner than that
in almost all circumstances.

With this patch, I see the number of wake-ups with an idle dynamic ticks guest
drop from 80 per second to about 15 times per second.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5578 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoMain loop fixes/cleanup
aliguori [Fri, 31 Oct 2008 18:07:17 +0000 (18:07 +0000)]
Main loop fixes/cleanup

Tidy up win32 main loop bits, allow timeout >= 1s, and force timeout to 0 if
there is a pending bottom half.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5577 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoClarify qemu_bh_schedule_idle() usage
aliguori [Fri, 31 Oct 2008 17:42:00 +0000 (17:42 +0000)]
Clarify qemu_bh_schedule_idle() usage

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5576 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoImplement "info chardev" command. (Gerd Hoffmann)
aliguori [Fri, 31 Oct 2008 17:31:29 +0000 (17:31 +0000)]
Implement "info chardev" command. (Gerd Hoffmann)

This patch makes qemu keep track of the character devices in use and
implements a "info chardev" monitor command to print a list.

qemu_chr_open() sticks the devices into a linked list now.  It got a new
argument (label), so there is a name for each device.  It also assigns a
filename to each character device.  By default it just copyes the
filename passed in.  Individual drivers can fill in something else
though.  qemu_chr_open_pty() sets the filename to name of the pseudo tty
allocated.

Output looks like this:

  (qemu) info chardev
  monitor: filename=unix:/tmp/run.sh-26827/monitor,server,nowait
  serial0: filename=unix:/tmp/run.sh-26827/console,server
  serial1: filename=pty:/dev/pts/5
  parallel0: filename=vc:640x480

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5575 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agofix bdrv_aio_read API breakage in qcow2 (Andrea Arcangeli)
aliguori [Fri, 31 Oct 2008 17:28:00 +0000 (17:28 +0000)]
fix bdrv_aio_read API breakage in qcow2 (Andrea Arcangeli)

I noticed the qemu_aio_flush was doing nothing at all. And a flood of
cmd_writeb commands leading to a noop-invocation of qemu_aio_flush
were executed.

In short all 'memset;goto redo' places must be fixed to use the bh and
not to call the callback in the context of bdrv_aio_read or the
bdrv_aio_read model falls apart. Reading from qcow2 holes is possible
with phyisical readahead (kind of breada in linux buffer cache).

This is needed at least for scsi, ide is lucky (or it has been
band-aided against this API breakage by fixing the symptom and not the
real bug).

Same bug exists in qcow of course, can be fixed later as it's less
urgent.

Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5574 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoMake DMA bottom-half driven (v2)
aliguori [Fri, 31 Oct 2008 17:25:56 +0000 (17:25 +0000)]
Make DMA bottom-half driven (v2)

The current DMA routines are driven by a call in main_loop_wait() after every
select.

This patch converts the DMA code to be driven by a constantly rescheduled
bottom half.  The advantage of using a scheduled bottom half is that we can
stop scheduling the bottom half when there no DMA channels are runnable.  This
means we can potentially detect this case and sleep longer in the main loop.

The only two architectures implementing DMA_run() are cris and i386.  For cris,
I converted it to a simple repeating bottom half.  I've only compile tested
this as cris does not seem to work on a 64-bit host.  It should be functionally
identical to the previous implementation so I expect it to work.

For x86, I've made sure to only fire the DMA bottom half if there is a DMA
channel that is runnable.  The effect of this is that unless you're using sb16
or a floppy disk, the DMA bottom half never fires.

You probably should test this malc.  My own benchmarks actually show slight
improvement by it's possible the change in timing could affect your demos.

Since v1, I've changed the code to use a BH instead of a timer.  cris at least
seems to depend on faster than 10ms polling.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5573 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoMake bottom halves more robust
aliguori [Fri, 31 Oct 2008 17:24:21 +0000 (17:24 +0000)]
Make bottom halves more robust

Bottom halves are supposed to not complete until the next iteration of the main
loop.  This is very important to ensure that guests can not cause stack
overflows in the block driver code.  Right now, if you attempt to schedule a
bottom half within a bottom half callback, you will enter an infinite loop.

This patch uses the same logic that we use for the IOHandler loop to make the
bottom half processing robust in list manipulation while in a callback.

This patch also introduces idle scheduling for bottom halves.  qemu_bh_poll()
returns an indication of whether any bottom halves were successfully executed.
qemu_aio_wait() uses this to immediately return if a bottom half was executed
instead of waiting for a completion notification.

qemu_bh_schedule_idle() works around this by not reporting the callback has
run in the qemu_bh_poll loop.  qemu_aio_wait() probably needs some refactoring
but that would require a larger code audit.  idle scheduling seems like a good
compromise.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5572 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoUse qemu_gettimeofday.
pbrook [Wed, 29 Oct 2008 14:37:18 +0000 (14:37 +0000)]
Use qemu_gettimeofday.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5571 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoFix restore of older snapshots for target-i386 on big endian hosts
aliguori [Wed, 29 Oct 2008 14:16:31 +0000 (14:16 +0000)]
Fix restore of older snapshots for target-i386 on big endian hosts

A target_ulong may be 64-bit.  Passing it to a function expecting a 32-bit
pointer is wrong and unfortunately happens to work for x86.  It won't work on
big endian hosts though.  Change the code to work properly on all hosts.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5570 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoUse locally defined structure.
pbrook [Tue, 28 Oct 2008 18:22:59 +0000 (18:22 +0000)]
Use locally defined structure.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5569 c046a42c-6fe2-441c-8c8c-71466251a162

16 years agoSun4c cleanups (Robert Reif)
blueswir1 [Tue, 28 Oct 2008 17:55:32 +0000 (17:55 +0000)]
Sun4c cleanups (Robert Reif)

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5568 c046a42c-6fe2-441c-8c8c-71466251a162