Hello community,

here is the log from the commit of package cpupower for openSUSE:Factory 
checked in at 2016-04-28 16:55:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cpupower (Old)
 and      /work/SRC/openSUSE:Factory/.cpupower.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "cpupower"

Changes:
--------
--- /work/SRC/openSUSE:Factory/cpupower/cpupower.changes        2016-02-22 
08:57:40.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.cpupower.new/cpupower.changes   2016-04-28 
16:58:28.000000000 +0200
@@ -1,0 +2,6 @@
+Wed Apr 20 13:16:43 UTC 2016 - [email protected]
+
+- Add cpuidle functions to public libcpupower
+*Add library_cleanup.patch
+
+-------------------------------------------------------------------

Old:
----
  cpupower-3.19.tar.bz2

New:
----
  cpupower-4.6.tar.bz2
  library_cleanup.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ cpupower.spec ++++++
--- /var/tmp/diff_new_pack.6J2ZqV/_old  2016-04-28 16:58:31.000000000 +0200
+++ /var/tmp/diff_new_pack.6J2ZqV/_new  2016-04-28 16:58:31.000000000 +0200
@@ -20,16 +20,19 @@
 Name:           cpupower
 # Use this as version when things are in mainline kernel
 %define version %(rpm -q --qf '%{VERSION}' kernel-source)
-Version:        3.19
+Version:        4.6
 Release:        0
 %define tsversion      4.8
 Summary:        Tools to determine and set CPU Power related Settings
 License:        GPL-2.0
 Group:          System/Base
+Url:            
https://git.kernel.org/cgit/linux/kernel/git/rafael/linux-pm.git
 Source:         %{name}-%{version}.tar.bz2
 Source1:        turbostat-%{tsversion}.tar.bz2
 Source2:        cpupower_export_tarball_from_git.sh
 Source3:        msr-index.h
+
+Patch1:         library_cleanup.patch
 Patch20:        turbostat_fix_man_perm.patch
 Patch21:        make_header_file_passable_from_outside.patch
 Patch22:        turbostat_set_asm_header_fixed.patch
@@ -80,6 +83,7 @@
 
 %prep
 %setup -D -b 1
+%patch1  -p1
 cd ../turbostat-%{tsversion}
 %patch20 -p1
 %patch21 -p1
@@ -148,6 +152,7 @@
 %files devel
 %defattr(-,root,root)
 /usr/include/cpufreq.h
+/usr/include/cpuidle.h
 %{_libdir}/libcpu*.so
 
 %changelog

++++++ cpupower-3.19.tar.bz2 -> cpupower-4.6.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cpupower-3.19/debug/i386/dump_psb.c 
new/cpupower-4.6/debug/i386/dump_psb.c
--- old/cpupower-3.19/debug/i386/dump_psb.c     2015-01-28 04:12:38.000000000 
+0100
+++ new/cpupower-4.6/debug/i386/dump_psb.c      2015-12-07 16:45:21.000000000 
+0100
@@ -134,7 +134,7 @@
 }
 
 static struct option info_opts[] = {
-       {.name = "numpst",      .has_arg=no_argument,   .flag=NULL, .val='n'},
+     {"numpst", no_argument, NULL, 'n'},
 };
 
 void print_help(void)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cpupower-3.19/debug/kernel/cpufreq-test_tsc.c 
new/cpupower-4.6/debug/kernel/cpufreq-test_tsc.c
--- old/cpupower-3.19/debug/kernel/cpufreq-test_tsc.c   2015-01-28 
04:12:38.000000000 +0100
+++ new/cpupower-4.6/debug/kernel/cpufreq-test_tsc.c    2015-12-07 
16:45:21.000000000 +0100
@@ -81,11 +81,11 @@
 
        printk(KERN_DEBUG "start--> \n");
        then = read_pmtmr();
-        rdtscll(then_tsc);
+       then_tsc = rdtsc();
        for (i=0;i<20;i++) {
                mdelay(100);
                now = read_pmtmr();
-               rdtscll(now_tsc);
+               now_tsc = rdtsc();
                diff = (now - then) & 0xFFFFFF;
                diff_tsc = now_tsc - then_tsc;
                printk(KERN_DEBUG "t1: %08u t2: %08u diff_pmtmr: %08u diff_tsc: 
%016llu\n", then, now, diff, diff_tsc);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cpupower-3.19/man/cpupower-idle-set.1 
new/cpupower-4.6/man/cpupower-idle-set.1
--- old/cpupower-3.19/man/cpupower-idle-set.1   2015-01-28 04:12:38.000000000 
+0100
+++ new/cpupower-4.6/man/cpupower-idle-set.1    2015-12-07 16:45:21.000000000 
+0100
@@ -20,7 +20,9 @@
 Enable a specific processor sleep state.
 .TP
 \fB\-D\fR \fB\-\-disable-by-latency\fR <LATENCY>
-Disable all idle states with a equal or higher latency than <LATENCY>
+Disable all idle states with a equal or higher latency than <LATENCY>.
+
+Enable all idle states with a latency lower than <LATENCY>.
 .TP
 \fB\-E\fR \fB\-\-enable-all\fR
 Enable all idle states if not enabled already.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cpupower-3.19/utils/cpufreq-info.c 
new/cpupower-4.6/utils/cpufreq-info.c
--- old/cpupower-3.19/utils/cpufreq-info.c      2015-01-28 04:12:38.000000000 
+0100
+++ new/cpupower-4.6/utils/cpufreq-info.c       2015-12-07 16:45:21.000000000 
+0100
@@ -536,21 +536,21 @@
 }
 
 static struct option info_opts[] = {
-       { .name = "debug",      .has_arg = no_argument,         .flag = NULL,   
.val = 'e'},
-       { .name = "boost",      .has_arg = no_argument,         .flag = NULL,   
.val = 'b'},
-       { .name = "freq",       .has_arg = no_argument,         .flag = NULL,   
.val = 'f'},
-       { .name = "hwfreq",     .has_arg = no_argument,         .flag = NULL,   
.val = 'w'},
-       { .name = "hwlimits",   .has_arg = no_argument,         .flag = NULL,   
.val = 'l'},
-       { .name = "driver",     .has_arg = no_argument,         .flag = NULL,   
.val = 'd'},
-       { .name = "policy",     .has_arg = no_argument,         .flag = NULL,   
.val = 'p'},
-       { .name = "governors",  .has_arg = no_argument,         .flag = NULL,   
.val = 'g'},
-       { .name = "related-cpus", .has_arg = no_argument,       .flag = NULL,   
.val = 'r'},
-       { .name = "affected-cpus",.has_arg = no_argument,       .flag = NULL,   
.val = 'a'},
-       { .name = "stats",      .has_arg = no_argument,         .flag = NULL,   
.val = 's'},
-       { .name = "latency",    .has_arg = no_argument,         .flag = NULL,   
.val = 'y'},
-       { .name = "proc",       .has_arg = no_argument,         .flag = NULL,   
.val = 'o'},
-       { .name = "human",      .has_arg = no_argument,         .flag = NULL,   
.val = 'm'},
-       { .name = "no-rounding", .has_arg = no_argument,        .flag = NULL,   
.val = 'n'},
+       {"debug",        no_argument,            NULL,   'e'},
+       {"boost",        no_argument,            NULL,   'b'},
+       {"freq",         no_argument,            NULL,   'f'},
+       {"hwfreq",       no_argument,            NULL,   'w'},
+       {"hwlimits",     no_argument,            NULL,   'l'},
+       {"driver",       no_argument,            NULL,   'd'},
+       {"policy",       no_argument,            NULL,   'p'},
+       {"governors",    no_argument,            NULL,   'g'},
+       {"related-cpus",  no_argument,   NULL,   'r'},
+       {"affected-cpus", no_argument,   NULL,   'a'},
+       {"stats",        no_argument,            NULL,   's'},
+       {"latency",      no_argument,            NULL,   'y'},
+       {"proc",         no_argument,            NULL,   'o'},
+       {"human",        no_argument,            NULL,   'm'},
+       {"no-rounding", no_argument,     NULL,   'n'},
        { },
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cpupower-3.19/utils/cpufreq-set.c 
new/cpupower-4.6/utils/cpufreq-set.c
--- old/cpupower-3.19/utils/cpufreq-set.c       2015-01-28 04:12:38.000000000 
+0100
+++ new/cpupower-4.6/utils/cpufreq-set.c        2015-12-07 16:45:21.000000000 
+0100
@@ -17,15 +17,16 @@
 
 #include "cpufreq.h"
 #include "helpers/helpers.h"
+#include "helpers/sysfs.h"
 
 #define NORM_FREQ_LEN 32
 
 static struct option set_opts[] = {
-       { .name = "min",        .has_arg = required_argument,   .flag = NULL,   
.val = 'd'},
-       { .name = "max",        .has_arg = required_argument,   .flag = NULL,   
.val = 'u'},
-       { .name = "governor",   .has_arg = required_argument,   .flag = NULL,   
.val = 'g'},
-       { .name = "freq",       .has_arg = required_argument,   .flag = NULL,   
.val = 'f'},
-       { .name = "related",    .has_arg = no_argument,         .flag = NULL,   
.val='r'},
+       {"min",         required_argument,      NULL, 'd'},
+       {"max",         required_argument,      NULL, 'u'},
+       {"governor",    required_argument,      NULL, 'g'},
+       {"freq",        required_argument,      NULL, 'f'},
+       {"related",     no_argument,            NULL, 'r'},
        { },
 };
 
@@ -318,6 +319,9 @@
                    cpufreq_cpu_exists(cpu))
                        continue;
 
+               if (sysfs_is_cpu_online(cpu) != 1)
+                       continue;
+
                printf(_("Setting cpu: %d\n"), cpu);
                ret = do_one_cpu(cpu, &new_pol, freq, policychange);
                if (ret) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cpupower-3.19/utils/cpuidle-info.c 
new/cpupower-4.6/utils/cpuidle-info.c
--- old/cpupower-3.19/utils/cpuidle-info.c      2015-01-28 04:12:38.000000000 
+0100
+++ new/cpupower-4.6/utils/cpuidle-info.c       2015-12-07 16:45:21.000000000 
+0100
@@ -126,8 +126,8 @@
 }
 
 static struct option info_opts[] = {
-       { .name = "silent",     .has_arg = no_argument, .flag = NULL,   .val = 
's'},
-       { .name = "proc",       .has_arg = no_argument, .flag = NULL,   .val = 
'o'},
+       {"silent", no_argument, NULL, 's'},
+       {"proc", no_argument, NULL, 'o'},
        { },
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cpupower-3.19/utils/cpuidle-set.c 
new/cpupower-4.6/utils/cpuidle-set.c
--- old/cpupower-3.19/utils/cpuidle-set.c       2015-01-28 04:12:38.000000000 
+0100
+++ new/cpupower-4.6/utils/cpuidle-set.c        2015-12-07 16:45:21.000000000 
+0100
@@ -13,15 +13,11 @@
 #include "helpers/sysfs.h"
 
 static struct option info_opts[] = {
-       { .name = "disable",
-         .has_arg = required_argument, .flag = NULL,   .val = 'd'},
-       { .name = "enable",
-         .has_arg = required_argument, .flag = NULL,   .val = 'e'},
-       { .name = "disable-by-latency",
-         .has_arg = required_argument, .flag = NULL,   .val = 'D'},
-       { .name = "enable-all",
-         .has_arg = no_argument,       .flag = NULL,   .val = 'E'},
-       { },
+     {"disable",       required_argument,              NULL, 'd'},
+     {"enable",                required_argument,              NULL, 'e'},
+     {"disable-by-latency", required_argument,         NULL, 'D'},
+     {"enable-all",    no_argument,                    NULL, 'E'},
+     { },
 };
 
 
@@ -148,14 +144,21 @@
                                        (cpu, idlestate);
                                state_latency = sysfs_get_idlestate_latency
                                        (cpu, idlestate);
-                               printf("CPU: %u - idlestate %u - state_latency: 
%llu - latency: %llu\n",
-                                      cpu, idlestate, state_latency, latency);
-                               if (disabled == 1 || latency > state_latency)
+                               if (disabled == 1) {
+                                       if (latency > state_latency){
+                                               ret = sysfs_idlestate_disable
+                                                       (cpu, idlestate, 0);
+                                               if (ret == 0)
+               printf(_("Idlestate %u enabled on CPU %u\n"),  idlestate, cpu);
+                                       }
                                        continue;
-                               ret = sysfs_idlestate_disable
-                                       (cpu, idlestate, 1);
-                               if (ret == 0)
+                               }
+                               if (latency <= state_latency){
+                                       ret = sysfs_idlestate_disable
+                                               (cpu, idlestate, 1);
+                                       if (ret == 0)
                printf(_("Idlestate %u disabled on CPU %u\n"), idlestate, cpu);
+                               }
                        }
                        break;
                case 'E':
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cpupower-3.19/utils/cpupower-info.c 
new/cpupower-4.6/utils/cpupower-info.c
--- old/cpupower-3.19/utils/cpupower-info.c     2015-01-28 04:12:38.000000000 
+0100
+++ new/cpupower-4.6/utils/cpupower-info.c      2015-12-07 16:45:21.000000000 
+0100
@@ -17,8 +17,8 @@
 #include "helpers/sysfs.h"
 
 static struct option set_opts[] = {
-       { .name = "perf-bias",  .has_arg = optional_argument,   .flag = NULL,   
.val = 'b'},
-       { },
+     {"perf-bias", optional_argument, NULL, 'b'},
+     { },
 };
 
 static void print_wrong_arg_exit(void)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cpupower-3.19/utils/cpupower-set.c 
