On 31.08.2018 12:43, Dr. David Alan Gilbert wrote:
> * David Hildenbrand ([email protected]) wrote:
>>
>>>> static gint memory_device_addr_sort(gconstpointer a, gconstpointer b)
>>>> {
>>>> const MemoryDeviceState *md_a = MEMORY_DEVICE(a);
>>>> @@ -168,6 +184,7 @@ static uint64_t
>>>> memory_device_get_free_addr(MachineState *ms,
>>>> for (item = list; item; item = g_slist_next(item)) {
>>>> MemoryDeviceState *md = item->data;
>>>> const MemoryDeviceClass *mdc =
>>>> MEMORY_DEVICE_GET_CLASS(OBJECT(md));
>>>> + const char *id = memory_device_id(md);
>>>> uint64_t md_size, md_addr;
>>>>
>>>> md_addr = mdc->get_addr(md);
>>>> @@ -178,8 +195,8 @@ static uint64_t
>>>> memory_device_get_free_addr(MachineState *ms,
>>>>
>>>> if (ranges_overlap(md_addr, md_size, new_addr, size)) {
>>>> if (hint) {
>>>> - const DeviceState *d = DEVICE(md);
>>>> - error_setg(errp, "address range conflicts with '%s'",
>>>> d->id);
>>>> + error_setg(errp, "address range conflicts with '%s'",
>>>> + id ? id : 0);
>>>
>>> What's that 'id ? id : 0' trick for?
>>
>> 0 -> "", then it actually makes sense :)
>>
>> I'll fix this up, thanks!
>
> Except that:
>
> address range conflicts with ''
> isn't very helpful.
> Why would you get a NULL id ?
This is easy: don't specify an id for a memory device:
Unfortunately, if the user does not give ids to devices, there is no way
of telling him what we are talking about.
qemu-system-x86_64 -machine pc -m 4G,maxmem=20G,slots=4 \
-object memory-backend-ram,id=mem0,size=4G \
-object memory-backend-ram,id=mem1,size=4G \
-device pc-dimm,memdev=mem0,addr=0x140000000 \
-device pc-dimm,memdev=mem1,addr=0x140000000
qemu-system-x86_64: -device pc-dimm,memdev=mem1,addr=0x140000000:
address range conflicts with '(null)'
(I thought providing NULL would lead to a crash, but it is actually
handled properly)
So while not being able to indicate an id is not nice, I can simply
forward the id directly here.
Thanks!
>
> Dave
>
>>
>> --
>>
>> Thanks,
>>
>> David / dhildenb
> --
> Dr. David Alan Gilbert / [email protected] / Manchester, UK
>
--
Thanks,
David / dhildenb