qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2 14/20] memory-device: ids of virtio based dev


From: Dr. David Alan Gilbert
Subject: Re: [Qemu-devel] [PATCH v2 14/20] memory-device: ids of virtio based devices are special
Date: Fri, 31 Aug 2018 12:22:30 +0100
User-agent: Mutt/1.10.1 (2018-07-13)

* David Hildenbrand (address@hidden) wrote:
> On 31.08.2018 12:43, Dr. David Alan Gilbert wrote:
> > * David Hildenbrand (address@hidden) 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.

OK, or use something like  id ? id : "(unnamed)"

Dave

> Thanks!
> 
> > 
> > Dave
> > 
> >>
> >> -- 
> >>
> >> Thanks,
> >>
> >> David / dhildenb
> > --
> > Dr. David Alan Gilbert / address@hidden / Manchester, UK
> > 
> 
> 
> -- 
> 
> Thanks,
> 
> David / dhildenb
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK



reply via email to

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