Skip to content

Commit

Permalink
ACPICA: Regression fix: reinstate safe exit macros
Browse files Browse the repository at this point in the history
Removal caused a regression on at least FreeBSD. This fix
reinstates the macros.

Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Bob Moore authored and Rafael J. Wysocki committed Mar 11, 2013
1 parent c39660b commit fd1af71
Show file tree
Hide file tree
Showing 10 changed files with 67 additions and 38 deletions.
10 changes: 5 additions & 5 deletions drivers/acpi/acpica/dsutils.c
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ acpi_ds_is_result_used(union acpi_parse_object * op,

if (!op) {
ACPI_ERROR((AE_INFO, "Null Op"));
return_VALUE(TRUE);
return_UINT8(TRUE);
}

/*
Expand Down Expand Up @@ -210,7 +210,7 @@ acpi_ds_is_result_used(union acpi_parse_object * op,
"At Method level, result of [%s] not used\n",
acpi_ps_get_opcode_name(op->common.
aml_opcode)));
return_VALUE(FALSE);
return_UINT8(FALSE);
}

/* Get info on the parent. The root_op is AML_SCOPE */
Expand All @@ -219,7 +219,7 @@ acpi_ds_is_result_used(union acpi_parse_object * op,
acpi_ps_get_opcode_info(op->common.parent->common.aml_opcode);
if (parent_info->class == AML_CLASS_UNKNOWN) {
ACPI_ERROR((AE_INFO, "Unknown parent opcode Op=%p", op));
return_VALUE(FALSE);
return_UINT8(FALSE);
}

/*
Expand Down Expand Up @@ -307,7 +307,7 @@ acpi_ds_is_result_used(union acpi_parse_object * op,
acpi_ps_get_opcode_name(op->common.parent->common.
aml_opcode), op));

return_VALUE(TRUE);
return_UINT8(TRUE);

result_not_used:
ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH,
Expand All @@ -316,7 +316,7 @@ acpi_ds_is_result_used(union acpi_parse_object * op,
acpi_ps_get_opcode_name(op->common.parent->common.
aml_opcode), op));

return_VALUE(FALSE);
return_UINT8(FALSE);
}

/*******************************************************************************
Expand Down
6 changes: 3 additions & 3 deletions drivers/acpi/acpica/evgpe.c
Original file line number Diff line number Diff line change
Expand Up @@ -707,7 +707,7 @@ acpi_ev_gpe_dispatch(struct acpi_namespace_node *gpe_device,
if (ACPI_FAILURE(status)) {
ACPI_EXCEPTION((AE_INFO, status,
"Unable to clear GPE%02X", gpe_number));
return_VALUE(ACPI_INTERRUPT_NOT_HANDLED);
return_UINT32(ACPI_INTERRUPT_NOT_HANDLED);
}
}

Expand All @@ -724,7 +724,7 @@ acpi_ev_gpe_dispatch(struct acpi_namespace_node *gpe_device,
if (ACPI_FAILURE(status)) {
ACPI_EXCEPTION((AE_INFO, status,
"Unable to disable GPE%02X", gpe_number));
return_VALUE(ACPI_INTERRUPT_NOT_HANDLED);
return_UINT32(ACPI_INTERRUPT_NOT_HANDLED);
}

/*
Expand Down Expand Up @@ -784,7 +784,7 @@ acpi_ev_gpe_dispatch(struct acpi_namespace_node *gpe_device,
break;
}

return_VALUE(ACPI_INTERRUPT_HANDLED);
return_UINT32(ACPI_INTERRUPT_HANDLED);
}

#endif /* !ACPI_REDUCED_HARDWARE */
4 changes: 2 additions & 2 deletions drivers/acpi/acpica/evsci.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ static u32 ACPI_SYSTEM_XFACE acpi_ev_sci_xrupt_handler(void *context)
*/
interrupt_handled |= acpi_ev_gpe_detect(gpe_xrupt_list);

return_VALUE(interrupt_handled);
return_UINT32(interrupt_handled);
}

/*******************************************************************************
Expand Down Expand Up @@ -120,7 +120,7 @@ u32 ACPI_SYSTEM_XFACE acpi_ev_gpe_xrupt_handler(void *context)

interrupt_handled |= acpi_ev_gpe_detect(gpe_xrupt_list);

return_VALUE(interrupt_handled);
return_UINT32(interrupt_handled);
}

/******************************************************************************
Expand Down
4 changes: 2 additions & 2 deletions drivers/acpi/acpica/exprep.c
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ acpi_ex_decode_field_access(union acpi_operand_object *obj_desc,
/* Invalid field access type */

ACPI_ERROR((AE_INFO, "Unknown field access type 0x%X", access));
return_VALUE(0);
return_UINT32(0);
}