new/cpupower-4.6/utils/cpupower-set.c
--- old/cpupower-3.19/utils/cpupower-set.c      2015-01-28 04:12:38.000000000 
+0100
+++ new/cpupower-4.6/utils/cpupower-set.c       2015-12-07 16:45:21.000000000 
+0100
@@ -18,7 +18,7 @@
 #include "helpers/bitmask.h"
 
 static struct option set_opts[] = {
-       { .name = "perf-bias",  .has_arg = required_argument,   .flag = NULL,   
.val = 'b'},
+       {"perf-bias", required_argument, NULL, 'b'},
        { },
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cpupower-3.19/utils/helpers/pci.c 
new/cpupower-4.6/utils/helpers/pci.c
--- old/cpupower-3.19/utils/helpers/pci.c       2015-01-28 04:12:38.000000000 
+0100
+++ new/cpupower-4.6/utils/helpers/pci.c        2015-12-07 16:45:21.000000000 
+0100
@@ -25,14 +25,21 @@
 struct pci_dev *pci_acc_init(struct pci_access **pacc, int domain, int bus,
                             int slot, int func, int vendor, int dev)
 {
-       struct pci_filter filter_nb_link = { domain, bus, slot, func,
-                                            vendor, dev };
+       struct pci_filter filter_nb_link;
        struct pci_dev *device;
 
        *pacc = pci_alloc();
        if (*pacc == NULL)
                return NULL;
 
+       pci_filter_init(*pacc, &filter_nb_link);
+       filter_nb_link.domain   = domain;
+       filter_nb_link.bus      = bus;
+       filter_nb_link.slot     = slot;
+       filter_nb_link.func     = func;
+       filter_nb_link.vendor   = vendor;
+       filter_nb_link.device   = dev;
+
        pci_init(*pacc);
        pci_scan_bus(*pacc);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cpupower-3.19/utils/helpers/topology.c 
new/cpupower-4.6/utils/helpers/topology.c
--- old/cpupower-3.19/utils/helpers/topology.c  2015-01-28 04:12:38.000000000 
+0100
+++ new/cpupower-4.6/utils/helpers/topology.c   2015-12-07 16:45:21.000000000 
+0100
@@ -76,13 +76,19 @@
                if(sysfs_topology_read_file(
                        cpu,
                        "physical_package_id",
-                       &(cpu_top->core_info[cpu].pkg)) < 0)
-                       return -1;
+                       &(cpu_top->core_info[cpu].pkg)) < 0) {
+                       cpu_top->core_info[cpu].pkg = -1;
+                       cpu_top->core_info[cpu].core = -1;
+                       continue;
+               }
                if(sysfs_topology_read_file(
                        cpu,
                        "core_id",
-                       &(cpu_top->core_info[cpu].core)) < 0)
-                       return -1;
+                       &(cpu_top->core_info[cpu].core)) < 0) {
+                       cpu_top->core_info[cpu].pkg = -1;
+                       cpu_top->core_info[cpu].core = -1;
+                       continue;
+               }
        }
 
        qsort(cpu_top->core_info, cpus, sizeof(struct cpuid_core_info),
@@ -93,12 +99,15 @@
           done by pkg value. */
        last_pkg = cpu_top->core_info[0].pkg;
        for(cpu = 1; cpu < cpus; cpu++) {
-               if(cpu_top->core_info[cpu].pkg != last_pkg) {
+               if (cpu_top->core_info[cpu].pkg != last_pkg &&
+                               cpu_top->core_info[cpu].pkg != -1) {
+
                        last_pkg = cpu_top->core_info[cpu].pkg;
                        cpu_top->pkgs++;
                }
        }
-       cpu_top->pkgs++;
+       if (!(cpu_top->core_info[0].pkg == -1))
+               cpu_top->pkgs++;
 
        /* Intel's cores count is not consecutively numbered, there may
         * be a core_id of 3, but none of 2. Assume there always is 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cpupower-3.19/utils/idle_monitor/cpupower-monitor.c 
new/cpupower-4.6/utils/idle_monitor/cpupower-monitor.c
--- old/cpupower-3.19/utils/idle_monitor/cpupower-monitor.c     2015-01-28 
04:12:38.000000000 +0100
+++ new/cpupower-4.6/utils/idle_monitor/cpupower-monitor.c      2015-12-07 
16:45:21.000000000 +0100
@@ -143,6 +143,9 @@
        /* Be careful CPUs may got resorted for pkg value do not just use cpu */
        if (!bitmask_isbitset(cpus_chosen, cpu_top.core_info[cpu].cpu))
                return;
+       if (!cpu_top.core_info[cpu].is_online &&
+           cpu_top.core_info[cpu].pkg == -1)
+               return;
 
        if (topology_depth > 2)
                printf("%4d|", cpu_top.core_info[cpu].pkg);
@@ -191,7 +194,8 @@
         * It's up to the monitor plug-in to check .is_online, this one
         * is just for additional info.
         */
-       if (!cpu_top.core_info[cpu].is_online) {
+       if (!cpu_top.core_info[cpu].is_online &&
+           cpu_top.core_info[cpu].pkg != -1) {
                printf(_(" *is offline\n"));
                return;
        } else
@@ -388,6 +392,9 @@
                return EXIT_FAILURE;
        }
 
+       if (!cpu_top.core_info[0].is_online)
+               printf("WARNING: at least one cpu is offline\n");
+
        /* Default is: monitor all CPUs */
        if (bitmask_isallclear(cpus_chosen))
                bitmask_setall(cpus_chosen);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cpupower-3.19/utils/idle_monitor/mperf_monitor.c 
new/cpupower-4.6/utils/idle_monitor/mperf_monitor.c
--- old/cpupower-3.19/utils/idle_monitor/mperf_monitor.c        2015-01-28 
04:12:38.000000000 +0100
+++ new/cpupower-4.6/utils/idle_monitor/mperf_monitor.c 2015-12-07 
16:45:21.000000000 +0100
@@ -135,7 +135,7 @@
                dprint("%s: TSC Ref - mperf_diff: %llu, tsc_diff: %llu\n",
                       mperf_cstates[id].name, mperf_diff, tsc_diff);
        } else if (max_freq_mode == MAX_FREQ_SYSFS) {
-               timediff = timespec_diff_us(time_start, time_end);
+               timediff = max_frequency * timespec_diff_us(time_start, 
time_end);
                *percent = 100.0 * mperf_diff / timediff;
                dprint("%s: MAXFREQ - mperf_diff: %llu, time_diff: %llu\n",
                       mperf_cstates[id].name, mperf_diff, timediff);
@@ -176,7 +176,7 @@
        dprint("%s: Average freq based on %s maximum frequency:\n",
               mperf_cstates[id].name,
               (max_freq_mode == MAX_FREQ_TSC_REF) ? "TSC calculated" : "sysfs 
read");
-       dprint("%max_frequency: %lu", max_frequency);
+       dprint("max_frequency: %lu\n", max_frequency);
        dprint("aperf_diff: %llu\n", aperf_diff);
        dprint("mperf_diff: %llu\n", mperf_diff);
        dprint("avg freq:   %llu\n", *count);
@@ -279,6 +279,7 @@
                return -1;
        }
        max_freq_mode = MAX_FREQ_SYSFS;
+       max_frequency /= 1000; /* Default automatically to MHz value */
        return 0;
 }
 

++++++ cpupower_export_tarball_from_git.sh ++++++
--- /var/tmp/diff_new_pack.6J2ZqV/_old  2016-04-28 16:58:31.000000000 +0200
+++ /var/tmp/diff_new_pack.6J2ZqV/_new  2016-04-28 16:58:31.000000000 +0200
@@ -60,7 +60,7 @@
 git archive --format=tar $GIT_TAG tools/power/x86/turbostat |tar -x
 mv tools/power/x86/turbostat turbostat${VERSION}
 mkdir turbostat${VERSION}/asm
-[ ! -e "$GIT_DIR"/../arch/x86/include/uapi/asm/msr-index.h ] && echo 
"msr-index.h does not exist" && exit 1
+[ ! -e "$GIT_DIR"/../arch/x86/include/asm/msr-index.h ] && echo "msr-index.h 
does not exist" && exit 1
 cp "$GIT_DIR"/../arch/x86/include/uapi/asm/msr-index.h turbostat${VERSION}/asm
 tar -cvjf turbostat${VERSION}.tar.bz2 turbostat${VERSION}
 popd

++++++ library_cleanup.patch ++++++
++++ 2871 lines (skipped)

++++++ msr-index.h ++++++
--- /var/tmp/diff_new_pack.6J2ZqV/_old  2016-04-28 16:58:31.000000000 +0200
+++ /var/tmp/diff_new_pack.6J2ZqV/_new  2016-04-28 16:58:31.000000000 +0200
@@ -35,7 +35,7 @@
 #define MSR_IA32_PERFCTR0              0x000000c1
 #define MSR_IA32_PERFCTR1              0x000000c2
 #define MSR_FSB_FREQ                   0x000000cd
-#define MSR_NHM_PLATFORM_INFO          0x000000ce
+#define MSR_PLATFORM_INFO              0x000000ce
 
 #define MSR_NHM_SNB_PKG_CST_CFG_CTL    0x000000e2
 #define NHM_C3_AUTO_DEMOTE             (1UL << 25)
@@ -44,7 +44,6 @@
 #define SNB_C1_AUTO_UNDEMOTE           (1UL << 27)
 #define SNB_C3_AUTO_UNDEMOTE           (1UL << 28)
 
-#define MSR_PLATFORM_INFO              0x000000ce
 #define MSR_MTRRcap                    0x000000fe
 #define MSR_IA32_BBL_CR_CTL            0x00000119
 #define MSR_IA32_BBL_CR_CTL3           0x0000011e
@@ -56,11 +55,15 @@
 #define MSR_IA32_MCG_CAP               0x00000179
 #define MSR_IA32_MCG_STATUS            0x0000017a
 #define MSR_IA32_MCG_CTL               0x0000017b
+#define MSR_IA32_MCG_EXT_CTL           0x000004d0
 
 #define MSR_OFFCORE_RSP_0              0x000001a6
 #define MSR_OFFCORE_RSP_1              0x000001a7
 #define MSR_NHM_TURBO_RATIO_LIMIT      0x000001ad
 #define MSR_IVT_TURBO_RATIO_LIMIT      0x000001ae
+#define MSR_TURBO_RATIO_LIMIT          0x000001ad
+#define MSR_TURBO_RATIO_LIMIT1         0x000001ae
+#define MSR_TURBO_RATIO_LIMIT2         0x000001af
 
 #define MSR_LBR_SELECT                 0x000001c8
 #define MSR_LBR_TOS                    0x000001c9
@@ -69,11 +72,43 @@
 #define MSR_LBR_CORE_FROM              0x00000040
 #define MSR_LBR_CORE_TO                        0x00000060
 
+#define MSR_LBR_INFO_0                 0x00000dc0 /* ... 0xddf for _31 */
+#define LBR_INFO_MISPRED               BIT_ULL(63)
+#define LBR_INFO_IN_TX                 BIT_ULL(62)
+#define LBR_INFO_ABORT                 BIT_ULL(61)
+#define LBR_INFO_CYCLES                        0xffff
+
 #define MSR_IA32_PEBS_ENABLE           0x000003f1
 #define MSR_IA32_DS_AREA               0x00000600
 #define MSR_IA32_PERF_CAPABILITIES     0x00000345
 #define MSR_PEBS_LD_LAT_THRESHOLD      0x000003f6
 
+#define MSR_IA32_RTIT_CTL              0x00000570
+#define RTIT_CTL_TRACEEN               BIT(0)
+#define RTIT_CTL_CYCLEACC              BIT(1)
+#define RTIT_CTL_OS                    BIT(2)
+#define RTIT_CTL_USR                   BIT(3)
+#define RTIT_CTL_CR3EN                 BIT(7)
+#define RTIT_CTL_TOPA                  BIT(8)
+#define RTIT_CTL_MTC_EN                        BIT(9)
+#define RTIT_CTL_TSC_EN                        BIT(10)
+#define RTIT_CTL_DISRETC               BIT(11)
+#define RTIT_CTL_BRANCH_EN             BIT(13)
+#define RTIT_CTL_MTC_RANGE_OFFSET      14
+#define RTIT_CTL_MTC_RANGE             (0x0full << RTIT_CTL_MTC_RANGE_OFFSET)
+#define RTIT_CTL_CYC_THRESH_OFFSET     19
+#define RTIT_CTL_CYC_THRESH            (0x0full << RTIT_CTL_CYC_THRESH_OFFSET)
+#define RTIT_CTL_PSB_FREQ_OFFSET       24
+#define RTIT_CTL_PSB_FREQ                      (0x0full << 
RTIT_CTL_PSB_FREQ_OFFSET)
+#define MSR_IA32_RTIT_STATUS           0x00000571
+#define RTIT_STATUS_CONTEXTEN          BIT(1)
+#define RTIT_STATUS_TRIGGEREN          BIT(2)
+#define RTIT_STATUS_ERROR              BIT(4)
+#define RTIT_STATUS_STOPPED            BIT(5)
+#define MSR_IA32_RTIT_CR3_MATCH                0x00000572
+#define MSR_IA32_RTIT_OUTPUT_BASE      0x00000560
+#define MSR_IA32_RTIT_OUTPUT_MASK      0x00000561
+
 #define MSR_MTRRfix64K_00000           0x00000250
 #define MSR_MTRRfix16K_80000           0x00000258
 #define MSR_MTRRfix16K_A0000           0x00000259
