hpet/rtc: Rework RTC IRQ replacement by HPET

Allow the intercept the RTC IRQ for the HPET legacy mode. Then push
routing to IRQ8 completely into the HPET. This allows to turn
hpet_in_legacy_mode() into a private function. Furthermore, this stops
the RTC from clearing IRQ8 even if the HPET is in control.

This patch comes with a side effect: The RTC timers will no longer be
stoppend when there is no IRQ consumer, possibly causing a minor
performance degration. But as the guest may want to redirect the RTC to
the SCI in that mode, it should normally disable unused IRQ source
anyway.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
9 files changed
tree: f3fc984cd0abc83b394897c617c1da7d78426a21
  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. cursor.c
  90. cursor_hidden.xpm
  91. cursor_left_ptr.xpm
  92. cutils.c
  93. d3des.c
  94. d3des.h
  95. def-helper.h
  96. device_tree.c
  97. device_tree.h
  98. dis-asm.h
  99. disas.c
  100. disas.h
  101. dma-helpers.c
  102. dma.h
  103. dyngen-exec.h
  104. elf.h
  105. envlist.c
  106. envlist.h
  107. exec-all.h
  108. exec.c
  109. feature_to_c.sh
  110. gdbstub.c
  111. gdbstub.h
  112. gen-icount.h
  113. host-utils.c
  114. host-utils.h
  115. hpet.h
  116. hppa-dis.c
  117. hppa.ld
  118. hxtool
  119. i386-dis.c
  120. i386.ld
  121. ia64-dis.c
  122. ia64.ld
  123. input.c
  124. ioport-user.c
  125. ioport.c
  126. ioport.h
  127. iov.c
  128. iov.h
  129. json-lexer.c
  130. json-lexer.h
  131. json-parser.c
  132. json-parser.h
  133. json-streamer.c
  134. json-streamer.h
  135. keymaps.c
  136. keymaps.h
  137. kvm-all.c
  138. kvm-stub.c
  139. kvm.h
  140. libfdt_env.h
  141. LICENSE
  142. linux-aio.c
  143. m68k-dis.c
  144. m68k-semi.c
  145. m68k.ld
  146. MAINTAINERS
  147. Makefile
  148. Makefile.dis
  149. Makefile.hw
  150. Makefile.objs
  151. Makefile.target
  152. Makefile.user
  153. microblaze-dis.c
  154. migration-exec.c
  155. migration-fd.c
  156. migration-tcp.c
  157. migration-unix.c
  158. migration.c
  159. migration.h
  160. mips-dis.c
  161. mips.ld
  162. module.c
  163. module.h
  164. monitor.c
  165. monitor.h
  166. nbd.c
  167. nbd.h
  168. net-checksum.c
  169. net.c
  170. net.h
  171. notify.c
  172. notify.h
  173. os-posix.c
  174. os-win32.c
  175. osdep.c
  176. osdep.h
  177. path.c
  178. pci-ids.txt
  179. poison.h
  180. posix-aio-compat.c
  181. ppc-dis.c
  182. ppc.ld
  183. ppc64.ld
  184. qbool.c
  185. qbool.h
  186. qdict-test-data.txt
  187. qdict.c
  188. qdict.h
  189. qemu-aio.h
  190. qemu-barrier.h
  191. qemu-binfmt-conf.sh
  192. qemu-char.c
  193. qemu-char.h
  194. qemu-common.h
  195. qemu-config.c
  196. qemu-config.h
  197. qemu-doc.texi
  198. qemu-error.c
  199. qemu-error.h
  200. qemu-img-cmds.hx
  201. qemu-img.c
  202. qemu-img.texi
  203. qemu-io.c
  204. qemu-lock.h
  205. qemu-log.h
  206. qemu-malloc.c
  207. qemu-monitor.hx
  208. qemu-nbd.c
  209. qemu-nbd.texi
  210. qemu-objects.h
  211. qemu-option.c
  212. qemu-option.h
  213. qemu-options.h
  214. qemu-options.hx
  215. qemu-os-posix.h
  216. qemu-os-win32.h
  217. qemu-queue.h
  218. qemu-sockets.c
  219. qemu-tech.texi
  220. qemu-thread.c
  221. qemu-thread.h
  222. qemu-timer.c
  223. qemu-timer.h
  224. qemu-tool.c
  225. qemu-x509.h
  226. qemu.sasl
  227. qemu_socket.h
  228. qerror.c
  229. qerror.h
  230. qfloat.c
  231. qfloat.h
  232. qint.c
  233. qint.h
  234. qjson.c
  235. qjson.h
  236. qlist.c
  237. qlist.h
  238. qobject.h
  239. qstring.c
  240. qstring.h
  241. readline.c
  242. readline.h
  243. README
  244. rules.mak
  245. rwhandler.c
  246. rwhandler.h
  247. s390-dis.c
  248. s390.ld
  249. savevm.c
  250. sdl.c
  251. sdl_keysym.h
  252. sdl_zoom.c
  253. sdl_zoom.h
  254. sdl_zoom_template.h
  255. sh4-dis.c
  256. softmmu-semi.h
  257. softmmu_defs.h
  258. softmmu_exec.h
  259. softmmu_header.h
  260. softmmu_template.h
  261. sparc-dis.c
  262. sparc.ld
  263. sparc64.ld
  264. sysemu.h
  265. targphys.h
  266. tcg-runtime.c
  267. texi2pod.pl
  268. thunk.c
  269. thunk.h
  270. TODO
  271. translate-all.c
  272. uboot_image.h
  273. usb-bsd.c
  274. usb-linux.c
  275. usb-stub.c
  276. VERSION
  277. vgafont.h
  278. vl.c
  279. vnc-auth-sasl.c
  280. vnc-auth-sasl.h
  281. vnc-auth-vencrypt.c
  282. vnc-auth-vencrypt.h
  283. vnc-encoding-hextile.c
  284. vnc-encoding-tight.c
  285. vnc-encoding-tight.h
  286. vnc-encoding-zlib.c
  287. vnc-tls.c
  288. vnc-tls.h
  289. vnc.c
  290. vnc.h
  291. vnc_keysym.h
  292. vnchextile.h
  293. x86_64.ld
  294. x_keymap.c
  295. x_keymap.h