diff mbox series

[U-Boot,v2,2/3] x86: acpi: Don't touch ACPI hardware in write_acpi_tables()

Message ID 1531975337-27592-2-git-send-email-bmeng.cn@gmail.com
State Accepted
Commit 474a62bc74fe923cd6f43e13ca82b1ce2f40e76f
Delegated to: Bin Meng
Headers show
Series [U-Boot,v2,1/3] x86: acpi: Move APIs unrelated to ACPI tables generation to a separate library | expand

Commit Message

Bin Meng July 19, 2018, 4:42 a.m. UTC
write_acpi_tables() currently touches ACPI hardware to switch to
ACPI mode at the end. Move such operation out of this function,
so that it only does what the function name tells us.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>

---

Changes in v2:
- move variable definition to the first line in the function

 arch/x86/cpu/cpu.c        | 21 ++++++++++++++++++---
 arch/x86/lib/acpi_table.c | 11 -----------
 2 files changed, 18 insertions(+), 14 deletions(-)

Comments

Simon Glass July 19, 2018, 3:21 p.m. UTC | #1
On 18 July 2018 at 22:42, Bin Meng <bmeng.cn@gmail.com> wrote:
> write_acpi_tables() currently touches ACPI hardware to switch to
> ACPI mode at the end. Move such operation out of this function,
> so that it only does what the function name tells us.
>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>
> ---
>
> Changes in v2:
> - move variable definition to the first line in the function
>
>  arch/x86/cpu/cpu.c        | 21 ++++++++++++++++++---
>  arch/x86/lib/acpi_table.c | 11 -----------
>  2 files changed, 18 insertions(+), 14 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>
Bin Meng July 20, 2018, 1:38 a.m. UTC | #2
On Thu, Jul 19, 2018 at 11:21 PM, Simon Glass <sjg@chromium.org> wrote:
> On 18 July 2018 at 22:42, Bin Meng <bmeng.cn@gmail.com> wrote:
>> write_acpi_tables() currently touches ACPI hardware to switch to
>> ACPI mode at the end. Move such operation out of this function,
>> so that it only does what the function name tells us.
>>
>> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>>
>> ---
>>
>> Changes in v2:
>> - move variable definition to the first line in the function
>>
>>  arch/x86/cpu/cpu.c        | 21 ++++++++++++++++++---
>>  arch/x86/lib/acpi_table.c | 11 -----------
>>  2 files changed, 18 insertions(+), 14 deletions(-)
>
> Reviewed-by: Simon Glass <sjg@chromium.org>

applied to u-boot-x86, thanks!
diff mbox series

Patch

diff --git a/arch/x86/cpu/cpu.c b/arch/x86/cpu/cpu.c
index f7601b3..99f8e68 100644
--- a/arch/x86/cpu/cpu.c
+++ b/arch/x86/cpu/cpu.c
@@ -205,17 +205,32 @@  __weak void board_final_cleanup(void)
 
 int last_stage_init(void)
 {
+	struct acpi_fadt __maybe_unused *fadt;
+
 	board_final_cleanup();
 
-#if CONFIG_HAVE_ACPI_RESUME
-	struct acpi_fadt *fadt = acpi_find_fadt();
+#ifdef CONFIG_HAVE_ACPI_RESUME
+	fadt = acpi_find_fadt();
 
-	if (fadt != NULL && gd->arch.prev_sleep_state == ACPI_S3)
+	if (fadt && gd->arch.prev_sleep_state == ACPI_S3)
 		acpi_resume(fadt);
 #endif
 
 	write_tables();
 
+#ifdef CONFIG_GENERATE_ACPI_TABLE
+	fadt = acpi_find_fadt();
+
+	/* Don't touch ACPI hardware on HW reduced platforms */
+	if (fadt && !(fadt->flags & ACPI_FADT_HW_REDUCED_ACPI)) {
+		/*
+		 * Other than waiting for OSPM to request us to switch to ACPI
+		 * mode, do it by ourselves, since SMI will not be triggered.
+		 */
+		enter_acpi_mode(fadt->pm1a_cnt_blk);
+	}
+#endif
+
 	return 0;
 }
 #endif
diff --git a/arch/x86/lib/acpi_table.c b/arch/x86/lib/acpi_table.c
index e26c54d..e48c9b9 100644
--- a/arch/x86/lib/acpi_table.c
+++ b/arch/x86/lib/acpi_table.c
@@ -12,7 +12,6 @@ 
 #include <dm/uclass-internal.h>
 #include <version.h>
 #include <asm/acpi/global_nvs.h>
-#include <asm/acpi.h>
 #include <asm/acpi_table.h>
 #include <asm/ioapic.h>
 #include <asm/lapic.h>
@@ -444,16 +443,6 @@  ulong write_acpi_tables(ulong start)
 	acpi_rsdp_addr = (unsigned long)rsdp;
 	debug("ACPI: done\n");
 
-	/* Don't touch ACPI hardware on HW reduced platforms */
-	if (fadt->flags & ACPI_FADT_HW_REDUCED_ACPI)
-		return current;
-
-	/*
-	 * Other than waiting for OSPM to request us to switch to ACPI mode,
-	 * do it by ourselves, since SMI will not be triggered.
-	 */
-	enter_acpi_mode(fadt->pm1a_cnt_blk);
-
 	return current;
 }