Patchwork acpi: method: remove _GTS and _BFS tests

login
register
mail settings
Submitter Colin King
Date July 31, 2012, 4:38 p.m.
Message ID <1343752732-23515-1-git-send-email-colin.king@canonical.com>
Download mbox | patch
Permalink /patch/174284/
State Accepted
Headers show

Comments

Colin King - July 31, 2012, 4:38 p.m.
From: Colin Ian King <colin.king@canonical.com>

Just seen _GTS and _BFS support being removed from Linux and
according to Len Brown:

"_GTS and _BFS were added to the suspend/resume flow
in the ACPI 2.0 specification.

Linux dutifully implemented _GTS and _BFS.
We discovered that it was rarely seen in systems
in the field.  Further, some of those systems had
AML so bogus that it could never work -- proof that
no other operating system supports _GTS and _BFS.
So we made _GTS and _BFS optional via modparam,
and disabled them by default.

But we've had to complicate some code to keep
this support in the kernel, as these methods are defined
to be evaluated very close to sleep entry and exit.
Indeed, no other AML is ever evaluated with interrupts off.

We have submitted a proposal for _GTS and _BFS
to be officially removed from the ACPI specification
on the next revision.  Here we remove it from Linux."

So, these are not worth testing and should be deprecated
from the method test.

Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 src/acpi/method/method.c |   55 ++--------------------------------------------
 1 file changed, 2 insertions(+), 53 deletions(-)
