瀏覽代碼

x86: acpi: Remove header length check when writing tables

Before moving 'current' pointer during ACPI table writing, we always
check the table length to see if it is larger than the table header.
Since our purpose is to generate valid tables, the check logic is
always true, which can be avoided.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Bin Meng 9 年之前
父節點
當前提交
10fcabed88
共有 1 個文件被更改,包括 10 次插入16 次删除
  1. 10 16
      arch/x86/lib/acpi_table.c

+ 10 - 16
arch/x86/lib/acpi_table.c

@@ -376,13 +376,11 @@ u32 write_acpi_tables(u32 start)
 	debug("ACPI:    * DSDT\n");
 	dsdt = (struct acpi_table_header *)current;
 	memcpy(dsdt, &AmlCode, sizeof(struct acpi_table_header));
-	if (dsdt->length >= sizeof(struct acpi_table_header)) {
-		current += sizeof(struct acpi_table_header);
-		memcpy((char *)current,
-			(char *)&AmlCode + sizeof(struct acpi_table_header),
-			dsdt->length - sizeof(struct acpi_table_header));
-		current += dsdt->length - sizeof(struct acpi_table_header);
-	}
+	current += sizeof(struct acpi_table_header);
+	memcpy((char *)current,
+	       (char *)&AmlCode + sizeof(struct acpi_table_header),
+	       dsdt->length - sizeof(struct acpi_table_header));
+	current += dsdt->length - sizeof(struct acpi_table_header);
 	current = ALIGN(current, 16);
 
 	debug("ACPI:    * FADT\n");
@@ -395,20 +393,16 @@ u32 write_acpi_tables(u32 start)
 	debug("ACPI:    * MADT\n");
 	madt = (struct acpi_madt *)current;
 	acpi_create_madt(madt);
-	if (madt->header.length > sizeof(struct acpi_madt)) {
-		current += madt->header.length;
-		acpi_add_table(rsdp, madt);
-	}
+	current += madt->header.length;
+	acpi_add_table(rsdp, madt);
 	current = ALIGN(current, 16);
 
 	debug("ACPI:    * MCFG\n");
 	mcfg = (struct acpi_mcfg *)current;
 	acpi_create_mcfg(mcfg);
-	if (mcfg->header.length > sizeof(struct acpi_mcfg)) {
-		current += mcfg->header.length;
-		current = ALIGN(current, 16);
-		acpi_add_table(rsdp, mcfg);
-	}
+	current += mcfg->header.length;
+	acpi_add_table(rsdp, mcfg);
+	current = ALIGN(current, 16);
 
 	debug("current = %x\n", current);