x86/mwait-idle: add CPU model 0x4a (Atom Z34xx series)
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Wed, 4 Jan 2017 13:29:08 +0000 (14:29 +0100)
committerJan Beulich <jbeulich@suse.com>
Wed, 4 Jan 2017 13:29:08 +0000 (14:29 +0100)
Add CPU ID for Atom Z34xx processors. Datasheets indicate support for this,
detailed information about potential quirks or limitations are missing, though.
So we just reuse the definition from official BSP code.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
[Linux commit: 5e7ec268fd48d63cfd0e3a9be6c6443f01673bd4]
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
xen/arch/x86/cpu/mwait-idle.c

index 290c57baa3855837da6092f3b7af9adaee1575a1..e3cda1cd0ae694fb3bec4c083ced82d17a306804 100644 (file)
@@ -580,6 +580,40 @@ static const struct cpuidle_state atom_cstates[] = {
        {}
 };
 
+static const struct cpuidle_state tangier_cstates[] = {
+       {
+               .name = "C1-TNG",
+               .flags = MWAIT2flg(0x00),
+               .exit_latency = 1,
+               .target_residency = 4,
+       },
+       {
+               .name = "C4-TNG",
+               .flags = MWAIT2flg(0x30) | CPUIDLE_FLAG_TLB_FLUSHED,
+               .exit_latency = 100,
+               .target_residency = 400,
+       },
+       {
+               .name = "C6-TNG",
+               .flags = MWAIT2flg(0x52) | CPUIDLE_FLAG_TLB_FLUSHED,
+               .exit_latency = 140,
+               .target_residency = 560,
+       },
+       {
+               .name = "C7-TNG",
+               .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
+               .exit_latency = 1200,
+               .target_residency = 4000,
+       },
+       {
+               .name = "C9-TNG",
+               .flags = MWAIT2flg(0x64) | CPUIDLE_FLAG_TLB_FLUSHED,
+               .exit_latency = 10000,
+               .target_residency = 20000,
+       },
+       {}
+};
+
 static const struct cpuidle_state avn_cstates[] = {
        {
                .name = "C1-AVN",
@@ -800,6 +834,10 @@ static const struct idle_cpu idle_cpu_atom = {
        .state_table = atom_cstates,
 };
 
+static const struct idle_cpu idle_cpu_tangier = {
+       .state_table = tangier_cstates,
+};
+
 static const struct idle_cpu idle_cpu_lincroft = {
        .state_table = atom_cstates,
        .auto_demotion_disable_flags = ATM_LNC_C6_AUTO_DEMOTE,
@@ -889,6 +927,7 @@ static const struct x86_cpu_id intel_idle_ids[] __initconstrel = {
        ICPU(0x2d, snb),
        ICPU(0x36, atom),
        ICPU(0x37, byt),
+       ICPU(0x4a, tangier),
        ICPU(0x4c, cht),
        ICPU(0x3a, ivb),
        ICPU(0x3e, ivt),