#define ACPI_PROCESSOR_MAX_THROTTLE 250 /* 25% */
#define ACPI_PROCESSOR_MAX_DUTY_WIDTH 4
-#ifdef CONFIG_XEN
-#define NR_ACPI_CPUS (NR_CPUS < 256 ? 256 : NR_CPUS)
-#else
-#define NR_ACPI_CPUS NR_CPUS
-#endif /* CONFIG_XEN */
-
#define ACPI_PDC_REVISION_ID 0x1
#define ACPI_PSD_REV0_REVISION 0 /* Support for _PSD as in ACPI 3.0 */
struct acpi_processor_cx;
-#ifdef CONFIG_PROCESSOR_EXTERNAL_CONTROL
-struct acpi_csd_package {
- acpi_integer num_entries;
- acpi_integer revision;
- acpi_integer domain;
- acpi_integer coord_type;
- acpi_integer num_processors;
- acpi_integer index;
-} __attribute__ ((packed));
-#endif
-
struct acpi_power_register {
u8 descriptor;
u16 length;
u32 power;
u32 usage;
u64 time;
-#ifdef CONFIG_PROCESSOR_EXTERNAL_CONTROL
- /* Require raw information for external control logic */
- struct acpi_power_register reg;
- u32 csd_count;
- struct acpi_csd_package *domain_info;
-#endif
struct acpi_processor_cx_policy promotion;
struct acpi_processor_cx_policy demotion;
char desc[ACPI_CX_DESC_LEN];
struct acpi_processor_throttling throttling;
struct acpi_processor_limit limit;
struct thermal_cooling_device *cdev;
- /* the _PDC objects for this processor, if any */
- struct acpi_object_list *pdc;
};
struct acpi_processor_errata {
DECLARE_PER_CPU(struct acpi_processor *, processors);
extern struct acpi_processor_errata errata;
-void arch_acpi_processor_init_pdc(struct acpi_processor *pr);
-void arch_acpi_processor_cleanup_pdc(struct acpi_processor *pr);
-
#ifdef ARCH_HAS_POWER_INIT
void acpi_processor_power_init_bm_check(struct acpi_processor_flags *flags,
unsigned int cpu);
#ifdef CONFIG_CPU_FREQ
void acpi_processor_ppc_init(void);
void acpi_processor_ppc_exit(void);
-int acpi_processor_ppc_has_changed(struct acpi_processor *pr);
+int acpi_processor_ppc_has_changed(struct acpi_processor *pr, int event_flag);
+extern int acpi_processor_get_bios_limit(int cpu, unsigned int *limit);
#else
static inline void acpi_processor_ppc_init(void)
{
{
return;
}
-#ifdef CONFIG_PROCESSOR_EXTERNAL_CONTROL
-int acpi_processor_ppc_has_changed(struct acpi_processor *pr);
-#else
-static inline int acpi_processor_ppc_has_changed(struct acpi_processor *pr)
+static inline int acpi_processor_ppc_has_changed(struct acpi_processor *pr,
+ int event_flag)
{
static unsigned int printout = 1;
if (printout) {
}
return 0;
}
-#endif /* CONFIG_PROCESSOR_EXTERNAL_CONTROL */
+static inline int acpi_processor_get_bios_limit(int cpu, unsigned int *limit)
+{
+ return -ENODEV;
+}
+
#endif /* CONFIG_CPU_FREQ */
+/* in processor_pdc.c */
+void acpi_processor_set_pdc(acpi_handle handle);
+
/* in processor_throttling.c */
int acpi_processor_tstate_has_changed(struct acpi_processor *pr);
int acpi_processor_get_throttling_info(struct acpi_processor *pr);
}
#endif
-/*
- * Following are interfaces geared to external processor PM control
- * logic like a VMM
- */
-/* Events notified to external control logic */
-#define PROCESSOR_PM_INIT 1
-#define PROCESSOR_PM_CHANGE 2
-#define PROCESSOR_HOTPLUG 3
-
-/* Objects for the PM events */
-#define PM_TYPE_IDLE 0
-#define PM_TYPE_PERF 1
-#define PM_TYPE_THR 2
-#define PM_TYPE_MAX 3
-
-/* Processor hotplug events */
-#define HOTPLUG_TYPE_ADD 0
-#define HOTPLUG_TYPE_REMOVE 1
-
-#ifdef CONFIG_PROCESSOR_EXTERNAL_CONTROL
-struct processor_extcntl_ops {
- /* Transfer processor PM events to external control logic */
- int (*pm_ops[PM_TYPE_MAX])(struct acpi_processor *pr, int event);
- /* Notify physical processor status to external control logic */
- int (*hotplug)(struct acpi_processor *pr, int type);
-};
-extern const struct processor_extcntl_ops *processor_extcntl_ops;
-
-static inline int processor_cntl_external(void)
-{
- return (processor_extcntl_ops != NULL);
-}
-
-static inline int processor_pm_external(void)
-{
- return processor_cntl_external() &&
- (processor_extcntl_ops->pm_ops[PM_TYPE_IDLE] != NULL);
-}
-
-static inline int processor_pmperf_external(void)
-{
- return processor_cntl_external() &&
- (processor_extcntl_ops->pm_ops[PM_TYPE_PERF] != NULL);
-}
-
-static inline int processor_pmthr_external(void)
-{
- return processor_cntl_external() &&
- (processor_extcntl_ops->pm_ops[PM_TYPE_THR] != NULL);
-}
-
-extern int processor_notify_external(struct acpi_processor *pr,
- int event, int type);
-extern void processor_extcntl_init(void);
-extern int processor_extcntl_prepare(struct acpi_processor *pr);
-extern int acpi_processor_get_performance_info(struct acpi_processor *pr);
-extern int acpi_processor_get_psd(struct acpi_processor *pr);
-void arch_acpi_processor_init_extcntl(const struct processor_extcntl_ops **);
-
-/*
- * Declarations for objects and functions removed in native 2.6.29, and
- * thus moved to drivers/acpi/processor_extcntl.c.
- */
-extern struct notifier_block acpi_processor_latency_notifier;
-int acpi_processor_set_power_policy(struct acpi_processor *);
-#else
-static inline int processor_cntl_external(void) {return 0;}
-static inline int processor_pm_external(void) {return 0;}
-static inline int processor_pmperf_external(void) {return 0;}
-static inline int processor_pmthr_external(void) {return 0;}
-static inline int processor_notify_external(struct acpi_processor *pr,
- int event, int type)
-{
- return 0;
-}
-static inline void processor_extcntl_init(void) {}
-static inline int processor_extcntl_prepare(struct acpi_processor *pr)
-{
- return 0;
-}
-#endif /* CONFIG_PROCESSOR_EXTERNAL_CONTROL */
-
-#ifdef CONFIG_XEN
-static inline void xen_convert_pct_reg(struct xen_pct_register *xpct,
- struct acpi_pct_register *apct)
-{
- xpct->descriptor = apct->descriptor;
- xpct->length = apct->length;
- xpct->space_id = apct->space_id;
- xpct->bit_width = apct->bit_width;
- xpct->bit_offset = apct->bit_offset;
- xpct->reserved = apct->reserved;
- xpct->address = apct->address;
-}
-
-static inline void xen_convert_pss_states(struct xen_processor_px *xpss,
- struct acpi_processor_px *apss, int state_count)
-{
- int i;
- for(i=0; i<state_count; i++) {
- xpss->core_frequency = apss->core_frequency;
- xpss->power = apss->power;
- xpss->transition_latency = apss->transition_latency;
- xpss->bus_master_latency = apss->bus_master_latency;
- xpss->control = apss->control;
- xpss->status = apss->status;
- xpss++;
- apss++;
- }
-}
-
-static inline void xen_convert_psd_pack(struct xen_psd_package *xpsd,
- struct acpi_psd_package *apsd)
-{
- xpsd->num_entries = apsd->num_entries;
- xpsd->revision = apsd->revision;
- xpsd->domain = apsd->domain;
- xpsd->coord_type = apsd->coord_type;
- xpsd->num_processors = apsd->num_processors;
-}
-
-#endif /* CONFIG_XEN */
-
#endif