qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 04/20] memory-device: get_region_size()/get_p


From: David Hildenbrand
Subject: Re: [Qemu-devel] [PATCH v2 04/20] memory-device: get_region_size()/get_plugged_size() might fail
Date: Mon, 17 Sep 2018 12:39:36 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.0

Am 03.09.18 um 15:40 schrieb Igor Mammedov:
> On Wed, 29 Aug 2018 17:36:08 +0200
> David Hildenbrand <address@hidden> wrote:
> 
>> Let's properly forward the error, so errors from get_region_size() /
>> get_plugged_size(), can be handled.
>>
>> Users right now call both functions after the device has been realized,
>> which is guaranteed to no fail (we'll document this behavior in a
>> follow-up patch).
>>
>> Signed-off-by: David Hildenbrand <address@hidden>
>> ---
>>  hw/mem/memory-device.c         | 6 +++---
>>  hw/mem/pc-dimm.c               | 5 +++--
>>  include/hw/mem/memory-device.h | 4 ++--
>>  3 files changed, 8 insertions(+), 7 deletions(-)
>>
>> diff --git a/hw/mem/memory-device.c b/hw/mem/memory-device.c
>> index 0d9892b715..d87599c280 100644
>> --- a/hw/mem/memory-device.c
>> +++ b/hw/mem/memory-device.c
>> @@ -60,7 +60,7 @@ static int memory_device_used_region_size(Object *obj, 
>> void *opaque)
>>          const MemoryDeviceClass *mdc = MEMORY_DEVICE_GET_CLASS(obj);
>>  
>>          if (dev->realized) {
>> -            *size += mdc->get_region_size(md);
>> +            *size += mdc->get_region_size(md, &error_abort);
>>          }
>>      }
>>  
>> @@ -167,7 +167,7 @@ uint64_t memory_device_get_free_addr(MachineState *ms, 
>> const uint64_t *hint,
>>          uint64_t md_size, md_addr;
>>  
>>          md_addr = mdc->get_addr(md);
>> -        md_size = mdc->get_region_size(md);
>> +        md_size = mdc->get_region_size(md, &error_abort);
> s/error_abort/errp/, so it won't crash on hotplug?

As we are checking devices that have already been realized (and we
therefore called get_region_size() already a couple of times), this will
never crash.

We could use errp, but then (to do it correctly) we would need a fresh
local error variable, so we are really allowed to check for *errp).

That's why I favor error_abort here.

> 
>>          if (*errp) {
>>              goto out;
> is this ever reachable?

No, looks like a leftover that can be dropped.

Thanks!

-- 

Thanks,

David / dhildenb



reply via email to

[Prev in Thread] Current Thread [Next in Thread]