serial: fix lost character after sysrq

After creating an automated regression test to test the sysrq
responses while running a linux image in qemu, I found that the
simulated uart was eating the character right after the sysrq about
75% of the time.

The problem is that the qemu sets the LSR_DR (data ready) bit on a
serial break.  The automated tests can send a break and the sysrq
character quickly enough that the qemu serial fifo has a real
character available. When there is valid character in the fifo, it
gets consumed by the serial driver in the guest OS.

The real hardware also appears to set the LSR_DR but always appears to
have a null byte in this condition.  This patch changes the qemu
behavior to match the tested characteristics of a real 16550 chip.

Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
1 file changed
tree: b88670c117c4b451366bb03fbe2229b05b56775f
  1. audio/
  2. block/
  3. bsd-user/
  4. darwin-user/
  5. fpu/
  6. gdb-xml/
  7. hw/
  8. keymaps/
  9. linux-user/
  10. pc-bios/
  11. slirp/
  12. target-alpha/
  13. target-arm/
  14. target-cris/
  15. target-i386/
  16. target-m68k/
  17. target-mips/
  18. target-ppc/
  19. target-sh4/
  20. target-sparc/
  21. tcg/
  22. tests/
  23. .gitignore
  24. a.out.h
  25. acl.c
  26. acl.h
  27. aes.c
  28. aes.h
  29. aio.c
  30. alpha-dis.c
  31. alpha.ld
  32. arm-dis.c
  33. arm-semi.c
  34. arm.ld
  35. balloon.h
  36. block.c
  37. block.h
  38. block_int.h
  39. bswap.h
  40. bt-host.c
  41. bt-host.h
  42. bt-vhci.c
  43. buffered_file.c
  44. buffered_file.h
  45. cache-utils.c
  46. cache-utils.h
  47. Changelog
  48. cmd.c
  49. cmd.h
  50. cocoa.m
  51. CODING_STYLE
  52. configure
  53. console.c
  54. console.h
  55. COPYING
  56. COPYING.LIB
  57. cpu-all.h
  58. cpu-common.h
  59. cpu-defs.h
  60. cpu-exec.c
  61. cris-dis.c
  62. curses.c
  63. curses_keys.h
  64. cutils.c
  65. d3des.c
  66. d3des.h
  67. def-helper.h
  68. device_tree.c
  69. device_tree.h
  70. dis-asm.h
  71. disas.c
  72. disas.h
  73. dma-helpers.c
  74. dma.h
  75. dyngen-exec.h
  76. elf.h
  77. elf_ops.h
  78. exec-all.h
  79. exec.c
  80. feature_to_c.sh
  81. gdbstub.c
  82. gdbstub.h
  83. gen-icount.h
  84. host-utils.c
  85. host-utils.h
  86. hostregs_helper.h
  87. hpet.h
  88. hppa-dis.c
  89. hppa.ld
  90. hxtool
  91. i386-dis.c
  92. i386.ld
  93. ia64.ld
  94. keymaps.c
  95. keymaps.h
  96. kqemu.c
  97. kqemu.h
  98. kvm-all.c
  99. kvm.h
  100. libfdt_env.h
  101. LICENSE
  102. loader.c
  103. m68k-dis.c
  104. m68k-semi.c
  105. m68k.ld
  106. MAINTAINERS
  107. Makefile
  108. Makefile.hw
  109. Makefile.target
  110. migration-exec.c
  111. migration-tcp.c
  112. migration.c
  113. migration.h
  114. mips-dis.c
  115. mips.ld
  116. mipsel.ld
  117. module.c
  118. module.h
  119. monitor.c
  120. monitor.h
  121. nbd.c
  122. nbd.h
  123. net-checksum.c
  124. net.c
  125. net.h
  126. osdep.c
  127. osdep.h
  128. pci-ids.txt
  129. posix-aio-compat.c
  130. posix-aio-compat.h
  131. ppc-dis.c
  132. ppc.ld
  133. ppc64.ld
  134. qemu-aio.h
  135. qemu-binfmt-conf.sh
  136. qemu-char.c
  137. qemu-char.h
  138. qemu-common.h
  139. qemu-doc.texi
  140. qemu-img.c
  141. qemu-img.texi
  142. qemu-io.c
  143. qemu-lock.h
  144. qemu-log.h
  145. qemu-malloc.c
  146. qemu-nbd.c
  147. qemu-nbd.texi
  148. qemu-option.c
  149. qemu-option.h
  150. qemu-options.hx
  151. qemu-sockets.c
  152. qemu-tech.texi
  153. qemu-thread.c
  154. qemu-thread.h
  155. qemu-timer.h
  156. qemu-tool.c
  157. qemu.sasl
  158. qemu_socket.h
  159. readline.c
  160. readline.h
  161. README
  162. rules.mak
  163. s390-dis.c
  164. s390.ld
  165. savevm.c
  166. sdl.c
  167. sdl_keysym.h
  168. sh4-dis.c
  169. softmmu-semi.h
  170. softmmu_defs.h
  171. softmmu_exec.h
  172. softmmu_header.h
  173. softmmu_template.h
  174. sparc-dis.c
  175. sparc.ld
  176. sparc64.ld
  177. sys-queue.h
  178. sysemu.h
  179. tap-win32.c
  180. targphys.h
  181. texi2pod.pl
  182. thunk.c
  183. thunk.h
  184. TODO
  185. tool-osdep.c
  186. translate-all.c
  187. uboot_image.h
  188. usb-bsd.c
  189. usb-linux.c
  190. usb-stub.c
  191. VERSION
  192. vgafont.h
  193. vl.c
  194. vnc-auth-sasl.c
  195. vnc-auth-sasl.h
  196. vnc-auth-vencrypt.c
  197. vnc-auth-vencrypt.h
  198. vnc-tls.c
  199. vnc-tls.h
  200. vnc.c
  201. vnc.h
  202. vnc_keysym.h
  203. vnchextile.h
  204. x86_64.ld
  205. x_keymap.c
  206. x_keymap.h