Add fast mmio support

In HAXM 1.0, HAXM driver utilizes QEMU to decode and emulate MMIO accesses.
This simplified the HAXM driver implementation. However, decoding in QEMU is
slow because QEMU needs to sync with the HAXM driver regarding the vCPU state,
guest page tables, etc.

Newer HAXM driver will decode some MMIO instructions, and QEMU
will get the decoded instruction information like the physical address,
access direction etc, and then invoke the MMIO handler directly.

This boosts MMIO handling performance significantly, thus performance of 2D/3D
games because they performance very frequent MMIO access for GLES commands to
the host translator.

Change-Id: Ida308b2e6da3697ee37a1b28a9645916e104d9ff
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>
2 files changed
tree: 12996af5393acadd815968018969e365939c1b9d
  1. android/
  2. audio/
  3. block/
  4. distrib/
  5. docs/
  6. elff/
  7. fpu/
  8. gdb-xml/
  9. hw/
  10. images/
  11. memcheck/
  12. pc-bios/
  13. proxy/
  14. slirp/
  15. slirp-android/
  16. target-arm/
  17. target-i386/
  18. tcg/
  19. telephony/
  20. .gitignore
  21. a.out.h
  22. acl.c
  23. acl.h
  24. aes.c
  25. aes.h
  26. aio-android.c
  27. aio.c
  28. alpha.ld
  29. android-configure.sh
  30. android-rebuild.sh
  31. android-trace.h
  32. android-trace_common.h
  33. Android.mk
  34. arch_init.c
  35. arch_init.h
  36. arm-dis.c
  37. arm-semi.c
  38. arm.ld
  39. async.c
  40. balloon.h
  41. block.c
  42. block.h
  43. block_int.h
  44. blockdev.c
  45. blockdev.h
  46. bswap.h
  47. bt-host.c
  48. bt-host.h
  49. bt-vhci.c
  50. buffered_file.c
  51. buffered_file.h
  52. cache-utils.c
  53. cache-utils.h
  54. cbuffer.c
  55. cbuffer.h
  56. Changelog
  57. CHANGES.TXT
  58. charpipe.c
  59. charpipe.h
  60. CleanSpec.mk
  61. compatfd.c
  62. compatfd.h
  63. console.c
  64. console.h
  65. COPYING
  66. COPYING.LIB
  67. cpu-all.h
  68. cpu-common.h
  69. cpu-defs.h
  70. cpu-exec.c
  71. cpus.c
  72. cpus.h
  73. curses.c
  74. curses_keys.h
  75. cutils.c
  76. d3des.c
  77. d3des.h
  78. def-helper.h
  79. device_tree.c
  80. device_tree.h
  81. dis-asm.h
  82. disas.c
  83. disas.h
  84. dma-helpers.c
  85. dma.h
  86. dyngen-exec.h
  87. dynlink-static.c
  88. dynlink.h
  89. elf.h
  90. elf_ops.h
  91. envlist.c
  92. envlist.h
  93. exec-all.h
  94. exec.c
  95. feature_to_c.sh
  96. gdbstub.c
  97. gdbstub.h
  98. gen-charmap.py
  99. gen-icount.h
  100. gen-skin.py
  101. hax.h
  102. host-defs.h
  103. host-utils.c
  104. host-utils.h
  105. hostregs_helper.h
  106. hpet.h
  107. hxtool
  108. i386-dis.c
  109. i386-vl.ld
  110. i386.ld
  111. ia64.ld
  112. input.c
  113. INSTALL
  114. iohandler.c
  115. iolooper-select.c
  116. iolooper.h
  117. ioport-user.c
  118. ioport.c
  119. ioport.h
  120. json-lexer.c
  121. json-lexer.h
  122. json-parser.c
  123. json-parser.h
  124. json-streamer.c
  125. json-streamer.h
  126. keymaps.c
  127. keymaps.h
  128. kqemu.c
  129. kqemu.h
  130. kvm-all.c
  131. kvm-android.c
  132. kvm-android.h
  133. kvm.h
  134. LICENSE
  135. linux_keycodes.h
  136. loader.c
  137. loadpng.c
  138. m68k.ld
  139. Makefile
  140. Makefile.android
  141. Makefile.common
  142. Makefile.target
  143. migration-dummy-android.c
  144. migration-exec.c
  145. migration-tcp-android.c
  146. migration-tcp.c
  147. migration.c
  148. migration.h
  149. module.c
  150. module.h
  151. MODULE_LICENSE_GPL
  152. monitor-android.h
  153. monitor.c
  154. monitor.h
  155. net-android.c
  156. net-checksum.c
  157. net.c
  158. net.h
  159. NOTICE
  160. notify.c
  161. notify.h
  162. offset_layout.py
  163. os-posix.c
  164. os-win32.c
  165. osdep.c
  166. osdep.h
  167. oslib-posix.c
  168. oslib-win32.c
  169. path.c
  170. poison.h
  171. posix-aio-compat.c
  172. ppc-dis.c
  173. ppc.ld
  174. qbool.c
  175. qbool.h
  176. qdict.c
  177. qdict.h
  178. qemu-aio.h
  179. qemu-barrier.h
  180. qemu-char.c
  181. qemu-char.h
  182. qemu-common.h
  183. qemu-config.c
  184. qemu-config.h
  185. qemu-error.c
  186. qemu-error.h
  187. qemu-io.c
  188. qemu-lock.h
  189. qemu-log.h
  190. qemu-malloc.c
  191. qemu-monitor.hx
  192. qemu-objects.h
  193. qemu-option.c
  194. qemu-option.h
  195. qemu-options.h
  196. qemu-options.hx
  197. qemu-os-posix.h
  198. qemu-os-win32.h
  199. qemu-queue.h
  200. qemu-sockets-android.c
  201. qemu-sockets.c
  202. qemu-thread.c
  203. qemu-thread.h
  204. qemu-timer-common.c
  205. qemu-timer.c
  206. qemu-timer.h
  207. qemu_debug.h
  208. qemu_file.h
  209. qemu_socket.h
  210. qemu_timers.h
  211. qerror.c
  212. qerror.h
  213. qfloat.c
  214. qfloat.h
  215. qint.c
  216. qint.h
  217. qjson.c
  218. qjson.h
  219. qlist.c
  220. qlist.h
  221. qobject.h
  222. qstring.c
  223. qstring.h
  224. readline.c
  225. readline.h
  226. README
  227. savevm.c
  228. sdl_keysym.h
  229. shaper.c
  230. shaper.h
  231. sockets.c
  232. sockets.h
  233. softmmu-semi.h
  234. softmmu_defs.h
  235. softmmu_exec.h
  236. softmmu_header.h
  237. softmmu_outside_jit.c
  238. softmmu_outside_jit.h
  239. softmmu_template.h
  240. sparc.ld
  241. sys-tree.h
  242. sysemu.h
  243. tap-win32.c
  244. targphys.h
  245. tcpdump.c
  246. tcpdump.h
  247. thunk.c
  248. thunk.h
  249. trace.c
  250. trace.h
  251. trace_common.h
  252. translate-all.c
  253. translate-op.c
  254. translate.make
  255. uboot_image.h
  256. usb-dummy-android.c
  257. usb-linux.c
  258. user-events-qemu.c
  259. user-events.h
  260. varint.c
  261. varint.h
  262. vgafont.h
  263. vl-android-ui.c
  264. vl-android.c
  265. vl.c
  266. vnc-android.c
  267. vnc-tls.h
  268. vnc.c
  269. vnc.h
  270. vnc_keysym.h
  271. vnchextile.h
  272. x86_64.ld