qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-arm] [PATCH 10/27] Make flatview_translate() take a MemTxAttrs


From: Alex Bennée
Subject: Re: [Qemu-arm] [PATCH 10/27] Make flatview_translate() take a MemTxAttrs argument
Date: Tue, 22 May 2018 11:58:53 +0100
User-agent: mu4e 1.1.0; emacs 26.1

Peter Maydell <address@hidden> writes:

> As part of plumbing MemTxAttrs down to the IOMMU translate method,
> add MemTxAttrs as an argument to flatview_translate(); all its
> callers now have attrs available.
>
> Signed-off-by: Peter Maydell <address@hidden>

Reviewed-by: Alex Bennée <address@hidden>

> ---
>  include/exec/memory.h |  7 ++++---
>  exec.c                | 17 +++++++++--------
>  2 files changed, 13 insertions(+), 11 deletions(-)
>
> diff --git a/include/exec/memory.h b/include/exec/memory.h
> index 444fceac55..3980ab47ed 100644
> --- a/include/exec/memory.h
> +++ b/include/exec/memory.h
> @@ -1913,7 +1913,8 @@ IOMMUTLBEntry 
> address_space_get_iotlb_entry(AddressSpace *as, hwaddr addr,
>   */
>  MemoryRegion *flatview_translate(FlatView *fv,
>                                   hwaddr addr, hwaddr *xlat,
> -                                 hwaddr *len, bool is_write);
> +                                 hwaddr *len, bool is_write,
> +                                 MemTxAttrs attrs);
>
>  static inline MemoryRegion *address_space_translate(AddressSpace *as,
>                                                      hwaddr addr, hwaddr 
> *xlat,
> @@ -1921,7 +1922,7 @@ static inline MemoryRegion 
> *address_space_translate(AddressSpace *as,
>                                                      MemTxAttrs attrs)
>  {
>      return flatview_translate(address_space_to_flatview(as),
> -                              addr, xlat, len, is_write);
> +                              addr, xlat, len, is_write, attrs);
>  }
>
>  /* address_space_access_valid: check for validity of accessing an address
> @@ -2030,7 +2031,7 @@ MemTxResult address_space_read(AddressSpace *as, hwaddr 
> addr,
>              rcu_read_lock();
>              fv = address_space_to_flatview(as);
>              l = len;
> -            mr = flatview_translate(fv, addr, &addr1, &l, false);
> +            mr = flatview_translate(fv, addr, &addr1, &l, false, attrs);
>              if (len == l && memory_access_is_direct(mr, false)) {
>                  ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
>                  memcpy(buf, ptr, len);
> diff --git a/exec.c b/exec.c
> index 9229fb4058..b818ba87f4 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -618,7 +618,8 @@ iotlb_fail:
>
>  /* Called from RCU critical section */
>  MemoryRegion *flatview_translate(FlatView *fv, hwaddr addr, hwaddr *xlat,
> -                                 hwaddr *plen, bool is_write)
> +                                 hwaddr *plen, bool is_write,
> +                                 MemTxAttrs attrs)
>  {
>      MemoryRegion *mr;
>      MemoryRegionSection section;
> @@ -3152,7 +3153,7 @@ static MemTxResult flatview_write_continue(FlatView 
> *fv, hwaddr addr,
>          }
>
>          l = len;
> -        mr = flatview_translate(fv, addr, &addr1, &l, true);
> +        mr = flatview_translate(fv, addr, &addr1, &l, true, attrs);
>      }
>
>      return result;
> @@ -3168,7 +3169,7 @@ static MemTxResult flatview_write(FlatView *fv, hwaddr 
> addr, MemTxAttrs attrs,
>      MemTxResult result = MEMTX_OK;
>
>      l = len;
> -    mr = flatview_translate(fv, addr, &addr1, &l, true);
> +    mr = flatview_translate(fv, addr, &addr1, &l, true, attrs);
>      result = flatview_write_continue(fv, addr, attrs, buf, len,
>                                       addr1, l, mr);
>
> @@ -3239,7 +3240,7 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr 
> addr,
>          }
>
>          l = len;
> -        mr = flatview_translate(fv, addr, &addr1, &l, false);
> +        mr = flatview_translate(fv, addr, &addr1, &l, false, attrs);
>      }
>
>      return result;
> @@ -3254,7 +3255,7 @@ static MemTxResult flatview_read(FlatView *fv, hwaddr 
> addr,
>      MemoryRegion *mr;
>
>      l = len;
> -    mr = flatview_translate(fv, addr, &addr1, &l, false);
> +    mr = flatview_translate(fv, addr, &addr1, &l, false, attrs);
>      return flatview_read_continue(fv, addr, attrs, buf, len,
>                                    addr1, l, mr);
>  }
> @@ -3468,7 +3469,7 @@ static bool flatview_access_valid(FlatView *fv, hwaddr 
> addr, int len,
>
>      while (len > 0) {
>          l = len;
> -        mr = flatview_translate(fv, addr, &xlat, &l, is_write);
> +        mr = flatview_translate(fv, addr, &xlat, &l, is_write, attrs);
>          if (!memory_access_is_direct(mr, is_write)) {
>              l = memory_access_size(mr, l, addr);
>              /* When our callers all have attrs we'll pass them through here 
> */
> @@ -3517,7 +3518,7 @@ flatview_extend_translation(FlatView *fv, hwaddr addr,
>
>          len = target_len;
>          this_mr = flatview_translate(fv, addr, &xlat,
> -                                                   &len, is_write);
> +                                     &len, is_write, attrs);
>          if (this_mr != mr || xlat != base + done) {
>              return done;
>          }
> @@ -3550,7 +3551,7 @@ void *address_space_map(AddressSpace *as,
>      l = len;
>      rcu_read_lock();
>      fv = address_space_to_flatview(as);
> -    mr = flatview_translate(fv, addr, &xlat, &l, is_write);
> +    mr = flatview_translate(fv, addr, &xlat, &l, is_write, attrs);
>
>      if (!memory_access_is_direct(mr, is_write)) {
>          if (atomic_xchg(&bounce.in_use, true)) {


--
Alex Bennée



reply via email to

[Prev in Thread] Current Thread [Next in Thread]