1. 20 6月, 2013 2 次提交
  2. 29 5月, 2013 1 次提交
  3. 19 12月, 2012 3 次提交
  4. 12 11月, 2012 1 次提交
  5. 23 10月, 2012 1 次提交
    • A
      Rename target_phys_addr_t to hwaddr · a8170e5e
      Avi Kivity 提交于
      target_phys_addr_t is unwieldly, violates the C standard (_t suffixes are
      reserved) and its purpose doesn't match the name (most target_phys_addr_t
      addresses are not target specific).  Replace it with a finger-friendly,
      standards conformant hwaddr.
      
      Outstanding patchsets can be fixed up with the command
      
        git rebase -i --exec 'find -name "*.[ch]"
                              | xargs s/target_phys_addr_t/hwaddr/g' origin
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      a8170e5e
  6. 22 10月, 2012 1 次提交
  7. 05 10月, 2012 1 次提交
  8. 28 7月, 2012 1 次提交
  9. 28 6月, 2012 5 次提交
    • B
      Add a memory barrier to DMA functions · 7a0bac4d
      Benjamin Herrenschmidt 提交于
      The emulated devices can run simultaneously with the guest, so
      we need to be careful with ordering of load and stores done by
      them to the guest system memory, which need to be observed in
      the right order by the guest operating system.
      
      This adds a barrier call to the basic DMA read/write ops which
      is currently implemented as a smp_mb(), but could be later
      improved for more fine grained control of barriers.
      
      Additionally, a _relaxed() variant of the accessors is provided
      to easily convert devices who would be performance sensitive
      and negatively impacted by the change.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      7a0bac4d
    • D
      iommu: Introduce IOMMU emulation infrastructure · e5332e63
      David Gibson 提交于
      This patch adds the basic infrastructure necessary to emulate an IOMMU
      visible to the guest.  The DMAContext structure is extended with
      information and a callback describing the translation, and the various
      DMA functions used by devices will now perform IOMMU translation using
      this callback.
      
      Cc: Michael S. Tsirkin <mst@redhat.com>
      Cc: Richard Henderson <rth@twiddle.net>
      Signed-off-by: NEduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      e5332e63
    • D
      iommu: Make sglists and dma_bdrv helpers use new universal DMA helpers · c65bcef3
      David Gibson 提交于
      dma-helpers.c contains a number of helper functions for doing
      scatter/gather DMA, and various block device related DMA.  Currently,
      these directly access guest memory using cpu_physical_memory_*(),
      assuming no IOMMU translation.
      
      This patch updates this code to use the new universal DMA helper
      functions.  qemu_sglist_init() now takes a DMAContext * to describe
      the DMA address space in which the scatter/gather will take place.
      
      We minimally update the callers qemu_sglist_init() to pass NULL
      (i.e. no translation, same as current behaviour).  Some of those
      callers should pass something else in some cases to allow proper IOMMU
      translation in future, but that will be fixed in later patches.
      
      Cc: Kevin Wolf <kwolf@redhat.com>
      Cc: Michael S. Tsirkin <mst@redhat.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      c65bcef3
    • D
      iommu: Add universal DMA helper functions · d86a77f8
      David Gibson 提交于
      Not that long ago, every device implementation using DMA directly
      accessed guest memory using cpu_physical_memory_*().  This meant that
      adding support for a guest visible IOMMU would require changing every
      one of these devices to go through IOMMU translation.
      
      Shortly before qemu 1.0, I made a start on fixing this by providing
      helper functions for PCI DMA.  These are currently just stubs which
      call the direct access functions, but mean that an IOMMU can be
      implemented in one place, rather than for every PCI device.
      
      Clearly, this doesn't help for non PCI devices, which could also be
      IOMMU translated on some platforms.  It is also problematic for the
      devices which have both PCI and non-PCI version (e.g. OHCI, AHCI) - we
      cannot use the the pci_dma_*() functions, because they assume the
      presence of a PCIDevice, but we don't want to have to check between
      pci_dma_*() and cpu_physical_memory_*() every time we do a DMA in the
      device code.
      
      This patch makes the first step on addressing both these problems, by
      introducing new (stub) dma helper functions which can be used for any
      DMA capable device.
      
      These dma functions take a DMAContext *, a new (currently empty)
      variable describing the DMA address space in which the operation is to
      take place.  NULL indicates untranslated DMA directly into guest
      physical address space.  The intention is that in future non-NULL
      values will given information about any necessary IOMMU translation.
      
      DMA using devices must obtain a DMAContext (or, potentially, contexts)
      from their bus or platform.  For now this patch just converts the PCI
      wrappers to be implemented in terms of the universal wrappers,
      converting other drivers can take place over time.
      
      Cc: Michael S. Tsirkin <mst@redhat.com>
      Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
      Cc: Richard Henderson <rth@twiddle.net>
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      d86a77f8
    • D
      Better support for dma_addr_t variables · 8292f75a
      David Gibson 提交于
      A while back, we introduced the dma_addr_t type, which is supposed to
      be used for bus visible memory addresses.  At present, this is an
      alias for target_phys_addr_t, but this will change when we eventually
      add support for guest visible IOMMUs.
      
      There are some instances of target_phys_addr_t in the code now which
      should really be dma_addr_t, but can't be trivially converted due to
      missing features which this patch corrects.
      
       * We add DMA_ADDR_BITS analagous to TARGET_PHYS_ADDR_BITS.  This is
         important where we need to make a compile-time (#if) based on the
         size of dma_addr_t.
      
       * We add a new helper macro to create device properties which take a
         dma_addr_t, currently an alias to DEFINE_PROP_TADDR().
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      8292f75a
  10. 07 4月, 2012 1 次提交
  11. 05 4月, 2012 1 次提交
  12. 22 2月, 2012 3 次提交
  13. 02 11月, 2011 2 次提交
    • D
      Use dma_addr_t type for scatter/gather code · d3231181
      David Gibson 提交于
      This patch uses the newly created dma_addr_t type throughout the
      scatter/gather handling code in dma-helpers.c whenever we need to
      represent a dma bus address.  This makes a better distinction as to
      what is a bus address and what is a cpu physical address.  Since we
      don't support IOMMUs yet, they can't be very different for now, but
      that will change in future, and this preliminary helps clarify what's
      going on.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      d3231181
    • D
      Define DMA address and direction types · d9d1055e
      David Gibson 提交于
      As a preliminary to adding more extensive DMA and IOMMU infrastructure
      support into qemu, this patch defines a dma_addr_t for storing DMA bus
      addresses and a DMADirection enum which describes whether a DMA is
      from an external device to main memory or from main memory to an
      external device.
      
      For now dma_addr_t is just defined to be target_phys_addr_t, but in
      future, we can change this to support machines where we have bus
      addresses which don't necessarily have the same format as CPU physical
      addresses.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      d9d1055e
  14. 20 9月, 2011 1 次提交
  15. 19 9月, 2011 1 次提交
  16. 04 8月, 2011 1 次提交
  17. 15 6月, 2011 1 次提交
  18. 02 10月, 2009 2 次提交
  19. 27 5月, 2009 1 次提交
  20. 19 5月, 2009 1 次提交
    • P
      Hardware convenience library · 1ad2134f
      Paul Brook 提交于
      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: NPaul Brook <paul@codesourcery.com>
      1ad2134f
  21. 21 3月, 2009 1 次提交
  22. 06 2月, 2009 2 次提交