From owner-acpi-jp@jp.freebsd.org  Wed Nov  7 04:25:40 2001
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id EAA08107;
	Wed, 7 Nov 2001 04:25:40 +0900 (JST)
	(envelope-from owner-acpi-jp@jp.FreeBSD.org)
Received: from tasogare.imasy.or.jp (daemon@tasogare.imasy.or.jp [202.227.24.5])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id EAA08102;
	Wed, 7 Nov 2001 04:25:40 +0900 (JST)
	(envelope-from iwasaki@jp.FreeBSD.org)
Received: from localhost (iwasaki.imasy.or.jp [202.227.24.92])
	(authenticated as iwa with CRAM-MD5)
	by tasogare.imasy.or.jp (8.11.6+3.4W/8.11.6/tasogare/smtpfeed 1.14) with ESMTP/inet id fA6JPbW88976;
	Wed, 7 Nov 2001 04:25:37 +0900 (JST)
	(envelope-from iwasaki@jp.FreeBSD.org)
Date: Wed, 07 Nov 2001 04:25:34 +0900 (JST)
Message-Id: <20011107.042534.92590451.iwasaki@jp.FreeBSD.org>
To: acpi-jp@jp.freebsd.org, jhb@FreeBSD.org
Cc: robert.moore@intel.com, Grover@jp.freebsd.org, andrew.grover@intel.com,
        Therien@jp.freebsd.org, guy.therien@intel.com,
        Diefenbaugh@jp.freebsd.org, paul.s.diefenbaugh@intel.com
From: Mitsuru IWASAKI <iwasaki@jp.freebsd.org>
In-Reply-To: <XFMail.011106093916.jhb@FreeBSD.org>
References: <B9ECACBD6885D5119ADC00508B68C1EA2FDFDD@orsmsx107.jf.intel.com>
	<XFMail.011106093916.jhb@FreeBSD.org>
X-Mailer: Mew version 2.0 on Emacs 20.7 / Mule 4.0 (HANANOEN)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Reply-To: acpi-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+010328
X-Sequence: acpi-jp 1448
Subject: [acpi-jp 1448] Re: ACPI CA Mutex patches
Errors-To: owner-acpi-jp@jp.freebsd.org
Sender: owner-acpi-jp@jp.freebsd.org
X-Originator: iwasaki@jp.freebsd.org

Hi, John.

> >From a theory standpoint, there's no reason to bother caring about release
> orders, just acquire orders.

I was thinking of deadlock cases.  How about this?

    Mutex(MTX0, 0)
    Mutex(MTX1, 0)

    Method(DLCK)
    {
        Acquire(MTX0, 0xffff)
        Acquire(MTX1, 0xffff)
        Release(MTX0)

        Sleep(10000)    /* the processor maybe relinquished */

        Acquire(MTX0, 0xffff)
        Release(MTX0)
        Release(MTX1)
    }

If more than one thread invoke this method at almost the same time,
the first thread maybe stuck at Acquire(MTX0) after Sleep(), the
second stuck at Acquire(MTX1) and other threads stuck at Acquire(MTX0)...
Is my understanding correct?

Thanks