Alex Hung - Aug. 1, 2012, 12:01 a.m.
On 08/01/2012 12:38 AM, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> Just seen _GTS and _BFS support being removed from Linux and
> according to Len Brown:
>
> "_GTS and _BFS were added to the suspend/resume flow
> in the ACPI 2.0 specification.
>
> Linux dutifully implemented _GTS and _BFS.
> We discovered that it was rarely seen in systems
> in the field.  Further, some of those systems had
> AML so bogus that it could never work -- proof that
> no other operating system supports _GTS and _BFS.
> So we made _GTS and _BFS optional via modparam,
> and disabled them by default.
>
> But we've had to complicate some code to keep
> this support in the kernel, as these methods are defined
> to be evaluated very close to sleep entry and exit.
> Indeed, no other AML is ever evaluated with interrupts off.
>
> We have submitted a proposal for _GTS and _BFS
> to be officially removed from the ACPI specification
> on the next revision.  Here we remove it from Linux."
>
> So, these are not worth testing and should be deprecated
> from the method test.
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>   src/acpi/method/method.c |   55 ++--------------------------------------------
>   1 file changed, 2 insertions(+), 53 deletions(-)
>
> diff --git a/src/acpi/method/method.c b/src/acpi/method/method.c
> index a1bf873..032f42e 100644
> --- a/src/acpi/method/method.c
> +++ b/src/acpi/method/method.c
> @@ -48,7 +48,7 @@
>    * _BCM  B.6.3		Y
>    * _BCT  10.2.29	N
>    * _BDN  6.5.3		N
> - * _BFS  7.3.1		Y
> + * _BFS  7.3.1		deprecated
>    * _BIF  10.2.2.1	Y
>    * _BIX  10.2.2.2	Y
>    * _BLT  9.1.3		N
> @@ -109,7 +109,7 @@
>    * _GSB  6.2.6		N
>    * _GTF  9.8.1.1	N
>    * _GTM  9.8.2.1.1	N
> - * _GTS  7.3.3		Y
> + * _GTS  7.3.3		deprecated
>    * _GWS  9.18.5		N
>    * _HID  6.1.5		N
>    * _HOT  11.4.6		Y
> @@ -925,30 +925,6 @@ static int method_test_BMC(fwts_framework *fw)
>
>   /* Section 15, Waking and Sleeping */
>
> -static int method_test_BFS(fwts_framework *fw)
> -{
> -	int i;
> -
> -	if (fwts_method_exists("_BFS") != NULL) {
> -		for (i=1; i<6; i++) {
> -			ACPI_OBJECT arg[1];
> -
> -			arg[0].Type = ACPI_TYPE_INTEGER;
> -			arg[0].Integer.Value = i;
> -
> -			if (method_evaluate_method(fw, METHOD_OPTIONAL, "_BFS", arg, 1,
> -			  			  method_test_NULL_return, NULL) == FWTS_NOT_EXIST)
> -				break;
> -			fwts_log_nl(fw);
> -		}
> -	}
> -	else {
> -		fwts_skipped(fw, "Optional control method _BFS does not exist.");
> -	}
> -
> -	return FWTS_OK;
> -}
> -
>   static int method_test_PTS(fwts_framework *fw)
>   {
>   	int i;
> @@ -975,31 +951,6 @@ static int method_test_PTS(fwts_framework *fw)
>   	return FWTS_OK;
>   }
>
> -static int method_test_GTS(fwts_framework *fw)
> -{
> -	int i;
> -
> -	if (fwts_method_exists("_GTS") != NULL) {
> -		for (i=1; i<6; i++) {
> -			ACPI_OBJECT arg[1];
> -
> -			arg[0].Type = ACPI_TYPE_INTEGER;
> -			arg[0].Integer.Value = i;
> -
> -			fwts_log_info(fw, "Test _GTS(%d) (Going To Sleep, State S%d.", i, i);
> -
> -			if (method_evaluate_method(fw, METHOD_OPTIONAL, "_GTS", arg, 1,
> -						  method_test_NULL_return, NULL) == FWTS_NOT_EXIST)
> -				break;
> -			fwts_log_nl(fw);
> -		}
> -	}
> -	else {
> -		fwts_skipped(fw, "Optional control method _GTS does not exist.");
> -	}
> -	return FWTS_OK;
> -}
> -
>   static int method_test_TTS(fwts_framework *fw)
>   {
>   	int i;
> @@ -2202,9 +2153,7 @@ static fwts_framework_minor_test method_tests[] = {
>   	{ method_test_BBN, "Check _BBN (Base Bus Number)." },
>
>   	/* Section 15, Waking and Sleeping */
> -	{ method_test_BFS, "Check _BFS (Back from Sleep)." },
>   	{ method_test_PTS, "Check _PTS (Prepare to Sleep)." },
> -	{ method_test_GTS, "Check _GTS (Going to Sleep)." },
>   	{ method_test_TTS, "Check _TTS (Transition to State)." },
>   	{ method_test_S0,  "Check _S0  (System S0 State) Object." },
>   	{ method_test_S1,  "Check _S1  (System S1 State) Object." },
>

I never see _GTS and _BFS used anywhere, either.

Acked-by: Alex Hung <alex.hung@canonical.com>
Ivan Hu - Aug. 1, 2012, 2:54 a.m.
On 08/01/2012 12:38 AM, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> Just seen _GTS and _BFS support being removed from Linux and
> according to Len Brown:
>
> "_GTS and _BFS were added to the suspend/resume flow
> in the ACPI 2.0 specification.
>
> Linux dutifully implemented _GTS and _BFS.
> We discovered that it was rarely seen in systems
> in the field.  Further, some of those systems had
> AML so bogus that it could never work -- proof that
> no other operating system supports _GTS and _BFS.
> So we made _GTS and _BFS optional via modparam,
> and disabled them by default.
>
> But we've had to complicate some code to keep
> this support in the kernel, as these methods are defined
> to be evaluated very close to sleep entry and exit.
> Indeed, no other AML is ever evaluated with interrupts off.
>
> We have submitted a proposal for _GTS and _BFS
> to be officially removed from the ACPI specification
> on the next revision.  Here we remove it from Linux."
>
> So, these are not worth testing and should be deprecated
> from the method test.
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>   src/acpi/method/method.c |   55 ++--------------------------------------------
>   1 file changed, 2 insertions(+), 53 deletions(-)
>
> diff --git a/src/acpi/method/method.c b/src/acpi/method/method.c
> index a1bf873..032f42e 100644
> --- a/src/acpi/method/method.c
> +++ b/src/acpi/method/method.c
> @@ -48,7 +48,7 @@
>    * _BCM  B.6.3		Y
>    * _BCT  10.2.29	N
>    * _BDN  6.5.3		N
> - * _BFS  7.3.1		Y
> + * _BFS  7.3.1		deprecated
>    * _BIF  10.2.2.1	Y
>    * _BIX  10.2.2.2	Y
>    * _BLT  9.1.3		N
> @@ -109,7 +109,7 @@
>    * _GSB  6.2.6		N
>    * _GTF  9.8.1.1	N
>    * _GTM  9.8.2.1.1	N
> - * _GTS  7.3.3		Y
> + * _GTS  7.3.3		deprecated
>    * _GWS  9.18.5		N
>    * _HID  6.1.5		N
>    * _HOT  11.4.6		Y
> @@ -925,30 +925,6 @@ static int method_test_BMC(fwts_framework *fw)
>
>   /* Section 15, Waking and Sleeping */
>
> -static int method_test_BFS(fwts_framework *fw)
> -{
> -	int i;
> -
> -	if (fwts_method_exists("_BFS") != NULL) {
> -		for (i=1; i<6; i++) {
> -			ACPI_OBJECT arg[1];
> -
> -			arg[0].Type = ACPI_TYPE_INTEGER;
> -			arg[0].Integer.Value = i;
> -
> -			if (method_evaluate_method(fw, METHOD_OPTIONAL, "_BFS", arg, 1,
> -			  			  method_test_NULL_return, NULL) == FWTS_NOT_EXIST)
> -				break;
> -			fwts_log_nl(fw);
> -		}
> -	}
> -	else {
> -		fwts_skipped(fw, "Optional control method _BFS does not exist.");
> -	}
> -
> -	return FWTS_OK;
> -}
> -
>   static int method_test_PTS(fwts_framework *fw)
>   {
>   	int i;
> @@ -975,31 +951,6 @@ static int method_test_PTS(fwts_framework *fw)
>   	return FWTS_OK;
>   }
>
> -static int method_test_GTS(fwts_framework *fw)
> -{
> -	int i;
> -
> -	if (fwts_method_exists("_GTS") != NULL) {
> -		for (i=1; i<6; i++) {
> -			ACPI_OBJECT arg[1];
> -
> -			arg[0].Type = ACPI_TYPE_INTEGER;
> -			arg[0].Integer.Value = i;
> -
> -			fwts_log_info(fw, "Test _GTS(%d) (Going To Sleep, State S%d.", i, i);
> -
> -			if (method_evaluate_method(fw, METHOD_OPTIONAL, "_GTS", arg, 1,
> -						  method_test_NULL_return, NULL) == FWTS_NOT_EXIST)
> -				break;
> -			fwts_log_nl(fw);
> -		}
> -	}
> -	else {
> -		fwts_skipped(fw, "Optional control method _GTS does not exist.");
> -	}
> -	return FWTS_OK;
> -}
> -
>   static int method_test_TTS(fwts_framework *fw)
>   {
>   	int i;
> @@ -2202,9 +2153,7 @@ static fwts_framework_minor_test method_tests[] = {
>   	{ method_test_BBN, "Check _BBN (Base Bus Number)." },
>
>   	/* Section 15, Waking and Sleeping */
> -	{ method_test_BFS, "Check _BFS (Back from Sleep)." },
>   	{ method_test_PTS, "Check _PTS (Prepare to Sleep)." },
> -	{ method_test_GTS, "Check _GTS (Going to Sleep)." },
>   	{ method_test_TTS, "Check _TTS (Transition to State)." },
>   	{ method_test_S0,  "Check _S0  (System S0 State) Object." },
>   	{ method_test_S1,  "Check _S1  (System S1 State) Object." },
>

Acked-by: Ivan Hu <ivan.hu@canonical.com>

Patch

diff --git a/src/acpi/method/method.c b/src/acpi/method/method.c
index a1bf873..032f42e 100644
--- a/src/acpi/method/method.c
+++ b/src/acpi/method/method.c
@@ -48,7 +48,7 @@ 
  * _BCM  B.6.3		Y
  * _BCT  10.2.29	N
  * _BDN  6.5.3		N
- * _BFS  7.3.1		Y
+ * _BFS  7.3.1		deprecated
  * _BIF  10.2.2.1	Y
  * _BIX  10.2.2.2	Y
  * _BLT  9.1.3		N
@@ -109,7 +109,7 @@ 
  * _GSB  6.2.6		N
  * _GTF  9.8.1.1	N
  * _GTM  9.8.2.1.1	N
- * _GTS  7.3.3		Y
+ * _GTS  7.3.3		deprecated
  * _GWS  9.18.5		N
  * _HID  6.1.5		N
  * _HOT  11.4.6		Y
@@ -925,30 +925,6 @@  static int method_test_BMC(fwts_framework *fw)
 
 /* Section 15, Waking and Sleeping */
 
-static int method_test_BFS(fwts_framework *fw)
-{
-	int i;
-
-	if (fwts_method_exists("_BFS") != NULL) {
-		for (i=1; i<6; i++) {
-			ACPI_OBJECT arg[1];
-
-			arg[0].Type = ACPI_TYPE_INTEGER;
-			arg[0].Integer.Value = i;
-
-			if (method_evaluate_method(fw, METHOD_OPTIONAL, "_BFS", arg, 1,
-			  			  method_test_NULL_return, NULL) == FWTS_NOT_EXIST)
-				break;
-			fwts_log_nl(fw);
-		}
-	}
-	else {
-		fwts_skipped(fw, "Optional control method _BFS does not exist.");
-	}
-
-	return FWTS_OK;
-}
-
 static int method_test_PTS(fwts_framework *fw)
 {
 	int i;
@@ -975,31 +951,6 @@  static int method_test_PTS(fwts_framework *fw)
 	return FWTS_OK;
 }
 
-static int method_test_GTS(fwts_framework *fw)
-{
-	int i;
-
-	if (fwts_method_exists("_GTS") != NULL) {
-		for (i=1; i<6; i++) {
-			ACPI_OBJECT arg[1];
-
-			arg[0].Type = ACPI_TYPE_INTEGER;
-			arg[0].Integer.Value = i;
-
-			fwts_log_info(fw, "Test _GTS(%d) (Going To Sleep, State S%d.", i, i);
-
-			if (method_evaluate_method(fw, METHOD_OPTIONAL, "_GTS", arg, 1,
-						  method_test_NULL_return, NULL) == FWTS_NOT_EXIST)
-				break;
-			fwts_log_nl(fw);
-		}
-	}
-	else {
-		fwts_skipped(fw, "Optional control method _GTS does not exist.");
-	}
-	return FWTS_OK;
-}
-
 static int method_test_TTS(fwts_framework *fw)
 {
 	int i;
@@ -2202,9 +2153,7 @@  static fwts_framework_minor_test method_tests[] = {
 	{ method_test_BBN, "Check _BBN (Base Bus Number)." },
 
 	/* Section 15, Waking and Sleeping */
-	{ method_test_BFS, "Check _BFS (Back from Sleep)." },
 	{ method_test_PTS, "Check _PTS (Prepare to Sleep)." },
-	{ method_test_GTS, "Check _GTS (Going to Sleep)." },
 	{ method_test_TTS, "Check _TTS (Transition to State)." },
 	{ method_test_S0,  "Check _S0  (System S0 State) Object." },
 	{ method_test_S1,  "Check _S1  (System S1 State) Object." },