Message ID | 20230826232415.80233-2-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | softmmu: Use async_run_on_cpu in tcg_commit | expand |
Richard Henderson <richard.henderson@linaro.org> writes: > Suggested-by: Alex Bennée <alex.bennee@linaro.org> > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > softmmu/physmem.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/softmmu/physmem.c b/softmmu/physmem.c > index 3df73542e1..7597dc1c39 100644 > --- a/softmmu/physmem.c > +++ b/softmmu/physmem.c > @@ -2413,9 +2413,15 @@ MemoryRegionSection *iotlb_to_section(CPUState *cpu, > int asidx = cpu_asidx_from_attrs(cpu, attrs); > CPUAddressSpace *cpuas = &cpu->cpu_ases[asidx]; > AddressSpaceDispatch *d = qatomic_rcu_read(&cpuas->memory_dispatch); > - MemoryRegionSection *sections = d->map.sections; > + int section_index = index & ~TARGET_PAGE_MASK; > + MemoryRegionSection *ret; It might be worth a quick comment where section_index comes from because I was confused initially expecting it to be address like. > > - return §ions[index & ~TARGET_PAGE_MASK]; > + assert(section_index < d->map.sections_nb); > + ret = d->map.sections + section_index; > + assert(ret->mr); > + assert(ret->mr->ops); > + > + return ret; > } > > static void io_mem_init(void) Otherwise: Acked-by: Alex Bennée <alex.bennee@linaro.org>
diff --git a/softmmu/physmem.c b/softmmu/physmem.c index 3df73542e1..7597dc1c39 100644 --- a/softmmu/physmem.c +++ b/softmmu/physmem.c @@ -2413,9 +2413,15 @@ MemoryRegionSection *iotlb_to_section(CPUState *cpu, int asidx = cpu_asidx_from_attrs(cpu, attrs); CPUAddressSpace *cpuas = &cpu->cpu_ases[asidx]; AddressSpaceDispatch *d = qatomic_rcu_read(&cpuas->memory_dispatch); - MemoryRegionSection *sections = d->map.sections; + int section_index = index & ~TARGET_PAGE_MASK; + MemoryRegionSection *ret; - return §ions[index & ~TARGET_PAGE_MASK]; + assert(section_index < d->map.sections_nb); + ret = d->map.sections + section_index; + assert(ret->mr); + assert(ret->mr->ops); + + return ret; } static void io_mem_init(void)
Suggested-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- softmmu/physmem.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)