Bug 2511
Summary: | fan state wrong according with debug message | ||
---|---|---|---|
Product: | ACPI | Reporter: | Wang, Zhenyu Z (zhenyu.z.wang) |
Component: | Power-Thermal | Assignee: | Konstantin Karasyov (konstantin.karasyov) |
Status: | REJECTED INVALID | ||
Severity: | normal | CC: | acpi-bugzilla |
Priority: | P2 | ||
Hardware: | i386 | ||
OS: | Linux | ||
Kernel Version: | 2.6.5 | Subsystem: | |
Regression: | --- | Bisected commit-id: | |
Attachments: |
lspci -v
dsdt.dsl scope_tz_handler.patch |
Description
Wang, Zhenyu Z
2004-04-15 01:26:17 UTC
Created attachment 2596 [details]
lspci -v
Created attachment 2597 [details]
dsdt.dsl
The _TZ object apparently does not have the correct type (ThermalZone). It is one of the "predefined" types, so we can fix this in the ACPI CA core. Try this: In utglobal.c: /****************************************************************************** * * Namespace globals * ******************************************************************************/ /* * 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. */ 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_LOCAL_SCOPE, NULL}, + {"_TZ_", ACPI_TYPE_THERMAL, NULL}, {"_REV", ACPI_TYPE_INTEGER, "2"}, {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME}, {"_GL_", ACPI_TYPE_MUTEX, "0"}, #if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY) {"_OSI", ACPI_TYPE_METHOD, "1"}, #endif {NULL, ACPI_TYPE_ANY, NULL} /* Table terminator */ }; Interestingly, I don't think that this is valid code: Notify (\_TZ, 0x80) Because in the ACPI spec, _TZ is NOT defined as a ThermalZone object. Even if we allow this behavior in ACPI CA, I should point out that it is almost certain that no unix or linux code has implemented support for this in the thermal driver. I.e., nobody is listening for the notify. Bob Yes. After set "\_TZ" with ACPI_TYPE_THEMAL, no notify handler for that. Execute Method: [\_TZ_.PFA0._OFF] (Node cdf5f628) exregion-0294 [76] ex_system_io_space_han: system_iO 0 (32 width) Address=0000000000001010 exregion-0294 [77] ex_system_io_space_han: system_iO 1 (8 width) Address=00000000000000B3 exregion-0294 [77] ex_system_io_space_han: system_iO 1 (8 width) Address=00000000000000B2 evmisc-0135 [68] ev_queue_notify_reques: Dispatching Notify(80) on node cdfc78a8 evmisc-0143 [68] ev_queue_notify_reques: notify value: 0x2.2_x **Device Specific** evmisc-0200 [68] ev_queue_notify_reques: No notify handler for [_TZ_] node cdfc78a8 I've tried two ways. 1. modify DSDT, change Notify (\_TZ, 0x80) into Notify (\_TZ.THZN, 0x80) This lets thermal resource called when event arrives, then \_TZ.THZN._TMP will be called. 2. add default handler to Scope TZ object. It is just a debug patch, add new global object which behave like acpi_gbl_root_node, and catch notify event(now do nothing). This is for test only. Created attachment 2823 [details]
scope_tz_handler.patch
The patch should not have to touch the core ACPI CA code. Bob Is this BIOS bug on this particular system, or do multiple systems have this problem? re-opening -- debug patch only. need patch to thermal.c to register notify handler on _TZ May also need ACPI spec update here to match common practice. ACPI spec defines no notifications to _TZ scope, moreover notification with value 0x80 defined as follows: Thermal Zone Status Changed. Used to notify OSPM that the thermal zone temperature has changed. so, it should be sent to one particular thermal zone. Also, I naven't seen any similar issues, so this problem is a BIOS bug. Rejecting. |