• Len Brown's avatar
    [ACPI] ACPICA 20040427 from Bob Moore · 5eb3a43d
    Len Brown authored
    Completed a major overhaul of the GPE handling within ACPI CA.
    There are now three types of GPEs:
    wake-only; runtime-only; combination wake/run.
    
    The only GPEs allowed to be combination wake/run are for
    button-style devices such as a control-method power button,
    control-method sleep button, or a notebook lid switch.
    GPEs that have an _Lxx or _Exx method and are not referenced
    by any _PRW methods are marked for "runtime" and hardware enabled.
    
    Any GPE that is referenced by a _PRW method is marked for "wake"
    (and disabled at runtime).  However, at sleep time, only those
    GPEs that have been specifically enabled for wake via the
    acpi_enable_gpe() interface will actually be hardware enabled.
    
    A new external interface has been added, acpi_set_gpe_type()
    that is meant to be used by device drivers to force a GPE
    to a particular type.  It will be especially useful for the
    drivers for the button devices mentioned above.
    
    Completed restructuring of the ACPI CA initialization sequence
    so that default operation region handlers are installed
    before GPEs are initialized and the _PRW methods are executed.
    This will prevent errors when the _PRW methods attempt to
    access system memory or I/O space.
    
    GPE enable/disable no longer reads the GPE enable register.
    We now keep the enable info for runtime and wake separate
    and in the GPE_EVENT_INFO.  We thus no longer depend on
    the hardware to maintain these bits.
    
    Always clear the wake status and fixed/GPE status bits
    before sleep, even for state S5.
    
    Improved the AML debugger output for displaying the
    GPE blocks and their current status.
    
    Added new strings for the _OSI method, of the form
    "Windows 2001 SPx" where x = 0,1,2,3,4.
    
    Fixed a problem where the physical address was incorrectly
    calculated when the Load() operator was used to directly
    load from an Operation Region (vs. loading from a Field object.)
    Also added check for minimum table length for this case.
    
    Fix for multiple mutex acquisition.  Restore original thread
    SyncLevel on mutex release.
    
    Added ACPI_VALID_SXDS flag to the acpi_get_object_info interface
    for consistency with the other fields returned.
    
    Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.
    There is one such structure for each GPE in the system,
    so the size of this structure is important.
    
    CPU stack requirement reduction:
    Cleaned up the method execution and object evaluation paths
    so that now a parameter structure is passed, instead of copying
    the various method parameters over and over again.
    
    In evregion.c:
    Correctly exit and reenter the interpreter region if and only
    if dispatching an operation region request to a user-installed
    handler. Do not exit/reenter when dispatching to a default
    handler (e.g., default system memory or I/O handlers)
    5eb3a43d
acdispat.h 13.9 KB