Skip to content
Snippets Groups Projects
  1. May 11, 2010
  2. Apr 04, 2010
    • Paul Brook's avatar
      Split TLB addend and target_phys_addr_t · 355b1943
      Paul Brook authored
      
      Historically the qemu tlb "addend" field was used for both RAM and IO accesses,
      so needed to be able to hold both host addresses (unsigned long) and guest
      physical addresses (target_phys_addr_t).  However since the introduction of
      the iotlb field it has only been used for RAM accesses.
      
      This means we can change the type of addend to unsigned long, and remove
      associated hacks in the big-endian TCG backends.
      
      We can also remove the host dependence from target_phys_addr_t.
      
      Signed-off-by: default avatarPaul Brook <paul@codesourcery.com>
      355b1943
  3. Mar 17, 2010
    • Paul Brook's avatar
      Large page TLB flush · d4c430a8
      Paul Brook authored
      
      QEMU uses a fixed page size for the CPU TLB.  If the guest uses large
      pages then we effectively split these into multiple smaller pages, and
      populate the corresponding TLB entries on demand.
      
      When the guest invalidates the TLB by virtual address we must invalidate
      all entries covered by the large page.  However the address used to
      invalidate the entry may not be present in the QEMU TLB, so we do not
      know which regions to clear.
      
      Implementing a full vaiable size TLB is hard and slow, so just keep a
      simple address/mask pair to record which addresses may have been mapped by
      large pages.  If the guest invalidates this region then flush the
      whole TLB.
      
      Signed-off-by: default avatarPaul Brook <paul@codesourcery.com>
      d4c430a8
  4. Mar 12, 2010
  5. Feb 03, 2010
  6. Dec 18, 2009
  7. Dec 12, 2009
  8. Oct 01, 2009
  9. Sep 12, 2009
    • Blue Swirl's avatar
      Fix sys-queue.h conflict for good · 72cf2d4f
      Blue Swirl authored
      
      Problem: Our file sys-queue.h is a copy of the BSD file, but there are
      some additions and it's not entirely compatible. Because of that, there have
      been conflicts with system headers on BSD systems. Some hacks have been
      introduced in the commits 15cc9235,
      f40d7537,
      96555a96 and
      3990d09a but the fixes were fragile.
      
      Solution: Avoid the conflict entirely by renaming the functions and the
      file. Revert the previous hacks.
      
      Signed-off-by: default avatarBlue Swirl <blauwirbel@gmail.com>
      72cf2d4f
  10. Aug 28, 2009
    • Andre Przywara's avatar
      extend -smp parsing to include cores= and threads= options · dc6b1c09
      Andre Przywara authored
      
      For injecting multi-core and multi-threading CPU topology into guests
      extend the -smp syntax to accommodate cores and threads specification.
      Syntax: -smp smp_value[,cores=nr_cores][,threads=nr_threads]\
      [,socket=nr_sockets][,maxcpus=max_cpus]
      smp_value is the legacy value specifying the total number of vCPUs for
      the guest. If you specify one of cores, threads or sockets this value
      can be omitted. Missing values will be computed to fulfill:
      smp_value = nr_cores * nr_threads * nr_sockets
      where it will favour sockets over cores over threads (to mimic the
      current behavior, which will only inject multiple sockets.)
      So -smp 4,threads=2 will inject two sockets with 2 threads each,
      -smp cores=4 is an abbreviation for -smp 4,cores=4,threads=1,sockets=1.
      If max_cpus (the number of hotpluggable CPUs) is omitted, it will
      be set to smp_value.
      
      Signed-off-by: default avatarAndre Przywara <andre.przywara@amd.com>
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      dc6b1c09
  11. Jul 27, 2009
  12. Jul 16, 2009
  13. Jun 04, 2009
    • Nathan Froyd's avatar
      fix gdbstub support for multiple threads in usermode, v3 · 1e9fa730
      Nathan Froyd authored
      
      When debugging multi-threaded programs, QEMU's gdb stub would report the
      correct number of threads (the qfThreadInfo and qsThreadInfo packets).
      However, the stub was unable to actually switch between threads (the T
      packet), since it would report every thread except the first as being
      dead.  Furthermore, the stub relied upon cpu_index as a reliable means
      of assigning IDs to the threads.  This was a bad idea; if you have this
      sequence of events:
      
      initial thread created
      new thread #1
      new thread #2
      thread #1 exits
      new thread #3
      
      thread #3 will have the same cpu_index as thread #1, which would confuse
      GDB.  (This problem is partly due to the remote protocol not having a
      good way to send thread creation/destruction events.)
      
      We fix this by using the host thread ID for the identifier passed to GDB
      when debugging a multi-threaded userspace program.  The thread ID might
      wrap, but the same sort of problems with wrapping thread IDs would come
      up with debugging programs natively, so this doesn't represent a
      problem.
      
      Signed-off-by: default avatarNathan Froyd <froydnj@codesourcery.com>
      1e9fa730
  14. May 19, 2009
    • Paul Brook's avatar
      Hardware convenience library · 1ad2134f
      Paul Brook authored
      
      The only target dependency for most hardware is sizeof(target_phys_addr_t).
      Build these files into a convenience library, and use that instead of
      building for every target.
      
      Remove and poison various target specific macros to avoid bogus target
      dependencies creeping back in.
      
      Big/Little endian is not handled because devices should not know or care
      about this to start with.
      
      Signed-off-by: default avatarPaul Brook <paul@codesourcery.com>
      1ad2134f
  15. Apr 24, 2009
  16. Apr 21, 2009
  17. Mar 07, 2009
  18. Mar 06, 2009
    • Aurelien Jarno's avatar
      Fix race condition on access to env->interrupt_request · be214e6c
      Aurelien Jarno authored
      
      env->interrupt_request is accessed as the bit level from both main code
      and signal handler, making a race condition possible even on CISC CPU.
      This causes freeze of QEMU under high load when running the dyntick
      clock.
      
      The patch below move the bit corresponding to CPU_INTERRUPT_EXIT in a
      separate variable, declared as volatile sig_atomic_t, so it should be
      work even on RISC CPU.
      
      We may want to move the cpu_interrupt(env, CPU_INTERRUPT_EXIT) case in
      its own function and get rid of CPU_INTERRUPT_EXIT. That can be done
      later, I wanted to keep the patch short for easier review.
      
      Signed-off-by: default avatarAurelien Jarno <aurelien@aurel32.net>
      
      git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6728 c046a42c-6fe2-441c-8c8c-71466251a162
      be214e6c
  19. Jan 14, 2009
  20. Jan 04, 2009
  21. Nov 29, 2008
  22. Nov 25, 2008
  23. Nov 18, 2008
  24. Nov 05, 2008
    • Anthony Liguori's avatar
      Add KVM support to QEMU · 7ba1e619
      Anthony Liguori authored
      
      This patch adds very basic KVM support.  KVM is a kernel module for Linux that
      allows userspace programs to make use of hardware virtualization support.  It
      current supports x86 hardware virtualization using Intel VT-x or AMD-V.  It
      also supports IA64 VT-i, PPC 440, and S390.
      
      This patch only implements the bare minimum support to get a guest booting.  It
      has very little impact the rest of QEMU and attempts to integrate nicely with
      the rest of QEMU.
      
      Even though this implementation is basic, it is significantly faster than TCG.
      Booting and shutting down a Linux guest:
      
      w/TCG:  1:32.36 elapsed  84% CPU
      
      w/KVM:  0:31.14 elapsed  59% CPU
      
      Right now, KVM is disabled by default and must be explicitly enabled with
       -enable-kvm.  We can enable it by default later when we have had better
      testing.
      
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      
      
      
      git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5627 c046a42c-6fe2-441c-8c8c-71466251a162
      7ba1e619
  25. Oct 11, 2008
  26. Jul 01, 2008
  27. Jun 29, 2008
  28. Jun 09, 2008
    • Paul Brook's avatar
      Clean up MMIO TLB handling. · 0f459d16
      Paul Brook authored
      The IO index is now stored in its own field, instead of being wedged
      into the vaddr field.  This eliminates the ROMD and watchpoint host
      pointer weirdness.  The IO index space is expanded by 1 bit, and
      several additional bits are made available in the TLB vaddr field.
      
      
      git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4704 c046a42c-6fe2-441c-8c8c-71466251a162
      0f459d16
  29. Jun 07, 2008
  30. May 29, 2008
  31. May 28, 2008
  32. Apr 27, 2008
  33. Apr 22, 2008
  34. Apr 08, 2008
  35. Feb 01, 2008
  36. Jan 31, 2008
  37. Dec 09, 2007
Loading