diff --git a/src/ppd-driver-nvidia-rtx-spark.c b/src/ppd-driver-nvidia-rtx-spark.c index d1a3512..1fa27ee 100644 --- a/src/ppd-driver-nvidia-rtx-spark.c +++ b/src/ppd-driver-nvidia-rtx-spark.c @@ -18,6 +18,9 @@ #define DMI_PROCESSOR_INFORMATION_TYPE 4 #define DMI_PROCESSOR_VERSION_OFFSET 0x10 #define RTX_SPARK_PROCESSOR_VERSION_PREFIX "NVIDIA RTX Spark" +/* The GB10 desktops (DGX Spark, ASUS Ascent GX10) have the same CPU complex + * and report the bare SoC name as their processor version. */ +#define GB10_PROCESSOR_VERSION "GB10" #define CPUFREQ_POLICY_DIR "/sys/devices/system/cpu/cpufreq/" #define CPPC_CPUFREQ_DRIVER "cppc_cpufreq" #define RTX_SPARK_PERFORMANCE_CORE_MIN_MAX_KHZ 3000000 @@ -103,7 +106,8 @@ dmi_processor_is_nvidia_rtx_spark (const guint8 *raw, return FALSE; return g_str_has_prefix ((const char *) string, - RTX_SPARK_PROCESSOR_VERSION_PREFIX); + RTX_SPARK_PROCESSOR_VERSION_PREFIX) || + g_strcmp0 ((const char *) string, GB10_PROCESSOR_VERSION) == 0; } static gboolean diff --git a/tests/integration_test.py b/tests/integration_test.py index e331acd..992e78e 100644 --- a/tests/integration_test.py +++ b/tests/integration_test.py @@ -807,6 +807,20 @@ class Tests(dbusmock.DBusTestCase): self.assert_file_eventually_contains(efficiency_governor, "schedutil") self.assert_file_eventually_contains(performance_governor, "schedutil") + def test_nvidia_gb10(self): + """NVIDIA GB10 desktops use the RTX Spark CPPC settings""" + + policies = self.create_nvidia_rtx_spark(processor_version="GB10") + self.start_daemon() + + profiles = self.get_dbus_property("Profiles") + self.assertEqual(len(profiles), 3) + self.assertEqual(profiles[0]["CpuDriver"], "nvidia_rtx_spark") + self.assertEqual(self.get_dbus_property("ActiveProfile"), "balanced") + self.assert_file_eventually_contains( + os.path.join(policies["policy4"], "scaling_governor"), "performance" + ) + def test_nvidia_rtx_spark_processor_gate(self): """The RTX Spark values are not applied to other CPPC systems"""