Coverage Report

Created: 2017-10-25 09:10

/root/src/xen/xen/include/xen/cpuidle.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * cpuidle.h - xen idle state module derived from Linux 
3
 *
4
 * (C) 2007 Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
5
 *          Shaohua Li <shaohua.li@intel.com>
6
 *          Adam Belay <abelay@novell.com>
7
 *  Copyright (C) 2008 Intel Corporation
8
 *
9
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10
 *
11
 *  This program is free software; you can redistribute it and/or modify
12
 *  it under the terms of the GNU General Public License as published by
13
 *  the Free Software Foundation; either version 2 of the License, or (at
14
 *  your option) any later version.
15
 *
16
 *  This program is distributed in the hope that it will be useful, but
17
 *  WITHOUT ANY WARRANTY; without even the implied warranty of
18
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19
 *  General Public License for more details.
20
 *
21
 *  You should have received a copy of the GNU General Public License along
22
 *  with this program; If not, see <http://www.gnu.org/licenses/>.
23
 *
24
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
25
 */
26
#ifndef _XEN_CPUIDLE_H
27
#define _XEN_CPUIDLE_H
28
29
#include <xen/cpumask.h>
30
#include <xen/spinlock.h>
31
32
156
#define ACPI_PROCESSOR_MAX_POWER        8
33
#define CPUIDLE_NAME_LEN                16
34
35
0
#define ACPI_CSTATE_EM_NONE     0
36
0
#define ACPI_CSTATE_EM_SYSIO    1
37
48
#define ACPI_CSTATE_EM_FFH      2
38
12
#define ACPI_CSTATE_EM_HALT     3
39
40
struct acpi_processor_cx
41
{
42
    u8 idx;
43
    u8 type;         /* ACPI_STATE_Cn */
44
    u8 entry_method; /* ACPI_CSTATE_EM_xxx */
45
    u32 address;
46
    u32 latency;
47
    u32 target_residency;
48
    u32 usage;
49
    u64 time;
50
};
51
52
struct acpi_processor_flags
53
{
54
    u8 bm_control:1;
55
    u8 bm_check:1;
56
    u8 has_cst:1;
57
    u8 power_setup_done:1;
58
    u8 bm_rld_set:1;
59
};
60
61
struct acpi_processor_power
62
{
63
    unsigned int cpu;
64
    struct acpi_processor_flags flags;
65
    struct acpi_processor_cx *last_state;
66
    struct acpi_processor_cx *safe_state;
67
    void *gdata; /* governor specific data */
68
    u64 last_state_update_tick;
69
    u32 last_residency;
70
    u32 count;
71
    spinlock_t stat_lock;
72
    struct acpi_processor_cx states[ACPI_PROCESSOR_MAX_POWER];
73
};
74
75
struct cpuidle_governor
76
{
77
    char                    name[CPUIDLE_NAME_LEN];
78
    unsigned int            rating;
79
80
    int  (*enable)          (struct acpi_processor_power *dev);
81
    void (*disable)         (struct acpi_processor_power *dev);
82
83
    int  (*select)          (struct acpi_processor_power *dev);
84
    void (*reflect)         (struct acpi_processor_power *dev);
85
};
86
87
extern s8 xen_cpuidle;
88
extern struct cpuidle_governor *cpuidle_current_governor;
89
90
bool cpuidle_using_deep_cstate(void);
91
void cpuidle_disable_deep_cstate(void);
92
93
extern void cpuidle_wakeup_mwait(cpumask_t *mask);
94
95
4.04M
#define CPUIDLE_DRIVER_STATE_START  1
96
97
extern void menu_get_trace_data(u32 *expected, u32 *pred);
98
99
#endif /* _XEN_CPUIDLE_H */