}
strncpy(govname, policy->governor->name, MAX_GOV_NAME_LEN);
+ govname[MAX_GOV_NAME_LEN-1] = 0;
get_cpu_var(core_state).linux_governor = govname;
put_cpu_var(core_state);
argv[3] = NULL;
/* KCH: we can't wait here to actually see if we succeeded, we're in interrupt context */
- return call_usermodehelper_fns("/bin/sh", argv, envp, UMH_NO_WAIT, NULL, gov_switch_cleanup, NULL);
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(3,9,0)
+ return call_usermodehelper_fns("/bin/sh", argv, envp, UMH_NO_WAIT, NULL, gov_switch_cleanup, NULL);
+#else
+ {
+ struct subprocess_info *sp;
+
+ sp = call_usermodehelper_setup("/bin/sh", argv, envp, GFP_ATOMIC, NULL, gov_switch_cleanup, NULL);
+ if (!sp) {
+ goto out_freeargv;
+ }
+
+ return call_usermodehelper_exec(sp,0);
+ }
+#endif
+
out_freeargv:
palacios_free(argv);
return -1;
}
- seq_printf(file,"\nPstate\tCtrl\tKHz\n");
+ seq_printf(file,"\nPstate\tCtrl\tKHz\tmW\tuS(X)\tuS(B)\n");
numstates = get_cpu_var(processors)->performance->state_count;
if (!numstates) {
seq_printf(file,"UNKNOWN\n");
int i;
for (i=0;i<numstates;i++) {
seq_printf(file,
- "%u\t%llx\t%llu\n",
+ "%u\t%llx\t%llu\t%llu\t%llu\t%llu\n",
i,
get_cpu_var(processors)->performance->states[i].control,
- get_cpu_var(processors)->performance->states[i].core_frequency*1000);
+ get_cpu_var(processors)->performance->states[i].core_frequency*1000,
+ get_cpu_var(processors)->performance->states[i].power,
+ get_cpu_var(processors)->performance->states[i].transition_latency,
+ get_cpu_var(processors)->performance->states[i].bus_master_latency);
}
}
put_cpu_var(processors);
struct proc_dir_entry *proc;
struct proc_dir_entry *prochw;
- proc = create_proc_entry("v3-dvfs",0444, palacios_get_procdir());
+ PAL_PROC_CREATE(proc,"v3-dvfs",0444,palacios_get_procdir(),&pstate_fops);
if (!proc) {
ERROR("Failed to create proc entry for p-state control\n");
return -1;
}
- proc->proc_fops = &pstate_fops;
-
INFO("/proc/v3vee/v3-dvfs successfully created\n");
- prochw = create_proc_entry("v3-dvfs-hw",0444,palacios_get_procdir());
-
+ PAL_PROC_CREATE(prochw,"v3-dvfs-hw",0444,palacios_get_procdir(),&pstate_hw_fops);
if (!prochw) {
ERROR("Failed to create proc entry for p-state hw info\n");
return -1;
}
- prochw->proc_fops = &pstate_hw_fops;
-
INFO("/proc/v3vee/v3-dvfs-hw successfully created\n");
return 0;