diff mbox

[4/5] virtio-balloon: rewrite get_current_ram_size()

Message ID 1454585843-20716-5-git-send-email-vsementsov@virtuozzo.com (mailing list archive)
State New, archived
Headers show

Commit Message

Vladimir Sementsov-Ogievskiy Feb. 4, 2016, 11:37 a.m. UTC
Use pc_dimm_built_list() instead of qmp_pc_dimm_device_list()

Actually, Qapi is not related to this internal helper.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>

CC: Stefan Hajnoczi <stefanha@redhat.com>
CC: Xiao Guangrong <guangrong.xiao@linux.intel.com>
CC: "Michael S. Tsirkin" <mst@redhat.com>
CC: Igor Mammedov <imammedo@redhat.com>
CC: Eric Blake <eblake@redhat.com>
CC: Markus Armbruster <armbru@redhat.com>
---
 hw/virtio/virtio-balloon.c | 23 ++++++-----------------
 1 file changed, 6 insertions(+), 17 deletions(-)

Comments

Cornelia Huck Feb. 4, 2016, 12:23 p.m. UTC | #1
On Thu,  4 Feb 2016 14:37:22 +0300
Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> wrote:

> Use pc_dimm_built_list() instead of qmp_pc_dimm_device_list()
> 
> Actually, Qapi is not related to this internal helper.
> 
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> 
> CC: Stefan Hajnoczi <stefanha@redhat.com>
> CC: Xiao Guangrong <guangrong.xiao@linux.intel.com>
> CC: "Michael S. Tsirkin" <mst@redhat.com>
> CC: Igor Mammedov <imammedo@redhat.com>
> CC: Eric Blake <eblake@redhat.com>
> CC: Markus Armbruster <armbru@redhat.com>
> ---
>  hw/virtio/virtio-balloon.c | 23 ++++++-----------------
>  1 file changed, 6 insertions(+), 17 deletions(-)
> 
> diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c
> index 6a4c4d2..b9c1964 100644
> --- a/hw/virtio/virtio-balloon.c
> +++ b/hw/virtio/virtio-balloon.c
> @@ -296,26 +296,15 @@ static void virtio_balloon_get_config(VirtIODevice *vdev, uint8_t *config_data)
> 
>  static ram_addr_t get_current_ram_size(void)
>  {
> -    MemoryDeviceInfoList *info_list = NULL;
> -    MemoryDeviceInfoList **prev = &info_list;
> -    MemoryDeviceInfoList *info;
> +    GSList *list = NULL, *item;
>      ram_addr_t size = ram_size;
> 
> -    qmp_pc_dimm_device_list(qdev_get_machine(), &prev);
> -    for (info = info_list; info; info = info->next) {
> -        MemoryDeviceInfo *value = info->value;
> -
> -        if (value) {
> -            switch (value->type) {
> -            case MEMORY_DEVICE_INFO_KIND_DIMM:
> -                size += value->u.dimm->size;
> -                break;
> -            default:
> -                break;
> -            }
> -        }
> +    pc_dimm_build_list(qdev_get_machine(), &list);

This will break the build for !CONFIG_MEM_HOTPLUG, as you didn't
provide a stubbed-out version of this function.

> +    for (item = list; item; item = g_slist_next(item)) {
> +        PCDIMMDevice *dimm = item->data;
> +        size += object_property_get_int(OBJECT(dimm), PC_DIMM_SIZE_PROP, NULL);
>      }
> -    qapi_free_MemoryDeviceInfoList(info_list);
> +    g_slist_free(list);
> 
>      return size;
>  }
Vladimir Sementsov-Ogievskiy Feb. 4, 2016, 12:36 p.m. UTC | #2
On 04.02.2016 15:23, Cornelia Huck wrote:
> On Thu,  4 Feb 2016 14:37:22 +0300
> Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> wrote:
>
>> Use pc_dimm_built_list() instead of qmp_pc_dimm_device_list()
>>
>> Actually, Qapi is not related to this internal helper.
>>
>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>>
>> CC: Stefan Hajnoczi <stefanha@redhat.com>
>> CC: Xiao Guangrong <guangrong.xiao@linux.intel.com>
>> CC: "Michael S. Tsirkin" <mst@redhat.com>
>> CC: Igor Mammedov <imammedo@redhat.com>
>> CC: Eric Blake <eblake@redhat.com>
>> CC: Markus Armbruster <armbru@redhat.com>
>> ---
>>   hw/virtio/virtio-balloon.c | 23 ++++++-----------------
>>   1 file changed, 6 insertions(+), 17 deletions(-)
>>
>> diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c
>> index 6a4c4d2..b9c1964 100644
>> --- a/hw/virtio/virtio-balloon.c
>> +++ b/hw/virtio/virtio-balloon.c
>> @@ -296,26 +296,15 @@ static void virtio_balloon_get_config(VirtIODevice *vdev, uint8_t *config_data)
>>
>>   static ram_addr_t get_current_ram_size(void)
>>   {
>> -    MemoryDeviceInfoList *info_list = NULL;
>> -    MemoryDeviceInfoList **prev = &info_list;
>> -    MemoryDeviceInfoList *info;
>> +    GSList *list = NULL, *item;
>>       ram_addr_t size = ram_size;
>>
>> -    qmp_pc_dimm_device_list(qdev_get_machine(), &prev);
>> -    for (info = info_list; info; info = info->next) {
>> -        MemoryDeviceInfo *value = info->value;
>> -
>> -        if (value) {
>> -            switch (value->type) {
>> -            case MEMORY_DEVICE_INFO_KIND_DIMM:
>> -                size += value->u.dimm->size;
>> -                break;
>> -            default:
>> -                break;
>> -            }
>> -        }
>> +    pc_dimm_build_list(qdev_get_machine(), &list);
> This will break the build for !CONFIG_MEM_HOTPLUG, as you didn't
> provide a stubbed-out version of this function.

Ok, thanks, will add.

Also: it is already broken because of pc_dimm_memory_plug and 
pc_dimm_memory_unplug


>
>> +    for (item = list; item; item = g_slist_next(item)) {
>> +        PCDIMMDevice *dimm = item->data;
>> +        size += object_property_get_int(OBJECT(dimm), PC_DIMM_SIZE_PROP, NULL);
>>       }
>> -    qapi_free_MemoryDeviceInfoList(info_list);
>> +    g_slist_free(list);
>>
>>       return size;
>>   }
Cornelia Huck Feb. 4, 2016, 12:59 p.m. UTC | #3
On Thu, 4 Feb 2016 15:36:05 +0300
Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> wrote:

> On 04.02.2016 15:23, Cornelia Huck wrote:
> > On Thu,  4 Feb 2016 14:37:22 +0300
> > Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> wrote:

> >> +    pc_dimm_build_list(qdev_get_machine(), &list);
> > This will break the build for !CONFIG_MEM_HOTPLUG, as you didn't
> > provide a stubbed-out version of this function.
> 
> Ok, thanks, will add.
> 
> Also: it is already broken because of pc_dimm_memory_plug and 
> pc_dimm_memory_unplug

These are only used by targets that set CONFIG_MEM_HOTPLUG afaics.
diff mbox

Patch

diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c
index 6a4c4d2..b9c1964 100644
--- a/hw/virtio/virtio-balloon.c
+++ b/hw/virtio/virtio-balloon.c
@@ -296,26 +296,15 @@  static void virtio_balloon_get_config(VirtIODevice *vdev, uint8_t *config_data)
 
 static ram_addr_t get_current_ram_size(void)
 {
-    MemoryDeviceInfoList *info_list = NULL;
-    MemoryDeviceInfoList **prev = &info_list;
-    MemoryDeviceInfoList *info;
+    GSList *list = NULL, *item;
     ram_addr_t size = ram_size;
 
-    qmp_pc_dimm_device_list(qdev_get_machine(), &prev);
-    for (info = info_list; info; info = info->next) {
-        MemoryDeviceInfo *value = info->value;
-
-        if (value) {
-            switch (value->type) {
-            case MEMORY_DEVICE_INFO_KIND_DIMM:
-                size += value->u.dimm->size;
-                break;
-            default:
-                break;
-            }
-        }
+    pc_dimm_build_list(qdev_get_machine(), &list);
+    for (item = list; item; item = g_slist_next(item)) {
+        PCDIMMDevice *dimm = item->data;
+        size += object_property_get_int(OBJECT(dimm), PC_DIMM_SIZE_PROP, NULL);
     }
-    qapi_free_MemoryDeviceInfoList(info_list);
+    g_slist_free(list);
 
     return size;
 }