>> So, please try hack thermal.c by removing calls to _TMP.
>
>I did something like that before, by changing acpi_evaluate_integer()
>to return 3000 if it is asked for _TMP.  
>
>--- a/utils.c  2006-03-15 01:42:34.000000000 -0500
>+++ b/utils.c  2006-03-14 23:36:59.000000000 -0500
>@@ -270,7 +270,15 @@ acpi_evaluate_integer(acpi_handle handle
>       memset(element, 0, sizeof(union acpi_object));
>       buffer.length = sizeof(union acpi_object);
>       buffer.pointer = element;
>-      status = acpi_evaluate_object(handle, pathname, 
>arguments, &buffer);
>+      if (strcmp(pathname, "_TMP") != 0)
>+        status = acpi_evaluate_object(handle, pathname, 
>arguments, &buffer);
>+      else {
>+        printk(KERN_INFO PREFIX "acpi_evaluate_integer: 
>Faking _TMP\n");
>+        status = AE_OK;
>+        element->type = ACPI_TYPE_INTEGER;
>+        element->integer.value = 3000; /* 27 C, in deciKelvins */
>+      }
>+
>       if (ACPI_FAILURE(status)) {
>               acpi_util_eval_error(handle, pathname, status);
>               return_ACPI_STATUS(status);
>
>
>The alternative, obvious change in thermal.c (diff below) turns out
>not to be a minimal change.  If acpi_thermal_get_temperature() returns
>with a failure, then most of the later methods in THM0 aren't
>executed, so one is actually commenting out much more than _TMP.
>
>Which is why I think the minimal change is the diff above to utils.c.
>With that change the system never hung.

Good, this is exactly what I wanted.  How many times you tested with
this
hack without hang?  If s3 hang really goes away , then probably you can
move on , and come up with a real patch that could go into the 2.6.16. 
What do you think? :-)

The short-term proper way could be:
1. add a global variable: acpi_in_suspend.
2. in acpi_pm_prepare:
        a.call acpi_os_wait_events_complete()
        b.set acpi_in_suspend = YES.
   in acpi_pm_finish :
        set acpi_in_suspend = NO.
3. in acpi_thermal_run:
        if (acpi_in_suspend == YES)
                do nothing.

The long-term proper way should be:
1. ACPI subsystem should stop invoking BIOS before Suspend except
for several necessary AML methods that are required to put 
the platform into S3 state.  Otherwise, un-tested BIOS code path 
could cause trouble to linux, because I assume such platform 
should have been tested under windows. 

Thanks,
Luming
 
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to