diff mbox series

[04/27] Make address_space_map() take a MemTxAttrs argument

Message ID 20180521140402.23318-5-peter.maydell@linaro.org
State Superseded
Headers show
Series iommu: support txattrs, support TCG execution, implement TZ MPC | expand

Commit Message

Peter Maydell May 21, 2018, 2:03 p.m. UTC
As part of plumbing MemTxAttrs down to the IOMMU translate method,
add MemTxAttrs as an argument to address_space_map().
Its callers either have an attrs value to hand, or don't care
and can use MEMTXATTRS_UNSPECIFIED.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

---
 include/exec/memory.h   | 3 ++-
 include/sysemu/dma.h    | 3 ++-
 exec.c                  | 6 ++++--
 target/ppc/mmu-hash64.c | 3 ++-
 4 files changed, 10 insertions(+), 5 deletions(-)

-- 
2.17.0

Comments

Alex Bennée May 22, 2018, 10:49 a.m. UTC | #1
Peter Maydell <peter.maydell@linaro.org> writes:

> As part of plumbing MemTxAttrs down to the IOMMU translate method,

> add MemTxAttrs as an argument to address_space_map().

> Its callers either have an attrs value to hand, or don't care

> and can use MEMTXATTRS_UNSPECIFIED.

>

> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


Reviewed-by: Alex Bennée <alex.bennee@linaro.org>


> ---

>  include/exec/memory.h   | 3 ++-

>  include/sysemu/dma.h    | 3 ++-

>  exec.c                  | 6 ++++--

>  target/ppc/mmu-hash64.c | 3 ++-

>  4 files changed, 10 insertions(+), 5 deletions(-)

>

> diff --git a/include/exec/memory.h b/include/exec/memory.h

> index 9a30a1bb9e..b1bdb376d4 100644

> --- a/include/exec/memory.h

> +++ b/include/exec/memory.h

> @@ -1952,9 +1952,10 @@ bool address_space_access_valid(AddressSpace *as, hwaddr addr, int len, bool is_

>   * @addr: address within that address space

>   * @plen: pointer to length of buffer; updated on return

>   * @is_write: indicates the transfer direction

> + * @attrs: memory attributes

>   */

>  void *address_space_map(AddressSpace *as, hwaddr addr,

> -                        hwaddr *plen, bool is_write);

> +                        hwaddr *plen, bool is_write, MemTxAttrs attrs);

>