if (obj_desc->common.type == ACPI_TYPE_BUFFER_FIELD) {
Expand All @@ -289,7 +289,7 @@ acpi_ex_decode_field_access(union acpi_operand_object *obj_desc,
}

*return_byte_alignment = byte_alignment;
return_VALUE(bit_length);
return_UINT32(bit_length);
}

/*******************************************************************************
Expand Down
4 changes: 2 additions & 2 deletions drivers/acpi/acpica/exutils.c
Original file line number Diff line number Diff line change
Expand Up @@ -340,7 +340,7 @@ static u32 acpi_ex_digits_needed(u64 value, u32 base)
/* u64 is unsigned, so we don't worry about a '-' prefix */

if (value == 0) {
return_VALUE(1);
return_UINT32(1);
}

current_value = value;
Expand All @@ -354,7 +354,7 @@ static u32 acpi_ex_digits_needed(u64 value, u32 base)
num_digits++;
}

return_VALUE(num_digits);
return_UINT32(num_digits);
}

/*******************************************************************************
Expand Down
10 changes: 5 additions & 5 deletions drivers/acpi/acpica/hwacpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -155,26 +155,26 @@ u32 acpi_hw_get_mode(void)
/* If the Hardware Reduced flag is set, machine is always in acpi mode */

if (acpi_gbl_reduced_hardware) {
return_VALUE(ACPI_SYS_MODE_ACPI);
return_UINT32(ACPI_SYS_MODE_ACPI);
}

/*
* ACPI 2.0 clarified that if SMI_CMD in FADT is zero,
* system does not support mode transition.
*/
if (!acpi_gbl_FADT.smi_command) {
return_VALUE(ACPI_SYS_MODE_ACPI);
return_UINT32(ACPI_SYS_MODE_ACPI);
}

status = acpi_read_bit_register(ACPI_BITREG_SCI_ENABLE, &value);
if (ACPI_FAILURE(status)) {
return_VALUE(ACPI_SYS_MODE_LEGACY);
return_UINT32(ACPI_SYS_MODE_LEGACY);
}

if (value) {
return_VALUE(ACPI_SYS_MODE_ACPI);
return_UINT32(ACPI_SYS_MODE_ACPI);
} else {
return_VALUE(ACPI_SYS_MODE_LEGACY);
return_UINT32(ACPI_SYS_MODE_LEGACY);
}
}

Expand Down
8 changes: 4 additions & 4 deletions drivers/acpi/acpica/nsutils.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,10 +112,10 @@ acpi_object_type acpi_ns_get_type(struct acpi_namespace_node * node)

if (!node) {
ACPI_WARNING((AE_INFO, "Null Node parameter"));
return_VALUE(ACPI_TYPE_ANY);
return_UINT8(ACPI_TYPE_ANY);
}

return_VALUE(node->type);
return_UINT8(node->type);
}

/*******************************************************************************
Expand All @@ -140,10 +140,10 @@ u32 acpi_ns_local(acpi_object_type type)
/* Type code out of range */

ACPI_WARNING((AE_INFO, "Invalid Object Type 0x%X", type));
return_VALUE(ACPI_NS_NORMAL);
return_UINT32(ACPI_NS_NORMAL);
}

return_VALUE(acpi_gbl_ns_properties[type] & ACPI_NS_LOCAL);
return_UINT32(acpi_gbl_ns_properties[type] & ACPI_NS_LOCAL);
}

/*******************************************************************************
Expand Down
2 changes: 1 addition & 1 deletion drivers/acpi/acpica/psargs.c
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ acpi_ps_get_next_package_length(struct acpi_parse_state *parser_state)
/* Byte 0 is a special case, either bits [0:3] or [0:5] are used */

package_length |= (aml[0] & byte_zero_mask);
return_VALUE(package_length);
return_UINT32(package_length);
}

/*******************************************************************************
Expand Down
4 changes: 2 additions & 2 deletions drivers/acpi/acpica/utaddress.c
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ acpi_ut_check_address_range(acpi_adr_space_type space_id,

if ((space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY) &&
(space_id != ACPI_ADR_SPACE_SYSTEM_IO)) {
return_VALUE(0);
return_UINT32(0);
}

range_info = acpi_gbl_address_range_list[space_id];
Expand Down Expand Up @@ -256,7 +256,7 @@ acpi_ut_check_address_range(acpi_adr_space_type space_id,
range_info = range_info->next;
}

return_VALUE(overlap_count);
return_UINT32(overlap_count);
}

/*******************************************************************************
Expand Down
53 changes: 41 additions & 12 deletions include/acpi/acoutput.h
Original file line number Diff line number Diff line change
Expand Up @@ -324,9 +324,9 @@

/* Helper macro */

