nvidia-gpu: deferred init for NvidiaGpuDevice
Adds deferred init for NvidiaGpuDevice, so that when we bind
to this, the this pointer is valid, i.e. after construction
is completed
Change-Id: I24a53d2ab9be1a2a4431368414a154b48347d2a2
Signed-off-by: Marc Olberding <molberding@nvidia.com>
diff --git a/src/nvidia-gpu/NvidiaDeviceDiscovery.cpp b/src/nvidia-gpu/NvidiaDeviceDiscovery.cpp
index 47ec061..9afb000 100644
--- a/src/nvidia-gpu/NvidiaDeviceDiscovery.cpp
+++ b/src/nvidia-gpu/NvidiaDeviceDiscovery.cpp
@@ -86,9 +86,13 @@
             auto gpuName = configs.name + '_' +
                            std::to_string(responseInstanceId);
 
-            gpuDevices[gpuName] =
-                std::make_shared<GpuDevice>(configs, gpuName, path, conn, eid,
-                                            io, mctpRequester, objectServer);
+            auto gpu = gpuDevices
+                           .insert(std::make_pair(
+                               gpuName, std::make_shared<GpuDevice>(
+                                            configs, gpuName, path, conn, eid,
+                                            io, mctpRequester, objectServer)))
+                           .first;
+            (*gpu).second->init();
             break;
         }