From owner-acpi-jp@jp.freebsd.org  Tue Nov  6 08:40:42 2001
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id IAA26925;
	Tue, 6 Nov 2001 08:40:42 +0900 (JST)
	(envelope-from owner-acpi-jp@jp.FreeBSD.org)
Received: from mass.dis.org (mass.dis.org [216.240.45.41])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id IAA26919;
	Tue, 6 Nov 2001 08:40:41 +0900 (JST)
	(envelope-from msmith@mass.dis.org)
Received: from mass.dis.org (localhost [127.0.0.1])
	by mass.dis.org (8.11.6/8.11.3) with ESMTP id fA5NfVm05470;
	Mon, 5 Nov 2001 15:41:32 -0800 (PST)
	(envelope-from msmith@mass.dis.org)
Message-Id: <200111052341.fA5NfVm05470@mass.dis.org>
To: acpi-jp@jp.freebsd.org
cc: "'Mitsuru IWASAKI'" <iwasaki@jp.freebsd.org>,
        "Grover,
    Andrew" <andrew.grover@intel.com>,
        "Therien,
    Guy" <guy.therien@intel.com>,
        "Diefenbaugh,
    Paul S" <paul.s.diefenbaugh@intel.com>
In-Reply-To: Message from "Moore, Robert" <robert.moore@intel.com> 
   of "Mon, 05 Nov 2001 14:25:41 PST." <B9ECACBD6885D5119ADC00508B68C1EA2FDFD9@orsmsx107.jf.intel.com> 
Date: Mon, 05 Nov 2001 15:41:31 -0800
From: Mike Smith <msmith@freebsd.org>
Reply-To: acpi-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+010328
X-Sequence: acpi-jp 1440
Subject: [acpi-jp 1440] Re: ACPI CA Mutex patches 
Errors-To: owner-acpi-jp@jp.freebsd.org
Sender: owner-acpi-jp@jp.freebsd.org
X-Originator: msmith@freebsd.org

> I'd also like to make sure that everyone agrees on the "correct" behavior of
> this type of AML code, and here are some more examples along with my
> understanding of what should happen:
> 
>     Mutex(MUT0, 1)
>     Mutex(MUT1, 0)
> 
> 
>     Method(TES2)
>     {
>             TE21()
>             TE22()                  /* AE_OK */

This won't work because you don't support implicit returns...

>     }
>     Method(TE21)
>     {
>             Acquire(MUT0, 0x500)
>     }
>     Method(TE22)
>     {
>             Release(MUT0)

... here. 8)

>     Method(TES4)
>     {
>             Acquire(MUT1, 0x500)
>             Acquire(MUT0, 0x500)
>             Release(MUT1)
>             Release(MUT0)           /* AE_AML_MUTEX_ORDER */
>     }

I think this should error as soon as MUT1 is released; at that point
you already know that ordering has been violated.

It's also not clear to me what should happen on return from a top-level
method invocation if a mutex is left held.  Do you plan to check?

Regards,
Mike
