All of lore.kernel.org
 help / color / mirror / Atom feed
From: Len Brown <lenb@kernel.org>
To: linux-acpi@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, Lv Zheng <lv.zheng@intel.com>,
	Bob Moore <robert.moore@intel.com>,
	Len Brown <len.brown@intel.com>
Subject: [PATCH 16/23] ACPICA: Table Manager: Merge duplicate code (root table)
Date: Sun, 23 Sep 2012 00:34:04 -0400	[thread overview]
Message-ID: <2bc198c1527be998850ade8f91ec7d340b67fdf3.1348371388.git.len.brown@intel.com> (raw)
In-Reply-To: <1348374851-20378-1-git-send-email-lenb@kernel.org>
In-Reply-To: <a950c135e5b2be6ef7518d54d98a7901db1b377a.1348371388.git.len.brown@intel.com>

From: Lv Zheng <lv.zheng@intel.com>

Merge/remove duplicate code in the root table resize functions
One function is external, the other is internal.  Lv Zheng,

ACPICA BZ 846:
https://acpica.org/bugzilla/show_bug.cgi?id=846

Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/acpi/acpica/tbinstal.c | 20 +++++++++++++-------
 drivers/acpi/acpica/tbxface.c  | 41 +++++------------------------------------
 2 files changed, 18 insertions(+), 43 deletions(-)

