[PATCH] hw/i386/sgx: Use QDev API

Philippe Mathieu-Daudé posted 1 patch 9 months, 2 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20240213071613.72566-1-philmd@linaro.org
Maintainers: "Michael S. Tsirkin" <mst@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Paolo Bonzini <pbonzini@redhat.com>, Richard Henderson <richard.henderson@linaro.org>, Eduardo Habkost <eduardo@habkost.net>
There is a newer version of this series
hw/i386/sgx.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
[PATCH] hw/i386/sgx: Use QDev API
Posted by Philippe Mathieu-Daudé 9 months, 2 weeks ago
Prefer the QDev API over the low level QOM one.
No logical change intended.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/i386/sgx.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/hw/i386/sgx.c b/hw/i386/sgx.c
index 70305547d4..9176040f8f 100644
--- a/hw/i386/sgx.c
+++ b/hw/i386/sgx.c
@@ -286,7 +286,6 @@ void pc_machine_init_sgx_epc(PCMachineState *pcms)
     SGXEPCState *sgx_epc = &pcms->sgx_epc;
     X86MachineState *x86ms = X86_MACHINE(pcms);
     SgxEPCList *list = NULL;
-    Object *obj;
 
     memset(sgx_epc, 0, sizeof(SGXEPCState));
     if (!x86ms->sgx_epc_list) {
@@ -300,16 +299,15 @@ void pc_machine_init_sgx_epc(PCMachineState *pcms)
                                 &sgx_epc->mr);
 
     for (list = x86ms->sgx_epc_list; list; list = list->next) {
-        obj = object_new("sgx-epc");
+        DeviceState *dev = qdev_new(TYPE_SGX_EPC);
 
         /* set the memdev link with memory backend */
-        object_property_parse(obj, SGX_EPC_MEMDEV_PROP, list->value->memdev,
-                              &error_fatal);
+        object_property_parse(OBJECT(dev), SGX_EPC_MEMDEV_PROP,
+                              list->value->memdev, &error_fatal);
         /* set the numa node property for sgx epc object */
-        object_property_set_uint(obj, SGX_EPC_NUMA_NODE_PROP, list->value->node,
-                             &error_fatal);
-        object_property_set_bool(obj, "realized", true, &error_fatal);
-        object_unref(obj);
+        object_property_set_uint(OBJECT(dev), SGX_EPC_NUMA_NODE_PROP,
+                                 list->value->node, &error_fatal);
+        qdev_realize_and_unref(dev, &error_fatal);
     }
 
     if ((sgx_epc->base + sgx_epc->size) < sgx_epc->base) {
-- 
2.41.0


Re: [PATCH] hw/i386/sgx: Use QDev API
Posted by Michael Tokarev 9 months, 2 weeks ago
13.02.2024 10:16, Philippe Mathieu-Daudé :
> Prefer the QDev API over the low level QOM one.
> No logical change intended.
...
>           /* set the numa node property for sgx epc object */
> -        object_property_set_uint(obj, SGX_EPC_NUMA_NODE_PROP, list->value->node,
> -                             &error_fatal);
> -        object_property_set_bool(obj, "realized", true, &error_fatal);
> -        object_unref(obj);
> +        object_property_set_uint(OBJECT(dev), SGX_EPC_NUMA_NODE_PROP,
> +                                 list->value->node, &error_fatal);
> +        qdev_realize_and_unref(dev, &error_fatal);

This does not work.  Here's the function prototype:

  bool qdev_realize_and_unref(DeviceState *dev, BusState *bus, Error **errp);

I'd say a v2 is in order.

/mjt


Re: [PATCH] hw/i386/sgx: Use QDev API
Posted by Philippe Mathieu-Daudé 9 months, 2 weeks ago
On 15/2/24 10:31, Michael Tokarev wrote:
> 13.02.2024 10:16, Philippe Mathieu-Daudé :
>> Prefer the QDev API over the low level QOM one.
>> No logical change intended.
> ...
>>           /* set the numa node property for sgx epc object */
>> -        object_property_set_uint(obj, SGX_EPC_NUMA_NODE_PROP, 
>> list->value->node,
>> -                             &error_fatal);
>> -        object_property_set_bool(obj, "realized", true, &error_fatal);
>> -        object_unref(obj);
>> +        object_property_set_uint(OBJECT(dev), SGX_EPC_NUMA_NODE_PROP,
>> +                                 list->value->node, &error_fatal);
>> +        qdev_realize_and_unref(dev, &error_fatal);
> 
> This does not work.  Here's the function prototype:
> 
>   bool qdev_realize_and_unref(DeviceState *dev, BusState *bus, Error 
> **errp);

I was surprised because all my local tests passed, but then I
realized 'config SGX depends on KVM' and I'm on Darwin... Sorry.

> 
> I'd say a v2 is in order.
> 
> /mjt
> 


Re: [PATCH] hw/i386/sgx: Use QDev API
Posted by Michael Tokarev 9 months, 2 weeks ago
13.02.2024 10:16, Philippe Mathieu-Daudé:
> Prefer the QDev API over the low level QOM one.
> No logical change intended.

Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>

Picked up for trivial-patches.

/mjt