summaryrefslogtreecommitdiffstats
path: root/sys/contrib/dev/acpica/utinit.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/dev/acpica/utinit.c')
-rw-r--r--sys/contrib/dev/acpica/utinit.c30
1 files changed, 27 insertions, 3 deletions
diff --git a/sys/contrib/dev/acpica/utinit.c b/sys/contrib/dev/acpica/utinit.c
index 10e52eb..dca1f78 100644
--- a/sys/contrib/dev/acpica/utinit.c
+++ b/sys/contrib/dev/acpica/utinit.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utinit - Common ACPI subsystem initialization
- * $Revision: 116 $
+ * $Revision: 117 $
*
*****************************************************************************/
@@ -250,20 +250,44 @@ AcpiUtValidateFadt (
*
* RETURN: none
*
- * DESCRIPTION: free memory allocated for table storage.
+ * DESCRIPTION: free global memory
*
******************************************************************************/
void
AcpiUtTerminate (void)
{
+ ACPI_GPE_BLOCK_INFO *GpeBlock;
+ ACPI_GPE_BLOCK_INFO *NextGpeBlock;
+ ACPI_GPE_XRUPT_INFO *GpeXruptInfo;
+ ACPI_GPE_XRUPT_INFO *NextGpeXruptInfo;
+
ACPI_FUNCTION_TRACE ("UtTerminate");
/* Free global tables, etc. */
- /* Nothing to do at this time */
+
+ /* Free global GPE blocks and related info structures */
+
+ GpeXruptInfo = AcpiGbl_GpeXruptListHead;
+ while (GpeXruptInfo)
+ {
+ GpeBlock = GpeXruptInfo->GpeBlockListHead;
+ while (GpeBlock)
+ {
+ NextGpeBlock = GpeBlock->Next;
+ ACPI_MEM_FREE (GpeBlock->EventInfo);
+ ACPI_MEM_FREE (GpeBlock->RegisterInfo);
+ ACPI_MEM_FREE (GpeBlock);
+
+ GpeBlock = NextGpeBlock;
+ }
+ NextGpeXruptInfo = GpeXruptInfo->Next;
+ ACPI_MEM_FREE (GpeXruptInfo);
+ GpeXruptInfo = NextGpeXruptInfo;
+ }
return_VOID;
}
OpenPOWER on IntegriCloud