diff mbox series

Revert "ACPI: sleep: Put the FACS table after using it"

Message ID 20210603023414.2389-1-rui.zhang@intel.com (mailing list archive)
State Mainlined, archived
Delegated to: Rafael Wysocki
Headers show
Series Revert "ACPI: sleep: Put the FACS table after using it" | expand

Commit Message

Zhang Rui June 3, 2021, 2:34 a.m. UTC
Commit 95722237cb2a ("ACPI: sleep: Put the FACS table after using it")
puts the FACS table during initialization.
But the hardware signature bits in the FACS table need to be accessed,
after every hibernation, to compare with the original hardware signature.

So there is no reason to release the FACS table mapping after
initialization.

This reverts commit 95722237cb2ae4f7b73471058cdb19e8f4057c93.

An alternative solution is to use acpi_gbl_FACS variable instead, which
is mapped by the ACPICA core and never released.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=212277
Reported-by: Stephan Hohe <sth.dev@tejp.de>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
---
 drivers/acpi/sleep.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

Comments

Hanjun Guo June 3, 2021, 2:52 a.m. UTC | #1
On 2021/6/3 10:34, Zhang Rui wrote:
> Commit 95722237cb2a ("ACPI: sleep: Put the FACS table after using it")
> puts the FACS table during initialization.
> But the hardware signature bits in the FACS table need to be accessed,
> after every hibernation, to compare with the original hardware signature.
> 
> So there is no reason to release the FACS table mapping after
> initialization.
> 
> This reverts commit 95722237cb2ae4f7b73471058cdb19e8f4057c93.
> 
> An alternative solution is to use acpi_gbl_FACS variable instead, which
> is mapped by the ACPICA core and never released.
> 
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=212277
> Reported-by: Stephan Hohe <sth.dev@tejp.de>
> Signed-off-by: Zhang Rui <rui.zhang@intel.com>
> ---
>   drivers/acpi/sleep.c | 4 +---
>   1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
> index df386571da98..3bb2adef8490 100644
> --- a/drivers/acpi/sleep.c
> +++ b/drivers/acpi/sleep.c
> @@ -1009,10 +1009,8 @@ static void acpi_sleep_hibernate_setup(void)
>   		return;
>   
>   	acpi_get_table(ACPI_SIG_FACS, 1, (struct acpi_table_header **)&facs);
> -	if (facs) {
> +	if (facs)
>   		s4_hardware_signature = facs->hardware_signature;
> -		acpi_put_table((struct acpi_table_header *)facs);
> -	}
>   }
>   #else /* !CONFIG_HIBERNATION */
>   static inline void acpi_sleep_hibernate_setup(void) {}

My bad, thanks for the fix.

Patches for ACPI subsystem, subject will have the prefix "ACPI: ",
could you please add that?

Thanks
Hanjun
Zhang Rui June 3, 2021, 2:55 a.m. UTC | #2
On Thu, 2021-06-03 at 10:52 +0800, Hanjun Guo wrote:
> On 2021/6/3 10:34, Zhang Rui wrote:
> > Commit 95722237cb2a ("ACPI: sleep: Put the FACS table after using
> > it")
> > puts the FACS table during initialization.
> > But the hardware signature bits in the FACS table need to be
> > accessed,
> > after every hibernation, to compare with the original hardware
> > signature.
> > 
> > So there is no reason to release the FACS table mapping after
> > initialization.
> > 
> > This reverts commit 95722237cb2ae4f7b73471058cdb19e8f4057c93.
> > 
> > An alternative solution is to use acpi_gbl_FACS variable instead,
> > which
> > is mapped by the ACPICA core and never released.
> > 
> > Link: https://bugzilla.kernel.org/show_bug.cgi?id=212277
> > Reported-by: Stephan Hohe <sth.dev@tejp.de>
> > Signed-off-by: Zhang Rui <rui.zhang@intel.com>
> > ---
> >   drivers/acpi/sleep.c | 4 +---
> >   1 file changed, 1 insertion(+), 3 deletions(-)
> > 
> > diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
> > index df386571da98..3bb2adef8490 100644
> > --- a/drivers/acpi/sleep.c
> > +++ b/drivers/acpi/sleep.c
> > @@ -1009,10 +1009,8 @@ static void acpi_sleep_hibernate_setup(void)
> >   		return;
> >   
> >   	acpi_get_table(ACPI_SIG_FACS, 1, (struct acpi_table_header
> > **)&facs);
> > -	if (facs) {
> > +	if (facs)
> >   		s4_hardware_signature = facs->hardware_signature;
> > -		acpi_put_table((struct acpi_table_header *)facs);
> > -	}
> >   }
> >   #else /* !CONFIG_HIBERNATION */
> >   static inline void acpi_sleep_hibernate_setup(void) {}
> 
> My bad, thanks for the fix.
> 
> Patches for ACPI subsystem, subject will have the prefix "ACPI: ",
> could you please add that?

I checked git log, and this does not apply to the revert patch.
So I guess the current subject works.

thanks,
rui
Rafael J. Wysocki June 7, 2021, 1:02 p.m. UTC | #3
On Thu, Jun 3, 2021 at 4:24 AM Zhang Rui <rui.zhang@intel.com> wrote:
>
> Commit 95722237cb2a ("ACPI: sleep: Put the FACS table after using it")
> puts the FACS table during initialization.
> But the hardware signature bits in the FACS table need to be accessed,
> after every hibernation, to compare with the original hardware signature.
>
> So there is no reason to release the FACS table mapping after
> initialization.
>
> This reverts commit 95722237cb2ae4f7b73471058cdb19e8f4057c93.
>
> An alternative solution is to use acpi_gbl_FACS variable instead, which
> is mapped by the ACPICA core and never released.
>
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=212277
> Reported-by: Stephan Hohe <sth.dev@tejp.de>
> Signed-off-by: Zhang Rui <rui.zhang@intel.com>
> ---
>  drivers/acpi/sleep.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
> index df386571da98..3bb2adef8490 100644
> --- a/drivers/acpi/sleep.c
> +++ b/drivers/acpi/sleep.c
> @@ -1009,10 +1009,8 @@ static void acpi_sleep_hibernate_setup(void)
>                 return;
>
>         acpi_get_table(ACPI_SIG_FACS, 1, (struct acpi_table_header **)&facs);
> -       if (facs) {
> +       if (facs)
>                 s4_hardware_signature = facs->hardware_signature;
> -               acpi_put_table((struct acpi_table_header *)facs);
> -       }
>  }
>  #else /* !CONFIG_HIBERNATION */
>  static inline void acpi_sleep_hibernate_setup(void) {}
> --

Applied as 5.13-rc material (with CC-stable), thanks!
diff mbox series

Patch

diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
index df386571da98..3bb2adef8490 100644
--- a/drivers/acpi/sleep.c
+++ b/drivers/acpi/sleep.c
@@ -1009,10 +1009,8 @@  static void acpi_sleep_hibernate_setup(void)
 		return;
 
 	acpi_get_table(ACPI_SIG_FACS, 1, (struct acpi_table_header **)&facs);
-	if (facs) {
+	if (facs)
 		s4_hardware_signature = facs->hardware_signature;
-		acpi_put_table((struct acpi_table_header *)facs);
-	}
 }
 #else /* !CONFIG_HIBERNATION */
 static inline void acpi_sleep_hibernate_setup(void) {}