The radix tree is statically sized to fit TARGET_PHYS_ADDR_SPACE_BITS. If a larger memory region is registered, it will overflow. Fix by limiting any section in the radix tree to the supported size. This problem was not observed earlier since artificial regions (containers and aliases) are eliminated by the memory core, leaving only device regions which have reasonable sizes. An IOMMU however cannot be eliminated by the memory core, and may have an artificial size. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Avi Kivity <avi.kivity@gmail.com> [ Fail the build if TARGET_PHYS_ADDR_SPACE_BITS is too large - Paolo ] Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> |
||
---|---|---|
.. | ||
user | ||
address-spaces.h | ||
cpu-all.h | ||
cpu-common.h | ||
cpu-defs.h | ||
cputlb.h | ||
def-helper.h | ||
exec-all.h | ||
gdbstub.h | ||
gen-icount.h | ||
hwaddr.h | ||
ioport.h | ||
iorange.h | ||
memory-internal.h | ||
memory.h | ||
poison.h | ||
softmmu-semi.h | ||
softmmu_defs.h | ||
softmmu_exec.h | ||
softmmu_header.h | ||
softmmu_template.h | ||
spinlock.h |