pseries: Add partial support for PCI

This patch adds a PCI bus to the pseries machine.  This instantiates
the qemu generic PCI bus code, advertises a PCI host bridge in the
guest's device tree and implements the RTAS methods specified by PAPR
to access PCI config space.  It also sets up the memory regions we
need to provide windows into the PCI memory and IO space, and
advertises those to the guest.

However, because qemu can't yet emulate an IOMMU, which is mandatory on
pseries, PCI devices which use DMA (i.e. most of them) will not work with
this code alone.  Still, this is enough to support the virtio_pci device
(which probably _should_ use emulated PCI DMA, but is specced to use
direct hypervisor access to guest physical memory instead).

[agraf] remove typedef which could cause compile errors

Signed-off-by: Alexey Kardashevskiy <aik@au1.ibm.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
5 files changed
tree: 0017d1bff22a76c111676e8d5fc9be1c9dab3394
  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. libcacard/
  12. linux-headers/
  13. linux-user/
  14. net/
  15. pc-bios/
  16. qapi/
  17. qga/
  18. QMP/
  19. roms/
  20. scripts/
  21. slirp/
  22. sysconfigs/
  23. target-alpha/
  24. target-arm/
  25. target-cris/
  26. target-i386/
  27. target-lm32/
  28. target-m68k/
  29. target-microblaze/
  30. target-mips/
  31. target-ppc/
  32. target-s390x/
  33. target-sh4/
  34. target-sparc/
  35. target-unicore32/
  36. target-xtensa/
  37. tcg/
  38. tests/
  39. trace/
  40. ui/
  41. .gitignore
  42. .gitmodules
  43. a.out.h
  44. acl.c
  45. acl.h
  46. aes.c
  47. aes.h
  48. aio.c
  49. alpha-dis.c
  50. alpha.ld
  51. arch_init.c
  52. arch_init.h
  53. arm-dis.c
  54. arm-semi.c
  55. arm.ld
  56. async.c
  57. balloon.c
  58. balloon.h
  59. bitmap.c
  60. bitmap.h
  61. bitops.c
  62. bitops.h
  63. block-migration.c
  64. block-migration.h
  65. block.c
  66. block.h
  67. block_int.h
  68. blockdev.c
  69. blockdev.h
  70. bswap.h
  71. bt-host.c
  72. bt-host.h
  73. bt-vhci.c
  74. buffered_file.c
  75. buffered_file.h
  76. cache-utils.c
  77. cache-utils.h
  78. Changelog
  79. check-qdict.c
  80. check-qfloat.c
  81. check-qint.c
  82. check-qjson.c
  83. check-qlist.c
  84. check-qstring.c
  85. cmd.c
  86. cmd.h
  87. CODING_STYLE
  88. compatfd.c
  89. compatfd.h
  90. compiler.h
  91. config.h
  92. configure
  93. console.c
  94. console.h
  95. COPYING
  96. COPYING.LIB
  97. coroutine-gthread.c
  98. coroutine-ucontext.c
  99. coroutine-win32.c
  100. cpu-all.h
  101. cpu-common.h
  102. cpu-defs.h
  103. cpu-exec.c
  104. cpus.c
  105. cpus.h
  106. cris-dis.c
  107. cursor.c
  108. cursor_hidden.xpm
  109. cursor_left_ptr.xpm
  110. cutils.c
  111. def-helper.h
  112. device_tree.c
  113. device_tree.h
  114. dis-asm.h
  115. disas.c
  116. disas.h
  117. dma-helpers.c
  118. dma.h
  119. dyngen-exec.h
  120. elf.h
  121. envlist.c
  122. envlist.h
  123. error.c
  124. error.h
  125. error_int.h
  126. exec-all.h
  127. exec-memory.h
  128. exec.c
  129. gdbstub.c
  130. gdbstub.h
  131. gen-icount.h
  132. HACKING
  133. hmp-commands.hx
  134. hmp.c
  135. hmp.h
  136. host-utils.c
  137. host-utils.h
  138. hppa-dis.c
  139. hppa.ld
  140. i386-dis.c
  141. i386.ld
  142. ia64-dis.c
  143. ia64.ld
  144. input.c
  145. iohandler.c
  146. ioport-user.c
  147. ioport.c
  148. ioport.h
  149. iorange.h
  150. iov.c
  151. iov.h
  152. json-lexer.c
  153. json-lexer.h
  154. json-parser.c
  155. json-parser.h
  156. json-streamer.c
  157. json-streamer.h
  158. kvm-all.c
  159. kvm-stub.c
  160. kvm.h
  161. libfdt_env.h
  162. LICENSE
  163. linux-aio.c
  164. m68k-dis.c
  165. m68k-semi.c
  166. m68k.ld
  167. main-loop.c
  168. main-loop.h
  169. MAINTAINERS
  170. Makefile
  171. Makefile.dis
  172. Makefile.hw
  173. Makefile.objs
  174. Makefile.target
  175. Makefile.user
  176. memory.c
  177. memory.h
  178. microblaze-dis.c
  179. migration-exec.c
  180. migration-fd.c
  181. migration-tcp.c
  182. migration-unix.c
  183. migration.c
  184. migration.h
  185. mips-dis.c
  186. mips.ld
  187. module.c
  188. module.h
  189. monitor.c
  190. monitor.h
  191. nbd.c
  192. nbd.h
  193. net.c
  194. net.h
  195. notify.c
  196. notify.h
  197. os-posix.c
  198. os-win32.c
  199. osdep.c
  200. osdep.h
  201. oslib-posix.c
  202. oslib-win32.c
  203. path.c
  204. pci-ids.txt
  205. pflib.c
  206. pflib.h
  207. poison.h
  208. posix-aio-compat.c
  209. ppc-dis.c
  210. ppc.ld
  211. ppc64.ld
  212. qapi-schema-guest.json
  213. qapi-schema-test.json
  214. qapi-schema.json
  215. qbool.c
  216. qbool.h
  217. qdict-test-data.txt
  218. qdict.c
  219. qdict.h
  220. qemu-aio.h
  221. qemu-barrier.h
  222. qemu-char.c
  223. qemu-char.h
  224. qemu-common.h
  225. qemu-config.c
  226. qemu-config.h
  227. qemu-coroutine-int.h
  228. qemu-coroutine-lock.c
  229. qemu-coroutine.c
  230. qemu-coroutine.h
  231. qemu-doc.texi
  232. qemu-error.c
  233. qemu-error.h
  234. qemu-ga.c
  235. qemu-img-cmds.hx
  236. qemu-img.c
  237. qemu-img.texi
  238. qemu-io.c
  239. qemu-lock.h
  240. qemu-log.h
  241. qemu-nbd.c
  242. qemu-nbd.texi
  243. qemu-objects.h
  244. qemu-option.c
  245. qemu-option.h
  246. qemu-options.h
  247. qemu-options.hx
  248. qemu-os-posix.h
  249. qemu-os-win32.h
  250. qemu-progress.c
  251. qemu-queue.h
  252. qemu-sockets.c
  253. qemu-tech.texi
  254. qemu-thread-posix.c
  255. qemu-thread-posix.h
  256. qemu-thread-win32.c
  257. qemu-thread-win32.h
  258. qemu-thread.h
  259. qemu-timer-common.c
  260. qemu-timer.c
  261. qemu-timer.h
  262. qemu-tool.c
  263. qemu-x509.h
  264. qemu.sasl
  265. qemu_socket.h
  266. qerror.c
  267. qerror.h
  268. qfloat.c
  269. qfloat.h
  270. qint.c
  271. qint.h
  272. qjson.c
  273. qjson.h
  274. qlist.c
  275. qlist.h
  276. qmp-commands.hx
  277. qmp.c
  278. qobject.h
  279. qstring.c
  280. qstring.h
  281. range.h
  282. readline.c
  283. readline.h
  284. README
  285. rules.mak
  286. s390-dis.c
  287. s390.ld
  288. savevm.c
  289. sh4-dis.c
  290. softmmu-semi.h
  291. softmmu_defs.h
  292. softmmu_exec.h
  293. softmmu_header.h
  294. softmmu_template.h
  295. sparc-dis.c
  296. sparc.ld
  297. sparc64.ld
  298. spice-qemu-char.c
  299. sysemu.h
  300. targphys.h
  301. tcg-runtime.c
  302. test-coroutine.c
  303. test-qmp-commands.c
  304. test-visitor.c
  305. thunk.c
  306. thunk.h
  307. TODO
  308. trace-events
  309. translate-all.c
  310. uboot_image.h
  311. usb-bsd.c
  312. usb-linux.c
  313. usb-redir.c
  314. usb-stub.c
  315. user-exec.c
  316. VERSION
  317. version.rc
  318. vgafont.h
  319. vl.c
  320. x86_64.ld
  321. xen-all.c
  322. xen-mapcache.c
  323. xen-mapcache.h
  324. xen-stub.c
  325. xtensa-semi.c