1. 21 4月, 2014 1 次提交
    • L
      ACPICA: Tables: Clean up split INSTALLED/VALIDATED table state logics. · 7f9fc99c
      Lv Zheng 提交于
      This patch is mainly a naming cleanup to clarify hidden logics, no
      functional changes.
      
      acpi_initialize_tables() is used by Linux to install table addresses for
      early boot steps.  During this stage, table addresses are mapped by
      early_ioremap() mechanism which is different from the runtime IO mappings.
      Thus it is not safe for ACPICA to keep mapped pointers in struct acpi_table_desc
      structure during this stage.
      
      In order to support this in ACPICA, table states are divided into
      1. "INSTALLED" (where struct acpi_table_desc.Pointer is always NULL) and
      2. "VALIDATED" (where struct acpi_table_desc.Pointer is always not NULL).
      During acpi_initialize_tables(), table state are ensured to be "INSTALLED"
      but not "VALIDATED".  This logic is ensured by the original code in very
      ambigious way.  For example, currently acpi_tb_delete_table() is invoked in
      some place to perform an uninstallation while it is invoked in other place
      to perform an invalidation.  They happen to work just because no one enters
      the penalty where the 2 behaviours are not equivalent.
      
      The naming cleanups are made in this patch:
      A. For installation and validation:
         There is code setting struct acpi_table_desc.Pointer first and delete it
         immediately to keep the descriptor's state as "INSTALLED" during the
         installation.  This patch implements this in more direct way.  After
         applying it, struct acpi_table_desc.Pointer will never be set in
         acpi_tb_install_table() and acpi_tb_override_table() as they are the only
         functions invoked during acpi_initialize_tables(). This is achieved by:
      1. Rename acpi_tb_verify_table() to acpi_tb_validate_table() to clarify this
         change.
      2. Rename acpi_tb_table_override() to acpi_tb_override_table() to keep nameing
         consistencies as other APIs (verb. Table).
      3. Stops setting struct acpi_table_desc.Pointer in acpi_tb_install_table() and
         acpi_tb_table_override().
      4. Introduce acpi_tb_acquire_table() to acquire the table pointer that is not
         maintained in the struct acpi_table_desc of the global root table list and
         rewrite acpi_tb_validate_table() using this new function to reduce
         redundancies.
      5. Replace the table pointer using the overridden table pointer in
         acpi_tb_add_table(). As acpi_tb_add_table() is not invoked during early boot
         stage, tables returned from this functions should be "VALIDATED".  As
         acpi_tb_override_table() is modified by this patch to return a "INSTALLED"
         but not "VALIDATED" descriptor, to keep acpi_tb_add_table() unchanged,
         struct acpi_table_desc.Pointer is filled in acpi_tb_add_table().
      B. For invalidation and uninstallation:
         The original code invalidate table by invoking acpi_tb_delete_table() here
         and there, but actually this function should only be used to uninstall
         tables.  This can work just because its invocations are equivalent to
         invalidation in some cases.
         This patch splits acpi_tb_delete_table() into acpi_tb_invalidate_table() and
         acpi_tb_uninstall_table() and cleans up the hidden logic using the new
         APIs.  This is achieved by:
      1. Rename acpi_tb_delete_table() to acpi_tb_uninstall_table() as it is mainly
         called before resetting struct acpi_table_desc.Address.  Thus the table
         descriptor is in "not INSTALLED" state.  This patch enforces this by
         setting struct acpi_table_desc.Address to NULL in this function.
      2. Introduce acpi_tb_invalidate_table() to be the reversal of
         acpi_tb_validate_table() and invoke it in acpi_tb_uninstall_table().
      3. Introduce acpi_tb_release_table() to release the table pointer that is not
         maintained in acpi_gbl_root_table_list and rewrite acpi_tb_invalidate_table()
         using this new function to reduce redundancies.
      
      After cleaning up, the maintainability of the internal APIs are also
      improved:
      1. acpi_tb_acquire_table: Acquire struct acpi_table_header according to
                             ACPI_TABLE_ORIGIN_xxx flags.
      2. acpi_tb_release_table: Release struct acpi_table_header according to
                             ACPI_TABLE_ORIGIN_xxx flags.
      3. acpi_tb_install_table: Make struct acpi_table_desc.Address not NULL according to
                             ACPI_TABLE_ORIGIN_xxx flags.
      4. acpi_tb_uninstall_table: Make struct acpi_table_desc.Address NULL according to
                               ACPI_TABLE_ORIGIN_xxx flags.
      5. acpi_tb_validate_table: Make struct acpi_table_desc.Pointer not NULL according to
                              ACPI_TABLE_ORIGIN_xxx flags.
      6. acpi_tb_invalidate_table: Make struct acpi_table_desc.Pointer NULL according to
                                ACPI_TABLE_ORIGIN_xxx flags.
      7. acpi_tb_override_table: Replace struct acpi_table_desc.Address and
                              struct acpi_table_desc.Flags.  It only happens in
                              "INSTALLED" state.
      
      The patch has been unit tested in acpi_exec by:
      1. Initializing;
      2. Executing exc_tbl ASLTS tests;
      3. Executing "Load" command.
      So that all original acpi_tb_install_table() and acpi_tb_override_table()
      invocations are covered.
      
      Known Issues:
      1. Cleanup acpi_tb_add_table() to Kill Code Redundancies
         Current implementation in acpi_tb_add_table() is not very clean, further
         patch can rewrite acpi_tb_add_table() with ordered acpi_tb_install_table(),
         acpi_tb_override_table() and acpi_tb_validate_table(). It is not done in this
         patch so that it is easy for the reviewers to understand the changes in
         this patch.
      Signed-off-by: NLv Zheng <lv.zheng@intel.com>
      Signed-off-by: NBob Moore <robert.moore@intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      7f9fc99c
  2. 18 3月, 2014 1 次提交
  3. 27 2月, 2014 1 次提交
  4. 11 2月, 2014 1 次提交
  5. 08 8月, 2013 1 次提交
  6. 23 7月, 2013 1 次提交
  7. 25 1月, 2013 1 次提交
  8. 22 3月, 2012 1 次提交
  9. 17 1月, 2012 1 次提交
  10. 19 1月, 2011 1 次提交
  11. 20 4月, 2010 3 次提交
  12. 23 1月, 2010 1 次提交
  13. 28 3月, 2009 1 次提交
  14. 27 3月, 2009 1 次提交
  15. 09 1月, 2009 1 次提交
  16. 30 12月, 2008 1 次提交
  17. 17 7月, 2008 1 次提交
  18. 24 4月, 2008 1 次提交
  19. 03 2月, 2007 9 次提交
  20. 14 6月, 2006 1 次提交
    • B
      ACPI: ACPICA 20060331 · 793c2388
      Bob Moore 提交于
      Implemented header file support for the following
      additional ACPI tables: ASF!, BOOT, CPEP, DBGP, MCFG, SPCR,
      SPMI, TCPA, and WDRT. With this support, all current and
      known ACPI tables are now defined in the ACPICA headers and
      are available for use by device drivers and other software.
      
      Implemented support to allow tables that contain ACPI
      names with invalid characters to be loaded. Previously,
      this would cause the table load to fail, but since
      there are several known cases of such tables on
      existing machines, this change was made to enable
      ACPI support for them. Also, this matches the
      behavior of the Microsoft ACPI implementation.
      https://bugzilla.novell.com/show_bug.cgi?id=147621
      
      Fixed a couple regressions introduced during the memory
      optimization in the 20060317 release. The namespace
      node definition required additional reorganization and
      an internal datatype that had been changed to 8-bit was
      restored to 32-bit. (Valery Podrezov)
      
      Fixed a problem where a null pointer passed to
      acpi_ut_delete_generic_state() could be passed through
      to acpi_os_release_object which is unexpected. Such
      null pointers are now trapped and ignored, matching
      the behavior of the previous implementation before the
      deployment of acpi_os_release_object().  (Valery Podrezov,
      Fiodor Suietov)
      
      Fixed a memory mapping leak during the deletion of
      a SystemMemory operation region where a cached memory
      mapping was not deleted. This became a noticeable problem
      for operation regions that are defined within frequently
      used control methods. (Dana Meyers)
      
      Reorganized the ACPI table header files into two main
      files: one for the ACPI tables consumed by the ACPICA core,
      and another for the miscellaneous ACPI tables that are
      consumed by the drivers and other software. The various
      FADT definitions were merged into one common section and
      three different tables (ACPI 1.0, 1.0+, and 2.0)
      Signed-off-by: NBob Moore <robert.moore@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      793c2388
  21. 20 1月, 2006 1 次提交
    • B
      [ACPI] ACPICA 20060113 · 4a90c7e8
      Bob Moore 提交于
      Added 2006 copyright.
      
      At SuSE's suggestion, enabled all error messages
      without enabling function tracing, ie with CONFIG_ACPI_DEBUG=n
      
      Replaced all instances of the ACPI_DEBUG_PRINT macro invoked at
      the ACPI_DB_ERROR and ACPI_DB_WARN debug levels with
      the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
      respectively. This preserves all error and warning messages
      in the non-debug version of the ACPICA code (this has been
      referred to as the "debug lite" option.) Over 200 cases
      were converted to create a total of over 380 error/warning
      messages across the ACPICA code. This increases the code
      and data size of the default non-debug version by about 13K.
      Added ACPI_NO_ERROR_MESSAGES flag to enable deleting all messages.
      The size of the debug version remains about the same.
      Signed-off-by: NBob Moore <robert.moore@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      4a90c7e8
  22. 05 8月, 2005 1 次提交
  23. 30 7月, 2005 1 次提交
    • R
      [ACPI] ACPICA 20050729 from Bob Moore · 0c9938cc
      Robert Moore 提交于
      Implemented support to ignore an attempt to install/load
      a particular ACPI table more than once. Apparently there
      exists BIOS code that repeatedly attempts to load the same
      SSDT upon certain events. Thanks to Venkatesh Pallipadi.
      
      Restructured the main interface to the AML parser in
      order to correctly handle all exceptional conditions. This
      will prevent leakage of the OwnerId resource and should
      eliminate the AE_OWNER_ID_LIMIT exceptions seen on some
      machines. Thanks to Alexey Starikovskiy.
      
      Support for "module level code" has been disabled in this
      version due to a number of issues that have appeared
      on various machines. The support can be enabled by
      defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
      compilation. When the issues are fully resolved, the code
      will be enabled by default again.
      
      Modified the internal functions for debug print support
      to define the FunctionName parameter as a (const char *)
      for compatibility with compiler built-in macros such as
      __FUNCTION__, etc.
      
      Linted the entire ACPICA source tree for both 32-bit
      and 64-bit.
      Signed-off-by: NRobert Moore <robert.moore@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      0c9938cc
  24. 14 7月, 2005 1 次提交
    • R
      ACPICA 20050708 from Bob Moore <robert.moore@intel.com> · f9f4601f
      Robert Moore 提交于
      The use of the CPU stack in the debug version of the
      subsystem has been considerably reduced.  Previously, a
      debug structure was declared in every function that used
      the debug macros.  This structure has been removed in
      favor of declaring the individual elements as parameters
      to the debug functions.  This reduces the cumulative stack
      use during nested execution of ACPI function calls at the
      cost of a small increase in the code size of the debug
      version of the subsystem.  With assistance from Alexey
      Starikovskiy and Len Brown.
      
      Added the ACPI_GET_FUNCTION_NAME macro to enable the
      compiler-dependent headers to define a macro that will
      return the current function name at runtime (such as
      __FUNCTION__ or _func_, etc.) The function name is used
      by the debug trace output.  If ACPI_GET_FUNCTION_NAME
      is not defined in the compiler-dependent header, the
      function name is saved on the CPU stack (one pointer per
      function.) This mechanism is used because apparently there
      exists no standard ANSI-C defined macro that that returns
      the function name.
      
      Alexey Starikovskiy redesigned and reimplemented the
      "Owner ID" mechanism used to track namespace objects
      created/deleted by ACPI tables and control method
      execution.  A bitmap is now used to allocate and free the
      IDs, thus solving the wraparound problem present in the
      previous implementation.  The size of the namespace node
      descriptor was reduced by 2 bytes as a result.
      
      Removed the UINT32_BIT and UINT16_BIT types that were used
      for the bitfield flag definitions within the headers for
      the predefined ACPI tables.  These have been replaced by
      UINT8_BIT in order to increase the code portability of
      the subsystem.  If the use of UINT8 remains a problem,
      we may be forced to eliminate bitfields entirely because
      of a lack of portability.
      
      Alexey Starikovksiy enhanced the performance of
      acpi_ut_update_object_reference.  This is a frequently used
      function and this improvement increases the performance
      of the entire subsystem.
      
      Alexey Starikovskiy fixed several possible memory leaks
      and the inverse - premature object deletion.
      Signed-off-by: NLen Brown <len.brown@intel.com>
      f9f4601f
  25. 12 7月, 2005 1 次提交
    • R
      ACPICA 20050408 from Bob Moore · 44f6c012
      Robert Moore 提交于
      Fixed three cases in the interpreter where an "index"
      argument to an ASL function was still (internally) 32
      bits instead of the required 64 bits.  This was the Index
      argument to the Index, Mid, and Match operators.
      
      The "strupr" function is now permanently local
      (acpi_ut_strupr), since this is not a POSIX-defined
      function and not present in most kernel-level C
      libraries. References to the C library strupr function
      have been removed from the headers.
      
      Completed the deployment of static
      functions/prototypes. All prototypes with the static
      attribute have been moved from the headers to the owning
      C file.
      
      ACPICA 20050329 from Bob Moore
      
      An error is now generated if an attempt is made to create
      a Buffer Field of length zero (A CreateField with a length
      operand of zero.)
      
      The interpreter now issues a warning whenever executable
      code at the module level is detected during ACPI table
      load. This will give some idea of the prevalence of this
      type of code.
      
      Implemented support for references to named objects (other
      than control methods) within package objects.
      
      Enhanced package object output for the debug
      object. Package objects are now completely dumped, showing
      all elements.
      
      Enhanced miscellaneous object output for the debug
      object. Any object can now be written to the debug object
      (for example, a device object can be written, and the type
      of the object will be displayed.)
      
      The "static" qualifier has been added to all local
      functions across the core subsystem.
      
      The number of "long" lines (> 80 chars) within the source
      has been significantly reduced, by about 1/3.
      
      Cleaned up all header files to ensure that all CA/iASL
      functions are prototyped (even static functions) and the
      formatting is consistent.
      
      Two new header files have been added, acopcode.h and
      acnames.h.
      
      Removed several obsolete functions that were no longer
      used.
      Signed-off-by: NLen Brown <len.brown@intel.com>
      44f6c012
  26. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4