[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 11/34] memory: add memory_region_is_mapped()
From: |
Peter Crosthwaite |
Subject: |
Re: [Qemu-devel] [PATCH v3 11/34] memory: add memory_region_is_mapped() API |
Date: |
Fri, 30 May 2014 00:22:26 +1000 |
On Tue, May 27, 2014 at 11:01 PM, Igor Mammedov <address@hidden> wrote:
> which allows to check if MemoryRegion is already mapped.
>
> Signed-off-by: Igor Mammedov <address@hidden>
> ---
> include/exec/memory.h | 8 ++++++++
> memory.c | 15 ++++++++++++++-
> 2 files changed, 22 insertions(+), 1 deletions(-)
>
> diff --git a/include/exec/memory.h b/include/exec/memory.h
> index 1d55ad9..ab11c32 100644
> --- a/include/exec/memory.h
> +++ b/include/exec/memory.h
> @@ -848,6 +848,14 @@ void memory_region_set_alias_offset(MemoryRegion *mr,
> bool memory_region_present(MemoryRegion *parent, hwaddr addr);
>
> /**
> + * memory_region_is_mapped: returns true if #MemoryRegion is mapped
> + * into any address space.
> + *
> + * @mr: a #MemoryRegion which should be checked if it's mapped
> + */
> +bool memory_region_is_mapped(MemoryRegion *mr);
> +
> +/**
> * memory_region_find: translate an address/size relative to a
> * MemoryRegion into a #MemoryRegionSection.
> *
> diff --git a/memory.c b/memory.c
> index 3f1df23..f4d8e69 100644
> --- a/memory.c
> +++ b/memory.c
> @@ -492,7 +492,7 @@ static AddressSpace
> *memory_region_to_address_space(MemoryRegion *mr)
> return as;
> }
> }
> - abort();
> + return NULL;
> }
>
> /* Render a memory region into the global view. Ranges in @view obscure
> @@ -1569,6 +1569,16 @@ bool memory_region_present(MemoryRegion *parent,
> hwaddr addr)
> return true;
> }
>
> +bool memory_region_is_mapped(MemoryRegion *mr)
> +{
Is it not enough to just return mr->parent? Memory mapping assertion
will happen if you try and map the same twice, even if one of the
mappings is not contained within an AddressSpace. Checking for just
the parent mr may be a simpler and more accurate check.
Regards,
Peter
> + mr = memory_region_find(mr, 0, 1).mr;
> + if (!mr) {
> + return false;
> + }
> + memory_region_unref(mr);
> + return true;
> +}
> +
> MemoryRegionSection memory_region_find(MemoryRegion *mr,
> hwaddr addr, uint64_t size)
> {
> @@ -1586,6 +1596,9 @@ MemoryRegionSection memory_region_find(MemoryRegion *mr,
> }
>
> as = memory_region_to_address_space(root);
> + if (!as) {
> + return ret;
> + }
> range = addrrange_make(int128_make64(addr), int128_make64(size));
>
> view = address_space_get_flatview(as);
> --
> 1.7.1
>
>
- [Qemu-devel] [PATCH v3 06/34] vl.c: extend -m option to support options for memory hotplug, (continued)
- [Qemu-devel] [PATCH v3 06/34] vl.c: extend -m option to support options for memory hotplug, Igor Mammedov, 2014/05/27
- [Qemu-devel] [PATCH v3 01/34] machine: Conversion of QEMUMachineInitArgs to MachineState, Igor Mammedov, 2014/05/27
- [Qemu-devel] [PATCH v3 07/34] pc: create custom generic PC machine type, Igor Mammedov, 2014/05/27
- [Qemu-devel] [PATCH v3 09/34] qdev: expose DeviceState.hotplugged field as a property, Igor Mammedov, 2014/05/27
- [Qemu-devel] [PATCH v3 08/34] qdev: hotplug for buss-less devices, Igor Mammedov, 2014/05/27
- [Qemu-devel] [PATCH v3 10/34] dimm: implement dimm device abstraction, Igor Mammedov, 2014/05/27
- [Qemu-devel] [PATCH v3 11/34] memory: add memory_region_is_mapped() API, Igor Mammedov, 2014/05/27
- Re: [Qemu-devel] [PATCH v3 11/34] memory: add memory_region_is_mapped() API,
Peter Crosthwaite <=
- [Qemu-devel] [PATCH v3 13/34] pc: initialize memory hotplug address space, Igor Mammedov, 2014/05/27
- [Qemu-devel] [PATCH v3 14/34] pc: exit QEMU if number of slots more than supported 256, Igor Mammedov, 2014/05/27
- [Qemu-devel] [PATCH v3 17/34] pc: add memory hotplug handler to PC_MACHINE, Igor Mammedov, 2014/05/27
- [Qemu-devel] [PATCH v3 18/34] dimm: add busy address check and address auto-allocation, Igor Mammedov, 2014/05/27
- [Qemu-devel] [PATCH v3 22/34] trace: add acpi memory hotplug IO region events, Igor Mammedov, 2014/05/27
- [Qemu-devel] [PATCH v3 21/34] acpi: memory hotplug ACPI hardware implementation, Igor Mammedov, 2014/05/27