@@ -105,6 +140,8 @@
 #define DEBUGCTLMSR_BTS_OFF_USR                (1UL << 10)
 #define DEBUGCTLMSR_FREEZE_LBRS_ON_PMI (1UL << 11)
 
+#define MSR_PEBS_FRONTEND              0x000003f7
+
 #define MSR_IA32_POWER_CTL             0x000001fc
 
 #define MSR_IA32_MC0_CTL               0x00000400
@@ -119,6 +156,7 @@
 #define MSR_CORE_C3_RESIDENCY          0x000003fc
 #define MSR_CORE_C6_RESIDENCY          0x000003fd
 #define MSR_CORE_C7_RESIDENCY          0x000003fe
+#define MSR_KNL_CORE_C6_RESIDENCY      0x000003ff
 #define MSR_PKG_C2_RESIDENCY           0x0000060d
 #define MSR_PKG_C8_RESIDENCY           0x00000630
 #define MSR_PKG_C9_RESIDENCY           0x00000631
@@ -147,11 +185,33 @@
 #define MSR_PP1_ENERGY_STATUS          0x00000641
 #define MSR_PP1_POLICY                 0x00000642
 
+#define MSR_CONFIG_TDP_NOMINAL         0x00000648
+#define MSR_CONFIG_TDP_LEVEL_1         0x00000649
+#define MSR_CONFIG_TDP_LEVEL_2         0x0000064A
+#define MSR_CONFIG_TDP_CONTROL         0x0000064B
+#define MSR_TURBO_ACTIVATION_RATIO     0x0000064C
+
+#define MSR_PKG_WEIGHTED_CORE_C0_RES   0x00000658
+#define MSR_PKG_ANY_CORE_C0_RES                0x00000659
+#define MSR_PKG_ANY_GFXE_C0_RES                0x0000065A
+#define MSR_PKG_BOTH_CORE_GFXE_C0_RES  0x0000065B
+
 #define MSR_CORE_C1_RES                        0x00000660
 
 #define MSR_CC6_DEMOTION_POLICY_CONFIG 0x00000668
 #define MSR_MC6_DEMOTION_POLICY_CONFIG 0x00000669
 
