diff mbox series

[qemu,v3,02/13] exec: Explicitely export target AS from address_space_translate_internal

Message ID 20170918101709.30421-3-aik@ozlabs.ru
State New
Headers show
Series memory: Reduce memory use | expand

Commit Message

Alexey Kardashevskiy Sept. 18, 2017, 10:16 a.m. UTC
This is not so mechanical change in order to move to shared FlatViews
so make it a separate patch. The first argument of
address_space_do_translate() will become a FlatView, however since
address_space_get_iotlb_entry() still wants AS, hence this change.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---
 exec.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

Comments

Eric Blake Sept. 18, 2017, 2:28 p.m. UTC | #1
On 09/18/2017 05:16 AM, Alexey Kardashevskiy wrote:

Subject line: s/Explicitely/Explicitly/

> This is not so mechanical change in order to move to shared FlatViews
> so make it a separate patch.

Hard to understand; it's unclear whether this is the mechanical addition
of a parameter before the next patch does shared FlatViews, or whether
the next patch is mechanical by virtue of this patch doing the
non-mechanical changes.  Maybe:

Mechanical change to add a parameter to make it easier for the next
patch to share FlatViews.

> The first argument of
> address_space_do_translate() will become a FlatView, however since
> address_space_get_iotlb_entry() still wants AS, hence this change.
> 
> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> ---
>  exec.c | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
>
Alexey Kardashevskiy Sept. 19, 2017, 12:15 a.m. UTC | #2
On 19/09/17 00:28, Eric Blake wrote:
> On 09/18/2017 05:16 AM, Alexey Kardashevskiy wrote:
> 
> Subject line: s/Explicitely/Explicitly/
> 
>> This is not so mechanical change in order to move to shared FlatViews
>> so make it a separate patch.
> 
> Hard to understand; it's unclear whether this is the mechanical addition
> of a parameter before the next patch does shared FlatViews, or whether
> the next patch is mechanical by virtue of this patch doing the
> non-mechanical changes.  Maybe:
> 
> Mechanical change to add a parameter to make it easier for the next
> patch to share FlatViews.

I was told in this list that "mechanical" is when simple 's/lalala/mememe/'
does the job, when it is bigger than this - then it is "this should not
cause any behavioural change" :) I'll add such note where applicable.

tbh only 1/13, 11/13 and 13/13 do cause a change in behaviour, others do not.

> 
>> The first argument of
>> address_space_do_translate() will become a FlatView, however since
>> address_space_get_iotlb_entry() still wants AS, hence this change.
>>
>> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
>> ---
>>  exec.c | 11 +++++++----
>>  1 file changed, 7 insertions(+), 4 deletions(-)
>>
diff mbox series

Patch

diff --git a/exec.c b/exec.c
index d20c34ca83..bd94248390 100644
--- a/exec.c
+++ b/exec.c
@@ -477,7 +477,8 @@  static MemoryRegionSection address_space_do_translate(AddressSpace *as,
                                                       hwaddr *xlat,
                                                       hwaddr *plen,
                                                       bool is_write,
-                                                      bool is_mmio)
+                                                      bool is_mmio,
+                                                      AddressSpace **target_as)
 {
     IOMMUTLBEntry iotlb;
     MemoryRegionSection *section;
@@ -504,6 +505,7 @@  static MemoryRegionSection address_space_do_translate(AddressSpace *as,
         }
 
         as = iotlb.target_as;
+        *target_as = iotlb.target_as;
     }
 
     *xlat = addr;
@@ -526,7 +528,7 @@  IOMMUTLBEntry address_space_get_iotlb_entry(AddressSpace *as, hwaddr addr,
 
     /* This can never be MMIO. */
     section = address_space_do_translate(as, addr, &xlat, &plen,
-                                         is_write, false);
+                                         is_write, false, &as);
 
     /* Illegal translation */
     if (section.mr == &io_mem_unassigned) {
@@ -549,7 +551,7 @@  IOMMUTLBEntry address_space_get_iotlb_entry(AddressSpace *as, hwaddr addr,
     plen -= 1;
 
     return (IOMMUTLBEntry) {
-        .target_as = section.address_space,
+        .target_as = as,
         .iova = addr & ~plen,
         .translated_addr = xlat & ~plen,
         .addr_mask = plen,
@@ -570,7 +572,8 @@  MemoryRegion *address_space_translate(AddressSpace *as, hwaddr addr,
     MemoryRegionSection section;
 
     /* This can be MMIO, so setup MMIO bit. */
-    section = address_space_do_translate(as, addr, xlat, plen, is_write, true);
+    section = address_space_do_translate(as, addr, xlat, plen, is_write, true,
+                                         &as);
     mr = section.mr;
 
     if (xen_enabled() && memory_access_is_direct(mr, is_write)) {