Why is Scope(_TZ_) defined as ACPI_TYPE_THERMAL rather than ACPI_TYPE_LOCAL_SCOPE
Hi, Bob,
this is the code in utglobal.c,
/*
* Predefined ACPI Names (Built-in to the Interpreter)
*
* NOTES:
* 1) _SB_ is defined to be a device to allow \_SB_._INI to be run
* during the initialization sequence.
* 2) _TZ_ is defined to be a thermal zone in order to allow ASL code to
* perform a Notify() operation on it.
*/
const struct acpi_predefined_names acpi_gbl_pre_defined_names[] = {
{"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL},
{"_PR_", ACPI_TYPE_LOCAL_SCOPE, NULL},
{"_SB_", ACPI_TYPE_DEVICE, NULL},
{"_SI_", ACPI_TYPE_LOCAL_SCOPE, NULL},
{"_TZ_", ACPI_TYPE_THERMAL, NULL},
{"_REV", ACPI_TYPE_INTEGER, (char *)ACPI_CA_SUPPORT_LEVEL},
{"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME},
{"_GL_", ACPI_TYPE_MUTEX, (char *)1},I found a problem that Linux thermal driver tries to probe _TZ_ because the _TZ_ ACPI namespace node type suggests it's a thermal device.
I'm wondering why it's a device rather than a scope.
The comment above says ASL code may perform a Notify() operation on it, but IMO, this notification is meaningless on its own, because _TZ_ can neither detect the temperature, nor cool the system down, i.e. no action should be taken on this notification.
So I think we should change the type to ACPI_TYPE_LOCAL_SCOPE, just like _PR_, _GPE.
BTW: yes, we can do the tricks in Linux/ACPI code, but it's more likely an ACPICA problem. what do you think?
thanks,
rui
I don't remember all of the details on this, but I will look at it and get back to you.
Quoted 47 lines
-----Original Message-----
From: Zhang, Rui
Sent: Monday, September 20, 2010 12:08 AM
To: Moore, Robert
Cc: [email protected]; Lin, Ming M; Brown, Len
Subject: Why isScope(_TZ_)defined asACPI_TYPE_THERMALrather thanACPI_TYPE_LOCAL_SCOPEHi, Bob,
this is the code in
utglobal.c,
/*
* Predefined ACPI Names (Built-in to the Interpreter)
*
* NOTES:
* 1) _SB_ is defined to be a device to allow \_SB_._INI to be run
* during the initialization sequence.
* 2) _TZ_ is defined to be a thermal zone in order to allow ASL code to
* perform aNotify()operation on it.
*/const struct acpi_predefined_names acpi_gbl_pre_defined_names[] = { {"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL}, {"_PR_", ACPI_TYPE_LOCAL_SCOPE, NULL}, {"_SB_", ACPI_TYPE_DEVICE, NULL}, {"_SI_", ACPI_TYPE_LOCAL_SCOPE, NULL}, {"_TZ_", ACPI_TYPE_THERMAL, NULL}, {"_REV", ACPI_TYPE_INTEGER, (char *)ACPI_CA_SUPPORT_LEVEL}, {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME}, {"_GL_", ACPI_TYPE_MUTEX, (char *)1},I found a problem that Linux thermal driver tries to probe _TZ_ because the _TZ_ ACPI namespace node type suggests it's a thermal device.
I'm wondering why it's a device rather than a scope.
The comment above says ASL code may perform aNotify()operation on it, but IMO, this notification is meaningless on its own, because _TZ_ can neither detect the temperature, nor cool the system down, i.e. no action should be taken on this notification.So I think we should change the type to
ACPI_TYPE_LOCAL_SCOPE, just like _PR_,_GPE.BTW: yes, we can do the tricks in Linux/ACPI code, but it's more likely an ACPICA problem. what do you think?
thanks,
rui
The comment appears to be correct as far as notifies on _TZ. I easily found a couple machines:
C:\ACPI_PREVIOUS\ASLFILES\DSDT DATABASE\Benq-Joybook_6000-017-original.asl(3652): Notify (\_TZ, 0x80)
C:\ACPI_PREVIOUS\ASLFILES\DSDT DATABASE\Benq-Joybook_7000-R202-custom.asl(3247): Notify (\_TZ, 0x80)
C:\ACPI_PREVIOUS\ASLFILES\DSDT DATABASE\Toshiba-Tecra_S1-2.30-custom.asl(708): Notify (\_TZ, 0x80)
C:\ACPI_PREVIOUS\ASLFILES\DSDT DATABASE\Toshiba-Tecra_S1-2.30-custom.asl(723): Notify (\_TZ, 0x80)
C:\ACPI_PREVIOUS\ASLFILES\DSDT DATABASE\Toshiba-Tecra_S1-2.30-custom.asl(3560): Notify (\_TZ, 0x80)
Quoted 47 lines
-----Original Message-----
From: Zhang, Rui
Sent: Monday, September 20, 2010 12:08 AM
To: Moore, Robert
Cc: [email protected]; Lin, Ming M; Brown, Len
Subject: Why isScope(_TZ_)defined asACPI_TYPE_THERMALrather thanACPI_TYPE_LOCAL_SCOPEHi, Bob,
this is the code in
utglobal.c,
/*
* Predefined ACPI Names (Built-in to the Interpreter)
*
* NOTES:
* 1) _SB_ is defined to be a device to allow \_SB_._INI to be run
* during the initialization sequence.
* 2) _TZ_ is defined to be a thermal zone in order to allow ASL code to
* perform aNotify()operation on it.
*/const struct acpi_predefined_names acpi_gbl_pre_defined_names[] = { {"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL}, {"_PR_", ACPI_TYPE_LOCAL_SCOPE, NULL}, {"_SB_", ACPI_TYPE_DEVICE, NULL}, {"_SI_", ACPI_TYPE_LOCAL_SCOPE, NULL}, {"_TZ_", ACPI_TYPE_THERMAL, NULL}, {"_REV", ACPI_TYPE_INTEGER, (char *)ACPI_CA_SUPPORT_LEVEL}, {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME}, {"_GL_", ACPI_TYPE_MUTEX, (char *)1},I found a problem that Linux thermal driver tries to probe _TZ_ because the _TZ_ ACPI namespace node type suggests it's a thermal device.
I'm wondering why it's a device rather than a scope.
The comment above says ASL code may perform aNotify()operation on it, but IMO, this notification is meaningless on its own, because _TZ_ can neither detect the temperature, nor cool the system down, i.e. no action should be taken on this notification.So I think we should change the type to
ACPI_TYPE_LOCAL_SCOPE, just like _PR_,_GPE.BTW: yes, we can do the tricks in Linux/ACPI code, but it's more likely an ACPICA problem. what do you think?
thanks,
rui
Hi, bob,
Quoted 8 lines · Robert
The comment appears to be correct as far as notifies on
_TZ. I easily found a couple machines:C:\ACPI_PREVIOUS\ASLFILES\DSDT DATABASE\Benq-Joybook_6000-017-original.asl(3652): Notify (\_TZ,
0x80)
C:\ACPI_PREVIOUS\ASLFILES\DSDT DATABASE\Benq-Joybook_7000-R202-custom.asl(3247): Notify (\_TZ,0x80)
C:\ACPI_PREVIOUS\ASLFILES\DSDT DATABASE\Toshiba-Tecra_S1-2.30-custom.asl(708): Notify (\_TZ,0x80)
C:\ACPI_PREVIOUS\ASLFILES\DSDT DATABASE\Toshiba-Tecra_S1-2.30-custom.asl(723): Notify (\_TZ,0x80)
C:\ACPI_PREVIOUS\ASLFILES\DSDT DATABASE\Toshiba-Tecra_S1-2.30-custom.asl(3560): Notify (\_TZ,0x80)
what does Notify (\_TZ, 0x80) mean?_TZ doesn't have _TMP method as it's not an thermal zone actually. So what action should be taken when evaluating this ASL code?
Plus, if we really want "Notify(\_TZ, 0x80)", we can use ACPI_TYPE_DEVICE rather than ACPI_TYPE_THERMAL, right?
thanks,
rui
Quoted 51 lines
Quoted 50 lines
-----Original Message-----
From: Zhang, Rui
Sent: Monday, September 20, 2010 12:08 AM
To: Moore, Robert
Cc: [email protected]; Lin, Ming M; Brown, Len
Subject: Why isScope(_TZ_)defined asACPI_TYPE_THERMALrather thanACPI_TYPE_LOCAL_SCOPEHi, Bob,
this is the code in
utglobal.c,
/*
* Predefined ACPI Names (Built-in to the Interpreter)
*
* NOTES:
* 1) _SB_ is defined to be a device to allow \_SB_._INI to be run
* during the initialization sequence.
* 2) _TZ_ is defined to be a thermal zone in order to allow ASL code to
* perform aNotify()operation on it.
*/const struct acpi_predefined_names acpi_gbl_pre_defined_names[] = { {"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL}, {"_PR_", ACPI_TYPE_LOCAL_SCOPE, NULL}, {"_SB_", ACPI_TYPE_DEVICE, NULL}, {"_SI_", ACPI_TYPE_LOCAL_SCOPE, NULL}, {"_TZ_", ACPI_TYPE_THERMAL, NULL}, {"_REV", ACPI_TYPE_INTEGER, (char *)ACPI_CA_SUPPORT_LEVEL}, {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME}, {"_GL_", ACPI_TYPE_MUTEX, (char *)1},I found a problem that Linux thermal driver tries to probe _TZ_ because the _TZ_ ACPI namespace node type suggests it's a thermal device.
I'm wondering why it's a device rather than a scope.
The comment above says ASL code may perform aNotify()operation on it, but IMO, this notification is meaningless on its own, because _TZ_ can neither detect the temperature, nor cool the system down, i.e. no action should be taken on this notification.So I think we should change the type to
ACPI_TYPE_LOCAL_SCOPE, just like _PR_,_GPE.BTW: yes, we can do the tricks in Linux/ACPI code, but it's more likely an ACPICA problem. what do you think?
thanks,
rui
Yes, perhaps it should be type Device.
Quoted 87 lines
-----Original Message-----
From: Zhang, Rui
Sent: Monday, September 20, 2010 5:17 PM
To: Moore, Robert
Cc: [email protected]; Lin, Ming M; Brown, Len
Subject: RE: Why isScope(_TZ_)defined asACPI_TYPE_THERMALrather thanACPI_TYPE_LOCAL_SCOPEHi, bob,
Quoted 1 line · Robert
The comment appears to be correct as far as notifies on
_TZ. I easilyfound a couple machines:
Quoted 2 lines
C:\ACPI_PREVIOUS\ASLFILES\DSDT DATABASE\Benq-Joybook_6000-017-
original.asl(3652): Notify (\_TZ,0x80)Quoted 1 line
C:\ACPI_PREVIOUS\ASLFILES\DSDT DATABASE\Benq-Joybook_7000-R202-
custom.asl(3247): Notify (\_TZ,0x80)Quoted 1 line
C:\ACPI_PREVIOUS\ASLFILES\DSDT DATABASE\Toshiba-Tecra_S1-2.30-
custom.asl(708): Notify (\_TZ,0x80)Quoted 1 line
C:\ACPI_PREVIOUS\ASLFILES\DSDT DATABASE\Toshiba-Tecra_S1-2.30-
custom.asl(723): Notify (\_TZ,0x80)Quoted 1 line
C:\ACPI_PREVIOUS\ASLFILES\DSDT DATABASE\Toshiba-Tecra_S1-2.30-
custom.asl(3560): Notify (\_TZ,0x80)Quoted 1 line
what does Notify (\_TZ,
0x80) mean?_TZdoesn't have_TMPmethod as it's not an thermal zone actually. So what action should be taken when evaluating this ASL code?Plus, if we really want "
Notify(\_TZ, 0x80)", we can useACPI_TYPE_DEVICErather thanACPI_TYPE_THERMAL, right?thanks,
ruiQuoted 51 lines
Quoted 50 lines
-----Original Message-----
From: Zhang, Rui
Sent: Monday, September 20, 2010 12:08 AM
To: Moore, Robert
Cc: [email protected]; Lin, Ming M; Brown, Len
Subject: Why isScope(_TZ_)defined asACPI_TYPE_THERMALrather thanACPI_TYPE_LOCAL_SCOPEHi, Bob,
this is the code in
utglobal.c,
/*
* Predefined ACPI Names (Built-in to the Interpreter)
*
* NOTES:
* 1) _SB_ is defined to be a device to allow \_SB_._INI to be run
* during the initialization sequence.
* 2) _TZ_ is defined to be a thermal zone in order to allow ASL code to
* perform aNotify()operation on it.
*/const struct acpi_predefined_names acpi_gbl_pre_defined_names[] = { {"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL}, {"_PR_", ACPI_TYPE_LOCAL_SCOPE, NULL}, {"_SB_", ACPI_TYPE_DEVICE, NULL}, {"_SI_", ACPI_TYPE_LOCAL_SCOPE, NULL}, {"_TZ_", ACPI_TYPE_THERMAL, NULL}, {"_REV", ACPI_TYPE_INTEGER, (char *)ACPI_CA_SUPPORT_LEVEL}, {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME}, {"_GL_", ACPI_TYPE_MUTEX, (char *)1},I found a problem that Linux thermal driver tries to probe _TZ_ because the _TZ_ ACPI namespace node type suggests it's a thermal device.
I'm wondering why it's a device rather than a scope.
The comment above says ASL code may perform aNotify()operation on it, but IMO, this notification is meaningless on its own, because _TZ_ can neither detect the temperature, nor cool the system down, i.e. no action should be taken on this notification.So I think we should change the type to
ACPI_TYPE_LOCAL_SCOPE, just like _PR_,_GPE.BTW: yes, we can do the tricks in Linux/ACPI code, but it's more likely an ACPICA problem. what do you think?
thanks,
rui