qemu: address todo comment in exec.c

exec.c has a comment 'XXX: optimize' for lduw_phys/stw_phys,
so let's do it, along the lines of stl_phys.

The reason to address 16 bit accesses specifically is that virtio relies
on these accesses to be done atomically, using memset as we do now
breaks this assumption, which is reported to cause qemu with kvm
to read wrong index values under stress.

https://bugzilla.redhat.com/show_bug.cgi?id=525323

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
1 file changed
tree: d18117416943eefe7946444bb0ac256aa1ac51e5
  1. audio/
  2. block/
  3. bsd-user/
  4. darwin-user/
  5. default-configs/
  6. docs/
  7. fpu/
  8. fsdev/
  9. gdb-xml/
  10. hw/
  11. linux-user/
  12. net/
  13. pc-bios/
  14. QMP/
  15. roms/
  16. slirp/
  17. sysconfigs/
  18. target-alpha/
  19. target-arm/
  20. target-cris/
  21. target-i386/
  22. target-m68k/
  23. target-microblaze/
  24. target-mips/
  25. target-ppc/
  26. target-s390x/
  27. target-sh4/
  28. target-sparc/
  29. tcg/
  30. tests/
  31. .gitignore
  32. .gitmodules
  33. a.out.h
  34. acl.c
  35. acl.h
  36. aes.c
  37. aes.h
  38. aio.c
  39. alpha-dis.c
  40. alpha.ld
  41. arch_init.c
  42. arch_init.h
  43. arm-dis.c
  44. arm-semi.c
  45. arm.ld
  46. async.c
  47. balloon.c
  48. balloon.h
  49. block-migration.c
  50. block-migration.h
  51. block.c
  52. block.h
  53. block_int.h
  54. bswap.h
  55. bt-host.c
  56. bt-host.h
  57. bt-vhci.c
  58. buffered_file.c
  59. buffered_file.h
  60. cache-utils.c
  61. cache-utils.h
  62. Changelog
  63. check-qdict.c
  64. check-qfloat.c
  65. check-qint.c
  66. check-qjson.c
  67. check-qlist.c
  68. check-qstring.c
  69. cmd.c
  70. cmd.h
  71. cocoa.m
  72. CODING_STYLE
  73. config.h
  74. configure
  75. console.c
  76. console.h
  77. COPYING
  78. COPYING.LIB
  79. cpu-all.h
  80. cpu-common.h
  81. cpu-defs.h
  82. cpu-exec.c
  83. cpus.c
  84. cpus.h
  85. create_config
  86. cris-dis.c
  87. curses.c
  88. curses_keys.h
  89. cutils.c
  90. d3des.c
  91. d3des.h
  92. def-helper.h
  93. device_tree.c
  94. device_tree.h
  95. dis-asm.h
  96. disas.c
  97. disas.h
  98. dma-helpers.c
  99. dma.h
  100. dyngen-exec.h
  101. elf.h
  102. envlist.c
  103. envlist.h
  104. exec-all.h
  105. exec.c
  106. feature_to_c.sh
  107. gdbstub.c
  108. gdbstub.h
  109. gen-icount.h
  110. host-utils.c
  111. host-utils.h
  112. hpet.h
  113. hppa-dis.c
  114. hppa.ld
  115. hxtool
  116. i386-dis.c
  117. i386.ld
  118. ia64-dis.c
  119. ia64.ld
  120. input.c
  121. ioport-user.c
  122. ioport.c
  123. ioport.h
  124. json-lexer.c
  125. json-lexer.h
  126. json-parser.c
  127. json-parser.h
  128. json-streamer.c
  129. json-streamer.h
  130. keymaps.c
  131. keymaps.h
  132. kvm-all.c
  133. kvm-stub.c
  134. kvm.h
  135. libfdt_env.h
  136. LICENSE
  137. linux-aio.c
  138. m68k-dis.c
  139. m68k-semi.c
  140. m68k.ld
  141. MAINTAINERS
  142. Makefile
  143. Makefile.dis
  144. Makefile.hw
  145. Makefile.objs
  146. Makefile.target
  147. Makefile.user
  148. microblaze-dis.c
  149. migration-exec.c
  150. migration-fd.c
  151. migration-tcp.c
  152. migration-unix.c
  153. migration.c
  154. migration.h
  155. mips-dis.c
  156. mips.ld
  157. module.c
  158. module.h
  159. monitor.c
  160. monitor.h
  161. nbd.c
  162. nbd.h
  163. net-checksum.c
  164. net.c
  165. net.h
  166. notify.c
  167. notify.h
  168. osdep.c
  169. osdep.h
  170. path.c
  171. pci-ids.txt
  172. poison.h
  173. posix-aio-compat.c
  174. ppc-dis.c
  175. ppc.ld
  176. ppc64.ld
  177. qbool.c
  178. qbool.h
  179. qdict-test-data.txt
  180. qdict.c
  181. qdict.h
  182. qemu-aio.h
  183. qemu-barrier.h
  184. qemu-binfmt-conf.sh
  185. qemu-char.c
  186. qemu-char.h
  187. qemu-common.h
  188. qemu-config.c
  189. qemu-config.h
  190. qemu-doc.texi
  191. qemu-error.c
  192. qemu-error.h
  193. qemu-img-cmds.hx
  194. qemu-img.c
  195. qemu-img.texi
  196. qemu-io.c
  197. qemu-lock.h
  198. qemu-log.h
  199. qemu-malloc.c
  200. qemu-monitor.hx
  201. qemu-nbd.c
  202. qemu-nbd.texi
  203. qemu-objects.h
  204. qemu-option.c
  205. qemu-option.h
  206. qemu-options.hx
  207. qemu-queue.h
  208. qemu-sockets.c
  209. qemu-tech.texi
  210. qemu-thread.c
  211. qemu-thread.h
  212. qemu-timer.c
  213. qemu-timer.h
  214. qemu-tool.c
  215. qemu-x509.h
  216. qemu.sasl
  217. qemu_socket.h
  218. qerror.c
  219. qerror.h
  220. qfloat.c
  221. qfloat.h
  222. qint.c
  223. qint.h
  224. qjson.c
  225. qjson.h
  226. qlist.c
  227. qlist.h
  228. qobject.h
  229. qstring.c
  230. qstring.h
  231. readline.c
  232. readline.h
  233. README
  234. rules.mak
  235. rwhandler.c
  236. rwhandler.h
  237. s390-dis.c
  238. s390.ld
  239. savevm.c
  240. sdl.c
  241. sdl_keysym.h
  242. sdl_zoom.c
  243. sdl_zoom.h
  244. sdl_zoom_template.h
  245. sh4-dis.c
  246. softmmu-semi.h
  247. softmmu_defs.h
  248. softmmu_exec.h
  249. softmmu_header.h
  250. softmmu_template.h
  251. sparc-dis.c
  252. sparc.ld
  253. sparc64.ld
  254. sysemu.h
  255. targphys.h
  256. tcg-runtime.c
  257. texi2pod.pl
  258. thunk.c
  259. thunk.h
  260. TODO
  261. translate-all.c
  262. uboot_image.h
  263. usb-bsd.c
  264. usb-linux.c
  265. usb-stub.c
  266. VERSION
  267. vgafont.h
  268. vl.c
  269. vnc-auth-sasl.c
  270. vnc-auth-sasl.h
  271. vnc-auth-vencrypt.c
  272. vnc-auth-vencrypt.h
  273. vnc-encoding-hextile.c
  274. vnc-encoding-zlib.c
  275. vnc-tls.c
  276. vnc-tls.h
  277. vnc.c
  278. vnc.h
  279. vnc_keysym.h
  280. vnchextile.h
  281. x86_64.ld
  282. x_keymap.c
  283. x_keymap.h