+#define MSR_CORE_PERF_LIMIT_REASONS    0x00000690
+#define MSR_GFX_PERF_LIMIT_REASONS     0x000006B0
+#define MSR_RING_PERF_LIMIT_REASONS    0x000006B1
+
+/* Config TDP MSRs */
+#define MSR_CONFIG_TDP_NOMINAL         0x00000648
+#define MSR_CONFIG_TDP_LEVEL1          0x00000649
+#define MSR_CONFIG_TDP_LEVEL2          0x0000064A
+#define MSR_CONFIG_TDP_CONTROL         0x0000064B
+#define MSR_TURBO_ACTIVATION_RATIO     0x0000064C
+
 /* Hardware P state interface */
 #define MSR_PPERF                      0x0000064e
 #define MSR_PERF_LIMIT_REASONS         0x0000064f
@@ -251,6 +311,10 @@
 /* Fam 16h MSRs */
 #define MSR_F16H_L2I_PERF_CTL          0xc0010230
 #define MSR_F16H_L2I_PERF_CTR          0xc0010231
+#define MSR_F16H_DR1_ADDR_MASK         0xc0011019
+#define MSR_F16H_DR2_ADDR_MASK         0xc001101a
+#define MSR_F16H_DR3_ADDR_MASK         0xc001101b
+#define MSR_F16H_DR0_ADDR_MASK         0xc0011027
 
 /* Fam 15h MSRs */
 #define MSR_F15H_PERF_CTL              0xc0010200