#define ACPI_TRACE_ENTRY(name, function, cast, param) \
#define ACPI_TRACE_ENTRY(name, function, type, param) \
ACPI_FUNCTION_NAME (name) \
function (ACPI_DEBUG_PARAMETERS, cast (param))
function (ACPI_DEBUG_PARAMETERS, (type) (param))

/* The actual entry trace macros */

Expand All @@ -335,13 +335,13 @@
acpi_ut_trace (ACPI_DEBUG_PARAMETERS)

#define ACPI_FUNCTION_TRACE_PTR(name, pointer) \
ACPI_TRACE_ENTRY (name, acpi_ut_trace_ptr, (void *), pointer)
ACPI_TRACE_ENTRY (name, acpi_ut_trace_ptr, void *, pointer)

#define ACPI_FUNCTION_TRACE_U32(name, value) \
ACPI_TRACE_ENTRY (name, acpi_ut_trace_u32, (u32), value)
ACPI_TRACE_ENTRY (name, acpi_ut_trace_u32, u32, value)

#define ACPI_FUNCTION_TRACE_STR(name, string) \
ACPI_TRACE_ENTRY (name, acpi_ut_trace_str, (char *), string)
ACPI_TRACE_ENTRY (name, acpi_ut_trace_str, char *, string)

#define ACPI_FUNCTION_ENTRY() \
acpi_ut_track_stack_ptr()
Expand All @@ -355,16 +355,37 @@
*
* One of the FUNCTION_TRACE macros above must be used in conjunction
* with these macros so that "_AcpiFunctionName" is defined.
*
* There are two versions of most of the return macros. The default version is
* safer, since it avoids side-effects by guaranteeing that the argument will
* not be evaluated twice.
*
* A less-safe version of the macros is provided for optional use if the
* compiler uses excessive CPU stack (for example, this may happen in the
* debug case if code optimzation is disabled.)
*/

/* Exit trace helper macro */

#define ACPI_TRACE_EXIT(function, cast, param) \
#ifndef ACPI_SIMPLE_RETURN_MACROS

#define ACPI_TRACE_EXIT(function, type, param) \
ACPI_DO_WHILE0 ({ \
register type _param = (type) (param); \
function (ACPI_DEBUG_PARAMETERS, _param); \
return (_param); \
})

#else /* Use original less-safe macros */

#define ACPI_TRACE_EXIT(function, type, param) \
ACPI_DO_WHILE0 ({ \
function (ACPI_DEBUG_PARAMETERS, cast (param)); \
return ((param)); \
function (ACPI_DEBUG_PARAMETERS, (type) (param)); \
return (param); \
})

#endif /* ACPI_SIMPLE_RETURN_MACROS */

/* The actual exit macros */

#define return_VOID \
Expand All @@ -374,13 +395,19 @@
})

#define return_ACPI_STATUS(status) \
ACPI_TRACE_EXIT (acpi_ut_status_exit, (acpi_status), status)
ACPI_TRACE_EXIT (acpi_ut_status_exit, acpi_status, status)

#define return_PTR(pointer) \
ACPI_TRACE_EXIT (acpi_ut_ptr_exit, (u8 *), pointer)
ACPI_TRACE_EXIT (acpi_ut_ptr_exit, void *, pointer)

#define return_VALUE(value) \
ACPI_TRACE_EXIT (acpi_ut_value_exit, (u64), value)
ACPI_TRACE_EXIT (acpi_ut_value_exit, u64, value)

#define return_UINT32(value) \
ACPI_TRACE_EXIT (acpi_ut_value_exit, u32, value)

#define return_UINT8(value) \
ACPI_TRACE_EXIT (acpi_ut_value_exit, u8, value)

/* Conditional execution */

Expand Down Expand Up @@ -428,8 +455,10 @@

#define return_VOID return
#define return_ACPI_STATUS(s) return(s)
#define return_VALUE(s) return(s)
#define return_PTR(s) return(s)
#define return_VALUE(s) return(s)
#define return_UINT8(s) return(s)
#define return_UINT32(s) return(s)

#endif /* ACPI_DEBUG_OUTPUT */

Expand Down

0 comments on commit fd1af71

Please sign in to comment.