From f3d2e7865c816258c699ff965768e46b50d536d3 Mon Sep 17 00:00:00 2001 From: Bob Moore Date: Fri, 2 Feb 2007 19:48:18 +0300 Subject: ACPICA: Implement simplified Table Manager The Table Manager component has been completely redesigned and reimplemented. The new design is much simpler, and reduces the overall code and data size of the kernel-resident ACPICA by approximately 5%. Also, it is now possible to obtain the ACPI tables very early during kernel initialization, even before dynamic memory management is initialized. Signed-off-by: Alexey Starikovskiy Signed-off-by: Len Brown --- drivers/acpi/utilities/utinit.c | 72 ++++++++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 30 deletions(-) (limited to 'drivers/acpi/utilities/utinit.c') diff --git a/drivers/acpi/utilities/utinit.c b/drivers/acpi/utilities/utinit.c index ff76055eb7d6..2d2c4a3aeaae 100644 --- a/drivers/acpi/utilities/utinit.c +++ b/drivers/acpi/utilities/utinit.c @@ -44,6 +44,7 @@ #include #include #include +#include #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME("utinit") @@ -73,8 +74,8 @@ acpi_ut_fadt_register_error(char *register_name, u32 value, u8 offset) { ACPI_WARNING((AE_INFO, - "Invalid FADT value %s=%X at offset %X FADT=%p", - register_name, value, offset, acpi_gbl_FADT)); + "Invalid FADT value %s=%X at offset %X in FADT=%p", + register_name, value, offset, &acpi_gbl_FADT)); } /****************************************************************************** @@ -96,62 +97,70 @@ acpi_status acpi_ut_validate_fadt(void) * Verify Fixed ACPI Description Table fields, * but don't abort on any problems, just display error */ - if (acpi_gbl_FADT->pm1_evt_len < 4) { + if (acpi_gbl_FADT.pm1_event_length < 4) { acpi_ut_fadt_register_error("PM1_EVT_LEN", - (u32) acpi_gbl_FADT->pm1_evt_len, - ACPI_FADT_OFFSET(pm1_evt_len)); + (u32) acpi_gbl_FADT. + pm1_event_length, + ACPI_FADT_OFFSET(pm1_event_length)); } - if (!acpi_gbl_FADT->pm1_cnt_len) { + if (!acpi_gbl_FADT.pm1_control_length) { acpi_ut_fadt_register_error("PM1_CNT_LEN", 0, - ACPI_FADT_OFFSET(pm1_cnt_len)); + ACPI_FADT_OFFSET + (pm1_control_length)); } - if (!acpi_gbl_FADT->xpm1a_evt_blk.address) { + if (!acpi_gbl_FADT.xpm1a_event_block.address) { acpi_ut_fadt_register_error("X_PM1a_EVT_BLK", 0, - ACPI_FADT_OFFSET(xpm1a_evt_blk. + ACPI_FADT_OFFSET(xpm1a_event_block. address)); } - if (!acpi_gbl_FADT->xpm1a_cnt_blk.address) { + if (!acpi_gbl_FADT.xpm1a_control_block.address) { acpi_ut_fadt_register_error("X_PM1a_CNT_BLK", 0, - ACPI_FADT_OFFSET(xpm1a_cnt_blk. - address)); + ACPI_FADT_OFFSET + (xpm1a_control_block.address)); } - if (!acpi_gbl_FADT->xpm_tmr_blk.address) { + if (!acpi_gbl_FADT.xpm_timer_block.address) { acpi_ut_fadt_register_error("X_PM_TMR_BLK", 0, - ACPI_FADT_OFFSET(xpm_tmr_blk. + ACPI_FADT_OFFSET(xpm_timer_block. address)); } - if ((acpi_gbl_FADT->xpm2_cnt_blk.address && - !acpi_gbl_FADT->pm2_cnt_len)) { + if ((acpi_gbl_FADT.xpm2_control_block.address && + !acpi_gbl_FADT.pm2_control_length)) { acpi_ut_fadt_register_error("PM2_CNT_LEN", - (u32) acpi_gbl_FADT->pm2_cnt_len, - ACPI_FADT_OFFSET(pm2_cnt_len)); + (u32) acpi_gbl_FADT. + pm2_control_length, + ACPI_FADT_OFFSET + (pm2_control_length)); } - if (acpi_gbl_FADT->pm_tm_len < 4) { + if (acpi_gbl_FADT.pm_timer_length < 4) { acpi_ut_fadt_register_error("PM_TM_LEN", - (u32) acpi_gbl_FADT->pm_tm_len, - ACPI_FADT_OFFSET(pm_tm_len)); + (u32) acpi_gbl_FADT.pm_timer_length, + ACPI_FADT_OFFSET(pm_timer_length)); } /* Length of GPE blocks must be a multiple of 2 */ - if (acpi_gbl_FADT->xgpe0_blk.address && - (acpi_gbl_FADT->gpe0_blk_len & 1)) { + if (acpi_gbl_FADT.xgpe0_block.address && + (acpi_gbl_FADT.gpe0_block_length & 1)) { acpi_ut_fadt_register_error("(x)GPE0_BLK_LEN", - (u32) acpi_gbl_FADT->gpe0_blk_len, - ACPI_FADT_OFFSET(gpe0_blk_len)); + (u32) acpi_gbl_FADT. + gpe0_block_length, + ACPI_FADT_OFFSET + (gpe0_block_length)); } - if (acpi_gbl_FADT->xgpe1_blk.address && - (acpi_gbl_FADT->gpe1_blk_len & 1)) { + if (acpi_gbl_FADT.xgpe1_block.address && + (acpi_gbl_FADT.gpe1_block_length & 1)) { acpi_ut_fadt_register_error("(x)GPE1_BLK_LEN", - (u32) acpi_gbl_FADT->gpe1_blk_len, - ACPI_FADT_OFFSET(gpe1_blk_len)); + (u32) acpi_gbl_FADT. + gpe1_block_length, + ACPI_FADT_OFFSET + (gpe1_block_length)); } return (AE_OK); @@ -178,7 +187,6 @@ static void acpi_ut_terminate(void) ACPI_FUNCTION_TRACE(ut_terminate); - /* Free global tables, etc. */ /* Free global GPE blocks and related info structures */ gpe_xrupt_info = acpi_gbl_gpe_xrupt_list_head; @@ -239,6 +247,10 @@ void acpi_ut_subsystem_shutdown(void) acpi_ns_terminate(); + /* Delete the ACPI tables */ + + acpi_tb_terminate(); + /* Close the globals */ acpi_ut_terminate(); -- cgit v1.2.2 From b89b71a0019660d73e3c9671205c49e443d7085c Mon Sep 17 00:00:00 2001 From: Bob Moore Date: Fri, 2 Feb 2007 19:48:20 +0300 Subject: ACPICA: Cleanup of FADT verification function. Removed offset display, not needed. Signed-off-by: Alexey Starikovskiy Signed-off-by: Len Brown --- drivers/acpi/utilities/utinit.c | 65 +++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 42 deletions(-) (limited to 'drivers/acpi/utilities/utinit.c') diff --git a/drivers/acpi/utilities/utinit.c b/drivers/acpi/utilities/utinit.c index 2d2c4a3aeaae..5079f1943a3b 100644 --- a/drivers/acpi/utilities/utinit.c +++ b/drivers/acpi/utilities/utinit.c @@ -50,8 +50,7 @@ ACPI_MODULE_NAME("utinit") /* Local prototypes */ -static void -acpi_ut_fadt_register_error(char *register_name, u32 value, u8 offset); +static void acpi_ut_fadt_register_error(char *register_name, u32 value); static void acpi_ut_terminate(void); @@ -61,21 +60,18 @@ static void acpi_ut_terminate(void); * * PARAMETERS: register_name - Pointer to string identifying register * Value - Actual register contents value - * Offset - Byte offset in the FADT * - * RETURN: AE_BAD_VALUE + * RETURN: None * * DESCRIPTION: Display failure message * ******************************************************************************/ -static void -acpi_ut_fadt_register_error(char *register_name, u32 value, u8 offset) +static void acpi_ut_fadt_register_error(char *register_name, u32 value) { - ACPI_WARNING((AE_INFO, - "Invalid FADT value %s=%X at offset %X in FADT=%p", - register_name, value, offset, &acpi_gbl_FADT)); + ACPI_WARNING((AE_INFO, "Invalid FADT value %s = %X", + register_name, value)); } /****************************************************************************** @@ -98,69 +94,54 @@ acpi_status acpi_ut_validate_fadt(void) * but don't abort on any problems, just display error */ if (acpi_gbl_FADT.pm1_event_length < 4) { - acpi_ut_fadt_register_error("PM1_EVT_LEN", + acpi_ut_fadt_register_error("Pm1EventLength", (u32) acpi_gbl_FADT. - pm1_event_length, - ACPI_FADT_OFFSET(pm1_event_length)); + pm1_event_length); + } + + if (acpi_gbl_FADT.pm_timer_length < 4) { + acpi_ut_fadt_register_error("PmTimerLength", + (u32) acpi_gbl_FADT. + pm_timer_length); } if (!acpi_gbl_FADT.pm1_control_length) { - acpi_ut_fadt_register_error("PM1_CNT_LEN", 0, - ACPI_FADT_OFFSET - (pm1_control_length)); + acpi_ut_fadt_register_error("Pm1ControlLength", 0); } if (!acpi_gbl_FADT.xpm1a_event_block.address) { - acpi_ut_fadt_register_error("X_PM1a_EVT_BLK", 0, - ACPI_FADT_OFFSET(xpm1a_event_block. - address)); + acpi_ut_fadt_register_error("XPm1aEventBlock.Address", 0); } if (!acpi_gbl_FADT.xpm1a_control_block.address) { - acpi_ut_fadt_register_error("X_PM1a_CNT_BLK", 0, - ACPI_FADT_OFFSET - (xpm1a_control_block.address)); + acpi_ut_fadt_register_error("XPm1aControlBlock.Address", 0); } if (!acpi_gbl_FADT.xpm_timer_block.address) { - acpi_ut_fadt_register_error("X_PM_TMR_BLK", 0, - ACPI_FADT_OFFSET(xpm_timer_block. - address)); + acpi_ut_fadt_register_error("XPmTimerBlock.Address", 0); } if ((acpi_gbl_FADT.xpm2_control_block.address && !acpi_gbl_FADT.pm2_control_length)) { - acpi_ut_fadt_register_error("PM2_CNT_LEN", + acpi_ut_fadt_register_error("Pm2ControlLength", (u32) acpi_gbl_FADT. - pm2_control_length, - ACPI_FADT_OFFSET - (pm2_control_length)); - } - - if (acpi_gbl_FADT.pm_timer_length < 4) { - acpi_ut_fadt_register_error("PM_TM_LEN", - (u32) acpi_gbl_FADT.pm_timer_length, - ACPI_FADT_OFFSET(pm_timer_length)); + pm2_control_length); } /* Length of GPE blocks must be a multiple of 2 */ if (acpi_gbl_FADT.xgpe0_block.address && (acpi_gbl_FADT.gpe0_block_length & 1)) { - acpi_ut_fadt_register_error("(x)GPE0_BLK_LEN", + acpi_ut_fadt_register_error("Gpe0BlockLength", (u32) acpi_gbl_FADT. - gpe0_block_length, - ACPI_FADT_OFFSET - (gpe0_block_length)); + gpe0_block_length); } if (acpi_gbl_FADT.xgpe1_block.address && (acpi_gbl_FADT.gpe1_block_length & 1)) { - acpi_ut_fadt_register_error("(x)GPE1_BLK_LEN", + acpi_ut_fadt_register_error("Gpe1BlockLength", (u32) acpi_gbl_FADT. - gpe1_block_length, - ACPI_FADT_OFFSET - (gpe1_block_length)); + gpe1_block_length); } return (AE_OK); -- cgit v1.2.2 From 765ec20180fb70b4ee9d730167b2a0b76879f791 Mon Sep 17 00:00:00 2001 From: Bob Moore Date: Fri, 2 Feb 2007 19:48:20 +0300 Subject: ACPICA: Delete stale FADT functions outside tbfadt.c. Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the acpi_hw_initialize function - the FADT registers are now validated when the table is loaded. Signed-off-by: Alexey Starikovskiy Signed-off-by: Len Brown --- drivers/acpi/utilities/utinit.c | 95 ----------------------------------------- 1 file changed, 95 deletions(-) (limited to 'drivers/acpi/utilities/utinit.c') diff --git a/drivers/acpi/utilities/utinit.c b/drivers/acpi/utilities/utinit.c index 5079f1943a3b..303bde70fdb6 100644 --- a/drivers/acpi/utilities/utinit.c +++ b/drivers/acpi/utilities/utinit.c @@ -50,103 +50,8 @@ ACPI_MODULE_NAME("utinit") /* Local prototypes */ -static void acpi_ut_fadt_register_error(char *register_name, u32 value); - static void acpi_ut_terminate(void); -/******************************************************************************* - * - * FUNCTION: acpi_ut_fadt_register_error - * - * PARAMETERS: register_name - Pointer to string identifying register - * Value - Actual register contents value - * - * RETURN: None - * - * DESCRIPTION: Display failure message - * - ******************************************************************************/ - -static void acpi_ut_fadt_register_error(char *register_name, u32 value) -{ - - ACPI_WARNING((AE_INFO, "Invalid FADT value %s = %X", - register_name, value)); -} - -/****************************************************************************** - * - * FUNCTION: acpi_ut_validate_fadt - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Validate various ACPI registers in the FADT - * - ******************************************************************************/ - -acpi_status acpi_ut_validate_fadt(void) -{ - - /* - * Verify Fixed ACPI Description Table fields, - * but don't abort on any problems, just display error - */ - if (acpi_gbl_FADT.pm1_event_length < 4) { - acpi_ut_fadt_register_error("Pm1EventLength", - (u32) acpi_gbl_FADT. - pm1_event_length); - } - - if (acpi_gbl_FADT.pm_timer_length < 4) { - acpi_ut_fadt_register_error("PmTimerLength", - (u32) acpi_gbl_FADT. - pm_timer_length); - } - - if (!acpi_gbl_FADT.pm1_control_length) { - acpi_ut_fadt_register_error("Pm1ControlLength", 0); - } - - if (!acpi_gbl_FADT.xpm1a_event_block.address) { - acpi_ut_fadt_register_error("XPm1aEventBlock.Address", 0); - } - - if (!acpi_gbl_FADT.xpm1a_control_block.address) { - acpi_ut_fadt_register_error("XPm1aControlBlock.Address", 0); - } - - if (!acpi_gbl_FADT.xpm_timer_block.address) { - acpi_ut_fadt_register_error("XPmTimerBlock.Address", 0); - } - - if ((acpi_gbl_FADT.xpm2_control_block.address && - !acpi_gbl_FADT.pm2_control_length)) { - acpi_ut_fadt_register_error("Pm2ControlLength", - (u32) acpi_gbl_FADT. - pm2_control_length); - } - - /* Length of GPE blocks must be a multiple of 2 */ - - if (acpi_gbl_FADT.xgpe0_block.address && - (acpi_gbl_FADT.gpe0_block_length & 1)) { - acpi_ut_fadt_register_error("Gpe0BlockLength", - (u32) acpi_gbl_FADT. - gpe0_block_length); - } - - if (acpi_gbl_FADT.xgpe1_block.address && - (acpi_gbl_FADT.gpe1_block_length & 1)) { - acpi_ut_fadt_register_error("Gpe1BlockLength", - (u32) acpi_gbl_FADT. - gpe1_block_length); - } - - return (AE_OK); -} - /****************************************************************************** * * FUNCTION: acpi_ut_terminate -- cgit v1.2.2 From 6c9deb7201d96733dcd1b4cc44e99232308db359 Mon Sep 17 00:00:00 2001 From: Bob Moore Date: Fri, 2 Feb 2007 19:48:24 +0300 Subject: ACPICA: Update copyright to 2007. Added 2007 copyright to all module headers and signons. This affects virtually every file in the ACPICA core subsystem, iASL compiler, and the utilities. Signed-off-by: Alexey Starikovskiy Signed-off-by: Len Brown --- drivers/acpi/utilities/utinit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/acpi/utilities/utinit.c') diff --git a/drivers/acpi/utilities/utinit.c b/drivers/acpi/utilities/utinit.c index 303bde70fdb6..ad3c0d0a5cf8 100644 --- a/drivers/acpi/utilities/utinit.c +++ b/drivers/acpi/utilities/utinit.c @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2006, R. Byron Moore + * Copyright (C) 2000 - 2007, R. Byron Moore * All rights reserved. * * Redistribution and use in source and binary forms, with or without -- cgit v1.2.2