aboutsummaryrefslogtreecommitdiffstats
path: root/hw
Commit message (Collapse)AuthorAgeFilesLines
* [MIPS] Add Goldfish target supportBhanu Chetlapalli2012-06-073-0/+324
| | | | | | | | | | | | | | | | | | | | | | Basic Goldfish support for MIPS. Also, Fix host CPU consumption when guest is idle When the CPU is in wait state, do not wake-up if an interrupt can't be taken. This avoid host CPU running at 100% if a device (e.g. timer) has an interrupt line left enabled. Also factorize code to check if interrupts are enabled in cpu_mips_hw_interrupts_pending(). CPU consumption based on a patch from Edgar E. Iglesias <edgar.iglesias@gmail.com> Change-Id: Ie8371c8d0c9af1e0c8ba4cac419979350de0f5d9 Signed-off-by: yajin <yajin@mips.com.cm> Signed-off-by: Douglas Leung <douglas@mips.com> Signed-off-by: Bhanu Chetlapalli <bhanu@mips.com> Signed-off-by: Chris Dearman <chris@mips.com>
* Merge "Add qemu pipe access with parameter"Andrew Hsieh2012-04-252-2/+61
|\
| * Add qemu pipe access with parameterJiang, Yunhong2012-04-072-2/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The following changes are crucial for GPU H/W acceleration because some graphics applications like games perform very frequent QEMU pipe operations to send GLES commands to the host translator. For each read/write buffer operation, currently QEMU pipe requires five MMIO operations. This causes significant overhead when running with hardware virtualization enabled (e.g. HAXM) because each MMIO causes expensive transition from the guest kernel to the kernel driver, and to the QEMU user space in the end. Among such five MMIO accesses, four of them are required to just set up the parameters for the access, like the buffer address, length etc. By passing a buffer containing such parameters, we need only one MMIO operation to send a GLES command to the host translator. Update the qemu_pipe save version for pipe struct changes. Change-Id: Idf6400f3c4c9c8473311312bb1d8f3ea92d68797 Signed-off-by: Xin, Xiaohui <xiaohui.xin@intel.com> Signed-off-by: Jiang, Yunhong <yunhong.jiang@intel.com> Signed-off-by: Nakajima, Jun <jun.nakajima@intel.com>
* | Merge "[MIPS] Tweak MIPS support to work in Android qemu framework"Andrew Hsieh2012-04-191-1/+1
|\ \
| * | [MIPS] Tweak MIPS support to work in Android qemu frameworkBhanu Chetlapalli2012-01-311-1/+1
| | | | | | | | | | | | | | | Change-Id: Icd617cb91fe87a6f88566dd57b6405b216ca3570 Signed-off-by: Chris Dearman <chris@mips.com>
* | | Merge "[MIPS] Import MIPS target support"Andrew Hsieh2012-04-195-0/+516
|\ \ \ | |/ /
| * | [MIPS] Import MIPS target supportBhanu Chetlapalli2012-01-315-0/+516
| | | | | | | | | | | | | | | | | | | | | | | | From v0.12.5 tag at git://git.sv.gnu.org/qemu.git CommitID: 174f225e9d62e8f3002e274e4f718bd2a967fbf4 Change-Id: I35b49a4319cee4b69cf9da4e5af1f43327e21056 Signed-off-by: Chris Dearman <chris@mips.com>
* | | Merge "[ENDIAN] Fix goldfish fb for bigendian targets"Andrew Hsieh2012-04-191-6/+15
|\ \ \
| * | | [ENDIAN] Fix goldfish fb for bigendian targetsBhanu Chetlapalli2012-01-311-6/+15
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Swap bytes in the display buffer if the host endianess does not match the target endianess. This fixes a problem with the wrong colour being displayed in the text framebuffer console. Not sure if the is the correct place to fix it.. It might be better to have the kernel goldfish framebuffer driver swap the bytes. Change-Id: I8c7ada6e5cb6de7745511f3b83f07f0ac95276af Signed-off-by: Chris Dearman <chris@mips.com>
* | | Fix save restore for nand deviceJiang, Yunhong2012-04-071-1/+3
| |/ |/| | | | | | | | | | | | | | | Fix one issue because some field in nand device is not save/restore Change-Id: I025addf4ddaea8420f6328b5e58c8514604b1719 Signed-off-by: Gao, Fengqian <fengqian.gao@intel.com> Signed-off-by: Jiang, Yunhong <yunhong.jiang@intel.com> Signed-off-by: Nakajima, Jun <jun.nakajiama@intel.com>
* | Refactor HW config to use hw.camera_back, and hw.camera_front properties.Vladimir Chtchetkine2012-03-191-1/+3
| | | | | | | | | | | | | | | | | | | | This is a continuation of an effort to simplify HW config, and make the UI for it clearer. This CL gets rid of multiple camera emulation properties, combining everything into just two properties: - hw.camera_back that controls emulation of a camera facing back, and - hw.camera_front that controls emulation of a camera facing front. Change-Id: Ia114ae4caf2053685cbff00f39088e5b5be2952c
* | Cleanup harware properties.Vladimir Chtchetkine2012-03-191-6/+6
| | | | | | | | | | | | | | 1. Remove unused hw.camera.maxHorizontalPixels, and hw.camera.maxVerticalPixels parameters. 2. Combine hw.touchScreen, and hw.multiTouch under one property: hw.screen Change-Id: I3cdf64f7d7e46486110cbc0769f9d98a61f0bea5
* | Merge "Multi-touch emulation support"Vladimir Chtchetkine2012-03-051-31/+57
|\ \
| * | Multi-touch emulation supportVladimir Chtchetkine2012-03-051-31/+57
| |/ | | | | | | Change-Id: I311dc55fe10f41637775baa330a7c732ff317f51
* | Corrects typo on comment.SeongJae Park2012-03-011-1/+1
|/ | | | | Change-Id: I34e8e71f6ca03d58676ac350d6558fec32e6e448 Signed-off-by: SeongJae Park <sj38.park@gmail.com>
* Fix emulator crash restoring pipes from snapshotJesse Hall2012-01-091-1/+1
| | | | | | | | | The emulator crashes when loading a goldfish pipe from snapshot if it was still in PipeConnection state when saved, since there is no service associated with the pipe. Check for service existence before dereferencing the service pointer. Change-Id: I9093bdf403fd3532e9fb6584b98994d9d4dc686c
* Fix snapshot crashDavid 'Digit' Turner2011-11-083-15/+243
| | | | | | | | | | | | | | | - Add snapshot load/save support to QEMU Pipes This adds the ability to save and load QEMU Pipe connections with snapshots. Note that by default, all loaded pipe client connections are force-fully closed on load. We don't have a good way to save the state of network connections to persistent storage. Properly implements snapshot save / load for qemu pipe clients. Change-Id: Ie5767f8ce40c8341b958cc5844e724dd4fc1ed2b
* Scrap IRQs for x86 system image.Vladimir Chtchetkine2011-10-241-0/+14
| | | | | | | | | | | | This is a temporary fix that enables GoogleTV emulation on tools R15+ The permanent solution would be to increase number of available IRQs from 16 to something more appropriate. For now just: 1. Use IRQ3 for the events device. 2. Decrease number of TTY ports from 4 to 2. These two measures would free up 3 IRQs, so the chances of running out of available IRQs are significantly decreased. Change-Id: Ie788880935d6e15f1f02f61e862c8727c8690b4a
* Fix -wipe-data optionVladimir Chtchetkine2011-10-131-1/+12
| | | | | | | | | Forces overwriting (truncating) of the userimage-qemu.img file on condition that it is being initialized from userimage.img file. If *-qemu file is not truncated the system will pick up on artifacts located behind the overwritten area of the *-qemu.img file. Change-Id: I091dff0069d7049588b11c4654fe134947db101b
* Fix snapshotsVladimir Chtchetkine2011-10-052-2/+1
| | | | Change-Id: Ib3891704ece2cea0c5a80b468b2514e6c4d13216
* Fix IRQ allocation for goldfish devices.Vladimir Chtchetkine2011-09-295-4/+32
| | | | | | | | | There were two issues fixed here: 1. IRQ allocation (for a device) has never been checked on going out of bounds. 2. In x86 platform some IRQs were reserved (for kbd, mouse, and exception), but IRQ allocation for goldfish devices didn't check for those reserved IRQs being assigned to a device. Change-Id: I9d48485d973bcc8fd8a3dd1b78fbfa6a05aeea22
* Use different macro for KVMVladimir Chtchetkine2011-09-271-3/+3
| | | | Change-Id: I62a2d54562ac043a5513585a2e86aa01038fdc29
* Fix QEMU pipe on KVMVladimir Chtchetkine2011-09-271-2/+17
| | | | | | | | | The issue was that CPU registers (CR3 in particular) in QEMU were out of sync with KVM at the time when virtual address to physical address translation was performed. This caused translation failure, and the subsequent crash. The fix was to explicitly sync QEMU registers with KVM registers just before calling VA->PA translation. Change-Id: I1ff4ed2cfddd77e6889bb645f08db442f119049a
* Fix x86 qemu pipe initializationDavid 'Digit' Turner2011-09-131-0/+2
| | | | | | | | This is necessary ot initialize qemu pipes when running an emulated x86 system. Required to try OpenGLES emulation for x86. Change-Id: I4fa38648dcdd4e85d1794b131238b27b4dd4b91e
* Accelerate nand device in virtualization environmentJiang Yunhong2011-09-132-2/+50
| | | | | | | | | | | | | | | | | | | | | Currently NAND device driver need 8 MMIO access for goldfish nand device access. MMIO access is expensive in virtualization environment because each MMIO access will cause a context switch from in-kernel module to qemu user space process. Through introducing a new batch command, these multiple MMIO access can be combined into one, thus improve virtualization perofrmance. The booting time in KVM environment is reduced from 25~26 seconds to 20~21 seconds. A kernel patch is required to utilize this new batch command. The patched kernel will detect the batch support through a new flags in goldfish nand device, while current kernel is not impacted. Change-Id: Ia460b1ba3c6fde5b1fc6101bb66f8f58e46e6a78 Signed-off-by: Xin Xiaohui <xiaohui.xin@intel.com> Signed-off-by: Zhang Xiantao <xiantao.zhang@intel.com> Signed-off-by: Jiang Yunhong <yunhong.jiang@intel.com> Signed-off-by: Nakajima Jun <jun.nakajima@intel.com>
* Fix qemu pipe's 'poll' callbacksVladimir Chtchetkine2011-08-252-7/+7
| | | | | | | | | Throughout emulator's code pipe's 'poll' callback was returning PIPE_WAKE_XXX, instead of PIPE_POLL_XXX flags. This created whole sort of issues with the qemu pipe service <-> client communications. This is also a fix for http://b/issue?id=5196348 Change-Id: I92202cf4ef4554559eb022c4410ee93923edec1b
* Revert "Revert "Merge c80340 from master to r13: Move charmap to hardware ↵Xavier Ducrohet2011-08-221-18/+3
| | | | | | | | | | | | | properties"..." This reverts commit cccd28ca5064a7bd14282cd774ee5bb7126d5845. c80340 add a CL to tools_r13 that broken the build. It was therefore reverted with cccd28. This revert was merged into tools_r13 but shouldn't have been. This reverts the revert to put back the CL in master. Change-Id: I95fcefedb77596cfdf76269f248b2ae80c85c830
* Merge "Disable trace."Vladimir Chtchetkine2011-08-121-1/+1
|\
| * Disable trace.Vladimir Chtchetkine2011-08-121-1/+1
| | | | | | | | Change-Id: I7130b7f82dec493fb893acf2527755398104cde3
| * Move charmap to hardware propertiesDavid 'Digit' Turner2011-07-071-18/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The name of the emulated charmap must be passed to the guest kernel because it is used by the guest input handling code to load the proper charmap files from the system partition. This mandates that the name becomes a hardware property for the sake of supporting proper snapshotting and ui/core separation. From now on, the charmap name found in a skin will be ignored completely. This shouldn't be a problem in practice because all skins used the default name (qwerty2) anyway. The only reason to change the default value would be if emulating a guest system image that depends on a different charmap during emulation. Change-Id: If571684000b159ae9e9849661c9ff18e19b4cc75
* | Revert "Merge c80340 from master to r13: Move charmap to hardware ↵Xavier Ducrohet2011-08-111-3/+18
| | | | | | | | | | | | | | | | properties". do not merge. This reverts commit f490aee025b3bab5bcdb065e5fc1b1abecf16b97. Change-Id: I59a0b2aebc8ab2b788a820a206c6eb4fc6e6e6d2
* | Merge c80340 from master to r13: Move charmap to hardware propertiesDavid 'Digit' Turner2011-08-051-18/+3
|/ | | | | | | | | | | | | | | | | | | The name of the emulated charmap must be passed to the guest kernel because it is used by the guest input handling code to load the proper charmap files from the system partition. This mandates that the name becomes a hardware property for the sake of supporting proper snapshotting and ui/core separation. From now on, the charmap name found in a skin will be ignored completely. This shouldn't be a problem in practice because all skins used the default name (qwerty2) anyway. The only reason to change the default value would be if emulating a guest system image that depends on a different charmap during emulation. Change-Id: If571684000b159ae9e9849661c9ff18e19b4cc75
* target-arm: integrate upstream ARM translator.David 'Digit' Turner2011-06-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new translator has the following benefits: - faster emulation of ARMv5TE code (through improved JIT) - proper support for ARMv7 and NEON - rebuilding the full-eng platform images for ARMv7-A results in additionnal speed increases (a.k.a. Thumb-2 rocks!). Note that, as an interesting side effect, NEON machine code is generally slower than the equivalent C code it is supposed to replace when run inside the emulator. This can be explained by the fact that for now the translator simply translates each NEON instruction into a series of sequential host instructions (and also requires over-head for packing/unpacking/saturation/ etc...). This change has been tested by running the "full-eng" platform image rebuilt for ARMv7-A and Neon and using an appropriate kernel image (prebuilt/android-arm/kernel/kernel-qemu-armv7). The system could boot and seems to work perfectly. Not a single issue has been experienced during testing. On a 2.4 GHz Xeon CPU, the image boots in about 25 seconds (compared to 40 seconds for a vanilla one without this emulator patch). Thanks to Peter Maydell at Linaro and ARM with his hard work to make this happen (first in upstream, and now on Android). This integration is based on the Meego git repository (git://gitorious.org/qemu-maemo/qemu.git) using the following hash: 7e2d65b0c95c865b1fa6d3d4948e8e822b9ac2fd On top of which, the following upstream patch has been applied (with recommendation from Peter): b7fa9214d8d4f57992c9acd0ccb125c54a095f00 (We chose this repository because it was the closest to the previous integrate. We will probably use the Linaro ones for future work on this part of the emulator). Change-Id: I54837e3d2e908b2380d158411d7a9813630e7e4e
* trace.h: rename to trace-android.hDavid 'Digit' Turner2011-06-011-1/+1
| | | | | | | This is done to allow for future integration of the upstream auto-generated "trace.h" header file. Change-Id: I9d1bba3320d9e8acfd7359540d3ed6695773061e
* ramblocks: integrate upstream implementation (sophisticated)David 'Digit' Turner2011-06-014-21/+25
| | | | Change-Id: I49e96e2d5ae571849b0b6fef0a30b41ecdee8d23
* qemu-char-android.c: rename to qemu-char.cDavid 'Digit' Turner2011-06-012-2/+2
| | | | | | + convert to QemuOpts* initialization functions. Change-Id: I5a245ed2de068af49fdc92de8e3e834d0f49aa27
* savevm.c: minor integrateDavid 'Digit' Turner2011-06-011-5/+6
| | | | Change-Id: I16103c65ac7b15b2dc58dcc7dd6b3052004aa31a
* qemu-timer.c: rename qemu_timer_new_scale()David 'Digit' Turner2011-06-019-66/+56
| | | | | | | | | | | Get rid of qemu_timer_new() implementation, and update all callers to use qemu_timer_new_ms() or qemu_timer_new_ns() instead. Rename qemu_new_timer_scale() to qemu_new_timer() to follow upstream conventions. Change-Id: Id2c04f8597ec5026e02f87b3e2c5507920eb688e
* New goldfish_pipe virtual device.David 'Digit' Turner2011-04-284-614/+996
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds a new virtual hardware device named "goldfish_pipe" used to implement a very fast communication channel between the guest system and the emulator. IMPORTANT: This depends on a special kernel driver, see: https://review.source.android.com/#change,22496 Usage from the guest is simply the following: fd = open("/dev/qemu_pipe", O_RDWR); const char* pipename = "pipe:<name>"; ret = write(fd, pipename, strlen(pipename)+1); if (ret < 0) { /* could not connect to service named <name> */ } /* now you can read()/write()/close() as a normal * file descriptor to exchange data with the service. */ In addition, this implements the following pipe services in the emulator: tcp:<port> tcp:<hostname>:<port> unix:<path> opengles The 'tcp:' and 'unix:' services simply redirect to a TCP or Unix socket on the host with minimal The 'opengles' service simply connects to tcp:locahost:22468 for now. We may change this to be more configurable in the future, but that's the port number used by the current experimental OpenGL ES hardware emulation host libraries / programs. Benchmarking with a simple ping-pong program shows that the guest <-> emulator can achieve a roundtrip bandwidth of 192 MB/s (on a 2.7 Ghz Xeon PC). Using the tcp: service to talk to a ping-pong server listening on localhost reaches 102 MB/s on the same machine, using a Unix socket reaches 140 MB/s. By contrast, using standard sockets in the guest reaches only 3.8 MB/s on the same machine (and requires special privileges from the application anyway).
* Merge "Converted a variable from char * to const char *. Removes compiler ↵David Turner2011-04-111-2/+2
|\ | | | | | | warnings with some compilers."
| * Converted a variable from char * to const char *.Ashish Bhatia2011-04-081-2/+2
| | | | | | | | | | | | Removes compiler warnings with some compilers. Change-Id: Idfb14557181e744d07bef6b5d0da734012d2ff42
* | hw/android_arm.c: Initialize qemud pipes properly.David 'Digit' Turner2011-04-111-0/+4
| | | | | | | | Change-Id: I7f7f46b6e9526d207f53ad6a9e6baa315bd6af7b
* | goldfish_trace: Hook with goldfish_pipe.h functions.David 'Digit' Turner2011-04-113-36/+102
| | | | | | | | | | | | | | | | Note that this is also forces tracing support during machine initialization. Measurements show that this doesn't have any significant impact on emulation performance. Change-Id: Ie32352659611531ce65ba2c95c5896e2421f509d
* | hw/goldfish_pipe.c: New support code for QEMUD fast-pipes.David 'Digit' Turner2011-04-112-0/+838
|/ | | | Change-Id: I338334d53fa9bc52c87e9da18341d0cb94fd4269
* Revert "Revert "Merge 29e114d2 from master.""Xavier Ducrohet2011-03-181-0/+36
| | | | | | | | | This reverts commit 2facea6512c84af9285682909f6ac6edcd4130ab which was not supposed to merge down from tools_R10 to master since the original reverted commit was a cherry-pick from master to tools_r10 Change-Id: Ide87af693a0f3239bacaa7313b9262e6e8c46800
* merge from tools_r10The Android Open Source Project2011-03-181-36/+0
|\ | | | | | | Change-Id: I70d9ccafb5912c85baa0711f7e9010bec223efaa
| * Revert "Merge 29e114d2 from master. do not merge."Xavier Ducrohet2011-03-181-36/+0
| | | | | | | | This reverts commit e36a1cc2561b2ce27d3c0a5b3a7b79d4e8531f0e.
| * Merge 29e114d2 from master. do not merge.David 'Digit' Turner2011-03-181-0/+36
| | | | | | | | | | | | | | | | | | | | | | | | Fix touchscreen emulation to return correct min/max coordinate bounds. This is needed by future changes in the input framework that depend on touchscreen devices to properly return the min/max bounds of their absolute pointer coordinates. Fixes bug 4126574 Change-Id: I1ace56d5433be5d97eb79895cd57b6e442245ca0
| * Merge 59e8e196 into tools_r10. DO NOT MERGE.David 'Digit' Turner2011-02-161-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Add hw.keyboard.lid This is used to control the lid switch virtual device. + Add support for a "version <number>" field to the skin format. This will later be used for skin format #3. + Fix a bug where string hw properties didn't work/compile Change-Id: I27ff3293b439917a51c584a25139264ddb1aff12
* | Fix touchscreen emulation to return correct min/max coordinate bounds.David 'Digit' Turner2011-03-181-0/+36
| | | | | | | | | | | | | | | | | | | | This is needed by future changes in the input framework that depend on touchscreen devices to properly return the min/max bounds of their absolute pointer coordinates. Fixes bug 4126574 Change-Id: I982c0d8e78fc59912e964af958929d2b0718eaa4