summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* slirp: remove unused function u_sleepBlue Swirl2012-11-102-15/+0
| | | | Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* sun4c: remove unused functionsBlue Swirl2012-11-102-27/+0
| | | | Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* m48t59: remove unused m48t59_set_addrBlue Swirl2012-11-102-8/+0
| | | | Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* tests/tcg: new test for i386 FPREM and FPREM1Catalin Patulea2012-11-102-0/+362
| | | | | | | | | | | | | This is setting the stage for a cleanup of FPREM and FPREM1 helpers while being sure that they behave same as bare metal. The test constructs operands using combinations of corner cases for the floating-point bitfields and prints operands, result and FPU status word for FPREM and FPREM1. The outputs can then be compared between bare metal and QEMU. The 'run-test-i386-fprem' make target does just that. Signed-off-by: Catalin Patulea <catalinp@google.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* memory: Don't dump disabled regionsJan Kiszka2012-11-101-1/+1
| | | | | | | This makes "info mtree" output readable again. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* memory: Reintroduce dirty flag to optimize changes on disabled regionsJan Kiszka2012-11-101-2/+13
| | | | | | | | | Cirrus is triggering this, e.g. during Win2k boot: Changes only on disabled regions require no topology update when transaction depth drops to 0 again. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* qemu-timer: Fix compilation for non-POSIX hostsStefan Weil2012-11-101-0/+2
| | | | | | | | A compiler warning is caused by the unused local function reinit_timers on non-POSIX hosts. Include that function only for POSIX hosts. Signed-off-by: Stefan Weil <sw@weilnetz.de> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* vmware_vga: Add back some info in local state partially reverting aa32b38cBALATON Zoltan2012-11-101-9/+21
| | | | | | | | | | | Keep saving display surface parameters at init and using these cached values instead of getting them when needed. Not sure why this is needed (maybe due to the interaction with the vga device) but not doing this broke the Xorg vmware driver at least. Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Tested-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* kvmvapic: Fix TB invalidation after instruction patchingJan Kiszka2012-11-101-4/+16
| | | | | | | | | | | | | | | Since 0b57e287, cpu_memory_rw_debug already triggers a TB invalidation. As it doesn't (and cannot) set is_cpu_write_access=1 but "consumes" the currently executed TB, the tb_invalidate_phys_page_range call from patch_instruction didn't work anymore. Fix this by open-coding the required bits to restore the CPU state from the current TB position before patching and resume execution on the patched instruction afterward. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Tested-by: Hervé Poussineau <hpoussin@reactos.org> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* microblaze: translate.c: Fix swaph decodingPeter Crosthwaite2012-11-081-1/+1
| | | | | | | | | The swaph instruction was not decoding correctly. s/1e1/1e2 on the 9 LSBs on the instruction decode. Reported-by: David Holsgrove <david.holsgrove@xilinx.com> Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
* tools: initialize main loop before block layerPaolo Bonzini2012-11-062-4/+2
| | | | | | | | | Tools were broken because they initialized the block layer while qemu_aio_context was still NULL. Reported-by: malc <av1474@comtv.ru> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: malc <av1474@comtv.ru>
* tcg/ppc32: Use trampolines to trim the code size for mmu slow path accessorsmalc2012-11-062-9/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | mmu access looks something like: <check tlb> if miss goto slow_path <fast path> done: ... ; end of the TB slow_path: <pre process> mr r3, r27 ; move areg0 to r3 ; (r3 holds the first argument for all the PPC32 ABIs) <call mmu_helper> b $+8 .long done <post process> b done On ppc32 <call mmu_helper> is: (SysV and Darwin) mmu_helper is most likely not within direct branching distance from the call site, necessitating a. moving 32 bit offset of mmu_helper into a GPR ; 8 bytes b. moving GPR to CTR/LR ; 4 bytes c. (finally) branching to CTR/LR ; 4 bytes r3 setting - 4 bytes call - 16 bytes dummy jump over retaddr - 4 bytes embedded retaddr - 4 bytes Total overhead - 28 bytes (PowerOpen (AIX)) a. moving 32 bit offset of mmu_helper's TOC into a GPR1 ; 8 bytes b. loading 32 bit function pointer into GPR2 ; 4 bytes c. moving GPR2 to CTR/LR ; 4 bytes d. loading 32 bit small area pointer into R2 ; 4 bytes e. (finally) branching to CTR/LR ; 4 bytes r3 setting - 4 bytes call - 24 bytes dummy jump over retaddr - 4 bytes embedded retaddr - 4 bytes Total overhead - 36 bytes Following is done to trim the code size of slow path sections: In tcg_target_qemu_prologue trampolines are emitted that look like this: trampoline: mfspr r3, LR addi r3, 4 mtspr LR, r3 ; fixup LR to point over embedded retaddr mr r3, r27 <jump mmu_helper> ; tail call of sorts And slow path becomes: slow_path: <pre process> <call trampoline> .long done <post process> b done call - 4 bytes (trampoline is within code gen buffer and most likely accessible via direct branch) embedded retaddr - 4 bytes Total overhead - 8 bytes In the end the icache pressure is decreased by 20/28 bytes at the cost of an extra jump to trampoline and adjusting LR (to skip over embedded retaddr) once inside. Signed-off-by: malc <av1474@comtv.ru>
* target-mips: use ULL for 64 bit constantsBlue Swirl2012-11-051-2/+2
| | | | | | | | | | | | Fix build on a 32 bit host: CC mips-softmmu/target-mips/dsp_helper.o /src/qemu/target-mips/dsp_helper.c: In function 'helper_dextr_rs_w': /src/qemu/target-mips/dsp_helper.c:3556: error: integer constant is too large for 'long' type /src/qemu/target-mips/dsp_helper.c: In function 'helper_extr_s_h': /src/qemu/target-mips/dsp_helper.c:3656: error: integer constant is too large for 'long' type Signed-off-by: Blue Swirl <blauwirbel@gmail.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
* build: pthread_atfork() needs include of pthread.hAnthony Liguori2012-11-041-0/+3
| | | | | Cc: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* tcg/ppc: ld/st optimizationmalc2012-11-033-196/+262
| | | | Signed-off-by: malc <av1474@comtv.ru>
* vmware_vga: Allow simple drivers to work without using the fifoBALATON Zoltan2012-11-033-14/+23
| | | | | | | | | | | Postpone stopping the dirty log to the point where the command fifo is configured to allow drivers which don't use the fifo to work too. (Without this the picture rendered into the vram never got to the screen and the DIRECT_VRAM option meant to support this case was removed a year ago.) Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* vmware_vga: Return a value for FB_SIZE before the device is enabledBALATON Zoltan2012-11-031-10/+9
| | | | | | | | | | | According to the documentation drivers using this device should read FB_SIZE before enabling the device to know what memory to map. This would not work if we return 0 before enabled. The docs also mention reading SVGA_REG_DEPTH but not writing it. (Only SVGA_REG_BITS_PER_PIXEL can be written but we don't really support that either.) Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* vmware_vga: Remove duplicated info from local stateBALATON Zoltan2012-11-032-94/+85
| | | | | | | | Removed info from vmsvga_state that is available from elsewhere and thus was duplicated here unnecessarily. Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* vmware_vga: Coding style cleanupBALATON Zoltan2012-11-031-124/+150
| | | | | | | Fix coding style as suggested by checkpatch.pl Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* Merge branch 'trivial-patches' of git://github.com/stefanha/qemuBlue Swirl2012-11-0321-96/+66
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'trivial-patches' of git://github.com/stefanha/qemu: pc: Drop redundant test for ROM memory region exec: make some functions static target-ppc: make some functions static ppc: add missing static vnc: add missing static vl.c: add missing static target-sparc: make do_unaligned_access static m68k: Return semihosting errno values correctly cadence_uart: More debug information Conflicts: target-m68k/m68k-semi.c
| * pc: Drop redundant test for ROM memory regionJan Kiszka2012-11-011-1/+1
| | | | | | | | | | | | | | Just a few lines above, we already initialize rom_memory accordingly. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
| * exec: make some functions staticBlue Swirl2012-11-014-15/+9
| | | | | | | | | | Signed-off-by: Blue Swirl <blauwirbel@gmail.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
| * target-ppc: make some functions staticBlue Swirl2012-11-012-11/+6
| | | | | | | | | | | | Signed-off-by: Blue Swirl <blauwirbel@gmail.com> Acked-by: Alexander Graf <agraf@suse.de> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
| * ppc: add missing staticBlue Swirl2012-11-015-26/+13
| | | | | | | | | | | | | | | | Add missing 'static' qualifiers. Signed-off-by: Blue Swirl <blauwirbel@gmail.com> Acked-by: Alexander Graf <agraf@suse.de> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
| * vnc: add missing staticBlue Swirl2012-11-015-20/+12
| | | | | | | | | | | | | | Add missing 'static' qualifiers. Signed-off-by: Blue Swirl <blauwirbel@gmail.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
| * vl.c: add missing staticBlue Swirl2012-11-012-14/+12
| | | | | | | | | | | | | | Add missing 'static' qualifiers. Signed-off-by: Blue Swirl <blauwirbel@gmail.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
| * target-sparc: make do_unaligned_access staticBlue Swirl2012-11-012-5/+6
| | | | | | | | | | Signed-off-by: Blue Swirl <blauwirbel@gmail.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
| * m68k: Return semihosting errno values correctlyMeador Inge2012-11-011-1/+1
| | | | | | | | | | | | | | | | | | | | Fixing a simple typo, s/errno/err/, that caused the error status from GDB semihosted system calls to be returned incorrectly. Signed-off-by: Meador Inge <meadori@codesourcery.com> Reviewed-by: Andreas Färber <afaerber@suse.de> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
| * cadence_uart: More debug informationPeter Crosthwaite2012-11-011-4/+7
| | | | | | | | | | | | | | | | Add more helpful debug information to the cadence UART. Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
* | tcg: Optimize qemu_ld/st by generating slow paths at the end of a blockYeongkyoon Lee2012-11-033-126/+320
| | | | | | | | | | | | | | | | | | Add optimized TCG qemu_ld/st generation which locates the code of TLB miss cases at the end of a block after generating the other IRs. Currently, this optimization supports only i386 and x86_64 hosts. Signed-off-by: Yeongkyoon Lee <yeongkyoon.lee@samsung.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* | tcg: Add extended GETPC mechanism for MMU helpers with ldst optimizationYeongkyoon Lee2012-11-033-8/+55
| | | | | | | | | | | | | | | | | | Add GETPC_EXT which is used by MMU helpers to selectively calculate the code address of accessing guest memory when called from a qemu_ld/st optimized code or a C function. Currently, it supports only i386 and x86-64 hosts. Signed-off-by: Yeongkyoon Lee <yeongkyoon.lee@samsung.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* | configure: Add CONFIG_QEMU_LDST_OPTIMIZATION for TCG qemu_ld/st optimizationYeongkyoon Lee2012-11-031-0/+6
| | | | | | | | | | | | | | | | Enable CONFIG_QEMU_LDST_OPTIMIZATION for TCG qemu_ld/st optimization only when a host is i386 or x86_64. Signed-off-by: Yeongkyoon Lee <yeongkyoon.lee@samsung.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* | target-m68k/m68k-semi.c: Log when put_user for returning values failsPeter Maydell2012-11-031-16/+31
| | | | | | | | | | | | | | | | | | Abstract out the use of put_user for returning semihosting call results, so that we can log when a guest erroneously attempts a semihosting call with an unwritable argument block. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* | target-m68k/m68k-semi: Handle get_user failurePeter Maydell2012-11-031-51/+93
| | | | | | | | | | | | | | | | Handle failure of get_user accessing the semihosting argument block, rather than simply ignoring the failures. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* | m68k: Return semihosting errno values correctlyMeador Inge2012-11-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | Fixing a simple typo, s/errno/err/, that caused the error status from GDB semihosted system calls to be returned incorrectly. Signed-off-by: Meador Inge <meadori@codesourcery.com> Reviewed-by: Andreas Färber <afaerber@suse.de> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* | vl: delay thread initialization after daemonizationPaolo Bonzini2012-11-022-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit ac4119c (chardev: Use timer instead of bottom-half to postpone open event, 2012-10-12) moved the alarm timer initialization to an earlier point but failed to consider that it depends on qemu_init_main_loop. Later, commit 1c53786 (vl: init main loop earlier, 2012-10-30) fixed this, but left -daemonize in two different ways. First, timers need to be reinitialized after forking. Second, the global mutex was being held by the parent, and thus dropped after forking. The first is now fixed using pthread_atfork. For the second part, make sure that the global mutex is not taken before daemonization, and similarly delay qemu_thread_self. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* | vl: unify calls to init_timer_alarmPaolo Bonzini2012-11-022-6/+4
| | | | | | | | | | | | | | init_timer_alarm was being called twice. This is not needed. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* | qemu-timer: reinitialize timers after forkPaolo Bonzini2012-11-021-0/+14
| | | | | | | | | | | | | | | | Timers are not inherited by the child of a fork(2), so just use pthread_atfork to reinstate them after daemonize. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* | semaphore: implement fallback counting semaphores with mutex+condvarPaolo Bonzini2012-11-022-10/+88
| | | | | | | | | | | | | | | | OpenBSD and Darwin do not have sem_timedwait. Implement a fallback for them. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* | compiler: support Darwin weak referencesPaolo Bonzini2012-11-025-48/+71
| | | | | | | | | | | | | | | | | | | | | | Weakrefs only tell you if the symbol was defined elsewhere, so you need a further check at runtime to pick the default definition when needed. This could be automated by the compiler, but it does not do it. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* | Merge remote-tracking branch 'bonzini/migr-coroutine' into stagingAnthony Liguori2012-11-028-154/+215
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> * bonzini/migr-coroutine: migration: move process_incoming_migration to a coroutine migration: handle EAGAIN while reading QEMUFile migration: move qemu_fclose to process_incoming_migration migration: close socket QEMUFile from socket_close migration: xxx_close will only be called once migration: use closesocket, not close migration: use migrate_fd_close in migrate_fd_cleanup migration: clean up server sockets and handlers before invoking process_incoming_migration migration: replace qemu_stdio_fd with qemu_get_fd migration: add qemu_get_fd migration: consolidate QEMUFile methods in a single QEMUFileOps struct migration: unify stdio-based QEMUFile operations
| * | migration: move process_incoming_migration to a coroutinePaolo Bonzini2012-11-021-1/+20
| | | | | | | | | | | | | | | | | | | | | | | | The final part of incoming migration, which now consists of process_incoming_migration for all protocols, is thus made non-blocking. Reviewed-by: Orit Wasserman <owasserm@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
| * | migration: handle EAGAIN while reading QEMUFilePaolo Bonzini2012-11-021-6/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will never happen right now (the assertion would fail). The next patch will set the socket or pipe in non-blocking mode, thus enabling this part of the code. Coroutines can just stop whenever they want with qemu_coroutine_yield. As soon as select tells the main loop that the migration stream is readable, the coroutine is re-entered directly in qemu_get_buffer, where it will read more data and pass it to the loading routines. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
| * | migration: move qemu_fclose to process_incoming_migrationPaolo Bonzini2012-11-025-5/+5
| | | | | | | | | | | | | | | | | | | | | The common suffix is now just process_incoming_migration. Reviewed-by: Orit Wasserman <owasserm@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
| * | migration: close socket QEMUFile from socket_closePaolo Bonzini2012-11-023-0/+5
| | | | | | | | | | | | | | | | | | | | | The common suffix now is process_incoming_migration+qemu_fclose. Reviewed-by: Orit Wasserman <owasserm@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
| * | migration: xxx_close will only be called oncePaolo Bonzini2012-11-024-36/+25
| | | | | | | | | | | | | | | | | | | | | No need to test s->fd again, it is tested in the caller. Reviewed-by: Orit Wasserman <owasserm@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
| * | migration: use closesocket, not closePaolo Bonzini2012-11-021-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | Windows requires this. Migration does not quite work under Windows but let's be uniform across QEMU. Reviewed-by: Orit Wasserman <owasserm@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
| * | migration: use migrate_fd_close in migrate_fd_cleanupPaolo Bonzini2012-11-021-11/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | migrate_fd_cleanup will usually close the file descriptor via buffered_file_close's call to migrate_fd_close. However, in the case of s->file == NULL it is "inlining" migrate_fd_close (almost: there is a direct close() instead of using s->close(s)). To fix the inconsistency and clean up the code, allow multiple calls to migrate_fd_close and use the function in migrate_fd_cleanup. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
| * | migration: clean up server sockets and handlers before invoking ↵Paolo Bonzini2012-11-024-10/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | process_incoming_migration A first step towards making a common "suffix" for all migration protocols, and moving it to process_incoming_migration. Reviewed-by: Orit Wasserman <owasserm@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
| * | migration: replace qemu_stdio_fd with qemu_get_fdPaolo Bonzini2012-11-024-15/+3
| | | | | | | | | | | | | | | Reviewed-by: Orit Wasserman <owasserm@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
OpenPOWER on IntegriCloud