svn commit: r184558 - head/sys/dev/acpica/Osd

Alexander Motin mav at FreeBSD.org
Sun Nov 2 04:50:17 PST 2008


Author: mav
Date: Sun Nov  2 12:50:16 2008
New Revision: 184558
URL: http://svn.freebsd.org/changeset/base/184558

Log:
  As soon as we have several threads per process now, it is not correct to
  use process ID as ACPI thread ID. Concurrent requests with equal thread
  IDs broke ACPI mutexes operation causing unpredictable errors including
  AE_AML_MUTEX_NOT_ACQUIRED that I have seen.
  
  Use kernel thread ID instead of process ID for ACPI thread.

Modified:
  head/sys/dev/acpica/Osd/OsdSchedule.c

Modified: head/sys/dev/acpica/Osd/OsdSchedule.c
==============================================================================
--- head/sys/dev/acpica/Osd/OsdSchedule.c	Sun Nov  2 11:49:19 2008	(r184557)
+++ head/sys/dev/acpica/Osd/OsdSchedule.c	Sun Nov  2 12:50:16 2008	(r184558)
@@ -187,13 +187,9 @@ AcpiOsStall(UINT32 Microseconds)
 ACPI_THREAD_ID
 AcpiOsGetThreadId(void)
 {
-    struct proc *p;
 
     /* XXX do not add ACPI_FUNCTION_TRACE here, results in recursive call. */
 
-    p = curproc;
-    KASSERT(p != NULL, ("%s: curproc is NULL!", __func__));
-
     /* Returning 0 is not allowed. */
-    return (p->p_pid + 1);
+    return (curthread->td_tid + 1);
 }


More information about the svn-src-head mailing list