summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys/cpudrv.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/sys/cpudrv.h')
-rw-r--r--usr/src/uts/common/sys/cpudrv.h62
1 files changed, 32 insertions, 30 deletions
diff --git a/usr/src/uts/common/sys/cpudrv.h b/usr/src/uts/common/sys/cpudrv.h
index 782d8f509c..4cf4e4d1b6 100644
--- a/usr/src/uts/common/sys/cpudrv.h
+++ b/usr/src/uts/common/sys/cpudrv.h
@@ -76,10 +76,10 @@ typedef struct cpudrv_pm {
cpudrv_pm_spd_t *cur_spd; /* ptr to current speed */
uint_t num_spd; /* number of speeds */
hrtime_t lastquan_mstate[NCMSTATES]; /* last quantum's mstate */
- clock_t lastquan_ticks; /* last quantum's clock tick */
+ clock_t lastquan_ticks; /* last quantum's clock tick */
int pm_busycnt; /* pm_busy_component() count */
taskq_t *tq; /* taskq handler for CPU monitor */
- timeout_id_t timeout_id; /* cpudrv_pm_monitor()'s timeout_id */
+ timeout_id_t timeout_id; /* cpudrv_monitor()'s timeout_id */
int timeout_count; /* count dispatched timeouts */
kmutex_t timeout_lock; /* protect timeout_count */
kcondvar_t timeout_cv; /* wait on timeout_count change */
@@ -94,31 +94,31 @@ typedef struct cpudrv_pm {
* Idle & user threads water marks in percentage
*/
#if defined(__x86)
-#define CPUDRV_PM_IDLE_HWM 85 /* idle high water mark */
-#define CPUDRV_PM_IDLE_LWM 70 /* idle low water mark */
-#define CPUDRV_PM_IDLE_BLWM_CNT_MAX 1 /* # of iters idle can be < lwm */
-#define CPUDRV_PM_IDLE_BHWM_CNT_MAX 1 /* # of iters idle can be < hwm */
+#define CPUDRV_IDLE_HWM 85 /* idle high water mark */
+#define CPUDRV_IDLE_LWM 70 /* idle low water mark */
+#define CPUDRV_IDLE_BLWM_CNT_MAX 1 /* # of iters idle can be < lwm */
+#define CPUDRV_IDLE_BHWM_CNT_MAX 1 /* # of iters idle can be < hwm */
#else
-#define CPUDRV_PM_IDLE_HWM 98 /* idle high water mark */
-#define CPUDRV_PM_IDLE_LWM 8 /* idle low water mark */
-#define CPUDRV_PM_IDLE_BLWM_CNT_MAX 2 /* # of iters idle can be < lwm */
-#define CPUDRV_PM_IDLE_BHWM_CNT_MAX 2 /* # of iters idle can be < hwm */
+#define CPUDRV_IDLE_HWM 98 /* idle high water mark */
+#define CPUDRV_IDLE_LWM 8 /* idle low water mark */
+#define CPUDRV_IDLE_BLWM_CNT_MAX 2 /* # of iters idle can be < lwm */
+#define CPUDRV_IDLE_BHWM_CNT_MAX 2 /* # of iters idle can be < hwm */
#endif
-#define CPUDRV_PM_USER_HWM 20 /* user high water mark */
-#define CPUDRV_PM_IDLE_BUF_ZONE 4 /* buffer zone when going down */
+#define CPUDRV_USER_HWM 20 /* user high water mark */
+#define CPUDRV_IDLE_BUF_ZONE 4 /* buffer zone when going down */
/*
* Maximums for creating 'pm-components' property
*/
-#define CPUDRV_PM_COMP_MAX_DIG 4 /* max digits in power level */
+#define CPUDRV_COMP_MAX_DIG 4 /* max digits in power level */
/* or divisor */
-#define CPUDRV_PM_COMP_MAX_VAL 9999 /* max value in above digits */
+#define CPUDRV_COMP_MAX_VAL 9999 /* max value in above digits */
/*
* Component number for calls to PM framework
*/
-#define CPUDRV_PM_COMP_NUM 0 /* first component is 0 */
+#define CPUDRV_COMP_NUM 0 /* first component is 0 */
/*
* Quantum counts for normal and other clock speeds in terms of ticks.
@@ -132,26 +132,26 @@ typedef struct cpudrv_pm {
* that we monitor less frequently.
*
* We reach a tradeoff between these two requirements by monitoring
- * more frequently when we are in low speed mode (CPUDRV_PM_QUANT_CNT_OTHR)
+ * more frequently when we are in low speed mode (CPUDRV_QUANT_CNT_OTHR)
* so we can bring the CPU up without user noticing it. Moreover, at low
* speed we are not using CPU much so extra code execution should be fine.
* Since we are in no hurry to bring CPU down and at normal speed and we
* might really be using the CPU fully, we monitor less frequently
- * (CPUDRV_PM_QUANT_CNT_NORMAL).
+ * (CPUDRV_QUANT_CNT_NORMAL).
*/
#if defined(__x86)
-#define CPUDRV_PM_QUANT_CNT_NORMAL (hz * 1) /* 1 sec */
+#define CPUDRV_QUANT_CNT_NORMAL (hz * 1) /* 1 sec */
#else
-#define CPUDRV_PM_QUANT_CNT_NORMAL (hz * 5) /* 5 sec */
+#define CPUDRV_QUANT_CNT_NORMAL (hz * 5) /* 5 sec */
#endif
-#define CPUDRV_PM_QUANT_CNT_OTHR (hz * 1) /* 1 sec */
+#define CPUDRV_QUANT_CNT_OTHR (hz * 1) /* 1 sec */
/*
* Taskq parameters
*/
-#define CPUDRV_PM_TASKQ_THREADS 1 /* # threads to run CPU monitor */
-#define CPUDRV_PM_TASKQ_MIN 2 /* min # of taskq entries */
-#define CPUDRV_PM_TASKQ_MAX 2 /* max # of taskq entries */
+#define CPUDRV_TASKQ_THREADS 1 /* # threads to run CPU monitor */
+#define CPUDRV_TASKQ_MIN 2 /* min # of taskq entries */
+#define CPUDRV_TASKQ_MAX 2 /* max # of taskq entries */
/*
@@ -159,13 +159,14 @@ typedef struct cpudrv_pm {
*/
typedef struct cpudrv_devstate {
dev_info_t *dip; /* devinfo handle */
+ cpu_t *cp; /* CPU data for this node */
processorid_t cpu_id; /* CPU number for this node */
cpudrv_pm_t cpudrv_pm; /* power management data */
kmutex_t lock; /* protects state struct */
- void *mach_state; /* machine specific state */
} cpudrv_devstate_t;
extern void *cpudrv_state;
+extern boolean_t cpudrv_enabled;
/*
* Debugging definitions
@@ -191,12 +192,13 @@ extern uint_t cpudrv_debug;
#define DPRINTF(flag, args)
#endif /* DEBUG */
-extern int cpudrv_pm_change_speed(cpudrv_devstate_t *, cpudrv_pm_spd_t *);
-extern boolean_t cpudrv_pm_get_cpu_id(dev_info_t *, processorid_t *);
-extern boolean_t cpudrv_pm_power_ready(void);
-extern boolean_t cpudrv_pm_is_governor_thread(cpudrv_pm_t *);
-extern boolean_t cpudrv_mach_pm_init(cpudrv_devstate_t *);
-extern void cpudrv_mach_pm_free(cpudrv_devstate_t *);
+extern int cpudrv_change_speed(cpudrv_devstate_t *, cpudrv_pm_spd_t *);
+extern boolean_t cpudrv_get_cpu_id(dev_info_t *, processorid_t *);
+extern boolean_t cpudrv_is_governor_thread(cpudrv_pm_t *);
+extern boolean_t cpudrv_mach_init(cpudrv_devstate_t *);
+extern boolean_t cpudrv_power_ready(void);
+extern boolean_t cpudrv_is_enabled(cpudrv_devstate_t *);
+extern void cpudrv_set_supp_freqs(cpudrv_devstate_t *);
#endif /* _KERNEL */