1. 31 10月, 2016 2 次提交
  2. 25 10月, 2016 3 次提交
  3. 12 10月, 2016 1 次提交
  4. 27 9月, 2016 8 次提交
  5. 27 7月, 2016 1 次提交
  6. 19 7月, 2016 1 次提交
  7. 12 7月, 2016 1 次提交
  8. 08 7月, 2016 1 次提交
    • I
      cpu: Use CPUClass->parse_features() as convertor to global properties · 62a48a2a
      Igor Mammedov 提交于
      Currently CPUClass->parse_features() is used to parse -cpu
      features string and set properties on created CPU instances.
      
      But considering that features specified by -cpu apply to every
      created CPU instance, it doesn't make sense to parse the same
      features string for every CPU created. It also makes every target
      that cares about parsing features string explicitly call
      CPUClass->parse_features() parser, which gets in a way if we
      consider using generic device_add for CPU hotplug as device_add
      has not a clue about CPU specific hooks.
      
      Turns out we can use global properties mechanism to set
      properties on every created CPU instance for a given type. That
      way it's possible to convert CPU features into a set of global
      properties for CPU type specified by -cpu cpu_model and common
      Device.device_post_init() will apply them to CPU of given type
      automatically regardless whether it's manually created CPU or CPU
      created with help of device_add.
      Signed-off-by: NIgor Mammedov <imammedo@redhat.com>
      Reviewed-by: NEduardo Habkost <ehabkost@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      62a48a2a
  9. 30 5月, 2016 2 次提交
  10. 19 5月, 2016 2 次提交
  11. 13 5月, 2016 2 次提交
    • S
      tcg: Remove needless CPUState::current_tb · 3213525f
      Sergey Fedorov 提交于
      This field was used for telling cpu_interrupt() to unlink a chain of TBs
      being executed when it worked that way. Now, cpu_interrupt() don't do
      this anymore. So we don't need this field anymore.
      Signed-off-by: NSergey Fedorov <serge.fdrv@gmail.com>
      Signed-off-by: NSergey Fedorov <sergey.fedorov@linaro.org>
      Message-Id: <1462273462-14036-1-git-send-email-sergey.fedorov@linaro.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      3213525f
    • S
      tcg: Rework tb_invalidated_flag · 6f789be5
      Sergey Fedorov 提交于
      'tb_invalidated_flag' was meant to catch two events:
       * some TB has been invalidated by tb_phys_invalidate();
       * the whole translation buffer has been flushed by tb_flush().
      
      Then it was checked:
       * in cpu_exec() to ensure that the last executed TB can be safely
         linked to directly call the next one;
       * in cpu_exec_nocache() to decide if the original TB should be provided
         for further possible invalidation along with the temporarily
         generated TB.
      
      It is always safe to patch an invalidated TB since it is not going to be
      used anyway. It is also safe to call tb_phys_invalidate() for an already
      invalidated TB. Thus, setting this flag in tb_phys_invalidate() is
      simply unnecessary. Moreover, it can prevent from pretty proper linking
      of TBs, if any arbitrary TB has been invalidated. So just don't touch it
      in tb_phys_invalidate().
      
      If this flag is only used to catch whether tb_flush() has been called
      then rename it to 'tb_flushed'. Declare it as 'bool' and stick to using
      only 'true' and 'false' to set its value. Also, instead of setting it in
      tb_gen_code(), just after tb_flush() has been called, do it right inside
      of tb_flush().
      
      In cpu_exec(), this flag is used to track if tb_flush() has been called
      and have made 'next_tb' (a reference to the last executed TB) invalid
      for linking it to directly call the next TB. tb_flush() can be called
      during the CPU execution loop from tb_gen_code(), during TB execution or
      by another thread while 'tb_lock' is released. Catch for translation
      buffer flush reliably by resetting this flag once before first TB lookup
      and each time we find it set before trying to add a direct jump. Don't
      touch in in tb_find_physical().
      
      Each vCPU has its own execution loop in multithreaded mode and thus
      should have its own copy of the flag to be able to reset it with its own
      'next_tb' and don't affect any other vCPU execution thread. So make this
      flag per-vCPU and move it to CPUState.
      
      In cpu_exec_nocache(), we only need to check if tb_flush() has been
      called from tb_gen_code() called by cpu_exec_nocache() itself. To do
      this reliably, preserve the old value of the flag, reset it before
      calling tb_gen_code(), check afterwards, and combine the saved value
      back to the flag.
      
      This patch is based on the patch "tcg: move tb_invalidated_flag to
      CPUState" from Paolo Bonzini <pbonzini@redhat.com>.
      Signed-off-by: NSergey Fedorov <serge.fdrv@gmail.com>
      Signed-off-by: NSergey Fedorov <sergey.fedorov@linaro.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      6f789be5
  12. 23 3月, 2016 2 次提交
  13. 01 3月, 2016 1 次提交
  14. 23 2月, 2016 1 次提交
    • P
      include: Clean up includes · 90ce6e26
      Peter Maydell 提交于
      Clean up includes so that osdep.h is included first and headers
      which it implies are not included manually.
      
      This commit was created with scripts/clean-includes.
      
      NB: If this commit breaks compilation for your out-of-tree
      patchseries or fork, then you need to make sure you add
      #include "qemu/osdep.h" to any new .c files that you have.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      90ce6e26
  15. 11 2月, 2016 1 次提交
  16. 27 1月, 2016 1 次提交
  17. 21 1月, 2016 4 次提交
  18. 13 10月, 2015 1 次提交
    • P
      exec.c: Collect AddressSpace related fields into a CPUAddressSpace struct · 32857f4d
      Peter Maydell 提交于
      Gather up all the fields currently in CPUState which deal with the CPU's
      AddressSpace into a separate CPUAddressSpace struct. This paves the way
      for allowing the CPU to know about more than one AddressSpace.
      
      The rearrangement also allows us to make the MemoryListener a directly
      embedded object in the CPUAddressSpace (it could not be embedded in
      CPUState because 'struct MemoryListener' isn't defined for the user-only
      builds). This allows us to resolve the FIXME in tcg_commit() by going
      directly from the MemoryListener to the CPUAddressSpace.
      
      This patch extracts the actual update of the cached dispatch pointer
      from cpu_reload_memory_map() (which is renamed accordingly to
      cpu_reloading_memory_map() as it is only responsible for breaking
      cpu-exec.c's RCU critical section now). This lets us keep the definition
      of the CPUAddressSpace struct private to exec.c.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-Id: <1443709790-25180-4-git-send-email-peter.maydell@linaro.org>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      32857f4d
  19. 07 10月, 2015 1 次提交
  20. 30 9月, 2015 1 次提交
  21. 16 9月, 2015 1 次提交
  22. 09 9月, 2015 2 次提交