freebsd-ports/lang/intel-compute-runtime/files/patch-max_freq

45 lines
1.2 KiB
Text
Raw Normal View History

/sys/bus/pci/devices doesn't exist as kms-drm exports sysfs via sysctl
$ clinfo | fgrep clock
Max clock frequency 0MHz
--- shared/source/os_interface/linux/drm_neo.cpp.orig 2020-04-11 07:41:07 UTC
+++ shared/source/os_interface/linux/drm_neo.cpp
@@ -24,6 +24,11 @@
#include <fstream>
#include <linux/limits.h>
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#endif
+
namespace NEO {
namespace IoctlHelper {
@@ -104,6 +109,16 @@ int Drm::getEnabledPooledEu(int &enabled) {
int Drm::getMaxGpuFrequency(int &maxGpuFrequency) {
maxGpuFrequency = 0;
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+ char max_freq[PAGE_SIZE];
+ size_t len = sizeof(max_freq);
+
+ if (sysctlbyname("sys.class.drm.card0.gt_max_freq_mhz", &max_freq, &len, NULL, 0)) {
+ return 0;
+ }
+
+ maxGpuFrequency = std::stoi(max_freq);
+#else
std::string clockSysFsPath = getSysFsPciPath();
clockSysFsPath += "/gt_max_freq_mhz";
@@ -115,6 +130,7 @@ int Drm::getMaxGpuFrequency(int &maxGpuFrequency) {
ifs >> maxGpuFrequency;
ifs.close();
+#endif
return 0;
}