1. 05 12月, 2008 2 次提交
  2. 26 11月, 2008 1 次提交
    • A
      Revert r5636 to fix icount on hosts w/o high-res clocks · 357c692c
      aliguori 提交于
      Changeset r5636 changed the timers to run in the alarm callback.  The 
      alarm callback can only be called as frequently as the host alarm timer 
      fires.  For older Linux hosts and possibly non-Linux hosts, this can be 
      as high as a 1ms granularity.
      
      icount calculates the select timeout based on the next deadline and 
      select is usually capable of sleeping for a short period of time than 
      alarm timer granularity.  This means that changing the timer callbacks 
      to be based on alarm firing caused timers to fire much later than they 
      ought to when using icount.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      
      
      
      git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5796 c046a42c-6fe2-441c-8c8c-71466251a162
      357c692c
  3. 19 11月, 2008 1 次提交
    • A
      gdbstub: manage CPUs as threads (Jan Kiszka) · 880a7578
      aliguori 提交于
      This patch enhances QEMU's built-in debugger for SMP guest debugging.
      Using the thread support of the gdb remote protocol, each VCPU is mapped
      on a pseudo thread and exposed to the gdb frontend. This way you can
      easy switch the focus of gdb between the VCPUs and observe their states.
      On breakpoint hit, the focus is automatically adjusted just as for
      normal multi-threaded application under gdb control.
      
      Furthermore, the patch propagates breakpoint and watchpoint insertions
      or removals to all CPUs, not just the current one as it was the case so
      far. Without this, SMP guest debugging was practically unfeasible.
      Signed-off-by: NJan Kiszka <jan.kiszka@siemens.com>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      
      
      
      git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5743 c046a42c-6fe2-441c-8c8c-71466251a162
      880a7578
  4. 16 11月, 2008 2 次提交
  5. 12 11月, 2008 2 次提交
  6. 11 11月, 2008 2 次提交
  7. 09 11月, 2008 1 次提交
  8. 08 11月, 2008 1 次提交
  9. 06 11月, 2008 6 次提交
  10. 01 11月, 2008 9 次提交
    • A
      Remove dumb_refresh · 2ad1a437
      aliguori 提交于
      It is safe not to set dpy_refresh and that's used to indicate that the display
      doesn't need updates.  This saves us two wakeups per second.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      
      
      
      git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5583 c046a42c-6fe2-441c-8c8c-71466251a162
      2ad1a437
    • A
      Move network redirection code out of vl.c and into net.c · 63a01ef8
      aliguori 提交于
      Mostly code motion.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      
      
      
      git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5581 c046a42c-6fe2-441c-8c8c-71466251a162
      63a01ef8
    • A
      Move CharDriverState code out of vl.c · 6f97dba0
      aliguori 提交于
      The motivating goal behind this is to allow other tools to use the CharDriver
      code.  This patch is pure code motion except for the Makefile changes and the
      copyright/header in qemu-char.c.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      
      
      
      git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5580 c046a42c-6fe2-441c-8c8c-71466251a162
      6f97dba0
    • A
      Move some declarations around in the QEMU CharDriver code · 0e82f34d
      aliguori 提交于
      The goal of this series is to move the CharDriverState code out of vl.c and
      into its own file, qemu-char.c.  This patch moves around some declarations so
      the next patch can be pure code motion.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      
      
      
      git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5579 c046a42c-6fe2-441c-8c8c-71466251a162
      0e82f34d
    • A
      Increase default IO timeout from 10ms to 5s · 0a1af395
      aliguori 提交于
      With the recent changes to the main loop, we no longer have unconditional
      polling.  This means we can now sleep in select() for much longer than we
      previously did.  This patch increases our select() sleep time from 10ms to 5s
      which is effectively unlimited since we're going to wake up sooner than that
      in almost all circumstances.
      
      With this patch, I see the number of wake-ups with an idle dynamic ticks guest
      drop from 80 per second to about 15 times per second.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      
      
      
      git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5578 c046a42c-6fe2-441c-8c8c-71466251a162
      0a1af395
    • A
      Main loop fixes/cleanup · 56f3a5d0
      aliguori 提交于
      Tidy up win32 main loop bits, allow timeout >= 1s, and force timeout to 0 if
      there is a pending bottom half.
      
      
      
      git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5577 c046a42c-6fe2-441c-8c8c-71466251a162
      56f3a5d0
    • A
      Implement "info chardev" command. (Gerd Hoffmann) · 5ccfae10
      aliguori 提交于
      This patch makes qemu keep track of the character devices in use and
      implements a "info chardev" monitor command to print a list.
      
      qemu_chr_open() sticks the devices into a linked list now.  It got a new
      argument (label), so there is a name for each device.  It also assigns a
      filename to each character device.  By default it just copyes the
      filename passed in.  Individual drivers can fill in something else
      though.  qemu_chr_open_pty() sets the filename to name of the pseudo tty
      allocated.
      
      Output looks like this:
      
        (qemu) info chardev
        monitor: filename=unix:/tmp/run.sh-26827/monitor,server,nowait
        serial0: filename=unix:/tmp/run.sh-26827/console,server
        serial1: filename=pty:/dev/pts/5
        parallel0: filename=vc:640x480
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      
      
      
      git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5575 c046a42c-6fe2-441c-8c8c-71466251a162
      5ccfae10
    • A
      Make DMA bottom-half driven (v2) · 492c30af
      aliguori 提交于
      The current DMA routines are driven by a call in main_loop_wait() after every
      select.
      
      This patch converts the DMA code to be driven by a constantly rescheduled
      bottom half.  The advantage of using a scheduled bottom half is that we can
      stop scheduling the bottom half when there no DMA channels are runnable.  This
      means we can potentially detect this case and sleep longer in the main loop.
      
      The only two architectures implementing DMA_run() are cris and i386.  For cris,
      I converted it to a simple repeating bottom half.  I've only compile tested
      this as cris does not seem to work on a 64-bit host.  It should be functionally
      identical to the previous implementation so I expect it to work.
      
      For x86, I've made sure to only fire the DMA bottom half if there is a DMA
      channel that is runnable.  The effect of this is that unless you're using sb16
      or a floppy disk, the DMA bottom half never fires.
      
      You probably should test this malc.  My own benchmarks actually show slight
      improvement by it's possible the change in timing could affect your demos.
      
      Since v1, I've changed the code to use a BH instead of a timer.  cris at least
      seems to depend on faster than 10ms polling.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      
      
      
      git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5573 c046a42c-6fe2-441c-8c8c-71466251a162
      492c30af
    • A
      Make bottom halves more robust · 1b435b10
      aliguori 提交于
      Bottom halves are supposed to not complete until the next iteration of the main
      loop.  This is very important to ensure that guests can not cause stack
      overflows in the block driver code.  Right now, if you attempt to schedule a
      bottom half within a bottom half callback, you will enter an infinite loop.
      
      This patch uses the same logic that we use for the IOHandler loop to make the
      bottom half processing robust in list manipulation while in a callback.
      
      This patch also introduces idle scheduling for bottom halves.  qemu_bh_poll()
      returns an indication of whether any bottom halves were successfully executed.
      qemu_aio_wait() uses this to immediately return if a bottom half was executed
      instead of waiting for a completion notification.
      
      qemu_bh_schedule_idle() works around this by not reporting the callback has
      run in the qemu_bh_poll loop.  qemu_aio_wait() probably needs some refactoring
      but that would require a larger code audit.  idle scheduling seems like a good
      compromise.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      
      
      
      
      git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5572 c046a42c-6fe2-441c-8c8c-71466251a162
      1b435b10
  11. 28 10月, 2008 1 次提交
  12. 25 10月, 2008 3 次提交
  13. 24 10月, 2008 1 次提交
  14. 14 10月, 2008 2 次提交
  15. 13 10月, 2008 3 次提交
  16. 12 10月, 2008 1 次提交
  17. 09 10月, 2008 1 次提交
    • A
      Fix IO performance regression in sparc · 9e472e10
      aliguori 提交于
      Replace signalfd with signal handler/pipe.  There is no way to interrupt
      the CPU execution loop when a file descriptor becomes readable.  This
      results in a large performance regression in sparc emulation during
      bootup.
         
      This patch switches us to signal handler/pipe which was originally
      suggested by Ian Jackson.  The signal handler lets us interrupt the
      CPU emulation loop while the write to a pipe lets us avoid the
      select/signal race condition.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      
      
      
      git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5451 c046a42c-6fe2-441c-8c8c-71466251a162
      9e472e10
  18. 08 10月, 2008 1 次提交