Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8a19cb58 authored by Thomas Renninger's avatar Thomas Renninger Committed by Rafael J. Wysocki
Browse files

cpupower: If root, try to load msr driver on x86 if /dev/cpu/0/msr is not available

parent 84baab91
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -12,6 +12,9 @@
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/utsname.h>

#include "builtin.h"
#include "helpers/helpers.h"
@@ -169,6 +172,8 @@ int main(int argc, const char *argv[])
{
	const char *cmd;
	unsigned int i, ret;
	struct stat statbuf;
	struct utsname uts;

	cpus_chosen = bitmask_alloc(sysconf(_SC_NPROCESSORS_CONF));

@@ -195,6 +200,15 @@ int main(int argc, const char *argv[])

	get_cpu_info(0, &cpupower_cpu_info);
	run_as_root = !getuid();
	if (run_as_root) {
		ret = uname(&uts);
		if (!ret && !strcmp(uts.machine, "x86_64") &&
		    stat("/dev/cpu/0/msr", &statbuf) != 0) {
			if (system("modprobe msr") == -1)
	fprintf(stderr, _("MSR access not available.\n"));
		}
	}
		

	for (i = 0; i < ARRAY_SIZE(commands); i++) {
		struct cmd_struct *p = commands + i;