@@ -275,6 +339,7 @@
 /* C1E active bits in int pending message */
 #define K8_INTP_C1E_ACTIVE_MASK                0x18000000
 #define MSR_K8_TSEG_ADDR               0xc0010112
+#define MSR_K8_TSEG_MASK               0xc0010113
 #define K8_MTRRFIXRANGE_DRAM_ENABLE    0x00040000 /* MtrrFixDramEn bit    */
 #define K8_MTRRFIXRANGE_DRAM_MODIFY    0x00080000 /* MtrrFixDramModEn bit */
 #define K8_MTRR_RDMEM_WRMEM_MASK       0x18181818 /* Mask: RdMem|WrMem    */
@@ -345,6 +410,7 @@
 #define FEATURE_CONTROL_LOCKED                         (1<<0)
 #define FEATURE_CONTROL_VMXON_ENABLED_INSIDE_SMX       (1<<1)
 #define FEATURE_CONTROL_VMXON_ENABLED_OUTSIDE_SMX      (1<<2)
+#define FEATURE_CONTROL_LMCE                           (1<<20)
 
 #define MSR_IA32_APICBASE              0x0000001b
 #define MSR_IA32_APICBASE_BSP          (1<<8)
@@ -356,8 +422,12 @@
 #define MSR_IA32_UCODE_WRITE           0x00000079
 #define MSR_IA32_UCODE_REV             0x0000008b
 
+#define MSR_IA32_SMM_MONITOR_CTL       0x0000009b
+#define MSR_IA32_SMBASE                        0x0000009e
+
 #define MSR_IA32_PERF_STATUS           0x00000198
 #define MSR_IA32_PERF_CTL              0x00000199
+#define INTEL_PERF_CTL_MASK            0xffff
 #define MSR_AMD_PSTATE_DEF_BASE                0xc0010064
 #define MSR_AMD_PERF_STATUS            0xc0010063
 #define MSR_AMD_PERF_CTL               0xc0010062


Reply via email to