Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
49f6e706
Commit
49f6e706
authored
Dec 01, 2004
by
Len Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge intel.com:/home/lenb/src/26-stable-dev
into intel.com:/home/lenb/src/26-latest-dev
parents
591e47a6
211001b9
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
42 additions
and
45 deletions
+42
-45
Documentation/kernel-parameters.txt
Documentation/kernel-parameters.txt
+3
-4
drivers/acpi/osl.c
drivers/acpi/osl.c
+3
-3
drivers/acpi/processor.c
drivers/acpi/processor.c
+30
-32
include/acpi/processor.h
include/acpi/processor.h
+3
-3
include/linux/acpi.h
include/linux/acpi.h
+3
-3
No files found.
Documentation/kernel-parameters.txt
View file @
49f6e706
...
...
@@ -1006,10 +1006,9 @@ running once the system is up.
(param: profile step/bucket size as a power of 2 for
statistical time based profiling)
processor.c2= [HW, ACPI]
processor.c3= [HW, ACPI]
0 - disable C2 or C3 idle power saving state.
1 - enable C2 or C3 (default unless DMI blacklist entry)
processor.max_cstate= [HW, ACPI]
Limit processor to maximum C-state
max_cstate=9 overrides any DMI blacklist limit.
prompt_ramdisk= [RAM] List of RAM disks to prompt for floppy disk
before loading.
...
...
drivers/acpi/osl.c
View file @
49f6e706
...
...
@@ -1152,10 +1152,10 @@ acpi_wake_gpes_always_on_setup(char *str)
__setup
(
"acpi_wake_gpes_always_on"
,
acpi_wake_gpes_always_on_setup
);
/*
*
acpi_cstate_limit
is defined in the base kernel so modules can
*
max_cstate
is defined in the base kernel so modules can
* change it w/o depending on the state of the processor module.
*/
unsigned
int
acpi_cstate_limit
=
ACPI_C_STATES_MAX
;
unsigned
int
max_cstate
=
ACPI_C_STATES_MAX
;
EXPORT_SYMBOL
(
acpi_cstate_limit
);
EXPORT_SYMBOL
(
max_cstate
);
drivers/acpi/processor.c
View file @
49f6e706
...
...
@@ -101,8 +101,6 @@ static struct acpi_driver acpi_processor_driver = {
},
};
static
int
c2
=
-
1
;
static
int
c3
=
-
1
;
struct
acpi_processor_errata
{
u8
smp
;
...
...
@@ -144,8 +142,6 @@ static struct file_operations acpi_processor_limit_fops = {
static
struct
acpi_processor
*
processors
[
NR_CPUS
];
static
struct
acpi_processor_errata
errata
;
module_param_named
(
c2
,
c2
,
bool
,
0
);
module_param_named
(
c3
,
c3
,
bool
,
0
);
static
void
(
*
pm_idle_save
)(
void
);
...
...
@@ -343,8 +339,8 @@ acpi_processor_idle (void)
{
struct
acpi_processor
*
pr
=
NULL
;
struct
acpi_processor_cx
*
cx
=
NULL
;
int
next_state
=
0
;
int
sleep_ticks
=
0
;
unsigned
int
next_state
=
0
;
unsigned
int
sleep_ticks
=
0
;
u32
t1
,
t2
=
0
;
pr
=
processors
[
smp_processor_id
()];
...
...
@@ -480,9 +476,9 @@ acpi_processor_idle (void)
* Track the number of longs (time asleep is greater than threshold)
* and promote when the count threshold is reached. Note that bus
* mastering activity may prevent promotions.
* Do not promote above
acpi_cstate_limit
.
* Do not promote above
max_cstate
.
*/
if
(
cx
->
promotion
.
state
&&
(
cx
->
promotion
.
state
<=
acpi_cstate_limit
))
{
if
(
cx
->
promotion
.
state
&&
(
cx
->
promotion
.
state
<=
max_cstate
))
{
if
(
sleep_ticks
>
cx
->
promotion
.
threshold
.
ticks
)
{
cx
->
promotion
.
count
++
;
cx
->
demotion
.
count
=
0
;
...
...
@@ -520,10 +516,10 @@ acpi_processor_idle (void)
end:
/*
* Demote if current state exceeds
acpi_cstate_limit
* Demote if current state exceeds
max_cstate
*/
if
(
pr
->
power
.
state
>
acpi_cstate_limit
)
{
next_state
=
acpi_cstate_limit
;
if
(
pr
->
power
.
state
>
max_cstate
)
{
next_state
=
max_cstate
;
}
/*
...
...
@@ -677,11 +673,6 @@ acpi_processor_get_power_info (
else
if
(
errata
.
smp
)
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"C2 not supported in SMP mode
\n
"
));
else
if
(
!
c2
)
printk
(
KERN_INFO
"C2 disabled
\n
"
);
/*
* Otherwise we've met all of our C2 requirements.
* Normalize the C2 latency to expidite policy.
...
...
@@ -737,9 +728,6 @@ acpi_processor_get_power_info (
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"C3 not supported on PIIX4 with Type-F DMA
\n
"
));
}
else
if
(
!
c3
)
printk
(
KERN_INFO
"C3 disabled
\n
"
);
/*
* Otherwise we've met all of our C3 requirements.
* Normalize the C2 latency to expidite policy. Enable
...
...
@@ -1007,7 +995,7 @@ acpi_processor_get_performance_states (
struct
acpi_buffer
format
=
{
sizeof
(
"NNNNNN"
),
"NNNNNN"
};
struct
acpi_buffer
state
=
{
0
,
NULL
};
union
acpi_object
*
pss
=
NULL
;
int
i
=
0
;
unsigned
int
i
;
ACPI_FUNCTION_TRACE
(
"acpi_processor_get_performance_states"
);
...
...
@@ -1196,7 +1184,7 @@ static struct file_operations acpi_processor_perf_fops = {
static
int
acpi_processor_perf_seq_show
(
struct
seq_file
*
seq
,
void
*
offset
)
{
struct
acpi_processor
*
pr
=
(
struct
acpi_processor
*
)
seq
->
private
;
int
i
=
0
;
unsigned
int
i
;
ACPI_FUNCTION_TRACE
(
"acpi_processor_perf_seq_show"
);
...
...
@@ -1956,7 +1944,7 @@ static int acpi_processor_info_open_fs(struct inode *inode, struct file *file)
static
int
acpi_processor_power_seq_show
(
struct
seq_file
*
seq
,
void
*
offset
)
{
struct
acpi_processor
*
pr
=
(
struct
acpi_processor
*
)
seq
->
private
;
int
i
=
0
;
unsigned
int
i
;
ACPI_FUNCTION_TRACE
(
"acpi_processor_power_seq_show"
);
...
...
@@ -1965,9 +1953,11 @@ static int acpi_processor_power_seq_show(struct seq_file *seq, void *offset)
seq_printf
(
seq
,
"active state: C%d
\n
"
"default state: C%d
\n
"
"max_cstate: C%d
\n
"
"bus master activity: %08x
\n
"
,
pr
->
power
.
state
,
pr
->
power
.
default_state
,
max_cstate
,
pr
->
power
.
bm_activity
);
seq_puts
(
seq
,
"states:
\n
"
);
...
...
@@ -2554,17 +2544,22 @@ acpi_processor_remove (
return_VALUE
(
0
);
}
/* IBM ThinkPad R40e crashes mysteriously when going into C2 or C3.
For now disable this. Probably a bug somewhere else. */
/*
* IBM ThinkPad R40e crashes mysteriously when going into C2 or C3.
* For now disable this. Probably a bug somewhere else.
*
* To skip this limit, boot/load with a large max_cstate limit.
*/
static
int
no_c2c3
(
struct
dmi_system_id
*
id
)
{
printk
(
KERN_INFO
"%s detected - C2,C3 disabled. Overwrite with
\"
processor.c2=1 processor.c3=1
\n\"
"
,
id
->
ident
);
if
(
c2
==
-
1
)
c2
=
0
;
if
(
c3
==
-
1
)
c3
=
0
;
if
(
max_cstate
>
ACPI_C_STATES_MAX
)
return
0
;
printk
(
KERN_NOTICE
PREFIX
"%s detected - C2,C3 disabled."
" Override with
\"
processor.max_cstate=9
\"\n
"
,
id
->
ident
);
max_cstate
=
1
;
return
0
;
}
...
...
@@ -2609,6 +2604,9 @@ acpi_processor_init (void)
dmi_check_system
(
processor_dmi_table
);
if
(
max_cstate
<
ACPI_C_STATES_MAX
)
printk
(
KERN_NOTICE
"ACPI: processor limited to max C-state %d
\n
"
,
max_cstate
);
return_VALUE
(
0
);
}
...
...
@@ -2632,6 +2630,6 @@ acpi_processor_exit (void)
module_init
(
acpi_processor_init
);
module_exit
(
acpi_processor_exit
);
module_param_named
(
acpi_cstate_limit
,
acpi_cstate_limit
,
uint
,
0
);
module_param_named
(
max_cstate
,
max_cstate
,
uint
,
0
);
EXPORT_SYMBOL
(
acpi_processor_set_thermal_limit
);
include/acpi/processor.h
View file @
49f6e706
...
...
@@ -17,7 +17,7 @@
struct
acpi_processor_cx_policy
{
u32
count
;
int
state
;
u32
state
;
struct
{
u32
time
;
u32
ticks
;
...
...
@@ -38,8 +38,8 @@ struct acpi_processor_cx {
};
struct
acpi_processor_power
{
int
state
;
int
default_state
;
u32
state
;
u32
default_state
;
u32
bm_activity
;
struct
acpi_processor_cx
states
[
ACPI_PROCESSOR_MAX_POWER
];
};
...
...
include/linux/acpi.h
View file @
49f6e706
...
...
@@ -483,15 +483,15 @@ static inline int acpi_blacklisted(void)
* 2: C2 okay, but not C3 etc.
*/
extern
unsigned
int
acpi_cstate_limit
;
extern
unsigned
int
max_cstate
;
static
inline
unsigned
int
acpi_get_cstate_limit
(
void
)
{
return
acpi_cstate_limit
;
return
max_cstate
;
}
static
inline
void
acpi_set_cstate_limit
(
unsigned
int
new_limit
)
{
acpi_cstate_limit
=
new_limit
;
max_cstate
=
new_limit
;
return
;
}
#else
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment