Don't check for bus master for old guests

Older Linux guests don't activate the bus master enable bit. So for those we
can just try to be clever and track if they set the DEVICE_OK bit even though
bus mastering is still disabled.

Under that condition we can disable the windows safety check. With that logic
in place both guests should work just fine. Without PCI hotplug breaks
virtio-net in Linux < 2.6.34 guests.

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