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
Kirill Smelkov
linux
Commits
1c29f6a0
Commit
1c29f6a0
authored
Apr 06, 2021
by
Rafael J. Wysocki
Browse files
Options
Browse Files
Download
Plain Diff
Merge back 'acpi-processor' material for v5.13.
parents
8cdddd18
2c25fabd
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
116 additions
and
133 deletions
+116
-133
Documentation/firmware-guide/acpi/debug.rst
Documentation/firmware-guide/acpi/debug.rst
+0
-1
drivers/acpi/acpi_processor.c
drivers/acpi/acpi_processor.c
+12
-21
drivers/acpi/processor_driver.c
drivers/acpi/processor_driver.c
+1
-5
drivers/acpi/processor_idle.c
drivers/acpi/processor_idle.c
+17
-21
drivers/acpi/processor_pdc.c
drivers/acpi/processor_pdc.c
+2
-5
drivers/acpi/processor_perflib.c
drivers/acpi/processor_perflib.c
+27
-25
drivers/acpi/processor_throttling.c
drivers/acpi/processor_throttling.c
+57
-53
drivers/acpi/sysfs.c
drivers/acpi/sysfs.c
+0
-1
include/acpi/acpi_drivers.h
include/acpi/acpi_drivers.h
+0
-1
No files found.
Documentation/firmware-guide/acpi/debug.rst
View file @
1c29f6a0
...
...
@@ -58,7 +58,6 @@ shows the supported mask values, currently these::
ACPI_CONTAINER_COMPONENT 0x01000000
ACPI_SYSTEM_COMPONENT 0x02000000
ACPI_MEMORY_DEVICE_COMPONENT 0x08000000
ACPI_PROCESSOR_COMPONENT 0x20000000
debug_level
===========
...
...
drivers/acpi/acpi_processor.c
View file @
1c29f6a0
...
...
@@ -22,10 +22,6 @@
#include "internal.h"
#define _COMPONENT ACPI_PROCESSOR_COMPONENT
ACPI_MODULE_NAME
(
"processor"
);
DEFINE_PER_CPU
(
struct
acpi_processor
*
,
processors
);
EXPORT_PER_CPU_SYMBOL
(
processors
);
...
...
@@ -51,19 +47,19 @@ static int acpi_processor_errata_piix4(struct pci_dev *dev)
switch
(
dev
->
revision
)
{
case
0
:
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Found PIIX4 A-step
\n
"
)
);
dev_dbg
(
&
dev
->
dev
,
"Found PIIX4 A-step
\n
"
);
break
;
case
1
:
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Found PIIX4 B-step
\n
"
)
);
dev_dbg
(
&
dev
->
dev
,
"Found PIIX4 B-step
\n
"
);
break
;
case
2
:
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Found PIIX4E
\n
"
)
);
dev_dbg
(
&
dev
->
dev
,
"Found PIIX4E
\n
"
);
break
;
case
3
:
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Found PIIX4M
\n
"
)
);
dev_dbg
(
&
dev
->
dev
,
"Found PIIX4M
\n
"
);
break
;
default:
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Found unknown PIIX4
\n
"
)
);
dev_dbg
(
&
dev
->
dev
,
"Found unknown PIIX4
\n
"
);
break
;
}
...
...
@@ -129,11 +125,9 @@ static int acpi_processor_errata_piix4(struct pci_dev *dev)
}
if
(
errata
.
piix4
.
bmisx
)
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Bus master activity detection (BM-IDE) erratum enabled
\n
"
));
dev_dbg
(
&
dev
->
dev
,
"Bus master activity detection (BM-IDE) erratum enabled
\n
"
);
if
(
errata
.
piix4
.
fdma
)
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Type-F DMA livelock erratum (C3 disabled)
\n
"
));
dev_dbg
(
&
dev
->
dev
,
"Type-F DMA livelock erratum (C3 disabled)
\n
"
);
return
0
;
}
...
...
@@ -244,11 +238,9 @@ static int acpi_processor_get_info(struct acpi_device *device)
*/
if
(
acpi_gbl_FADT
.
pm2_control_block
&&
acpi_gbl_FADT
.
pm2_control_length
)
{
pr
->
flags
.
bm_control
=
1
;
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Bus mastering arbitration control present
\n
"
));
dev_dbg
(
&
device
->
dev
,
"Bus mastering arbitration control present
\n
"
);
}
else
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"No bus mastering arbitration control
\n
"
));
dev_dbg
(
&
device
->
dev
,
"No bus mastering arbitration control
\n
"
);
if
(
!
strcmp
(
acpi_device_hid
(
device
),
ACPI_PROCESSOR_OBJECT_HID
))
{
/* Declared with "Processor" statement; match ProcessorID */
...
...
@@ -291,7 +283,7 @@ static int acpi_processor_get_info(struct acpi_device *device)
pr
->
phys_id
=
acpi_get_phys_id
(
pr
->
handle
,
device_declaration
,
pr
->
acpi_id
);
if
(
invalid_phys_cpuid
(
pr
->
phys_id
))
acpi_handle_debug
(
pr
->
handle
,
"f
ailed to get CPU physical ID.
\n
"
);
dev_dbg
(
&
device
->
dev
,
"F
ailed to get CPU physical ID.
\n
"
);
pr
->
id
=
acpi_map_cpuid
(
pr
->
phys_id
,
pr
->
acpi_id
);
if
(
!
cpu0_initialized
&&
!
acpi_has_cpu_in_madt
())
{
...
...
@@ -328,11 +320,10 @@ static int acpi_processor_get_info(struct acpi_device *device)
* CPU+CPU ID.
*/
sprintf
(
acpi_device_bid
(
device
),
"CPU%X"
,
pr
->
id
);
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Processor [%d:%d]
\n
"
,
pr
->
id
,
pr
->
acpi_id
));
dev_dbg
(
&
device
->
dev
,
"Processor [%d:%d]
\n
"
,
pr
->
id
,
pr
->
acpi_id
);
if
(
!
object
.
processor
.
pblk_address
)
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"No PBLK (NULL address)
\n
"
)
);
dev_dbg
(
&
device
->
dev
,
"No PBLK (NULL address)
\n
"
);
else
if
(
object
.
processor
.
pblk_length
!=
6
)
dev_err
(
&
device
->
dev
,
"Invalid PBLK length [%d]
\n
"
,
object
.
processor
.
pblk_length
);
...
...
drivers/acpi/processor_driver.c
View file @
1c29f6a0
...
...
@@ -28,9 +28,6 @@
#define ACPI_PROCESSOR_NOTIFY_POWER 0x81
#define ACPI_PROCESSOR_NOTIFY_THROTTLING 0x82
#define _COMPONENT ACPI_PROCESSOR_COMPONENT
ACPI_MODULE_NAME
(
"processor_driver"
);
MODULE_AUTHOR
(
"Paul Diefenbaugh"
);
MODULE_DESCRIPTION
(
"ACPI Processor Driver"
);
MODULE_LICENSE
(
"GPL"
);
...
...
@@ -87,8 +84,7 @@ static void acpi_processor_notify(acpi_handle handle, u32 event, void *data)
dev_name
(
&
device
->
dev
),
event
,
0
);
break
;
default:
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Unsupported event [0x%x]
\n
"
,
event
));
acpi_handle_debug
(
handle
,
"Unsupported event [0x%x]
\n
"
,
event
);
break
;
}
...
...
drivers/acpi/processor_idle.c
View file @
1c29f6a0
...
...
@@ -32,9 +32,6 @@
#include <asm/cpu.h>
#endif
#define _COMPONENT ACPI_PROCESSOR_COMPONENT
ACPI_MODULE_NAME
(
"processor_idle"
);
#define ACPI_IDLE_STATE_START (IS_ENABLED(CONFIG_ARCH_HAS_CPU_RELAX) ? 1 : 0)
static
unsigned
int
max_cstate
__read_mostly
=
ACPI_PROCESSOR_MAX_POWER
;
...
...
@@ -240,8 +237,8 @@ static int acpi_processor_get_power_info_fadt(struct acpi_processor *pr)
* 100 microseconds.
*/
if
(
acpi_gbl_FADT
.
c2_latency
>
ACPI_PROCESSOR_MAX_C2_LATENCY
)
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"C2 latency too large [%d]
\n
"
,
acpi_gbl_FADT
.
c2_latency
)
);
acpi_handle_debug
(
pr
->
handle
,
"C2 latency too large [%d]
\n
"
,
acpi_gbl_FADT
.
c2_latency
);
/* invalidate C2 */
pr
->
power
.
states
[
ACPI_STATE_C2
].
address
=
0
;
}
...
...
@@ -251,16 +248,15 @@ static int acpi_processor_get_power_info_fadt(struct acpi_processor *pr)
* 1000 microseconds.
*/
if
(
acpi_gbl_FADT
.
c3_latency
>
ACPI_PROCESSOR_MAX_C3_LATENCY
)
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"C3 latency too large [%d]
\n
"
,
acpi_gbl_FADT
.
c3_latency
)
);
acpi_handle_debug
(
pr
->
handle
,
"C3 latency too large [%d]
\n
"
,
acpi_gbl_FADT
.
c3_latency
);
/* invalidate C3 */
pr
->
power
.
states
[
ACPI_STATE_C3
].
address
=
0
;
}
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"lvl2[0x%08x] lvl3[0x%08x]
\n
"
,
acpi_handle_debug
(
pr
->
handle
,
"lvl2[0x%08x] lvl3[0x%08x]
\n
"
,
pr
->
power
.
states
[
ACPI_STATE_C2
].
address
,
pr
->
power
.
states
[
ACPI_STATE_C3
].
address
)
)
;
pr
->
power
.
states
[
ACPI_STATE_C3
].
address
);
snprintf
(
pr
->
power
.
states
[
ACPI_STATE_C2
].
desc
,
ACPI_CX_DESC_LEN
,
"ACPI P_LVL2 IOPORT 0x%x"
,
...
...
@@ -325,8 +321,8 @@ static void acpi_processor_power_verify_c3(struct acpi_processor *pr,
* devices thus we take the conservative approach.
*/
else
if
(
errata
.
piix4
.
fdma
)
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"C3 not supported on PIIX4 with Type-F DMA
\n
"
)
)
;
acpi_handle_debug
(
pr
->
handle
,
"C3 not supported on PIIX4 with Type-F DMA
\n
"
);
return
;
}
...
...
@@ -345,13 +341,13 @@ static void acpi_processor_power_verify_c3(struct acpi_processor *pr,
if
(
!
pr
->
flags
.
bm_control
)
{
if
(
pr
->
flags
.
has_cst
!=
1
)
{
/* bus mastering control is necessary */
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"C3 support requires BM control
\n
"
)
);
acpi_handle_debug
(
pr
->
handle
,
"C3 support requires BM control
\n
"
);
return
;
}
else
{
/* Here we enter C3 without bus mastering */
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"C3 support without BM control
\n
"
)
);
acpi_handle_debug
(
pr
->
handle
,
"C3 support without BM control
\n
"
);
}
}
}
else
{
...
...
@@ -360,9 +356,9 @@ static void acpi_processor_power_verify_c3(struct acpi_processor *pr,
* supported on when bm_check is not required.
*/
if
(
!
(
acpi_gbl_FADT
.
flags
&
ACPI_FADT_WBINVD
))
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
acpi_handle_debug
(
pr
->
handle
,
"Cache invalidation should work properly"
" for C3 to be enabled on SMP systems
\n
"
)
)
;
" for C3 to be enabled on SMP systems
\n
"
);
return
;
}
}
...
...
@@ -791,8 +787,8 @@ static inline void acpi_processor_cstate_first_run_checks(void)
dmi_check_system
(
processor_power_dmi_table
);
max_cstate
=
acpi_processor_cstate_check
(
max_cstate
);
if
(
max_cstate
<
ACPI_C_STATES_MAX
)
pr_notice
(
"
ACPI: processor limited to max C-state %d
\n
"
,
max_cstate
);
pr_notice
(
"
processor limited to max C-state %d
\n
"
,
max_cstate
);
first_run
++
;
if
(
nocst
)
...
...
@@ -850,7 +846,7 @@ static int acpi_processor_evaluate_lpi(acpi_handle handle,
status
=
acpi_evaluate_object
(
handle
,
"_LPI"
,
NULL
,
&
buffer
);
if
(
ACPI_FAILURE
(
status
))
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"No _LPI, giving up
\n
"
)
);
acpi_handle_debug
(
handle
,
"No _LPI, giving up
\n
"
);
return
-
ENODEV
;
}
...
...
drivers/acpi/processor_pdc.c
View file @
1c29f6a0
...
...
@@ -16,9 +16,6 @@
#include "internal.h"
#define _COMPONENT ACPI_PROCESSOR_COMPONENT
ACPI_MODULE_NAME
(
"processor_pdc"
);
static
bool
__init
processor_physically_present
(
acpi_handle
handle
)
{
int
cpuid
,
type
;
...
...
@@ -132,8 +129,8 @@ acpi_processor_eval_pdc(acpi_handle handle, struct acpi_object_list *pdc_in)
status
=
acpi_evaluate_object
(
handle
,
"_PDC"
,
pdc_in
,
NULL
);
if
(
ACPI_FAILURE
(
status
))
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Could not evaluate _PDC, using legacy perf
. control.
\n
"
)
);
acpi_handle_debug
(
handle
,
"Could not evaluate _PDC, using legacy perf
control
\n
"
);
return
status
;
}
...
...
drivers/acpi/processor_perflib.c
View file @
1c29f6a0
...
...
@@ -23,8 +23,6 @@
#define PREFIX "ACPI: "
#define ACPI_PROCESSOR_FILE_PERFORMANCE "performance"
#define _COMPONENT ACPI_PROCESSOR_COMPONENT
ACPI_MODULE_NAME
(
"processor_perflib"
);
static
DEFINE_MUTEX
(
performance_mutex
);
...
...
@@ -65,13 +63,15 @@ static int acpi_processor_get_platform_limit(struct acpi_processor *pr)
* (e.g. 0 = states 0..n; 1 = states 1..n; etc.
*/
status
=
acpi_evaluate_integer
(
pr
->
handle
,
"_PPC"
,
NULL
,
&
ppc
);
if
(
status
!=
AE_NOT_FOUND
)
if
(
status
!=
AE_NOT_FOUND
)
{
acpi_processor_ppc_in_use
=
true
;
if
(
ACPI_FAILURE
(
status
)
&&
status
!=
AE_NOT_FOUND
)
{
ACPI_EXCEPTION
((
AE_INFO
,
status
,
"Evaluating _PPC"
));
return
-
ENODEV
;
if
(
ACPI_FAILURE
(
status
))
{
acpi_handle_warn
(
pr
->
handle
,
"_PPC evaluation failed: %s
\n
"
,
acpi_format_exception
(
status
));
return
-
ENODEV
;
}
}
pr_debug
(
"CPU %d: _PPC is %d - frequency %s limited
\n
"
,
pr
->
id
,
...
...
@@ -199,7 +199,8 @@ static int acpi_processor_get_performance_control(struct acpi_processor *pr)
status
=
acpi_evaluate_object
(
pr
->
handle
,
"_PCT"
,
NULL
,
&
buffer
);
if
(
ACPI_FAILURE
(
status
))
{
ACPI_EXCEPTION
((
AE_INFO
,
status
,
"Evaluating _PCT"
));
acpi_handle_warn
(
pr
->
handle
,
"_PCT evaluation failed: %s
\n
"
,
acpi_format_exception
(
status
));
return
-
ENODEV
;
}
...
...
@@ -299,7 +300,8 @@ static int acpi_processor_get_performance_states(struct acpi_processor *pr)
status
=
acpi_evaluate_object
(
pr
->
handle
,
"_PSS"
,
NULL
,
&
buffer
);
if
(
ACPI_FAILURE
(
status
))
{
ACPI_EXCEPTION
((
AE_INFO
,
status
,
"Evaluating _PSS"
));
acpi_handle_warn
(
pr
->
handle
,
"_PSS evaluation failed: %s
\n
"
,
acpi_format_exception
(
status
));
return
-
ENODEV
;
}
...
...
@@ -310,8 +312,8 @@ static int acpi_processor_get_performance_states(struct acpi_processor *pr)
goto
end
;
}
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Found %d performance states
\n
"
,
pss
->
package
.
count
)
)
;
acpi_handle_debug
(
pr
->
handle
,
"Found %d performance states
\n
"
,
pss
->
package
.
count
);
pr
->
performance
->
state_count
=
pss
->
package
.
count
;
pr
->
performance
->
states
=
...
...
@@ -330,12 +332,13 @@ static int acpi_processor_get_performance_states(struct acpi_processor *pr)
state
.
length
=
sizeof
(
struct
acpi_processor_px
);
state
.
pointer
=
px
;
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Extracting state %d
\n
"
,
i
)
);
acpi_handle_debug
(
pr
->
handle
,
"Extracting state %d
\n
"
,
i
);
status
=
acpi_extract_package
(
&
(
pss
->
package
.
elements
[
i
]),
&
format
,
&
state
);
if
(
ACPI_FAILURE
(
status
))
{
ACPI_EXCEPTION
((
AE_INFO
,
status
,
"Invalid _PSS data"
));
acpi_handle_warn
(
pr
->
handle
,
"Invalid _PSS data: %s
\n
"
,
acpi_format_exception
(
status
));
result
=
-
EFAULT
;
kfree
(
pr
->
performance
->
states
);
goto
end
;
...
...
@@ -343,14 +346,14 @@ static int acpi_processor_get_performance_states(struct acpi_processor *pr)
amd_fixup_frequency
(
px
,
i
);
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
acpi_handle_debug
(
pr
->
handle
,
"State [%d]: core_frequency[%d] power[%d] transition_latency[%d] bus_master_latency[%d] control[0x%x] status[0x%x]
\n
"
,
i
,
(
u32
)
px
->
core_frequency
,
(
u32
)
px
->
power
,
(
u32
)
px
->
transition_latency
,
(
u32
)
px
->
bus_master_latency
,
(
u32
)
px
->
control
,
(
u32
)
px
->
status
)
)
;
(
u32
)
px
->
control
,
(
u32
)
px
->
status
);
/*
* Check that ACPI's u64 MHz will be valid as u32 KHz in cpufreq
...
...
@@ -400,8 +403,8 @@ int acpi_processor_get_performance_info(struct acpi_processor *pr)
return
-
EINVAL
;
if
(
!
acpi_has_method
(
pr
->
handle
,
"_PCT"
))
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"ACPI-based processor performance control unavailable
\n
"
)
)
;
acpi_handle_debug
(
pr
->
handle
,
"ACPI-based processor performance control unavailable
\n
"
);
return
-
ENODEV
;
}
...
...
@@ -442,24 +445,23 @@ int acpi_processor_pstate_control(void)
if
(
!
acpi_gbl_FADT
.
smi_command
||
!
acpi_gbl_FADT
.
pstate_control
)
return
0
;
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Writing pstate_control [0x%x] to smi_command [0x%x]
\n
"
,
acpi_gbl_FADT
.
pstate_control
,
acpi_gbl_FADT
.
smi_command
));
pr_debug
(
"Writing pstate_control [0x%x] to smi_command [0x%x]
\n
"
,
acpi_gbl_FADT
.
pstate_control
,
acpi_gbl_FADT
.
smi_command
);
status
=
acpi_os_write_port
(
acpi_gbl_FADT
.
smi_command
,
(
u32
)
acpi_gbl_FADT
.
pstate_control
,
8
);
if
(
ACPI_SUCCESS
(
status
))
return
1
;
ACPI_EXCEPTION
((
AE_INFO
,
status
,
"Failed to write pstate_control [0x%x] to smi_command [0x%x]"
,
acpi_gbl_FADT
.
pstate_control
,
acpi_gbl_FADT
.
smi_command
));
pr_warn
(
"Failed to write pstate_control [0x%x] to smi_command [0x%x]: %s
\n
"
,
acpi_gbl_FADT
.
pstate_control
,
acpi_gbl_FADT
.
smi_command
,
acpi_format_exception
(
status
));
return
-
EIO
;
}
int
acpi_processor_notify_smm
(
struct
module
*
calling_module
)
{
static
int
is_done
=
0
;
static
int
is_done
;
int
result
;
if
(
!
acpi_processor_cpufreq_init
)
...
...
@@ -485,7 +487,7 @@ int acpi_processor_notify_smm(struct module *calling_module)
result
=
acpi_processor_pstate_control
();
if
(
!
result
)
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"No SMI port or pstate_control
\n
"
)
);
pr_debug
(
"No SMI port or pstate_control
\n
"
);
module_put
(
calling_module
);
return
0
;
}
...
...
drivers/acpi/processor_throttling.c
View file @
1c29f6a0
...
...
@@ -22,9 +22,6 @@
#define PREFIX "ACPI: "
#define _COMPONENT ACPI_PROCESSOR_COMPONENT
ACPI_MODULE_NAME
(
"processor_throttling"
);
/* ignore_tpc:
* 0 -> acpi processor driver doesn't ignore _TPC values
* 1 -> acpi processor driver ignores _TPC values
...
...
@@ -196,10 +193,8 @@ static int acpi_processor_update_tsd_coord(void)
*/
void
acpi_processor_throttling_init
(
void
)
{
if
(
acpi_processor_update_tsd_coord
())
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Assume no T-state coordination
\n
"
));
}
if
(
acpi_processor_update_tsd_coord
())
pr_debug
(
"Assume no T-state coordination
\n
"
);
return
;
}
...
...
@@ -216,12 +211,13 @@ static int acpi_processor_throttling_notifier(unsigned long event, void *data)
cpu
=
p_tstate
->
cpu
;
pr
=
per_cpu
(
processors
,
cpu
);
if
(
!
pr
)
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Invalid pr pointer
\n
"
)
);
pr_debug
(
"Invalid pr pointer
\n
"
);
return
0
;
}
if
(
!
pr
->
flags
.
throttling
)
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Throttling control is "
"unsupported on CPU %d
\n
"
,
cpu
));
acpi_handle_debug
(
pr
->
handle
,
"Throttling control unsupported on CPU %d
\n
"
,
cpu
);
return
0
;
}
target_state
=
p_tstate
->
target_state
;
...
...
@@ -245,9 +241,9 @@ static int acpi_processor_throttling_notifier(unsigned long event, void *data)
target_state
=
p_throttling
->
state_count
-
1
;
}
p_tstate
->
target_state
=
target_state
;
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"PreChange Event:"
"
target T-state of CPU %d is T%d
\n
"
,
cpu
,
target_state
)
);
acpi_handle_debug
(
pr
->
handle
,
"PreChange Event:
target T-state of CPU %d is T%d
\n
"
,
cpu
,
target_state
);
break
;
case
THROTTLING_POSTCHANGE
:
/*
...
...
@@ -255,9 +251,9 @@ static int acpi_processor_throttling_notifier(unsigned long event, void *data)
* T-state flag of acpi_processor_throttling.
*/
p_throttling
->
state
=
target_state
;
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"PostChange Event:"
"
CPU %d is switched to T%d
\n
"
,
cpu
,
target_state
)
);
acpi_handle_debug
(
pr
->
handle
,
"PostChange Event:
CPU %d is switched to T%d
\n
"
,
cpu
,
target_state
);
break
;
default:
printk
(
KERN_WARNING
...
...
@@ -284,9 +280,11 @@ static int acpi_processor_get_platform_limit(struct acpi_processor *pr)
status
=
acpi_evaluate_integer
(
pr
->
handle
,
"_TPC"
,
NULL
,
&
tpc
);
if
(
ACPI_FAILURE
(
status
))
{
if
(
status
!=
AE_NOT_FOUND
)
{
ACPI_EXCEPTION
((
AE_INFO
,
status
,
"Evaluating _TPC"
));
}
if
(
status
!=
AE_NOT_FOUND
)
acpi_handle_warn
(
pr
->
handle
,
"_TPC evaluation failed: %s
\n
"
,
acpi_format_exception
(
status
));
return
-
ENODEV
;
}
...
...
@@ -417,9 +415,11 @@ static int acpi_processor_get_throttling_control(struct acpi_processor *pr)
status
=
acpi_evaluate_object
(
pr
->
handle
,
"_PTC"
,
NULL
,
&
buffer
);
if
(
ACPI_FAILURE
(
status
))
{
if
(
status
!=
AE_NOT_FOUND
)
{
ACPI_EXCEPTION
((
AE_INFO
,
status
,
"Evaluating _PTC"
));
}
if
(
status
!=
AE_NOT_FOUND
)
acpi_handle_warn
(
pr
->
handle
,
"_PTC evaluation failed: %s
\n
"
,
acpi_format_exception
(
status
));
return
-
ENODEV
;
}
...
...
@@ -502,9 +502,11 @@ static int acpi_processor_get_throttling_states(struct acpi_processor *pr)
status
=
acpi_evaluate_object
(
pr
->
handle
,
"_TSS"
,
NULL
,
&
buffer
);
if
(
ACPI_FAILURE
(
status
))
{
if
(
status
!=
AE_NOT_FOUND
)
{
ACPI_EXCEPTION
((
AE_INFO
,
status
,
"Evaluating _TSS"
));
}
if
(
status
!=
AE_NOT_FOUND
)
acpi_handle_warn
(
pr
->
handle
,
"_TSS evaluation failed: %s
\n
"
,
acpi_format_exception
(
status
));
return
-
ENODEV
;
}
...
...
@@ -515,8 +517,8 @@ static int acpi_processor_get_throttling_states(struct acpi_processor *pr)
goto
end
;
}
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Found %d throttling states
\n
"
,
tss
->
package
.
count
)
)
;
acpi_handle_debug
(
pr
->
handle
,
"Found %d throttling states
\n
"
,
tss
->
package
.
count
);
pr
->
throttling
.
state_count
=
tss
->
package
.
count
;
pr
->
throttling
.
states_tss
=
...
...
@@ -537,12 +539,13 @@ static int acpi_processor_get_throttling_states(struct acpi_processor *pr)
state
.
length
=
sizeof
(
struct
acpi_processor_tx_tss
);
state
.
pointer
=
tx
;
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Extracting state %d
\n
"
,
i
)
);
acpi_handle_debug
(
pr
->
handle
,
"Extracting state %d
\n
"
,
i
);
status
=
acpi_extract_package
(
&
(
tss
->
package
.
elements
[
i
]),
&
format
,
&
state
);
if
(
ACPI_FAILURE
(
status
))
{
ACPI_EXCEPTION
((
AE_INFO
,
status
,
"Invalid _TSS data"
));
acpi_handle_warn
(
pr
->
handle
,
"Invalid _TSS data: %s
\n
"
,
acpi_format_exception
(
status
));
result
=
-
EFAULT
;
kfree
(
pr
->
throttling
.
states_tss
);
goto
end
;
...
...
@@ -582,9 +585,11 @@ static int acpi_processor_get_tsd(struct acpi_processor *pr)
status
=
acpi_evaluate_object
(
pr
->
handle
,
"_TSD"
,
NULL
,
&
buffer
);
if
(
ACPI_FAILURE
(
status
))
{
if
(
status
!=
AE_NOT_FOUND
)
{
ACPI_EXCEPTION
((
AE_INFO
,
status
,
"Evaluating _TSD"
));
}
if
(
status
!=
AE_NOT_FOUND
)
acpi_handle_warn
(
pr
->
handle
,
"_TSD evaluation failed: %s
\n
"
,
acpi_format_exception
(
status
));
return
-
ENODEV
;
}
...
...
@@ -698,9 +703,9 @@ static int acpi_processor_get_throttling_fadt(struct acpi_processor *pr)
local_irq_enable
();
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
acpi_handle_debug
(
pr
->
handle
,
"Throttling state is T%d (%d%% throttling applied)
\n
"
,
state
,
pr
->
throttling
.
states
[
state
].
performance
)
)
;
state
,
pr
->
throttling
.
states
[
state
].
performance
);
return
0
;
}
...
...
@@ -875,8 +880,8 @@ static int acpi_processor_get_throttling_ptc(struct acpi_processor *pr)
if
(
ret
>=
0
)
{
state
=
acpi_get_throttling_state
(
pr
,
value
);
if
(
state
==
-
1
)
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Invalid throttling state, reset
\n
"
)
);
acpi_handle_debug
(
pr
->
handle
,
"Invalid throttling state, reset
\n
"
);
state
=
0
;
ret
=
__acpi_processor_set_throttling
(
pr
,
state
,
true
,
true
);
...
...
@@ -921,10 +926,10 @@ static int acpi_processor_get_fadt_info(struct acpi_processor *pr)
int
i
,
step
;
if
(
!
pr
->
throttling
.
address
)
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"No throttling register
\n
"
)
);
acpi_handle_debug
(
pr
->
handle
,
"No throttling register
\n
"
);
return
-
EINVAL
;
}
else
if
(
!
pr
->
throttling
.
duty_width
)
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"No throttling states
\n
"
)
);
acpi_handle_debug
(
pr
->
handle
,
"No throttling states
\n
"
);
return
-
EINVAL
;
}
/* TBD: Support duty_cycle values that span bit 4. */
...
...
@@ -1015,10 +1020,10 @@ static int acpi_processor_set_throttling_fadt(struct acpi_processor *pr,
local_irq_enable
();
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
acpi_handle_debug
(
pr
->
handle
,
"Throttling state set to T%d (%d%%)
\n
"
,
state
,
(
pr
->
throttling
.
states
[
state
].
performance
?
pr
->
throttling
.
states
[
state
].
performance
/
10
:
0
))
)
;
throttling
.
states
[
state
].
performance
/
10
:
0
));
return
0
;
}
...
...
@@ -1129,8 +1134,8 @@ static int __acpi_processor_set_throttling(struct acpi_processor *pr,
* error message and continue.
*/
if
(
!
match_pr
)
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Invalid Pointer for CPU %d
\n
"
,
i
)
)
;
acpi_handle_debug
(
pr
->
handle
,
"Invalid Pointer for CPU %d
\n
"
,
i
);
continue
;
}
/*
...
...
@@ -1138,9 +1143,8 @@ static int __acpi_processor_set_throttling(struct acpi_processor *pr,
* we will report the error message and continue.
*/
if
(
!
match_pr
->
flags
.
throttling
)
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Throttling Control is unsupported "
"on CPU %d
\n
"
,
i
));
acpi_handle_debug
(
pr
->
handle
,
"Throttling Control unsupported on CPU %d
\n
"
,
i
);
continue
;
}
...
...
@@ -1177,11 +1181,11 @@ int acpi_processor_get_throttling_info(struct acpi_processor *pr)
int
result
=
0
;
struct
acpi_processor_throttling
*
pthrottling
;
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
acpi_handle_debug
(
pr
->
handle
,
"pblk_address[0x%08x] duty_offset[%d] duty_width[%d]
\n
"
,
pr
->
throttling
.
address
,
pr
->
throttling
.
duty_offset
,
pr
->
throttling
.
duty_width
)
)
;
pr
->
throttling
.
duty_width
);
/*
* Evaluate _PTC, _TSS and _TPC
...
...
@@ -1221,13 +1225,13 @@ int acpi_processor_get_throttling_info(struct acpi_processor *pr)
* used this part.
*/
if
(
errata
.
piix4
.
throttle
)
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Throttling not supported on PIIX4 A- or B-step
\n
"
)
)
;
acpi_handle_debug
(
pr
->
handle
,
"Throttling not supported on PIIX4 A- or B-step
\n
"
);
return
0
;
}
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Found %d throttling states
\n
"
,
pr
->
throttling
.
state_count
)
)
;
acpi_handle_debug
(
pr
->
handle
,
"Found %d throttling states
\n
"
,
pr
->
throttling
.
state_count
);
pr
->
flags
.
throttling
=
1
;
...
...
@@ -1242,9 +1246,9 @@ int acpi_processor_get_throttling_info(struct acpi_processor *pr)
goto
end
;
if
(
pr
->
throttling
.
state
)
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
acpi_handle_debug
(
pr
->
handle
,
"Disabling throttling (was T%d)
\n
"
,
pr
->
throttling
.
state
)
)
;
pr
->
throttling
.
state
);
result
=
acpi_processor_set_throttling
(
pr
,
0
,
false
);
if
(
result
)
goto
end
;
...
...
drivers/acpi/sysfs.c
View file @
1c29f6a0
...
...
@@ -58,7 +58,6 @@ static const struct acpi_dlayer acpi_debug_layers[] = {
ACPI_DEBUG_INIT
(
ACPI_CONTAINER_COMPONENT
),
ACPI_DEBUG_INIT
(
ACPI_SYSTEM_COMPONENT
),
ACPI_DEBUG_INIT
(
ACPI_MEMORY_DEVICE_COMPONENT
),
ACPI_DEBUG_INIT
(
ACPI_PROCESSOR_COMPONENT
),
};
static
const
struct
acpi_dlevel
acpi_debug_levels
[]
=
{
...
...
include/acpi/acpi_drivers.h
View file @
1c29f6a0
...
...
@@ -21,7 +21,6 @@
#define ACPI_CONTAINER_COMPONENT 0x01000000
#define ACPI_SYSTEM_COMPONENT 0x02000000
#define ACPI_MEMORY_DEVICE_COMPONENT 0x08000000
#define ACPI_PROCESSOR_COMPONENT 0x20000000
/*
* _HID definitions
...
...
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