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
28fa181c
Commit
28fa181c
authored
Sep 16, 2004
by
Len Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge intel.com:/home/lenb/bk/26-latest-ref
into intel.com:/home/lenb/src/26-latest-dev
parents
4f0fdda0
6842126a
Changes
32
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
402 additions
and
328 deletions
+402
-328
Documentation/kernel-parameters.txt
Documentation/kernel-parameters.txt
+14
-0
arch/i386/kernel/acpi/boot.c
arch/i386/kernel/acpi/boot.c
+10
-3
arch/i386/kernel/dmi_scan.c
arch/i386/kernel/dmi_scan.c
+2
-37
arch/i386/kernel/io_apic.c
arch/i386/kernel/io_apic.c
+1
-9
arch/i386/pci/mmconfig.c
arch/i386/pci/mmconfig.c
+7
-0
arch/x86_64/kernel/io_apic.c
arch/x86_64/kernel/io_apic.c
+1
-9
drivers/acpi/Kconfig
drivers/acpi/Kconfig
+27
-0
drivers/acpi/blacklist.c
drivers/acpi/blacklist.c
+44
-0
drivers/acpi/bus.c
drivers/acpi/bus.c
+8
-4
drivers/acpi/debug.c
drivers/acpi/debug.c
+103
-2
drivers/acpi/dispatcher/dsmethod.c
drivers/acpi/dispatcher/dsmethod.c
+31
-21
drivers/acpi/dispatcher/dsutils.c
drivers/acpi/dispatcher/dsutils.c
+37
-16
drivers/acpi/events/evgpe.c
drivers/acpi/events/evgpe.c
+5
-1
drivers/acpi/events/evmisc.c
drivers/acpi/events/evmisc.c
+23
-9
drivers/acpi/events/evregion.c
drivers/acpi/events/evregion.c
+8
-9
drivers/acpi/events/evrgnini.c
drivers/acpi/events/evrgnini.c
+6
-6
drivers/acpi/events/evxface.c
drivers/acpi/events/evxface.c
+5
-6
drivers/acpi/executer/exfldio.c
drivers/acpi/executer/exfldio.c
+2
-35
drivers/acpi/hardware/hwgpe.c
drivers/acpi/hardware/hwgpe.c
+1
-1
drivers/acpi/hardware/hwregs.c
drivers/acpi/hardware/hwregs.c
+22
-48
drivers/acpi/hardware/hwtimer.c
drivers/acpi/hardware/hwtimer.c
+12
-16
drivers/acpi/numa.c
drivers/acpi/numa.c
+10
-6
drivers/acpi/osl.c
drivers/acpi/osl.c
+10
-0
drivers/acpi/pci_link.c
drivers/acpi/pci_link.c
+2
-2
drivers/acpi/tables.c
drivers/acpi/tables.c
+2
-2
drivers/acpi/utilities/utglobal.c
drivers/acpi/utilities/utglobal.c
+2
-7
include/acpi/acconfig.h
include/acpi/acconfig.h
+1
-1
include/acpi/acexcep.h
include/acpi/acexcep.h
+1
-1
include/acpi/acglobal.h
include/acpi/acglobal.h
+1
-1
include/acpi/acmacros.h
include/acpi/acmacros.h
+0
-18
include/acpi/acpi_drivers.h
include/acpi/acpi_drivers.h
+0
-55
include/linux/acpi.h
include/linux/acpi.h
+4
-3
No files found.
Documentation/kernel-parameters.txt
View file @
28fa181c
...
...
@@ -138,6 +138,20 @@ running once the system is up.
Recognize and ignore IRQ0/pin2 Interrupt Override.
For broken nForce2 BIOS resulting in XT-PIC timer.
acpi_dbg_layer= [HW,ACPI]
Format: <int>
Each bit of the <int> indicates an acpi debug layer,
1: enable, 0: disable. It is useful for boot time
debugging. After system has booted up, it can be set
via /proc/acpi/debug_layer.
acpi_dbg_level= [HW,ACPI]
Format: <int>
Each bit of the <int> indicates an acpi debug level,
1: enable, 0: disable. It is useful for boot time
debugging. After system has booted up, it can be set
via /proc/acpi/debug_level.
ad1816= [HW,OSS]
Format: <io>,<irq>,<dma>,<dma2>
See also Documentation/sound/oss/AD1816.
...
...
arch/i386/kernel/acpi/boot.c
View file @
28fa181c
...
...
@@ -71,6 +71,7 @@ int acpi_ht __initdata = 1; /* enable HT */
int
acpi_lapic
;
int
acpi_ioapic
;
int
acpi_strict
;
EXPORT_SYMBOL
(
acpi_strict
);
acpi_interrupt_flags
acpi_sci_flags
__initdata
;
int
acpi_sci_override_gsi
__initdata
;
...
...
@@ -829,9 +830,15 @@ acpi_boot_init (void)
*/
error
=
acpi_blacklisted
();
if
(
error
)
{
printk
(
KERN_WARNING
PREFIX
"BIOS listed in blacklist, disabling ACPI support
\n
"
);
disable_acpi
();
return
error
;
extern
int
acpi_force
;
if
(
acpi_force
)
{
printk
(
KERN_WARNING
PREFIX
"acpi=force override
\n
"
);
}
else
{
printk
(
KERN_WARNING
PREFIX
"Disabling ACPI support
\n
"
);
disable_acpi
();
return
error
;
}
}
/*
...
...
arch/i386/kernel/dmi_scan.c
View file @
28fa181c
...
...
@@ -4,7 +4,7 @@
#include <linux/init.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <
asm
/acpi.h>
#include <
linux
/acpi.h>
#include <asm/io.h>
#include <linux/pm.h>
#include <asm/system.h>
...
...
@@ -443,41 +443,6 @@ static __initdata struct dmi_blacklist dmi_blacklist[]={
{
NULL
,
}
};
/*
* Walk the blacklist table running matching functions until someone
* returns 1 or we hit the end.
*/
static
__init
void
dmi_check_blacklist
(
void
)
{
#ifdef CONFIG_ACPI_BOOT
#define ACPI_BLACKLIST_CUTOFF_YEAR 2001
if
(
dmi_ident
[
DMI_BIOS_DATE
])
{
char
*
s
=
strrchr
(
dmi_ident
[
DMI_BIOS_DATE
],
'/'
);
if
(
s
)
{
int
year
,
disable
=
0
;
s
++
;
year
=
simple_strtoul
(
s
,
NULL
,
0
);
if
(
year
>=
1000
)
disable
=
year
<
ACPI_BLACKLIST_CUTOFF_YEAR
;
else
if
(
year
<
1
||
(
year
>
90
&&
year
<=
99
))
disable
=
1
;
if
(
disable
&&
!
acpi_force
)
{
printk
(
KERN_NOTICE
"ACPI disabled because your bios is from %s and too old
\n
"
,
s
);
printk
(
KERN_NOTICE
"You can enable it with acpi=force
\n
"
);
disable_acpi
();
}
}
}
#endif
dmi_check_system
(
dmi_blacklist
);
}
/*
* Process a DMI table entry. Right now all we care about are the BIOS
...
...
@@ -535,7 +500,7 @@ void __init dmi_scan_machine(void)
{
int
err
=
dmi_iterate
(
dmi_decode
);
if
(
err
==
0
)
dmi_check_blacklist
(
);
dmi_check_system
(
dmi_blacklist
);
else
printk
(
KERN_INFO
"DMI not present.
\n
"
);
}
...
...
arch/i386/kernel/io_apic.c
View file @
28fa181c
...
...
@@ -2520,15 +2520,7 @@ int io_apic_set_pci_routing (int ioapic, int pin, int irq, int edge_level, int a
mp_ioapics
[
ioapic
].
mpc_apicid
,
pin
,
entry
.
vector
,
irq
,
edge_level
,
active_high_low
);
if
(
use_pci_vector
()
&&
!
platform_legacy_irq
(
irq
))
irq
=
IO_APIC_VECTOR
(
irq
);
if
(
edge_level
)
{
irq_desc
[
irq
].
handler
=
&
ioapic_level_type
;
}
else
{
irq_desc
[
irq
].
handler
=
&
ioapic_edge_type
;
}
set_intr_gate
(
entry
.
vector
,
interrupt
[
irq
]);
ioapic_register_intr
(
irq
,
entry
.
vector
,
edge_level
);
if
(
!
ioapic
&&
(
irq
<
16
))
disable_8259A_irq
(
irq
);
...
...
arch/i386/pci/mmconfig.c
View file @
28fa181c
/*
* Copyright (C) 2004 Matthew Wilcox <matthew@wil.cx>
* Copyright (C) 2004 Intel Corp.
*
* This code is released under the GNU General Public License version 2.
*/
/*
* mmconfig.c - Low-level direct PCI config space access via MMCONFIG
*/
...
...
arch/x86_64/kernel/io_apic.c
View file @
28fa181c
...
...
@@ -1926,15 +1926,7 @@ int io_apic_set_pci_routing (int ioapic, int pin, int irq, int edge_level, int a
mp_ioapics
[
ioapic
].
mpc_apicid
,
pin
,
entry
.
vector
,
irq
,
edge_level
,
active_high_low
);
if
(
use_pci_vector
()
&&
!
platform_legacy_irq
(
irq
))
irq
=
IO_APIC_VECTOR
(
irq
);
if
(
edge_level
)
{
irq_desc
[
irq
].
handler
=
&
ioapic_level_type
;
}
else
{
irq_desc
[
irq
].
handler
=
&
ioapic_edge_type
;
}
set_intr_gate
(
entry
.
vector
,
interrupt
[
irq
]);
ioapic_register_intr
(
irq
,
entry
.
vector
,
edge_level
);
if
(
!
ioapic
&&
(
irq
<
16
))
disable_8259A_irq
(
irq
);
...
...
drivers/acpi/Kconfig
View file @
28fa181c
...
...
@@ -204,6 +204,33 @@ config ACPI_TOSHIBA
If you have a legacy free Toshiba laptop (such as the Libretto L1
series), say Y.
config ACPI_CUSTOM_DSDT
bool "Include Custom DSDT"
depends on X86
depends on ACPI_INTERPRETER
default n
help
Thist option is to load a custom ACPI DSDT
If you don't know what that is, say N.
config ACPI_CUSTOM_DSDT_FILE
string "Custom DSDT Table file to include"
depends on ACPI_CUSTOM_DSDT
default ""
help
Enter the full path name to the file wich includes the AmlCode declaration.
config ACPI_BLACKLIST_YEAR
int "Disable ACPI for systems before Jan 1st this year"
default 0
help
enter a 4-digit year, eg. 2001 to disable ACPI by default
on platforms with DMI BIOS date before January 1st that year.
"acpi=force" can be used to override this mechanism.
Enter 0 to disable this mechanism and allow ACPI to
run by default no matter what the year. (default)
config ACPI_DEBUG
bool "Debug Statements"
depends on ACPI_INTERPRETER
...
...
drivers/acpi/blacklist.c
View file @
28fa181c
...
...
@@ -2,7 +2,9 @@
* blacklist.c
*
* Check to see if the given machine has a known bad ACPI BIOS
* or if the BIOS is too old.
*
* Copyright (C) 2004 Len Brown <len.brown@intel.com>
* Copyright (C) 2002 Andy Grover <andrew.grover@intel.com>
*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...
...
@@ -30,6 +32,7 @@
#include <linux/init.h>
#include <linux/acpi.h>
#include <acpi/acpi_bus.h>
#include <linux/dmi.h>
enum
acpi_blacklist_predicates
{
...
...
@@ -70,6 +73,45 @@ static struct acpi_blacklist_item acpi_blacklist[] __initdata =
};
#if CONFIG_ACPI_BLACKLIST_YEAR
static
int
__init
blacklist_by_year
(
void
)
{
int
year
;
char
*
s
=
dmi_get_system_info
(
DMI_BIOS_DATE
);
if
(
!
s
)
return
0
;
if
(
!*
s
)
return
0
;
s
=
strrchr
(
s
,
'/'
);
if
(
!
s
)
return
0
;
s
+=
1
;
year
=
simple_strtoul
(
s
,
NULL
,
0
);
if
(
year
<
100
)
{
/* 2-digit year */
year
+=
1900
;
if
(
year
<
1996
)
/* no dates < spec 1.0 */
year
+=
100
;
}
if
(
year
<
CONFIG_ACPI_BLACKLIST_YEAR
)
{
printk
(
KERN_ERR
PREFIX
"BIOS age (%d) fails cutoff (%d), "
"acpi=force is required to enable ACPI
\n
"
,
year
,
CONFIG_ACPI_BLACKLIST_YEAR
);
return
1
;
}
return
0
;
}
#else
static
inline
int
blacklist_by_year
(
void
)
{
return
0
;
}
#endif
int
__init
acpi_blacklisted
(
void
)
{
...
...
@@ -120,6 +162,8 @@ acpi_blacklisted(void)
}
}
blacklisted
+=
blacklist_by_year
();
return
blacklisted
;
}
drivers/acpi/bus.c
View file @
28fa181c
...
...
@@ -596,7 +596,14 @@ acpi_early_init (void)
acpi_status
status
=
AE_OK
;
struct
acpi_buffer
buffer
=
{
sizeof
(
acpi_fadt
),
&
acpi_fadt
};
ACPI_FUNCTION_TRACE
(
"acpi_bus_init"
);
ACPI_FUNCTION_TRACE
(
"acpi_early_init"
);
if
(
acpi_disabled
)
return
;
/* enable workarounds, unless strict ACPI spec. compliance */
if
(
!
acpi_strict
)
acpi_gbl_enable_interpreter_slack
=
TRUE
;
status
=
acpi_initialize_subsystem
();
if
(
ACPI_FAILURE
(
status
))
{
...
...
@@ -734,9 +741,6 @@ static int __init acpi_init (void)
printk
(
KERN_INFO
PREFIX
"Subsystem revision %08x
\n
"
,
ACPI_CA_VERSION
);
/* Initial core debug level excludes drivers, so include them now */
acpi_set_debug
(
ACPI_DEBUG_LOW
);
if
(
acpi_disabled
)
{
printk
(
KERN_INFO
PREFIX
"Interpreter disabled.
\n
"
);
return
-
ENODEV
;
...
...
drivers/acpi/debug.c
View file @
28fa181c
...
...
@@ -4,6 +4,7 @@
#include <linux/proc_fs.h>
#include <linux/init.h>
#include <linux/moduleparam.h>
#include <asm/uaccess.h>
#include <acpi/acpi_drivers.h>
...
...
@@ -13,6 +14,81 @@ ACPI_MODULE_NAME ("debug")
#define ACPI_SYSTEM_FILE_DEBUG_LAYER "debug_layer"
#define ACPI_SYSTEM_FILE_DEBUG_LEVEL "debug_level"
#ifdef MODULE_PARAM_PREFIX
#undef MODULE_PARAM_PREFIX
#endif
#define MODULE_PARAM_PREFIX
module_param
(
acpi_dbg_layer
,
uint
,
0400
);
module_param
(
acpi_dbg_level
,
uint
,
0400
);
struct
acpi_dlayer
{
const
char
*
name
;
unsigned
long
value
;
};
struct
acpi_dlevel
{
const
char
*
name
;
unsigned
long
value
;
};
#define ACPI_DEBUG_INIT(v) { .name = #v, .value = v }
const
struct
acpi_dlayer
acpi_debug_layers
[]
=
{
ACPI_DEBUG_INIT
(
ACPI_UTILITIES
),
ACPI_DEBUG_INIT
(
ACPI_HARDWARE
),
ACPI_DEBUG_INIT
(
ACPI_EVENTS
),
ACPI_DEBUG_INIT
(
ACPI_TABLES
),
ACPI_DEBUG_INIT
(
ACPI_NAMESPACE
),
ACPI_DEBUG_INIT
(
ACPI_PARSER
),
ACPI_DEBUG_INIT
(
ACPI_DISPATCHER
),
ACPI_DEBUG_INIT
(
ACPI_EXECUTER
),
ACPI_DEBUG_INIT
(
ACPI_RESOURCES
),
ACPI_DEBUG_INIT
(
ACPI_CA_DEBUGGER
),
ACPI_DEBUG_INIT
(
ACPI_OS_SERVICES
),
ACPI_DEBUG_INIT
(
ACPI_CA_DISASSEMBLER
),
ACPI_DEBUG_INIT
(
ACPI_COMPILER
),
ACPI_DEBUG_INIT
(
ACPI_TOOLS
),
};
const
struct
acpi_dlevel
acpi_debug_levels
[]
=
{
ACPI_DEBUG_INIT
(
ACPI_LV_ERROR
),
ACPI_DEBUG_INIT
(
ACPI_LV_WARN
),
ACPI_DEBUG_INIT
(
ACPI_LV_INIT
),
ACPI_DEBUG_INIT
(
ACPI_LV_DEBUG_OBJECT
),
ACPI_DEBUG_INIT
(
ACPI_LV_INFO
),
ACPI_DEBUG_INIT
(
ACPI_LV_INIT_NAMES
),
ACPI_DEBUG_INIT
(
ACPI_LV_PARSE
),
ACPI_DEBUG_INIT
(
ACPI_LV_LOAD
),
ACPI_DEBUG_INIT
(
ACPI_LV_DISPATCH
),
ACPI_DEBUG_INIT
(
ACPI_LV_EXEC
),
ACPI_DEBUG_INIT
(
ACPI_LV_NAMES
),
ACPI_DEBUG_INIT
(
ACPI_LV_OPREGION
),
ACPI_DEBUG_INIT
(
ACPI_LV_BFIELD
),
ACPI_DEBUG_INIT
(
ACPI_LV_TABLES
),
ACPI_DEBUG_INIT
(
ACPI_LV_VALUES
),
ACPI_DEBUG_INIT
(
ACPI_LV_OBJECTS
),
ACPI_DEBUG_INIT
(
ACPI_LV_RESOURCES
),
ACPI_DEBUG_INIT
(
ACPI_LV_USER_REQUESTS
),
ACPI_DEBUG_INIT
(
ACPI_LV_PACKAGE
),
ACPI_DEBUG_INIT
(
ACPI_LV_ALLOCATIONS
),
ACPI_DEBUG_INIT
(
ACPI_LV_FUNCTIONS
),
ACPI_DEBUG_INIT
(
ACPI_LV_OPTIMIZATIONS
),
ACPI_DEBUG_INIT
(
ACPI_LV_MUTEX
),
ACPI_DEBUG_INIT
(
ACPI_LV_THREADS
),
ACPI_DEBUG_INIT
(
ACPI_LV_IO
),
ACPI_DEBUG_INIT
(
ACPI_LV_INTERRUPTS
),
ACPI_DEBUG_INIT
(
ACPI_LV_AML_DISASSEMBLE
),
ACPI_DEBUG_INIT
(
ACPI_LV_VERBOSE_INFO
),
ACPI_DEBUG_INIT
(
ACPI_LV_FULL_TABLES
),
ACPI_DEBUG_INIT
(
ACPI_LV_EVENTS
),
};
#define NUM_OF(v) ( sizeof(v)/sizeof(v[0]) )
static
int
acpi_system_read_debug
(
char
*
page
,
...
...
@@ -24,16 +100,41 @@ acpi_system_read_debug (
{
char
*
p
=
page
;
int
size
=
0
;
int
i
;
if
(
off
!=
0
)
goto
end
;
p
+=
sprintf
(
p
,
"%-25s
\t
Hex SET
\n
"
,
"Description"
);
switch
((
unsigned
long
)
data
)
{
case
0
:
p
+=
sprintf
(
p
,
"0x%08x
\n
"
,
acpi_dbg_layer
);
for
(
i
=
0
;
i
<
NUM_OF
(
acpi_debug_layers
);
i
++
)
{
p
+=
sprintf
(
p
,
"%-25s
\t
0x%08lX [%c]
\n
"
,
acpi_debug_layers
[
i
].
name
,
acpi_debug_layers
[
i
].
value
,
(
acpi_dbg_layer
&
acpi_debug_layers
[
i
].
value
)
?
'*'
:
' '
);
}
p
+=
sprintf
(
p
,
"%-25s
\t
0x%08X [%c]
\n
"
,
"ACPI_ALL_DRIVERS"
,
ACPI_ALL_DRIVERS
,
(
acpi_dbg_layer
&
ACPI_ALL_DRIVERS
)
==
ACPI_ALL_DRIVERS
?
'*'
:
(
acpi_dbg_layer
&
ACPI_ALL_DRIVERS
)
==
0
?
' '
:
'-'
);
p
+=
sprintf
(
p
,
"--
\n
debug_layer = 0x%08X (* = enabled, - = partial)
\n
"
,
acpi_dbg_layer
);
break
;
case
1
:
p
+=
sprintf
(
p
,
"0x%08x
\n
"
,
acpi_dbg_level
);
for
(
i
=
0
;
i
<
NUM_OF
(
acpi_debug_levels
);
i
++
)
{
p
+=
sprintf
(
p
,
"%-25s
\t
0x%08lX [%c]
\n
"
,
acpi_debug_levels
[
i
].
name
,
acpi_debug_levels
[
i
].
value
,
(
acpi_dbg_level
&
acpi_debug_levels
[
i
].
value
)
?
'*'
:
' '
);
}
p
+=
sprintf
(
p
,
"--
\n
debug_level = 0x%08X (* = enabled)
\n
"
,
acpi_dbg_level
);
break
;
default:
p
+=
sprintf
(
p
,
"Invalid debug option
\n
"
);
...
...
drivers/acpi/dispatcher/dsmethod.c
View file @
28fa181c
...
...
@@ -58,15 +58,12 @@
*
* FUNCTION: acpi_ds_parse_method
*
* PARAMETERS: obj_handle - Node of the method
* Level - Current nesting level
* Context - Points to a method counter
* return_value - Not used
* PARAMETERS: obj_handle - Method node
*
* RETURN: Status
*
* DESCRIPTION: Call the parser and parse the AML that is
*
associated with the
method.
* DESCRIPTION: Call the parser and parse the AML that is
associated with the
* method.
*
* MUTEX: Assumes parser is locked
*
...
...
@@ -191,8 +188,6 @@ acpi_ds_parse_method (
* increments the thread count, and waits at the method semaphore
* for clearance to execute.
*
* MUTEX: Locks/unlocks parser.
*
******************************************************************************/
acpi_status
...
...
@@ -251,7 +246,8 @@ acpi_ds_begin_method_execution (
*
* FUNCTION: acpi_ds_call_control_method
*
* PARAMETERS: walk_state - Current state of the walk
* PARAMETERS: Thread - Info for this thread
* this_walk_state - Current walk state
* Op - Current Op to be walked
*
* RETURN: Status
...
...
@@ -401,12 +397,13 @@ acpi_ds_call_control_method (
*
* FUNCTION: acpi_ds_restart_control_method
*
* PARAMETERS: walk_state - State
of the method when it was preempted
*
Op - Pointer to new current op
* PARAMETERS: walk_state - State
for preempted method (caller)
*
return_desc - Return value from the called method
*
* RETURN: Status
*
* DESCRIPTION: Restart a method that was preempted
* DESCRIPTION: Restart a method that was preempted by another (nested) method
* invocation. Handle the return value (if any) from the callee.
*
******************************************************************************/
...
...
@@ -421,17 +418,35 @@ acpi_ds_restart_control_method (
ACPI_FUNCTION_TRACE_PTR
(
"ds_restart_control_method"
,
walk_state
);
ACPI_DEBUG_PRINT
((
ACPI_DB_DISPATCH
,
"****Restart [%4.4s] Op %p return_value_from_callee %p
\n
"
,
(
char
*
)
&
walk_state
->
method_node
->
name
,
walk_state
->
method_call_op
,
return_desc
));
ACPI_DEBUG_PRINT
((
ACPI_DB_DISPATCH
,
" return_from_this_method_used?=%X res_stack %p Walk %p
\n
"
,
walk_state
->
return_used
,
walk_state
->
results
,
walk_state
));
/* Did the called method return a value? */
if
(
return_desc
)
{
/* Are we actually going to use the return value? */
if
(
walk_state
->
return_used
)
{
/*
* Get the return value (if any) from the previous method.
* NULL if no return value
*/
/* Save the return value from the previous method */
status
=
acpi_ds_result_push
(
return_desc
,
walk_state
);
if
(
ACPI_FAILURE
(
status
))
{
acpi_ut_remove_reference
(
return_desc
);
return_ACPI_STATUS
(
status
);
}
/*
* Save as THIS method's return value in case it is returned
* immediately to yet another method
*/
walk_state
->
return_desc
=
return_desc
;
}
else
{
/*
...
...
@@ -442,11 +457,6 @@ acpi_ds_restart_control_method (
}
}
ACPI_DEBUG_PRINT
((
ACPI_DB_DISPATCH
,
"Method=%p Return=%p return_used?=%X res_stack=%p State=%p
\n
"
,
walk_state
->
method_call_op
,
return_desc
,
walk_state
->
return_used
,
walk_state
->
results
,
walk_state
));
return_ACPI_STATUS
(
AE_OK
);
}
...
...
drivers/acpi/dispatcher/dsutils.c
View file @
28fa181c
...
...
@@ -60,11 +60,10 @@
*
* FUNCTION: acpi_ds_is_result_used
*
* PARAMETERS: Op
* result_obj
* walk_state
* PARAMETERS: Op - Current Op
* walk_state - Current State
*
* RETURN:
Status
* RETURN:
TRUE if result is used, FALSE otherwise
*
* DESCRIPTION: Check if a result object will be used by the parent
*
...
...
@@ -89,18 +88,39 @@ acpi_ds_is_result_used (
}
/*
* If there is no parent, the result can't possibly be used!
* (An executing method typically has no parent, since each
* method is parsed separately) However, a method that is
* invoked from another method has a parent.
* If there is no parent, we are executing at the method level.
* An executing method typically has no parent, since each method
* is parsed separately.
*/
if
(
!
op
->
common
.
parent
)
{
/*
* If this is the last statement in the method, we know it is not a
* Return() operator (would not come here.) The following code is the
* optional support for a so-called "implicit return". Some AML code
* assumes that the last value of the method is "implicitly" returned
* to the caller. Just save the last result as the return value.
* NOTE: this is optional because the ASL language does not actually
* support this behavior.
*/
if
((
acpi_gbl_enable_interpreter_slack
)
&&
(
walk_state
->
parser_state
.
aml
>=
walk_state
->
parser_state
.
aml_end
))
{
ACPI_DEBUG_PRINT
((
ACPI_DB_DISPATCH
,
"Result of [%s] will be implicitly returned
\n
"
,
acpi_ps_get_opcode_name
(
op
->
common
.
aml_opcode
)));
/* Use the top of the result stack as the implicit return value */
walk_state
->
return_desc
=
walk_state
->
results
->
results
.
obj_desc
[
0
];
return_VALUE
(
TRUE
);
}
/* No parent, the return value cannot possibly be used */
return_VALUE
(
FALSE
);
}
/*
* Get info on the parent. The root Op is AML_SCOPE
*/
/* Get info on the parent. The root_op is AML_SCOPE */
parent_info
=
acpi_ps_get_opcode_info
(
op
->
common
.
parent
->
common
.
aml_opcode
);
if
(
parent_info
->
class
==
AML_CLASS_UNKNOWN
)
{
ACPI_DEBUG_PRINT
((
ACPI_DB_ERROR
,
"Unknown parent opcode. Op=%p
\n
"
,
op
));
...
...
@@ -204,9 +224,9 @@ acpi_ds_is_result_used (
*
* FUNCTION: acpi_ds_delete_result_if_not_used
*
* PARAMETERS: Op
* result_obj
* walk_state
* PARAMETERS: Op
- Current parse Op
* result_obj
- Result of the operation
* walk_state
- Current state
*
* RETURN: Status
*
...
...
@@ -338,8 +358,9 @@ acpi_ds_clear_operands (
*
* FUNCTION: acpi_ds_create_operand
*
* PARAMETERS: walk_state
* Arg
* PARAMETERS: walk_state - Current walk state
* Arg - Parse object for the argument
* arg_index - Which argument (zero based)
*
* RETURN: Status
*
...
...
drivers/acpi/events/evgpe.c
View file @
28fa181c
...
...
@@ -102,6 +102,8 @@ acpi_ev_set_gpe_type (
* FUNCTION: acpi_ev_update_gpe_enable_masks
*
* PARAMETERS: gpe_event_info - GPE to update
* Type - What to do: ACPI_GPE_DISABLE or
* ACPI_GPE_ENABLE
*
* RETURN: Status
*
...
...
@@ -166,6 +168,8 @@ acpi_ev_update_gpe_enable_masks (
* FUNCTION: acpi_ev_enable_gpe
*
* PARAMETERS: gpe_event_info - GPE to enable
* write_to_hardware - Enable now, or just mark data structs
* (WAKE GPEs should be deferred)
*
* RETURN: Status
*
...
...
@@ -707,7 +711,7 @@ acpi_ev_gpe_dispatch (
#ifdef ACPI_GPE_NOTIFY_CHECK
/*******************************************************************************
* NOT USED, PROTOTYPE ONLY AND WILL PROBABLY BE REMOVED
*
TBD:
NOT USED, PROTOTYPE ONLY AND WILL PROBABLY BE REMOVED
*
* FUNCTION: acpi_ev_check_for_wake_only_gpe
*
...
...
drivers/acpi/events/evmisc.c
View file @
28fa181c
...
...
@@ -88,9 +88,10 @@ acpi_ev_is_notify_object (
*
* FUNCTION: acpi_ev_queue_notify_request
*
* PARAMETERS:
* PARAMETERS: Node - NS node for the notified object
* notify_value - Value from the Notify() request
*
* RETURN:
None.
* RETURN:
Status
*
* DESCRIPTION: Dispatch a device notification event to a previously
* installed handler.
...
...
@@ -143,9 +144,8 @@ acpi_ev_queue_notify_request (
notify_value
));
}
/*
* Get the notify object attached to the NS Node
*/
/* Get the notify object attached to the NS Node */
obj_desc
=
acpi_ns_get_attached_object
(
node
);
if
(
obj_desc
)
{
/* We have the notify object, Get the right handler */
...
...
@@ -193,8 +193,10 @@ acpi_ev_queue_notify_request (
}
if
(
!
handler_obj
)
{
/* There is no per-device notify handler for this device */
/*
* There is no per-device notify handler for this device.
* This may or may not be a problem.
*/
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"No notify handler for Notify(%4.4s, %X) node %p
\n
"
,
acpi_ut_get_node_name
(
node
),
notify_value
,
node
));
...
...
@@ -208,7 +210,7 @@ acpi_ev_queue_notify_request (
*
* FUNCTION: acpi_ev_notify_dispatch
*
* PARAMETERS:
* PARAMETERS:
Context - To be passsed to the notify handler
*
* RETURN: None.
*
...
...
@@ -275,6 +277,8 @@ acpi_ev_notify_dispatch (
*
* FUNCTION: acpi_ev_global_lock_thread
*
* PARAMETERS: Context - From thread interface, not used
*
* RETURN: None
*
* DESCRIPTION: Invoked by SCI interrupt handler upon acquisition of the
...
...
@@ -308,7 +312,9 @@ acpi_ev_global_lock_thread (
*
* FUNCTION: acpi_ev_global_lock_handler
*
* RETURN: Status
* PARAMETERS: Context - From thread interface, not used
*
* RETURN: ACPI_INTERRUPT_HANDLED or ACPI_INTERRUPT_NOT_HANDLED
*
* DESCRIPTION: Invoked directly from the SCI handler when a global lock
* release interrupt occurs. Grab the global lock and queue
...
...
@@ -355,6 +361,8 @@ acpi_ev_global_lock_handler (
*
* FUNCTION: acpi_ev_init_global_lock_handler
*
* PARAMETERS: None
*
* RETURN: Status
*
* DESCRIPTION: Install a handler for the global lock release event
...
...
@@ -394,6 +402,8 @@ acpi_ev_init_global_lock_handler (void)
*
* FUNCTION: acpi_ev_acquire_global_lock
*
* PARAMETERS: Timeout - Max time to wait for the lock, in millisec.
*
* RETURN: Status
*
* DESCRIPTION: Attempt to gain ownership of the Global Lock.
...
...
@@ -461,6 +471,10 @@ acpi_ev_acquire_global_lock (
*
* FUNCTION: acpi_ev_release_global_lock
*
* PARAMETERS: None
*
* RETURN: Status
*
* DESCRIPTION: Releases ownership of the Global Lock.
*
******************************************************************************/
...
...
drivers/acpi/events/evregion.c
View file @
28fa181c
...
...
@@ -180,7 +180,7 @@ acpi_ev_initialize_op_regions (
* FUNCTION: acpi_ev_execute_reg_method
*
* PARAMETERS: region_obj - Object structure
* Function - On (1) or Off (0)
* Function -
Passed to _REG:
On (1) or Off (0)
*
* RETURN: Status
*
...
...
@@ -232,7 +232,7 @@ acpi_ev_execute_reg_method (
goto
cleanup
;
}
/* Set
up the parameter objects */
/* Setup the parameter objects */
params
[
0
]
->
integer
.
value
=
region_obj
->
region
.
space_id
;
params
[
1
]
->
integer
.
value
=
function
;
...
...
@@ -262,7 +262,6 @@ acpi_ev_execute_reg_method (
* FUNCTION: acpi_ev_address_space_dispatch
*
* PARAMETERS: region_obj - Internal region object
* space_id - ID of the address space (0-255)
* Function - Read or Write operation
* Address - Where in the space to read or write
* bit_width - Field width in bits (8, 16, 32, or 64)
...
...
@@ -425,8 +424,8 @@ acpi_ev_address_space_dispatch (
*
* FUNCTION: acpi_ev_detach_region
*
* PARAMETERS: region_obj - Region Object
* acpi_ns_is_locked - Namespace Region Already Locked?
* PARAMETERS: region_obj
- Region Object
* acpi_ns_is_locked
- Namespace Region Already Locked?
*
* RETURN: None
*
...
...
@@ -560,9 +559,9 @@ acpi_ev_detach_region(
*
* FUNCTION: acpi_ev_attach_region
*
* PARAMETERS: handler_obj - Handler Object
* region_obj - Region Object
* acpi_ns_is_locked - Namespace Region Already Locked?
* PARAMETERS: handler_obj
- Handler Object
* region_obj
- Region Object
* acpi_ns_is_locked
- Namespace Region Already Locked?
*
* RETURN: None
*
...
...
@@ -971,7 +970,7 @@ acpi_ev_install_space_handler (
*
* RETURN: Status
*
* DESCRIPTION: Run
_REG methods for the
Space ID;
* DESCRIPTION: Run
all _REG methods for the input
Space ID;
* Note: assumes namespace is locked, or system init time.
*
******************************************************************************/
...
...
drivers/acpi/events/evrgnini.c
View file @
28fa181c
...
...
@@ -54,7 +54,7 @@
*
* FUNCTION: acpi_ev_system_memory_region_setup
*
* PARAMETERS:
region_obj
- Region we are interested in
* PARAMETERS:
Handle
- Region we are interested in
* Function - Start or stop
* handler_context - Address space handler context
* region_context - Region specific context
...
...
@@ -108,7 +108,7 @@ acpi_ev_system_memory_region_setup (
*
* FUNCTION: acpi_ev_io_space_region_setup
*
* PARAMETERS:
region_obj
- Region we are interested in
* PARAMETERS:
Handle
- Region we are interested in
* Function - Start or stop
* handler_context - Address space handler context
* region_context - Region specific context
...
...
@@ -144,7 +144,7 @@ acpi_ev_io_space_region_setup (
*
* FUNCTION: acpi_ev_pci_config_region_setup
*
* PARAMETERS:
region_obj
- Region we are interested in
* PARAMETERS:
Handle
- Region we are interested in
* Function - Start or stop
* handler_context - Address space handler context
* region_context - Region specific context
...
...
@@ -317,7 +317,7 @@ acpi_ev_pci_config_region_setup (
*
* FUNCTION: acpi_ev_pci_bar_region_setup
*
* PARAMETERS:
region_obj
- Region we are interested in
* PARAMETERS:
Handle
- Region we are interested in
* Function - Start or stop
* handler_context - Address space handler context
* region_context - Region specific context
...
...
@@ -348,7 +348,7 @@ acpi_ev_pci_bar_region_setup (
*
* FUNCTION: acpi_ev_cmos_region_setup
*
* PARAMETERS:
region_obj
- Region we are interested in
* PARAMETERS:
Handle
- Region we are interested in
* Function - Start or stop
* handler_context - Address space handler context
* region_context - Region specific context
...
...
@@ -379,7 +379,7 @@ acpi_ev_cmos_region_setup (
*
* FUNCTION: acpi_ev_default_region_setup
*
* PARAMETERS:
region_obj
- Region we are interested in
* PARAMETERS:
Handle
- Region we are interested in
* Function - Start or stop
* handler_context - Address space handler context
* region_context - Region specific context
...
...
drivers/acpi/events/evxface.c
View file @
28fa181c
...
...
@@ -359,6 +359,7 @@ acpi_install_notify_handler (
* ACPI_DEVICE_NOTIFY: driver_handler (80-ff)
* ACPI_ALL_NOTIFY: both system and device
* Handler - Address of the handler
*
* RETURN: Status
*
* DESCRIPTION: Remove a handler for notifies on an ACPI device
...
...
@@ -401,9 +402,8 @@ acpi_remove_notify_handler (
goto
unlock_and_exit
;
}
/*
* Root Object
*/
/* Root Object */
if
(
device
==
ACPI_ROOT_OBJECT
)
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Removing notify handler for ROOT object.
\n
"
));
...
...
@@ -437,9 +437,8 @@ acpi_remove_notify_handler (
}
}
/*
* All Other Objects
*/
/* All Other Objects */
else
{
/* Notifies allowed on this object? */
...
...
drivers/acpi/executer/exfldio.c
View file @
28fa181c
...
...
@@ -130,7 +130,7 @@ acpi_ex_setup_region (
if
(
rgn_desc
->
region
.
length
<
(
obj_desc
->
common_field
.
base_byte_offset
+
field_datum_byte_offset
+
obj_desc
->
common_field
.
access_byte_width
))
{
if
(
acpi_gbl_enable_interpeter_slack
)
{
if
(
acpi_gbl_enable_interp
r
eter_slack
)
{
/*
* Slack mode only: We will go ahead and allow access to this
* field if it is within the region length rounded up to the next
...
...
@@ -169,40 +169,7 @@ acpi_ex_setup_region (
field_datum_byte_offset
,
obj_desc
->
common_field
.
access_byte_width
,
acpi_ut_get_node_name
(
rgn_desc
->
region
.
node
),
rgn_desc
->
region
.
length
));
if
(
!
acpi_strict
)
{
/*
* Allow access to the field if it is within the region size
* rounded up to a multiple of the access byte width. This
* overcomes "off-by-one" programming errors in the AML often
* found in Toshiba laptops. These errors were allowed by
* the Microsoft ASL compiler.
*/
u32
rounded_length
=
ACPI_ROUND_UP
(
rgn_desc
->
region
.
length
,
obj_desc
->
common_field
.
access_byte_width
);
if
(
rounded_length
<
(
obj_desc
->
common_field
.
base_byte_offset
+
field_datum_byte_offset
+
obj_desc
->
common_field
.
access_byte_width
))
{
return_ACPI_STATUS
(
AE_AML_REGION_LIMIT
);
}
else
{
static
int
warn_once
=
1
;
if
(
warn_once
)
{
// Could also associate a flag with each field, and
// warn once for each field.
ACPI_REPORT_WARNING
((
"The ACPI AML in your computer contains errors, "
"please nag the manufacturer to correct it.
\n
"
));
ACPI_REPORT_WARNING
((
"Allowing relaxed access to fields; "
"turn on CONFIG_ACPI_DEBUG for details.
\n
"
));
warn_once
=
0
;
}
return_ACPI_STATUS
(
AE_OK
);
}
}
else
{
return_ACPI_STATUS
(
AE_AML_REGION_LIMIT
);
}
return_ACPI_STATUS
(
AE_AML_REGION_LIMIT
);
}
return_ACPI_STATUS
(
AE_OK
);
...
...
drivers/acpi/hardware/hwgpe.c
View file @
28fa181c
...
...
@@ -96,7 +96,7 @@ acpi_hw_write_gpe_enable_reg (
*
* PARAMETERS: gpe_event_info - Info block for the GPE to be cleared
*
* RETURN:
status_s
tatus
* RETURN:
S
tatus
*
* DESCRIPTION: Clear the status bit for a single GPE.
*
...
...
drivers/acpi/hardware/hwregs.c
View file @
28fa181c
...
...
@@ -249,8 +249,8 @@ acpi_hw_get_bit_register_info (
* return_value - Value that was read from the register
* Flags - Lock the hardware or not
*
* RETURN:
Value is read from specified Register. Value returned is
* normalized to bit0 (is shifted all the way right)
* RETURN:
Status and the value read from specified Register. Value
*
returned is
normalized to bit0 (is shifted all the way right)
*
* DESCRIPTION: ACPI bit_register read function.
*
...
...
@@ -284,6 +284,8 @@ acpi_get_register (
}
}
/* Read from the register */
status
=
acpi_hw_register_read
(
ACPI_MTX_DO_NOT_LOCK
,
bit_reg_info
->
parent_register
,
&
register_value
);
...
...
@@ -313,10 +315,10 @@ acpi_get_register (
*
* PARAMETERS: register_id - ID of ACPI bit_register to access
* Value - (only used on write) value to write to the
* Register, NOT pre-normalized to the bit pos
.
* Register, NOT pre-normalized to the bit pos
* Flags - Lock the hardware or not
*
* RETURN:
None
* RETURN:
Status
*
* DESCRIPTION: ACPI Bit Register write function.
*
...
...
@@ -461,10 +463,11 @@ acpi_set_register (
*
* FUNCTION: acpi_hw_register_read
*
* PARAMETERS: use_lock - Mutex hw access.
* register_id - register_iD + Offset.
* PARAMETERS: use_lock - Mutex hw access
* register_id - register_iD + Offset
* return_value - Value that was read from the register
*
* RETURN:
Value read or written
.
* RETURN:
Status and the value read
.
*
* DESCRIPTION: Acpi register read function. Registers are read at the
* given offset.
...
...
@@ -572,10 +575,11 @@ acpi_hw_register_read (
*
* FUNCTION: acpi_hw_register_write
*
* PARAMETERS: use_lock - Mutex hw access.
* register_id - register_iD + Offset.
* PARAMETERS: use_lock - Mutex hw access
* register_id - register_iD + Offset
* Value - The value to write
*
* RETURN:
Value read or written.
* RETURN:
Status
*
* DESCRIPTION: Acpi register Write function. Registers are written at the
* given offset.
...
...
@@ -691,11 +695,11 @@ acpi_hw_register_write (
*
* PARAMETERS: Width - 8, 16, or 32
* Value - Where the value is returned
* Reg
ister
- GAS register structure
* Reg
- GAS register structure
*
* RETURN: Status
*
* DESCRIPTION: Read from either memory
, IO, or PCI config
space.
* DESCRIPTION: Read from either memory
or IO
space.
*
******************************************************************************/
...
...
@@ -705,8 +709,6 @@ acpi_hw_low_level_read (
u32
*
value
,
struct
acpi_generic_address
*
reg
)
{
struct
acpi_pci_id
pci_id
;
u16
pci_register
;
acpi_status
status
;
...
...
@@ -725,8 +727,8 @@ acpi_hw_low_level_read (
*
value
=
0
;
/*
* T
hree address spaces supported:
*
Memory, IO, or PCI_Config.
* T
wo address spaces supported: Memory or IO.
*
PCI_Config is not supported here because the GAS struct is insufficient
*/
switch
(
reg
->
address_space_id
)
{
case
ACPI_ADR_SPACE_SYSTEM_MEMORY
:
...
...
@@ -744,19 +746,6 @@ acpi_hw_low_level_read (
break
;
case
ACPI_ADR_SPACE_PCI_CONFIG
:
pci_id
.
segment
=
0
;
pci_id
.
bus
=
0
;
pci_id
.
device
=
ACPI_PCI_DEVICE
(
reg
->
address
);
pci_id
.
function
=
ACPI_PCI_FUNCTION
(
reg
->
address
);
pci_register
=
(
u16
)
ACPI_PCI_REGISTER
(
reg
->
address
);
status
=
acpi_os_read_pci_configuration
(
&
pci_id
,
pci_register
,
value
,
width
);
break
;
default:
ACPI_DEBUG_PRINT
((
ACPI_DB_ERROR
,
"Unsupported address space: %X
\n
"
,
reg
->
address_space_id
));
...
...
@@ -778,11 +767,11 @@ acpi_hw_low_level_read (
*
* PARAMETERS: Width - 8, 16, or 32
* Value - To be written
* Reg
ister
- GAS register structure
* Reg
- GAS register structure
*
* RETURN: Status
*
* DESCRIPTION: Write to either memory
, IO, or PCI config
space.
* DESCRIPTION: Write to either memory
or IO
space.
*
******************************************************************************/
...
...
@@ -792,8 +781,6 @@ acpi_hw_low_level_write (
u32
value
,
struct
acpi_generic_address
*
reg
)
{
struct
acpi_pci_id
pci_id
;
u16
pci_register
;
acpi_status
status
;
...
...
@@ -811,8 +798,8 @@ acpi_hw_low_level_write (
}
/*
* T
hree address spaces supported:
*
Memory, IO, or PCI_Config.
* T
wo address spaces supported: Memory or IO.
*
PCI_Config is not supported here because the GAS struct is insufficient
*/
switch
(
reg
->
address_space_id
)
{
case
ACPI_ADR_SPACE_SYSTEM_MEMORY
:
...
...
@@ -830,19 +817,6 @@ acpi_hw_low_level_write (
break
;
case
ACPI_ADR_SPACE_PCI_CONFIG
:
pci_id
.
segment
=
0
;
pci_id
.
bus
=
0
;
pci_id
.
device
=
ACPI_PCI_DEVICE
(
reg
->
address
);
pci_id
.
function
=
ACPI_PCI_FUNCTION
(
reg
->
address
);
pci_register
=
(
u16
)
ACPI_PCI_REGISTER
(
reg
->
address
);
status
=
acpi_os_write_pci_configuration
(
&
pci_id
,
pci_register
,
(
acpi_integer
)
value
,
width
);
break
;
default:
ACPI_DEBUG_PRINT
((
ACPI_DB_ERROR
,
"Unsupported address space: %X
\n
"
,
reg
->
address_space_id
));
...
...
drivers/acpi/hardware/hwtimer.c
View file @
28fa181c
...
...
@@ -52,11 +52,11 @@
*
* FUNCTION: acpi_get_timer_resolution
*
* PARAMETERS:
none
* PARAMETERS:
Resolution - Where the resolution is returned
*
* RETURN:
Number of bits of resolution in the PM Timer (24 or 32).
* RETURN:
Status and timer resolution
*
* DESCRIPTION: Obtains resolution of the ACPI PM Timer.
* DESCRIPTION: Obtains resolution of the ACPI PM Timer
(24 or 32 bits)
.
*
******************************************************************************/
...
...
@@ -86,11 +86,11 @@ acpi_get_timer_resolution (
*
* FUNCTION: acpi_get_timer
*
* PARAMETERS:
none
* PARAMETERS:
Ticks - Where the timer value is returned
*
* RETURN:
Current value of the ACPI PM Timer (in ticks).
* RETURN:
Status and current ticks
*
* DESCRIPTION: Obtains current value of ACPI PM Timer.
* DESCRIPTION: Obtains current value of ACPI PM Timer
(in ticks)
.
*
******************************************************************************/
...
...
@@ -118,11 +118,11 @@ acpi_get_timer (
*
* FUNCTION: acpi_get_timer_duration
*
* PARAMETERS: start_ticks
* end_ticks
* time_elapsed
* PARAMETERS: start_ticks
- Starting timestamp
* end_ticks
- End timestamp
* time_elapsed
- Where the elapsed time is returned
*
* RETURN: time_elapsed
* RETURN:
Status and
time_elapsed
*
* DESCRIPTION: Computes the time elapsed (in microseconds) between two
* PM Timer time stamps, taking into account the possibility of
...
...
@@ -136,7 +136,7 @@ acpi_get_timer (
* Note that this function accommodates only a single timer
* rollover. Thus for 24-bit timers, this function should only
* be used for calculating durations less than ~4.6 seconds
* (~20 minutes for 32-bit timers) -- calculations below
* (~20 minutes for 32-bit timers) -- calculations below
:
*
* 2**24 Ticks / 3,600,000 Ticks/Sec = 4.66 sec
* 2**32 Ticks / 3,600,000 Ticks/Sec = 1193 sec or 19.88 minutes
...
...
@@ -164,7 +164,6 @@ acpi_get_timer_duration (
/*
* Compute Tick Delta:
* -------------------
* Handle (max one) timer rollovers on 24- versus 32-bit timers.
*/
if
(
start_ticks
<
end_ticks
)
{
...
...
@@ -188,10 +187,7 @@ acpi_get_timer_duration (
}
/*
* Compute Duration:
* -----------------
*
* Requires a 64-bit divide:
* Compute Duration (Requires a 64-bit divide):
*
* time_elapsed = (delta_ticks * 1000000) / PM_TIMER_FREQUENCY;
*/
...
...
drivers/acpi/numa.c
View file @
28fa181c
...
...
@@ -51,6 +51,7 @@ acpi_table_print_srat_entry (
switch
(
header
->
type
)
{
case
ACPI_SRAT_PROCESSOR_AFFINITY
:
#ifdef ACPI_DEBUG_OUTPUT
{
struct
acpi_table_processor_affinity
*
p
=
(
struct
acpi_table_processor_affinity
*
)
header
;
...
...
@@ -58,9 +59,11 @@ acpi_table_print_srat_entry (
p
->
apic_id
,
p
->
lsapic_eid
,
p
->
proximity_domain
,
p
->
flags
.
enabled
?
"enabled"
:
"disabled"
));
}
#endif
/* ACPI_DEBUG_OUTPUT */
break
;
case
ACPI_SRAT_MEMORY_AFFINITY
:
#ifdef ACPI_DEBUG_OUTPUT
{
struct
acpi_table_memory_affinity
*
p
=
(
struct
acpi_table_memory_affinity
*
)
header
;
...
...
@@ -70,6 +73,7 @@ acpi_table_print_srat_entry (
p
->
flags
.
enabled
?
"enabled"
:
"disabled"
,
p
->
flags
.
hot_pluggable
?
" hot-pluggable"
:
""
));
}
#endif
/* ACPI_DEBUG_OUTPUT */
break
;
default:
...
...
@@ -94,8 +98,6 @@ acpi_parse_slit (unsigned long phys_addr, unsigned long size)
/* downcast just for %llu vs %lu for i386/ia64 */
localities
=
(
u32
)
slit
->
localities
;
printk
(
KERN_INFO
PREFIX
"SLIT localities %ux%u
\n
"
,
localities
,
localities
);
acpi_numa_slit_init
(
slit
);
return
0
;
...
...
@@ -103,7 +105,9 @@ acpi_parse_slit (unsigned long phys_addr, unsigned long size)
static
int
__init
acpi_parse_processor_affinity
(
acpi_table_entry_header
*
header
)
acpi_parse_processor_affinity
(
acpi_table_entry_header
*
header
,
const
unsigned
long
end
)
{
struct
acpi_table_processor_affinity
*
processor_affinity
;
...
...
@@ -121,7 +125,9 @@ acpi_parse_processor_affinity (acpi_table_entry_header *header)
static
int
__init
acpi_parse_memory_affinity
(
acpi_table_entry_header
*
header
)
acpi_parse_memory_affinity
(
acpi_table_entry_header
*
header
,
const
unsigned
long
end
)
{
struct
acpi_table_memory_affinity
*
memory_affinity
;
...
...
@@ -148,8 +154,6 @@ acpi_parse_srat (unsigned long phys_addr, unsigned long size)
srat
=
(
struct
acpi_table_srat
*
)
__va
(
phys_addr
);
printk
(
KERN_INFO
PREFIX
"SRAT revision %d
\n
"
,
srat
->
table_revision
);
return
0
;
}
...
...
drivers/acpi/osl.c
View file @
28fa181c
...
...
@@ -55,6 +55,9 @@ struct acpi_os_dpc
void
*
context
;
};
#ifdef CONFIG_ACPI_CUSTOM_DSDT
#include CONFIG_ACPI_CUSTOM_DSDT_FILE
#endif
#ifdef ENABLE_DEBUGGER
#include <linux/kdb.h>
...
...
@@ -241,7 +244,14 @@ acpi_os_table_override (struct acpi_table_header *existing_table,
if
(
!
existing_table
||
!
new_table
)
return
AE_BAD_PARAMETER
;
#ifdef CONFIG_ACPI_CUSTOM_DSDT
if
(
strncmp
(
existing_table
->
signature
,
"DSDT"
,
4
)
==
0
)
*
new_table
=
(
struct
acpi_table_header
*
)
AmlCode
;
else
*
new_table
=
NULL
;
#else
*
new_table
=
NULL
;
#endif
return
AE_OK
;
}
...
...
drivers/acpi/pci_link.c
View file @
28fa181c
...
...
@@ -448,7 +448,7 @@ acpi_pci_link_set (
#define PIRQ_PENALTY_ISA_USED (16*16*16*16*16)
#define PIRQ_PENALTY_ISA_ALWAYS (16*16*16*16*16*16)
static
int
__initdata
acpi_irq_penalty
[
ACPI_MAX_IRQS
]
=
{
static
int
acpi_irq_penalty
[
ACPI_MAX_IRQS
]
=
{
PIRQ_PENALTY_ISA_ALWAYS
,
/* IRQ0 timer */
PIRQ_PENALTY_ISA_ALWAYS
,
/* IRQ1 keyboard */
PIRQ_PENALTY_ISA_ALWAYS
,
/* IRQ2 cascade */
...
...
@@ -468,7 +468,7 @@ static int __initdata acpi_irq_penalty[ACPI_MAX_IRQS] = {
/* >IRQ15 */
};
int
int
__init
acpi_irq_penalty_init
(
void
)
{
struct
list_head
*
node
=
NULL
;
...
...
drivers/acpi/tables.c
View file @
28fa181c
...
...
@@ -101,7 +101,7 @@ acpi_table_print (
else
name
=
header
->
signature
;
printk
(
KERN_
INFO
PREFIX
"%.4s (v%3.3d %6.6s %8.8s 0x%08x %.4s 0x%08x) @ 0x%p
\n
"
,
printk
(
KERN_
DEBUG
PREFIX
"%.4s (v%3.3d %6.6s %8.8s 0x%08x %.4s 0x%08x) @ 0x%p
\n
"
,
name
,
header
->
revision
,
header
->
oem_id
,
header
->
oem_table_id
,
header
->
oem_revision
,
header
->
asl_compiler_id
,
header
->
asl_compiler_revision
,
...
...
@@ -587,7 +587,7 @@ acpi_table_init (void)
return
-
ENODEV
;
}
printk
(
KERN_
INFO
PREFIX
"RSDP (v%3.3d %6.6s
) @ 0x%p
\n
"
,
printk
(
KERN_
DEBUG
PREFIX
"RSDP (v%3.3d %6.6s
) @ 0x%p
\n
"
,
rsdp
->
revision
,
rsdp
->
oem_id
,
(
void
*
)
rsdp_phys
);
if
(
rsdp
->
revision
<
2
)
...
...
drivers/acpi/utilities/utglobal.c
View file @
28fa181c
...
...
@@ -142,16 +142,11 @@ acpi_format_exception (
*/
/* Debug switch - level and trace mask */
#ifdef ACPI_DEBUG_OUTPUT
u32
acpi_dbg_level
=
ACPI_DEBUG_DEFAULT
;
#else
u32
acpi_dbg_level
=
ACPI_NORMAL_DEFAULT
;
#endif
u32
acpi_dbg_level
=
0
;
/* Debug switch - layer (component) mask */
u32
acpi_dbg_layer
=
ACPI_COMPONENT_DEFAULT
;
u32
acpi_dbg_layer
=
0
;
u32
acpi_gbl_nesting_level
=
0
;
...
...
include/acpi/acconfig.h
View file @
28fa181c
...
...
@@ -64,7 +64,7 @@
/* Version string */
#define ACPI_CA_VERSION 0x20040
715
#define ACPI_CA_VERSION 0x20040
816
/*
* OS name, used for the _OS object. The _OS object is essentially obsolete,
...
...
include/acpi/acexcep.h
View file @
28fa181c
...
...
@@ -166,7 +166,7 @@
#define AE_AML_CIRCULAR_REFERENCE (acpi_status) (0x0020 | AE_CODE_AML)
#define AE_AML_BAD_RESOURCE_LENGTH (acpi_status) (0x0021 | AE_CODE_AML)
#define AE_CODE_AML_MAX 0x002
0
#define AE_CODE_AML_MAX 0x002
1
/*
* Internal exceptions used for control
...
...
include/acpi/acglobal.h
View file @
28fa181c
...
...
@@ -94,7 +94,7 @@ extern u32 acpi_gbl_nesting_level;
* interpreter strictly follows the ACPI specification. Setting to TRUE
* allows the interpreter to forgive certain bad AML constructs.
*/
ACPI_EXTERN
u8
ACPI_INIT_GLOBAL
(
acpi_gbl_enable_interpeter_slack
,
FALSE
);
ACPI_EXTERN
u8
ACPI_INIT_GLOBAL
(
acpi_gbl_enable_interp
r
eter_slack
,
FALSE
);
/*
* Automatically serialize ALL control methods? Default is FALSE, meaning
...
...
include/acpi/acmacros.h
View file @
28fa181c
...
...
@@ -364,24 +364,6 @@
#define ACPI_IS_OCTAL_DIGIT(d) (((char)(d) >= '0') && ((char)(d) <= '7'))
/* Macros for GAS addressing */
#if ACPI_MACHINE_WIDTH != 16
#define ACPI_PCI_DEVICE(a) (u16) ((ACPI_HIDWORD ((a))) & 0x0000FFFF)
#define ACPI_PCI_FUNCTION(a) (u16) ((ACPI_LODWORD ((a))) >> 16)
#define ACPI_PCI_REGISTER(a) (u16) ((ACPI_LODWORD ((a))) & 0x0000FFFF)
#else
/* No support for GAS and PCI IDs in 16-bit mode */
#define ACPI_PCI_FUNCTION(a) (u16) ((a) & 0xFFFF0000)
#define ACPI_PCI_DEVICE(a) (u16) ((a) & 0x0000FFFF)
#define ACPI_PCI_REGISTER(a) (u16) ((a) & 0x0000FFFF)
#endif
/* Bitfields within ACPI registers */
...
...
include/acpi/acpi_drivers.h
View file @
28fa181c
...
...
@@ -106,59 +106,4 @@ int acpi_ec_ecdt_probe (void);
int
acpi_processor_set_thermal_limit
(
acpi_handle
handle
,
int
type
);
/* --------------------------------------------------------------------------
Debug Support
-------------------------------------------------------------------------- */
#define ACPI_DEBUG_RESTORE 0
#define ACPI_DEBUG_LOW 1
#define ACPI_DEBUG_MEDIUM 2
#define ACPI_DEBUG_HIGH 3
#define ACPI_DEBUG_DRIVERS 4
extern
u32
acpi_dbg_level
;
extern
u32
acpi_dbg_layer
;
static
inline
void
acpi_set_debug
(
u32
flag
)
{
static
u32
layer_save
;
static
u32
level_save
;
switch
(
flag
)
{
case
ACPI_DEBUG_RESTORE
:
acpi_dbg_layer
=
layer_save
;
acpi_dbg_level
=
level_save
;
break
;
case
ACPI_DEBUG_LOW
:
case
ACPI_DEBUG_MEDIUM
:
case
ACPI_DEBUG_HIGH
:
case
ACPI_DEBUG_DRIVERS
:
layer_save
=
acpi_dbg_layer
;
level_save
=
acpi_dbg_level
;
break
;
}
switch
(
flag
)
{
case
ACPI_DEBUG_LOW
:
acpi_dbg_layer
=
ACPI_COMPONENT_DEFAULT
|
ACPI_ALL_DRIVERS
;
acpi_dbg_level
=
ACPI_DEBUG_DEFAULT
;
break
;
case
ACPI_DEBUG_MEDIUM
:
acpi_dbg_layer
=
ACPI_COMPONENT_DEFAULT
|
ACPI_ALL_DRIVERS
;
acpi_dbg_level
=
ACPI_LV_FUNCTIONS
|
ACPI_LV_ALL_EXCEPTIONS
;
break
;
case
ACPI_DEBUG_HIGH
:
acpi_dbg_layer
=
0xFFFFFFFF
;
acpi_dbg_level
=
0xFFFFFFFF
;
break
;
case
ACPI_DEBUG_DRIVERS
:
acpi_dbg_layer
=
ACPI_ALL_DRIVERS
;
acpi_dbg_level
=
0xFFFFFFFF
;
break
;
}
}
#endif
/*__ACPI_DRIVERS_H__*/
include/linux/acpi.h
View file @
28fa181c
...
...
@@ -453,14 +453,15 @@ void acpi_pci_unregister_driver(struct acpi_pci_driver *driver);
#ifdef CONFIG_ACPI_EC
int
ec_read
(
u8
addr
,
u8
*
val
);
int
ec_write
(
u8
addr
,
u8
val
);
extern
int
ec_read
(
u8
addr
,
u8
*
val
);
extern
int
ec_write
(
u8
addr
,
u8
val
);
#endif
/*CONFIG_ACPI_EC*/
#ifdef CONFIG_ACPI_INTERPRETER
int
acpi_blacklisted
(
void
);
extern
int
acpi_blacklisted
(
void
);
extern
void
acpi_bios_year
(
char
*
s
);
#else
/*!CONFIG_ACPI_INTERPRETER*/
...
...
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