[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 04/11] memory: add getter for owner
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH v2 04/11] memory: add getter for owner |
Date: |
Mon, 01 Jul 2013 16:35:23 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130514 Thunderbird/17.0.6 |
Il 01/07/2013 16:24, Jan Kiszka ha scritto:
> On 2013-06-28 18:58, Paolo Bonzini wrote:
>> Whenever memory regions are accessed outside the BQL, they need to be
>> preserved against hot-unplug. MemoryRegions actually do not have their
>> own reference count; they piggyback on a QOM object, their "owner".
>> The owner is set at creation time, and there is a function to retrieve
>> the owner.
>>
>> Signed-off-by: Paolo Bonzini <address@hidden>
>> ---
>> include/exec/memory.h | 7 +++++++
>> memory.c | 6 ++++++
>> 2 files changed, 13 insertions(+)
>>
>> diff --git a/include/exec/memory.h b/include/exec/memory.h
>> index be3d39f..1ad9c19 100644
>> --- a/include/exec/memory.h
>> +++ b/include/exec/memory.h
>> @@ -380,6 +380,13 @@ void memory_region_init_iommu(MemoryRegion *mr,
>> void memory_region_destroy(MemoryRegion *mr);
>>
>> /**
>> + * memory_region_owner: get a memory region's owner.
>> + *
>> + * @mr: the memory region being queried.
>> + */
>> +struct Object *memory_region_owner(MemoryRegion *mr);
>> +
>> +/**
>> * memory_region_size: get a memory region's size.
>> *
>> * @mr: the memory region being queried.
>> diff --git a/memory.c b/memory.c
>> index 6250bec1..4d396c3 100644
>> --- a/memory.c
>> +++ b/memory.c
>> @@ -738,6 +738,7 @@ void memory_region_init(MemoryRegion *mr,
>> mr->owner = owner;
>> mr->iommu_ops = NULL;
>> mr->parent = NULL;
>> + mr->owner = NULL;
>> mr->size = int128_make64(size);
>> if (size == UINT64_MAX) {
>> mr->size = int128_2_64();
>> @@ -1011,6 +1012,11 @@ void memory_region_destroy(MemoryRegion *mr)
>> g_free(mr->ioeventfds);
>> }
>>
>> +Object *memory_region_owner(MemoryRegion *mr)
>> +{
>> + return mr->owner;
>> +}
>> +
>> uint64_t memory_region_size(MemoryRegion *mr)
>> {
>> if (int128_eq(mr->size, int128_2_64())) {
>>
>
> OK, fine... and who is using this? ;)
There'll be a couple users in hw/acpi/core.c.
> Also, as this is trivial and the structure publicly known anyway, I'd go
> for a static inline function instead.
Ok. Though it's not a fast path anyway.
Paolo