提交 e76bb18f 编写于 作者: A Alexey Kardashevskiy 提交者: Paolo Bonzini

exec: Explicitly export target AS from address_space_translate_internal

This adds an AS** parameter to address_space_do_translate()
to make it easier for the next patch to share FlatViews.

This should cause no behavioural change.
Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
Message-Id: <20170921085110.25598-2-aik@ozlabs.ru>
Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
上级 447b0d0b
...@@ -476,7 +476,8 @@ static MemoryRegionSection address_space_do_translate(AddressSpace *as, ...@@ -476,7 +476,8 @@ static MemoryRegionSection address_space_do_translate(AddressSpace *as,
hwaddr *xlat, hwaddr *xlat,
hwaddr *plen, hwaddr *plen,
bool is_write, bool is_write,
bool is_mmio) bool is_mmio,
AddressSpace **target_as)
{ {
IOMMUTLBEntry iotlb; IOMMUTLBEntry iotlb;
MemoryRegionSection *section; MemoryRegionSection *section;
...@@ -503,6 +504,7 @@ static MemoryRegionSection address_space_do_translate(AddressSpace *as, ...@@ -503,6 +504,7 @@ static MemoryRegionSection address_space_do_translate(AddressSpace *as,
} }
as = iotlb.target_as; as = iotlb.target_as;
*target_as = iotlb.target_as;
} }
*xlat = addr; *xlat = addr;
...@@ -525,7 +527,7 @@ IOMMUTLBEntry address_space_get_iotlb_entry(AddressSpace *as, hwaddr addr, ...@@ -525,7 +527,7 @@ IOMMUTLBEntry address_space_get_iotlb_entry(AddressSpace *as, hwaddr addr,
/* This can never be MMIO. */ /* This can never be MMIO. */
section = address_space_do_translate(as, addr, &xlat, &plen, section = address_space_do_translate(as, addr, &xlat, &plen,
is_write, false); is_write, false, &as);
/* Illegal translation */ /* Illegal translation */
if (section.mr == &io_mem_unassigned) { if (section.mr == &io_mem_unassigned) {
...@@ -548,7 +550,7 @@ IOMMUTLBEntry address_space_get_iotlb_entry(AddressSpace *as, hwaddr addr, ...@@ -548,7 +550,7 @@ IOMMUTLBEntry address_space_get_iotlb_entry(AddressSpace *as, hwaddr addr,
plen -= 1; plen -= 1;
return (IOMMUTLBEntry) { return (IOMMUTLBEntry) {
.target_as = section.address_space, .target_as = as,
.iova = addr & ~plen, .iova = addr & ~plen,
.translated_addr = xlat & ~plen, .translated_addr = xlat & ~plen,
.addr_mask = plen, .addr_mask = plen,
...@@ -569,7 +571,8 @@ MemoryRegion *address_space_translate(AddressSpace *as, hwaddr addr, ...@@ -569,7 +571,8 @@ MemoryRegion *address_space_translate(AddressSpace *as, hwaddr addr,
MemoryRegionSection section; MemoryRegionSection section;
/* This can be MMIO, so setup MMIO bit. */ /* 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; mr = section.mr;
if (xen_enabled() && memory_access_is_direct(mr, is_write)) { if (xen_enabled() && memory_access_is_direct(mr, is_write)) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册