Commit 8c7cba55 authored by Linus Torvalds's avatar Linus Torvalds

v2.4.9.15 -> v2.4.10

  - Andrew Grover: ACPI update
  - Al Viro: block devices..
  - Andrea Arcangeli: fix list manipulation bogosity
  - Trond Myklebust: 64-bit file locking fixes
  - Brad Hards: USB CDC ethernet
  - Chris Mason: reiserfs speedup
  - Robert Love: re-merge AMD 761 GART support that was lost in -ac merge
  - Adam Richter: check pci_module_init() return value
parent e2f6721a
...@@ -2578,10 +2578,10 @@ CONFIG_AGP_VIA ...@@ -2578,10 +2578,10 @@ CONFIG_AGP_VIA
the GLX component for XFree86 3.3.6, which can be downloaded from the GLX component for XFree86 3.3.6, which can be downloaded from
http://utah-glx.sourceforge.net/ . http://utah-glx.sourceforge.net/ .
AMD Irongate support AMD Irongate, 761, and 762 support
CONFIG_AGP_AMD CONFIG_AGP_AMD
This option gives you AGP support for the GLX component of the This option gives you AGP support for the GLX component of the
XFree86 4.x on AMD Irongate and 761 chipsets. XFree86 4.x on AMD Irongate, 761, and 762 chipsets.
For the moment, you should probably say N, unless you want to test For the moment, you should probably say N, unless you want to test
the GLX component for XFree86 3.3.6, which can be downloaded from the GLX component for XFree86 3.3.6, which can be downloaded from
...@@ -11572,6 +11572,29 @@ CONFIG_USB_CATC ...@@ -11572,6 +11572,29 @@ CONFIG_USB_CATC
The module will be called catc.o. If you want to compile it as a The module will be called catc.o. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>. module, say M here and read <file:Documentation/modules.txt>.
USB Communication Class Ethernet driver
CONFIG_USB_CDCETHER
This driver supports devices conforming to the Communication Device
Class Ethernet Control Model. This is used in some cable modems.
For more details on the specification, get the Communication Device
Class specification from <http://www.usb.org>.
This driver should work with the following devices:
* Ericsson PipeRider (all variants)
* Motorola (DM100 and SB4100)
* Broadcom Cable Modem (reference design)
* Toshiba PCX1100U and possibly other cable modems
The device creates a network device (ethX, where X depends on what
other networking devices you have in use), as for a normal PCI
or ISA based ethernet network card.
This code is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
The module will be called CDCEther.o. If you want to compile it as
a module, say M here and read <file:Documentation/modules.txt>.
USB Kodak DC-2xx Camera support USB Kodak DC-2xx Camera support
CONFIG_USB_DC2XX CONFIG_USB_DC2XX
Say Y here if you want to connect this type of still camera to Say Y here if you want to connect this type of still camera to
......
...@@ -1458,7 +1458,7 @@ W: http://www.kroah.com/linux-usb/ ...@@ -1458,7 +1458,7 @@ W: http://www.kroah.com/linux-usb/
USB CDC ETHERNET DRIVER USB CDC ETHERNET DRIVER
P: Brad Hards P: Brad Hards
M: bhards@bigpond.net.au M: bradh@frogmouth.net
L: linux-usb-users@lists.sourceforge.net L: linux-usb-users@lists.sourceforge.net
L: linux-usb-devel@lists.sourceforge.net L: linux-usb-devel@lists.sourceforge.net
S: Maintained S: Maintained
...@@ -1481,7 +1481,7 @@ S: Maintained ...@@ -1481,7 +1481,7 @@ S: Maintained
USB KAWASAKI LSI DRIVER USB KAWASAKI LSI DRIVER
P: Brad Hards P: Brad Hards
M: bhards@bigpond.net.au M: bradh@frogmouth.net
L: linux-usb-users@lists.sourceforge.net L: linux-usb-users@lists.sourceforge.net
L: linux-usb-devel@lists.sourceforge.net L: linux-usb-devel@lists.sourceforge.net
S: Maintained S: Maintained
......
VERSION = 2 VERSION = 2
PATCHLEVEL = 4 PATCHLEVEL = 4
SUBLEVEL = 10 SUBLEVEL = 10
EXTRAVERSION =-pre15 EXTRAVERSION =
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
......
# #
# Makefile for the Linux ACPI interpreter # Makefile for the Linux ACPI interpreter
# (It's a mess, but it's all here for a reason.)
# #
O_TARGET := acpi.o O_TARGET := acpi.o
...@@ -22,9 +21,12 @@ acpi-subdirs := utilities dispatcher events hardware \ ...@@ -22,9 +21,12 @@ acpi-subdirs := utilities dispatcher events hardware \
executer namespace parser resources tables executer namespace parser resources tables
ifdef CONFIG_ACPI_DEBUG ifdef CONFIG_ACPI_DEBUG
ACPI_CFLAGS += -DACPI_DEBUG -Wno-unused #-DENABLE_DEBUGGER ACPI_CFLAGS += -DACPI_DEBUG -Wno-unused
endif
#acpi-subdirs += debugger ifdef CONFIG_ACPI_DEBUGGER
ACPI_CFLAGS += -DENABLE_DEBUGGER
acpi-subdirs += debugger
endif endif
EXTRA_CFLAGS += $(ACPI_CFLAGS) EXTRA_CFLAGS += $(ACPI_CFLAGS)
......
...@@ -38,26 +38,19 @@ EXPORT_SYMBOL(acpi_in_debugger); ...@@ -38,26 +38,19 @@ EXPORT_SYMBOL(acpi_in_debugger);
EXPORT_SYMBOL(acpi_db_user_commands); EXPORT_SYMBOL(acpi_db_user_commands);
#endif #endif
EXPORT_SYMBOL(acpi_gbl_FADT);
EXPORT_SYMBOL(acpi_os_free); EXPORT_SYMBOL(acpi_os_free);
EXPORT_SYMBOL(acpi_os_breakpoint);
EXPORT_SYMBOL(acpi_os_printf); EXPORT_SYMBOL(acpi_os_printf);
EXPORT_SYMBOL(acpi_os_callocate); EXPORT_SYMBOL(acpi_os_callocate);
EXPORT_SYMBOL(acpi_os_sleep); EXPORT_SYMBOL(acpi_os_sleep);
EXPORT_SYMBOL(acpi_os_sleep_usec); EXPORT_SYMBOL(acpi_os_stall);
EXPORT_SYMBOL(acpi_os_in8);
EXPORT_SYMBOL(acpi_os_out8);
EXPORT_SYMBOL(acpi_os_queue_for_execution); EXPORT_SYMBOL(acpi_os_queue_for_execution);
EXPORT_SYMBOL(acpi_dbg_layer); EXPORT_SYMBOL(acpi_dbg_layer);
EXPORT_SYMBOL(acpi_dbg_level); EXPORT_SYMBOL(acpi_dbg_level);
EXPORT_SYMBOL(function_exit);
EXPORT_SYMBOL(function_trace);
EXPORT_SYMBOL(function_status_exit);
EXPORT_SYMBOL(function_value_exit);
EXPORT_SYMBOL(debug_print_raw);
EXPORT_SYMBOL(debug_print_prefix);
EXPORT_SYMBOL(acpi_ut_format_exception); EXPORT_SYMBOL(acpi_format_exception);
EXPORT_SYMBOL(acpi_get_handle); EXPORT_SYMBOL(acpi_get_handle);
EXPORT_SYMBOL(acpi_get_parent); EXPORT_SYMBOL(acpi_get_parent);
...@@ -96,11 +89,20 @@ EXPORT_SYMBOL(acpi_os_create_semaphore); ...@@ -96,11 +89,20 @@ EXPORT_SYMBOL(acpi_os_create_semaphore);
EXPORT_SYMBOL(acpi_os_delete_semaphore); EXPORT_SYMBOL(acpi_os_delete_semaphore);
EXPORT_SYMBOL(acpi_os_wait_semaphore); EXPORT_SYMBOL(acpi_os_wait_semaphore);
EXPORT_SYMBOL(acpi_os_in32); EXPORT_SYMBOL(acpi_os_read_port);
EXPORT_SYMBOL(acpi_os_out32); EXPORT_SYMBOL(acpi_os_write_port);
EXPORT_SYMBOL(acpi_fadt); EXPORT_SYMBOL(acpi_fadt);
EXPORT_SYMBOL(acpi_hw_register_bit_access); EXPORT_SYMBOL(acpi_hw_register_bit_access);
EXPORT_SYMBOL(acpi_hw_obtain_sleep_type_register_data); EXPORT_SYMBOL(acpi_hw_obtain_sleep_type_register_data);
EXPORT_SYMBOL(acpi_enter_sleep_state); EXPORT_SYMBOL(acpi_enter_sleep_state);
EXPORT_SYMBOL(acpi_get_system_info); EXPORT_SYMBOL(acpi_get_system_info);
EXPORT_SYMBOL(acpi_leave_sleep_state);
/*EXPORT_SYMBOL(acpi_save_state_mem);*/
/*EXPORT_SYMBOL(acpi_save_state_disk);*/
EXPORT_SYMBOL(acpi_hw_register_read);
EXPORT_SYMBOL(acpi_set_firmware_waking_vector);
EXPORT_SYMBOL(acpi_subsystem_status);
EXPORT_SYMBOL(acpi_os_signal);
#
# Makefile for all Linux ACPI interpreter subdirectories
# EXCEPT for the ospm directory
#
O_TARGET := $(notdir $(CURDIR)).o
obj-$(CONFIG_ACPI) := $(patsubst %.c,%.o,$(wildcard *.c))
EXTRA_CFLAGS += $(ACPI_CFLAGS)
include $(TOPDIR)/Rules.make
This diff is collapsed.
/******************************************************************************* /*******************************************************************************
* *
* Module Name: dbdisasm - parser op tree display routines * Module Name: dbdisasm - parser op tree display routines
* $Revision: 40 $ * $Revision: 48 $
* *
******************************************************************************/ ******************************************************************************/
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
#define DB_FULL_OP_INFO "%5.5X #%4.4X [%2.2d] " #define DB_FULL_OP_INFO "%5.5X #%4.4X [%2.2d] "
NATIVE_CHAR *INDENT_STRING = "...."; NATIVE_CHAR *acpi_gbl_db_disasm_indent = "....";
/******************************************************************************* /*******************************************************************************
...@@ -61,7 +61,7 @@ NATIVE_CHAR *INDENT_STRING = "...."; ...@@ -61,7 +61,7 @@ NATIVE_CHAR *INDENT_STRING = "....";
u32 u32
acpi_db_block_type ( acpi_db_block_type (
ACPI_PARSE_OBJECT *op) acpi_parse_object *op)
{ {
switch (op->opcode) { switch (op->opcode) {
...@@ -95,11 +95,11 @@ acpi_db_block_type ( ...@@ -95,11 +95,11 @@ acpi_db_block_type (
#ifdef PARSER_ONLY #ifdef PARSER_ONLY
ACPI_STATUS acpi_status
acpi_ps_display_object_pathname ( acpi_ps_display_object_pathname (
ACPI_PARSE_OBJECT *op) acpi_parse_object *op)
{ {
ACPI_PARSE_OBJECT *target_op; acpi_parse_object *target_op;
/* Search parent tree up to the root if necessary */ /* Search parent tree up to the root if necessary */
...@@ -112,7 +112,6 @@ acpi_ps_display_object_pathname ( ...@@ -112,7 +112,6 @@ acpi_ps_display_object_pathname (
* (such as _OS_). Rather than worry about looking up all * (such as _OS_). Rather than worry about looking up all
* the predefined names, just display the name as given * the predefined names, just display the name as given
*/ */
acpi_os_printf (" **** Path not found in parse tree"); acpi_os_printf (" **** Path not found in parse tree");
} }
...@@ -129,12 +128,12 @@ acpi_ps_display_object_pathname ( ...@@ -129,12 +128,12 @@ acpi_ps_display_object_pathname (
#else #else
ACPI_STATUS acpi_status
acpi_ps_display_object_pathname ( acpi_ps_display_object_pathname (
ACPI_PARSE_OBJECT *op) acpi_parse_object *op)
{ {
ACPI_STATUS status; acpi_status status;
ACPI_NAMESPACE_NODE *node; acpi_namespace_node *node;
NATIVE_CHAR buffer[MAX_SHOW_ENTRY]; NATIVE_CHAR buffer[MAX_SHOW_ENTRY];
u32 buffer_size = MAX_SHOW_ENTRY; u32 buffer_size = MAX_SHOW_ENTRY;
...@@ -183,13 +182,13 @@ acpi_ps_display_object_pathname ( ...@@ -183,13 +182,13 @@ acpi_ps_display_object_pathname (
void void
acpi_db_display_op ( acpi_db_display_op (
ACPI_WALK_STATE *walk_state, acpi_walk_state *walk_state,
ACPI_PARSE_OBJECT *origin, acpi_parse_object *origin,
u32 num_opcodes) u32 num_opcodes)
{ {
ACPI_PARSE_OBJECT *op = origin; acpi_parse_object *op = origin;
ACPI_PARSE_OBJECT *arg; acpi_parse_object *arg;
ACPI_PARSE_OBJECT *depth; acpi_parse_object *depth;
u32 depth_count = 0; u32 depth_count = 0;
u32 last_depth = 0; u32 last_depth = 0;
u32 i; u32 i;
...@@ -201,7 +200,7 @@ acpi_db_display_op ( ...@@ -201,7 +200,7 @@ acpi_db_display_op (
/* indentation */ /* indentation */
depth_count = 0; depth_count = 0;
if (!opt_verbose) { if (!acpi_gbl_db_opt_verbose) {
depth_count++; depth_count++;
} }
...@@ -226,7 +225,7 @@ acpi_db_display_op ( ...@@ -226,7 +225,7 @@ acpi_db_display_op (
if (depth_count > last_depth) { if (depth_count > last_depth) {
VERBOSE_PRINT ((DB_NO_OP_INFO, last_depth)); VERBOSE_PRINT ((DB_NO_OP_INFO, last_depth));
for (i = 0; i < last_depth; i++) { for (i = 0; i < last_depth; i++) {
acpi_os_printf (INDENT_STRING); acpi_os_printf ("%s", acpi_gbl_db_disasm_indent);
} }
if (acpi_db_block_type (op) == BLOCK_PAREN) { if (acpi_db_block_type (op) == BLOCK_PAREN) {
...@@ -243,7 +242,7 @@ acpi_db_display_op ( ...@@ -243,7 +242,7 @@ acpi_db_display_op (
for (j = 0; j < (last_depth - depth_count); j++) { for (j = 0; j < (last_depth - depth_count); j++) {
VERBOSE_PRINT ((DB_NO_OP_INFO, last_depth - j)); VERBOSE_PRINT ((DB_NO_OP_INFO, last_depth - j));
for (i = 0; i < (last_depth - j - 1); i++) { for (i = 0; i < (last_depth - j - 1); i++) {
acpi_os_printf (INDENT_STRING); acpi_os_printf ("%s", acpi_gbl_db_disasm_indent);
} }
if (acpi_db_block_type (op) == BLOCK_PAREN) { if (acpi_db_block_type (op) == BLOCK_PAREN) {
...@@ -263,7 +262,7 @@ acpi_db_display_op ( ...@@ -263,7 +262,7 @@ acpi_db_display_op (
/* Indent the output according to the depth count */ /* Indent the output according to the depth count */
for (i = 0; i < depth_count; i++) { for (i = 0; i < depth_count; i++) {
acpi_os_printf (INDENT_STRING); acpi_os_printf ("%s", acpi_gbl_db_disasm_indent);
} }
...@@ -275,7 +274,7 @@ acpi_db_display_op ( ...@@ -275,7 +274,7 @@ acpi_db_display_op (
if ((op->opcode == AML_INT_NAMEPATH_OP && op->value.name) && if ((op->opcode == AML_INT_NAMEPATH_OP && op->value.name) &&
(op->parent) && (op->parent) &&
(opt_verbose)) { (acpi_gbl_db_opt_verbose)) {
acpi_ps_display_object_pathname (op); acpi_ps_display_object_pathname (op);
} }
...@@ -298,7 +297,7 @@ acpi_db_display_op ( ...@@ -298,7 +297,7 @@ acpi_db_display_op (
for (i = 0; i < last_depth; i++) { for (i = 0; i < last_depth; i++) {
VERBOSE_PRINT ((DB_NO_OP_INFO, last_depth - i)); VERBOSE_PRINT ((DB_NO_OP_INFO, last_depth - i));
for (j = 0; j < depth_count; j++) { for (j = 0; j < depth_count; j++) {
acpi_os_printf (INDENT_STRING); acpi_os_printf ("%s", acpi_gbl_db_disasm_indent);
} }
acpi_os_printf ("}\n"); acpi_os_printf ("}\n");
depth_count--; depth_count--;
...@@ -393,23 +392,25 @@ acpi_db_display_namestring ( ...@@ -393,23 +392,25 @@ acpi_db_display_namestring (
void void
acpi_db_display_path ( acpi_db_display_path (
ACPI_PARSE_OBJECT *op) acpi_parse_object *op)
{ {
ACPI_PARSE_OBJECT *prev; acpi_parse_object *prev;
ACPI_PARSE_OBJECT *search; acpi_parse_object *search;
u32 name; u32 name;
u8 do_dot = FALSE; u8 do_dot = FALSE;
ACPI_PARSE_OBJECT *name_path; acpi_parse_object *name_path;
const acpi_opcode_info *op_info;
/* We are only interested in named objects */ /* We are only interested in named objects */
if (!acpi_ps_is_node_op (op->opcode)) { op_info = acpi_ps_get_opcode_info (op->opcode);
if (!(op_info->flags & AML_NSNODE)) {
return; return;
} }
if (acpi_ps_is_create_field_op (op->opcode)) { if (op_info->flags & AML_CREATE) {
/* Field creation - check for a fully qualified namepath */ /* Field creation - check for a fully qualified namepath */
if (op->opcode == AML_CREATE_FIELD_OP) { if (op->opcode == AML_CREATE_FIELD_OP) {
...@@ -443,7 +444,9 @@ acpi_db_display_path ( ...@@ -443,7 +444,9 @@ acpi_db_display_path (
search = search->parent; search = search->parent;
} }
if (prev && !acpi_ps_is_field_op (search->opcode)) { if (prev) {
op_info = acpi_ps_get_opcode_info (search->opcode);
if (!(op_info->flags & AML_FIELD)) {
/* below root scope, append scope name */ /* below root scope, append scope name */
if (do_dot) { if (do_dot) {
...@@ -452,7 +455,7 @@ acpi_db_display_path ( ...@@ -452,7 +455,7 @@ acpi_db_display_path (
acpi_os_printf ("."); acpi_os_printf (".");
} }
if (acpi_ps_is_create_field_op (search->opcode)) { if (op_info->flags & AML_CREATE) {
if (op->opcode == AML_CREATE_FIELD_OP) { if (op->opcode == AML_CREATE_FIELD_OP) {
name_path = acpi_ps_get_arg (op, 3); name_path = acpi_ps_get_arg (op, 3);
} }
...@@ -473,6 +476,7 @@ acpi_db_display_path ( ...@@ -473,6 +476,7 @@ acpi_db_display_path (
do_dot = TRUE; do_dot = TRUE;
} }
}
prev = search; prev = search;
} }
...@@ -496,13 +500,13 @@ acpi_db_display_path ( ...@@ -496,13 +500,13 @@ acpi_db_display_path (
void void
acpi_db_display_opcode ( acpi_db_display_opcode (
ACPI_WALK_STATE *walk_state, acpi_walk_state *walk_state,
ACPI_PARSE_OBJECT *op) acpi_parse_object *op)
{ {
u8 *byte_data; u8 *byte_data;
u32 byte_count; u32 byte_count;
u32 i; u32 i;
ACPI_OPCODE_INFO *opc = NULL; const acpi_opcode_info *op_info = NULL;
u32 name; u32 name;
...@@ -517,12 +521,12 @@ acpi_db_display_opcode ( ...@@ -517,12 +521,12 @@ acpi_db_display_opcode (
case AML_BYTE_OP: case AML_BYTE_OP:
if (opt_verbose) { if (acpi_gbl_db_opt_verbose) {
acpi_os_printf ("(u8) 0x%2.2X", op->value.integer & ACPI_UINT8_MAX); acpi_os_printf ("(u8) 0x%2.2X", op->value.integer8);
} }
else { else {
acpi_os_printf ("0x%2.2X", op->value.integer & ACPI_UINT8_MAX); acpi_os_printf ("0x%2.2X", op->value.integer8);
} }
break; break;
...@@ -530,12 +534,12 @@ acpi_db_display_opcode ( ...@@ -530,12 +534,12 @@ acpi_db_display_opcode (
case AML_WORD_OP: case AML_WORD_OP:
if (opt_verbose) { if (acpi_gbl_db_opt_verbose) {
acpi_os_printf ("(u16) 0x%4.4X", op->value.integer & ACPI_UINT16_MAX); acpi_os_printf ("(u16) 0x%4.4X", op->value.integer16);
} }
else { else {
acpi_os_printf ("0x%4.4X", op->value.integer & ACPI_UINT16_MAX); acpi_os_printf ("0x%4.4X", op->value.integer16);
} }
break; break;
...@@ -543,12 +547,27 @@ acpi_db_display_opcode ( ...@@ -543,12 +547,27 @@ acpi_db_display_opcode (
case AML_DWORD_OP: case AML_DWORD_OP:
if (opt_verbose) { if (acpi_gbl_db_opt_verbose) {
acpi_os_printf ("(u32) 0x%8.8X", op->value.integer); acpi_os_printf ("(u32) 0x%8.8X", op->value.integer32);
}
else {
acpi_os_printf ("0x%8.8X", op->value.integer32);
}
break;
case AML_QWORD_OP:
if (acpi_gbl_db_opt_verbose) {
acpi_os_printf ("(UINT64) 0x%8.8X%8.8X", op->value.integer64.hi,
op->value.integer64.lo);
} }
else { else {
acpi_os_printf ("0x%8.8X", op->value.integer); acpi_os_printf ("0x%8.8X%8.8X", op->value.integer64.hi,
op->value.integer64.lo);
} }
break; break;
...@@ -588,33 +607,33 @@ acpi_db_display_opcode ( ...@@ -588,33 +607,33 @@ acpi_db_display_opcode (
case AML_INT_NAMEDFIELD_OP: case AML_INT_NAMEDFIELD_OP:
acpi_os_printf ("Named_field (Length 0x%8.8X) ", op->value.integer); acpi_os_printf ("Named_field (Length 0x%8.8X) ", op->value.integer32);
break; break;
case AML_INT_RESERVEDFIELD_OP: case AML_INT_RESERVEDFIELD_OP:
acpi_os_printf ("Reserved_field (Length 0x%8.8X) ", op->value.integer); acpi_os_printf ("Reserved_field (Length 0x%8.8X) ", op->value.integer32);
break; break;
case AML_INT_ACCESSFIELD_OP: case AML_INT_ACCESSFIELD_OP:
acpi_os_printf ("Access_field (Length 0x%8.8X) ", op->value.integer); acpi_os_printf ("Access_field (Length 0x%8.8X) ", op->value.integer32);
break; break;
case AML_INT_BYTELIST_OP: case AML_INT_BYTELIST_OP:
if (opt_verbose) { if (acpi_gbl_db_opt_verbose) {
acpi_os_printf ("Byte_list (Length 0x%8.8X) ", op->value.integer); acpi_os_printf ("Byte_list (Length 0x%8.8X) ", op->value.integer32);
} }
else { else {
acpi_os_printf ("0x%2.2X", op->value.integer); acpi_os_printf ("0x%2.2X", op->value.integer32);
byte_count = op->value.integer; byte_count = op->value.integer32;
byte_data = ((ACPI_PARSE2_OBJECT *) op)->data; byte_data = ((acpi_parse2_object *) op)->data;
for (i = 0; i < byte_count; i++) { for (i = 0; i < byte_count; i++) {
acpi_os_printf (", 0x%2.2X", byte_data[i]); acpi_os_printf (", 0x%2.2X", byte_data[i]);
...@@ -628,8 +647,8 @@ acpi_db_display_opcode ( ...@@ -628,8 +647,8 @@ acpi_db_display_opcode (
/* Just get the opcode name and print it */ /* Just get the opcode name and print it */
opc = acpi_ps_get_opcode_info (op->opcode); op_info = acpi_ps_get_opcode_info (op->opcode);
acpi_os_printf ("%s", opc->name); acpi_os_printf ("%s", op_info->name);
#ifndef PARSER_ONLY #ifndef PARSER_ONLY
...@@ -643,8 +662,7 @@ acpi_db_display_opcode ( ...@@ -643,8 +662,7 @@ acpi_db_display_opcode (
break; break;
} }
if (!op_info) {
if (!opc) {
/* If there is another element in the list, add a comma */ /* If there is another element in the list, add a comma */
if (op->next) { if (op->next) {
...@@ -652,16 +670,15 @@ acpi_db_display_opcode ( ...@@ -652,16 +670,15 @@ acpi_db_display_opcode (
} }
} }
/* /*
* If this is a named opcode, print the associated name value * If this is a named opcode, print the associated name value
*/ */
op_info = acpi_ps_get_opcode_info (op->opcode);
if (op && acpi_ps_is_named_op (op->opcode)) { if (op && (op_info->flags & AML_NAMED)) {
name = acpi_ps_get_name (op); name = acpi_ps_get_name (op);
acpi_os_printf (" %4.4s", &name); acpi_os_printf (" %4.4s", &name);
if (opt_verbose) { if (acpi_gbl_db_opt_verbose) {
acpi_os_printf (" (Path \\"); acpi_os_printf (" (Path \\");
acpi_db_display_path (op); acpi_db_display_path (op);
acpi_os_printf (")"); acpi_os_printf (")");
......
This diff is collapsed.
/******************************************************************************* /*******************************************************************************
* *
* Module Name: dbexec - debugger control method execution * Module Name: dbexec - debugger control method execution
* $Revision: 26 $ * $Revision: 34 $
* *
******************************************************************************/ ******************************************************************************/
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
MODULE_NAME ("dbexec") MODULE_NAME ("dbexec")
DB_METHOD_INFO info; db_method_info acpi_gbl_db_method_info;
/******************************************************************************* /*******************************************************************************
...@@ -57,18 +57,18 @@ DB_METHOD_INFO info; ...@@ -57,18 +57,18 @@ DB_METHOD_INFO info;
* *
******************************************************************************/ ******************************************************************************/
ACPI_STATUS acpi_status
acpi_db_execute_method ( acpi_db_execute_method (
DB_METHOD_INFO *info, db_method_info *info,
ACPI_BUFFER *return_obj) acpi_buffer *return_obj)
{ {
ACPI_STATUS status; acpi_status status;
ACPI_OBJECT_LIST param_objects; acpi_object_list param_objects;
ACPI_OBJECT params[MTH_NUM_ARGS]; acpi_object params[MTH_NUM_ARGS];
u32 i; u32 i;
if (output_to_file && !acpi_dbg_level) { if (acpi_gbl_db_output_to_file && !acpi_dbg_level) {
acpi_os_printf ("Warning: debug output is not enabled!\n"); acpi_os_printf ("Warning: debug output is not enabled!\n");
} }
...@@ -100,8 +100,8 @@ acpi_db_execute_method ( ...@@ -100,8 +100,8 @@ acpi_db_execute_method (
/* Prepare for a return object of arbitrary size */ /* Prepare for a return object of arbitrary size */
return_obj->pointer = buffer; return_obj->pointer = acpi_gbl_db_buffer;
return_obj->length = BUFFER_SIZE; return_obj->length = ACPI_DEBUG_BUFFER_SIZE;
/* Do the actual method execution */ /* Do the actual method execution */
...@@ -129,7 +129,7 @@ acpi_db_execute_method ( ...@@ -129,7 +129,7 @@ acpi_db_execute_method (
void void
acpi_db_execute_setup ( acpi_db_execute_setup (
DB_METHOD_INFO *info) db_method_info *info)
{ {
/* Catenate the current scope to the supplied name */ /* Catenate the current scope to the supplied name */
...@@ -137,7 +137,7 @@ acpi_db_execute_setup ( ...@@ -137,7 +137,7 @@ acpi_db_execute_setup (
info->pathname[0] = 0; info->pathname[0] = 0;
if ((info->name[0] != '\\') && if ((info->name[0] != '\\') &&
(info->name[0] != '/')) { (info->name[0] != '/')) {
STRCAT (info->pathname, scope_buf); STRCAT (info->pathname, acpi_gbl_db_scope_buf);
} }
STRCAT (info->pathname, info->name); STRCAT (info->pathname, info->name);
...@@ -159,6 +159,40 @@ acpi_db_execute_setup ( ...@@ -159,6 +159,40 @@ acpi_db_execute_setup (
} }
/*******************************************************************************
*
* FUNCTION: Acpi_db_get_outstanding_allocations
*
* PARAMETERS: None
*
* RETURN: Current global allocation count minus cache entries
*
* DESCRIPTION: Determine the current number of "outstanding" allocations --
* those allocations that have not been freed and also are not
* in one of the various object caches.
*
******************************************************************************/
u32
acpi_db_get_outstanding_allocations (void)
{
u32 i;
u32 outstanding = 0;
#ifdef ACPI_DBG_TRACK_ALLOCATIONS
for (i = ACPI_MEM_LIST_FIRST_CACHE_LIST; i < ACPI_NUM_MEM_LISTS; i++) {
outstanding += (acpi_gbl_memory_lists[i].total_allocated -
acpi_gbl_memory_lists[i].total_freed -
acpi_gbl_memory_lists[i].cache_depth);
}
#endif
return (outstanding);
}
/******************************************************************************* /*******************************************************************************
* *
* FUNCTION: Acpi_db_execute * FUNCTION: Acpi_db_execute
...@@ -180,21 +214,51 @@ acpi_db_execute ( ...@@ -180,21 +214,51 @@ acpi_db_execute (
NATIVE_CHAR **args, NATIVE_CHAR **args,
u32 flags) u32 flags)
{ {
ACPI_STATUS status; acpi_status status;
ACPI_BUFFER return_obj; acpi_buffer return_obj;
#ifdef ACPI_DEBUG
u32 previous_allocations;
u32 allocations;
/* Memory allocation tracking */
previous_allocations = acpi_db_get_outstanding_allocations ();
#endif
acpi_gbl_db_method_info.name = name;
acpi_gbl_db_method_info.args = args;
acpi_gbl_db_method_info.flags = flags;
acpi_db_execute_setup (&acpi_gbl_db_method_info);
status = acpi_db_execute_method (&acpi_gbl_db_method_info, &return_obj);
info.name = name; /*
info.args = args; * Allow any handlers in separate threads to complete.
info.flags = flags; * (Such as Notify handlers invoked from AML executed above).
*/
acpi_os_sleep (0, 10);
#ifdef ACPI_DEBUG
/* Memory allocation tracking */
acpi_db_execute_setup (&info); allocations = acpi_db_get_outstanding_allocations () - previous_allocations;
status = acpi_db_execute_method (&info, &return_obj);
acpi_db_set_output_destination (DB_DUPLICATE_OUTPUT);
if (allocations > 0) {
acpi_os_printf ("Outstanding: %ld allocations after execution\n",
allocations);
}
#endif
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
acpi_os_printf ("Execution of %s failed with status %s\n", acpi_os_printf ("Execution of %s failed with status %s\n",
info.pathname, acpi_ut_format_exception (status)); acpi_gbl_db_method_info.pathname, acpi_format_exception (status));
} }
else { else {
...@@ -202,7 +266,7 @@ acpi_db_execute ( ...@@ -202,7 +266,7 @@ acpi_db_execute (
if (return_obj.length) { if (return_obj.length) {
acpi_os_printf ("Execution of %s returned object %p Buflen %X\n", acpi_os_printf ("Execution of %s returned object %p Buflen %X\n",
info.pathname, return_obj.pointer, return_obj.length); acpi_gbl_db_method_info.pathname, return_obj.pointer, return_obj.length);
acpi_db_dump_object (return_obj.pointer, 1); acpi_db_dump_object (return_obj.pointer, 1);
} }
} }
...@@ -228,10 +292,10 @@ void ...@@ -228,10 +292,10 @@ void
acpi_db_method_thread ( acpi_db_method_thread (
void *context) void *context)
{ {
ACPI_STATUS status; acpi_status status;
DB_METHOD_INFO *info = context; db_method_info *info = context;
u32 i; u32 i;
ACPI_BUFFER return_obj; acpi_buffer return_obj;
for (i = 0; i < info->num_loops; i++) { for (i = 0; i < info->num_loops; i++) {
...@@ -245,7 +309,6 @@ acpi_db_method_thread ( ...@@ -245,7 +309,6 @@ acpi_db_method_thread (
} }
} }
/* Signal our completion */ /* Signal our completion */
acpi_os_signal_semaphore (info->thread_gate, 1); acpi_os_signal_semaphore (info->thread_gate, 1);
...@@ -272,11 +335,11 @@ acpi_db_create_execution_threads ( ...@@ -272,11 +335,11 @@ acpi_db_create_execution_threads (
NATIVE_CHAR *num_loops_arg, NATIVE_CHAR *num_loops_arg,
NATIVE_CHAR *method_name_arg) NATIVE_CHAR *method_name_arg)
{ {
ACPI_STATUS status; acpi_status status;
u32 num_threads; u32 num_threads;
u32 num_loops; u32 num_loops;
u32 i; u32 i;
ACPI_HANDLE thread_gate; acpi_handle thread_gate;
/* Get the arguments */ /* Get the arguments */
...@@ -294,19 +357,19 @@ acpi_db_create_execution_threads ( ...@@ -294,19 +357,19 @@ acpi_db_create_execution_threads (
status = acpi_os_create_semaphore (1, 0, &thread_gate); status = acpi_os_create_semaphore (1, 0, &thread_gate);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
acpi_os_printf ("Could not create semaphore, %s\n", acpi_ut_format_exception (status)); acpi_os_printf ("Could not create semaphore, %s\n", acpi_format_exception (status));
return; return;
} }
/* Setup the context to be passed to each thread */ /* Setup the context to be passed to each thread */
info.name = method_name_arg; acpi_gbl_db_method_info.name = method_name_arg;
info.args = NULL; acpi_gbl_db_method_info.args = NULL;
info.flags = 0; acpi_gbl_db_method_info.flags = 0;
info.num_loops = num_loops; acpi_gbl_db_method_info.num_loops = num_loops;
info.thread_gate = thread_gate; acpi_gbl_db_method_info.thread_gate = thread_gate;
acpi_db_execute_setup (&info); acpi_db_execute_setup (&acpi_gbl_db_method_info);
/* Create the threads */ /* Create the threads */
...@@ -314,7 +377,7 @@ acpi_db_create_execution_threads ( ...@@ -314,7 +377,7 @@ acpi_db_create_execution_threads (
acpi_os_printf ("Creating %X threads to execute %X times each\n", num_threads, num_loops); acpi_os_printf ("Creating %X threads to execute %X times each\n", num_threads, num_loops);
for (i = 0; i < (num_threads); i++) { for (i = 0; i < (num_threads); i++) {
acpi_os_queue_for_execution (OSD_PRIORITY_MED, acpi_db_method_thread, &info); acpi_os_queue_for_execution (OSD_PRIORITY_MED, acpi_db_method_thread, &acpi_gbl_db_method_info);
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* Module Name: dbfileio - Debugger file I/O commands. These can't usually * Module Name: dbfileio - Debugger file I/O commands. These can't usually
* be used when running the debugger in Ring 0 (Kernel mode) * be used when running the debugger in Ring 0 (Kernel mode)
* $Revision: 41 $ * $Revision: 48 $
* *
******************************************************************************/ ******************************************************************************/
...@@ -38,11 +38,9 @@ ...@@ -38,11 +38,9 @@
MODULE_NAME ("dbfileio") MODULE_NAME ("dbfileio")
ACPI_PARSE_OBJECT *root;
#ifdef ACPI_APPLICATION #ifdef ACPI_APPLICATION
#include <stdio.h> #include <stdio.h>
FILE *debug_file = NULL; FILE *acpi_gbl_debug_file = NULL;
#endif #endif
...@@ -64,7 +62,7 @@ FILE *debug_file = NULL; ...@@ -64,7 +62,7 @@ FILE *debug_file = NULL;
* *
******************************************************************************/ ******************************************************************************/
ACPI_OBJECT_TYPE8 acpi_object_type8
acpi_db_match_argument ( acpi_db_match_argument (
NATIVE_CHAR *user_argument, NATIVE_CHAR *user_argument,
ARGUMENT_INFO *arguments) ARGUMENT_INFO *arguments)
...@@ -78,7 +76,7 @@ acpi_db_match_argument ( ...@@ -78,7 +76,7 @@ acpi_db_match_argument (
for (i = 0; arguments[i].name; i++) { for (i = 0; arguments[i].name; i++) {
if (STRSTR (arguments[i].name, user_argument) == arguments[i].name) { if (STRSTR (arguments[i].name, user_argument) == arguments[i].name) {
return ((ACPI_OBJECT_TYPE8) i); return ((acpi_object_type8) i);
} }
} }
...@@ -107,11 +105,11 @@ acpi_db_close_debug_file ( ...@@ -107,11 +105,11 @@ acpi_db_close_debug_file (
#ifdef ACPI_APPLICATION #ifdef ACPI_APPLICATION
if (debug_file) { if (acpi_gbl_debug_file) {
fclose (debug_file); fclose (acpi_gbl_debug_file);
debug_file = NULL; acpi_gbl_debug_file = NULL;
output_to_file = FALSE; acpi_gbl_db_output_to_file = FALSE;
acpi_os_printf ("Debug output file %s closed\n", debug_filename); acpi_os_printf ("Debug output file %s closed\n", acpi_gbl_db_debug_filename);
} }
#endif #endif
...@@ -138,11 +136,11 @@ acpi_db_open_debug_file ( ...@@ -138,11 +136,11 @@ acpi_db_open_debug_file (
#ifdef ACPI_APPLICATION #ifdef ACPI_APPLICATION
acpi_db_close_debug_file (); acpi_db_close_debug_file ();
debug_file = fopen (name, "w+"); acpi_gbl_debug_file = fopen (name, "w+");
if (debug_file) { if (acpi_gbl_debug_file) {
acpi_os_printf ("Debug output file %s opened\n", name); acpi_os_printf ("Debug output file %s opened\n", name);
STRCPY (debug_filename, name); STRCPY (acpi_gbl_db_debug_filename, name);
output_to_file = TRUE; acpi_gbl_db_output_to_file = TRUE;
} }
else { else {
acpi_os_printf ("Could not open debug file %s\n", name); acpi_os_printf ("Could not open debug file %s\n", name);
...@@ -167,22 +165,22 @@ acpi_db_open_debug_file ( ...@@ -167,22 +165,22 @@ acpi_db_open_debug_file (
* *
******************************************************************************/ ******************************************************************************/
ACPI_STATUS acpi_status
acpi_db_load_table( acpi_db_load_table(
FILE *fp, FILE *fp,
ACPI_TABLE_HEADER **table_ptr, acpi_table_header **table_ptr,
u32 *table_length) u32 *table_length)
{ {
ACPI_TABLE_HEADER table_header; acpi_table_header table_header;
u8 *aml_ptr; u8 *aml_ptr;
u32 aml_length; u32 aml_length;
u32 actual; u32 actual;
ACPI_STATUS status; acpi_status status;
/* Read the table header */ /* Read the table header */
if (fread (&table_header, 1, sizeof (table_header), fp) != sizeof (ACPI_TABLE_HEADER)) { if (fread (&table_header, 1, sizeof (table_header), fp) != sizeof (acpi_table_header)) {
acpi_os_printf ("Couldn't read the table header\n"); acpi_os_printf ("Couldn't read the table header\n");
return (AE_BAD_SIGNATURE); return (AE_BAD_SIGNATURE);
} }
...@@ -204,15 +202,17 @@ acpi_db_load_table( ...@@ -204,15 +202,17 @@ acpi_db_load_table(
STRNCMP ((char *) table_header.signature, PSDT_SIG, 4) && STRNCMP ((char *) table_header.signature, PSDT_SIG, 4) &&
STRNCMP ((char *) table_header.signature, SSDT_SIG, 4)) { STRNCMP ((char *) table_header.signature, SSDT_SIG, 4)) {
acpi_os_printf ("Table signature is invalid\n"); acpi_os_printf ("Table signature is invalid\n");
DUMP_BUFFER (&table_header, sizeof (acpi_table_header));
return (AE_ERROR); return (AE_ERROR);
} }
/* Allocate a buffer for the table */ /* Allocate a buffer for the table */
*table_length = table_header.length; *table_length = table_header.length;
*table_ptr = (ACPI_TABLE_HEADER *) acpi_ut_allocate ((size_t) *table_length); *table_ptr = ACPI_MEM_ALLOCATE ((size_t) *table_length);
if (!*table_ptr) { if (!*table_ptr) {
acpi_os_printf ("Could not allocate memory for the table (size=%X)\n", table_header.length); acpi_os_printf ("Could not allocate memory for ACPI table %4.4s (size=%X)\n",
table_header.signature, table_header.length);
return (AE_NO_MEMORY); return (AE_NO_MEMORY);
} }
...@@ -238,7 +238,7 @@ acpi_db_load_table( ...@@ -238,7 +238,7 @@ acpi_db_load_table(
acpi_os_printf ("Error - could not read the table file\n"); acpi_os_printf ("Error - could not read the table file\n");
acpi_ut_free (*table_ptr); ACPI_MEM_FREE (*table_ptr);
*table_ptr = NULL; *table_ptr = NULL;
*table_length = 0; *table_length = 0;
...@@ -265,16 +265,18 @@ acpi_db_load_table( ...@@ -265,16 +265,18 @@ acpi_db_load_table(
* *
******************************************************************************/ ******************************************************************************/
ACPI_STATUS acpi_status
ae_local_load_table ( ae_local_load_table (
ACPI_TABLE_HEADER *table_ptr) acpi_table_header *table_ptr)
{ {
ACPI_STATUS status; acpi_status status;
ACPI_TABLE_DESC table_info; acpi_table_desc table_info;
FUNCTION_TRACE ("Ae_local_load_table");
if (!table_ptr) { if (!table_ptr) {
return (AE_BAD_PARAMETER); return_ACPI_STATUS (AE_BAD_PARAMETER);
} }
/* Install the new table into the local data structures */ /* Install the new table into the local data structures */
...@@ -286,7 +288,7 @@ ae_local_load_table ( ...@@ -286,7 +288,7 @@ ae_local_load_table (
/* Free table allocated by Acpi_tb_get_table */ /* Free table allocated by Acpi_tb_get_table */
acpi_tb_delete_single_table (&table_info); acpi_tb_delete_single_table (&table_info);
return (status); return_ACPI_STATUS (status);
} }
...@@ -295,12 +297,12 @@ ae_local_load_table ( ...@@ -295,12 +297,12 @@ ae_local_load_table (
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
/* Uninstall table and free the buffer */ /* Uninstall table and free the buffer */
acpi_tb_uninstall_table (table_info.installed_desc); acpi_tb_delete_acpi_table (ACPI_TABLE_DSDT);
return (status); return_ACPI_STATUS (status);
} }
#endif #endif
return (status); return_ACPI_STATUS (status);
} }
...@@ -316,14 +318,14 @@ ae_local_load_table ( ...@@ -316,14 +318,14 @@ ae_local_load_table (
* *
******************************************************************************/ ******************************************************************************/
ACPI_STATUS acpi_status
acpi_db_load_acpi_table ( acpi_db_load_acpi_table (
NATIVE_CHAR *filename) NATIVE_CHAR *filename)
{ {
#ifdef ACPI_APPLICATION #ifdef ACPI_APPLICATION
FILE *fp; FILE *fp;
ACPI_STATUS status; acpi_status status;
ACPI_TABLE_HEADER *table_ptr; acpi_table_header *table_ptr;
u32 table_length; u32 table_length;
...@@ -356,11 +358,13 @@ acpi_db_load_acpi_table ( ...@@ -356,11 +358,13 @@ acpi_db_load_acpi_table (
acpi_os_printf ("Table %4.4s is already installed\n", acpi_os_printf ("Table %4.4s is already installed\n",
&table_ptr->signature); &table_ptr->signature);
} }
else { else {
acpi_os_printf ("Could not install table, %s\n", acpi_os_printf ("Could not install table, %s\n",
acpi_ut_format_exception (status)); acpi_format_exception (status));
} }
acpi_ut_free (table_ptr);
ACPI_MEM_FREE (table_ptr);
return (status); return (status);
} }
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: dbhistry - debugger HISTORY command * Module Name: dbhistry - debugger HISTORY command
* $Revision: 18 $ * $Revision: 19 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -54,11 +54,11 @@ typedef struct history_info ...@@ -54,11 +54,11 @@ typedef struct history_info
} HISTORY_INFO; } HISTORY_INFO;
HISTORY_INFO history_buffer[HISTORY_SIZE]; HISTORY_INFO acpi_gbl_history_buffer[HISTORY_SIZE];
u16 lo_history = 0; u16 acpi_gbl_lo_history = 0;
u16 num_history = 0; u16 acpi_gbl_num_history = 0;
u16 next_history_index = 0; u16 acpi_gbl_next_history_index = 0;
u32 next_cmd_num = 1; u32 acpi_gbl_next_cmd_num = 1;
/******************************************************************************* /*******************************************************************************
...@@ -81,28 +81,29 @@ acpi_db_add_to_history ( ...@@ -81,28 +81,29 @@ acpi_db_add_to_history (
/* Put command into the next available slot */ /* Put command into the next available slot */
STRCPY (history_buffer[next_history_index].command, command_line); STRCPY (acpi_gbl_history_buffer[acpi_gbl_next_history_index].command, command_line);
history_buffer[next_history_index].cmd_num = next_cmd_num;
acpi_gbl_history_buffer[acpi_gbl_next_history_index].cmd_num = acpi_gbl_next_cmd_num;
/* Adjust indexes */ /* Adjust indexes */
if ((num_history == HISTORY_SIZE) && if ((acpi_gbl_num_history == HISTORY_SIZE) &&
(next_history_index == lo_history)) { (acpi_gbl_next_history_index == acpi_gbl_lo_history)) {
lo_history++; acpi_gbl_lo_history++;
if (lo_history >= HISTORY_SIZE) { if (acpi_gbl_lo_history >= HISTORY_SIZE) {
lo_history = 0; acpi_gbl_lo_history = 0;
} }
} }
next_history_index++; acpi_gbl_next_history_index++;
if (next_history_index >= HISTORY_SIZE) { if (acpi_gbl_next_history_index >= HISTORY_SIZE) {
next_history_index = 0; acpi_gbl_next_history_index = 0;
} }
next_cmd_num++; acpi_gbl_next_cmd_num++;
if (num_history < HISTORY_SIZE) { if (acpi_gbl_num_history < HISTORY_SIZE) {
num_history++; acpi_gbl_num_history++;
} }
} }
...@@ -127,12 +128,13 @@ acpi_db_display_history (void) ...@@ -127,12 +128,13 @@ acpi_db_display_history (void)
u16 history_index; u16 history_index;
history_index = lo_history; history_index = acpi_gbl_lo_history;
/* Dump entire history buffer */ /* Dump entire history buffer */
for (i = 0; i < num_history; i++) { for (i = 0; i < acpi_gbl_num_history; i++) {
acpi_os_printf ("%ld %s\n", history_buffer[history_index].cmd_num, history_buffer[history_index].command); acpi_os_printf ("%ld %s\n", acpi_gbl_history_buffer[history_index].cmd_num,
acpi_gbl_history_buffer[history_index].command);
history_index++; history_index++;
if (history_index >= HISTORY_SIZE) { if (history_index >= HISTORY_SIZE) {
...@@ -165,7 +167,7 @@ acpi_db_get_from_history ( ...@@ -165,7 +167,7 @@ acpi_db_get_from_history (
if (command_num_arg == NULL) { if (command_num_arg == NULL) {
cmd_num = next_cmd_num - 1; cmd_num = acpi_gbl_next_cmd_num - 1;
} }
else { else {
...@@ -175,12 +177,12 @@ acpi_db_get_from_history ( ...@@ -175,12 +177,12 @@ acpi_db_get_from_history (
/* Search history buffer */ /* Search history buffer */
history_index = lo_history; history_index = acpi_gbl_lo_history;
for (i = 0; i < num_history; i++) { for (i = 0; i < acpi_gbl_num_history; i++) {
if (history_buffer[history_index].cmd_num == cmd_num) { if (acpi_gbl_history_buffer[history_index].cmd_num == cmd_num) {
/* Found the commnad, return it */ /* Found the commnad, return it */
return (history_buffer[history_index].command); return (acpi_gbl_history_buffer[history_index].command);
} }
......
This diff is collapsed.
This diff is collapsed.
/******************************************************************************* /*******************************************************************************
* *
* Module Name: dbutils - AML debugger utilities * Module Name: dbutils - AML debugger utilities
* $Revision: 37 $ * $Revision: 43 $
* *
******************************************************************************/ ******************************************************************************/
...@@ -62,7 +62,7 @@ acpi_db_set_output_destination ( ...@@ -62,7 +62,7 @@ acpi_db_set_output_destination (
acpi_gbl_db_output_flags = (u8) output_flags; acpi_gbl_db_output_flags = (u8) output_flags;
if (output_flags & DB_REDIRECTABLE_OUTPUT) { if (output_flags & DB_REDIRECTABLE_OUTPUT) {
if (output_to_file) { if (acpi_gbl_db_output_to_file) {
acpi_dbg_level = acpi_gbl_db_debug_level; acpi_dbg_level = acpi_gbl_db_debug_level;
} }
} }
...@@ -91,7 +91,7 @@ acpi_db_dump_buffer ( ...@@ -91,7 +91,7 @@ acpi_db_dump_buffer (
acpi_os_printf ("\n_location %X:\n", address); acpi_os_printf ("\n_location %X:\n", address);
acpi_dbg_level |= TRACE_TABLES; acpi_dbg_level |= ACPI_LV_TABLES;
acpi_ut_dump_buffer ((u8 *) address, 64, DB_BYTE_DISPLAY, ACPI_UINT32_MAX); acpi_ut_dump_buffer ((u8 *) address, 64, DB_BYTE_DISPLAY, ACPI_UINT32_MAX);
} }
...@@ -111,7 +111,7 @@ acpi_db_dump_buffer ( ...@@ -111,7 +111,7 @@ acpi_db_dump_buffer (
void void
acpi_db_dump_object ( acpi_db_dump_object (
ACPI_OBJECT *obj_desc, acpi_object *obj_desc,
u32 level) u32 level)
{ {
u32 i; u32 i;
...@@ -129,12 +129,14 @@ acpi_db_dump_object ( ...@@ -129,12 +129,14 @@ acpi_db_dump_object (
switch (obj_desc->type) { switch (obj_desc->type) {
case ACPI_TYPE_ANY: case ACPI_TYPE_ANY:
acpi_os_printf ("[Object Reference] Value: %p\n", obj_desc->reference.handle); acpi_os_printf ("[Object Reference] = %p\n", obj_desc->reference.handle);
break; break;
case ACPI_TYPE_INTEGER: case ACPI_TYPE_INTEGER:
acpi_os_printf ("[Number] Value: %ld (%lX)\n", obj_desc->integer.value, obj_desc->integer.value);
acpi_os_printf ("[Integer] = %X%8.8X\n", HIDWORD (obj_desc->integer.value),
LODWORD (obj_desc->integer.value));
break; break;
...@@ -150,7 +152,7 @@ acpi_db_dump_object ( ...@@ -150,7 +152,7 @@ acpi_db_dump_object (
case ACPI_TYPE_BUFFER: case ACPI_TYPE_BUFFER:
acpi_os_printf ("[Buffer] Value: "); acpi_os_printf ("[Buffer] = ");
acpi_ut_dump_buffer ((u8 *) obj_desc->buffer.pointer, obj_desc->buffer.length, DB_DWORD_DISPLAY, _COMPONENT); acpi_ut_dump_buffer ((u8 *) obj_desc->buffer.pointer, obj_desc->buffer.length, DB_DWORD_DISPLAY, _COMPONENT);
break; break;
...@@ -166,17 +168,23 @@ acpi_db_dump_object ( ...@@ -166,17 +168,23 @@ acpi_db_dump_object (
case INTERNAL_TYPE_REFERENCE: case INTERNAL_TYPE_REFERENCE:
acpi_os_printf ("[Object Reference] Value: %p\n", obj_desc->reference.handle);
acpi_os_printf ("[Object Reference] = %p\n", obj_desc->reference.handle);
break; break;
case ACPI_TYPE_PROCESSOR: case ACPI_TYPE_PROCESSOR:
acpi_os_printf ("[Processor]\n"); acpi_os_printf ("[Processor]\n");
break; break;
case ACPI_TYPE_POWER: case ACPI_TYPE_POWER:
acpi_os_printf ("[Power Resource]\n"); acpi_os_printf ("[Power Resource]\n");
break; break;
default: default:
acpi_os_printf ("[Unknown Type] %X \n", obj_desc->type); acpi_os_printf ("[Unknown Type] %X \n", obj_desc->type);
...@@ -247,15 +255,15 @@ acpi_db_prep_namestring ( ...@@ -247,15 +255,15 @@ acpi_db_prep_namestring (
* *
******************************************************************************/ ******************************************************************************/
ACPI_STATUS acpi_status
acpi_db_second_pass_parse ( acpi_db_second_pass_parse (
ACPI_PARSE_OBJECT *root) acpi_parse_object *root)
{ {
ACPI_PARSE_OBJECT *op = root; acpi_parse_object *op = root;
ACPI_PARSE2_OBJECT *method; acpi_parse2_object *method;
ACPI_PARSE_OBJECT *search_op; acpi_parse_object *search_op;
ACPI_PARSE_OBJECT *start_op; acpi_parse_object *start_op;
ACPI_STATUS status = AE_OK; acpi_status status = AE_OK;
u32 base_aml_offset; u32 base_aml_offset;
...@@ -263,7 +271,7 @@ acpi_db_second_pass_parse ( ...@@ -263,7 +271,7 @@ acpi_db_second_pass_parse (
while (op) { while (op) {
if (op->opcode == AML_METHOD_OP) { if (op->opcode == AML_METHOD_OP) {
method = (ACPI_PARSE2_OBJECT *) op; method = (acpi_parse2_object *) op;
status = acpi_ps_parse_aml (op, method->data, method->length, 0, status = acpi_ps_parse_aml (op, method->data, method->length, 0,
NULL, NULL, NULL, acpi_ds_load1_begin_op, acpi_ds_load1_end_op); NULL, NULL, NULL, acpi_ds_load1_begin_op, acpi_ds_load1_end_op);
...@@ -311,13 +319,13 @@ acpi_db_second_pass_parse ( ...@@ -311,13 +319,13 @@ acpi_db_second_pass_parse (
* *
******************************************************************************/ ******************************************************************************/
ACPI_NAMESPACE_NODE * acpi_namespace_node *
acpi_db_local_ns_lookup ( acpi_db_local_ns_lookup (
NATIVE_CHAR *name) NATIVE_CHAR *name)
{ {
NATIVE_CHAR *internal_path; NATIVE_CHAR *internal_path;
ACPI_STATUS status; acpi_status status;
ACPI_NAMESPACE_NODE *node = NULL; acpi_namespace_node *node = NULL;
acpi_db_prep_namestring (name); acpi_db_prep_namestring (name);
...@@ -339,11 +347,11 @@ acpi_db_local_ns_lookup ( ...@@ -339,11 +347,11 @@ acpi_db_local_ns_lookup (
NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, NULL, &node); NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, NULL, &node);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
acpi_os_printf ("Could not locate name: %s %s\n", name, acpi_ut_format_exception (status)); acpi_os_printf ("Could not locate name: %s %s\n", name, acpi_format_exception (status));
} }
acpi_ut_free (internal_path); ACPI_MEM_FREE (internal_path);
return (node); return (node);
} }
......
/******************************************************************************* /*******************************************************************************
* *
* Module Name: dbxface - AML Debugger external interfaces * Module Name: dbxface - AML Debugger external interfaces
* $Revision: 37 $ * $Revision: 41 $
* *
******************************************************************************/ ******************************************************************************/
...@@ -54,18 +54,20 @@ ...@@ -54,18 +54,20 @@
* *
******************************************************************************/ ******************************************************************************/
ACPI_STATUS acpi_status
acpi_db_single_step ( acpi_db_single_step (
ACPI_WALK_STATE *walk_state, acpi_walk_state *walk_state,
ACPI_PARSE_OBJECT *op, acpi_parse_object *op,
u8 op_type) u8 op_type)
{ {
ACPI_PARSE_OBJECT *next; acpi_parse_object *next;
ACPI_STATUS status = AE_OK; acpi_status status = AE_OK;
u32 original_debug_level; u32 original_debug_level;
ACPI_PARSE_OBJECT *display_op; acpi_parse_object *display_op;
FUNCTION_ENTRY ();
/* Is there a breakpoint set? */ /* Is there a breakpoint set? */
if (walk_state->method_breakpoint) { if (walk_state->method_breakpoint) {
...@@ -81,12 +83,10 @@ acpi_db_single_step ( ...@@ -81,12 +83,10 @@ acpi_db_single_step (
} }
} }
/* /*
* Check if this is an opcode that we are interested in -- * Check if this is an opcode that we are interested in --
* namely, opcodes that have arguments * namely, opcodes that have arguments
*/ */
if (op->opcode == AML_INT_NAMEDFIELD_OP) { if (op->opcode == AML_INT_NAMEDFIELD_OP) {
return (AE_OK); return (AE_OK);
} }
...@@ -109,16 +109,14 @@ acpi_db_single_step ( ...@@ -109,16 +109,14 @@ acpi_db_single_step (
} }
} }
/* /*
* Under certain debug conditions, display this opcode and its operands * Under certain debug conditions, display this opcode and its operands
*/ */
if ((acpi_gbl_db_output_to_file) ||
if ((output_to_file) ||
(acpi_gbl_cm_single_step) || (acpi_gbl_cm_single_step) ||
(acpi_dbg_level & TRACE_PARSE)) { (acpi_dbg_level & ACPI_LV_PARSE)) {
if ((output_to_file) || if ((acpi_gbl_db_output_to_file) ||
(acpi_dbg_level & TRACE_PARSE)) { (acpi_dbg_level & ACPI_LV_PARSE)) {
acpi_os_printf ("\n[Aml_debug] Next AML Opcode to execute:\n"); acpi_os_printf ("\n[Aml_debug] Next AML Opcode to execute:\n");
} }
...@@ -127,9 +125,8 @@ acpi_db_single_step ( ...@@ -127,9 +125,8 @@ acpi_db_single_step (
* and disable parser trace output for the duration of the display because * and disable parser trace output for the duration of the display because
* we don't want the extraneous debug output) * we don't want the extraneous debug output)
*/ */
original_debug_level = acpi_dbg_level; original_debug_level = acpi_dbg_level;
acpi_dbg_level &= ~(TRACE_PARSE | TRACE_FUNCTIONS); acpi_dbg_level &= ~(ACPI_LV_PARSE | ACPI_LV_FUNCTIONS);
next = op->next; next = op->next;
op->next = NULL; op->next = NULL;
...@@ -160,7 +157,6 @@ acpi_db_single_step ( ...@@ -160,7 +157,6 @@ acpi_db_single_step (
/* TBD */ /* TBD */
} }
/* Restore everything */ /* Restore everything */
op->next = next; op->next = next;
...@@ -168,7 +164,6 @@ acpi_db_single_step ( ...@@ -168,7 +164,6 @@ acpi_db_single_step (
acpi_dbg_level = original_debug_level; acpi_dbg_level = original_debug_level;
} }
/* If we are not single stepping, just continue executing the method */ /* If we are not single stepping, just continue executing the method */
if (!acpi_gbl_cm_single_step) { if (!acpi_gbl_cm_single_step) {
...@@ -180,7 +175,6 @@ acpi_db_single_step ( ...@@ -180,7 +175,6 @@ acpi_db_single_step (
* If we are executing a step-to-call command, * If we are executing a step-to-call command,
* Check if this is a method call. * Check if this is a method call.
*/ */
if (acpi_gbl_step_to_next_call) { if (acpi_gbl_step_to_next_call) {
if (op->opcode != AML_INT_METHODCALL_OP) { if (op->opcode != AML_INT_METHODCALL_OP) {
/* Not a method call, just keep executing */ /* Not a method call, just keep executing */
...@@ -198,7 +192,6 @@ acpi_db_single_step ( ...@@ -198,7 +192,6 @@ acpi_db_single_step (
* If the next opcode is a method call, we will "step over" it * If the next opcode is a method call, we will "step over" it
* by default. * by default.
*/ */
if (op->opcode == AML_INT_METHODCALL_OP) { if (op->opcode == AML_INT_METHODCALL_OP) {
acpi_gbl_cm_single_step = FALSE; /* No more single step while executing called method */ acpi_gbl_cm_single_step = FALSE; /* No more single step while executing called method */
...@@ -244,15 +237,14 @@ acpi_db_single_step ( ...@@ -244,15 +237,14 @@ acpi_db_single_step (
/* Get the user input line */ /* Get the user input line */
acpi_os_get_line (line_buf); acpi_os_get_line (acpi_gbl_db_line_buf);
} }
status = acpi_db_command_dispatch (line_buf, walk_state, op); status = acpi_db_command_dispatch (acpi_gbl_db_line_buf, walk_state, op);
} }
/* Acpi_ut_acquire_mutex (ACPI_MTX_NAMESPACE); */ /* Acpi_ut_acquire_mutex (ACPI_MTX_NAMESPACE); */
/* User commands complete, continue execution of the interrupted method */ /* User commands complete, continue execution of the interrupted method */
return (status); return (status);
...@@ -278,12 +270,12 @@ acpi_db_initialize (void) ...@@ -278,12 +270,12 @@ acpi_db_initialize (void)
/* Init globals */ /* Init globals */
buffer = acpi_os_allocate (BUFFER_SIZE); acpi_gbl_db_buffer = acpi_os_allocate (ACPI_DEBUG_BUFFER_SIZE);
/* Initial scope is the root */ /* Initial scope is the root */
scope_buf [0] = '\\'; acpi_gbl_db_scope_buf [0] = '\\';
scope_buf [1] = 0; acpi_gbl_db_scope_buf [1] = 0;
/* /*
...@@ -291,7 +283,6 @@ acpi_db_initialize (void) ...@@ -291,7 +283,6 @@ acpi_db_initialize (void)
* a separate thread so that the front end can be in another address * a separate thread so that the front end can be in another address
* space, environment, or even another machine. * space, environment, or even another machine.
*/ */
if (acpi_gbl_debugger_configuration & DEBUGGER_MULTI_THREADED) { if (acpi_gbl_debugger_configuration & DEBUGGER_MULTI_THREADED) {
/* These were created with one unit, grab it */ /* These were created with one unit, grab it */
...@@ -303,13 +294,12 @@ acpi_db_initialize (void) ...@@ -303,13 +294,12 @@ acpi_db_initialize (void)
acpi_os_queue_for_execution (0, acpi_db_execute_thread, NULL); acpi_os_queue_for_execution (0, acpi_db_execute_thread, NULL);
} }
if (!opt_verbose) { if (!acpi_gbl_db_opt_verbose) {
INDENT_STRING = " "; acpi_gbl_db_disasm_indent = " ";
opt_disasm = TRUE; acpi_gbl_db_opt_disasm = TRUE;
opt_stats = FALSE; acpi_gbl_db_opt_stats = FALSE;
} }
return (0); return (0);
} }
......
/****************************************************************************** /******************************************************************************
* *
* Module Name: dsfield - Dispatcher field routines * Module Name: dsfield - Dispatcher field routines
* $Revision: 41 $ * $Revision: 44 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -60,19 +60,22 @@ ...@@ -60,19 +60,22 @@
* *
******************************************************************************/ ******************************************************************************/
ACPI_STATUS acpi_status
acpi_ds_create_field ( acpi_ds_create_field (
ACPI_PARSE_OBJECT *op, acpi_parse_object *op,
ACPI_NAMESPACE_NODE *region_node, acpi_namespace_node *region_node,
ACPI_WALK_STATE *walk_state) acpi_walk_state *walk_state)
{ {
ACPI_STATUS status = AE_AML_ERROR; acpi_status status = AE_AML_ERROR;
ACPI_PARSE_OBJECT *arg; acpi_parse_object *arg;
ACPI_NAMESPACE_NODE *node; acpi_namespace_node *node;
u8 field_flags; u8 field_flags;
u32 field_bit_position = 0; u32 field_bit_position = 0;
FUNCTION_TRACE_PTR ("Ds_create_field", op);
/* First arg is the name of the parent Op_region */ /* First arg is the name of the parent Op_region */
arg = op->value.arg; arg = op->value.arg;
...@@ -81,7 +84,7 @@ acpi_ds_create_field ( ...@@ -81,7 +84,7 @@ acpi_ds_create_field (
ACPI_TYPE_REGION, IMODE_EXECUTE, ACPI_TYPE_REGION, IMODE_EXECUTE,
NS_SEARCH_PARENT, walk_state, &region_node); NS_SEARCH_PARENT, walk_state, &region_node);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
return (status); return_ACPI_STATUS (status);
} }
} }
...@@ -115,23 +118,22 @@ acpi_ds_create_field ( ...@@ -115,23 +118,22 @@ acpi_ds_create_field (
case AML_INT_NAMEDFIELD_OP: case AML_INT_NAMEDFIELD_OP:
status = acpi_ns_lookup (walk_state->scope_info, status = acpi_ns_lookup (walk_state->scope_info,
(NATIVE_CHAR *) &((ACPI_PARSE2_OBJECT *)arg)->name, (NATIVE_CHAR *) &((acpi_parse2_object *)arg)->name,
INTERNAL_TYPE_REGION_FIELD, IMODE_LOAD_PASS1, INTERNAL_TYPE_REGION_FIELD, IMODE_LOAD_PASS1,
NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
NULL, &node); NULL, &node);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
return (status); return_ACPI_STATUS (status);
} }
/* /*
* Initialize an object for the new Node that is on * Initialize an object for the new Node that is on
* the object stack * the object stack
*/ */
status = acpi_ex_prep_region_field_value (node, region_node, field_flags, status = acpi_ex_prep_region_field_value (node, region_node, field_flags,
field_bit_position, arg->value.size); field_bit_position, arg->value.size);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
return (status); return_ACPI_STATUS (status);
} }
/* Keep track of bit position for *next* field */ /* Keep track of bit position for *next* field */
...@@ -143,7 +145,7 @@ acpi_ds_create_field ( ...@@ -143,7 +145,7 @@ acpi_ds_create_field (
arg = arg->next; arg = arg->next;
} }
return (status); return_ACPI_STATUS (status);
} }
...@@ -161,21 +163,24 @@ acpi_ds_create_field ( ...@@ -161,21 +163,24 @@ acpi_ds_create_field (
* *
******************************************************************************/ ******************************************************************************/
ACPI_STATUS acpi_status
acpi_ds_create_bank_field ( acpi_ds_create_bank_field (
ACPI_PARSE_OBJECT *op, acpi_parse_object *op,
ACPI_NAMESPACE_NODE *region_node, acpi_namespace_node *region_node,
ACPI_WALK_STATE *walk_state) acpi_walk_state *walk_state)
{ {
ACPI_STATUS status = AE_AML_ERROR; acpi_status status = AE_AML_ERROR;
ACPI_PARSE_OBJECT *arg; acpi_parse_object *arg;
ACPI_NAMESPACE_NODE *register_node; acpi_namespace_node *register_node;
ACPI_NAMESPACE_NODE *node; acpi_namespace_node *node;
u32 bank_value; u32 bank_value;
u8 field_flags; u8 field_flags;
u32 field_bit_position = 0; u32 field_bit_position = 0;
FUNCTION_TRACE_PTR ("Ds_create_bank_field", op);
/* First arg is the name of the parent Op_region */ /* First arg is the name of the parent Op_region */
arg = op->value.arg; arg = op->value.arg;
...@@ -184,7 +189,7 @@ acpi_ds_create_bank_field ( ...@@ -184,7 +189,7 @@ acpi_ds_create_bank_field (
ACPI_TYPE_REGION, IMODE_EXECUTE, ACPI_TYPE_REGION, IMODE_EXECUTE,
NS_SEARCH_PARENT, walk_state, &region_node); NS_SEARCH_PARENT, walk_state, &region_node);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
return (status); return_ACPI_STATUS (status);
} }
} }
...@@ -197,19 +202,19 @@ acpi_ds_create_bank_field ( ...@@ -197,19 +202,19 @@ acpi_ds_create_bank_field (
NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
NULL, &register_node); NULL, &register_node);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
return (status); return_ACPI_STATUS (status);
} }
/* Third arg is the Bank_value */ /* Third arg is the Bank_value */
arg = arg->next; arg = arg->next;
bank_value = arg->value.integer; bank_value = arg->value.integer32;
/* Next arg is the field flags */ /* Next arg is the field flags */
arg = arg->next; arg = arg->next;
field_flags = (u8) arg->value.integer; field_flags = arg->value.integer8;
/* Each remaining arg is a Named Field */ /* Each remaining arg is a Named Field */
...@@ -236,24 +241,23 @@ acpi_ds_create_bank_field ( ...@@ -236,24 +241,23 @@ acpi_ds_create_bank_field (
case AML_INT_NAMEDFIELD_OP: case AML_INT_NAMEDFIELD_OP:
status = acpi_ns_lookup (walk_state->scope_info, status = acpi_ns_lookup (walk_state->scope_info,
(NATIVE_CHAR *) &((ACPI_PARSE2_OBJECT *)arg)->name, (NATIVE_CHAR *) &((acpi_parse2_object *)arg)->name,
INTERNAL_TYPE_REGION_FIELD, IMODE_LOAD_PASS1, INTERNAL_TYPE_REGION_FIELD, IMODE_LOAD_PASS1,
NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
NULL, &node); NULL, &node);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
return (status); return_ACPI_STATUS (status);
} }
/* /*
* Initialize an object for the new Node that is on * Initialize an object for the new Node that is on
* the object stack * the object stack
*/ */
status = acpi_ex_prep_bank_field_value (node, region_node, register_node, status = acpi_ex_prep_bank_field_value (node, region_node, register_node,
bank_value, field_flags, field_bit_position, bank_value, field_flags, field_bit_position,
arg->value.size); arg->value.size);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
return (status); return_ACPI_STATUS (status);
} }
/* Keep track of bit position for the *next* field */ /* Keep track of bit position for the *next* field */
...@@ -266,7 +270,7 @@ acpi_ds_create_bank_field ( ...@@ -266,7 +270,7 @@ acpi_ds_create_bank_field (
arg = arg->next; arg = arg->next;
} }
return (status); return_ACPI_STATUS (status);
} }
...@@ -284,21 +288,24 @@ acpi_ds_create_bank_field ( ...@@ -284,21 +288,24 @@ acpi_ds_create_bank_field (
* *
******************************************************************************/ ******************************************************************************/
ACPI_STATUS acpi_status
acpi_ds_create_index_field ( acpi_ds_create_index_field (
ACPI_PARSE_OBJECT *op, acpi_parse_object *op,
ACPI_NAMESPACE_NODE *region_node, acpi_namespace_node *region_node,
ACPI_WALK_STATE *walk_state) acpi_walk_state *walk_state)
{ {
ACPI_STATUS status; acpi_status status;
ACPI_PARSE_OBJECT *arg; acpi_parse_object *arg;
ACPI_NAMESPACE_NODE *node; acpi_namespace_node *node;
ACPI_NAMESPACE_NODE *index_register_node; acpi_namespace_node *index_register_node;
ACPI_NAMESPACE_NODE *data_register_node; acpi_namespace_node *data_register_node;
u8 field_flags; u8 field_flags;
u32 field_bit_position = 0; u32 field_bit_position = 0;
FUNCTION_TRACE_PTR ("Ds_create_index_field", op);
arg = op->value.arg; arg = op->value.arg;
/* First arg is the name of the Index register */ /* First arg is the name of the Index register */
...@@ -308,7 +315,7 @@ acpi_ds_create_index_field ( ...@@ -308,7 +315,7 @@ acpi_ds_create_index_field (
NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
NULL, &index_register_node); NULL, &index_register_node);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
return (status); return_ACPI_STATUS (status);
} }
/* Second arg is the data register */ /* Second arg is the data register */
...@@ -320,7 +327,7 @@ acpi_ds_create_index_field ( ...@@ -320,7 +327,7 @@ acpi_ds_create_index_field (
NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
NULL, &data_register_node); NULL, &data_register_node);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
return (status); return_ACPI_STATUS (status);
} }
...@@ -355,24 +362,23 @@ acpi_ds_create_index_field ( ...@@ -355,24 +362,23 @@ acpi_ds_create_index_field (
case AML_INT_NAMEDFIELD_OP: case AML_INT_NAMEDFIELD_OP:
status = acpi_ns_lookup (walk_state->scope_info, status = acpi_ns_lookup (walk_state->scope_info,
(NATIVE_CHAR *) &((ACPI_PARSE2_OBJECT *)arg)->name, (NATIVE_CHAR *) &((acpi_parse2_object *)arg)->name,
INTERNAL_TYPE_INDEX_FIELD, IMODE_LOAD_PASS1, INTERNAL_TYPE_INDEX_FIELD, IMODE_LOAD_PASS1,
NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
NULL, &node); NULL, &node);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
return (status); return_ACPI_STATUS (status);
} }
/* /*
* Initialize an object for the new Node that is on * Initialize an object for the new Node that is on
* the object stack * the object stack
*/ */
status = acpi_ex_prep_index_field_value (node, index_register_node, status = acpi_ex_prep_index_field_value (node, index_register_node,
data_register_node, field_flags, data_register_node, field_flags,
field_bit_position, arg->value.size); field_bit_position, arg->value.size);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
return (status); return_ACPI_STATUS (status);
} }
/* Keep track of bit position for the *next* field */ /* Keep track of bit position for the *next* field */
...@@ -383,6 +389,8 @@ acpi_ds_create_index_field ( ...@@ -383,6 +389,8 @@ acpi_ds_create_index_field (
default: default:
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Invalid opcode in field list: %X\n",
arg->opcode));
status = AE_AML_ERROR; status = AE_AML_ERROR;
break; break;
} }
...@@ -390,7 +398,7 @@ acpi_ds_create_index_field ( ...@@ -390,7 +398,7 @@ acpi_ds_create_index_field (
arg = arg->next; arg = arg->next;
} }
return (status); return_ACPI_STATUS (status);
} }
/****************************************************************************** /******************************************************************************
* *
* Module Name: dsmethod - Parser/Interpreter interface - control method parsing * Module Name: dsmethod - Parser/Interpreter interface - control method parsing
* $Revision: 63 $ * $Revision: 65 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -56,30 +56,36 @@ ...@@ -56,30 +56,36 @@
* *
******************************************************************************/ ******************************************************************************/
ACPI_STATUS acpi_status
acpi_ds_parse_method ( acpi_ds_parse_method (
ACPI_HANDLE obj_handle) acpi_handle obj_handle)
{ {
ACPI_STATUS status; acpi_status status;
ACPI_OPERAND_OBJECT *obj_desc; acpi_operand_object *obj_desc;
ACPI_PARSE_OBJECT *op; acpi_parse_object *op;
ACPI_NAMESPACE_NODE *node; acpi_namespace_node *node;
ACPI_OWNER_ID owner_id; acpi_owner_id owner_id;
FUNCTION_TRACE_PTR ("Ds_parse_method", obj_handle);
/* Parameter Validation */ /* Parameter Validation */
if (!obj_handle) { if (!obj_handle) {
return (AE_NULL_ENTRY); return_ACPI_STATUS (AE_NULL_ENTRY);
} }
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** Parsing [%4.4s] **** Named_obj=%p\n",
&((acpi_namespace_node *)obj_handle)->name, obj_handle));
/* Extract the method object from the method Node */ /* Extract the method object from the method Node */
node = (ACPI_NAMESPACE_NODE *) obj_handle; node = (acpi_namespace_node *) obj_handle;
obj_desc = node->object; obj_desc = node->object;
if (!obj_desc) { if (!obj_desc) {
return (AE_NULL_OBJECT); return_ACPI_STATUS (AE_NULL_OBJECT);
} }
/* Create a mutex for the method if there is a concurrency limit */ /* Create a mutex for the method if there is a concurrency limit */
...@@ -90,7 +96,7 @@ acpi_ds_parse_method ( ...@@ -90,7 +96,7 @@ acpi_ds_parse_method (
obj_desc->method.concurrency, obj_desc->method.concurrency,
&obj_desc->method.semaphore); &obj_desc->method.semaphore);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
return (status); return_ACPI_STATUS (status);
} }
} }
...@@ -100,7 +106,7 @@ acpi_ds_parse_method ( ...@@ -100,7 +106,7 @@ acpi_ds_parse_method (
*/ */
op = acpi_ps_alloc_op (AML_METHOD_OP); op = acpi_ps_alloc_op (AML_METHOD_OP);
if (!op) { if (!op) {
return (AE_NO_MEMORY); return_ACPI_STATUS (AE_NO_MEMORY);
} }
/* Init new op with the method name and pointer back to the Node */ /* Init new op with the method name and pointer back to the Node */
...@@ -126,7 +132,7 @@ acpi_ds_parse_method ( ...@@ -126,7 +132,7 @@ acpi_ds_parse_method (
acpi_ds_load1_begin_op, acpi_ds_load1_end_op); acpi_ds_load1_begin_op, acpi_ds_load1_end_op);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
return (status); return_ACPI_STATUS (status);
} }
/* Get a new Owner_id for objects created by this method */ /* Get a new Owner_id for objects created by this method */
...@@ -134,12 +140,15 @@ acpi_ds_parse_method ( ...@@ -134,12 +140,15 @@ acpi_ds_parse_method (
owner_id = acpi_ut_allocate_owner_id (OWNER_TYPE_METHOD); owner_id = acpi_ut_allocate_owner_id (OWNER_TYPE_METHOD);
obj_desc->method.owning_id = owner_id; obj_desc->method.owning_id = owner_id;
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** [%4.4s] Parsed **** Named_obj=%p Op=%p\n",
&((acpi_namespace_node *)obj_handle)->name, obj_handle, op));
/* Install the parsed tree in the method object */ /* Install the parsed tree in the method object */
/* TBD: [Restructure] Obsolete field? */ /* TBD: [Restructure] Obsolete field? */
acpi_ps_delete_parse_tree (op); acpi_ps_delete_parse_tree (op);
return (status); return_ACPI_STATUS (status);
} }
...@@ -161,17 +170,20 @@ acpi_ds_parse_method ( ...@@ -161,17 +170,20 @@ acpi_ds_parse_method (
* *
******************************************************************************/ ******************************************************************************/
ACPI_STATUS acpi_status
acpi_ds_begin_method_execution ( acpi_ds_begin_method_execution (
ACPI_NAMESPACE_NODE *method_node, acpi_namespace_node *method_node,
ACPI_OPERAND_OBJECT *obj_desc, acpi_operand_object *obj_desc,
ACPI_NAMESPACE_NODE *calling_method_node) acpi_namespace_node *calling_method_node)
{ {
ACPI_STATUS status = AE_OK; acpi_status status = AE_OK;
FUNCTION_TRACE_PTR ("Ds_begin_method_execution", method_node);
if (!method_node) { if (!method_node) {
return (AE_NULL_ENTRY); return_ACPI_STATUS (AE_NULL_ENTRY);
} }
...@@ -190,7 +202,7 @@ acpi_ds_begin_method_execution ( ...@@ -190,7 +202,7 @@ acpi_ds_begin_method_execution (
*/ */
if (method_node == calling_method_node) { if (method_node == calling_method_node) {
if (obj_desc->method.thread_count >= obj_desc->method.concurrency) { if (obj_desc->method.thread_count >= obj_desc->method.concurrency) {
return (AE_AML_METHOD_LIMIT); return_ACPI_STATUS (AE_AML_METHOD_LIMIT);
} }
} }
...@@ -209,7 +221,7 @@ acpi_ds_begin_method_execution ( ...@@ -209,7 +221,7 @@ acpi_ds_begin_method_execution (
*/ */
obj_desc->method.thread_count++; obj_desc->method.thread_count++;
return (status); return_ACPI_STATUS (status);
} }
...@@ -226,31 +238,36 @@ acpi_ds_begin_method_execution ( ...@@ -226,31 +238,36 @@ acpi_ds_begin_method_execution (
* *
******************************************************************************/ ******************************************************************************/
ACPI_STATUS acpi_status
acpi_ds_call_control_method ( acpi_ds_call_control_method (
ACPI_WALK_LIST *walk_list, acpi_walk_list *walk_list,
ACPI_WALK_STATE *this_walk_state, acpi_walk_state *this_walk_state,
ACPI_PARSE_OBJECT *op) acpi_parse_object *op)
{ {
ACPI_STATUS status; acpi_status status;
ACPI_NAMESPACE_NODE *method_node; acpi_namespace_node *method_node;
ACPI_OPERAND_OBJECT *obj_desc; acpi_operand_object *obj_desc;
ACPI_WALK_STATE *next_walk_state; acpi_walk_state *next_walk_state;
ACPI_PARSE_STATE *parser_state; acpi_parse_state *parser_state;
u32 i; u32 i;
FUNCTION_TRACE_PTR ("Ds_call_control_method", this_walk_state);
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Execute method %p, currentstate=%p\n",
this_walk_state->prev_op, this_walk_state));
/* /*
* Get the namespace entry for the control method we are about to call * Get the namespace entry for the control method we are about to call
*/ */
method_node = this_walk_state->method_call_node; method_node = this_walk_state->method_call_node;
if (!method_node) { if (!method_node) {
return (AE_NULL_ENTRY); return_ACPI_STATUS (AE_NULL_ENTRY);
} }
obj_desc = acpi_ns_get_attached_object (method_node); obj_desc = acpi_ns_get_attached_object (method_node);
if (!obj_desc) { if (!obj_desc) {
return (AE_NULL_OBJECT); return_ACPI_STATUS (AE_NULL_OBJECT);
} }
...@@ -259,7 +276,7 @@ acpi_ds_call_control_method ( ...@@ -259,7 +276,7 @@ acpi_ds_call_control_method (
status = acpi_ds_begin_method_execution (method_node, obj_desc, status = acpi_ds_begin_method_execution (method_node, obj_desc,
this_walk_state->method_node); this_walk_state->method_node);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
return (status); return_ACPI_STATUS (status);
} }
/* Create and initialize a new parser state */ /* Create and initialize a new parser state */
...@@ -267,7 +284,7 @@ acpi_ds_call_control_method ( ...@@ -267,7 +284,7 @@ acpi_ds_call_control_method (
parser_state = acpi_ps_create_state (obj_desc->method.pcode, parser_state = acpi_ps_create_state (obj_desc->method.pcode,
obj_desc->method.pcode_length); obj_desc->method.pcode_length);
if (!parser_state) { if (!parser_state) {
return (AE_NO_MEMORY); return_ACPI_STATUS (AE_NO_MEMORY);
} }
acpi_ps_init_scope (parser_state, NULL); acpi_ps_init_scope (parser_state, NULL);
...@@ -281,7 +298,7 @@ acpi_ds_call_control_method ( ...@@ -281,7 +298,7 @@ acpi_ds_call_control_method (
if (!next_walk_state) { if (!next_walk_state) {
/* TBD: delete parser state */ /* TBD: delete parser state */
return (AE_NO_MEMORY); return_ACPI_STATUS (AE_NO_MEMORY);
} }
next_walk_state->walk_type = WALK_METHOD; next_walk_state->walk_type = WALK_METHOD;
...@@ -323,7 +340,7 @@ acpi_ds_call_control_method ( ...@@ -323,7 +340,7 @@ acpi_ds_call_control_method (
op = acpi_ps_alloc_op (AML_SCOPE_OP); op = acpi_ps_alloc_op (AML_SCOPE_OP);
if (!op) { if (!op) {
return (AE_NO_MEMORY); return_ACPI_STATUS (AE_NO_MEMORY);
} }
status = acpi_ps_parse_aml (op, obj_desc->method.pcode, status = acpi_ps_parse_aml (op, obj_desc->method.pcode,
...@@ -348,7 +365,10 @@ acpi_ds_call_control_method ( ...@@ -348,7 +365,10 @@ acpi_ds_call_control_method (
this_walk_state->num_operands = 0; this_walk_state->num_operands = 0;
return (AE_OK); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Starting nested execution, newstate=%p\n",
next_walk_state));
return_ACPI_STATUS (AE_OK);
/* On error, we must delete the new walk state */ /* On error, we must delete the new walk state */
...@@ -356,7 +376,7 @@ acpi_ds_call_control_method ( ...@@ -356,7 +376,7 @@ acpi_ds_call_control_method (
cleanup: cleanup:
acpi_ds_terminate_control_method (next_walk_state); acpi_ds_terminate_control_method (next_walk_state);
acpi_ds_delete_walk_state (next_walk_state); acpi_ds_delete_walk_state (next_walk_state);
return (status); return_ACPI_STATUS (status);
} }
...@@ -374,12 +394,15 @@ acpi_ds_call_control_method ( ...@@ -374,12 +394,15 @@ acpi_ds_call_control_method (
* *
******************************************************************************/ ******************************************************************************/
ACPI_STATUS acpi_status
acpi_ds_restart_control_method ( acpi_ds_restart_control_method (
ACPI_WALK_STATE *walk_state, acpi_walk_state *walk_state,
ACPI_OPERAND_OBJECT *return_desc) acpi_operand_object *return_desc)
{ {
ACPI_STATUS status; acpi_status status;
FUNCTION_TRACE_PTR ("Ds_restart_control_method", walk_state);
if (return_desc) { if (return_desc) {
...@@ -391,7 +414,7 @@ acpi_ds_restart_control_method ( ...@@ -391,7 +414,7 @@ acpi_ds_restart_control_method (
status = acpi_ds_result_push (return_desc, walk_state); status = acpi_ds_result_push (return_desc, walk_state);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE (status)) {
acpi_ut_remove_reference (return_desc); acpi_ut_remove_reference (return_desc);
return (status); return_ACPI_STATUS (status);
} }
} }
...@@ -405,8 +428,13 @@ acpi_ds_restart_control_method ( ...@@ -405,8 +428,13 @@ 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 (AE_OK);
return_ACPI_STATUS (AE_OK);
} }
...@@ -424,19 +452,22 @@ acpi_ds_restart_control_method ( ...@@ -424,19 +452,22 @@ acpi_ds_restart_control_method (
* *
******************************************************************************/ ******************************************************************************/
ACPI_STATUS acpi_status
acpi_ds_terminate_control_method ( acpi_ds_terminate_control_method (
ACPI_WALK_STATE *walk_state) acpi_walk_state *walk_state)
{ {
ACPI_OPERAND_OBJECT *obj_desc; acpi_operand_object *obj_desc;
ACPI_NAMESPACE_NODE *method_node; acpi_namespace_node *method_node;
FUNCTION_TRACE_PTR ("Ds_terminate_control_method", walk_state);
/* The method object should be stored in the walk state */ /* The method object should be stored in the walk state */
obj_desc = walk_state->method_desc; obj_desc = walk_state->method_desc;
if (!obj_desc) { if (!obj_desc) {
return (AE_OK); return_ACPI_STATUS (AE_OK);
} }
/* Delete all arguments and locals */ /* Delete all arguments and locals */
...@@ -488,7 +519,7 @@ acpi_ds_terminate_control_method ( ...@@ -488,7 +519,7 @@ acpi_ds_terminate_control_method (
} }
acpi_ut_release_mutex (ACPI_MTX_PARSER); acpi_ut_release_mutex (ACPI_MTX_PARSER);
return (AE_OK); return_ACPI_STATUS (AE_OK);
} }
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -42,11 +42,6 @@ ...@@ -42,11 +42,6 @@
#include "acpi.h" #include "acpi.h"
#include "driver.h" #include "driver.h"
#ifdef CONFIG_ACPI_KERNEL_CONFIG
#include <asm/efi.h>
#define ACPI_USE_EFI
#endif
#define _COMPONENT OS_DEPENDENT #define _COMPONENT OS_DEPENDENT
MODULE_NAME ("driver") MODULE_NAME ("driver")
...@@ -61,9 +56,8 @@ static int acpi_disabled = 0; ...@@ -61,9 +56,8 @@ static int acpi_disabled = 0;
int int
acpi_init(void) acpi_init(void)
{ {
ACPI_PHYSICAL_ADDRESS rsdp_phys; acpi_buffer buffer;
ACPI_BUFFER buffer; acpi_system_info sys_info;
ACPI_SYSTEM_INFO sys_info;
if (PM_IS_ACTIVE()) { if (PM_IS_ACTIVE()) {
printk(KERN_NOTICE "ACPI: APM is already active, exiting\n"); printk(KERN_NOTICE "ACPI: APM is already active, exiting\n");
...@@ -81,18 +75,8 @@ acpi_init(void) ...@@ -81,18 +75,8 @@ acpi_init(void)
return -ENODEV; return -ENODEV;
} }
#ifndef ACPI_USE_EFI
if (!ACPI_SUCCESS(acpi_find_root_pointer(&rsdp_phys))) {
printk(KERN_ERR "ACPI: System description tables not found\n");
return -ENODEV;
}
#else
rsdp_phys = efi.acpi;
#endif
/* from this point on, on error we must call acpi_terminate() */ /* from this point on, on error we must call acpi_terminate() */
if (!ACPI_SUCCESS(acpi_load_tables())) {
if (!ACPI_SUCCESS(acpi_load_tables(rsdp_phys))) {
printk(KERN_ERR "ACPI: System description table load failed\n"); printk(KERN_ERR "ACPI: System description table load failed\n");
acpi_terminate(); acpi_terminate();
return -ENODEV; return -ENODEV;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/****************************************************************************** /******************************************************************************
* *
* Name: acconfig.h - Global configuration constants * Name: acconfig.h - Global configuration constants
* $Revision: 65 $ * $Revision: 69 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
/* Version string */ /* Version string */
#define ACPI_CA_VERSION 0x20010615 #define ACPI_CA_VERSION 0x20010831
/* Maximum objects in the various object caches */ /* Maximum objects in the various object caches */
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
#define MAX_PARSE_CACHE_DEPTH 96 /* Parse tree objects */ #define MAX_PARSE_CACHE_DEPTH 96 /* Parse tree objects */
#define MAX_EXTPARSE_CACHE_DEPTH 64 /* Parse tree objects */ #define MAX_EXTPARSE_CACHE_DEPTH 64 /* Parse tree objects */
#define MAX_OBJECT_CACHE_DEPTH 64 /* Interpreter operand objects */ #define MAX_OBJECT_CACHE_DEPTH 64 /* Interpreter operand objects */
#define MAX_WALK_CACHE_DEPTH 2 /* Objects for parse tree walks (method execution) */ #define MAX_WALK_CACHE_DEPTH 4 /* Objects for parse tree walks (method execution) */
/* String size constants */ /* String size constants */
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/****************************************************************************** /******************************************************************************
* *
* Name: acenv.h - Generation environment specific items * Name: acenv.h - Generation environment specific items
* $Revision: 75 $ * $Revision: 76 $
* *
*****************************************************************************/ *****************************************************************************/
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
*/ */
#ifdef ACPI_DEBUG #ifdef ACPI_DEBUG
#ifndef _IA16 #ifndef _IA16
#define ACPI_DEBUG_TRACK_ALLOCATIONS #define ACPI_DBG_TRACK_ALLOCATIONS
#endif #endif
#endif #endif
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment