18 Aug, 2008

1 commit


17 Jul, 2008

3 commits

  • Eliminated unnecessary operands; eliminated use of negative index
    in loop. Operands now displayed in correct order, not backwards.

    Signed-off-by: Bob Moore
    Signed-off-by: Lin Ming
    Signed-off-by: Len Brown
    Signed-off-by: Andi Kleen

    Bob Moore
     
  • No longer needed; replaced mostly with u32, but also acpi_size
    where a type that changes 32/64 bit on 32/64-bit platforms is
    required.

    v2: Fix a cast of a 32-bit int to a pointer in ACPI to avoid a compiler warning.
    from David Howells

    Signed-off-by: Bob Moore
    Signed-off-by: Lin Ming
    Signed-off-by: Len Brown
    Signed-off-by: Andi Kleen

    Bob Moore
     
  • Fixes problem where the new method argument count validation mechanism
    will enter an infinite loop when a GPE method is dispatched.
    Problem fixed be removing the obsolete code that passes GPE block
    information to the notify handler via the control method parameter pointer.

    Signed-off-by: Bob Moore
    Signed-off-by: Lin Ming
    Signed-off-by: Len Brown
    Signed-off-by: Andi Kleen

    Bob Moore
     

12 Jun, 2008

1 commit


23 May, 2008

1 commit

  • drivers/acpi/dispatcher/dsmethod.c:568:50: warning: Using plain integer as NULL pointer
    drivers/acpi/executer/exmutex.c:329:30: warning: Using plain integer as NULL pointer
    drivers/acpi/executer/exmutex.c:466:31: warning: Using plain integer as NULL pointer

    Signed-off-by: Harvey Harrison
    Signed-off-by: Linus Torvalds

    Harvey Harrison
     

24 Apr, 2008

1 commit


23 Apr, 2008

12 commits


07 Feb, 2008

1 commit

  • Small ACPICA extension to be able to store the name of operation regions in osl.c later

    In ACPI, AML can define accesses to IO ports and System Memory by Operation
    Regions. Those are not registered as done by PNPACPI using resource templates
    (and _CRS/_SRS methods).

    The IO ports and System Memory regions may get accessed by arbitrary AML code.
    When native drivers are accessing the same resources bad things can happen
    (e.g. a critical shutdown temperature of 3000 C every 2 months or so).

    It is not really possible to register the operation regions via
    request_resource, as they often overlap with pnp or other resources (e.g.
    statically setup IO resources below 0x100).

    This approach stores all Operation Region declarations (IO and System Memory
    only) at ACPI table parse time. It offers a similar functionality like
    request_region and let drivers which are known to possibly use the same IO
    ports and Memory which are also often used by ACPI (hwmon and i2c) check for
    ACPI interference.

    A boot parameter acpi_enforce_resources=strict/lax/no is provided, which
    is default set to lax:
    - strict: let conflicting drivers fail to load with an error message
    - lax: let conflicting driver work normal with a warning message
    - no: no functional change at all
    Depending on the feedback and the kind of interferences we see, this
    should be set to strict at later time.

    Goal of this patch set is:
    - Identify ACPI interferences in bug reports (very hard to reproduce
    and to identify)
    - Find BIOSes for that an ACPI driver should exist for specific HW
    instead of a native one.
    - stability in general

    Provide acpi_check_{mem_}region.

    Drivers can additionally check against possible ACPI interference by also
    invoking this shortly before they call request_region.
    If -EBUSY is returned, the driver must not load.
    Use acpi_enforce_resources=strict/lax/no options to:
    - strict: let conflicting drivers fail to load with an error message
    - lax: let conflicting driver work normal with a warning message
    - no: no functional change at all

    Cc: "Mark M. Hoffman"
    Cc: Jean Delvare
    Cc: Len Brown
    Cc: Bjorn Helgaas
    Signed-off-by: Thomas Renninger
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    Thomas Renninger
     

03 Dec, 2007

1 commit

  • Changed resolution of named references in packages

    Fixed a problem with the Package operator where all named
    references were created as object references and left otherwise
    unresolved. According to the ACPI specification, a Package can
    only contain Data Objects or references to control methods. The
    implication is that named references to Data Objects (Integer,
    Buffer, String, Package, BufferField, Field) should be resolved
    immediately upon package creation. This is the approach taken
    with this change. References to all other named objects (Methods,
    Devices, Scopes, etc.) are all now properly created as reference objects.

    http://bugzilla.kernel.org/show_bug.cgi?id=5328
    http://bugzilla.kernel.org/show_bug.cgi?id=9429

    Signed-off-by: Bob Moore
    Signed-off-by: Len Brown

    Bob Moore
     

10 May, 2007

2 commits


16 Feb, 2007

1 commit

  • ACPI AML supports "serialized" methods which are protected
    by an implicit mutex. The mutex is re-entrant for that AML thread
    to allow recursion.

    However, Linux implements notify() by creating a new AML thread.
    So for systems where notify() re-enters a serialized method,
    deadlock results.

    The fix is to use the Linux thread_id as the key to allowing
    re-entrancy, not the AML thread pointer.

    http://bugzilla.kernel.org/show_bug.cgi?id=5534

    Signed-off-by: Alexey Starikovskiy
    Signed-off-by: Len Brown

    Alexey Starikovskiy
     

03 Feb, 2007

11 commits


10 Jul, 2006

1 commit

  • Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to
    support C compilers that do not allow the initialization
    of address pointers within packed structures - even though
    the hardware itself may support misaligned transfers. Some
    of the debug data structures are packed by default to
    minimize size.

    Added an error message for the case where
    acpi_os_get_thread_id() returns zero. A non-zero value is
    required by the core ACPICA code to ensure the proper
    operation of AML mutexes and recursive control methods.

    The DSDT is now the only ACPI table that determines whether
    the AML interpreter is in 32-bit or 64-bit mode. Not really
    a functional change, but the hooks for per-table 32/64
    switching have been removed from the code. A clarification
    to the ACPI specification is forthcoming in ACPI 3.0B.

    Fixed a possible leak of an Owner ID in the error
    path of tbinstal.c acpi_tb_init_table_descriptor() and
    migrated all table OwnerID deletion to a single place in
    acpi_tb_uninstall_table() to correct possible leaks when using
    the acpi_tb_delete_tables_by_type() interface (with assistance
    from Lance Ortiz.)

    Fixed a problem with Serialized control methods where the
    semaphore associated with the method could be over-signaled
    after multiple method invocations.

    Fixed two issues with the locking of the internal
    namespace data structure. Both the Unload() operator and
    acpi_unload_table() interface now lock the namespace during
    the namespace deletion associated with the table unload
    (with assistance from Linn Crosetto.)

    Fixed problem reports (Valery Podrezov) integrated: -
    Eliminate unnecessary memory allocation for CreateXxxxField
    http://bugzilla.kernel.org/show_bug.cgi?id=5426

    Fixed problem reports (Fiodor Suietov) integrated: -
    Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
    - On Address Space handler deletion, needless deactivation
    call (BZ 374) - AcpiRemoveAddressSpaceHandler: validate
    Device handle parameter (BZ 375) - Possible memory leak,
    Notify sub-objects of Processor, Power, ThermalZone (BZ
    376) - AcpiRemoveAddressSpaceHandler: validate Handler
    parameter (BZ 378) - Minimum Length of RSDT should be
    validated (BZ 379) - AcpiRemoveNotifyHandler: return
    AE_NOT_EXIST if Processor Obj has no Handler (BZ (380)
    - AcpiUnloadTable: return AE_NOT_EXIST if no table of
    specified type loaded (BZ 381)

    Signed-off-by: Bob Moore
    Signed-off-by: Len Brown

    Bob Moore
     

28 Jun, 2006

1 commit

  • Implemented a new acpi_spinlock type for the OSL lock
    interfaces. This allows the type to be customized to
    the host OS for improved efficiency (since a spinlock is
    usually a very small object.)

    Implemented support for "ignored" bits in the ACPI
    registers. According to the ACPI specification, these
    bits should be preserved when writing the registers via
    a read/modify/write cycle. There are 3 bits preserved
    in this manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9],
    and PM1_STATUS[11].
    http://bugzilla.kernel.org/show_bug.cgi?id=3691

    Implemented the initial deployment of new OSL mutex
    interfaces. Since some host operating systems have
    separate mutex and semaphore objects, this feature was
    requested. The base code now uses mutexes (and the new
    mutex interfaces) wherever a binary semaphore was used
    previously. However, for the current release, the mutex
    interfaces are defined as macros to map them to the
    existing semaphore interfaces.

    Fixed several problems with the support for the control
    method SyncLevel parameter. The SyncLevel now works
    according to the ACPI specification and in concert with the
    Mutex SyncLevel parameter, since the current SyncLevel is
    a property of the executing thread. Mutual exclusion for
    control methods is now implemented with a mutex instead
    of a semaphore.

    Fixed three instances of the use of the C shift operator
    in the bitfield support code (exfldio.c) to avoid the use
    of a shift value larger than the target data width. The
    behavior of C compilers is undefined in this case and can
    cause unpredictable results, and therefore the case must
    be detected and avoided. (Fiodor Suietov)

    Added an info message whenever an SSDT or OEM table
    is loaded dynamically via the Load() or LoadTable()
    ASL operators. This should improve debugging capability
    since it will show exactly what tables have been loaded
    (beyond the tables present in the RSDT/XSDT.)

    Signed-off-by: Bob Moore
    Signed-off-by: Len Brown

    Bob Moore
     

14 Jun, 2006

3 commits

  • Converted the locking mutex used for the ACPI hardware
    to a spinlock. This change should eliminate all problems
    caused by attempting to acquire a semaphore at interrupt
    level, and it means that all ACPICA external interfaces
    that directly access the ACPI hardware can be safely
    called from interrupt level.

    Fixed a regression introduced in 20060526 where the ACPI
    device initialization could be prematurely aborted with
    an AE_NOT_FOUND if a device did not have an optional
    _INI method.

    Fixed an IndexField issue where a write to the Data
    Register should be limited in size to the AccessSize
    (width) of the IndexField itself. (BZ 433, Fiodor Suietov)

    Fixed problem reports (Valery Podrezov) integrated: - Allow
    store of ThermalZone objects to Debug object.
    http://bugzilla.kernel.org/show_bug.cgi?id=5369
    http://bugzilla.kernel.org/show_bug.cgi?id=5370

    Fixed problem reports (Fiodor Suietov) integrated: -
    acpi_get_table_header() doesn't handle multiple instances
    correctly (BZ 364)

    Removed four global mutexes that were obsolete and were
    no longer being used.

    Signed-off-by: Bob Moore
    Signed-off-by: Len Brown

    Bob Moore
     
  • Restructured, flattened, and simplified the internal
    interfaces for namespace object evaluation - resulting
    in smaller code, less CPU stack use, and fewer
    interfaces. (With assistance from Mikhail Kouzmich)

    Fixed a problem with the CopyObject operator where the
    first parameter was not typed correctly for the parser,
    interpreter, compiler, and disassembler. Caused various
    errors and unexpected behavior.

    Fixed a problem where a ShiftLeft or ShiftRight of
    more than 64 bits produced incorrect results with some
    C compilers. Since the behavior of C compilers when
    the shift value is larger than the datatype width is
    apparently not well defined, the interpreter now detects
    this condition and simply returns zero as expected in all
    such cases. (BZ 395)

    Fixed problem reports (Valery Podrezov) integrated: -
    Update String-to-Integer conversion to match ACPI 3.0A spec
    http://bugzilla.kernel.org/show_bug.cgi?id=5329
    Allow interpreter to handle nested method declarations
    http://bugzilla.kernel.org/show_bug.cgi?id=5361

    Fixed problem reports (Fiodor Suietov) integrated: -
    acpi_terminate() doesn't free debug memory allocation
    list objects (BZ 355) - After Core Subsystem
    shutdown, acpi_subsystem_status() returns AE_OK (BZ 356) -
    acpi_os_unmap_memory() for RSDP can be invoked inconsistently
    (BZ 357) - Resource Manager should return AE_TYPE for
    non-device objects (BZ 358) - Incomplete cleanup branch
    in AcpiNsEvaluateRelative (BZ 359) - Use acpi_os_free()
    instead of ACPI_FREE in acpi_rs_set_srs_method_data (BZ 360)
    - Incomplete cleanup branch in acpi_ps_parse_aml (BZ 361) -
    Incomplete cleanup branch in acpi_ds_delete_walk_state (BZ 362)
    - acpi_get_table_header returns AE_NO_ACPI_TABLES until DSDT
    is loaded (BZ 365) - Status of the Global Initialization
    Handler call not used (BZ 366) - Incorrect object parameter
    to Global Initialization Handler (BZ 367)

    Signed-off-by: Bob Moore
    Signed-off-by: Len Brown

    Bob Moore
     
  • Replaced the acpi_os_queue_for_execution() with a new
    interface named acpi_os_execute(). The major difference is
    that the new interface does not have a Priority parameter,
    this appeared to be useless and has been replaced by
    a Type parameter. The Type tells the OS what type of
    execution is being requested, such as global lock handler,
    notify handler, GPE handler, etc. This allows the host
    to queue and execute the request as appropriate for the
    request type, possibly using different work queues and
    different priorities for the various request types. This
    enables fixes for multithreading deadlock problems such as
    http://bugzilla.kernel.org/show_bug.cgi?id=5534
    (Alexey Starikovskiy and Bob Moore)

    Fixed a possible memory leak associated with the
    support for the so-called "implicit return" ACPI
    extension. Reported by FreeBSD (Fiodor Suietov)
    http://bugzilla.kernel.org/show_bug.cgi?id=6514

    Fixed a problem with the Load() operator where a table
    load from an operation region could overwrite an internal
    table buffer by up to 7 bytes and cause alignment faults
    on IPF systems. (With assistance from Luming Yu)

    Signed-off-by: Bob Moore
    Signed-off-by: Len Brown

    Bob Moore