diff --git a/drivers/acpi/acpica/tbinstal.c b/drivers/acpi/acpica/tbinstal.c
index 74f97d7..70f9d78 100644
--- a/drivers/acpi/acpica/tbinstal.c
+++ b/drivers/acpi/acpica/tbinstal.c
@@ -350,6 +350,7 @@ struct acpi_table_header *acpi_tb_table_override(struct acpi_table_header
 acpi_status acpi_tb_resize_root_table_list(void)
 {
 	struct acpi_table_desc *tables;
+	u32 table_count;
 
 	ACPI_FUNCTION_TRACE(tb_resize_root_table_list);
 
@@ -363,8 +364,13 @@ acpi_status acpi_tb_resize_root_table_list(void)
 
 	/* Increase the Table Array size */
 
-	tables = ACPI_ALLOCATE_ZEROED(((acpi_size) acpi_gbl_root_table_list.
-				       max_table_count +
+	if (acpi_gbl_root_table_list.flags & ACPI_ROOT_ORIGIN_ALLOCATED) {
+		table_count = acpi_gbl_root_table_list.max_table_count;
+	} else {
+		table_count = acpi_gbl_root_table_list.current_table_count;
+	}
+
+	tables = ACPI_ALLOCATE_ZEROED(((acpi_size) table_count +
 				       ACPI_ROOT_TABLE_SIZE_INCREMENT) *
 				      sizeof(struct acpi_table_desc));
 	if (!tables) {
@@ -377,8 +383,8 @@ acpi_status acpi_tb_resize_root_table_list(void)
 
 	if (acpi_gbl_root_table_list.tables) {
 		ACPI_MEMCPY(tables, acpi_gbl_root_table_list.tables,
-			    (acpi_size) acpi_gbl_root_table_list.
-			    max_table_count * sizeof(struct acpi_table_desc));
+			    (acpi_size) table_count *
+			    sizeof(struct acpi_table_desc));
 
 		if (acpi_gbl_root_table_list.flags & ACPI_ROOT_ORIGIN_ALLOCATED) {
 			ACPI_FREE(acpi_gbl_root_table_list.tables);
@@ -386,9 +392,9 @@ acpi_status acpi_tb_resize_root_table_list(void)
 	}
 
 	acpi_gbl_root_table_list.tables = tables;
-	acpi_gbl_root_table_list.max_table_count +=
-	    ACPI_ROOT_TABLE_SIZE_INCREMENT;
-	acpi_gbl_root_table_list.flags |= (u8)ACPI_ROOT_ORIGIN_ALLOCATED;
+	acpi_gbl_root_table_list.max_table_count =
+	    table_count + ACPI_ROOT_TABLE_SIZE_INCREMENT;
+	acpi_gbl_root_table_list.flags |= ACPI_ROOT_ORIGIN_ALLOCATED;
 
 	return_ACPI_STATUS(AE_OK);
 }
diff --git a/drivers/acpi/acpica/tbxface.c b/drivers/acpi/acpica/tbxface.c
index 29e51bc..2110126 100644
--- a/drivers/acpi/acpica/tbxface.c
+++ b/drivers/acpi/acpica/tbxface.c
@@ -159,14 +159,12 @@ acpi_initialize_tables(struct acpi_table_desc * initial_table_array,
  * DESCRIPTION: Reallocate Root Table List into dynamic memory. Copies the
  *              root list from the previously provided scratch area. Should
  *              be called once dynamic memory allocation is available in the
- *              kernel
+ *              kernel.
  *
  ******************************************************************************/
 acpi_status acpi_reallocate_root_table(void)
 {
-	struct acpi_table_desc *tables;
-	acpi_size new_size;
-	acpi_size current_size;
+	acpi_status status;
 
 	ACPI_FUNCTION_TRACE(acpi_reallocate_root_table);
 
@@ -178,39 +176,10 @@ acpi_status acpi_reallocate_root_table(void)
 		return_ACPI_STATUS(AE_SUPPORT);
 	}
 
-	/*
-	 * Get the current size of the root table and add the default
-	 * increment to create the new table size.
-	 */
-	current_size = (acpi_size)
-	    acpi_gbl_root_table_list.current_table_count *
-	    sizeof(struct acpi_table_desc);
-
-	new_size = current_size +
-	    (ACPI_ROOT_TABLE_SIZE_INCREMENT * sizeof(struct acpi_table_desc));
-
-	/* Create new array and copy the old array */
-
-	tables = ACPI_ALLOCATE_ZEROED(new_size);
-	if (!tables) {
-		return_ACPI_STATUS(AE_NO_MEMORY);
-	}
+	acpi_gbl_root_table_list.flags |= ACPI_ROOT_ALLOW_RESIZE;
 
-	ACPI_MEMCPY(tables, acpi_gbl_root_table_list.tables, current_size);
-
-	/*
-	 * Update the root table descriptor. The new size will be the current
-	 * number of tables plus the increment, independent of the reserved
-	 * size of the original table list.
-	 */
-	acpi_gbl_root_table_list.tables = tables;
-	acpi_gbl_root_table_list.max_table_count =
-	    acpi_gbl_root_table_list.current_table_count +
-	    ACPI_ROOT_TABLE_SIZE_INCREMENT;
-	acpi_gbl_root_table_list.flags =
-	    ACPI_ROOT_ORIGIN_ALLOCATED | ACPI_ROOT_ALLOW_RESIZE;
-
-	return_ACPI_STATUS(AE_OK);
+	status = acpi_tb_resize_root_table_list();
+	return_ACPI_STATUS(status);
 }
 
 /*******************************************************************************
-- 
1.7.12.1.396.g16eed7c

  parent reply	other threads:[~2012-09-23  4:34 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-23  4:33 ACPICA related patch queue for Linux-3.7 Len Brown
2012-09-23  4:33 ` [PATCH 01/23] ACPI: delelte more BFS/GTS related definition and code Len Brown
2012-09-23  4:33   ` [PATCH 02/23] ACPICA: Enable Scope change to root during module-level code execution Len Brown
2012-09-23  4:33   ` [PATCH 03/23] ACPICA: Split ACPICA initialization functions to new file, utxfinit.c Len Brown
2012-09-23  4:33   ` [PATCH 04/23] ACPICA: Comment update: Fix some typos in actble.h Len Brown
2012-09-23  4:33   ` [PATCH 05/23] ACPICA: Add Windows8/Server2012 string for _OSI method Len Brown
2012-09-23  4:33   ` [PATCH 06/23] ACPICA: GPE Support: Update debug info for GPE tracing Len Brown
2012-09-23  4:33   ` [PATCH 07/23] ACPICA: Debug output: Update output for Processor object Len Brown
2012-09-23  4:33   ` [PATCH 08/23] ACPICA: GPE support: Remove extraneous parameter from low-level function Len Brown
2012-09-23  4:33   ` [PATCH 09/23] ACPICA: Headers: Add support for CSRT and DBG2 ACPI tables Len Brown
2012-09-23  4:33   ` [PATCH 10/23] ACPICA: Add support for complex _PLD buffers Len Brown
2012-09-23  4:33   ` [PATCH 11/23] ACPICA: Add struct header support for _FDE, _GRT, _GTM, and _SRT names Len Brown
2012-09-23  4:34   ` [PATCH 12/23] ACPICA: Update version to 20120816 Len Brown
2012-09-23  4:34   ` [PATCH 13/23] ACPI: Use ACPICA native way to decode the PLD buffer Len Brown
2012-09-23  4:34   ` [PATCH 14/23] usb-acpi: Comply with the ACPI API change Len Brown
2012-09-23  5:54     ` Greg Kroah-Hartman
2012-09-23  4:34   ` [PATCH 15/23] ACPICA: Headers: Add new ACPI 5 HEST notify type values Len Brown
2012-09-23  4:34   ` Len Brown [this message]
2012-09-23  4:34   ` [PATCH 17/23] ACPICA: Update version to 20120913 Len Brown
2012-09-23  4:34   ` [PATCH 18/23] tools/power/acpi/acpidump: version 20051111 Len Brown
2012-09-23  4:34   ` [PATCH 19/23] tools/power/acpi/acpidump: version 20060606 Len Brown
2012-09-23  4:34   ` [PATCH 20/23] tools/power/acpi/acpidump: version 20070714 Len Brown
2012-09-23  4:34   ` [PATCH 21/23] tools/power/acpi/acpidump: version 20071116 Len Brown
2012-09-23  4:34   ` [PATCH 22/23] tools/power/acpi/acpidump: version 20101221 - find dynamic tables in sysfs Len Brown
2012-09-23  4:34   ` [PATCH 23/23] tools/power/acpi/acpidump: create acpidump(8), local make install targets Len Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2bc198c1527be998850ade8f91ec7d340b67fdf3.1348371388.git.len.brown@intel.com \
    --to=lenb@kernel.org \
    --cc=len.brown@intel.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lv.zheng@intel.com \
    --cc=robert.moore@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.