Re: [PATCH/RFC] ACPICA: disable ACPI 2.0 _GTS/_BFS support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2008-12-19 at 17:23 +0800, Len Brown wrote:
> From: Len Brown <len.brown@xxxxxxxxx>
> Organization: Intel Open Source Technology Center
> 
> ACPI 2.0 defined two new methods in the suspend/resume sequence,
> _GTS (Going to Sleep) and _BFS (Back from Sleep)

Is the purpose of this patch that in course of suspend/resume the ACPI
object won't be evaluated again when irq is disabled? And this can avoid
the preemption point after evaluating the ACPI object.
   
   If so, this issue can be fixed by the patch
   http://bugzilla.kernel.org/attachment.cgi?id=19370&action=view


> 
> They are optional methods, but if the BIOS supplies them,
> the OS is supposed to evaluate them immediately before
> writing the register to sleep, and immediately after waking up --
> a time when interrupts are disabled.
> 
> The spec says that they must be self-contained
> methods, not calling any other methods, perhaps
> because that they are run under unique conditions?
> 
> These methodds are evaluated in Linux by
> acpi_evaluate_object(), which always kmalloc's
> a return structure to conserve stack space.
> But kmalloc with interrupts off is problematic --
> do we really want to insist on GFP_ATOMIC here?
> 
> Now, several years after ACPI 2.0 was released,
> we have yet to observe a single implementation of
> _GTS/_BFS in the field -- suggesting that they will
> never actually be deployed.
> 
> So lets keep Linux simple by removing this
> theoretical support for _GTS/_BFS, the only
> AML methods that mandated being evaluated
> with interrupts disabled.
> 
> Signed-off-by: Len Brown <len.brown@xxxxxxxxx>
> ---
>  drivers/acpi/hardware/hwsleep.c |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/acpi/hardware/hwsleep.c b/drivers/acpi/hardware/hwsleep.c
> index 25dccdf..c209434 100644
> --- a/drivers/acpi/hardware/hwsleep.c
> +++ b/drivers/acpi/hardware/hwsleep.c
> @@ -289,6 +289,7 @@ acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state)
>  		return_ACPI_STATUS(status);
>  	}
>  
> +#ifdef	ACPI_20_GTS_BFS
>  	/* Execute the _GTS method */
>  
>  	arg_list.count = 1;
> @@ -300,6 +301,7 @@ acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state)
>  	if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
>  		return_ACPI_STATUS(status);
>  	}
> +#endif
>  
>  	/* Get current value of PM1A control */
>  
> @@ -535,6 +537,7 @@ acpi_status acpi_leave_sleep_state_prep(u8 sleep_state)
>  		}
>  	}
>  
> +#ifdef	ACPI_20_GTS_BFS
>  	/* Execute the _BFS method */
>  
>  	arg_list.count = 1;
> @@ -546,6 +549,7 @@ acpi_status acpi_leave_sleep_state_prep(u8 sleep_state)
>  	if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
>  		ACPI_EXCEPTION((AE_INFO, status, "During Method _BFS"));
>  	}
> +#endif
>  
>  	return_ACPI_STATUS(status);
>  }

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux