nvidia-gpu: fix crash due to optional EM config

Sensor poll rate EM config is optional. Handle the case where the same
is missing by assigning a default poll rate.

See https://gerrit.openbmc.org/c/openbmc/entity-manager/+/80579/.

Change-Id: I1ceac45ba8adae33affe0cdd19513484179b1e4c
Signed-off-by: Deepak Kodihalli <deepak.kodihalli.83@gmail.com>
diff --git a/src/nvidia-gpu/NvidiaDeviceDiscovery.cpp b/src/nvidia-gpu/NvidiaDeviceDiscovery.cpp
index a9ca525..dd682cf 100644
--- a/src/nvidia-gpu/NvidiaDeviceDiscovery.cpp
+++ b/src/nvidia-gpu/NvidiaDeviceDiscovery.cpp
@@ -28,11 +28,14 @@
 #include <cstdint>
 #include <memory>
 #include <span>
+#include <stdexcept>
 #include <string>
 #include <utility>
 #include <variant>
 #include <vector>
 
+static constexpr auto sensorPollRateMs = 1000;
+
 void processQueryDeviceIdResponse(
     boost::asio::io_context& io, sdbusplus::asio::object_server& objectServer,
     boost::container::flat_map<std::string, std::shared_ptr<GpuDevice>>&
@@ -318,7 +321,15 @@
 
             configs.name = loadVariant<std::string>(cfg, "Name");
 
-            configs.pollRate = loadVariant<uint64_t>(cfg, "PollRate");
+            try
+            {
+                configs.pollRate = loadVariant<uint64_t>(cfg, "PollRate");
+            }
+            catch (const std::invalid_argument&)
+            {
+                // PollRate is an optional config
+                configs.pollRate = sensorPollRateMs;
+            }
 
             discoverDevices(io, objectServer, gpuDevices, smaDevices,
                             dbusConnection, mctpRequester, configs, path);