>  /* address_space_unmap: Unmaps a memory region previously mapped by address_space_map()

>   *

> diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h

> index c228c66513..0d73902634 100644

> --- a/include/sysemu/dma.h

> +++ b/include/sysemu/dma.h

> @@ -132,7 +132,8 @@ static inline void *dma_memory_map(AddressSpace *as,

>      hwaddr xlen = *len;

>      void *p;

>

> -    p = address_space_map(as, addr, &xlen, dir == DMA_DIRECTION_FROM_DEVICE);

> +    p = address_space_map(as, addr, &xlen, dir == DMA_DIRECTION_FROM_DEVICE,

> +                          MEMTXATTRS_UNSPECIFIED);

>      *len = xlen;

>      return p;

>  }

> diff --git a/exec.c b/exec.c

> index d314c7cc39..1dc81cfe4a 100644

> --- a/exec.c

> +++ b/exec.c

> @@ -3529,7 +3529,8 @@ flatview_extend_translation(FlatView *fv, hwaddr addr,

>  void *address_space_map(AddressSpace *as,

>                          hwaddr addr,

>                          hwaddr *plen,

> -                        bool is_write)

> +                        bool is_write,

> +                        MemTxAttrs attrs)

>  {

>      hwaddr len = *plen;

>      hwaddr l, xlat;

> @@ -3616,7 +3617,8 @@ void *cpu_physical_memory_map(hwaddr addr,

>                                hwaddr *plen,

>                                int is_write)

>  {

> -    return address_space_map(&address_space_memory, addr, plen, is_write);

> +    return address_space_map(&address_space_memory, addr, plen, is_write,

> +                             MEMTXATTRS_UNSPECIFIED);

>  }

>

>  void cpu_physical_memory_unmap(void *buffer, hwaddr len,

> diff --git a/target/ppc/mmu-hash64.c b/target/ppc/mmu-hash64.c

> index a1db20e3a8..aa200cba4c 100644

> --- a/target/ppc/mmu-hash64.c

> +++ b/target/ppc/mmu-hash64.c

> @@ -431,7 +431,8 @@ const ppc_hash_pte64_t *ppc_hash64_map_hptes(PowerPCCPU *cpu,

>          return NULL;

>      }

>

> -    hptes = address_space_map(CPU(cpu)->as, base + pte_offset, &plen, false);

> +    hptes = address_space_map(CPU(cpu)->as, base + pte_offset, &plen, false,

> +                              MEMTXATTRS_UNSPECIFIED);

>      if (plen < (n * HASH_PTE_SIZE_64)) {

>          hw_error("%s: Unable to map all requested HPTEs\n", __func__);

>      }



--
Alex Bennée
Richard Henderson May 22, 2018, 4:13 p.m. UTC | #2
On 05/21/2018 07:03 AM, Peter Maydell wrote:
> As part of plumbing MemTxAttrs down to the IOMMU translate method,

> add MemTxAttrs as an argument to address_space_map().

> Its callers either have an attrs value to hand, or don't care

> and can use MEMTXATTRS_UNSPECIFIED.

> 

> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

> ---


Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~
diff mbox series

Patch

diff --git a/include/exec/memory.h b/include/exec/memory.h
index 9a30a1bb9e..b1bdb376d4 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -1952,9 +1952,10 @@  bool address_space_access_valid(AddressSpace *as, hwaddr addr, int len, bool is_
  * @addr: address within that address space
  * @plen: pointer to length of buffer; updated on return
  * @is_write: indicates the transfer direction
+ * @attrs: memory attributes
  */
 void *address_space_map(AddressSpace *as, hwaddr addr,
-                        hwaddr *plen, bool is_write);
+                        hwaddr *plen, bool is_write, MemTxAttrs attrs);
 
 /* address_space_unmap: Unmaps a memory region previously mapped by address_space_map()
  *
diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h
index c228c66513..0d73902634 100644
--- a/include/sysemu/dma.h
+++ b/include/sysemu/dma.h
@@ -132,7 +132,8 @@  static inline void *dma_memory_map(AddressSpace *as,
     hwaddr xlen = *len;
     void *p;
 
-    p = address_space_map(as, addr, &xlen, dir == DMA_DIRECTION_FROM_DEVICE);
+    p = address_space_map(as, addr, &xlen, dir == DMA_DIRECTION_FROM_DEVICE,
+                          MEMTXATTRS_UNSPECIFIED);
     *len = xlen;
     return p;
 }
diff --git a/exec.c b/exec.c
index d314c7cc39..1dc81cfe4a 100644
--- a/exec.c
+++ b/exec.c
@@ -3529,7 +3529,8 @@  flatview_extend_translation(FlatView *fv, hwaddr addr,
 void *address_space_map(AddressSpace *as,
                         hwaddr addr,
                         hwaddr *plen,
-                        bool is_write)
+                        bool is_write,
+                        MemTxAttrs attrs)
 {
     hwaddr len = *plen;
     hwaddr l, xlat;
@@ -3616,7 +3617,8 @@  void *cpu_physical_memory_map(hwaddr addr,
                               hwaddr *plen,
                               int is_write)
 {
-    return address_space_map(&address_space_memory, addr, plen, is_write);
+    return address_space_map(&address_space_memory, addr, plen, is_write,
+                             MEMTXATTRS_UNSPECIFIED);
 }
 
 void cpu_physical_memory_unmap(void *buffer, hwaddr len,
diff --git a/target/ppc/mmu-hash64.c b/target/ppc/mmu-hash64.c
index a1db20e3a8..aa200cba4c 100644
--- a/target/ppc/mmu-hash64.c
+++ b/target/ppc/mmu-hash64.c
@@ -431,7 +431,8 @@  const ppc_hash_pte64_t *ppc_hash64_map_hptes(PowerPCCPU *cpu,
         return NULL;
     }
 
-    hptes = address_space_map(CPU(cpu)->as, base + pte_offset, &plen, false);
+    hptes = address_space_map(CPU(cpu)->as, base + pte_offset, &plen, false,
+                              MEMTXATTRS_UNSPECIFIED);
     if (plen < (n * HASH_PTE_SIZE_64)) {
         hw_error("%s: Unable to map all requested HPTEs\n", __func__);
     }